<!--{{{-->
<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]];}

.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:0; top:0;}

.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:0 3px 0 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:0; padding-bottom:0;}

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

.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>>
|''Type:''|file|
|''URL:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com/#TiddlerTweakerPlugin|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
Burnside's lemma, sometimes also called Burnside's counting theorem, the Cauchy-Frobenius lemma or the orbit-counting theorem, is a result in group theory which is often useful in taking account of symmetry when counting mathematical objects.

In the following, let G be a finite group that acts on a set X. For each g in G let X^g denote the set of elements in X that are fixed by g. Burnside's lemma asserts the following formula for the number of orbits, denoted |X/G|

<html>
<img width="182" height="51" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAAzBAMAAADIo+9cAAAAMFBMVEX///8MDAwEBASenp6KiopiYmK2trbm5uYiIiJ0dHQWFhZAQEAwMDDMzMxQUFAAAADuDR0zAAAAAXRSTlMAQObYZgAAA+hJREFUWAntlk+IE1ccx79uNplsksmq9+J6KD30X4QePFURvZVuEAVLsZ1TDwrd6UJBUGzoRVr/bA4i2j24oILoYeekpbEa6KVUgqEghbaw6UnasnVVbIXd7fT7e/PezCQZ3MSYS/EHM+/3vu/3+8xv3rw3PKAfs7x+ovuL/bnSX3wf0Ue+GR4bhRfsrk/xYk66puT/sE7G/StiG33/7+73S1JSSWJMi62TtF9VA/ZXK7GAdncx3t0VdtpkoxZvLd8zPmZWtbvDpVNshgN4e9aDym9Q+8Ov4/wT1iGdzI3avbzyougkb/qBVjNlOgWyi/MrGPO/yMzlq0G+4KwnQNalU6H/fROHT/XATvkeM8RKvISNzyrAMWSrOSdi41YT8rKjVeDHFkt/1AMb9x8xxZhi51dRdDHeHAlmIIBMeWl5Lmu3XpXoiV7YuYeuIeu6M8vYD4y4Z+Ps3NIZCTtE/IQ49V7Ytj8nsYGpujE/5vDtf78UZ4+ulCTkHDBVFsfphY3JfyU2sIA9+Z3qXYizsVlpx4A7Mjc0+cTIq+1xWdwky/uqIjUUsEfWs3Pa4l3lq1tm3qFoVaAfoseoPdU2vRIOB+wDskf/nGV9EfvuQp1iejvA1WjfuOJ1zYkftyUGi00tBy3vim3vD/doyLbK2X84nuUlg/bjHusudtT9KWZc5ouF7KNIEYdfeX3Ja5RvpsbWmG984jA6MKnbamFbWfdDdgvYQG0Pr0nGFJZ6rPuiBrERdhFYt15Lhn3IBT4sAXPUiy8B++ioMR2nmsWwE/6WsuVQE7bFZZY2e7UB62VCtvLHkH7ztabtSejW23/91Epgq4cdvH3T9aREZTXdSlNopmb4ZXc/1EVptokolozHtqtuEY6chPV1y7DHKrF4IxpJ5UeQnNGljWStUrDfoD9VMpgtrh4qszWiloL8CHLQ6NJGslYpTHv0RwzG5pdRlq6yWYN9TceqJon9uYwUDMYsQFut6UT2tyGxEnp0IlmrDWRkDyBj2Fc/EntrdpPai/mmjtNNV377cHuvgcJqoAQlFsKfgFl27fH99BpQPzmmBOyMKltuTj+YxNgGxivALz9cNXOSGPVsItl1Zi6Uh8LOzpE96QyFPSrf8o6Zb/rPzbjgf2sizX9wx1L+YO8Z2ZiDGNmpEzcXj8bZd2vXccDBdGkQMHOjjRrWPcYNYr/Ohw2I7mLzQPkxmTmP7/Oc2XKgrJO54AwKZn7HnMiB8nitdn0b8O6pQfHRz0f9luRAWSdzwUVqYlB2R74cKHdSK3CfVjrGBu3KgTK/nZT33zs96PLuroUHyne4vodg6kA5BK4g1YFyDfZ/FUJKrGwbolEAAAAASUVORK5CYII=" /></html>

source:http://en.wikipedia.org/wiki/Burnside%27s_lemma
The Towers of Hanoi is an ancient puzzle, consisting of a collection of rings of different sizes, and three posts mounted on a base. At the beginning all the rings are on the left-most post, and the goal is to move them all to the rightmost post, by moving one ring at a time from one post to another. But, at no time may a larger ring be placed on top of a smaller one!

Many people may already be familiar with this problem. The question now is what's the optimal solution if there are 4 posts instead?

Can you generalise to k posts?
Write an algorithm that, given a list of n numbers, returns the largest and smallest
numbers in the list. Estimate the running time of the algorithm. Can you design
an algorithm that performs only 3n/2 comparisons to find the smallest and largest
numbers in the list?

[[Solution|solution-cs10]]

Source: Introduction to bioinfo pg 54
You are given an 8 × 8 table of natural numbers. In any one step, you can either
double each of the numbers in any one row, or subtract 1 from each of the numbers
in any one column. Devise an algorithm that transforms the original table into a table
of all zeros. What is the running time of your algorithm?

Is there an optimal solution?

Source: Intro to bioinformatics Problem 2.19

[[Partial solution (probably non-optimal)|solution-cs11]]

A Stack overflow discussion (albeit closed)
http://stackoverflow.com/questions/28433541/transforming-matrix-to-matrix-of-zero-custom-transformation-rules
A spectator arranges a row of coins (consider the case of 4 coins) as heads or tails, in any combination she likes. Without looking at the coins, the magician gives a series of commands such as "flip i-th coin" and asks if the current set up has all heads. Come up with an algorithm for the magician. 

What is the minimum number of instructions for the magician to guarantee this?

In another set up, the 4 coins are arranged in a circular disk, before the magician gives the instruction, the spectator is allowed to rotate the disk by any integral amount so that the magician's instructions still make sense. Come up with an algorithm for the magician in this case.

source: http://www.americanscientist.org/issues/pub/recreational-computing/4
Let A be an array of n distinct numbers. If i < j and A[i]> A[j], then the pair (i,j) is called an inversion of A.
Give an algorithm that determines the number of inversions in any permutation on n elements in  Big theta (n lg n) worst-case time. (Hint: Modify merge sort.)

Source: Clrs pg 42
How can you swap two variables without using any extra variable?
Readers should attempt to write code.

!Warm up
Given two line segments, determine if they intersect each other.

!Question 
Given a convex polygon formed by n points, determine if a point is inside or outside the polygon

[CS3-soln]
!Intersecting line segments

The crux is to realise that the line segments intersect if and only if the end points of each line segment lies on opposite sides of the other line segment. The reason for this is to consider two infinite ray and consider how to form non-intersecting line segments.

When I first encountered this problem, I thought about signed areas using the shoelace method. If the points are arranged in a clockwise manner, applying the formula will give a signed area. If the two signed areas of triangles formed by using one line as the base and the end points as the third vertices are the same, then they are on the same side.

Another way to do this is to consider the dot product. Consider line AB (with vector AB = (u, v)). Then one of the normal is (v, -u). By considering the dot product of AC with n and AD with n, we can determine if C and D are on the same side of AB. 

Care has to be taken for 0 area, which indicate that the points are collinear. 

!Polygon question
The crux is to realise for a point to be inside a polygon, the number of intersections of the half ray from that point to infinity is odd if the point is inside and even if the point is outside. This is because each time the ray intersects an edge, it toggles between being inside and outside of the polygon.

We can take infinity to be max_x + 1, max_y + 1, then it is just applying the first part to find out how many times each edge intersects this line segment.

Care has to be taken for boundary points lying on the ray.

Given a 1 TB worth of 64 bits integers and 1 GB of RAM. Device an way to determine the median of the data. As can assume the numbers do not follow any pattern and repeats are allowed.
There are up to 12 rooms, each with some red and green locks (up to 10 of each kind). You can use red or white keys to open red locks and green or white keys to open green locks. Each key is consumed once you use it. Each room has keys inside. What is the maximum number of keys you can have?
You have T time available to play as many songs as you can. Each song has a duration and a tone. If the tones of two consecutive songs are `x, y` then you need to rest `abs(x-y)` time units before playing the second song. What is the maximum number of songs?
When does the following code differ?

double x = number;
int a1 = (int) (x+0.5);
int a2 = (int) Math.round(x);

[[solution|cs7-solution]]
Given an unsorted array of length n, what is the minimum number of pairwise comparisons you need to perform to find the

i) smallest item
ii) second smallest
iii) ith smallest?

answer to ii) is smaller than 2n-3

[[solution|cs8-solution]]
Consider a binary heap containing n numbers (the root stores the greatest number). You are given a positive integer k < n and a number x. You have to determine whether the kth largest element of the heap is greater than x or not. Your algorithm must take O(k) time. You may use O(k) extra storage



[[Solution||http://stackoverflow.com/questions/4922648/how-to-determine-if-the-kth-largest-element-of-the-heap-is-greater-than-x]]
Convert images to base64 for easy storage: http://www.askapache.com/online-tools/base64-image-converter/
Type math: http://www.codecogs.com/latex/eqneditor.php, http://math.typeit.org/
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{

  handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

  handler: function(event,src,title) {
    this.handler_mptw_orig_closeUnsaved(event,src,title);
    if (!story.isDirty(title) && !store.tiddlerExists(title) && !store.isShadowTiddler(title))
      story.closeTiddler(title,true);
    return false;
  }

});

//}}}
This is copied verbatim from somewhere. Thought it would be a nice collection

This file contains the problems, suggested for solving on the Russian
national mathematical competitions (final part).

I've posted this stuff in a number of articles in rec.puzzles. but
I have got many requests for the missing parts. So I have decided to
put this material here, having provided it with the answers on the 
common questions.

==================collected articles start======================

I'm going to send some problems from the book

Vasil'ev N.B, Egorov A.A. "The problems of the All-Soviet-Union
mathematical competitions",-Moscow.:Nauka. 1988 ISBN 5-02-013730-8.
(in Russian).

Those problems were submitted for the solving on the competition
between the pupils of 8, 9, or 10 forms for 4 hours. So they do not
contain something of the advanced topics, -- all of them can be solved
by a schoolboy. They can not go out of the common school plan bounds.

Most of the problems are original and the book contains all the
necessary references. I am not going to translate all the book, so I
shall not send the solutions. Please, accept those messages as they
are, to say more exactly -- as I can. I have to do my job, and this is
hobby only, but nevertheless, that should be enjoyable to solve those
problems.
     "Nobody can embrace the unembraceable."
                                Kozma Prutkov.
                        (beginning of the XIX c.)

May be those postings are just a harassment, but I hope, that most
of You will not only enjoy the problems solving, but will be able
to use them in Your work with the students.
     "Zeal overcomes everything."
     "Sometimes zeal overcomes even the common sense."
                                Kozma Prutkov.

There are some wonderful books in Russian, that have not been
translated into English yet, for example,

"Problems of the Moscow mathematical competitions",-compiled
by G.A.Galperin, A.K.Tolpygo.,-Moscow, Prosveshchenie, 1986.

A.A.Leman "Collection of Moscow mathematical competitions problems",
-Moscow, Prosveshchenie, 1965.

==============answers on the common questions============

WHAT IS THE AGE OF THE PARTICIPANTS?

The Russian pupils start studying being 6-7 years old, so the
pupils of the 8th form are about 14.

WHO PARTICIPATE?

The competition is held in 3 - 4 stages
1. At school - if there are many volunteers.
2. Subregional - if the region is big enough.
3. Regional (in some regions, as in Moscow, Leningrad=Sankt-Petersburg,
   Sverdlovsk=Yekaterinburg or Novosibirsk they are even more
   interesting  and more difficult)
4. Final part, considered in the report.

WHAT ARE THE BEST AND AVERAGE RESULTS?

The winners (2-5) usually give the perfect solution of all the problems
with some shortages.

My personal experience refers to that times, when there were two days
of the final competition. Than the winners solved all the problems of
two days except one problem.

It is very difficult to speak about the average level, because it
depends very much on a region, but most of the participants of that
time solved at least one problem.  The problem is not only the
difficulties in the problems themselves, but also in the shortage of
time.  They successfully solved the problems before the official
explanation two days later.

MAY I USE THOSE PROBLEMS IN THE SCHOOL PROJECTS?

You don't need MY permission for using those problems.  As concerns the
copyright, the usage of all the information in the non-commercial
purposes was never restricted in Russia if it is not related to the
state security. Moreover, the spirit of the competition encourages
everybody to distribute those problems in order to enhance the
mathematical culture of the pupils.

And You only are able to decide whether Your students can solve them.

ARE THERE THE TRANSLATED SOLUTIONS OF THOSE PROBLEMS ELSEWHERE?

Sorry, there exists no complete translation of the cited book.
Besides, the solutions (in comparison with the problems themselves)
belong to the authors, and the translation without their explicit
permission would be their copyright violation.

============collected articles continue==================


So... First one -- Moscow, 1961.

        form
           8  001   002   003   004   005a
           9  006a  007   008   009   010
          10  011   012   007   006b  005b

001.
+-------------+--------------+ Given a figure, containing 16 segments.
|             |              | You should prove that there is no curve,
|             |              | that intersect each segment exactly once.
+-------+-----+----+---------+ The curve may be not closed, may
|       |          |         | intersect itself, but it is not
|       |          |         | allowed to touch the segments or
+----------------------------+ to pass through the vertices.

002.
Given a rectangle A_1A_2A_3A_4.  Four circles with A_i as a centres
have their radiuses r_1,r_2,r_3,r_4, and r_1 + r_3  =  r_2 + r_4  <  d,
where d is a diagonal of the rectangle.  Two pairs of the outer common
tangents to {the first and the third} and {the second and the fourth}
circumferences make a quadrangle.
Prove that You can inscribe a circle into that quadrangle.

003.
Prove that among 39 sequential natural numbers there always is a
number with the sum of its digits divisible by 11.

004.
Given a table 4x4.
a) Find, how 7 stars can be put in its fields in such a way, that
erasing of two arbitrary lines and two columns will always leave at
list one of the stars.
b)Prove that if there are less than 7 stars, You can always find two
columns and two rows, that if You erase them, no star will remain in
the table.

005.
a)
Given a quartet of positive numbers. (a,b,c,d). It is transformed to
the new one according to the rule:  a'=ab; b' =bc; c'=cd; d' =da.
The second one is transformed to the third according to the same rule
and so on.
Prove that if at least one initial number does not
equal 1, than You can never obtain the initial set.
b)
Given a set of 2^k (k-th power of two) numbers, equal either to 1 or
to -1. It is transformed as that was in the a) problem (each one is
multiplied by the next, and the last -- by the first.
Prove that You will always finally obtain the set of positive units.

006.
a)
Points A and B move uniformly and with equal angle speed along the
circumferences with O_a and O_b centres (both clockwise).
Prove that a vertex C of the equilateral triangle ABC also moves
along a certain circumference uniformly.
b)
The distance from the point P to the vertices of the equilateral
triangle ABC  equal |AP|=2, |BP|=3.  Find the maximal value of CP.

007.
Given some mxn table, and some numbers in its fields.  You are allowed
to change the sign in one row or one column simultaneously.
Prove that You can obtain a table, with nonnegative sums over each row
and over each column.

008.
Given n points, some of them connected by non-intersecting segments.
You can reach every point from every one, moving through(?) the
segments, and there is no couple, connected by two different ways.
Prove that the total number of the segments is (n-1).

009.
Given a,b,p -arbitrary integers.
Prove that there always exist relatively prime (i.e. that have no
common divisor) k and l, that (ak + bl) is divisible by p.

010.
Nicholas and Peter are dividing (2n+1) nuts.  Each wants to get more.
Three ways for that were suggested. (Each consist of three stages.)
First two stages are common.
---------
     1 stage: Peter divides nuts onto 2 heaps,
              each contain not less than 2 nuts.
---------
     2 stage: Nicholas divides both heaps onto 2 heaps,
              each contain not less than 1 nut.
---------
        3 stage:
----------------
          1 way: Nicholas takes the biggest and the least heaps.
----------------
          2 way: Nicholas takes two middle size heaps.
----------------
          3 way: Nicholas takes either the biggest and the least heaps
                 or two middle size heaps, but gives one nut to the
                 Peter for the right of choice.
----------------
Find the most and the least profitable method for the Nicholas.

011.
Prove that for three arbitrary infinite sequences, of natural numbers
        a_1, a_2, ... , a_n, ...
        b_1, b_2, ... , b_n, ...
        c_1, c_2, ... , c_n, ...
there exist numbers p and q such, that
a_p >= a_q; b_p >= b_q and c_p >= c_q.

012.
Given 120 unit squares arbitrarily situated in the 20x25 rectangle.
Prove that You can place a circle with the unit
diameter without intersecting any of the squares.


The second competition -- Moscow, 1962.

        form
           8  013   014   015   016   017
           9  018   019   020   021   017
          10  022   023   024   025   026

013.
Given points A',B',C',D', on the continuation of the [AB],[BC],[CD],[DA]
sides of the convex quadrangle ABCD, such, that the following pairs of
vectors are equal:  [BB'[=[AB[, [CC['=[BC[, [DD'=CD[, [AA'[=[DA[.
Prove that the quadrangle A'B'C'D' area is five times more than the
quadrangle ABCD area.

014.
Given the circumference s and the straight line l, passing through the
centre O of s. Another circumference s' passes through the point O and
has its centre on the l.  Describe the set of the points M, where the
common tangent of s and s' touches s'.

015.
Given positive numbers a_1, a_2, ..., a_99, a_100. It is known, that
a_1 > a_0;  a_2 = 3a_1 - 2a_0,
a_3 = 3a_2 - 2a_1,  ..., a_100 = 3a_99 - 2a _98.
Prove that a_100 > 2^99.

016.
Prove that there are no integers a,b,c,d such that the polynomial
ax^3 + bx^2 + cx + d equals 1 at x=19, and equals 2 at x=62.

017.
Given a nxn table, where n is odd. There is either 1 or -1 in its every
field. A product of the numbers in the column is written under every
column.  A product of the numbers in the row is written to the right of
every row.
Prove that the sum of 2n products doesn't equal to 0.

018.
Given two sides of the triangle.
Build that triangle, if medians to those sides are orthogonal.

019.
Given a quartet of positive numbers a,b,c,d, and is known, that abcd=1.
Prove that a^2 + b^2 + c^2 + d^2 + ab + ac + ad + bc + bd + dc >= 10

020.
Given right pentagon ABCDE.  M is an arbitrary point inside ABCDE or on
its side. Let the distances |MA|, |MB|, ... , |ME| be renumerated and
denoted with r_1 <= r_2 <= r_3 <= r_4 <= r_5.
Find all the positions of the M, giving r_3 the minimal possible value.
Find all the positions of the M, giving r_3 the maximal possible value.

021.
Given 1962 -digit number. It is divisible by 9. Let x be the sum of its
digits. Let the sum of the digits of x be y. Let the sum of the digits
of y be z.  Find z.

022.
The M point is a middle of a isosceles triangle base [AC]. [MH] is
orthogonal to [BC] side. Point P is the middle of the segment [MH].
Prove that [AH] is orthogonal to [BP].

023.
What maximal area can have a triangle if its sides a,b,c satisfy
inequality  0 <= a <= 1 <= b <= 2 <= c <= 3?

024.
Given x,y,z, three different integers.
Prove that ( (x-y)^5 + (y-z)^5 + (z-x)^5 ) is
divisible by 5(x-y)(y-z)(z-x).

025.
Given a_0, a_1, ... , a_n. It is known that a_0 = a_n = 0;
a_{k-1} - 2a_k + a_{k+1} >=0 at all k = 1, 2, ... , k-1.
Prove that all the numbers are nonnegative.

026.
Given positive numbers  a_1, a_2, ..., a_m;  b_1, b_2, ..., b_n;
and is known that  a_1 + a_2 + ... + a_m = b_1 + b_2 + ... + b_n.
Prove that You can fill an empty table with m rows and n columns with
no more than (m+n-1) positive number in such a way, that for all i,j
the sum of the numbers in the i-th row will equal to a_i, and the sum
of the numbers in the j-th column  --- to b_j.


The third competition -- Moscow, 1963.

        form
           8  027   028   029a  030   031a
           9  032   033   034   031b  028
          10  035   036   037   029b  028
          11  038   028   039   040   029b

027.
Given 5 circumferences, every four of them have a common point.
Prove that there exist a point that belongs to all five circumferences.

028.
Eight men had participated in the chess tournament. (Each meets each;
draws are allowed, giving 1/2 of pont; winner gets 1.) Everyone has
different number of points. The second one has got as many points as
the the four weakest together.
What was the result of the play between the third prizer and
the chess-player that have occupied the seventh place?

029.
a) Each diagonal of the quadrangle halves its area.
   Prove that it is a parallelogram.
b) Three main diagonals of the hexagon halve its area.
   Prove that they intersect in one point.

030.
Natural numbers a and b are relatively prime.  Prove that the greatest
common divisor of (a+b) and (a^2+b^2) is either 1 or 2.

031.
Given two fixed points A and B .The point M runs along the
circumference containing A and B. K is the middle of the segment [MB].
[KP] is a perpendicular to the line (MA).
a) Prove that all the possible lines (KP) pass through one point.
b) Find the set of all the possible points P.

032.
Given equilateral triangle with the side l.
What is the minimal length d of a brush (segment), that will paint all
the triangle, if its ends are moving along the sides of the triangle.

033.
A chess-board 6x6 is tiled with the 2x1 dominos.
Prove that You can cut the board onto two parts by
a straight line that does not cut dominos.

034.
Given n different positive numbers a_1, a_2, ... , a_n.
We construct all the possible sums (from 1 to n terms).
Prove that among those sums there are at least n(n+1)/2 different ones.

035.
Given a triangle ABC. We build two angle bisectors in the corners A and
B. Than we build two lines parallel to those ones through the point C.
D and E are intersections of those lines with the bisectors. It happens,
that (DE) line is parallel to (AB).
Prove that the triangle is isosceles.

036.
Given the endless arithmetic progression with the positive integer
members. One of those is an exact square.  Prove that the progression
contain the infinite number of the exact squares.

037.
Given right 45-angle. Can You mark its corners with the digits
{0,1,...,9} in such a way, that for every pair of digits there would be
a side with both ends marked with those digits?

038.
Find such real p,q,a,b, that for all x an equality is held:
(2x-1)^20 - (ax+b)^20 = (x^2+px+q)^10.

039.
On the ends of the diameter two "1"s are written.  Each of the
semicircles is divided onto two parts and the sum of the numbers of its
ends (i.e. "2") is written at the middle point. Then every of the four
arcs is halved and in its middle the sum of the numbers on its ends is
written.
Find the total sum of the numbers on the circumference after n steps.

040.
Given an isosceles triangle. Find the set of the points inside the
triangle such, that the distance from that point to the base equals to
the geometric mean of the distances to the sides.


The 4-th competition -- Moscow, 1964.

  form
    8  041   042   043   044   045a
    9  041   046   047   048   049
   10  050   051   045ab 052   053
   11  054   055   052   053   054

041.
The two heights in the triangle are not less than the respective sides.
Find the angles.

042.
Prove that for no natural m a number m(m + 1) is a power of an integer.

043.
Given 1000000000 first natural numbers. We change each number with the
sum of its digits an repeat this procedure until there will remain
1000000000 one digit numbers. Is there more 1-s or 2-s?

044.
Given an arbitrary set of 2k+1 integers a_1, a_2, ... , a_{2k+1}.
We make a new set:
a_1 + a_2  a_2 + a_3        a_{2k} + a_{2k+1}  a_{2k+1} + a_1
---------, ---------, ... , -----------------, --------------,
    2          2                   2                  2
and a new one, according to the same rule, and so on...
Prove that if we obtain integers only, the initial set consisted of
equal integers only.

045.
a) Given a convex hexagon ABCDEF with all the equal angles.
   Prove that |AB|-|DE| = |EF|-|BC| = |CD|-|FA|.
b) The opposite problem: Prove that it is possible to build a convex
   hexagon with equal angles of six segments a_1, a_2, ... , a_6, whose
   lengths satisfy the condition a_1 - a_4 = a_5 - a_2 = a_3 - a_6.

046.
Find integer solutions (x,y) of the equation (1964 times "sqrt"):
sqrt(x + sqrt(x + sqrt( ....(x + sqrt(x))....))) = y.

047.
Four perpendiculars are drawn from the vertices of a convex quadrangle
to its diagonals.
Prove that their bases make a quadrangle similar to the given one.

048.
Find all the natural n such that n! is not divisible by n^2.

049.
A honeybug crawls along the honeycombs with the unite length of their
hexagons. He has moved from the node A to the node B along the shortest
possible trajectory.
Prove that the half of his way he moved in one direction.

050.
The quadrangle ABCD is outscribed around the circle with the
centre O. Prove that the sum of AOB and COD angles equals 180 degrees.

051.
Given natural a,b,n. It is known, that for every natural k (k<>b) the
number (a - k^n) is divisible by (b-k).  Prove that a = b^n.

052.
Given an expression x_1 : x_2 : ... : x_n (: means division).
We can put the braces as we want. How many expressions can we obtain?

053.
We have to divide a cube onto k non-overlapping tetrahedrons.
For what smallest k is it possible?

054.
Find the smallest exact square with last digit not 0, such that after
deleting its last two digits we shall obtain another exact square.

055.
Let ABCD be an outscribed trapezoid; E is a point of its diagonals
intersection; r_1, r_2, r_3, r_4 -- the radiuses of the circles
inscribed in the triangles ABE, BCE, CDE, DAE respectively.
            1     1     1     1
Prove that --- + --- = --- + ---.
           r_1   r_3   r_2   r_4


The fifth competition -- Moscow, 1965.

        form
           8  056a  057   058   059   060
           9  061   062   063   064   065
          10  056b  066   067a  068a  069
          11  063   067b  070   068b  071

056.
a) Each of the numbers x_1, x_2, ... ,x_n can be 1, 0, or -1.
   What is the minimal possible value of the sum of all products of
   couples of those numbers.

b) Each absolute value of the numbers x_1, x_2, ... ,x_n is less
   than 1.  What is the minimal possible value of the sum of all
   products of couples of those numbers.

057.
Given a board 3x3 and 9 cards with some numbers (known to the
players). Two players, in turn, put those cards on the board.
The first wins if the sum of the numbers in the first and the
third row is greater than in the first and the third column.
Prove that it doesn't matter what numbers are on the cards,
but if the first plays the best way, the second can not win.

058.
A circle is outscribed around the triangle ABC. Chords, from the middle
of the arc AC to the middles of the arcs AB and BC, intersect sides
[AB] and [BC] in the points D and E.  Prove that (DE) is parallel to
(AC) and passes through the centre of the inscribed circle.

059.
A bus ticket is considered to be lucky if the sum of the first three
digits equals to the sum of the last three (6 digits in Russian buses).
Prove that the sum of all the lucky numbers is divisible by 13.

060.
There is a lighthouse on a small island. Its lamp enlights a segment of
a sea to the distance a. The light is turning uniformly, and the end of
the segment moves with the speed v.
Prove that a ship, whose speed doesn't exceed v/8 cannot arrive to the
island without being enlightened.

061.
A society created in the help to the police contains 100 man exactly.
Every evening 3 men are on duty.  Prove that You can not organise
duties in such a way, that every couple will meet on duty once exactly.

062.
What is the maximal possible length of the segment, being cut out by
the sides of the triangle on the tangent to the inscribed circle, being
drawn parallel to the base, if the triangle's perimeter equals 2p?

063.
Given n^2 numbers x_{i,j} (i,j = 1,2,...,n) satisfying the system of
n^3 equations:   x_{i,j} + x_{j,k} + x{k,i} = 0 (i,j,k = 1,...,n).
Prove that there exist such a numbers a_1, a_2, ... , a_n;
that for all i,j = 1,...n     x{i,j}= a_i - a_j.

064.
Is it possible to pose 1965 points inside the unit square to make every
rectangle with the square 0.005 and sides parallel to the side of the
square to contain at least one of those points?

065.
Quasi-rounding is a substitution one of the two closest integers
instead of the given number.
Given n numbers.  Prove that You can quasi-round them in such a way,
that a sum of every subset of quasi-rounded numbers will deviate from
the sum of the same subset of initial numbers not greater than (n+1)/4.

066.
The tourist has come to the Moscow by train.  All-day-long he wandered
randomly through the streets.  Than he had a supper in the cafe on the
square and decided to return to the station only through the streets
that he has passed an odd number of times.
Prove that he is always able to do that.

067.
a) A certain committee has gathered 40 times.  There were 10 members on
   every meeting.  Not a single couple has met on the meetings twice.
   Prove that there were no less then 60 members in the committee.
b) Prove that You can not construct more then 30 subcommittees
   of 5 members from the committee of 25 members, with no
   couple of subcommittees having more than one common member.

068.
Given two relatively prime numbers p>0 and q>0.
An integer n is called "good" if we can represent it as n = px + qy
with nonnegative integers x and y, and "bad" in the opposite case.
a) Prove that there exist integer c such that in a pair
   {n, c-n} always one is "good" and one is "bad".
b) How many there exist "bad" numbers.?

069.
An airplane-spy flies on the circumference with the centre A and radius
10 km. Its speed is 1000 km/h. At the certain moment a rocket with the
same speed starts from the point A and moves remaining on one line with
the plain and A.  What time is necessary for it to hit the plane?
/* remember, no advanced math. were known to the participants -VAP */

070.
Prove that the sum of the lengths of the polyhedron edges
exceeds its tripled diameter (distance between two farest vertices).

071.
On the surface of the planet lives one inhabitant, that can move with
the speed not greater than u.  A spaceship approaches to the planet wit
its speed v.  Prove that if v/u > 10 , the spaceship can find the
inhabitant, even it is trying to hide.


The sixth competition -- Voronezh, 1966.

        form
           8  072   073a  074   075a  076
           9  077   073b  075b  078   079
        10,11 075b  080   081   082   083

072.
There is exactly one astronomer on every planet of a certain system. He
watches the closest planet. The number of the planets is odd and all of
the distances are different.
Prove that there one planet being not watched.

073.
a) Points B and C are inside the segment [AD]. |AB|=|CD|.
   Prove that for all of the points P on the plane holds
   inequality |PA|+|PD| > |PB|+|PC|.

b) Given four points A,B,C,D on the plane. For all of the points P
   on the plane holds inequality |PA|+|PD| > |PB|+|PC|.
   Prove that points B and C are inside the segment [AD] and |AB|=|CD|.

074.
Can both (x^2+y) and (y^2+x) be exact squares for natural x and y?

075.
a) Pupils of the 8-th form are standing in a row.  There is the pupil
   of the 7-th form in before each, and he is smaller (in height) than
   the elder.  Prove that if You will sort the pupils in each of rows
   with respect to their height, every 8-former will still be taller
   than the 7-former standing before him.
b) An infantry detachment soldiers stand in the rectangle, being
   arranged in columns with respect to their height.  Prove that if You
   rearrange them with respect to their height in every separate row,
   they will still be staying with respect to their height in columns.

076.
A rectangle ABCD is drawn on the cross-lined paper with its sides
laying on the lines, and |AD| is k times more than |AB| (k is an
integer). All the shortest paths from A to C coming along the lines are
considered.  Prove that the number of those with the first link on [AD]
is k times more then of those with the first link on [AB].

077.
Given the numbers a_1, a_2, ... , a_n, such that
0 <= a_1 <= a_2 <= 2a_1,    a_2 <= a_3 <= 2a_2, ... ,
a_{n-1} <= a_n <= 2a_{n-1},
Prove that in the sum s = +-a_1 +-a_2 +- ... +- a_n
You can choose appropriate signs to make 0 <= s <= a_1.

078.
Prove that You can always pose a circle of radius S/P
inside a convex polygon with the perimeter P and area S.

079.
For three arbitrary crossroads A,B,C in a certain city there exist a
way from A to B not coming through C.  Prove that for every couple of
the crossroads there exist at least two non-intersecting ways
connecting them.  (there are at least two crossroads in the city)

080.
Given a triangle ABC. Consider all the tetrahedrons PABC
with PH -- the smallest of all tetrahedron's heights.
Describe the set of all possible points H.

081.
Given 100 points on the plain.  Prove that You can cover them with a
family of circles with the sum of their diameters less than 100 and the
distance between any two of the circles more than one.

082.
The distance from A to B is d kilometres. A plain flying with the
constant speed in the constant direction along and over the line (AB)
is being watched from those points.  Observers have reported that the
angle to the plain from the point A has changed by \alpha degrees and
from B --- by \beta degrees within one second.
What can be the minimal speed of the plain?

083.
20 Numbers are written on the board: 1, 2, ... ,20.  Two players are
putting signs before the numbers in turn (+ or -). The first wants to
obtain the minimal possible absolute value of the sum.
What is the maximal value of the absolute value of the sum that can be
achieved by the second player?


     "Where is the beginning of that end,
                that ends the beginning?"
                                Kozma Prutkov.

        "If You see a title 'buffalo'
                on the elephant's cage
             -- don't believe to Your eyes!"
                                Kozma Prutkov.

The name has been changed -- the numeration was restarted.

The first competition -- Tbilisi, 1967.

        form
           8  084a  085a  086a  087   088
           9  087b  086a  085b  084b  088
          10  090   086b  091   092   093

084.
a) The maximal height |AH| of the acute-angled triangle ABC equals the
   median |BM|.  Prove that the angle ABC isn't greater than 60 degrees.
b) The height |AH| of the acute-angled triangle ABC equals the median
   |BM| and bisectrix |CD|.  Prove that the angle ABC is equilateral.
085.
a) The digits of a natural number were rearranged.  Prove that the sum
   of given and obtained numbers can't equal 999...9 (1967 of nines).
b) The digits of a natural number were rearranged.  Prove that if the
   sum of the given and obtained numbers equals {10}^{10}, than the
   given number was divisible by 10.

086.
a) A lamp of a lighthouse enlights an angle of 90 degrees.
   Prove that You can turn the lamps of four arbitrary
   posed lighthouses so, that all the plane will be enlightened.
b) There are eight lamps in eight points of the space.  Each can
   enlighten an octant (three-faced space angle with three mutually
   orthogonal edges).
  Prove that You can turn them so, that all the space will be enlightened.

087.
a) Can You pose the numbers 0,1,...,9 on the circumference in such a
   way, that the difference between every two neighbours would be
   either 3 or 4 or 5?
b) The same question, but about the numbers 0,1,...,13.

088.
Prove that there exists a number divisible by 5^{1000}
not containing a single zero in its decimal notation.

089.
Find all the integers x,y satisfying equation
x^2 + x = y^4 + y^3 + y^2 + y.

090.
In the sequence of the natural (i.e. positive integers) numbers every
member from the third equals the absolute value of the difference of
the two previous.  What is the maximal possible length of such a
sequence, if every member is less or equal to 1967?

091.
"KING-THE SUICIDER"
Given a chess-board 1000x1000, 499 white castles and a black king.
Prove that it does not matter neither the initial situation nor the way
white plays, but the king can always enter under the check in a finite
number of steps.

092.
Three vertices KLM of the rhombus (diamond) KLMN lays on
the sides [AB], [BC] and [CD] of the given unit square.
Find the area of the set of all the possible vertices N.

093.
Given natural number k with a property "if n is divisible by k, than
the number, obtained from n by reversing the order of its digits is
also divisible by k".  Prove that the k is a divisor of 99.


The second competition -- Leningrad, 1968.

  form        first day                    second day
    8  094   095   096   097   098  | 105a  106   107   108   109
    9  099   100   101   097   102  | 110   111   105a  108   109
   10  103   095   104   097   096  | 105b  112   113   114   109

094.
Given an octagon with the equal angles. The lengths of all the sides
are integers.  Prove that the opposite sides are equal in pairs.

095.
What is greater, {31}^{11} or {17}^{14}?
/* calculators were not available - VAP */

096.
The circumference with the radius 100cm is drawn on the cross-lined
paper with the side of the squares 1cm.  It neither comes through the
vertices of the squares, nor touches the lines.  How many squares can
it pass through?

097.
Some students on the faculty speak several languages and some - Russian
only. 50 of them know English, 50 -- French and 50 -- Spanish.  Prove
that it is possible to divide them onto 5 groups, not necessary equal,
to get 10 of them knowing English, 10 -- French and 10 -- Spanish in
each group.

098.
Prove the equality
    2         4         6               20
------- + ------- + ------- + ... + -------- =
x^2 - 1   x^2 - 4   x^2 - 9         x^2 - 100

            1             1                  1
= 11 ( ----------- + --------- + .... + ----------- ).
       (x-1)(x+10)   (x-2)(x+9)         (x-10)(x+1)

099.
The difference between the maximal and the minimal diagonals of the
right n-angle equals to its side ( n > 5 ).  Find n.

100.
The sequence a_1, a_2, a_3, ... , is built according to the rule
a_1 = 1, a_2 = a_1 + 1/a_1, ... , a_{n+1} = a_n + 1/a_n, ...
Prove that a_{100} > 14.

101.
Given two acute-angled triangles ABC and A'B'C' with the points O and
O' inside. Three pairs of the perpendiculars are drawn:
[OA_1] to the side [BC], [O'A'_1] to the side [B'C'],
[OB_1] to the side [AC], [O'B'_1] to the side [A'C'],
[OC_1] to the side [AB], [O'C'_1] to the side [A'B'];
it is known that
[OA_1] is parallel to the [O'A'],
[OB_1] is parallel to the [O'B'],
[OC_1] is parallel to the [O'C'] and
|OA_1|*|O'A'| = |OB_1|*|O'B'| = |OC_1|*|O'C'|.
Prove that
[O'A'_1] is parallel to the [OA],
[O'B'_1] is parallel to the [OB],
[O'C'_1] is parallel to the [OC] and
|O'A'_1|*|OA| = |O'B'_1|*|OB| = |O'C'_1|*|OC|.

102.
Prove that You can represent an arbitrary number not exceeding n!
(n-factorial; n!= 1*2*3*...*n) as a sum of k different numbers (k<=n)
that are divisors of n!.

103.
Given a triangle ABC, point D on [AB], E on [AC]; |AD| = |DE| = |AC| ,
|BD| = |AE| , DE is parallel to BC.  Prove that the length |BD| equals
to the side of a right decagon (ten-angle) inscribed in a circle with
the radius R=|AC|.

104.
Three spheres are built so that the edges [AB], [BC], [AD] of
the tetrahedron ABCD are their respective diameters.
Prove that the spheres cover all the tetrahedron.

105.
a)
+-----+-----+-----+-----+ The fields of the square table 4x4 are filled
|  +  |  -  |  +  |  +  | with the "+" or "-" signs. You are allowed to
+-----+-----+-----+-----+ change the signs simultaneously in the whole
|  +  |  +  |  +  |  +  | row, column, or diagonal to the opposite
+-----+-----+-----+-----+ sign.  That means, for example, that You can
|  +  |  +  |  +  |  +  | change the sign in the corner square, because
+-----+-----+-----+-----+ it makes a diagonal itself.  Prove that You
|  +  |  +  |  +  |  +  | will never manage to obtain a table
+-----+-----+-----+-----+ containing pluses only.
b)
The fields of the square table 8x8 are filled with the "+" or signs
except one non-corner field with "-". You are allowed to change the
signs simultaneously in the whole row, column, or diagonal to the
opposite sign. That means, for example, that You can change the sign in
the corner field, because it makes a diagonal itself.  Prove that You
will never manage to obtain a table containing pluses only.

106.
Medians divide the triangle onto 6 smaller ones. 4 of the
circles inscribed in those small ones are equal.
Prove that the triangle is equilateral.

107.
Prove that the equation  x^2 + x + 1 = py  has solution
(x,y) for the infinite number of simple p.

108.
Each of the 9 referees on the figure skating championship estimates the
program of 20 sportsmen by assigning him a place (from 1 to 20). The
winner is determined by adding those numbers. (The less is the sum -
the higher is the final place).
It was found, that for the each sportsman, the difference of the
places, received from the different referees was not greater than 3.
What can be the maximal sum for the winner?

109.
Two finite sequences a_1, a_2, ... , a_n; b_1, b_2, ... , b_n
are just rearranged sequence 1, 1/2, ... , 1/n.
a_1 + b_1 >= a_2 + b_2 >= ... >= a_n + b_n.
Prove that for every m ( 1 <= m <= n ) a_m + a_n >= 4/m.

110.
There is scales on the teacher's table. There is a set of weighs on the
scales, and there are some pupils' names (may be more than one) on the
every weigh.  A pupil entering the classroom moves all the weight with
his name to another side of the scales.  Prove that You can let in such
a subset of the pupils, that the scales will change its position.

111.
The city is a rectangle divided onto squares by m streets coming from
the West to the East and n streets coming from the North to the South.
There are militioners (policemen) on the streets but not on the
crossroads. They watch the certain automobile, moving along the closed
route, marking the time and the direction of its movement. Its trace is
not known in advance, but they know, that it will not pass over the
same segment of the way twice.
What is the minimal number of the militioners providing the unique
determination of the route according to their reports?

112.
The circle inscribed in the triangle ABC touches the side [AC] in the
point K.  Prove that the line connecting the middle of the [AC] side
with the centre of the circle halves the [BK] segment.

113.
The sequence a_1, a_2, ... , a_n satisfies the following conditions:
a_1 = 0,  |a_2| = |a_1 + 1|,  ... , |a_n| = |a_{n-1} + 1|.
            a_1 + a_2 + ... + a_n      1
Prove that --------------------- >= - -.
                      n                2

114.
Given a quadrangle ABCD. The lengths of all its sides and diagonals are
the rational numbers. Let O be the point of its diagonals intersection.
Prove that |AO| - the length of the [AO] segment is also rational.


The third competition -- Kiev, 1969.

  form       first day         second day
    8  115   116   117  | 122   123   124a
    9  118   119   115  | 124   125   126
   10  119   120   121  | 125   126   128

115.
The point E lies on the base [AD] of the trapezoid ABCD. The triangles
ABE, BCE and CDE perimeters are equal.  Prove that |BC| = |AD|/2.

116.
There is a wolf in the centre of a square field, and four dogs in the
corners. The wolf can easily kill one dog, but two dogs can kill the
wolf. The wolf can run all over the field, and the dogs -- along the
fence (border) only.  Prove that if the dog's speed is 1.5 times more
than the wolf's, than the dogs can prevent the wolf escaping.

117.
Given a finite sequence of 0's and 1's with two properties:
-- if you chose five sequential digits in one place and in
   the second place, those will be two different binary numbers.
   (Some last digits of the first number may be included as
   the first digits in the second.)
-- if You add 0 or 1 either from the left or from the right
   side, the previous property will not be held.
Prove that the first four digits of that sequence coincide with the
last four.

118.
Given positive numbers a,b,c,d.
Prove that the set of inequalities
a + b < c + d;
(a + b)(c + d) < ab + cd;
(a + b)cd < ab(c + d)
contain at least one wrong.

119.
For what minimal natural a the polynomial ax^2 + bx + c with the
integer c and b has two different positive roots both less than one.

120.
Given natural n. Consider all the fractions 1/(pq), where p and q are
relatively prime;   0 < p < q <= n;   p+q > n.
Prove that the sum of all such a fractions equals to 1/2.

121.
Given n points in the three dimensional space such, that the arbitrary
triangle with the vertices in three of those points contains an angle
greater than 120 degrees.
Prove that You can rearrange them to make a polyline (unclosed) with
all the angles between the sequent links greater than 120 degrees.

122.
Find four different three-digit decimal numbers starting with the same
digit, such that their sum is divisible by three of them.

123.
Every city in the certain state is connected by airlines with no more
than with three other ones, but one can get from every city to every
other city changing a plane once only or directly.
What is the maximal possible number of the cities?

124.
Given a pentagon with all equal sides.
a) Prove that there exist such a point on the maximal diagonal,
   that every side is seen from it inside a right angle.
   /* I mean that the side AB is seen from the point C inside an
   arbitrary angle that is greater or equal than angle ACB. - VAP */
b) Prove that the circles build on its sides as on the diameters cannot
   cover the pentagon entirely.

125.
Given an equation  x^3 + ?x^2 + ?x + ? = 0.  First player substitutes
an integer on the place of one of the interrogative marks, than the
same do the second with one of the two remained marks, and, finally,
the first puts the integer instead of the last mark.
Explain how can the first provide the existence of three integer roots
in the obtained equation. (The roots may coincide.)

126.
20 football teams participate in the championship.  What minimal number
of the games should be played to provide the property: from the three
arbitrary teams we can find at least on pair that have already met in
the championship.

127.
Let h_k be an apothem of the right k-angle inscribed into a circle with
radius R.  Prove that (n + 1)h_{n+1} - nh_n > R.

128.
Prove that for the arbitrary positive a_1, a_2, ... , a_n
the following inequality is held
   a_1         a_2              a_{n-1}      a_n      n
--------- + --------- + ... + --------- + --------- > -.
a_2 + a_3   a_3 + a_4         a_n + a_1   a_1 + a_2   4
..............


The 4-th competition -- Simferopol, 1970.

  form        first day                    second day
    8  129   130   131   132   133a
    9  134   135   133b  136   137
   10  138   139   133b  136   140  | 141   142   143

129.
Given a circle, its diameter [AB] and a point C on it.  Build (with the
help of compasses and ruler) two points X and Y, that are symmetric
with respect to (AB) line, such that (YC) is orthogonal to (XA).

130.
The product of three positive numbers equals to one, their
sum is strictly greater than the sum of the inverse numbers.
Prove that one and only one of them is greater than one.

131.
How many sides of the convex polygon can equal its longest diagonal?

132.
The digits of the 17-digit number are rearranged in the reverse order.
Prove that at list one digit of the sum of the new and the initial
number is even.

133.
a) A castle is equilateral triangle with the side of 100 metres.  It is
   divided onto 100 triangle rooms. Each wall between the rooms is 10
   metres long and contain one door. You are inside and are allowed to
   pass through every door not more than once.
Prove that You can visit not more than 91 room (not exiting the castle).
b) Every side of the triangle is divided onto k parts by the lines
   parallel to the sides. And the triangle is divided onto k^2
   small triangles. Let us call the "chain" such a sequence of
   triangles, that every triangle in it is included only once,
   and the consecutive triangles have the common side.
   What is the greatest possible number of the triangles in the chain?

134.
Given five segments. It is possible to build
a triangle of every subset of three of them.
Prove that at least one of those triangles is acute-angled.

135.
The bisector [AD], the median [BM] and the height [CH] of
the acute-angled triangle ABC intersect in one point.
Prove that the angle BAC is greater than 45 degrees.

136.
Given five n-digit binary numbers. For each two numbers
their digits coincide exactly on m places. There is no
place with the common digit for all the five numbers.
           2    m    3
Prove that - <= - <= -.
           5    n    5

137.
Prove that from every set of 200 integers You can choose a
subset of 100 with the total sum divisible by 100.

138.
Given triangle ABC, middle M of the side [BC], the centre O of the
inscribed circle. The line (MO) crosses the height AH in the point E.
Prove that the distance |AE| equals the inscribed circle radius.

139.
Prove that for every natural number k there exists an infinite set of
such natural numbers t, that the decimal notation of t does not contain
zeroes and the sums of the digits of the numbers t and kt are equal.

140.
Two equal rectangles are intersecting in 8 points. Prove that the
common part area is greater than the half of the rectangle's area.

141.
All the 5-digit numbers from 11111 to 99999 are written on
the cards. Those cards lies in a line in an arbitrary order.
Prove that the resulting 444445-digit number is not a power of two.

142.
All natural numbers containing not more than n digits are divided onto
two groups. The first contains the numbers with the even sum of the
digits, the second -- with the odd sum.  Prove that if  0 < k < n than
the sum of the k-th powers of the numbers in the first group equals to
the sum of the k-th powers of the numbers in the second group.

143.
The vertices of the right n-angle are marked with some colours
(each vertex -- with one colour) in such a way, that the vertices
of one colour represent the right polygon.
Prove that there are two equal ones among the smaller polygons.


The 5-th competition -- Riga, 1971.

  form        first day                    second day
    8  144   145a  146a  147        | 152ab 153   154
    9  144   145a  148   147   146b | 156abc152c  155
   10  149   145b  150   147   151b | 156   157   158

144.
Prove that for every natural n there exists a number, containing only
digits "1" and "2" in its decimal notation, that is divisible by 2^n
( n-th power of two ).

145.
a) Given a triangle A_1A_2A_3 and the points B_1 and D_2 on the side
   [A_1A_2], B_2 and D_3 on the side [A_2A_3], B_3 and D_1 on the side
   [A_3A_1].  If You build parallelograms A_1B_1C_1D_1, A_2B_2C_2D_2
   and A_3B_3C_3D_3, the lines (A_1C_1), (A_2C_2) and (A_3C_3), will
   cross in one point O.  Prove that if |A_1B_1| = |A_2D_2| and
   |A_2B_2| = |A_3D_3|, than |A_3B_3| = |A_1D_1|.
b) Given a convex polygon A_1A_2 ... A_n and the points
   B_1 and D_2 on the side [A_1A_2],
   B_2 and D_3 on the side [A_2A_3],
    ........
   B_n and D_1 on the side [A_nA_1].
   If You build parallelograms A_1B_1C_1D_1, A_2B_2C_2D_2 ... ,
   A_nB_nC_nD_n, the lines (A_1C_1), (A_2C_2), ..., (A_nC_n), will
   cross in one point O.  Prove that
   |A_1B_1|*|A_2B_2|*...*|A_nB_n| =  |A_1D_1|*|A_2D_2|*...*|A_nD_n|.

146.
a) A game for two. The first player writes two rows of ten numbers
   each, the second under the first. He should provide the following
   property: if number b is written under a, and d -- under c, then  a
   + d = b + c. The second player has to determine all the numbers. He
   is allowed to ask the questions like "What number is written in the
   x place in the y row?" What is the minimal number of the questions
   asked by the second player before he founds out all the numbers?
b) There was a table mxn on the blackboard with the property:  if You
   chose two rows and two columns, then the sum of the numbers in the
   two opposite vertices of the rectangles formed by those lines equals
   the sum of the numbers in two another vertices. Some of the numbers
   are cleaned.  but it is still possible to restore all the table.
   What is the minimal possible number of the remaining numbers?

147.
Given an unite square and some circles inside. Radius of each circle is
less than 0.001, and there is no couple of points belonging to the
different circles with the distance between them 0.001 exactly.
Prove that the area, covered by the circles is not greater than 0.34.

148.
The volumes of the water containing in each of three big enough
containers are integers. You are allowed only to relocate some times
from one container to another the same volume of the water, that the
destination already contains.
Prove that You are able to discharge one of the containers.

149.
Prove that if the numbers p_1, p_2, q_1, q_2 satisfy the condition
(q_1 - q_2)^2 + (p_1 - p_2)(p_1q_2 - p_2q_1) < 0, then the square
polynomials x^2 + p_1x + q_1 and x^2 + p_2x + q_2 have real roots, and
between the roots of each there is a root of another one.

150.
The projections of the body on two planes are circles.
Prove that they have the same radius.

151.
Some numbers are written along the ring. If inequality (a-d)(b-c) < 0
is held for the four arbitrary numbers in sequence a,b,c,d, You have to
change the numbers b and c places.
Prove that You will have to do this operation finite number of times.

152.
a) Prove that the line dividing the triangle onto two polygons with
   equal perimeters and equal areas passes through the centre of the
   inscribed circle.
b) Prove the same statement for the arbitrary polygon outscribed around
   the circle.
c) Prove that all the lines halving its perimeter and area
   simultaneously, intersect in one point.

153.
Given 25 different positive numbers.  Prove that You can choose two of
them such, that none of the other numbers equals neither to the sum nor
to the difference between the chosen numbers.

154.
a) The vertex A_1 of the right 12-angle (dodecagon) A_1A_2...A_{12} is
   marked with "-" and all the rest -- with "+". You are allowed to
   change the sign simultaneously in the 6 vertices in succession.
   Prove that is impossible to obtain dodecagon with A_2 marked with
   "-" and the rest of the vertices -- with "+".
b) Prove the same statement if it is allowed to change the signs not in
   six, but in four vertices in succession.
c) Prove the same statement if it is allowed to change the signs in
   three vertices in succession.

155.
N unit squares on the infinite sheet of cross-lined paper are painted
with black colour.  Prove that You can cut out the finite number of
square pieces and satisfy two conditions
 - all the black squares are contained in those pieces.
 - the area of black squares is not less than 1/5 and not greater than
   4/5 of every piece area.

-------------
The task for the tenth form was as follows:
"You are given three serious problems. Try to investigate at least one,
but to obtain as many results, as You can.  At the end of Your work
make a sort of resume, showing the main proved facts, challenged
examples and the hypotheses that seem to be true ..."

/* this form of competition was never repeated later - it had
 required too much efforts from those who checked the works */
-------------

156.
A cube with the edge of length n is divided onto n^3 unit ones. Let us
choose some of them and draw three lines parallel to the edges through
their centres.  What is the least possible number of the chosen small
cubes necessary to make those lines cross all the smaller cubes?
a) Find the answer for the small n (n = 2,3,4).
b) Try to find the answer for n = 10.
c) If You can not solve the general problem, try to estimate that value
   from the upper and lower side.
d) Note, that You can reformulate the problem in such a way:
   Consider all the triples (x_1,x_2,x_3), where x_i can be one of the
   integers 1,2,...,n. What is the minimal number of the triples
   necessary to provide the property:  for each of the triples there
   exist the chosen one, that differs only in one coordinate.  Try to
   find the answer for the situation with more than three coordinates,
   for example, with four.

157.
a) Consider the function f(x,y) = x^2 + xy + y^2.
   Prove that for the every point (x,y) there exist such
   integers (m,n), that f((x-m),(y-n)) <= 1/2.
b) Let us denote with g(x,y) the least possible value of the
   f((x-m),(y-n)) for all the integers m,n. The statement a)
   was equal to the fact g(x,y) <= 1/2. Prove that in fact,
   g(x,y) <= 1/3. Find all the points (x,y), where g(x,y)=1/3.
c) Consider function f_a(x,y) = x^2 + axy + y^2 (0 <= a <= 2).  Find
   any c such that g_a(x,y) <= c. Try to obtain the closest estimation.

158.
  1   2        1   2
  |   |        |   |     The switch with two inputs and two
  v   v        v   v     outputs can be in one of two
+-+---+-+    +-+---+-+   different positions. In the left
| |   | |    | |   | |   part of the picture a) the first input
|  \ /  |    | |   | |   is connected with the second output
|   X   |    | |   | |   and we can denote this as
|  / \  |    | |   | |   1 2
| |   | |    | |   | |   | |   and the position in the right
+-+---+-+    +-+---+-+   V V   part of the picture   1 2
  |   |        |   |     2 1   will be denoted as    | |
  V   V        V   V                                 V V
  1   2        1   2                                 1 2
     fig.a)

  1   2   3        The scheme on the picture b) is universal
  |   |   |        in that sense that changing the state of
  V   V   |        the element switches You can obtain all
+-+---+-+ |        the six connections, i.e.
|       | |
|       | |        1 2 3   1 2 3   1 2 3   1 2 3   1 2 3   1 2 3
+-+---+-+ |        | | |   | | |   | | |   | | |   | | |   | | |
  |   |   |        V V V   V V V   V V V   V V V   V V V   V V V
  |   V   V        1 2 3   1 3 2   2 1 3   2 3 1   3 1 2   3 2 1
  | +-+---+-+
  | |       |      (Check it. Note, that the total number of the
  | |       |      states is 2^3 = 8, because each element
  | +-+---+-+      can be in two positions.)
  |   |   |
  V   V   |
+-+---+-+ |
|       | |
|       | |
+-+---+-+ |
  |   |   |
  V   V   V
  1   2   3
     fig.b)

a) Try to build the universal scheme for 4 inputs and 4 outputs,
   that can provide all of 24 possible connections.
b) What is the minimal number of the element switches for such a
   scheme?
Let us call a scheme with n inputs and n outputs n-universal, if it can
provide all n! possible connections of n inputs with n outputs.
c) Here is the scheme (picture c) with 8 inputs and 8 outputs, where A
   and B are 4-universal.  Prove that it is 8-universal.

  1        2        3        4             5        6        7        8
  |        |        |        |             |        |        |        |
  V  V     V  V     V  V     V  V       V  V     V  V     V  V     V  V
+-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+   +-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+
|      | |      | |      | |      |   |      | |      | |      | |      |
|      | |      | |      | |      |   |      | |      | |      | |      |
+-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+   +-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+
  |    \   |    \   |    \   |    \   /    |   /    |   /    |   /    |
  |     \  |     \  |     \  |     \ /     |  /     |  /     |  /     |
  |      \ |      \ |      \ |      X      | /      | /      | /      |
 ......................................................................

  |/       |/       |/       |/           \|       \|       \|       \|
+-+--------+--------+--------+----+   +----+--------+--------+--------+-+
|                                 |   |                                 |
|              A                  |   |               B                 |
|                                 |   |                                 |
+-+--------+--------+--------+----+   +----+--------+--------+--------+-+
  |\       |\       |\       |\           /|       /|       /|       /|
 ......................................................................

  |    /   |    /   |    /   |    /   \    |   \    |   \    |   \    |
  |   /    |   /    |   /    |   /     \   |    \   |    \   |    \   |
  V  V     V  V     V  V     V  V       V  V     V  V     V  V     V  V
+-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+   +-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+
|      | |      | |      | |      |   |      | |      | |      | |      |
|      | |      | |      | |      |   |      | |      | |      | |      |
+-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+   +-+--+-+ +-+--+-+ +-+--+-+ +-+--+-+
  |        |        |        |             |        |        |        |
  V        V        V        V             V        V        V        V
  1        2        3        4             5        6        7        8

     fig.c)

d) Estimate the upper and lower bound for the number of the element
   switches in the n-universal scheme.


The 6-th competition -- Chelyabinsk, 1972.

  form        first day                    second day
    8  159   160   161        | 166   167   168
    9  162a  163   161   164  | 169   170   171
   10  162b  163   165   164  | 166   172   173

159.
Given a rectangle ABCD, points M -- the middle of [AD] side, N -- the
middle of [BC]  side. Let us take a point P on the continuation of the
[DC] segment over the point D. Let us denote the point of intersection
of lines (PM) and (AC) as Q.
Prove that the angles QNM and MNP are equal.

160.
Given 50 segments on the line. Prove that one of the following
statements is valid.
 1. Some 8 segments have the common point.
 2. Some 8 segments do not intersect each other.

161.
Find the maximal x such that the expression   4^{27} + 4^{1000} + 4^x
is the exact square.

162.
a) Let a,n,m be natural numbers, a > 1.  Prove that if (a^m + 1) is
   divisible by (a^n + 1) than m is divisible by n.
b) Let a,b,n,m be natural numbers, a > 1, a and b are relatively prime.
   Prove that if (a^m + b^m) is divisible by (a^n + b^n) than m is
   divisible by n.

163.
        2         The triangle table is built according to the rule:
       / \         You put the natural number a>1 in the upper row, and
     /     \         then You write under the number k from the left
    4       3          side k^2, and from the right side -- (k+1).  For
  /  \     /  \           example, if a = 2, You get the table on the
 16   5   9    4            picture.  Prove that all the numbers on
/ \  / \  /\  / \             each particular line are different.

164.
Given several squares with the total area 1.  Prove that You can pose
them in the square of the area 2 without any intersections.

165.
Let O be the intersection point of the of the convex quadrangle ABCD
diagonals.  Prove that the line drawn through the points of
intersection of the medians of AOB and COD triangles is orthogonal to
the line drawn through the points of intersection of the heights of BOC
and AOD triangles.

166.
Each of the 9 straight lines divides the given square onto two
quadrangles with the areas related as 2:3.  Prove that there exist
three of them intersecting in one point.

167.
The 7-angle A_1A_2A_3A_4A_5A_6A_7 is inscribed in a circle.
Prove that if the centre of the circle is inside the 7-angle, than the
sum of A_1,A_2 and A_3 angles is less than 450 degrees.

168.
A game for two. One gives a digit and the second substitutes
it instead of a star in the following difference:
    **** - **** =
Then the first gives the next digit, and so on 8 times.
The first wants to obtain the greatest possible difference,
the second -- the least.  Prove that:
 1. The first can operate in such a way that the difference would be
 not less than 4000, not depending on the second's behaviour.
 2. The second can operate in such a way that the difference would be
 not greater than 4000, not depending on the first's behaviour.

169.
Let x,y be positive numbers, s -- the least of { x, (y+ 1/x), 1/y}.
What is the greatest possible value of s? To what x and y does it
correspond?

170.
The point O inside the convex polygon makes isosceles triangle with all
the pairs of its vertices.
Prove that O is the centre of the outscribed circle.

171.
Is it possible to put the numbers 0,1 or 2 in the unit squares of the
cross-lined paper 100x100 in such a way, that every rectangle 3x4 (and
4x3) would contain three zeros, four ones and five twos?

172.
Let the sum of positive numbers x_1, x_2, ... , x_n be 1.
Let s be the greatest of the numbers
 x_1         x_2                      x_n
-------, -------------, ... , -------------------.
1 + x_1  1 + x_1 + x_2        1 + x_1 + ... + x_n
What is the minimal possible s? What x_i correspond it.
/* Derivatives were not included in the school plans in
   Russia. They expected another solution. -VAP */

173.
One-round hockey tournament is finished (each plays with each one time,
the winner gets 2 points, looser -- 0, and 1 point for draw). For
arbitrary subgroup of teams there exists a team (may be from that
subgroup) that has got an odd number of points in the games with the
teams of the subgroup.
Prove that there was even number of the participants.


The 7-th competition -- Kishenew, 1973.

  form        first day        second day
    8  174a  175   176  | 182   183   184ab
    9  174b  177   178  | 179   185   186   184c
   10  180   177   181  | 187   188   184c

174.
Fourteen coins are submitted to the judge. An expert knows, that the
coins from number one to seven are false, and from 8 to 14 -- normal.
The judge is sure only that all the true coins have the same weight and
all the false coins weights equal each other, but are less then the
weight of the true coins.  The expert has the scales without weights.
a) The expert wants to prove, that the coins 1--7 are false.
   How can he do it in three weighings?
b) How can he prove, that the coins 1--7 are false and the coins 8--14
   are true in three weighings?

175.
Prove that 9-digit number, that contains all the decimal digits except
zero and does not ends with 5 can not be exact square.

176.
Given n points, n > 4. Prove that You can connect them with arrows, in
such a way, that You can reach every point from every other point,
having passed through one or two arrows. (You can connect every pair
with one arrow only, and move along the arrow in one direction only.)

177.
Given an angle with the vertex O and a circle touching its sides in the
points A and B. A ray is drawn from the point A parallel to [OB). It
intersects with the circumference in the point C. The segment [OC]
intersects the circumference in the point E. The straight lines (AE)
and (OB) intersect in the point K.  Prove that |OK| = |KB|.

178.
The real numbers a,b,c satisfy the condition: for all x, such
that for -1 <= x <= 1, the inequality | ax^2 + bx + c | <= 1 is held.
Prove that for the same x is holds | cx^2 + bx + a | <= 2.

179.
The tennis federation has assigned numbers to 1024 sportsmen,
participating in the tournament, according to their skill.  (The tennis
federation uses the olympic system of tournaments.  The looser in the
pair leaves, the winner meets with the winner of another pair. Thus, in
the second tour remains 512 participants, in the third -- 256, et.c.
The winner is determined after the tenth tour.) It comes out, that in
the play between the sportsmen whose numbers differ more than on 2
always win that whose number is less.
What is the greatest possible number of the winner?

180.
The square polynomial f(x) = ax^2 + bx + c is of such a sort,
that the equation f(x) = x does not have real roots.
Prove that the equation f(f(x)) does not have real roots also.

181.
n squares of the infinite cross-lined sheet of paper are painted
with black colour (others are white). Every move all the squares
of the sheet change their colour simultaneously. The square gets
the colour, that had the majority of three ones: the square itself,
its neighbour from the right side and its neighbour from the upper side.
a) Prove that after the finite number of the moves all the black
   squares will disappear.
b) Prove that it will happen not later than on the n-th move.

182.
Three similar acute-angled triangles AC_1B, BA_1C and CB_1A are built
on the outer side of the acute-angled triangle ABC.  (Equal triples of
the angles are AB_1C, ABC_1, A_1BC and BA_1C, BAC_1, B_1AC.)
a) Prove that the circumferences outscribed around the outer
   triangles intersect in one point.
b) Prove that the straight lines AA_1, BB_1 and CC_1
   intersect in the same point.

183.
N men are not acquainted each other. You need to introduce some of them
to some of them in such a way, that all the men will have different
number of the acquaintances.  Prove that it is possible for all N.

184.
The king have revised the chess-board 8x8 having visited all the fields
once only and returned to the starting point.  When his trajectory was
drawn (the centres of the squares were connected with the straight
lines), a closed broken line without self-intersections appeared.
a) Give an example that the king could make 28 steps parallel
   the sides of the board only.
b) Prove that he could not make less than 28 such a steps.
c) What is the maximal and minimal length of the broken line
   if the side of a field is 1?

185.
Given a triangle with a,b,c sides and with the area 1.  a >= b >= c.
Prove that b^2 >= 2.

186.
Given a convex n-angle with pairwise (mutually) non-parallel sides
/* who knows Russian -- a letter "r" had broken on the
   organising committee's typewriter - and it became
   an inexhaustible source of jokes for some years */
and a point inside it.  Prove that there are not more than n straight
lines coming through that point and halving the area of the n-angle.

187.
Prove that for every positive x_1, x_2, x_3, x_4, x_5 holds inequality:
(x_1 + x_2 + x_3 + x_4 + x_5)^2 >=
      >= 4(x_1x_2 + x_3x_4 + x_5x_1 + x_2x_3 + x_4x_5).

188.
Given 4 points in three-dimensional space, not lying in one plane.
What is the number of such a parallelepipeds (bricks), that each point
is a vertex of each parallelepiped?


The 8-th competition -- Erevan, 1974.

  form        first day                    second day
    8  189abc190   191       | 197   198   199   200a
    9  190   192   189d 193  | 201   202   200b
   10  194   195   196  193  | 203   204   200b

189.
a,b,c) Given some cards with either "-1" or "+1" written on the opposite
side.  You are allowed to choose a triple of cards and ask about the
product of the three numbers on the cards.  What is the minimal number
of questions allowing to determine all the numbers on the cards ...
a) for 30 cards,
b) for 31 cards,
c) for 32 cards.
(You should prove, that You cannot manage with less questions.)
d) Fifty abovementioned cards are lying along the circumference.  You
   are allowed to ask about the product of three consecutive numbers
   only. You need to determine the product af all the 50 numbers.
   What is the minimal number of questions allowing to determine it?

190.
Among all the numbers representable as {36}^k - 5^l (k and l are
natural numbers) find the smallest.
Prove that it is really the smallest.

191.
a) Each of the side of the convex hexagon (6-angle) is longer
   than 1. Does it necessary have a diagonal longer than 2?
b) Each of the main diagonals of the convex hexagon is longer
   than 2. Does it necessary have a side longer than 1?

192.
Given two circles with the radiuses R and r, touching each other from
the outer side. Consider all the trapezoids, such that its lateral
sides touch both circles, and its bases touch different circles.
Find the shortest possible lateral side.

193.
Given n vectors of unit length in the plane. The length of
their total sum is less than one. Prove that You can
rearrange them to provide the property: for every k, k<= n,
the length of the sum of the first k vectors is less than 2.

194.
Find all the real a,b,c such that the equality
|ax + by + cz| + |bx + cy + az| + |cx + ay + bz| = |x| + |y| + |z|
is valid for all the real x,y,z.

195.
Given a square ABCD. Points P and Q are in the sides [AB] and
[BC] respectively. |BP| = |BQ|. Let H be the base of the
perpendicular from the point B to the segment [PC].
Prove that the angle DHQ is a right one.

196.
Given some red and blue points. Some of them are connected by the
segments. Let us call "exclusive" the point, if its colour differs from
the colour of more than half of the connected points. Every move one
arbitrary "exclusive" point is repainted to the other colour.
Prove that after the finite number of moves there will remain no
"exclusive" points.

197.
Find all the natural n and k such that n^n has k digits and k^k has n
digits.

198.
Given points D and E on the legs [CA] and [CB], respectively, of the
isosceles right triangle. |CD| = |CE|. The extensions of the
perpendiculars from D and C to the line AE cross the hypotenuse AB in
the points K and L.  Prove that |KL| = |LB|.

199.
Two are playing the game "cats and rats" on the chess-board 8x8. The
first has one piece -- a rat, the second -- several pieces -- cats. All
the pieces have four available moves -- up, down, left, right -- to the
neighbour field, but the rat can also escape from the board if it is on
the boarder of the chess-board. If they appear on the same field -- the
rat is eaten. The players move in turn, but the second can move all the
cats in independent directions.
a) Let there be two cats. The rat is on the interior field.
   Is it possible to put the cats on such a fields on the border
   that they will be able to catch the rat?
b) Let there be three cats, but the rat moves twice during the
   first turn. Prove that the rat can escape.

200.
a) Prove that You can rearrange the numbers 1, 2, ... , 32 in
   such a way, that for every couple of numbers none of the
   numbers between them will equal their arithmetic mean.
b) Can You rearrange the numbers 1, 2, ... , 100 in such a way,
   that for every couple of numbers none of the numbers between
   them will equal their arithmetic mean?

201.
Find all the three-digit numbers such that it equals to the arithmetic
mean of the six numbers obtained by rearranging its digits.

202.
Given a convex polygon. You can put no triangle with area 1 inside it.
Prove that You can put the polygon inside a triangle with the area 4.

203.
Given a function f(x) on the segment 0 <= x <= 1.  For all x,
f(x) >= 0; f(1) = 1.  For all the couples of x_1, x_2 such, that all
the arguments are in the segment  f(x_1 + x_2) >= f(x_1) + f(x_2).
a) Prove that for all x holds f(x) <= 2x.
b) Is the inequality f(x) <= {1.9}x valid?

204.
Given a triangle ABC with the are 1. Let A',B' and C' are
the middles of the sides [BC], [CA] and [AB] respectively.
What is the minimal possible area of the common part of
two triangles A'B'C' and KLM, if the points K,L and M
are lying on the segments [AB'], [CA'] and [BC'] respectively?


The 9-th competition -- Saratov, 1975.

  form        first day                    second day
    8  205a  206   207   208a | 213   214   215
    9  209   206   210   208b | 216   215   217
   10  211   212   205b  208  | 214   218   219

205.
a) The triangle ABC was turned around the centre of the outscribed
   circle by the angle less than 180 degrees and thus was obtained the
   triangle A_1B_1C_1. The corresponding segments [AB] and [A_1B_1]
   intersect in the point C_2; [BC] and [B_1C_1] -- A_2; [AC] and
   [A_1C_1] -- B_2.
   Prove that the triangle A_2B_2C_2 is similar to the triangle ABC.
b) The quadrangle ABCD was turned around the centre of the outscribed
   circle by the angle less than 180 degrees and thus was obtained
   the quadrangle A_1B_1C_1D_1.
   Prove that the points of intersection of the corresponding lines
   ( (AB) and (A_1B_1), (BC) and (B_1C_1), (CD) and (C_1D_1),
   (DA) and (D_1A_1) ) are the vertices of the parallelogram.

206.
Given a triangle ABC with the unit area. The first player chooses a
point X on the side [AB], than the second -- Y on [BC] side, and,
finally, the first chooses a point Z on [AC] side. The first tries to
obtain the greatest possible area of the XYZ triangle, the second --
the smallest.  What area can obtain the first for sure and how?

207.
What is the smallest perimeter of the convex 32-angle, having all the
vertices in the nodes of cross-lined paper with the sides of its
squares equal to 1?

208.
a) Given a big square consisting of 7x7 squares. You should mark the
   centres of k points in such a way, that no quadruple of the marked
   points will be the vertices of a rectangle with the sides parallel
   to the sides of the given squares.
   What is the greatest k such that the problem has solution?
b) The same problem for {13}x{13} square.

209.
Denote the middles of the convex hexagon A_1A_2A_3A_4A_5A_6 diagonals
A_6A_2, A_1A_3, A_2A_4, A_3A_5, A_4A_6, A_5A_1 as B_1, B_2, B_3, B_4,
B_5, B_6 respectively.  Prove that if the hexagon B_1B_2B_3B_4B_5B_6 is
convex, than its area equals to the quarter of the initial hexagon.

210.
Prove that it is possible to find 2^{n+1} of 2^n digit numbers
containing only "1" and "2" as digits, such that every two of them
distinguish at least in 2^{n-1} digits.

211.
Given a finite set of polygons in the plane.
Every two of them have a common point.
Prove that there exists a straight line, that crosses all the polygons.

212.
Prove that for all the positive numbers a,b,c the following inequality
is valid:
a^3 + b^3 + c^3 + 3abc > ab(a + b) + bc(b + c) + ac(a + c).

213.
Three flies are crawling along the perimeter of the ABC triangle in
such a way, that the centre of their masses is a constant point.  One
of the flies has already passed along all the perimeter.
Prove that the centre of the flies' masses coincides with the centre of
masses of the ABC triangle. (The centre of masses for the triangle is
the point of medians intersection.)

214.
Several zeros, ones and twos are written on the blackboard.  An
anonymous clean in turn pairs of different numbers, writing, instead of
cleaned, the number not equal to each. (0 instead of pair {1,2}; 1
instead of {0,2}; 2 instead of {0,1}).  Prove that if there remains one
number only, it does not depend on the processing order.

215.
Given a horizontal strip on the plane (its sides are parallel lines)
and n lines intersecting the strip. Every two of them intersect inside
the strip, and not a triple has a common point.  Consider all the paths
along the segments of those lines, starting on the lower side of the
strip and ending on the upper side with the properties: moving along
such a path we are constantly rising up, and, having reached the
intersection, we are obliged to turn to another line.  Prove that:
a) there are not less than n/2 such a paths without common points;
b) there is a path consisting of not less than of n segments;
c) there is a path that goes along not more than along n/2+1 lines;
d) there is a path that goes along all the n lines.

216.
For what k is it possible to construct a cube kxkxk of the black
and white cubes 1x1x1 in such a way that every small cube has
the same colour, that have exactly two his neighbours. (Two cubes
are neighbours, if they have the common face.)

217.
Given a polynomial P(x) with
a) natural coefficients;
b) integer coefficients;
Let us denote with a_n the sum of the digits of P(n) value.
Prove that there is a number encountered in the sequence
a_1, a_2, ... , a_n, ... infinite times.

218.
The world and the european champion are determined in the same
tournament carried in one round. There are 20 teams and k of them are
european. The european champion is determined according to the results
of the games only between those k teams. What is the greatest k such
that the situation, when the single european champion is the single
world outsider, is possible if:
a) it is hockey (draws allowed)?
b) it is volleyball (no draws)?

219.
a) Given real numbers a_1,a_2,b_1,b_2 and positive p_1,p_2,q_1,q_2.
   Prove that in the table 2x2

     a_1 + b_1     a_1 + b_2
     ---------     ---------
     p_1 + q_1     p_1 + q_2

     a_2 + b_1     a_2 + b_2
     ---------     ---------
     p_2 + q_1     p_2 + q_2

   there is a number in the table, that is not less than another number
   in the same row and is not greater than another number in the same
   column (a saddle point).
b) Given real numbers a_1, a_2, ... , a_n; b_1, b_2, ... , b_n
   and positive p_1, p_2,  ... , p_n; q_1, q_2, ... , q_n.
   We build the table nxn, with the numbers (0 < i,j <= n)

     a_i + b_j
     ---------
     p_i + q_j

   in the intersection of the i-th row and j-th column.
   Prove that there is a number in the table, that is not less than
   arbitrary number in the same row and is not greater than arbitrary
   number in the same column (a saddle point).


The 10-th competition -- Dushanbe, 1976.

  form        first day                    second day
    8  220   221   222ab 223        | 229   230   231
    9  222b  224   223   225        | 230   232   231
   10  223   226   227   228   225  | 233   234   231

220.
There are 50 exact watches lying on a table.  Prove that there exist a
certain moment, when the sum of the distances from the centre of the
table to the ends of the minute hands is more than the sum of the
distances from the centre of the table to the centres of the watches.

221.
A row of 1000 numbers is written on the blackboard.  We write a new
row, below the first according to the rule: We write under every number
a the natural number, indicating how many times the number a is
encountered in the first line. Then we write down the third line:
under every number b -- the natural number, indicating how many times
the number b is encountered in the second line, and so on.

a) Prove that there is a line that coincides with the preceding one.
b) Prove that the eleventh line coincides with the twelfth.
c) Give an example of the initial line such, that the tenth row differs
   from the eleventh.

222.
Given three circumferences of the same radius in a plane.
a) All three are crossing in one point K. Consider three arcs AK,CK,EK
   : the A,C,E are the points of the circumferences intersection and
   the arcs are taken in the clockwise direction.  (Sorry, no picture.
   Every arc is inside one circle, outside the second and on the border
   of the third one) Prove that the sum of the arcs is 180 degrees.
b) Consider the case, when the three circles give a curvilinear
   triangle BDF as there intersection (instead of one point K).
   Prove that the sum of the AB, CD and EF arcs is 180 degrees.
   (The arcs are taken in the clockwise direction. Every arc is inside
   one circle, outside the second and on the border of the third one)

223.
The natural numbers x_1 and x_2 are less than 1000. We build a sequence:
x_3 = |x_1 - x_2|;
x_4 = min { |x_1 - x_2|, |x_1 - x_3|, |x_2 - x_3|};
  .......
x_k = min { |x_i - x_j|; 0 <i < j < k};
  .......
Prove that x{21} = 0.

224.
Can You mark the cube's vertices with the three-digit binary
numbers in such a way, that the numbers at all the possible
couples of neighbouring vertices differ in at least two digits?

225.
Given 4 vectors a,b,c,d in the plane, such that a + b + c + d = 0.
Prove the following inequality:
|a| + |b| + |c| + |d| >= |a + d| + |b + d| + |c + d|.

226.
Given right 1976-angle. The middles of all the sides and diagonals are
marked. What is the greatest number of the marked points lying on one
circumference?

227.
There are n rectangles drawn on the rectangular sheet of paper with the
sides of the rectangles parallel to the sheet sides.  The rectangles do
not have pairwise common interior points.  Prove that after cutting out
the rectangles the sheet will split into not more than n+1 part.

228.
There are three straight roads. Three pedestrians are moving
along those roads, and they are NOT on one line in the initial
moment. Prove that they will be one line not more than twice.

229.
Given a chess-board 99x99 with a set F of fields marked on it (the set
is different in three tasks). There is a beetle sitting on every field
of the set F. Suddenly all the beetles have raised into the air and
flied to another fields of the same set. The beetles from the
neighbouring fields have landed either on the same field or on the
neighbouring ones (may be far from their starting point). (We consider
the fields to be neighbouring if they have at least one common vertex.)
   Consider a statement: "There is a beetle, that either stayed on the
same field or moved to the neighbouring one".  Is it always valid if
the figure F is:
a) A central cross, i.e. the union of
   the 50-th row and the 50-th column?
b) A window frame, i.e. the union of
   the 1-st, 50-th and 99-th rows and
   the 1-st, 50-th and 99-th columns?
c) All the chess-board?

230.
Let us call "big" a triangle with all sides longer than 1.  Given a
equilateral triangle with all the sides equal to 5.   Prove that:
a) You can cut 100 big triangles out of given one.
b) You can divide the given triangle onto 100 big
   nonintersecting ones fully covering the initial one.
c) The same as b), but the triangles either do not have
   common points, or have one common side, or one common vertex.
d) The same as c), but the initial triangle has the side 3.

231.
Given natural n. We shall call "universal" such a sequence of natural
number a_1, a_2, ... , a_k; k>=n, if we can obtain every transposition
of the first n natural numbers (i.e such a sequence of n numbers, that
every one is encountered only once) by deleting some its members.
(Examples: (1,2,3,1,2,1,3) is universal for n=3, and (1,2,3,2,1,3,1) --
not, because You can't obtain (3,1,2) from it.) The goal is to estimate
the length of the shortest universal sequence for given n.
a) Give an example of the universal sequence of n^2 members.
b) Give an example of the universal sequence of (n^2 -n + 1) members.
c) Prove that every universal sequence contains not less than
   n(n + 1)/2 members
d) Prove that the shortest universal sequence for n=4 contains
   12 members
e) Find as short universal sequence, as You can. The Organising
   Committee knows the method for (n^2 - 2n +4) members.

232.
n numbers are written down along the circumference. Their
sum equals to zero, and one of them equals 1.
a) Prove that there are two neighbours with their difference
   not less than n/4.
b) Prove that there is a number that differs from the arithmetic
   mean of its two neighbours not less than on 8/{n^2}.
c) Try to improve the previous estimation, i.e what number can be
   used instead of 8?
d) Prove that for n=30 there is a number that differs from the
   arithmetic mean of its two neighbours not less than on 2/113;
   give an example of such 30 numbers along the circumference,
   that not a single number differs from the arithmetic mean of
   its two neighbours more than on 2/113.

233.
Given right n-angle wit the point O -- its centre. All the vertices
are marked either with +1 or -1. We may change all the signs in the
vertices of right k-angle (2 <= k <= n) with the same centre O.
(By 2-angle we understand a segment, being halved by O.)
Prove that in a), b) and c) cases there exists such a set of
(+1)s and (-1)s, that we can never obtain a set of (+1)s only.
a) n = 15;
b) n = 30;
c) n > 2;
d) Let us denote K(n) the maximal number of (+1) and (-1) sets
   such, that it is impossible to obtain one set from another.
   Prove, for example, that K(200) = 2^{80}.

234.
Given a sphere of unit radius with the big circle (i.e of unit radius)
that will be called "equator". We shall use the words "pole",
"parallel","meridian" as self-explanatory.
a) Let g(x), where x is a point on the sphere, be the distance from
   this point to the equator plane.  Prove that g(x) has the property
        if x_1, x_2, x_3 are the ends of the pairwise orthogonal
        radiuses, than g(x_1)^2 + g(x_2)^2 + g(x_3)^2 = 1. (*)
Let function f(x) be an arbitrary nonnegative
function on a sphere that satisfies (*) property.
b) Let x_1 and x_2 points be on the same meridian between the
   north pole and equator, and x_1 is closer to the pole than x_2.
   Prove that f(x_1) > f(x_2).
c) Let y_1 be closer to the pole than y_2.
   Prove that f(y_1) > f(y_2).
d) Let z_1 and z_2 be on the same parallel.
   Prove that f(z_1) = f(z_2).
e) Prove that for all x f(x) = g(x).


The 11-th competition -- Tallinn, 1977.

  form        first day                    second day
    8  235   236   237b  238        | 243   244ab 245   246
    9  237a  239   235   240        | 247   248   249   250
   10  237a  239   241   242   235  | 251   244   246

235.
Given a closed broken line without self-intersections in a plane.  Not
a triple of its vertices belongs to one straight line. Let us call
"special" a couple of line's segments if the one's continuation
intersects another.  Prove that there is even number of special pairs.

236.
Given several points, not all lying on one straight line. Some number
is assigned to every point. It is known, that if a straight line
contains two or more points, than the sum of the assigned to those
points equals zero.  Prove that all the numbers equal to zero.

237.
a) Given a circle with two inscribed triangles T_1 and T_2. The
   vertices of T_1 are the middles of the arcs with the ends in the
   vertices of T_2. Consider a hexagon -- the intersection of T_1 and
   T_2.  Prove that its main diagonals are parallel to T_1 sides and
   are intersecting in one point.
b) The segment, that connects the middles of the arcs AB and AC of the
   circle outscribed around the ABC triangle, intersects [AB] and [AC]
   sides in D and K points.  Prove that the points A,D,K and O -- the
   centre of the circle -- are the vertices of a diamond.

238.
Several black an white checkers (tokens?) are standing along the
circumference. Two men remove checkers in turn. The first removes
all the black ones that had at least one white neighbour, and the
second -- all the white ones that had at least one black neighbour.
They stop when all the checkers are of the same colour.
a) Let there be 40 checkers initially. Is it possible that after
   two moves of each man there will remain only one (checker)?
b) Let there be 1000 checkers initially. What is the minimal possible
   number of moves to reach the position when there will remain only
   one (checker)?

239.
Given infinite sequence a_n. It is known that the limit of
b_n = a_{n+1} - {a_n}/2  equals zero.
Prove that the limit of  a_n  equals zero.

240.
There are direct routes from every city of a certain country to every
other city. The prices are known in advance. Two tourists (they do not
necessary start from one city) have decided to visit all the cities,
using only direct travel lines. The first always chooses the cheapest
ticket to the city, he has never been before (if there are several --
he chooses arbitrary destination among the cheapests). The second --
the most expensive (they do not return to the first city).  Prove that
the first will spend not more money for the tickets, than the second.
/* The fact seems to be evident, but the proof is not easy -- VAP */

241.
Every vertex of a convex polyhedron belongs to three edges.
It is possible to outscribe a circle around all its faces.
Prove that the polyhedron can be inscribed in a sphere.

242.
The polynomial x^{10} + ?x^9 + ?x^8 + ... +?x + 1 is written on the
blackboard. Two players substitute (real) numbers instead of one of the
question marks in turn. (9 turns total.) The first wins if the
polynomial will have no real roots.  Who wins?

243.
Seven elves are sitting at a round table. Each elf has a cup.  Some
cups are filled with some milk. Each elf in turn and clockwise divides
all his milk between six other cups.  After the seventh has done this,
every cup was containing the initial amount of milk.  How much milk did
every cup contain, if there was three litres of milk total?

244.
Let us call "fine" the 2n-digit number if it is exact square
itself and the two numbers represented by its first n digits
(first digit may not be zero) and last n digits (first digit may
be zero, but it may not be zero itself) are exact squares also.
a) Find all two- and four-digit fine numbers.
b) Is there any six-digit fine number?
c) Prove that there exists 20-digit fine number.
d) Prove that there exist at least ten 100-digit fine numbers.
e) Prove that there exists 30-digit fine number.

245.
Given a set of n positive numbers. For each its nonempty subset
consider the sum of all the subset's numbers.
Prove that You can divide those sums onto n groups in such a way, that
the least sum in every group is not less than a half of the greatest
sum in the same group.

246.
There are 1000 tickets with the numbers 000, 001, ... , 999; and 100
boxes with the numbers 00, 01, ... , 99. You may put a ticket in a box,
if You can obtain the box number from the ticket number by deleting one
digit.  Prove that:
a) You can put all the tickets in 50 boxes;
b) 40 boxes is not enough for that;
c) it is impossible to use less than 50 boxes.
d) Consider 10000 4-digit tickets, and You are allowed to  delete two
   digits. Prove that 34 boxes is enough for storing all the tickets.
e) What is the minimal used boxes set in the case of k-digit tickets?

247.
Given a square 100x100 on the sheet of cross-lined paper.  There are
several broken lines drawn inside the square.  Their links consist of
the small squares sides. They are neither pairwise- nor
self-intersecting (have no common points). Their ends are on the big
square boarder, and all the other vertices are in the big square
interior.  Prove that there exists (in addition to four big square
angles) a node (corresponding to the cross-lining family, inside the
big square or on its side) that does not belong to any broken line.

248.
Given natural numbers x_1, x_2, ... , x_n; y_1, y_2, ... , y_m.
The following condition is valid:
(x_1 + x_2 + ... + x_n) = (y_1 + y_2 + ... + y_m) < mn. (*)
Prove that it is possible to delete some terms from (*) (not
all and at least one) and to obtain another valid condition.

249.
Given 1000 squares on the plane with their sides parallel to the
coordinate axes. Let M be the set of those squares centres.
Prove that You can mark some squares in such a way, that every point of
M will be contained not less than in one and not more than in four
marked squares.

250.
Given scales and a set of n different weights. We take weights in turn
and add them on one of the scales sides. Let us denote "L" the scales
state with the left side down, and "R" -- with the right side down.
a) Prove that You can arrange the weights in such an order,
   that we shall obtain the sequence LRLRLRLR... of the scales
   states. (That means that the state of the scales will be
   changed after putting every new weight.)
b) Prove that for every n-letter word containing R's and L's
   only You can arrange the weights in such an order, that the
   sequence of the scales states will be described by that word.

251.
Let us consider one variable polynomials with the senior
coefficient equal to one. We shall say that two polynomials
P(x) and Q(x) commute, if P(Q(x))=Q(P(x)) (i.e. we obtain
the same polynomial, having collected the similar terms).
a) For every a find all Q such that the Q degree is not
   greater than three, and Q commutes with (x^2 - a).
b) Let P be a square polynomial, and k is a natural number.  Prove that
   there is not more than one commuting with P k-degree polynomial.
c) Find the 4-degree and 8-degree polynomials
   commuting with the given square polynomial P.
d) R and Q commute with the same square polynomial P.
   Prove that Q and R commute.
e) Prove that there exists a sequence P_2, P_3, ... , P_n, ...  (P_k is
   k-degree polynomial), such that P_2(x) = x^2 - 2, and all the
   polynomials in this infinite sequence pairwise commute.


The 12-th competition -- Tashkent, 1978.

  form        first day                    second day
    8  252   253   254   255ab | 260   261   262   263
    9  252   253   256   257   | 260   261   264   265
   10  258   259   255cde257   | 260   266   267   268

252.
Let a_n be the closest to sqrt(n) integer.
Find the sum  1/{a_1} + 1/{a_2} + ... + 1/{a_{1980}}.

253.
Given a quadrangle ABCD and a point M inside it such that ABMD is a
parallelogram. the angle CBM equals to CDM.
Prove that the angle ACD equals to BCM.

254.
Prove that there is no m such that ({1978}^m - 1) is divisible
by ({1000}^m - 1).

255.
Given a finite set K_0 of points (in the plane or space).  The sequence
of sets K_1, K_2, ... , K_n, ... is build according to the rule: we
take all the points of K_i, add all the symmetric points with respect
to all its points, and, thus obtain K_{i+1}.
a) Let K_0 consist of two points A and B with the distance 1 unit
   between them.  For what n the set K_n contains the point that is
   1000 units far from A?
b) Let K_0 consist of three points that are the vertices of the
   equilateral triangle with the unit square.  Find the area of minimal
   convex polygon containing K_n.
        K_0 below is the set of the unit volume tetrahedron vertices.
c) How many faces contain the minimal convex polyhedron containing K_1?
d) What is the volume of the abovementioned polyhedron?
e) What is the volume of the minimal convex polyhedron containing K_n?

256.
Given two heaps of checkers. the bigger contains m checkers, the
smaller -- n (m>n). Two players are taking checkers in turn from the
arbitrary heap. The players are allowed to take from the heap a number
of checkers (not zero) divisible by the number of checkers in another
heap. The player that takes the last checker in any heap wins.
a) Prove that if m > 2n, than the first can always win.
b) Find all x such that if m > xn, than the first can always win.

257.
Prove that there exists such an infinite sequence {x_i}, that for
all m and all k (m<>k) holds |x_m - x_k| > 1/|m-k|.

258.
Let f(x) = x^2 + x + 1.  Prove that for every natural m>1 the numbers
m, f(m), f(f(m)), ...  are relatively prime.

259.
Prove that there exists such a number A that You can inscribe 1978
different size squares in the plot of the function y = A sin(x). (The
square is inscribed if all its vertices belong to the plot.)

260.
Given three automates that deal with the cards with the pairs of
natural numbers. The first, having got the card with (a,b), produces
new card with (a+1,b+1); the second, having got the card with (a,b),
produces new card with (a/2,b/2), if both a and b are even and nothing
in the opposite case; the third, having got the pair of cards with
(a,b) and (b,c) produces new card with (a,c). All the automates return
the initial cards also.  Suppose there was (5,19) card initially. Is it
possible to obtain
a) (1,50)?
b) (1,100)?
c) Suppose there was (a,b) card initially (a<b). We want to obtain
   (1,n) card. For what n is it possible?

261.
Given a circle with radius R and inscribed n-angle with area S.
We mark one point on every side of the given polygon.
Prove that the perimeter of the polygon with the vertices in the
marked points is not less than 2S/R.

262.
The checker is standing on the corner field of a nxn chess-board.
Each of two players moves it in turn to the neighbour (i.e. that
has the common side) field. It is forbidden to move to the field,
the checker has already visited. That who cannot make a move losts.
a) Prove that for even n the first can always win, and if n is odd,
   than the second can always win.
b) Who wins if the checker stands initially on the neighbour to the
   corner field?

263.
Given n nonintersecting segments in the plane. Not a pair of those
belong to the same straight line. We want to add several segments,
connecting the ends of given ones, to obtain one nonselfintersecting
broken line.  Is it always possible?

264.
Given 0 < a <= x_1 <= x_2 <= ... <= x_n <= b. Prove that
                         1     1           1      (a+b)^2
(x_1 + x_2 + ... + x_n)(--- + --- + ... + ---) <= -------n^2.
                        x_1   x_2         x_n       4ab

265.
Given a simple number p>3. Consider the set M of the pairs (x,y) with
the integer coordinates in the plane such that 0 <= x < p; 0 <= y < p.
Prove that it is possible to mark p points of M such that not a triple
of marked points will belong to one line and there will be no
parallelogram with the vertices in the marked points.

266.
Prove that for every tetrahedron there exist two planes such that the
projection areas on those planes relation is not less than sqrt(2).

267.
Given a_1, a_2, ... , a_n. Define b_k = (a_1 + a_2 + ...  + a_k)/k
for 1 <= k <= n. Let
C = (a_1 - b_1)^2 + (a_2 - b_2)^2 + ... + (a_n - b_n)^2;
D = (a_1 - b_n)^2 + (a_2 - b_n)^2 + ... + (a_n - b_n)^2.
Prove that C <= <D <= 2C.

268.
Consider a sequence x_n = (1 + sqrt(2) + sqrt (3))^n.
Each member can be represented as
x_n = q_n + {r_n}sqrt(2) + {s_n}sqrt(3) + {t_n}sqrt(6),
where q_n, r_n, s_n, t_n are integers.
                                 r_n  s_n  t_n
Find the limits of the fractions ---, ---, ---.
                                 q_n  q_n  q_n


The 13-th competition -- Tbilisi, 1979.

  form        first day                    second day
    8  269   270   271  | 274   275   276   277
    9  269   272   271  | 278   279   280   281
   10  273   272   271  | 276   275   282   283

269.
What is the least possible relation of two isosceles triangles areas,
if three vertices of the first one belong to three different sides of
the second one?

270.
A grasshopper is hopping in the angle x>=0, y>=0 of the coordinate
plane (that means that it cannot land in the point with negative
coordinate). If it is in the point (x,y), it can either jump to the
point (x+1,y-1), or to the point (x-5,y+7).
Draw a set of such an initial points (x,y), that having started from
there, a grasshopper cannot reach any point farther than 1000 from
the point (0,0). Find its area.

271.
Every member of a certain parliament has not more than 3 enemies.
Prove that it is possible to divide it onto two subparliaments so, that
everyone will have not more than one enemy in his subparliament. (A is
the enemy of B if and only if B is the enemy of A.)

272.
Some numbers are written in the notebook. We can add to that list the
arithmetic mean of some of them, if it doesn't equal to the number,
already having been included in it. Let us start with two numbers, 0
and 1.  Prove that it is possible to obtain
a) 1/5;
b) an arbitrary rational number between 0 and 1.

273.
For every n the decreasing sequence {x_k} satisfies a condition
      x_4   x_9         x_{n^2}
x_1 + --- + --- + ... + ------- <= 1.
       2     3              n
Prove that for every n it also satisfy
      x_2   x_3         x_n
x_1 + --- + --- + ... + --- <= 3.
       2     3           n

274.
Given some points in the plane. For some pairs A,B the vector AB is
chosen. For every point the number of the chosen vectors starting in
that point equal to the number of the chosen vectors ending in that
point. Prove that the sum of the chosen vectors equals to zero vector.

275.
What is the least possible number of the checkers being required
a) for the 8x8 chess-board;
b) for the nxn chess-board;
to provide the property:  Every line (of the chess-board fields)
parallel to the side or diagonal is occupied by at least one checker?

276.
Find x and y (a and b parameters):
x - y*sqrt(x^2 - y^2)        y - x*sqrt(x^2 - y^2)
--------------------- = a;   --------------------- = b.
 sqrt(1 - x^2 + y^2)          sqrt(1 - x^2 + y^2)

277.
Given some square carpets with the total area 4.
Prove that they can fully cover the unit square.

278.
Prove that for the arbitrary numbers x_1, x_2, ... , x_n from
the [0,1] segment    (x_1 + x_2 + ... + x_n + 1)^2 >=
                >= 4({x_1}^2 + {x_2}^2 + ... + {x_n}^2).

279.
Natural p and q are relatively prime. The [0,1] is divided onto
(p+q) equal segments.
Prove that every segment except two marginal contain exactly one from
the (p+q-2) numbers {1/p, 2/p, ... , (p-1)/p, 1/q, 2/q, ... , (q-1q)}.

280.
Given the point O in the space and 1979 straight lines l_1, l_2, ... ,
l_{1979} containing it. Not a pair of lines is orthogonal.
Given a point A_1 on l_1 that doesn't coincide with O.
Prove that it is possible to choose the points A_i on l_i (i = 2, 3,
... , 1979) in so that 1979 pairs will be orthogonal:
A_1A_3           and l_2;
A_2A_4           and l_3;
           ..........
A_{i-1}A_{i+1}   and l_i;
           ..........
A_{1977}A_{1979} and l_{1978};
A_{1978}A_1      and l_{1979};
A_{1979}A_2      and l_1

281.
The finite sequence a_1, a_2, ... , a_n of ones and zeroes should
satisfy a condition: for every k from 0 to (n-1) the sum
a_1a_{k+1} + a_2a_{k+2} + ... + a_{n-k}a_n  should be odd.
a) Build such a sequence for n=25.
b) Prove that there exists such a sequence for some n > 1000.

282.
The convex quadrangle is divided by its diagonals onto four
triangles. The circles inscribed in those triangles are equal.
Prove that the given quadrangle is a diamond.

283.
Given n points (in sequence) A_1, A_2, ... , A_n on a line. All the
segments A_1A_2, A_2,A_3, ... A_{n-1}A_n are shorter than 1. We need to
mark (k-1) points so that the difference of every two segments, with
the ends in the marked points, is shorter than 1.
Prove that it is possible
a) for k=3;
b) for every k less than (n-1).


The 14-th competition -- Saratov, 1980.

  form        first day                    second day
    8  284   285   286   287  | 293   294   295   296
    9  288   289   286   290  | 295   297   298   299
   10  291   289   292   290  | 300   301   302   303

284.
All the two-digit numbers from 19 to 80 are written in a line without
spaces. Is the obtained number (192021....7980) divisible by 1980?

285.
The vertical side of a square is divided onto n segments. The sum of
the segments with even numbers lengths equals to the sum of the
segments with odd numbers lengths.  (n-1) lines parallel to the
horizontal sides are drawn from the segments ends, and, thus, n strips
are obtained. The diagonal is drawn from the lower left corner to the
upper right one.  This diagonal divides every strip onto left and right
parts.  Prove that the sum of the left parts of odd strips areas equals
to the sum of the right parts of even strips areas.

286.
The load for the space station "Salute" is packed in containers.  There
are more than 35 containers, and the total weight is 18 metric tons.
There are 7 one-way transport spaceships "Progress", each able to bring
3 metric tons to the station. It is known that they are able to take an
arbitrary subset of 35 containers.
Prove that they are able to take all the load.

287.
The points M and P are the middles of [BC] and [CD] sides of a convex
quadrangle ABCD. It is known that |AM| + |AP| = a.
Prove that the ABCD area is less than {a^2}/2.

288.
Are there three simple numbers x,y,z, such that x^2 + y^3 = z^4?

289.
Given a point E on the diameter AC of the certain circle.
Draw a chord BD to maximise the area of the quadrangle ABCD.

290.
There are several settlements on the bank of the Big Round Lake.  Some
of them are connected with the regular direct ship lines.  Two
settlements are connected if and only if two next (counterclockwise) to
each ones are not connected.
Prove that You can move from the arbitrary settlement to another
arbitrary settlement, having used not more than three ships.

291.
The six-digit decimal number contains six different non-zero digits and
is divisible by 37.  Prove that having transposed its digits You can
obtain at least 23 more numbers divisible by 37.

292.
Find real solutions of the system
sin x  +  2 sin(x+y+z)  =  0,
sin y  +  3 sin(x+y+z)  =  0,
sin z  +  4 sin(x+y+z)  =  0.

293.
Given 1980 vectors in the plane, and there are some non-collinear among
them. The sum of every 1979 vectors is collinear to the vector not
included in that sum.
Prove that the sum of all vectors equals to the zero vector.

294.
Let us denote with S(n) the sum of all the digits of n.
a) Is there such an n that  n + S(n) = 1980?
b) Prove that at least one of two arbitrary successive natural
   numbers is representable as  n + S(n)  for some third number n.

295.
Some squares of the infinite sheet of cross-lined paper are red.
Each 2x3 rectangle (of 6 squares) contains exactly two red squares.
How many red squares can be in the 9x11 rectangle of 99 squares?

296.
An epidemic influenza broke out in the elves city. First day some of
them were infected by the external source of infection and nobody later
was infected by the external source.  The elf is infected when visiting
his ill friend. In spite of the situation every healthy elf visits all
his ill friends every day.  The elf is ill one day exactly, and has the
immunity at least on the next day. There is no graftings in the city.
Prove that
a) If there were some elves immunised by the external source on
   the first day, the epidemic influenza can continue arbitrary
   long time.
b) If nobody had the immunity on the first day, the epidemic influenza
   will stop some day.

297.
Let us denote with P(n) the product of all the digits of n.  Consider
the sequence n_{k+1} = n_k + P(n_k).  Can it be unbounded for some n_1?

298.
Given equilateral triangle ABC. Some line, parallel to [AC] crosses
[AB] and [BC] in M and P points respectively. Let D be the centre of
PMB triangle, E - the middle of the [AP] segment.
Find the angles of DEC triangle.

299.
Let the edges of rectangular parallelepiped be x,y and z (x<y<z), and
p=4(x+y+z), s=2(xy+yz+zx) and d=sqrt(x^2 + y^2 + z^2) -- its perimeter,
surface area and diagonal length, respectively.  Prove that
    1 p              s          1 p              s
x < -(- - sqrt(d^2 - -)),   z > -(- + sqrt(d^2 - -)).
    3 4              2          3 4              2

300.
The A set consists of integers only. Its minimal element is 1
and its maximal element is 100. Every element of A except 1 equals
to the sum of two (may be equal) numbers being contained in A.
What is the least possible number of elements in A?

301.
Prove that there is an infinite number of such numbers B that the
equation  [x^{3/2}] + [y^{3/2}] = B  has at least 1980 integer
solutions (x,y). ([z] denotes the greatest integer not exceeding z.)

302.
The edge [AC] of the tetrahedron ABCD is orthogonal to [BC], and [AD]
is orthogonal to [BD].  Prove that the cosine of the angle between (AC)
and (BD) lines is less than |CD|/|AB|.

303.
The number x from [0,1] is written as an infinite decimal fraction.
Having rearranged its first five digits after the point we can
obtain another fraction that corresponds to the number x_1.
Having rearranged  five digits of x_k from (k+1)-th till (k+5)-th
after the point we obtain the number x_{k+1}.
a) Prove that the sequence x_i has limit.
b) Can this limit be irrational if we have started with the
   rational number?
c) Invent such a number, that always produces irrational numbers,
   no matter what digits were transposed.


The 15-th competition -- Alma-Ata, 1981.

  form        first day                    second day
    8  304   305   306   307  | 315   316   317   318
    9  308   309   310   311  | 319   320   321   322
   10  311   312   312   314  | 323   324   325   326

304.
Two equal chess-boards (8x8) have the same centre, but one is rotated
by 45 degrees with respect to another.  Find the total area of black
fields intersection, if the fields have unit length sides.

305.
Given points A,B,M,N on the circumference. Two chords [MA_1] and [MA_2]
are orthogonal to (NA) and (NB) lines respectively.
Prove that (AA_1) and (BB_1) lines are parallel.

306.
Let us say, that a natural number has the property P(k) if it can be
represented as a product of k succeeding natural numbers greater than 1.
a) Find k such that there exists n which has properties
   P(k) and P(k+2) simultaneously.
b) Prove that there is no number having properties
   P(2) and P(4) simultaneously.

307.
The rectangular table has four rows. The first one contains arbitrary
natural numbers (some of them may be equal). The consecutive lines are
filled according to the rule: we look through the previous row from
left to the certain number n and write the number k if n was met k
times.  Prove that the second row coincides with the fourth one.

308.
Given real a. Find the least possible area of the rectangle
with the sides parallel to the coordinate axes and containing
the figure determined by the system of inequalities
y <= -x^2,  y >= x^2 - 2x + a.
/* as there is no derivatives in the school program of the 9-th
   form, the participants had to use parabola properties -VAP */

309.
Three equilateral triangles ABC, CDE, EHK (the vertices are mentioned
counterclockwise) are lying in the plane so, that the vectors [AD[ and
[DK[ are equal.  Prove that the triangle BHD is also equilateral.

310.
There are 1000 inhabitants in a settlement. Every evening every
inhabitant tells all his friends all the news he had heard the previous
day. Every news becomes finally known to every inhabitant.  Prove that
it is possible to choose 90 of inhabitants so, that if You tell them a
news simultaneously, it will be known to everybody in 10 days.

311.
It is known about real a and b that the inequality
a cos(x) + b cos(3x) > 1  has no real solutions.
Prove that |b| <=1.

312.
The points K and M are the centres of the AB and CD sides of the convex
quadrangle ABCD. The points L and M belong to two other sides and KLMN
is a rectangle.  Prove that KLMN area is a half of ABCD area.

313.
Find all the sequences of natural k_n with two properties:
for all n    k_n <= n sqrt(n);
for all m>n   (k_n - k_m)  is divisible by (m-n).

314.
Is it possible to fill a rectangular table with black and white
squares (only) so, that the number of black squares will equal
to the number of white squares, and each row and each column
will have more than 75% squares of the same colour?

315.
The quadrangles AMBE, AHBT, BKXM, and CKXP are parallelograms.
Prove that the quadrangle ABTE is also parallelogram.
(the vertices are mentioned counterclockwise)

316.
Find the natural solutions of the equation x^3 - y^3 = xy + 61.

317.
Eighteen soccer teams have played 8 tours of a one-round tournament.
Prove that there is a triple of teams, having not met each other yet.

318.
The points C_1, A_1, B_1 belong to [AB], [BC], [CA] sides, respectively,
of the ABC triangle.
|AC_1|   |BA_1|   |CB_1|   1
------ = ------ = ------ = -.
|C_1B|   |A_1C|   |B_1A|   3
Prove that the perimeter P of the ABC triangle and the perimeter p
of the A_1B_1C_1 triangle satisfy inequality  P/2 < p < 3P/4.

319.
Positive numbers x,y satisfy equality x^3 + y^3 = x - y.
Prove that x^2 + y^2 < 1.

320.
A pupil has tried to make a copy of a convex polygon, drawn inside
the unit circle. He draw one side, from its end -- another, and so on.
Having finished, he has noticed that the first and the last vertices
do not coincide, but are situated d units of length far from each other.
The pupil draw angles precisely, but made relative error less than p
in the lengths of sides.  Prove that d < 4p.

321.
A number is written in the each vertex of a cube. It is allowed to add
one to two numbers written in the ends of one edge.
Is it possible to obtain the cube with all equal numbers if the numbers
were initially as on the pictures:
  0-------0     7-------4     0-------1
 /|      /|    /|      /|    /|      /|
0-------0 |   6-------5 |   1-------0 |
| |     | |   | |     | |   | |     | |
| 0-----|-1   | 2-----|-3   | 0-----|-0
|/      |/    |/      |/    |/      |/
0-------0     1-------4     0-------0
  fig.a         fig.b         fig.c

322.
Find  n such that each of the numbers n,(n+1),...,(n+20) has the common
divider greater than one with the number 30030 = 2*3*5*7*11*13.

323.
The natural numbers from 100 to 999 are written on separate cards. They
are gathered in one pile with their numbers down in arbitrary order.
Let us open them in sequence and divide into 10 piles according to the
least significant digit. The first pile will contain cards with 0 at
the end, ... , the tenth -- with 9. Then we shall gather 10 piles in
one pile, the first -- down, then the second, ... and the tenth -- up.
Let us repeat the procedure twice more, but the next time we shall
divide cards according to the second digit, and the last time -- to the
most significant one.
What will be the order of the cards in the obtained pile?

324.
Six points are marked inside the 3x4 rectangle.
Prove that there is a pair of marked points with the
distance between them not greater than sqrt(5).

325.
a) Find the minimal value of the polynomial
   P(x,y) = 4 + (x^2)(y^4) + (x^4)(y^2) - 3(x^2)(y^2)
   /* the usage of derivatives is forbidden, as they were
      not included in the school programs  -- VAP */
b) Prove that it cannot be represented as a sum of the squares
   of some polynomials of x,y.

326.
The segments [AD], [BE] and [CF] are the side edges of the _right_
triangle prism.(I mean, that the equilateral triangle is a base -- VAP)
Find all the points in its base ABC, situated on the equal
distances from the (AE), (BF) and (CD) lines.


The 16-th competition -- Odessa, 1982.

  form        first day                    second day
    8  327   328   329a  330  | 337   338   339   340
    9  331   332   333   334  | 341   342   343   344
   10  335   332   329b  336  | 345   346   347   348

327.
Given two points M and K on the circumference with radius r_1 and
centre O_1. The circumference with radius r_2 and centre O_2 is
inscribed in MO_1K angle.  Find the MO_1KO_2 quadrangle area.

328.
Every member, starting from the third one, of two sequences {a_n} and
{b_n} equals to the sum of two preceding ones.  First members are: a_1
= 1, a_2 = 2, b_1 = 2, b_2 = 1.  How many natural numbers are
encountered in both sequences (may be on the different places)?

329.
a) Let m and n be natural numbers. For some nonnegative integers k_1,
   k_2, ... , k_n the number 2^{k_1} + 2^{k_2} + ... + 2^{k_n} is
   divisible by (2^m - 1).  Prove that n >= m.
b) Can You find a number, divisible by 111...1 (m times "1"),
   that has the sum of its digits less than m?

330.
A nonnegative real number is written at every cube's vertex.  The sum
of those numbers equals to 1. Two players choose in turn faces of the
cube, but they cannot choose the face parallel to already chosen one
(the first moves twice, the second -- once).
Prove that the first player can provide the number, at the common for
three chosen faces vertex, to be not greater than 1/6.

331.
Once upon a time, three boys visited a library for the first time.
The first decided to visit the library every second day.
The second decided to visit the library every third day.
The third decided to visit the library every fourth day.
The librarian noticed, that the library doesn't work on Wednesdays.
The boys decided to visit library on Thursdays, if they have to
do it on Wednesdays, but to restart the day counting in these cases.
They strictly obeyed these rules. Some Monday later I met them
all in that library.
What day of week was when they visited a library for the first time?

332.
The parallelogram ABCD isn't a diamond. The relation of the diagonal
lengths |AC|/|BD| equals to k. The [AM) ray is symmetric to the [AD)
ray with respect to the (AC) line. The [BM) ray is symmetric to the
[BC) ray with respect to the (BD) line. (M point is those rays
intersection.) Find the |AM|/|BM| relation.

333.
3k points are marked on the circumference. They divide it onto 3k
arcs. Some k of them have length 1, other k of them have length 2,
the rest k of them have length 3.
Prove that some two of the marked points are the ends of one diameter.

334.
Given a point M inside a right tetrahedron.  Prove that at least one
tetrahedron edge is seen from the M in an angle, that has a cosine not
greater than -1/3.  /*   I mean that if A and B are the vertices,
   corresponding to that edge, cos(AMB) <= -1/3 */

335.
Three numbers a,b,c belong to ]0,pi/2[ interval.
cos(a) = a;   sin(cos(b)) = b; cos(sin(c)) = c.
Sort those numbers in increasing order.

336.
The closed broken line M has odd number of vertices -- A_1, A_2, ... ,
A_{2n+1} in sequence. Let us denote with S(M) a new closed broken line
with vertices B_1, B_2, ... ,B_{2n+1} -- the middles of the first line
links: B_1 is the middle of [A_1A_2], ... , B_{2n+1} -- of
[A_{2n+1}A_1].  Prove that in a sequence M_1=S(M), ... , M_k =
S(M_{k-1}), ...  there is a broken line, homothetic to the M.

337.
All the natural numbers from 1 to 1982 are gathered in an array in an
arbitrary order in computer's memory. The program looks through all the
sequent pairs (first and second, second and third,...) and exchanges
numbers in the pair, if the number on the lower place is greater than
another. Then the program repeats the process, but moves from another
end of the array. The number, that stand initially on the 100-th place
reserved its place.  Find that number.

338.
Cucumber river in the Flower city /* authors mean the N.Nosov's tale
about the sort of elves country */ has parallel banks with the distance
between them 1 metre. It has some islands with the total perimeter 8
metres. Mr. Know-All claims that it is possible to cross the river in a
boat from the arbitrary point, and the trajectory will not exceed 3
metres.  Is he right?

339.
There is a parabola y = x^2  drawn on the coordinate plane. The axes
are deleted. Can You restore them with the help of compass and ruler?

340.
The square table nxn is filled by integers. If the fields have
common side, the difference of numbers in them doesn't exceed 1.
Prove that some number is encountered not less than
a) not less than [n/2] times ([] mean the whole part);
b) not less than n times.

341.
Prove that the following inequality is valid for the positive x:
2^(x^{1/12}) + 2^(x^{1/4}) >= 2^(1 + x^{1/6}) .

342.
What minimal number of numbers from the set {1,2,...,1982}
should be deleted to provide the property: none of the remained
numbers equals to the product of two other remained numbers?
/* This particular problem sounds bad due to the translator,
   but I had read the Moscow competition organising committee
   announcement with the word "prize" 7 times repeated in
   one sentence -- VAP */

343.
Every square on the infinite sheet of cross-lined paper contains
some real number. Prove that some square contains a number that
does not exceed at least four of eight neighbouring numbers.

344.
Given a sequence of real numbers a_1, a_2, ... , a_n. Prove that
it is possible to choose some of the numbers providing 3 conditions:
a) not a triple of successive members is chosen;
b) at least one of every triple of successive members is chosen;
c) the absolute value of chosen numbers sum is not less that one
   sixth part of the initial numbers' absolute values sum.

345.
Given the square table nxn with (n-1) marked fields.
Prove that it is possible to move all the marked fields below
the diagonal by moving rows and columns.

346.
Prove that the following inequality holds for all real a and natural n:
|a|*|a-1|*|a-2|*...*|a-n| >= F(a)*n!/(2^n),
F(a) is the distance from a to the closest integer.

347.
Can You find three polynomials P,Q,R of three variables x,y,z,
providing the condition:
a) P(x-y+z)^3 + Q(y-z-1)^3 +R(z-2x+1)^3 = 1;
b) P(x-y+z)^3 + Q(y-z-1)^3 +R(z-x+1)^3 = 1;
for all x,y,z?

348.
The KLMN tetrahedron (triangle pyramid) vertices are situated inside or
on the faces or on the edges of the ABCD tetrahedron. Prove that KLMN
perimeter is less than 4/3 ABCD perimeter.


The 17-th competition -- Kishenew, 1983.

  form        first day                    second day
    8  349   350   351   352  | 360   361   362   363
    9  353   354   355   356  | 364   365   366   367
   10  357   354   358   359  | 360   368   369   370

349.
Every cell of the net, drawn on the      +---+---+---+---+
picture has 1x1 size. Is it possible     |   |   |   |   |
to represent this net as a union of      +---+---+---+---+
the following sets:                      |   |   |   |   |
a) Eight broken lines of length          +---+---+---+---+
   five each?                            |   |   |   |   |
b) Five broken lines of length           +---+---+---+---+
   eight each?                           |   |   |   |   |
                                         +---+---+---+---+

350.
Three numbers were written with a chalk on the blackboard.  The
following operation was repeated several times:  One of the numbers was
cleared and the sum of two other numbers, decreased by 1, was written
instead of it. The final set of numbers is {17, 1967, 1983} /* In some
organisers opinion "17" is the most distinguishing number, and those
three numbers were met on the picturesque jubilee slogans. In fact, in
1967 the competition was just renamed -VAP */. Is it possible to admit
that the initial numbers were
a) {2, 2, 2}?
b) {3, 3, 3}?

351.
Three disks touch pairwise from outside in the points X,Y,Z. Then the
radiuses of the disks were expanded by 2/sqrt(3) times, and the centres
were reserved.  Prove that the XYZ triangle is completely covered by
the expanded disks.

353.
Find all the solutions of the system
y^2 = x^3 - 3x^2 + 2x,
x^2 = y^3 - 3y^2 + 2y.

354.
Natural number k has n digits in its decimal notation.  It was rounded
up to tens, then the obtained number was rounded up to hundreds, and so
on (n-1) times.  Prove that The obtained number m satisfies inequality
m < 18*k/13.  (Examples of rounding: 191->190->200;  135->140->100.)

355.
The point D is the middle of the [AB] side of the ABC triangle.  The
points E and F belong to [AC] and [BC] respectively.
Prove that the DEF triangle area does not exceed the sum of the ADE and
BDF triangles areas.

356.
The sequences a_n and b_n members are the last digits of
[(sqrt(10))^n] and [(sqrt(2))^n] respectively (here [] denotes
the whole part of a number). Are those sequences periodical?

357.
Two acute angles a and b satisfy condition
(sin(a))^2 + (sin(b))^2 = sin(a+b).
Prove that a + b = pi/2.

358.
The points A_1,B_1,C_1,D_1 and A_2,B_2,C_2,D_2 are orthogonal
projections of the ABCD tetrahedron vertices on two planes.
Prove that it is possible to move one of the planes to provide
the parallelness of (A_1A_2), (B_1B_2), (C_1C_2) and (D_1D_2) lines.

359.
The pupil is training in the square equation solution.  Having the
recurrent equation solved, he stops, if it doesn't have two roots, or
solves the next equation, with the free coefficient equal to the
greatest root, the coefficient at x equal to the least root, and the
coefficient at x^2 equal to 1.  Prove that the process cannot be
infinite.  What maximal number of the equations he will have to solve?

360.
Given natural n,m,k. It is known that m^n is divisible by n^m; and n^k
is divisible by k^n.  Prove that m^k is divisible by k^m.

361.
The Abba tribe language alphabet contains two letters only.
Not a word of this language is a beginning of another word.
Can this tribe vocabulary contain 3 four-letter, 10 five-letter,
30 six-letter and 5 seven-letter words?

362.
Can You fill the squares of the infinite cross-lined paper with
integers so, that the sum of the numbers in every 4x6 fields rectangle
would be
a) 10?
b) 1?

363.
The points A_1,B_1,C_1 belong to [BC],[CA],[AB] sides of the ABC
triangle respectively. The [AA_1], [BB_1], [CC_1] segments
split the ABC onto 4 smaller triangles and 3 quadrangles.
It is known, that the smaller triangles have the same area.
Prove that the quadrangles have equal areas. What is the
quadrangle area, it the small triangle has the unit area?

364.
The kindergarten group is standing in the column of pairs.  The number
of boys equals the number of girls in each of the two columns. The
number of mixed (boy and girl) pairs equals to the number of the rest
pairs.  Prove that the total number of children in the group is
divisible by eight.

365.
One side of the rectangle is 1cm. It is known that the rectangle can be
divided by two orthogonal lines onto four rectangles, and each of the
smaller rectangles has the area not less than 1 square centimetre, and
one of them is not less than 2 square centimetres.
What is the least possible length of another side of big rectangle?

366.
Given a point O inside ABC triangle. Prove that
S_A*[OA) + S_B*[OB) + S_C[OC) = [OO),
where S_A, S_B, S_C denote BOC, COA, AOB triangles areas respectively
( [AB) denotes vector from A to B , [OO) -- zero vector).

367.
Given (2m+1) different integers, each absolute value is not greater
than (2m-1). Prove that it is possible to choose three numbers among
them, with their sum equal to zero.

368.
The points D,E,F belong to the sides ]AB[, ]BC[ and ]CA[ of the ABC
triangle respectively (but they are not vertices). Let us denote with
d_0, d_1, d_2, and d_3 the maximal side length of the DEF, DEA, DBF,
CEF, triangles respectively.  Prove that
d_0 >= (sqrt(3)/2) min{d_1, d_2, d_3}.  When the equality takes place?

369.
The M set consists of k non-intersecting segments on the line.  It is
possible to put an arbitrary segment shorter than 1cm on the line in
such a way, that his ends will belong to M.  Prove that the total sum
of the segment lengths is not less than 1/k cm.

370.
The infinite decimal notation of the real number x contains all the
digits. Let v_n be the number of different n-digit segments encountered
in x notation.  Prove that if for some n  v_n <= (n+8), than x is a
rational number.


The 18-th competition -- Ashkhabad, 1984.

  form        first day                    second day
    8  371   372   373   374  | 383   384   385   386
    9  375   376   377   378  | 387   388   389   390
   10  379   380   381   382  | 391   392   393   394

371.
a) The product of n integers equals n, and their sum is zero.
   Prove that n is divisible by 4.
b) Let n is divisible by 4.
   Prove that there exist n integers such, that their product
   equals n, and their sum is zero.

372.
Prove that every positive a and b satisfy inequality
((a+b)^2)/2 + (a+b)/4 >= a*sqrt(b) + b*sqrt(a).

373.
Given two equilateral triangles A_1B_1C_1 and A_2B_2C_2 in the plane.
(The vertices are mentioned counterclockwise.) We draw vectors [OA[,
[OB[, [OC[, from the arbitrary point O, equal to [A_1A_2[, [B_1B_2[,
[C_1C_2[ respectively.  Prove that the triangle ABC is equilateral.

374.
Given four colours and enough square plates 1x1. We have to paint four
edges of every plate with four different colours and combine plates,
putting them with the edges of the same colour together.
Describe all the pairs m,n, such that we can combine those plates in a
nxm rectangle, that has every edge of one colour, and its four edges
have different colours.

375.
Prove that every positive x,y and real a satisfy inequality
x^((sin a)^2) * y^((cos a)^2) < x + y.

376.
Given a cube and two colours. Two players paint in turn a triple of
arbitrary unpainted edges with his colour. (Everyone makes two moves.)
The first wins if he has painted all the edges of an arbitrary face
with his colour. Can he always win?

377.
n natural numbers (n>3) are written on the circumference. The relation
of the two neighbours sum to the number itself is a whole number.
Prove that the sum of those relations is
a) not less than 2n;
b) less than 3n.

378.
The circle with the centre O is inscribed in the ABC triangle.  The
circumference touches its sides [BC], [CA], [AB] in A_1, B_1, C_1
points respectively. The [AO], [BO], [CO] segments cross the
circumference in A_2, B_2, C_2 points respectively.
Prove that (A_1A_2),(B_1B_2) and (C_1C_2) lines intersect in one point.

379.
Find integers m and n such that (5 + 3 sqrt(2))^m = (3 + 5 sqrt(2))^n.

380.
n real numbers are written in increasing order in a line.  The same
numbers are written in the second line below in unknown order.  The
third line contains the sums of the pairs of numbers above from two
previous lines. It comes out, that the third line is arranged in
increasing order.
Prove that the second line coincides with the first one.

381.
Given ABC triangle. From the P point three lines (PA),(PB),(PC) are
drawn. They cross the outscribed circumference in A_1, B_1,C_1 points
respectively. It comes out that the A_1B_1C_1 triangle equals to the
initial one.
Prove that there are not more than eight such a points P in a plane.

382.
Positive x,y,z satisfy a system
x^2 + xy + (y^2)/3 = 25;
     (y^2)/3 + z^2 = 9;
    z^2 + zx + x^2 = 16.
Find the value of (xy + 2yz + 3zx) expression.

383.
The teacher wrote on a blackboard:  " x^2 + 10x + 20 " Then all the
pupils in the class came up in turn and either decreased or increased
by 1 either the free coefficient or the coefficient at x, but not both.
Finally they have obtained:  " x^2 + 20x + 10 ".
Is it true that some time during the process there was written the
square polynomial with the integer roots?

384.
The centre of the coin with radius r is moved along some polygon with
the perimeter P, that is outscribed around the circle with radius R
(R>r).  Find the coin trace area (a sort of polygon ring).

385.
There are scales and (n+1) weights with the total weight 2n.  Each
weight weight is an integer. We put all the weights in turn on the
lighter side of the scales, starting from the heaviest one, and if the
scales is in equilibrium -- on the left side.  Prove that when all the
weights will be put on the scales, they will be in equilibrium.

386.
Let us call "absolutely prime" the prime number, if having transposed
its digits in an arbitrary order, we obtain prime number again.  Prove
that its notation cannot contain more than three different digits.

387.
The x and y figures satisfy a condition: for every n>=1 the number
xx...x6yy...y4 (n times x and n times y) is an exact square.
Find all possible x and y.

388.
The A,B,C and D points (from left to right) belong to the straight line.
Prove that every point E, that doesn't belong to the line satisfy:
|AE| + |ED| + | |AB| - |CD| | > |BE| + |CE|.

389.
Give a sequence {x_n}. x_1 = x_2 = 1. x_{n+2} = (x_{n+1})^2 - {x_n}/2.
Prove that the sequence has limit and find it.

390.
The white fields of 1983x1984 chess-board are filled with either +1
or -1. For every black field, the product of neighbouring numbers is +1.
Prove that all the numbers are +1.

391.
The white fields of 3x3 chess-board are filled with either +1 or -1.
For every field, let us calculate the product of neighbouring numbers.
Then let us change all the numbers by the respective products.
Prove that we shall obtain only +1's, having repeated this operation
finite number of times.

392.
What is more 2/201 or ln(101/100)? (No differential calculus allowed).

393.
Given three circles c_1,c_2,c_3 with r_1,r_2,r_3 radiuses, r_1 > r_2;
r_1 > r_3. Each lies outside of two others. The A point -- an
intersection of the outer common tangents to c_1 and c_2 -- is outside
c_3. The B point -- an intersection of the outer common tangents to c_1
and c_3 -- is outside c_2. Two pairs of tangents -- from A to c_3 and
from B to c_2 -- are drawn.  Prove that the quadrangle, they make, is
outscribed around some circle and find its radius.

394.
Prove that every cube's cross-section, containing its centre,
has the area not less then its face's area.


The 19-th competition -- Mogilev, 1985.

  form        first day                    second day
    8  395   396   397   398  | 407   408   409   410
    9  399   400   401   402  | 411   410   412   413
   10  403   404   405   406  | 414   415   416   417

395.
Two perpendiculars are drawn from the middles of each side of the
acute-angle triangle to two other sides. Those six segments make
hexagon.  Prove that the hexagon area is a half of the triangle area.

396.
Is there any number n, such that the sum of its digits in the decimal
notation is 1000, and the sum of its square digits in the decimal
notation is 1000000?

397.
What maximal number of the dames (? Am I right? The checker
turns into a dame, when it reaches the last row? ) can be
put on the chess-board 8x8 so, that every dame can be taken
by at least one other dame?

398.
You should paint all the sides and diagonals of the right n-angle so,
that every pair of segments, having the common point, would be painted
with different colours.  How many colours will You require?

399.
Given a straight line and the point O out of the line.  Prove that it
is possible to move an arbitrary point A in the same plane to the O
point, using only rotations around O and symmetry with respect to the l.

400.
The senior coefficient a in the square polynomial
P(x) = ax^2 +  bx + c   is more than 100. What is the maximal
number of integer values of x, such that |P(x)|<50?

401.
Different natural numbers a,b,...,k       k
are written in the diagram. Every         |
number in the diagram equals to           V
the sum of two numbers at the        h--->i
beginning of two arrows,             |    |
leading to the number.               V    V
What is the minimal             e--->f--->g
possible value of d?            |    |    |
                                V    V    V
                          a---->b--->c--->d
402.
Given unbounded strictly increasing sequence a_1, a_2, ... , a_n, ...
of positive numbers. Prove that
a) there exists a number k_0 such that for all k>k_0 the following
   inequality is valid:
    a_1/a_2 + a_2/a_3 + ... + a_k/a_{k-1} < k - 1
b) there exists a number k_0 such that for all k>k_0 the following
   inequality is valid:
    a_1/a_2 + a_2/a_3 + ... + a_k/a_{k-1} < k - 1985

403.
Find all the pairs (x,y) such that |sin(x)-sin(y)| + sin(x)sin(y) <= 0.

404.
The convex pentagon ABCDE _was_ drawn in the plane.
A_1 was symmetric to A with respect to B.
B_1 was symmetric to B with respect to C.
C_1 was symmetric to C with respect to D.
D_1 was symmetric to D with respect to E.
E_1 was symmetric to E with respect to A.
How is it possible to restore the initial pentagon with the
compass and ruler, knowing A_1,B_1,C_1,D_1,E_1 points?

405.
The sequence a_1, a_2, ... , a_k, ... is built according to the rules:
a_{2n} = a_n;  a_{4n+1} = 1;  a_{4n+3} = 0.
Prove that it is non-periodical sequence.

406.
n straight lines are drawn in a plane. They divide the plane onto
several parts. Some of the parts are painted. Not a pair of painted
parts has non-zero length common bound.
Prove that the number of painted parts is not more than (n^2 + n)/3.

407.
Given a cube, a cubic box, that exactly suits for the cube, and six
colours. First man paints each side of the cube with its (side's)
unique colour. Another man does the same with the box.
Prove that the third man can put the cube in the box in such a way,
that every cube side will touch the box side of different colour.

408.
The [A_0A_5] diameter divides a circumference with the O centre onto
two hemicircumferences. One of them is divided onto five equal arcs
A_0A_1, A_1A_2, A_2A_3, A_3A_4, A_4A_5. The (A_1A_4) line crosses
(OA_2) and (OA_3) lines in M and N points.
Prove that (|A_2A_3| + |MN|) equals to the circumference radius.

409.
If there are four numbers (a,b,c,d) in four registers of the
calculating machine, they turn into (a-b,b-c,c-d,d-a) numbers whenever
You press the button.  Prove that if not all the initial numbers are
equal, machine will obtain at least one number more than 1985 after
some number of the operations.

410.
Numbers 1,2,3,...,2n are divided onto two equal groups.  Let
a_1,a_2,...,a_n be the first group numbers in the increasing order, and
b_1,b_2,...,b_n -- the second group numbers in the decreasing order.
Prove that |a_1 - b_1| + |a_2 - b_2| + ... + |a_n - b_n| = n^2.

411.
The parallelepiped is constructed of the equal cubes. Three
parallelepiped faces, having the common vertex are painted.
Exactly half of all the cubes have at least one face painted.
What is the total number of the cubes?

412.
One of two circumferences of radius R comes through A and B
vertices of the ABCD parallelogram. Another comes through
B and D. Let M be another point of circumferences intersection.
Prove that the circle outscribed around AMD triangle has radius R.

413.
Given right hexagon. The lines parallel to all the sides are drawn from
all the vertices and middles of the sides (consider only the interior,
with respect to the hexagon, parts of those lines).  Thus the hexagon
is divided onto 24 triangles, and the figure has 19 nodes. 19 different
numbers are written in those nodes.  Prove that at least 7 of 24
triangles have the property:  the numbers in its vertices increase
(from the least to the greatest) counterclockwise.

414.
Solve the equation ("2" encounters 1985 times):
                x
--------------------------------- = 1
                  x
2 + -----------------------------

    2 + ........................

                          x
              2 + ---------------
                  1 + sqrt(1 + x)

415.
All the points situated more close than 1cm to ALL the vertices of
the right pentagon with 1cm side, are deleted from that pentagon.
Find the area of the remained figure.

416.
Given big enough sheet of cross-lined paper with the side of the squares
equal to 1. We are allowed to cut it along the lines only. Prove that
for every m>12 we can cut out a rectangle of the greater than m area
such, that it is impossible to cut out a rectangle of m area from it.

417.
The ABCDA_1B_1C_1D_1 cube has unit length edges.
Find the distance between two circumferences, one of those is inscribed
into the ABCD base, and another comes through A,C and B_1 points.


The 20-th competition -- Ulyanovsk, 1986.

  form        first day                    second day
    8  418   419   420   421  | 430   431   432   433
    9  422   423   424   425  | 434   433b  435   436
   10  426   427   428   429  | 437   438   439   440

418.
The square polynomial x^2 + ax + b + 1 has natural roots.
Prove that (a^2 + b^2) is a composite number.

419.
Two equal squares, one with red sides, another with blue ones, give an
octagon in intersection.  Prove that the sum of red octagon sides
lengths is equal to the sum of blue octagon sides lengths.

420.
The point M belongs to the [AC] side of the acute-angle triangle ABC.
Two circles are outscribed around ABM and BCM triangles.  What M
position corresponds to the minimal area of those circles intersection?

421.
Certain king of a certain state wants to build n cities and n-1 roads,
connecting them to provide a possibility to move from every city to
every city. (Each road connects two cities, the roads do not intersect,
and don't come through another city.) He wants also, to make the
shortests distances between the cities, along the roads, to be
1,2,3,...,n(n-1)/2 kilometres.  Is it possible for
a) n=6;
b) n=1986?

422.
Prove that it is impossible to draw a convex quadrangle, with one
diagonal equal to doubled another, the angle between them 45 degrees,
on the coordinate plane, so, that all the vertices' coordinates would
be integers.

423.
Prove that the rectangle mxn table can be filled with exact squares so,
that the sums in the rows and the sums in the columns will be exact
squares also.

424.
Two circumferences, with the distance d between centres, intersect in
P and Q points. Two lines are drawn through the A point on the
first circumference (Q<>A<>P) and P and Q points. They intersect the
second circumference in the B and C points.
a) Prove that the radius of the circle, outscribed around the ABC
   triangle, equals d.
b) Describe the set of the new circle's centres, if the A point moves
   along all the first circumference.

425.
Given right hexagon. Each side is divided onto 1000 equal segments.
All the points of division are connected with the segments, parallel to
sides. Let us paint in turn the triples of unpainted nodes of obtained
net, if they are vertices of the unilateral triangle, doesn't matter of
what size an orientation. Suppose, we have managed to paint all the
vertices except one.
Prove that the unpainted node is not a hexagon vertex.

426.
Find all the natural numbers equal to the square of its divisors number.

427.
Prove that the following inequality holds for all positive {a_i}.
1/a_1 + 2/(a_1+a_2) + ... + n/(a_1+...+a_n) < 4(1/a_1 + ... + 1/a_n)

428.
A line is drawn through the A vertex of ABC triangle with |AB|<>|AC|.
Prove that the line can not contain more than one point M such, that
M is not a triangle vertex, and the angles ABM abd ACM are equal.
What lines do not contain such a point M at all?

429.
A cube with edge of length n (n>=3) consists of n^3 unit cubes.
Prove that it is possible to write different n^3 integers on all the
unit cubes to provide the zero sum of all integers in the every row
parallel to some edge.

430.
The decimal notation of three natural numbers consists of equal digits:
n digits x for a, n digits y for b and 2n digits z for c.
For every n > 1 find all the possible triples of digits x,y,z such,
that a^2 + b = c.

431.
Given two points inside a convex dodecagon (twelve sides) situated
10cm far from each other.
Prove that the difference between the sum of distances, from the
point to all the vertices, is less than 1m for those points.

432.
Given 30 equal cups with milk. An elf tries to make the amount of milk
equal in all the cups. He takes a pair of cups and aligns the milk
level in two cups.  Can there be such an initial distribution of milk
in the cups, that the elf will not be able to achieve his goal in a
finite number of operations?

433.
Find the relation of the black part length and the white part length
for the main diagonal of the
a) 100x99 chess-board;
b) 101x99 chess-board.

434.
Given right n-angle A_1A_2...A_n. Prove that if
a) n is even number, than for the arbitrary point M in the plane,
   it is possible to choose signs in an expression
     +-[MA_1[ +-[MA_2[ +- ... +-[MA_n[
   to make it equal to the zero vector (here [MA[ denotes vector).
b) n is odd, than the abovementioned expression equals to the zero
   vector for the finite set of M points only.

435.
All the fields of a square nxn (n>2) table are filled with +1 or -1
according to the rules:
At the beginning -1 are put in all the boundary fields.
The number put in the field in turn (the field is chosen arbitraryly)
equals to the product of the closest, from the different sides, numbers
in its row or in its column.
a) What is the minimal
b) What is the maximal
possible number of +1 in the obtained table?

436.
Prove that for every natural n the following inequality is valid:
|sin 1| + |sin 2| + |sin(3n-1)| + |sin(3n)| > 8n/5.

437.
Prove that the sum of all numbers representable as 1/(mn), where
m,n -- natural numbers, 1 <= m < n <= 1986;  is not an integer.

438.
A triangle and a square are outscribed around the unit circle.
Prove that the intersection area is more than 3.4.
Is it possible to assert that it is more than 3.5?

439.
Let us call a polynomial "admissible" if all it's coefficients are 0,
1, 2 or 3. For given n find the number of all the admissible
polynomials P such, that P(2) = n.

440.
Consider all the tetrahedrons AXBY, outscribed around the sphere.  Let
A and B points be fixed.  Prove that the sum of angles in the non-plane
quadrangle AXBY doesn't depend on X and Y points.


The 21-st competition -- Frunze, 1987.

  form        first day                    second day
    8  441   442   443   444  | 452   453   454   455
    9  445   446a  447   448  | 456   457   458   459
   10  449   450   451   446b | 455   460   461   462

441.
Ten sportsmen have taken part in a table-tennis tournament (each pair
has met once only, no draws). Let x_i be the number of i-th player
victories, y_i -- losses.
Prove that {x_1}^2 + ... + {x_10}^2 = {y_1}^2 + ... + {y_10}^2

442.
It is known that, having 6 weighs, it is possible to balance the scales
with loads, which weights are successing natural numbers from 1 to 63.
Find all such sets of weighs.

443.
Given right heptagon (7-angle) A_1...A_7.
Prove that 1/|A_1A_5| + 1/|A_1A_3| = 1/|A_1A_7|.

444.
The "Sea battle" game.
a) You are trying to find the 4-field ship -- a rectangle 1x4, situated
   on the 7x7 playing board. You are allowed to ask a question, whether
   it occupies the particular field or not.  How many questions is it
   necessary to ask to find that ship surely?
b) The same question, but the ship is a connected (i.e. its fields have
   common sides) set of 4 fields.

445.
Prove that (1^{1987} + 2^{1987} + ... + n^{1987}) is divisible by (n+2).

446.
+--+   a) How many such a figures can You put on a 8x8 board without
|  |      intersections?
+--+--+   b) An arbitrary field is cut out of a 1987x1987 board.
|  |  |      Prove that the reminding part of the board can be always
+--+--+      cut on such parts.

447.
Three lines are drawn parallel to the sides of the triangles in the
opposite to the vertex, not belonging to the side, part of the plane.
The distance from each side to the corresponding line equals the length
of the side. Prove that six intersection points of those lines with
the continuations of the sides are situated on one circumference.

448.
Given two closed broken lines in the plane with odd numbers of edges.
All the lines, containing those edges are different, and not a triple
of them intersects in one point.
Prove that it is possible to chose one edge from each line such, that
the chosen edges will be the opposite sides of a convex quadrangle.

449.
Find a set of five different relatively prime natural numbers such,
that the sum of an arbitrary subset is a composite number.

450.
Given a convex pentagon. The angles ABC and ADE are equal. The angles
AEC and ADB are equal too.
Prove that the angles BAC and DAE are equal also.

451.
Prove such a, that all the numbers cos a, cos 2a, cos 4a, ... ,
cos((2^n)a) are negative.

452.
The positive numbers a,b,c,A,B,C satisfy a condition
a + A = b + B = c + C = k.
Prove that aB + bC + cA <= k^2.

453.
Each field of the 1987x1987 board is filled with numbers, which
absolute value is not greater than one. The sum of all the numbers
in every 2x2 square equals 0.
Prove that the sum of all the numbers is not greater than 1987.

454.
The B vertex of the ABC angle lies out the circle, and the [BA) and
[BC) beams intersect it. The K point belongs to the intersection of the
[BA) beam and the circumference. The KP chord is orthogonal to the
angle ABC bisector. The (KP) line intersects the BC beam in the M
point.  Prove that the [PM] segment is twice as long as the distance
from the circle centre to the angle ABC bisector.

455.
Two players are writting in turn natural numbers not exceeding p.
The rules forbid to write the divisors of the numbers already having
been written. Those who cannot make his move looses.
a) Who, and how, can win if p=10?
b) Who wins if p=1000?

456.
Every evening uncle Chernomor (see Pushkin's tales) appoints either
9 or 10 of his 33 "knights" /* let's call them so */ in the "night
guard" /* let's call it so */. When it can happen, for the first time,
that every knight has been on duty the same number of times?

457.
Some points with the integer coordinates are marked on the coordinate
plane. Given a set of nonzero vectors. It is known, that if You apply
the beginnings of those vectors to the arbitrary marked point, than
there will be more marked ends of the vectors, than not marked.
Prove that there is infinite number of marked points.

458.
The convex n-angle (n>=5) is cut along all its diagonals.
Prove that there are at least a pair of parts with the different areas.

459.
The T_0 set consists of all the numbers, representable as (2^k)!,
k = 0, 1, 2, ... , n, ... The T_m set is obtained from T_{m-1} by
adding all the finite sums of different numbers, that belong to T_{m-1}.
Prove that there is a natural number, that doesn't belong to T_{1987}.

460.
The plot of the y=f(x) function, being rotated by the (right) angle
around the (0,0) point is not changed.
a) Prove that the equation f(x)=x has the unique solution.
b) Give an example of such a function.

461.
All the faces of a convex polyhedron are the triangles.
Prove that it is possible to paint all its edges in red and blue colour
in such a way, that it is possible to move from the arbitrary vertex
to every vertex along the blue edges only and along the red edges only.

462.
Prove that for every natural n the following inequality is held:
(2n + 1)^n >= (2n)^n + (2n - 1)^n.


From the Holy Land, with respect
 /\ /\   Vladimir A. Pertsel            S/W  engineer
((ovo))        E-mail:           \|/   Sagantec Israel
():::() voldemar@sagantec.co.il (o o) tel.972-4-8572781
--PVA------------------------ooO-(_)-Ooo------------------ 
  an ancestor of mine by the name of Noah was once the 
 commanding admiral of the combined fleets of my planet.
[[Introduction]]
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactively select/export tiddlers to a separate file|
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2011.02.14 2.9.6 fix OSX error: use picker.file.path
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 0.0.0 development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 9, revision: 6, date: new Date(2011,2,14)};

// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';

// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
	config.tasks.exportTask = {
		text:'export',
		tooltip:'Export selected tiddlers to another file',
		content:'<<exportTiddlers inline>>'
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}

config.macros.exportTiddlers = {
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'export tiddlers',
	prompt: 'Copy selected tiddlers to an export document',
	okmsg: '%0 tiddler%1 written to %2',
	failmsg: 'An error occurred while creating %1',
	overwriteprompt: '%0\ncontains %1 tiddler%2 that will be discarded or replaced',
	mergestatus: '%0 tiddler%1 added, %2 tiddler%3 updated, %4 tiddler%5 unchanged',
	statusmsg: '%0 tiddler%1 - %2 selected for export',
	newdefault: 'export.html',
	datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss',  // for 'filter date/time' edit fields
	type_TW: "tw", type_PS: "ps", type_TX: "tx", type_CS: "cs", type_NF: "nf", // file type tokens
	type_map: { // maps type param to token values
		tiddlywiki:"tw", tw:"tw", wiki: "tw",
		purestore: "ps", ps:"ps", store:"ps",
		plaintext: "tx", tx:"tx", text: "tx",
		comma:     "cs", cs:"cs", csv:  "cs",
		newsfeed:  "nf", nf:"nf", xml:  "nf", rss:"nf"
	},
	handler: function(place,macroName,params) {
		if (params[0]!='inline')
			{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
		var panel=this.createPanel(place);
		panel.style.position='static';
		panel.style.display='block';
	},
	createPanel: function(place) {
		var panel=this.$('exportPanel');
		if (panel) { panel.parentNode.removeChild(panel); }
		setStylesheet(store.getTiddlerText('ExportTiddlersPlugin##css',''),'exportTiddlers');
		panel=createTiddlyElement(place,'span','exportPanel',null,null)
		panel.innerHTML=store.getTiddlerText('ExportTiddlersPlugin##html','');
		this.initFilter();
		this.refreshList(0);
		var fn=this.$('exportFilename');
		if (window.location.protocol=='file:' && !fn.value.length) {
			// get new target path/filename
			var newPath=getLocalPath(window.location.href);
			var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\'); 
			if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
			fn.value=newPath+this.newdefault;
		}
		return panel;
	},
	togglePanel: function(e) { var e=e||window.event;
		var cme=config.macros.exportTiddlers; // abbrev
		var parent=resolveTarget(e).parentNode;
		var panel=cme.$('exportPanel');
		if (panel==undefined || panel.parentNode!=parent)
			panel=cme.createPanel(parent);
		var isOpen=panel.style.display=='block';
		if(config.options.chkAnimate)
			anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,'none'));
		else
			panel.style.display=isOpen?'none':'block' ;
		if (panel.style.display!='none') {
			cme.refreshList(0);
			cme.$('exportFilename').focus(); 
			cme.$('exportFilename').select();
		}
		e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
	},
	process: function(which) { // process panel control interactions
		var theList=this.$('exportList'); if (!theList) return false;
		var count = 0;
		var total = store.getTiddlers('title').length;
		switch (which.id) {
			case 'exportFilter':
				count=this.filterExportList();
				var panel=this.$('exportFilterPanel');
				if (count==-1) { panel.style.display='block'; break; }
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
				break;
			case 'exportStart':
				this.go();
				break;
			case 'exportDelete':
				this.deleteTiddlers();
				break;
			case 'exportHideFilter':
			case 'exportToggleFilter':
				var panel=this.$('exportFilterPanel')
				panel.style.display=(panel.style.display=='block')?'none':'block';
				break;
			case 'exportSelectChanges':
				var lastmod=new Date(document.lastModified);
				for (var t = 0; t < theList.options.length; t++) {
					if (theList.options[t].value=='') continue;
					var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
					theList.options[t].selected=(tiddler.modified>lastmod);
					count += (tiddler.modified>lastmod)?1:0;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) alert('There are no unsaved changes');
				break;
			case 'exportSelectAll':
				for (var t = 0; t < theList.options.length; t++) {
					if (theList.options[t].value=='') continue;
					theList.options[t].selected=true;
					count += 1;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,count);
				break;
			case 'exportSelectOpened':
				for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
				var tiddlerDisplay=this.$('tiddlerDisplay');
				for (var t=0; t<tiddlerDisplay.childNodes.length;t++) {
					var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
					for (var i=0; i<theList.options.length; i++) {
						if (theList.options[i].value!=tiddler) continue;
						theList.options[i].selected=true; count++; break;
					}
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) alert('There are no tiddlers currently opened');
				break;
			case 'exportSelectRelated':
				// recursively build list of related tiddlers
				function getRelatedTiddlers(tid,tids) {
					var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
					tids.push(t.title);
					if (!t.linksUpdated) t.changed();
					for (var i=0; i<t.links.length; i++)
						if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
					return tids;
				}
				// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
				var tids=[];
				for (var i=0; i<theList.options.length; i++)
					if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
				// select related tiddlers (includes original selected tiddlers)
				for (var i=0; i<theList.options.length; i++)
					theList.options[i].selected=tids.contains(theList.options[i].value);
				this.displayStatus(tids.length,total);
				break;
			case 'exportListSmaller':	// decrease current listbox size
				var min=5;
				theList.size-=(theList.size>min)?1:0;
				break;
			case 'exportListLarger':	// increase current listbox size
				var max=(theList.options.length>25)?theList.options.length:25;
				theList.size+=(theList.size<max)?1:0;
				break;
			case 'exportClose':
				this.$('exportPanel').style.display='none';
				break;
		}
		return false;
	},
	displayStatus: function(count,total) {
		var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
		clearMessage();	displayMessage(txt);
		return txt;
	},
	refreshList: function(selectedIndex) {
		var theList = this.$('exportList'); if (!theList) return;
		// get the sort order
		var sort;
		if (!selectedIndex)   selectedIndex=0;
		if (selectedIndex==0) sort='modified';
		if (selectedIndex==1) sort='title';
		if (selectedIndex==2) sort='modified';
		if (selectedIndex==3) sort='modifier';
		if (selectedIndex==4) sort='tags';

		// unselect headings and count number of tiddlers actually selected
		var count=0;
		for (var t=5; t < theList.options.length; t++) {
			if (!theList.options[t].selected) continue;
			if (theList.options[t].value!='')
				count++;
			else { // if heading is selected, deselect it, and then select and count all in section
				theList.options[t].selected=false;
				for ( t++; t<theList.options.length && theList.options[t].value!=''; t++) {
					theList.options[t].selected=true;
					count++;
				}
			}
		}

		// disable 'export' and 'delete' buttons if no tiddlers selected
		this.$('exportStart').disabled=(count==0);
		this.$('exportDelete').disabled=(count==0);

		// show selection count
		var tiddlers = store.getTiddlers('title');
		if (theList.options.length) this.displayStatus(count,tiddlers.length);

		// if a [command] item, reload list... otherwise, no further refresh needed
		if (selectedIndex>4) return;

		// clear current list contents
		while (theList.length > 0) { theList.options[0] = null; }
		// add heading and control items to list
		var i=0;
		var indent=String.fromCharCode(160)+String.fromCharCode(160);
		theList.options[i++]=
			new Option(tiddlers.length+' tiddlers in document', '',false,false);
		theList.options[i++]=
			new Option(((sort=='title'   )?'>':indent)+' [by title]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='modified')?'>':indent)+' [by date]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='modifier')?'>':indent)+' [by author]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='tags'    )?'>':indent)+' [by tags]', '',false,false);

		// output the tiddler list
		switch(sort) {
			case 'title':
				for(var t = 0; t < tiddlers.length; t++)
					theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
				break;
			case 'modifier':
			case 'modified':
				var tiddlers = store.getTiddlers(sort);
				// sort descending for newest date first
				tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
				var lastSection = '';
				for(var t = 0; t < tiddlers.length; t++) {
					var tiddler = tiddlers[t];
					var theSection = '';
					if (sort=='modified') theSection=tiddler.modified.toLocaleDateString();
					if (sort=='modifier') theSection=tiddler.modifier;
					if (theSection != lastSection) {
						theList.options[i++] = new Option(theSection,'',false,false);
						lastSection = theSection;
					}
					theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
				}
				break;
			case 'tags':
				var theTitles = {}; // all tiddler titles, hash indexed by tag value
				var theTags = new Array();
				for(var t=0; t<tiddlers.length; t++) {
					var title=tiddlers[t].title;
					var tags=tiddlers[t].tags;
					if (!tags || !tags.length) {
						if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
						theTitles['untagged'].push(title);
					}
					else for(var s=0; s<tags.length; s++) {
						if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
						theTitles[tags[s]].push(title);
					}
				}
				theTags.sort();
				for(var tagindex=0; tagindex<theTags.length; tagindex++) {
					var theTag=theTags[tagindex];
					theList.options[i++]=new Option(theTag,'',false,false);
					for(var t=0; t<theTitles[theTag].length; t++)
						theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
				}
				break;
			}
		theList.selectedIndex=selectedIndex; // select current control item
		this.$('exportStart').disabled=true;
		this.$('exportDelete').disabled=true;
		this.displayStatus(0,tiddlers.length);
	},
	askForFilename: function(here) {
		var msg=here.title; // use tooltip as dialog box message
		var path=getLocalPath(document.location.href);
		var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\'); 
		if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
		var filetype=this.$('exportFormat').value.toLowerCase();
		var defext='html';
		if (filetype==this.type_TX) defext='txt';
		if (filetype==this.type_CS) defext='csv';
		if (filetype==this.type_NF) defext='xml';
		var file=this.newdefault.replace(/html$/,defext);
		var result='';
		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.modeSave);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension=defext;
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
				if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XPSP2 IE only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|XML files|*.xml|';
				s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) {  // fallback
				var result=prompt(msg,path+file);
			}
		}
		return result;
	},
	initFilter: function() {
		this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
		this.$('exportFilterEnd').checked=false;  this.$('exportEndDate').value='';
		this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
		this.$('exportFilterText').checked=false; this.$('exportText').value='';
		this.showFilterFields();
	},
	showFilterFields: function(which) {
		var show=this.$('exportFilterStart').checked;
		this.$('exportFilterStartBy').style.display=show?'block':'none';
		this.$('exportStartDate').style.display=show?'block':'none';
		var val=this.$('exportFilterStartBy').value;
		this.$('exportStartDate').value
			=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
		if (which && (which.id=='exportFilterStartBy') && (val=='other'))
			this.$('exportStartDate').focus();

		var show=this.$('exportFilterEnd').checked;
		this.$('exportFilterEndBy').style.display=show?'block':'none';
		this.$('exportEndDate').style.display=show?'block':'none';
		var val=this.$('exportFilterEndBy').value;
		this.$('exportEndDate').value
			=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
		 if (which && (which.id=='exportFilterEndBy') && (val=='other'))
			this.$('exportEndDate').focus();

		var show=this.$('exportFilterTags').checked;
		this.$('exportTags').style.display=show?'block':'none';

		var show=this.$('exportFilterText').checked;
		this.$('exportText').style.display=show?'block':'none';
	},
	getFilterDate: function(val,id) {
		var result=0;
		switch (val) {
			case 'file':
				result=new Date(document.lastModified);
				break;
			case 'other':
				result=new Date(this.$(id).value);
				break;
			default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
				var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
				var oneday=86400000;
				if (id=='exportStartDate')
					result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
				else
					result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
				break;
		}
		return result;
	},
	filterExportList: function() {
		var theList  = this.$('exportList'); if (!theList) return -1;
		var filterStart=this.$('exportFilterStart').checked;
		var val=this.$('exportFilterStartBy').value;
		var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
		var filterEnd=this.$('exportFilterEnd').checked;
		var val=this.$('exportFilterEndBy').value;
		var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
		var filterTags=this.$('exportFilterTags').checked;
		var tags=this.$('exportTags').value;
		var filterText=this.$('exportFilterText').checked;
		var text=this.$('exportText').value;
		if (!(filterStart||filterEnd||filterTags||filterText)) {
			alert('Please set the selection filter');
			this.$('exportFilterPanel').style.display='block';
			return -1;
		}
		if (filterStart&&filterEnd&&(startDate>endDate)) {
			var msg='starting date/time:\n'
			msg+=startDate.toLocaleString()+'\n';
			msg+='is later than ending date/time:\n'
			msg+=endDate.toLocaleString()
			alert(msg);
			return -1;
		}
		// if filter by tags, get list of matching tiddlers
		// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
		// otherwise use getTaggedTiddlers() for simple tag matching
		if (filterTags) {
			var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
			var t=fn.apply(store,[tags]);
			var tagged=[];
			for (var i=0; i<t.length; i++) tagged.push(t[i].title);
		}
		// scan list and select tiddlers that match all applicable criteria
		var total=0;
		var count=0;
		for (var i=0; i<theList.options.length; i++) {
			// get item, skip non-tiddler list items (section headings)
			var opt=theList.options[i]; if (opt.value=='') continue;
			// get tiddler, skip missing tiddlers (this should NOT happen)
			var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; 
			var sel=true;
			if ( (filterStart && tiddler.modified<startDate)
			|| (filterEnd && tiddler.modified>endDate)
			|| (filterTags && !tagged.contains(tiddler.title))
			|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
				sel=false;
			opt.selected=sel;
			count+=sel?1:0;
			total++;
		}
		return count;
	},
	deleteTiddlers: function() {
		var list=this.$('exportList'); if (!list) return;
		var tids=[];
		for (i=0;i<list.length;i++)
			if (list.options[i].selected && list.options[i].value.length)
				tids.push(list.options[i].value);
		if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
			msg+='Removing this tiddler may cause unexpected results.  Are you sure?'
			if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		alert(tids.length+' tiddlers deleted');
		this.refreshList(0); // reload listbox
		store.notifyAll(); // update page display
	},
	go: function() {
		if (window.location.protocol!='file:') // make sure we are local
			{ displayMessage(config.messages.notFileUrlError); return; }
		// get selected tidders, target filename, target type, and notes
		var list=this.$('exportList'); if (!list) return;
		var tids=[]; for (var i=0; i<list.options.length; i++) {
			var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
			var tid=store.getTiddler(opt.value); if (!tid) continue;
			tids.push(tid);
		}
		if (!tids.length) return; // no tiddlers selected
		var target=this.$('exportFilename').value.trim();
		if (!target.length) {
			displayMessage('A local target path/filename is required',target);
			return;
		}
		var merge=this.$('exportMerge').checked;
		var filetype=this.$('exportFormat').value.toLowerCase();
		var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
		var total={val:0};
		var out=this.assembleFile(target,filetype,tids,notes,total,merge);
		if (!total.val) return; // cancelled file overwrite
		var link='file:///'+target.replace(/\\/g,'/');
		var samefile=link==decodeURIComponent(window.location.href);
		var p=getLocalPath(document.location.href);
		if (samefile) {
			if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
			if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
		}
		var ok=saveFile(target,out);
		displayMessage((ok?this.okmsg:this.failmsg).format([total.val,total.val!=1?'s':'',target]),link);
	},
	plainTextHeader:
		 'Source:\n\t%0\n'
		+'Title:\n\t%1\n'
		+'Subtitle:\n\t%2\n'
		+'Created:\n\t%3 by %4\n'
		+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
	plainTextTiddler:
		'- - - - - - - - - - - - - - -\n'
		+'|     title: %0\n'
		+'|   created: %1\n'
		+'|  modified: %2\n'
		+'| edited by: %3\n'
		+'|      tags: %4\n'
		+'- - - - - - - - - - - - - - -\n'
		+'%5\n',
	plainTextFooter:
		'',
	newsFeedHeader:
		 '<'+'?xml version="1.0"?'+'>\n'
		+'<rss version="2.0">\n'
		+'<channel>\n'
		+'<title>%1</title>\n'
		+'<link>%0</link>\n'
		+'<description>%2</description>\n'
		+'<language>en-us</language>\n'
		+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
		+'<pubDate>%3</pubDate>\n'
		+'<lastBuildDate>%3</lastBuildDate>\n'
		+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
		+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
	newsFeedTiddler:
		'\n%0\n',
	newsFeedFooter:
		'</channel></rss>',
	pureStoreHeader:
		 '<html><body>'
		+'<style type="text/css">'
		+'	#storeArea {display:block;margin:1em;}'
		+'	#storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
		+'	#pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
		+'</style>'
		+'<div id="pureStoreHeading">'
		+'	TiddlyWiki "PureStore" export file<br>'
		+'	Source'+': <b>%0</b><br>'
		+'	Title: <b>%1</b><br>'
		+'	Subtitle: <b>%2</b><br>'
		+'	Created: <b>%3</b> by <b>%4</b><br>'
		+'	TiddlyWiki %5 / %6 %7<br>'
		+'	Notes:<hr><pre>%8</pre>'
		+'</div>'
		+'<div id="storeArea">',
	pureStoreTiddler:
		'%0\n%1',
	pureStoreFooter:
		'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
	assembleFile: function(target,filetype,tids,notes,total,merge) {
		var revised='';
		var now = new Date().toLocaleString();
		var src=convertUnicodeToUTF8(document.location.href);
		var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
		var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
		var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
		var twver = version.major+'.'+version.minor+'.'+version.revision;
		var v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
		var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
		switch (filetype) {
			case this.type_TX: // plain text
				var header=this.plainTextHeader.format(headerargs);
				var footer=this.plainTextFooter;
				break;
			case this.type_CS: // comma-separated
				var fields={};
				for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
				var names=['title','created','modified','modifier','tags','text'];
				for (var f in fields) names.push(f);
				var header=names.join(',')+'\n';
				var footer='';
				break;
			case this.type_NF: // news feed (XML)
				headerargs[0]=store.getTiddlerText('SiteUrl','');
				var header=this.newsFeedHeader.format(headerargs);
				var footer=this.newsFeedFooter;
				break;
			case this.type_PS: // PureStore (no code)
				var header=this.pureStoreHeader.format(headerargs);
				var footer=this.pureStoreFooter;
				break;
			case this.type_TW: // full TiddlyWiki
			default:
				var currPath=getLocalPath(window.location.href);
				var original=loadFile(currPath);
				if (!original) { displayMessage(config.messages.cantSaveError); return; }
				var posDiv = locateStoreArea(original);
				if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
				var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
				var footer = '\n'+original.substr(posDiv[1]);
				break;
		}
		var out=this.getData(target,filetype,tids,fields,merge);
		var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
		// if full TW, insert page title and language attr, and reset all MARKUP blocks...
		if (filetype==this.type_TW) {
			var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
			revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
			revised=updateLanguageAttribute(revised);
			var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
			revised=updateMarkupBlock(revised,'PRE-HEAD',
				titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
			revised=updateMarkupBlock(revised,'POST-HEAD',
				titles.contains('MarkupPostHead')?'MarkupPostHead':null);
			revised=updateMarkupBlock(revised,'PRE-BODY',
				titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
			revised=updateMarkupBlock(revised,'POST-SCRIPT',
				titles.contains('MarkupPostBody')?'MarkupPostBody':null);
		}
		total.val=out.length;
		return revised;
	},
	getData: function(target,filetype,tids,fields,merge) {
		// output selected tiddlers and gather list of titles (for use with merge)
		var out=[]; var titles=[];
		var url=store.getTiddlerText('SiteUrl','');
		for (var i=0; i<tids.length; i++) {
			out.push(this.formatItem(store,filetype,tids[i],url,fields));
			titles.push(tids[i].title);
		}
		// if TW or PureStore format, ask to merge with existing tiddlers (if any)
		if (filetype==this.type_TW || filetype==this.type_PS) {
			var txt=loadFile(target);
			if (txt && txt.length) {
				var remoteStore=new TiddlyWiki();
				if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
				if (remoteStore.importTiddlyWiki(txt)) {
					var existing=remoteStore.getTiddlers('title');
					var msg=this.overwriteprompt.format([target,existing.length,existing.length!=1?'s':'']);
					if (merge) {
						var added=titles.length; var updated=0; var kept=0;
						for (var i=0; i<existing.length; i++)
							if (titles.contains(existing[i].title)) {
								added--; updated++;
							} else {
								out.push(this.formatItem(remoteStore,filetype,existing[i],url));
								kept++;
							}
						displayMessage(this.mergestatus.format(
							[added,added!=1?'s':'',updated,updated!=1?'s':'',kept,kept!=1?'s':'',]));
					}
					else if (!confirm(msg)) out=[]; // empty the list = don't write file
				}
			}
		}
		return out;
	},
	formatItem: function(s,f,t,u,fields) {
		if (f==this.type_TW)
			var r=s.getSaver().externalizeTiddler(s,t);
		if (f==this.type_PS)
			var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
		if (f==this.type_NF)
			var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
		if (f==this.type_TX)
			var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
				t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
		if (f==this.type_CS) {
			function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
			var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
				toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
			for (var f in fields) out.push(toCSV(t.fields[f]||''));
			var r=out.join(',');
		}
		return r||"";
	}
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#exportPanel {
	display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
	padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#exportPanel table {
	width:100%; border:0px; padding:0px; margin:0px;
	font-size:8pt; line-height:110%; background:transparent;
}
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}
#exportPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }
#exportPanel textarea  { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }
#exportPanel .box {
	border:1px solid black; padding:3px; margin-bottom:5px;
	background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }
#exportPanel .rad { width:auto;border:0 }
#exportPanel .chk { width:auto;border:0 }
#exportPanel .btn { width:auto; }
#exportPanel .btn1 { width:98%; }
#exportPanel .btn2 { width:48%; }
#exportPanel .btn3 { width:32%; }
#exportPanel .btn4 { width:24%; }
#exportPanel .btn5 { width:19%; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- target path/file  -->
<div>
<div style="float:right;padding-right:.5em">
<input type="checkbox" style="width:auto" id="exportMerge" CHECKED
	title="combine selected tiddlers with existing tiddlers (if any) in export file"> merge
</div>
export to:<br>
<input type="text" id="exportFilename" size=40 style="width:93%"><input 
	type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%" 
	onclick="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">
</div>

<!-- output format -->
<div>
format:
<select id="exportFormat" size=1>
	<option value="TW">TiddlyWiki HTML document (includes core code)</option>
	<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>
	<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>
	<option value="CS">Comma-Separated Value (CSV) data file</option>
	<option value="NF">RSS NewsFeed XML file</option>
</select>
</div>

<!-- notes -->
<div>
notes:<br>
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea> 
</div>

<!-- list of tiddlers -->
<table><tr align="left"><td>
	select:
	<a href="JavaScript:;" id="exportSelectAll"
		onclick="return config.macros.exportTiddlers.process(this)" title="select all tiddlers">
		&nbsp;all&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectChanges"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">
		&nbsp;changes&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectOpened"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">
		&nbsp;opened&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectRelated"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">
		&nbsp;related&nbsp;</a>
	<a href="JavaScript:;" id="exportToggleFilter"
		onclick="return config.macros.exportTiddlers.process(this)" title="show/hide selection filter">
		&nbsp;filter&nbsp;</a>
</td><td align="right">
	<a href="JavaScript:;" id="exportListSmaller"
		onclick="return config.macros.exportTiddlers.process(this)" title="reduce list size">
		&nbsp;&#150;&nbsp;</a>
	<a href="JavaScript:;" id="exportListLarger"
		onclick="return config.macros.exportTiddlers.process(this)" title="increase list size">
		&nbsp;+&nbsp;</a>
</td></tr></table>
<select id="exportList" multiple size="10" style="margin-bottom:5px;"
	onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">
</select><br>

<!-- selection filter -->
<div id="exportFilterPanel" style="display:none">
<table><tr align="left"><td>
	selection filter
</td><td align="right">
	<a href="JavaScript:;" id="exportHideFilter"
		onclick="return config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>
</td></tr></table>
<div class="box">

<input type="checkbox" class="chk" id="exportFilterStart" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterStartBy"
		onchange="config.macros.exportTiddlers.showFilterFields(this);">
		<option value="0">today</option>
		<option value="1">yesterday</option>
		<option value="7">a week ago</option>
		<option value="30">a month ago</option>
		<option value="file">file date</option>
		<option value="other">other (mm/dd/yyyy hh:mm)</option>
	</select>
</td><td width="50%">
	<input type="text" id="exportStartDate" onfocus="this.select()"
		onchange="config.macros.exportTiddlers.$('exportFilterStartBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id="exportFilterEnd" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterEndBy"
		onchange="config.macros.exportTiddlers.showFilterFields(this);">
		<option value="0">today</option>
		<option value="1">yesterday</option>
		<option value="7">a week ago</option>
		<option value="30">a month ago</option>
		<option value="file">file date</option>
		<option value="other">other (mm/dd/yyyy hh:mm)</option>
	</select>
</td><td width="50%">
	<input type="text" id="exportEndDate" onfocus="this.select()"
		onchange="config.macros.exportTiddlers.$('exportFilterEndBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id=exportFilterTags value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>
<input type="text" id="exportTags" onfocus="this.select()">

<input type="checkbox" class="chk" id=exportFilterText value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> match titles/tiddler text<br>
<input type="text" id="exportText" onfocus="this.select()">

</div> <!--box-->
</div> <!--panel-->

<!-- action buttons -->
<div style="text-align:center">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportFilter" value="apply filter">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportStart" value="export tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportDelete" value="delete tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportClose" value="close">
</div><!--center-->
!end
//}}}
***/
 
/***
|Name|ExportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for ExportTiddlersPlugin|
interactively select and extract tiddlers from your ~TiddlyWiki document, and write them into another file, using one of several different file formats:
* ~TiddlyWiki - a complete, stand-alone, standard TiddlyWiki HTML document
* ~PureStore - a small HTML archive file containing tiddler data only (no core code)
* ~PlainText - a simple TXT text file with tiddler source listings
* Comma - a "Comma Separated Value" data/spreadsheet file
* ~NewsFeed  - an XML-format file that can be published for RSS syndication.
!!!!!Usage
<<<
{{{
<<exportTiddlers>> (sidebar menu item)
<<exportTiddlers inline>> (embedded control panel)
}}}

Inline control panel (live):
<<exportTiddlers inline>>

Optional "special tiddlers" used by this plugin:
* SiteUrl<br>URL for official server-published version of document being viewed (used in XML export). Default: //none//
<<<
!!!!!Revisions
<<<
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
2009.09.12 2.9.4 fixed 'return false' to prevent IE page transitions
2009.07.06 2.9.3 moved HTML to section for size reduction
2009.07.03 2.9.2 TW252 fixup: don't call convertUTF8ToUnicode() for local loadFile() I/O
2009.04.30 2.9.1 custom fields in CSV output
2009.04.19 2.9.0 added CSV format
2009.02.26 2.8.5 use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.29 2.8.4 in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.26 2.8.3 in go(), if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 2.8.2 in assembleFile(), make sure that markup block is updated if corresponding Markup* tiddler is exported.
2008.09.19 2.8.1 in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.11 2.8.0 extensive code cleanup: moved all global functions inside macro object. Re-wrote file generator and I/O to support TiddlyWiki, PlainText, PureStore, and NewsFeed file formats.  Replaced inline 'match tags' code with use of getMatchingTiddlers() from [[MatchTagsPlugin]] (if installed), with fallback to core getTaggedTiddlers() otherwise.
2008.05.27 2.7.0 added ability to 'merge' with existing export file.  Also, revised 'matchTags' functionality to be more robust and more efficient
2008.05.12 2.6.1 automatically add 'export' task to backstage (moved from BackstageTweaks)
2008.03.10 2.6.0 added "delete tiddlers" button
2007.12.04 *.*.* update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.10 2.5.1 removed debugging alert messages from promptForExportFilename()
2007.10.31 2.5.0 code reduction: removed incomplete/unused interface and supporting functions for exporting directly to http, https or ftp servers.  Plugin now supports exporting to local file only.  Also, updated TW document output to generate TW2.2 compatible file format.
2007.10.30 2.4.2 added automatic shadow tiddler definition for [[ExportTiddlers]]
2007.07.16 2.4.1 in exportTWHeader(), reset HTML source 'markup' so installed markup is NOT copied to new file.
2007.06.30 2.4.0 added "select related tiddlers" feature.  Recursively scans the tiddler links[] info to find all tiddlers referenced by any of the currently selected tiddler, and then selects them all (including the original tiddlers).
2007.04.19 2.3.0 in exportData(), pass SiteURL value as param to saveToRss().  Fixes 'undefined' appearing in tiddler link in XML output.  Also, in refreshExportList(), added 'sort by tags'.  Also, added 'group select'... selecting a heading (date,author,tag) auto-selects all tiddlers in that group.
2007.03.02 2.2.6 in onClickExportButton(), when selecting open tiddlers for TW2.2, look for "storyDisplay" with fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.03.01 2.2.5 removed hijack of store.saveChanges()
2006.11.08 2.2.4 added promptForExportFilename() and replaced type="file" control with edit field + browse button ("...").
2006.10.12 2.2.3 in exportDIVFooter(), write POST-BODY-START/END markers for compatibility with TW2.1 core file format.
2006.05.11 2.2.2 in createExportPanel, removed call to addNotification() to reduce unneeded feedback messages and increase overall document performance.
2006.05.02 2.2.1 Use displayMessage() to show number of selected tiddlers instead of updating listbox 'header' item after each selection.  Prevents awkward 'scroll-to-top' behavior that made multi-select via ctrl-click nearly impossible.
2006.04.29 2.2.0 New features: free-form "Notes" text inserted in the header of PureStore files.
2006.03.29 2.1.3 added calls to convertUnicodeToUTF8() for generated output, so it better handles international characters.
2006.02.12 2.1.2 more FF1501 bug fixes.
2006.02.04 2.1.1 added var to unintended globals to avoids FireFox1501 crash bug
2006.02.02 2.1.0 Added support for output of complete TiddlyWiki documents
2006.01.21 2.0.1 Defer initial panel creation and only register a notification function when panel first is created
in saveChanges 'hijack', create panel as needed.  Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.
2005.12.27 2.0.0 Update for TW2.0.
2005.12.24 0.9.5 Minor adjustments to CSS to force correct link colors regardless of TW stylesheet selection
2005.12.16 0.9.4 Dynamically create/remove exportPanel so only one instance exists at a time
2005.11.15 0.9.2 added non-Ajax post to bypass cross-domain security restrictions.
2005.11.08 0.9.1 moved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time.
2005.10.28 0.9.0 added 'select opened tiddlers' feature. Based on a suggestion by Geoff Slocock
2005.10.24 0.8.3 Corrected hijack of 'save changes' when using http:
2005.10.18 0.8.2 added AJAX functions
2005.10.18 0.8.1 Corrected timezone handling and error checking/reporting when filtering tiddlers. More style tweaks, minor text changes and some assorted layout cleanup.
2005.10.17 0.8.0 First pre-release.
2005.10.16 0.7.0 filter by tags
2005.10.15 0.6.0 filter by title/text
2005.10.14 0.5.0 export to local file (DIV or XML)
2005.10.14 0.4.0 filter by start/end date
2005.10.13 0.3.0 panel interaction
2005.10.11 0.2.0 panel layout
2005.10.10 0.1.0 code framework
2005.10.09 0.0.0 development started
<<<
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
  window.onClickTag_mptw_orig.apply(this,arguments);
  var tag = this.getAttribute("tag");
  var title = this.getAttribute("tiddler");
  // Thanks Saq, you're a genius :)
  var popup = Popup.stack[Popup.stack.length-1].popup;
  createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
  wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
  return false;
}

//}}}
Find the fallacy in the following:
<html>
<img width="365" height="20" src="data:image/gif;base64,R0lGODlhbQEUAIQAAP///wAAANDQ0DAwMMDAwICAgFBQUHBwcODg4EBAQKCgoGBgYLCwsPDw8CAgIBAQEJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAABtARQAAAX+ICCOZGmeaAogQeu6aizPdG3feK7vfO//wCBvgRDiEIqXcslsOp9QI4oFrQap1ad0y+3SEAvvjCguA8lmGTrNbrtH6/cqLK+nwPYSPs/v7/Z2cX51goFFgwI4iX4CA21xjW2ANpFdlWmTNJdXdJSOUhAPN6FylwQFBQFsgKepj4c1rapbsq82tUaFKrhGDbA0vm68IgSzZoLFq503yV3NZpk0z0DRM9ODwsbE2l7R11661txG313hMeVDv7Hj2GnX6TwEByYHiyTxRtXS7UH5Qvtk/LsREF2/HQIIQKCksA68gwAMJJhIsSI9EwwOBPjVwMCJfBIrirxoYl69ezj+BsqDGFIkRZIlTJawp0PlR5giaOYA6dLiCQUAHBCoAVQoipY9cabkZvOGg2UFhpaEmCPjRhIdV6YQkADlUiNWOXqsCZGrVwBhsY7dSfWGAgQCAjQwYbbE27hz3zzckuRQ1o9tczwlEdWEgp4UgY6IByHAQruIJyretmXwiMIkDkeeDCBf48cmLIvAPEIzYs5NaxxYS+LzidVCTPdEzbQsgdu4c58d0eBBgdFSp6pImLv4bhF9RfzdkS842eHFjadIDmA5W3TTr1Zn/XVrdN0oHHDGF348CeLfCRxnFxMiqvfwUZkn/KCB9fYq4uufr9w38B6pdYeCfvHxV51/AJCndp0Ovf2WoHMCnkAgfPMxIAoDNViI1oATygdgbVw0qCB+WxRQ330LchFgDSbax12EOLSIIjOB2VBAGA7OcGOCcjxzigEBHFDAOj8c8MCLxBQApJBE9iAihMwoGeSQ5EjJZC++jXiLlVTi8CRzXDa50wEE5GUNmWa+EyY0AUDJhpFIumMGnH7QKeedeAJgIJtu5tkFC326AaifhBaaxp6GxoYNooniGQIAOw==" />
</html>
No cat has eight tails.
One cat has one tail.
Adding, one cat has nine tails.


[[ Source | https://www.goodreads.com/book/show/6061491-professor-stewart-s-cabinet-of-mathematical-curiosities]]
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|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>}}}

Warning: the showWhen and hideWhen macros will blindly eval paramString.
This could be used to execute harmful javascript from a tiddler.

(TODO: Make some effort to sanitize paramString. Perhaps disallow the equals sign?)
***/
//{{{

window.hideWhenLastTest = false;

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

merge(config.macros,{

  hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( eval(paramString), place );
  }},

  showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !eval(paramString), place );
  }},

  hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAny(params), place );
  }},

  showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAny(params), place );
  }},

  hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place );
  }},

  showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place );
  }},

  hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title == params[0], place );
  }},

  showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title != params[0], place );
  }},

  'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !window.hideWhenLastTest, place );
  }}

});

//}}}
The plugins in this package provide interactive functionality for importing/exporting tiddlers to/from other TiddlyWiki documents.  Additional plugins provide enhanced local/remote file I/O features, including "save as", "save from web" and "upload" functionality.
<<importTiddlers inline>>
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents.  Interactively select and copy tiddlers from another TiddlyWiki source document.  Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2011.02.14 4.6.2 fix OSX error: use picker.file.path
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 2, date: new Date(2011,2,14)};

// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;

// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;

// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';

// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
	function merge(dst,src,preserveExisting) {
		for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
		return dst;
	}
}
if (config.browser.isGecko===undefined)
	config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'import tiddlers',
	prompt: 'Copy tiddlers from another document',
	openMsg: 'Opening %0',
	openErrMsg: 'Could not open %0 - error=%1',
	readMsg: 'Read %0 bytes from %1',
	foundMsg: 'Found %0 tiddlers in %1',
	filterMsg: "Filtered %0 tiddlers matching '%1'",
	summaryMsg: '%0 tiddler%1 in the list',
	summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
	plural: 's are',
	single: ' is',
	countMsg: '%0 tiddlers selected for import',
	processedMsg: 'Processed %0 tiddlers',
	importedMsg: 'Imported %0 of %1 tiddlers from %2',
	loadText: 'please load a document...',
	closeText: 'close',
	doneText: 'done',
	startText: 'import',
	stopText: 'stop',
	local: true,		// default to import from local file
	src: '',		// path/filename or URL of document to import (retrieved from SiteUrl)
	proxy: '',		// URL for remote proxy script (retrieved from SiteProxy)
	useProxy: false,	// use specific proxy script in front of remote URL
	inbound: null,		// hash-indexed array of tiddlers from other document
	newTags: '',		// text of tags added to imported tiddlers
	addTags: true,		// add new tags to imported tiddlers
	listsize: 10,		// # of lines to show in imported tiddler list
	importTags: true,	// include tags from remote source document when importing a tiddler
	keepTags: true,		// retain existing tags when replacing a tiddler
	sync: false,		// add 'server' fields to imported tiddlers (for sync function)
	lastFilter: '',		// most recent filter (URL hash) applied
	lastAction: null,	// most recent collision button performed
	index: 0,		// current processing index in import list
	sort: ''		// sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;

config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
			config.macros.importTiddlers.coreHandler.apply(this,arguments);
		else 
			createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
	} else if (params[0]=='link') { // show link to floating panel
		createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
	} else if (params[0]=='inline') {// show panel as INLINE tiddler content
		createImportPanel(place);
		this.$('importPanel').style.position='static';
		this.$('importPanel').style.display='block';
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
	var parent=resolveTarget(e).parentNode;
	var panel=document.getElementById('importPanel');
	if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
	var isOpen=panel.style.display=='block';
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
	else
		panel.style.display=isOpen?'none':'block';
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbrev
	var panel=cmi.$('importPanel');
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
	panel=createTiddlyElement(place,'span','importPanel',null,null)
	panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
	refreshImportList();
	if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
	cmi.$('importSourceURL').value=cmi.src;
	if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
	cmi.$('importSiteProxy').value=cmi.proxy;
	if (window.Components) { // FF3 FIXUP
		cmi.$('fileImportSource').style.display='none';
		cmi.$('importLocalPanelFix').style.display='block';
	}
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportTags').checked=cmi.importTags;
	cmi.$('chkKeepTags').checked=cmi.keepTags;
	cmi.$('chkAddTags').checked=cmi.addTags;
	cmi.$('txtNewTags').value=cmi.newTags;
	cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportReport').checked=config.options.chkImportReport;
	return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var list=cmi.$('importList'); if (!list) return false;
	var thePanel=cmi.$('importPanel');
	var theCollisionPanel=cmi.$('importCollisionPanel');
	var theNewTitle=cmi.$('importNewTitle');
	var count=0;
	switch (which.id)
		{
		case 'importFromFile':	// show local panel
		case 'importFromWeb':	// show HTTP panel
			cmi.local=(which.id=='importFromFile');
			cmi.showPanel('importLocalPanel',cmi.local);
			cmi.showPanel('importHTTPPanel',!cmi.local);
			break;
		case 'importOptions':	// show/hide options panel
			cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
			break;
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=='') break;
			// Load document, read it's DOM and fill the list
			cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
			break;
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return false;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,'URL');
				var d=store.getTiddlerSlice(tids[t].title,'Description');
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
				if (!d||!d.length) d=u;
				createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
					function(){
						var u=this.getAttribute('url');
						document.getElementById('importSourceURL').value=u;
						config.macros.importTiddlers.src=u;
						document.getElementById('importLoad').onclick();
					},
					null,null,null,{url:u});
			}
			Popup.show();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return false;
			// create popup with feed list
			// onselect, insert feed URL into input field.
			break;
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=='') continue;
				list.options[t].selected=true;
				count++;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				list.options[t].selected=!store.tiddlerExists(list.options[t].value);
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importApplyFilter':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			clearMessage();
			if (!cmi.all) // no tiddlers loaded = '0 selected'
				{ displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=cmi.$('importLastFilter').value;
			cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
			cmi.$('importApplyToAll').checked=false;
			cmi.$('importStart').value=cmi.stopText;
			if (cmi.index>0) cmi.index=-1; // stop processing
			else cmi.index=importTiddlers(0); // or begin processing
			importStopped();
			break;
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importSkip':	// don't import the tiddler
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
			importStopped();
			break;
		case 'importRename':		// change name of imported tiddler
			cmi.lastAction=which;
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importMerge':	// join existing and imported tiddler content
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.set(null,theText,null,theDate,theTags);
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status  += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with this item
			importStopped();
			break;
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			cmi.lastAction=which;
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
			list.size-=(list.size>5)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
			list.size+=(list.size<list.options.length)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;
			list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
			break;
		}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
	if (typeof place=='string') var place=document.getElementById(place);
	if (!place||!place.style) return;
	if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
	else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) {
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,'',false,false);
		list.size=cmi.listsize;
		cmi.$('importLoad').disabled=false;
		cmi.$('importLoad').style.display='inline';
		cmi.$('importStart').disabled=true;
		cmi.$('importOptions').disabled=true;
		cmi.$('importOptions').style.display='none';
		cmi.$('fileImportSource').disabled=false;
		cmi.$('importFromFile').disabled=false;
		cmi.$('importFromWeb').disabled=false;
		cmi.$('importStart').value=cmi.startText;
		cmi.$('importClose').value=cmi.doneText;
		cmi.$('importSelectPanel').style.display='none';
		cmi.$('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	cmi.$('importLoad').disabled=true;
	cmi.$('importLoad').style.display='none';
	cmi.$('importOptions').style.display='inline';
	cmi.$('importOptions').disabled=false;
	cmi.$('fileImportSource').disabled=true;
	cmi.$('importFromFile').disabled=true;
	cmi.$('importFromWeb').disabled=true;
	cmi.$('importClose').value=cmi.closeText;
	if (cmi.$('importSelectPanel').style.display=='none')
		cmi.showPanel('importSelectPanel',true);

	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) cmi.sort='title';		// heading
	if (selectedIndex==1) cmi.sort='title';
	if (selectedIndex==2) cmi.sort='modified';
	if (selectedIndex==3) cmi.sort='tags';
	if (selectedIndex>3) {
		// display selected tiddler count
		for (var t=0,count=0; t < list.options.length; t++) {
			if (!list.options[t].selected) continue;
			if (list.options[t].value!='')
				count+=1;
			else { // if heading is selected, deselect it, and then select and count all in section
				list.options[t].selected=false;
				for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
					list.options[t].selected=true;
					count++;
				}
			}
		}
		clearMessage(); displayMessage(cmi.countMsg.format([count]));
	}
	cmi.$('importStart').disabled=!count;
	if (selectedIndex>3) return; // no refresh needed

	// get the alphasorted list of tiddlers
	var tiddlers=cmi.inbound;
	tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
	// clear current list contents
	while (list.length > 0) { list.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	if (cmi.all.length==tiddlers.length)
		var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
	else
		var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
	list.options[i++]=new Option(summary,'',false,false);
	list.options[i++]=new Option(((cmi.sort=='title'   )?'>':indent)+' [by title]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
	// output the tiddler list
	switch(cmi.sort) {
		case 'title':
			for(var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case 'modified':
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
			var lastSection = '';
			for(var t = 0; t < tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					list.options[i++] = new Option(theSection,'',false,false);
					lastSection = theSection;
				}
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
			}
			break;
		case 'tags':
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
					theTitles['untagged'].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				list.options[i++]=new Option(theTag,'',false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	list.selectedIndex=selectedIndex;		  // select current control item
	if (list.size<cmi.listsize) list.size=cmi.listsize;
	if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return -1;
	var list=cmi.$('importList'); if (!list) return;
	var t;
	// if starting new import, reset import status flags
	if (startIndex==0)
		for (var t=0;t<cmi.inbound.length;t++)
			cmi.inbound[t].status='';
	for (var i=startIndex; i<list.options.length; i++) {
		// if list item is not selected or is a heading (i.e., has no value), skip it
		if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
			continue;
		for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==t) break;
		var inbound = cmi.inbound[j];
		var theExisting = store.getTiddler(inbound.title);
		// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
		if (inbound.status=='added')
			continue;
		// don't import the 'ImportedTiddlers' history from the other document...
		if (inbound.title=='ImportedTiddlers')
			continue;
		// if tiddler exists and import not marked for replace or merge, stop importing
		if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = '';
		if (cmi.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (cmi.keepTags && theExisting)
			newTags+=' '+theExisting.getTags(); // keep existing tags
		if (cmi.addTags && cmi.newTags.trim().length)
			newTags+=' '+cmi.newTags; // add new tags
		inbound.set(null,null,null,null,newTags.trim());
		// set the status to 'added' (if not already set by the 'ask the user' UI)
		inbound.status=(inbound.status=='')?'added':inbound.status;
		// set sync fields
		if (cmi.sync) {
			if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
			inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
			inbound.fields['server.type']='file';
			inbound.fields['server.host']=(cmi.local&&!cmi.src.startsWith('file:')?'file:///':'')+cmi.src;
		}
		// do the import!
		store.suspendNotifications();
		store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
		store.resumeNotifications();
		}
	return(-1);	// signals that we really finished the entire list
}
function importStopped() {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	var theNewTitle=cmi.$('importNewTitle');
	if (cmi.index==-1){ 
		cmi.$('importStart').value=cmi.startText;
		importReport();	// import finished... generate the report
	} else {
		// import collision...
		// show the collision panel and set the title edit field
		cmi.$('importStart').value=cmi.stopText;
		cmi.showPanel('importCollisionPanel',true);
		theNewTitle.value=list.options[cmi.index].value;
		if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
			onClickImportButton(cmi.lastAction);
	}
}
//}}}
//{{{
function importReport() {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return;
	// if import was not completed, the collision panel will still be open... close it now.
	var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
	// get the alphasorted list of tiddlers
	var tiddlers = cmi.inbound;
	// gather the statistics
	var count=0; var total=0;
	for (var t=0; t<tiddlers.length; t++) {
		if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
		if (tiddlers[t].status.substr(0,7)!='skipped') count++;
		total++;
	}
	// generate a report
	if (total) displayMessage(cmi.processedMsg.format([total]));
	if (count && config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
		// format the report content
		var now = new Date();
		var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
		newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
		if (cmi.addTags && cmi.newTags.trim().length)
			newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
		newText += '<<<\n';
		for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
			newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
		newText += '<<<\n';
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
		theReport.modifier = config.options.txtUserName;
		theReport.modified = new Date();
                store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
		story.displayTiddler(null,theReport.title,1,null,null,false);
		story.refreshTiddler(theReport.title,1,true);
	}
	// reset status flags
	for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
	// mark document as dirty and let display update as needed
	if (count) { store.setDirty(true); store.notifyAll(); }
	// always show final message when tiddlers were actually loaded
	if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\'); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file='';
	var result='';
	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='html';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
		}
		catch(e) { alert('error during local file access: '+e.toString()) }
	}
	else { // IE
		try { // XPSP2 IE only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=3; // default to HTML files;
			s.InitialDir=path;
			s.FileName=file;
			if (s.showOpen()) var result=s.FileName;
		}
		catch(e) {  // fallback
			var result=prompt(msg,path+file);
		}
	}
	return result;
}

config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
	if (src==undefined || !src.length) return null; // filename is required
	var original=src; // URL as specified
	var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
	clearMessage();
	displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
	if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			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);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
		} else {
			displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
			if (version.major+version.minor*.1+version.revision*.01!=2.52) txt=convertUTF8ToUnicode(txt);
			if (callback) callback(true,original,txt,src,null);
		}
	} else {
		doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html){
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers('title');	
}

config.macros.importTiddlers.readTiddlersFromCSV=function(CSV){
	var remoteStore=new TiddlyWiki();
	// GET NAMES
	var lines=CSV.replace(/\r/g,'').split('\n');
	var names=lines.shift().replace(/"/g,'').split(',');
	CSV=lines.join('\n');
	// ENCODE commas and newlines within quoted values
	var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
	var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
	CSV=CSV.replace(/"([^"]*?)"/g,
		function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
	// PARSE lines
	var lines=CSV.split('\n');
	for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
		var values=lines[i].split(',');
		// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
		for (var v=0; v<values.length; v++)
			values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
				.replace(/^"|"$/g,'').replace(/""/g,'"');
		// EXTRACT tiddler values
		var title=''; var text=''; var tags=[]; var fields={};
		var created=null; var when=new Date(); var who=config.options.txtUserName;
		for (var v=0; v<values.length; v++) { var val=values[v];
			if (names[v]) switch(names[v].toLowerCase()) {
				case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
				case 'created': created=new Date(val); break;
				case 'modified':when=new Date(val); break;
				case 'modifier':who=val; break;
				case 'text':	text=val; break;
				case 'tags':	tags=val.readBracketedList(); break;
				default:	fields[names[v].toLowerCase()]=val; break;
			}
		}
		// CREATE tiddler in temporary store
		if (title.length)
			remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
	}
	return remoteStore.getTiddlers('title');
}

config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
	var t=new Tiddler();
	var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
	t.title=pos==-1?src:src.substr(pos+1);
	t.text=txt; 
	t.created=t.modified=new Date();
	t.modifier=config.options.txtUserName;
	if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
	return [t];
}

config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr){
	var cmi=config.macros.importTiddlers; // abbreviation
	var src=src.replace(/%20/g,' ');
	if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
	cmi.all=cmi.readTiddlersFromHTML(txt);
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.createTiddlerFromFile(src,txt)
	var count=cmi.all?cmi.all.length:0;
	var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
	displayMessage(cmi.foundMsg.format([count,src]));
	cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
	cmi.$('importLastFilter').value=cmi.lastFilter;
	window.refreshImportList(0);
}

config.macros.importTiddlers.filterByHash=function(src,tiddlers){
	var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams('anon',null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case 'anon':
			case 'open':
				tids.pushUnique(params[p].value);
				break;
			case 'tag':
				if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
					var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
					for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
				} else for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
						tids.pushUnique(tiddlers[t].title);
				break;
			case 'story':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						tiddlers[t].changed();
						for (var s=0; s<tiddlers[t].links.length; s++)
							tids.pushUnique(tiddlers[t].links[s]);
						break;
					}
				break;
			case 'search':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].text.indexOf(params[p].value)!=-1)
						tids.pushUnique(tiddlers[t].title);
				break;
		}
	}
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
			matches.push(tiddlers[t]);
	displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
	config.macros.importTiddlers.lastFilter=hash;
	return matches;
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#importPanel {
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
	padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }
#importPanel .rad { width:auto; }
#importPanel .chk { width:auto; margin:1px;border:0; }
#importPanel .btn { width:auto; }
#importPanel .btn1 { width:98%; }
#importPanel .btn2 { width:48%; }
#importPanel .btn3 { width:32%; }
#importPanel .btn4 { width:23%; }
#importPanel .btn5 { width:19%; }
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }
#backstagePanel #importPanel { left:10%; right:auto; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- source and report -->
<table><tr><td align=left>
	import from
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED
		onclick="onClickImportButton(this,event)" title="show file controls"> local file
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"
		onclick="onClickImportButton(this,event)" title="show web controls"> web server
</td><td align=right>
	<input type=checkbox class="chk" id="chkImportReport"
		onClick="config.options['chkImportReport']=this.checked;"> create report
</td></tr></table>

<div class="box" id="importSourcePanel" style="margin:.5em">
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file  -->
enter or browse for source path/filename<br>
<input type="file" id="fileImportSource" size=57 style="width:100%"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->
	<input type="text" id="fileImportSourceFix" style="width:90%"
		title="Enter a path/file to import"
		onKeyUp="config.macros.importTiddlers.src=this.value"
		onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
	<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."
		title="Select a path/file to import"
		onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;
			document.getElementById('fileImportSourceFix').value=r;
			config.macros.importTiddlers.src=r;
			document.getElementById('importLoad').onclick()">
</div><!--end FF3 FIXUP-->
</div><!--end local-->
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->
<table><tr><td align=left>
	enter a URL or <a href="javascript:;" id="importSelectFeed"
		onclick="return onClickImportButton(this,event)" title="select a pre-defined 'systemServer' URL">
		select a server</a><br>
</td><td align=right>
	<input type="checkbox" class="chk" id="importUsePassword"
		onClick="config.macros.importTiddlers.usePassword=this.checked;
			config.macros.importTiddlers.showPanel('importIDPWPanel',this.checked,true);">password
	<input type="checkbox" class="chk" id="importUseProxy"
		onClick="config.macros.importTiddlers.useProxy=this.checked;
			config.macros.importTiddlers.showPanel('importSiteProxy',this.checked,true);">proxy
</td></tr></table>
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"
	onKeyUp="config.macros.importTiddlers.proxy=this.value"
	onChange="config.macros.importTiddlers.proxy=this.value;">
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;">
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>
username: <input type=text id="txtImportID" style="width:25%" 
	onChange="config.options.txtRemoteUsername=this.value;">
 password: <input type=password id="txtImportPW" style="width:25%" 
	onChange="config.options.txtRemotePassword=this.value;">
</div><!--end idpw-->
</div><!--end http-->
</div><!--end source-->

<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">
<table><tr><td align=left>
select:
<a href="javascript:;" id="importSelectAll"
	onclick="return onClickImportButton(this)" title="SELECT all tiddlers">
	all</a>
&nbsp;<a href="javascript:;" id="importSelectNew"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
	added</a>
&nbsp;<a href="javascript:;" id="importSelectChanges"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
	changes</a>
&nbsp;<a href="javascript:;" id="importSelectDifferences"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been added or are different from existing tiddlers">
	differences</a>
</td><td align=right>
<a href="javascript:;" id="importListSmaller"
	onclick="return onClickImportButton(this)" title="SHRINK list size">
	&nbsp;&#150;&nbsp;</a>
<a href="javascript:;" id="importListLarger"
	onclick="return onClickImportButton(this)" title="GROW list size">
	&nbsp;+&nbsp;</a>
<a href="javascript:;" id="importListMaximize"
	onclick="return onClickImportButton(this)" title="MAXIMIZE/RESTORE list size">
	&nbsp;=&nbsp;</a>
</td></tr></table>
<select id="importList" size=8 multiple
	onchange="setTimeout('refreshImportList('+this.selectedIndex+')',1)">
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->
</select>
<div style="text-align:center">
	<a href="javascript:;"
		title="click for help using filters..."
		onclick="alert('A filter consists of one or more space-separated combinations of: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
	>filter</a>
	<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"
		title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."
		onfocus="this.select()" value=""
		onKeyUp="config.macros.importTiddlers.lastFilter=this.value"
		onChange="config.macros.importTiddlers.lastFilter=this.value;">
	<input type="button" id="importApplyFilter" style="width:20%" value="apply"
		title="filter list of tiddlers to include only those that match certain criteria"
		onclick="return onClickImportButton(this)">
	</div>
</div><!--end select-->

<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">
	apply tags: <input type=checkbox class="chk" id="chkImportTags" checked
		onClick="config.macros.importTiddlers.importTags=this.checked;">from source&nbsp;
	<input type=checkbox class="chk" id="chkKeepTags" checked
		onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing&nbsp;
	<input type=checkbox class="chk" id="chkAddTags" 
		onClick="config.macros.importTiddlers.addTags=this.checked;
			config.macros.importTiddlers.showPanel('txtNewTags',this.checked,false);
			if (this.checked) document.getElementById('txtNewTags').focus();">add tags<br>
	<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15 onfocus="this.select()" 
		title="enter tags to be added to imported tiddlers" 
		onKeyUp="config.macros.importTiddlers.newTags=this.value;
		document.getElementById('chkAddTags').checked=this.value.length>0;" autocomplete=off>
	<nobr><input type=checkbox class="chk" id="chkSync" 
		onClick="config.macros.importTiddlers.sync=this.checked;">
		link tiddlers to source document (for sync later)</nobr>
</div><!--end options-->

<div id="importButtonPanel" style="text-align:center">
	<input type=button id="importLoad"	class="importButton btn3" value="open"
		title="load listbox with tiddlers from source document"
		onclick="onClickImportButton(this)">
	<input type=button id="importOptions"	class="importButton btn3" value="options..."
		title="set options for tags, sync, etc."
		onclick="onClickImportButton(this)">
	<input type=button id="importStart"	class="importButton btn3" value="import"
		title="start/stop import of selected source tiddlers into current document"
		onclick="onClickImportButton(this)">
	<input type=button id="importClose"	class="importButton btn3" value="done"
		title="clear listbox or hide control panel"
		onclick="onClickImportButton(this)">
</div>

<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">
	<table><tr><td style="width:65%" align="left">
		<table><tr><td align=left>
			tiddler already exists:
		</td><td align=right>
			<input type=checkbox class="chk" id="importApplyToAll" 
			onclick="document.getElementById('importRename').disabled=this.checked;"
			checked>apply to all
		</td></tr></table>
		<input type=text id="importNewTitle" size=15 autocomplete=off">
	</td><td style="width:34%" align="center">
		<input type=button id="importMerge"
			class="importButton" style="width:47%" value="merge"
			title="append the incoming tiddler to the existing tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importSkip"
			class="importButton" style="width:47%" value="skip"
			title="do not import this tiddler"
			onclick="onClickImportButton(this)"><!--
		--><br><input type=button id="importRename"
			class="importButton" style="width:47%" value="rename"
			title="rename the incoming tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importReplace"
			class="importButton" style="width:47%" value="replace"
			title="discard the existing tiddler"
			onclick="onClickImportButton(this)">
	</td></tr></table>
</div><!--end collision-->
!end
//}}}
***/
 
/***
|Name|ImportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for ImportTiddlersPlugin|
Combine tiddlers from any two TiddlyWiki documents.  An interactive control panel lets you pick a source document and import selected tiddlers, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Usage
<<<
{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}
invokes the built-in importTiddlers macro (TW2.1.x+).  If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)

{{{<<importTiddlers link label tooltip>>}}}
The ''link'' keyword creates an "import tiddlers" link that when clicked to show/hide import control panel.  ''label'' and ''tooltip'' are optional text parameters (enclosed in quotes or {{{[[...]]}}}, and allow you to override the default display text for the link and the mouseover help text, respectively.

{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content

<<importTiddlers inline>>

Enter a document URL or press "..." to select a TiddlyWiki file to import, and then press ''[open]''.  //Note: There may be a delay before the list of tiddlers appears.//  Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time.

Select one or more titles from the listbox.  Use CTRL-click or SHIFT-click to select/deselect individual titles.  Click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list, based on a comparison of the two documents:
*''all'' selects ALL tiddlers from the import source document, even if they have not been changed.
*''new'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
*''changes'' selects only tiddlers that exist in both documents but that are newer in the source document
*''differences'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)

Press ''[import]'' to begin copying tiddlers to the current document.  If an 'inbound' tiddler matches one that already exists in the document, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''skip'', ''rename'', ''merge'' and ''replace''.
* to bypass importing the tiddler, press ''skip''
* to give the inbound tiddler a different name, so that both the old and new tiddlers will exist when the import is done, enter a new title in the input field and press ''rename'' 
* to combine the content from both tiddlers into a single tiddler so you can then edit it later to eliminate unwanted content, press ''merge''
* to overwrite the existing tiddler with the imported one (discarding the previous content), press ''[replace]''

''Import Report History''

Whenever tiddlers are imported, a report is generated into a tiddler named [[ImportedTiddlers]], recording when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom, as well as a list of the tiddlers that were processed.  When more tiddlers are imported at a later time, a new report is //added// to the existing [[ImportedTiddlers]], above the previous report (i.e., at the top of the tiddler), so that a history of imports is maintained.  If this record is not desired, you can delete [[ImportedTiddlers]] at any time.

Note: You can prevent a report from being generated for any given import activity by clearing the "create a report" checkbox before pressing the ''import'' button
<<<
!!!!!Installation Notes
<<<
* As of 6/27/2007, support for TW2.1.x and earlier have been moved to [[ImportTiddlersPluginPatch]].  ''//Only install the patch plugin when using TW2.1.x or earlier.//''
<<<
!!!!!Revisions
<<<
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
2009.09.27 4.5.5 in readTiddlersFromCSV(), strip \r from input and fixed handling for quoted values
2009.09.12 4.5.4 fixed 'return false' to prevent IE page transition. Also, moved html/css definitions to separate sections
2009.08.23 4.5.3 in importTiddlers(), add 'file:///' to local server.host sync field only if not already present in URL
2009.08.20 4.5.2 only use SiteURL/SiteProxy values if control panel value has not yet been set
2009.07.03 4.5.1 fixups for TW252: doHttp() doesn't return XHR and convertUTF8ToUnicode() not needed for local I/O
2009.05.04 4.5.0 import from CSV-formatted files
2009.03.04 4.4.2 in createImportPanel(), init option checkboxes so display matches internal state variables
2009.02.26 4.4.1 use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.30 4.4.0 added fallback definition of merge() for use with TW2.0.x and TW1.2.x
2008.08.12 4.3.3 rewrite backstage and shadow tiddler definitions for easier customization
2008.08.05 4.3.2 rewrote loadRemoteFile() to eliminate use of platform-specific fileExists() function
2008.06.29 4.3.1 More layout/animation work for simpler sequential interaction.  Code reduction/cleanup
2008.06.28 4.3.0 HTML and CSS cleanup and tweaks to layout.  Added animation to panels
2008.06.22 4.2.0 For FireFox, use HTML with separate text+button control instead of type='file' control
2008.06.05 4.1.0 in filterByHash(), added support for boolean tag expressions using getMatchingTiddlers() (defined by MatchTagsPlugin)
2008.05.12 4.0.2 automatically tweak the backstage "import" task to add the ImportTiddlers control panel
2008.04.30 4.0.1 trim #... suffix for loading files/URLs in IE
2008.04.30 4.0.0 added source filtering (using URL paramifiers).  Also, abbreviations for code-size reduction.
2008.04.13 3.9.0 added 'apply to all' checkbox for collision processing
2008.03.26 3.8.0 added support for selecting pre-defined systemServer URLs
2008.03.25 3.7.0 added support for setting 'server' fields on imported tiddlers (for later synchronizing of changes)
2008.01.03 3.6.0 in loadRemoteFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.10.30 3.5.6 update [[ImportTiddlers]] shadow tiddler definition to include "inline" link
2007.06.27 3.5.5 added missing 'fields' params to saveTiddler() calls.  Fixes problem where importing tiddlers would lose the custom fields.  Also, moved functions for TW2.1.x to [[ImportTiddlersPluginPatch2.1.x]].
2007.06.25 3.5.4 added calls to store.suspendNotifications() and store.resumeNotifications().  Eliminates redisplay processing overhead DURING import activities
2007.04.29 3.5.3 in refreshImportList() when inbound tiddlers are loaded, change "close" button to "done", and disable certain controls to creates a modal condition, so that actions that reload tiddlers cannot be performed unless "done" is first pressed to end the mode..
2007.04.28 3.5.2 in handler(), added param support for custom link label/prompt
2007.04.19 3.5.1 in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content.  Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
2007.03.22 3.5.0 in refreshImportList(), add handling for 'select section' when a heading is selected.  Makes it really easy to import by tag or date!
2007.03.21 3.4.0 split loadTiddlers functionality into separate plugin (see [[LoadTiddlersPlugin]])
2007.03.20 3.3.1 tweak to previous change to allow relative file references via http: (bypasses getLocalPath() so remote URL will be used)
2007.03.20 3.3.0 added support for local, relative file references: in loadRemoteFile(), check for fileExists().  If not found, prepend relative path and retry.
2007.02.24 3.2.1 re-labeled control panel "open" button to "load"
2007.02.09 3.2.0 loadTiddlers: added support for "noReload" tag (prevents overwriting existing tiddler, even if inbound tiddler is newer)
2007.02.08 3.1.3 loadTiddlers: added missing code and documentation for "newTags" handling (a feature change from long, long ago that somehow got lost!)
2006.11.14 3.1.2 fix macro handler parameter declaration (double-pasted param list corrupts IE)
2006.11.13 3.1.1 use apply() method to invoke hijacked core handler
2006.11.13 3.1.0 hijack built-in importTiddlers.handler() to co-exist with plugin interface.  If no params or 'core' keyword, display core interface.  "link" param embeds "import tiddlers" link that shows floating panel when clicked.
2006.10.12 3.0.8 in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)
2006.09.10 3.0.7 in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" 
2006.08.16 3.0.6 Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with adaptations that hijack low-level tiddler handling.  in CreateImportPanel(), removed "refresh listbox after every tiddler change".
2006.07.29 3.0.5 added noChangeMsg to loadTiddlers processing.  if not 'quiet' mode, reports skipped tiddlers.
2006.04.18 3.0.4 in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)
2006.04.12 3.0.3 moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.
2006.04.12 3.0.2 more work on 'core candidate' code.  Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.
2006.04.04 3.0.1 in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section
2006.04.04 3.0.0 Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro.  New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation,  ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers.  Removed support for "importReplace/importPublic" tags and "force" param (unused feature). 
2006.03.30 2.9.1 when extracting store area from remote URL, look for "</body>" instead of "</body>\n</html>" so it will match even if the "\n" is absent from the source.
2006.03.30 2.9.0 added optional 'force' macro param.  When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace.  Based on a request from Tom Otvos.
2006.03.28 2.8.1 in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (not in IE). Also, when extracting store area, look for "</body>\n</html>" and omit extra content that may have been added to the end of the file.
2006.02.21 2.8.0 added support for "tiddler:TiddlerName" filtering parameter in auto-import processing
2006.02.21 2.7.1 Clean up layout problems with IE.  (Use tables for alignment instead of SPANs styled with float:left and float:right)
2006.02.21 2.7.0 Added "local file" and "web server" radio buttons.  Default remote URL uses value from [[SiteURL]].  Also, added 'proxy' option, using value from [[SiteProxy]] as prefix to permit cross-domain document access via server-side scripting.
2006.02.17 2.6.0 Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences.  fixed init of "add new tags" checkbox
2006.02.16 2.5.4 added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.
2006.02.14 2.5.3 FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
2006.02.10 2.5.2 corrected unintended global variable in importReport().
2006.02.05 2.5.1 moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
2006.01.18 2.5.0 added checkbox for "create a report".  Default is to create/update the ImportedTiddlers report.
2006.01.15 2.4.1 added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
2006.01.15 2.4.0 Added support for tagging tiddlers with importSkip, importReplace, and/or importPrivate to enable/disable overwriting or sharing with others when using auto-import macro syntax.  Defaults: don't overwrite existing tiddlers, and allow your tiddlers to be auto-imported by others.
2006.01.15 2.3.2 Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)
2006.01.15 2.3.1 Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME to prevent imported document's core code from being invoked.  Also, when importing local documents, use convertUTF8ToUnicode() to support international characters sets.
2006.01.12 2.3.0 Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest instead of waiting for remote hosts to respond to URL requests.  Added non-interactive 'batch' mode, using macro parameters to specify source path/file or URL, and select tiddlers to import.  Improved messages and added optional 'quiet' switch for batch mode to eliminate //most// feedback.
2006.01.11 2.2.0 Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck
2006.01.08 2.1.0 IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements.  Adapted from example code and techniques courtesy of Jonny LeRoy.
2006.01.06 2.0.2 When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.
2006.01.04 2.0.1 When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.
2005.12.27 2.0.0 Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
2005.12.22 1.3.1 tweak formatting in importReport() and add 'discard report' link to output
2005.12.03 1.3.0 Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.  Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)
2005.11.29 1.2.1 fixed formatting of 'detail info' in importReport()
2005.11.11 1.2.0 added 'inline' param to embed controls in a tiddler
2005.11.09 1.1.0 only load HTML and CSS the first time the macro handler is called.  Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.
2005.10.25 1.0.5 fixed typo in importReport() that prevented reports from being generated
2005.10.09 1.0.4 combined documentation with plugin code instead of using separate tiddlers
2005.08.05 1.0.3 moved CSS and HTML definitions into plugin code instead of using separate tiddlers
2005.07.27 1.0.2 core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
2005.07.23 1.0.1 added parameter checks and corrected addNotification() usage
2005.07.20 1.0.0 Initial Release
<<<
/***
|Name|ImportTiddlersPluginPatch|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPluginPatch|
|Version|4.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|ImportTiddlersPlugin|
|Description|backward-compatible function patches for use with ImportTiddlersPlugin and TW2.1.x or earlier|
!!!!!Usage
<<<
The current version ImportTiddlersPlugin is compatible with the TW2.2.x core functions.  This "patch" plugin provides additional functions needed to enable the current version of ImportTiddlersPlugin to operate correctly under TW2.1.x or earlier.

{{medium{You do not need to install this plugin if you are using TW2.2.0 or above}}}
(though it won't hurt anything if you do... it will just take up more space).
<<<
!!!!!Revisions
<<<
2008.09.30 [4.4.0] added safety check for TW21Loader object and forward-compatible loadFromDiv() prototype to permit use with TW2.0.x and TW1.2.x.
2008.08.05 [4.3.2] rewrote loadRemoteFile to eliminate use of platform-specific fileExists() function
2008.01.03 [3.6.0] added support for passing txtRemoteUsername and txtRemotePassword for accessing password-protected remote servers
2007.06.27 [3.5.5] compatibility functions split from ImportTiddlersPlugin
|please see [[ImportTiddlersPlugin]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
// these functions are only defined when installed in TW2.1.x and earlier... 
if (version.major+version.minor/10 <= 2.1) {

// Version
version.extensions.ImportTiddlersPluginPatch= {major: 4, minor: 4, revision: 0, date: new Date(2008,9,30)};

// fixups for TW2.0.x and earlier
if (window.merge==undefined) window.merge=function(dst,src,preserveExisting)
	{ for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };

config.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet) {
	if (src==undefined || !src.length) return null; // filename is required
	if (!quiet) clearMessage();
	if (!quiet) displayMessage(this.openMsg.format([src]));

	if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			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);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"]));
		} else {
			if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g," ")]));
			if (callback) callback(true,src,convertUTF8ToUnicode(txt),src,null);
		}
	} else {
		var x; // get an request object
		try {x = new XMLHttpRequest()} // moz
		catch(e) {
			try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6
			catch (e) {
				try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5
				catch (e) { return }
			}
		}
		// setup callback function to handle server response(s)
		x.onreadystatechange = function() {
			if (x.readyState == 4) {
				if (x.status==0 || x.status == 200) {
					if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([x.responseText.length,src]));
					if (callback) callback(true,src,x.responseText,src,x);
				}
				else {
					if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,x.status]));
				}
			}
		}
		// get privileges to read another document's DOM via http:// or file:// (moz-only)
		if (typeof(netscape)!="undefined") {
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }
			catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
		}
		// send the HTTP request
		try {
			var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();
			x.open("GET",src,true,config.options.txtRemoteUsername,config.options.txtRemotePassword);
			if (x.overrideMimeType) x.overrideMimeType('text/html');
			x.send(null);
		}
		catch (e) {
			if (!quiet) {
				displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(unknown)"]));
				displayMessage(e.description?e.description:e.toString());
			}
		}
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html) {
	// for TW2.1 and earlier
	// extract store area from html 
	var start=html.indexOf('<div id="storeArea">');
	var end=html.indexOf("<!--POST-BODY-START--"+">",start);
	if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents
	var sa="<html><body>"+html.substring(start,end)+"</body></html>";

	// load html into iframe document
	var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);
	f=document.createElement("iframe"); f.id="loaderFrame";
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	document.body.appendChild(f);
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
	d.open(); d.writeln(sa); d.close();

	// read tiddler DIVs from storeArea DOM element	
	var sa = d.getElementById("storeArea");
	if (!sa) return null;
	sa.normalize();
	var nodes = sa.childNodes;
	if (!nodes || !nodes.length) return null;
	var tiddlers = [];
	for(var t = 0; t < nodes.length; t++) {
		var title = null;
		if(nodes[t].getAttribute)
			title = nodes[t].getAttribute("title"); // TW 2.2+
		if(!title && nodes[t].getAttribute)
			title = nodes[t].getAttribute("tiddler"); // TW 2.1.x
		if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))
			title = nodes[t].id.substr(5); // TW 1.2.x
		if(title && title != "")
			tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));
	}
	return tiddlers;
}

// // FORWARD-COMPATIBLE SUPPORT FOR TW2.1.x
// // enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.1.x
if (typeof TW21Loader!="undefined") {
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node) {
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler"))
		text = getNodeText(e).unescapeLineBreaks();
	else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	var fields = {};
	var attrs = node.attributes;
	for(var i = attrs.length-1; i >= 0; i--) {
		var name = attrs[i].name;
		if (attrs[i].specified && !TiddlyWiki.isStandardField(name))
			fields[name] = attrs[i].value.unescapeLineBreaks();
		
	}
	tiddler.assign(title,text,modifier,modified,tags,created,fields);
	return tiddler;
};
}

// FORWARD-COMPATIBLE SUPPORT FOR TW2.0.x and TW1.2.x
// enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.0.x or TW1.2.x
if (typeof Tiddler.prototype.loadFromDiv!="undefined") {
Tiddler.prototype.loadFromDiv = function(node,title) { // Load a tiddler from an HTML DIV
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler")) {
		// get merged text from adjacent text nodes
		var t=""; while(e&&e.nodeName=="#text") { t+=e.nodeValue; e=e.nextSibling; }
		text = Tiddler.unescapeLineBreaks(t);
	} else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	this.set(title,text,modifier,modified,tags,created);
	return this;
}
}

} // END OF pre-TW2.2 backward-compatibility functions
//}}}
On Fri 17 Feb 2012 01:53:10 PM, YourName imported 1 tiddler from
[[/home/daniel/Ubuntu One/tiddlywiki/VisualTW.html|/home/daniel/Ubuntu One/tiddlywiki/VisualTW.html]]:
<<<
#[[TiddlersBarPlugin]] - added
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|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.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.

''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text

''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.

''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed.  Thus, you cannot load a library and //immediately// use it's functions within the same tiddler.  However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).

To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened.  For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.

Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines.  Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.

''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.

If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display.  For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.

//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//

''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.

Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
	// uncomment this: alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
	return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
	return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
   if (!window.story) window.story=window;
   var title=story.findContainingTiddler(place).id.substr(7);
   return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
   if (!window.story) window.story=window;
   alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
	return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
	demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access 
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\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) {
			if (lookaheadMatch[1]) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = lookaheadMatch[1];
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (lookaheadMatch[5]) { // there is script code
				if (lookaheadMatch[4]) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (lookaheadMatch[2]) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
					link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
					link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
					link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
					link.setAttribute("href","javascript:;");
					link.style.cursor="pointer";
				}
				else { // run inline script code
					var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
					code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
					try { var out = eval(code); } 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;
		}
	}
} )
//}}}
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{

config.InstantTimestamp = {

  // adjust to suit
  timeFormat: 'DD/0MM/YY 0hh:0mm',
  dateFormat: 'DD/0MM/YY',

  translations: [
    [/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
    [/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],

    // thanks Adapted Cat
    [/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
    [/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]

  ],

  excludeTags: [
    "noAutoCorrect",
    "noTimestamp",
    "html",
    "CSS",
    "css",
    "systemConfig",
    "systemConfigDisabled",
    "zsystemConfig",
    "Plugins",
    "Plugin",
    "plugins",
    "plugin",
    "javascript",
    "code",
    "systemTheme",
    "systemPalette"
  ],

  excludeTiddlers: [
    "StyleSheet",
    "StyleSheetLayout",
    "StyleSheetColors",
    "StyleSheetPrint"
    // more?
  ]

};

TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

  tags = tags ? tags : []; // just in case tags is null
  tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
  var conf = config.InstantTimestamp;

  if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

    var now = new Date();
    var trans = conf.translations;
    for (var i=0;i<trans.length;i++) {
      newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
    }
  }

  // TODO: use apply() instead of naming all args?
  return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}

// you can override these in StyleSheet
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

//}}}
/***
|''Name:''|IntelliTaggerPlugin|
|''Version:''|1.0.2 (2007-07-25)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.0 (2006-04-26): Initial release

***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
/***
|''Name:''|IntelliTagsEditCommandPlugin|
|''Version:''|1.0.0 (2007-10-03)|
|''Type:''|plugin|
|''Description:''|A command for your tiddler's toolbar to directly edit the tiddler's tags using the IntelliTaggerPlugin, without switching to "edit mode".|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTagsEditCommandPlugin|
|''Requires:''|IntelliTaggerPlugin http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Using the "IntelliTagsEditCommandPlugin"
Add the command {{{intelliTagsEdit}}} into the 'macro' attribute of the 'toolbar' {{{<div...>}}} in your ViewTemplate.

''Example:''
{{{
<div class='toolbar' 
        macro='toolbar -closeTiddler closeOthers +editTiddler intelliTagsEdit permalink references jump'>
</div>
}}}

This adds a "tags" button to the toolbar of the tiddlers (next to the ''edit'' button). Pressing the "tags" button will open the input field for the tiddler's tags and let you edit the tags with all the [[IntelliTaggerPlugin|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin]] features.
***/
/***
!Source Code
***/
//{{{
(function(){

if (!version.extensions.IntelliTaggerPlugin)
    throw Error("IntelliTagsEditCommandPlugin requires the IntelliTaggerPlugin (http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin)");

if (config.commands.intelliTagsEdit) 
    return;

config.commands.intelliTagsEdit = {
	text: "tags",
	tooltip: "edit the tags"
};

config.commands.intelliTagsEdit.handler = function(event,src,title) {
	var button = abego.IntelliTagger.createEditTagsButton(title, null, "tags", "edit the tags");
	button.onclick(event);
	return false;
};

})();
//}}}
!Welcome to my puzzle site

On this site I am trying to record down all the interesting puzzles I come across. 

The problems are currently organised by difficulty. The puzzles can be viewed either by clicking the links in the timeline on the right, by clicking on the difficulties on top, or by browsing them below.

No answers will be provided here. If you would like to discuss your solution with me, please get in touch with me at ''@@daniellowtw [at] gmail [dot] com@@''
------
![[Puzzles|puzzle]]
<<tagglyTagging puzzle>>

![[Recreational Maths|recreational-maths]]
<<tagglyTagging recreational-maths>>

![[Computer Science|computer-science]]
<<tagglyTagging computer-science>>

![[Mathemagic|mathemagic]]
<<tagglyTagging mathemagic>>

![[Olympiad Maths|olympiad]]
<<tagglyTagging olympiad>>

![[Fun|fun]]
<<tagglyTagging fun>>
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
  config.lessBackups = {
    // comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
    modes: [
      ["YYYY",  365*DAYS], // one per year for ever
      ["MMM",   31*DAYS],  // one per month
      ["ddd",   7*DAYS],   // one per weekday
      //["d0DD",  1*DAYS],   // one per day of month
      ["h0hh",  24*HOURS], // one per hour
      ["m0mm",  1*HOURS],  // one per minute
      ["s0ss",  1*MINS],   // one per second
      ["latest",0]         // always keep last version. (leave this).
    ]
  };
}

window.getSpecialBackupPath = function(backupPath) {

  var now = new Date();

  var modes = config.lessBackups.modes;

  for (var i=0;i<modes.length;i++) {

    // the filename we will try
    var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
        '$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

    // open the file
    try {
      if (config.browser.isIE) {
        var fsobject = new ActiveXObject("Scripting.FileSystemObject")
        var fileExists  = fsobject.FileExists(specialBackupPath);
        if (fileExists) {
          var fileObject = fsobject.GetFile(specialBackupPath);
          var modDate = new Date(fileObject.DateLastModified).valueOf();
        }
      }
      else {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(specialBackupPath);
        var fileExists = file.exists();
        if (fileExists) {
          var modDate = file.lastModifiedTime;
        }
      }
    }
    catch(e) {
      // give up
      return backupPath;
    }

    // expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
    // June file on disk that's more than an month old then it must be stale so overwrite
    // note that "latest" should be always written because the expiration period is zero (see above)
    var expiry = new Date(modDate + modes[i][1]);
    if (!fileExists || now > expiry)
      return specialBackupPath;
  }
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
  return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}
/***
|''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);
}
//}}}
/***
|Name|LoadTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.9.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|macro for automated updates or one-click installations of tiddlers from remote sources|
!!!!!Documentation
>see [[LoadTiddlersPluginInfo]]
!!!!!Configuration
<<<
<<option chkLoadTiddlersShowReport>>after loading tiddlers, automatically display [[ImportedTiddlers]] (if created)
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2010.08.11 3.9.0 added 'autosave' optional param
|please see [[LoadTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.LoadTiddlersPlugin= {major: 3, minor: 9, revision: 0, date: new Date(2010,8,11)};

if (config.options.chkLoadTiddlersShowReport===undefined)
	config.options.chkLoadTiddlersShowReport=true;

config.macros.loadTiddlers = {
	label: '',
	tip: "add/update tiddlers from '%0'",
	lockedTag: 'noReload',	// if existing tiddler has this tag value, don't overwrite it, even if inbound tiddler is newer
	askMsg: 'Please enter a local path/filename or a remote URL',
	openMsg: 'Opening %0',
	openErrMsg: 'Could not open %0 - error=%1',
	readMsg: 'Read %0 bytes from %1',
	foundMsg: 'Found %0 tiddlers in %1',
	nochangeMsg: "'%0' is up-to-date... skipped.",
	lockedMsg: "'%0' is tagged '%1'... skipped.",
	skippedMsg: 'skipped (cancelled by user)',
	loadedMsg: 'Loaded %0 of %1 tiddlers from %2',
	reportTitle: 'ImportedTiddlers',
	warning: "Warning!!  Processing '%0' as a systemConfig (plugin) tiddler may produce unexpected results! Press OK to proceed.",
	autosaveMsg: 'Save current document?  Press OK to proceed.',
	handler: function(place,macroName,params) {
		var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;
		var tip=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.tip;
		var filter='updates';
		if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'
			|| params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))
			filter=params.shift();
		var src=params.shift(); if (!src || !src.length) return; // filename is required
		var quiet=(params[0]=='quiet'); if (quiet) params.shift();
		var ask=(params[0]=='confirm'); if (ask) params.shift();
		var force=(params[0]=='force'); if (force) params.shift();
		var init=(params[0]=='init'); if (init) params.shift();
		var nodirty=(params[0]=='nodirty'); if (nodirty) params.shift();
		var norefresh=(params[0]=='norefresh'); if (norefresh) params.shift();
		var noreport=(params[0]=='noreport'); if (noreport) params.shift();
		var autosave=(params[0]=='autosave'); if (autosave) params.shift();
		this.newTags=[]; if (params[0]) this.newTags=params; // any remaining params are used as 'autotags'
		var flags={quiet:quiet, ask:ask, filter:filter, force:force, init:init,
			nodirty:nodirty, norefresh:norefresh, noreport:noreport, autosave:autosave};
		if (label.trim().length) { // CLICKABLE LINK
			createTiddlyButton(place,
				label.format([src.replace(/%20/g,' ')]),
				tip.format([src.replace(/%20/g,' ')]),
				function() {
					var cml=config.macros.loadTiddlers;
					cml.loadFile(src,cml.doImport,flags);
					return false;
				})
		}
		else // IMMEDIATE IMPORT
			this.loadFile(src,this.doImport,flags);
	},
	loadFile: function(src,callback,params) {
		var quiet=params.quiet;
		if (src=='ask') src=prompt(this.askMsg);
		if (src==undefined || !src.length) return null; // filename is required
		if (!quiet) clearMessage();
		if (!quiet) displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
		// if working locally and src is not a URL, read from local filesystem
		if (document.location.protocol=='file:' && src.substr(0,5)!='http:' && src.substr(0,5)!='file:') {
			var txt=loadFile(src);
			if (!txt) { // file didn't load, might be relative path.. try fixup
				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);
				src=pathPrefix+src;
				if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
				var txt=loadFile(src);
			}
			if (!txt) { // file still didn't load, report error
				if (!quiet) displayMessage(this.openErrMsg.format([src.replace(/%20/g,' '),'(unknown)']));
			} else {
				if (!quiet) displayMessage(this.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
				if (version.major+version.minor*.1+version.revision*.01!=2.52)
					txt=convertUTF8ToUnicode(txt);
				if (callback) callback(true,params,txt,src,null);
			}
		} else { // use XMLHttpRequest
			doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,params,null);
		}
	},
	readTiddlersFromHTML: function(html) {
		// for TW2.2+
		if (TiddlyWiki.prototype.importTiddlyWiki!=undefined) {
			var remoteStore=new TiddlyWiki();
			remoteStore.importTiddlyWiki(html);
			return remoteStore.getTiddlers('title');	
		}
	},
	readTiddlersFromCSV: function(CSV) {
		var remoteStore=new TiddlyWiki();
		// GET NAMES
		var lines=CSV.replace(/\r/g,'').split('\n');
		var names=lines.shift().replace(/"/g,'').split(',');
		CSV=lines.join('\n');
		// ENCODE commas and newlines within quoted values
		var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
		var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
		CSV=CSV.replace(/"([^"]*?)"/g,
			function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
		// PARSE lines
		var lines=CSV.split('\n');
		for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
			var values=lines[i].split(',');
			// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
			for (var v=0; v<values.length; v++)
				values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
					.replace(/^"|"$/g,'').replace(/""/g,'"');
			// EXTRACT tiddler values
			var title=''; var text=''; var tags=[]; var fields={};
			var created=null; var when=new Date(); var who=config.options.txtUserName;
			for (var v=0; v<values.length; v++) { var val=values[v];
				if (names[v]) switch(names[v].toLowerCase()) {
					case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
					case 'created': created=new Date(val); break;
					case 'modified':when=new Date(val); break;
					case 'modifier':who=val; break;
					case 'text':	text=val; break;
					case 'tags':	tags=val.readBracketedList(); break;
					default:	fields[names[v].toLowerCase()]=val; break;
				}
			}
			// CREATE tiddler in temporary store
			if (title.length)
				remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
		}
		return remoteStore.getTiddlers('title');	
	},
	createTiddlerFromFile: function(src,txt) {
		var t=new Tiddler();
		var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
		t.title=pos==-1?src:src.substr(pos+1);
		t.text=txt; 
		t.created=t.modified=new Date();
		t.modifier=config.options.txtUserName;
		if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
		return [t];
	},
	doImport: function(status,params,html,src,xhr) {
		var cml=config.macros.loadTiddlers; // abbrev
		src=src.split('?')[0]; // strip off "?nocache=..."
		if (!status) {
			displayMessage(cml.openErrMsg.format([src.replace(/%20/g,' '),xhr.status]));
			return false;
		}
		var quiet=params.quiet;
		var ask=params.ask;
		var filter=params.filter;
		var force=params.force;
		var init=params.init;
		var nodirty=params.nodirty;
		var norefresh=params.norefresh;
		var noreport=params.noreport;
		var autosave=params.autosave;
		var tiddlers = cml.readTiddlersFromHTML(html);
		if (!tiddlers||!tiddlers.length) tiddlers=cml.readTiddlersFromCSV(html);
		if (!tiddlers||!tiddlers.length) tiddlers=cml.createTiddlerFromFile(src,html);
		var count=tiddlers?tiddlers.length:0;
		if (!quiet) displayMessage(cml.foundMsg.format([count,src.replace(/%20/g,' ')]));
		var wasDirty=store.isDirty();
		store.suspendNotifications();
		var count=0;
		if (tiddlers) for (var t=0;t<tiddlers.length;t++) {
			var inbound = tiddlers[t];
			var theExisting = store.getTiddler(inbound.title);
			if (inbound.title==cml.reportTitle)
				continue; // skip 'ImportedTiddlers' history from the other document...
			if (theExisting && theExisting.tags.contains(cml.lockedTag)) {
				if (!quiet) displayMessage(cml.lockedMsg.format([theExisting.title,cml.lockedTag]));
				continue; // skip existing tiddler if tagged with 'noReload'
			}
			// apply the all/new/changes/updates filter (if any)
			if (filter && filter!='all') {
				if ((filter=='new') && theExisting) // skip existing tiddlers
					continue;
				if ((filter=='changes') && !theExisting) // skip new tiddlers
					continue;
				if ((filter.substr(0,4)=='tag:') && inbound.tags.indexOf(filter.substr(4))==-1) // must match specific tag value
					continue;
				if ((filter.substr(0,8)=='tiddler:') && inbound.title!=filter.substr(8)) // must match specific tiddler name
					continue;
				if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0)) {
					var msg=cml.nochangeMsg;
					if (!quiet&&msg.length) displayMessage(msg.format([inbound.title]));
					continue;
				}
			}
			// get confirmation if required
			var msg=(theExisting?'Update':'Add')+" tiddler '"+inbound.title+"'\n"
				+'from '+src.replace(/%20/g,' ')+'\n\nOK to proceed?';
			if (ask && !confirm(msg))
				{ tiddlers[t].status=cml.skippedMsg; continue; }
			// DO IT!
			var tags=new Array().concat(inbound.tags,cml.newTags);
	                store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier,
				inbound.modified, tags, inbound.fields, true, inbound.created);
			// force creation date to imported value - needed for TW2.1.3 or earlier
	                store.fetchTiddler(inbound.title).created = inbound.created;
			tiddlers[t].status=theExisting?'updated':'added'
			if (init && tags.contains('systemConfig') && !tags.contains('systemConfigDisable')) {
				var ok=true;
				if (ask||!quiet) ok=confirm(cml.warning.format([inbound.title]))
				if (ok) { // run the plugin
					try { window.eval(inbound.text); tiddlers[t].status+=' (plugin initialized)'; }
					catch(ex) { displayMessage(config.messages.pluginError.format([exceptionText(ex)])); }
				}
			}
			count++;
		}
		store.resumeNotifications();
		if (count) {
			// set/clear 'unsaved changes' flag, refresh page display, and generate a report
			store.setDirty(wasDirty||!nodirty);
			if (!norefresh) {
				story.forEachTiddler(function(t,e){
					if(!story.isDirty(t))story.refreshTiddler(t,null,true)
				});
				store.notifyAll();
			}
			if (!noreport) cml.report(src,tiddlers,count,quiet);
		}
		if (!quiet||count) // force msg if tiddlers were loaded
			displayMessage(cml.loadedMsg.format([count,tiddlers.length,src.replace(/%20/g,' ')]));
		if (count && autosave && (!ask||confirm(cml.autosaveMsg))) saveChanges();
	},
	showReport: true,
	report: function(src,tiddlers,count,quiet) {
		var cml=config.macros.loadTiddlers; // abbrev
		// format the new report content
		var newText = 'On '+(new Date()).toLocaleString()+', ';
		newText += config.options.txtUserName+' loaded '+count+' tiddlers ';
		newText += 'from\n[['+src+'|'+src+']]:\n';
		newText += '<<<\n';
		for (var t=0; t<tiddlers.length; t++)
			if (tiddlers[t].status)
				newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
		newText += '<<<\n';
		var title=cml.reportTitle;
		var currText='';
		var t=store.getTiddler(title);
		if (t) currText=(t.text.length?'\n----\n':'')+t.text;
		store.saveTiddler(title, title, newText+currText,
			config.options.txtUserName, new Date(),	t?t.tags:null, t?t.fields:null);
		if (!quiet) {
			if (config.options.chkLoadTiddlersShowReport)
				story.displayTiddler(null,title);
			story.refreshTiddler(title,null,true);
		}
	}
}
//}}}
/***
|Name|LoadTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.9.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for LoadTiddlersPlugin|
!!!!!Usage
<<<
{{{
<<loadTiddlers label:... prompt:... filter source
	quiet confirm force init nodirty norefresh noreport autosave
	tag tag tag...>>
}}}
*''label:...'' and ''prompt:...''<br>link and tooltip text to trigger the load tiddler processing.  If a label is NOT provided, then no link is created and the loadTiddlers function is performed whenever the containing tiddler is rendered.
*''filter'' (optional keyword)<br>determines which tiddlers will be automatically selected for importing.  Use one of the following:
**''all''<br>ALL tiddlers from the import source document, even if they have not been changed.
**''new''<br>only tiddlers that are found in the import source document, but do not yet exist in the destination document
**''changes''<br>only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler
**''updates''<br>both ''new'' and ''changes'' (this is the default action when none is specified)
**''tiddler:TiddlerName''<br>only the specified tiddler is retrieved
**''tag:value''<br>only the tiddlers tagged with the indicated value.
*''source'' (required)<br>is the location of the imported document.  It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://").  Use the special keyword, ''ask'', to prompt for a source location whenever the macro is invoked
*''quiet'' (optional)<br>supresses all status message during the import processing.  Note: if any tiddlers are actually imported, a final message will still be displayed, even when 'quiet' is specified.  This ensures that changes to your document cannot occur without any visible indication at all.
*''confirm'' (optional)<br>adds interactive confirmation for each inbound tiddler, so that you can manually bypass any tiddlers that you do not want to import.  Note: this flag also adds confirmation when using the ''autosave'' option (see below).
*''init'' (optional)<br>invokes tiddlers tagged with <<tag systemConfig>> as plugins as soon as they are imported, without requiring a save-and-reload action first.  For safety, you will be asked to confirm each imported plugin, so that you can manually bypass any that you do not want to invoke.  Note, however, that those tiddlers are still //imported// and saved with your document and will still take effect the next time you save-and-reload the document.
*''force'' (optional)<br>imports all matching tiddlers, even if unchanged
*''noreport'' (optional)<br>suppress generation of [[ImportedTiddlers]] report
*''nodirty'' (optional)<br>loads tiddlers without marking the document as 'dirty' (i.e., needing to be saved)
*''norefresh'' (optional)<br>prevents automatic re-rendering of the page after tiddlers are loaded
*''autosave'' (optional)<br>automatically saves the document if tiddlers have been loaded
*''tag tag tag...'' (optional)<br>any remaining parameters are used as tag values to be added to each imported tiddler (i.e., "tag-on-import")
Note: if a tiddler in the current document is tagged with<<tag noReload>> then it ''will not be overwritten, even if the inbound tiddler has been selected'' by the filtering process.  This allows you to make local changes to imported tiddlers while ensuring that those changes won't be lost due to automatic tiddler updates retrieved from the import source document.
<<<
!!!!!Examples
<<<
{{{<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>}}}
<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>
{{{<<loadTiddlers "label:load tiddlers from %0 plus AUTOSAVE" example.html confirm norefresh autosave>>}}}
<<loadTiddlers "label:load tiddlers from %0" example.html confirm norefresh autosave>>
<<<
!!!!!Configuration
<<<
<<option chkLoadTiddlersShowReport>>after loading tiddlers, automatically display [[ImportedTiddlers]] (if created)
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2010.08.11 3.9.0 added 'autosave' optional param
2009.10.08 3.8.1 removed switchTheme() from doImport()... causes an INFINITE cycle of imports!
2009.10.06 3.8.0 added createTiddlerFromFile (import text files)
2009.10.04 3.7.8 in doImport(), call switchTheme() after loading tiddlers
2009.09.27 3.7.7 in readTiddlersFromCSV(), strip \r from input and fixed handling for quoted values
2009.09.01 3.7.6 added config.options.chkLoadTiddlersShowReport (default=true)
2009.09.01 3.7.6 added config.options.chkLoadTiddlersShowReport (default=true)
2009.08.30 3.7.5 in doImport(), check status and report error, if any
2009.08.29 3.7.4 in handler(), added 'return false' in button function (fixes IE page transition)
2009.08.19 3.7.3 in doImport(), fixed 'init' handling
2009.08.16 3.7.2 in doImport(), corrected check for tiddlers returned by readTiddlersFromHTML();
2009.07.03 3.7.1 fixups for TW252: doHttp() doesn't return XHR and convertUTF8ToUnicode() not needed for local I/O
2009.05.04 3.7.0 read CSV file format
2008.11.14 3.6.4 in loadFile(), force use of XMLHttpRequest if not viewing a local document (supports use of relative file references when online)
2008.10.27 3.6.3 in doImport(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.08.05 3.6.2 rewrote loadFile() to eliminate use of platform-specific fileExists() test
2008.08.03 3.6.1 in handler(), changed variable 'prompt' to 'tip' to avoid conflict with prompt() function
2008.01.07 3.6.0 added 'init' option to automatically invoke plugin tiddlers as soon as they are loaded (without needing save/reload)
2008.01.03 3.5.0 in loadFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.12.04 *.*.* update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.27 3.4.8 added missing 'fields' params to saveTiddler() call. Fixes problem where importing tiddlers would lose the custom fields.
2007.06.25 3.4.7 add calls to store.suspendNotifications() and store.resumeNotifications() to eliminate redisplay overhead DURING import activities.
2007.05.27 3.4.6 in handler(), loadRemoteFile() and doImport(), added 'noreport' flag to suppress generation of ImportedTiddlers
2007.05.27 3.4.5 in handler(), initialize 'newTags' to [] (empty array) instead of null... fixes fatal error when loading tiddler without autotagging.
2007.04.22 3.4.4 in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content.  Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
2007.04.05 3.4.3 in doImport(), changed this.readTiddlersFromHTML(html) to config.macros.loadTiddlers.readTiddlersFromHTML(html).
2007.03.26 3.4.2 renamed import() to doImport() to fix IE load-time error ("identifier expected").  "import" is a reserved word in some browsers...
2007.03.22 3.4.1 code cleanup: moved all functions inside object def'n, re-wrote report function
2007.03.21 3.4.0 split ImportTiddlersPlugin and LoadTiddlersPlugin into separate plugins
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
/***
|Name|LoadTiddlersPluginPatch|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPluginPatch|
|Version|3.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|LoadTiddlersPlugin|
|Description|backward-compatible function patches for use with LoadTiddlersPlugin and TW2.1.x or earlier|

!!!!!Usage
<<<
The current version LoadTiddlersPlugin is compatible with the TW2.2.x core functions.
This "patch" plugin provides additional functions needed to enable the current version of LoadTiddlersPlugin to operate correctly under TW2.1.x or earlier.

{{medium{You do not need to install this plugin if you are using TW2.2.0 or above}}}
(though it won't hurt anything if you do... it will just take up more space).
<<<
!!!!!Revisions
<<<
2008.08.05 [3.6.2] rewrote loadFile to eliminate use of platform-specific fileExists() function
2008.01.03 [3.5.0] added support for passing txtRemoteUsername and txtRemotePassword for accessing password-protected remote servers
2007.06.27 [3.4.8] compatibility functions split from LoadTiddlersPlugin
|please see [[LoadTiddlersPlugin]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
// these functions are only defined when installed in TW2.1.x and earlier... 
if (version.major+version.minor/10 <= 2.1) {

// Version
version.extensions.LoadTiddlersPluginPatch= {major: 3, minor: 6, revision: 2, date: new Date(2008,8,5)};

config.macros.loadTiddlers.loadFile = function(src,callback,params) {
	var quiet=params.quiet;
	if (src==undefined || !src.length) return null; // filename is required
	if (!quiet) clearMessage();
	if (!quiet) displayMessage(this.openMsg.format([src]));

	if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			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);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			if (!quiet) displayMessage(this.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"]));
		} else {
			if (!quiet) displayMessage(this.readMsg.format([txt.length,src.replace(/%20/g," ")]));
			if (callback) callback(true,params,convertUTF8ToUnicode(txt),src,null);
		}
	} else {
		var x; // get an request object
		try {x = new XMLHttpRequest()} // moz
		catch(e) {
			try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6
			catch (e) {
				try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5
				catch (e) { return }
			}
		}
		// setup callback function to handle server response(s)
		x.onreadystatechange = function() {
			if (x.readyState == 4) {
				if (x.status==0 || x.status == 200) {
					if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([x.responseText.length,src]));
					if (callback) callback(true,params,x.responseText,src,x);
				}
				else {
					if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,x.status]));
				}
			}
		}
		// get privileges to read another document's DOM via http:// or file:// (moz-only)
		if (typeof(netscape)!="undefined") {
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }
			catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
		}
		// send the HTTP request
		try {
			var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();
			x.open("GET",src,true,config.options.txtRemoteUsername,config.options.txtRemotePassword);
			if (x.overrideMimeType) x.overrideMimeType('text/html');
			x.send(null);
		}
		catch (e) {
			if (!quiet) {
				displayMessage(this.openErrMsg.format([src,"(unknown)"]));
				displayMessage(e.description?e.description:e.toString());
			}
		}
	}
}

config.macros.loadTiddlers.readTiddlersFromHTML=function(html) {
	// for TW2.1 and earlier
	// extract store area from html 
	var start=html.indexOf('<div id="storeArea">');
	var end=html.indexOf("<!--POST-BODY-START--"+">",start);
	if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents
	var sa="<html><body>"+html.substring(start,end)+"</body></html>";

	// load html into iframe document
	var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);
	f=document.createElement("iframe"); f.id="loaderFrame";
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	document.body.appendChild(f);
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
	d.open(); d.writeln(sa); d.close();

	// read tiddler DIVs from storeArea DOM element	
	var sa = d.getElementById("storeArea");
	if (!sa) return null;
	sa.normalize();
	var nodes = sa.childNodes;
	if (!nodes || !nodes.length) return null;
	var tiddlers = [];
	for(var t = 0; t < nodes.length; t++) {
		var title = null;
		if(nodes[t].getAttribute)
			title = nodes[t].getAttribute("tiddler");
		if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))
			title = nodes[t].id.substr(5);
		if(title && title != "")
			tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));
	}
	return tiddlers;
}

// // COPIED FROM TW2.2beta5
// // enables reading tiddler definitions using TW2.2 storeArea format, even when plugin is running under TW2.1.x
// // storeArea format changes include:
// // <pre> nodes
// // attribute(tiddler) renamed to attribute(title)
// // attribute(modified) is omitted if created==modified
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node)
{
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler")) {
		text = getNodeText(e).unescapeLineBreaks();
	} else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") {
			e = e.nextSibling;
		}
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	var fields = {};
	var attrs = node.attributes;
	for(var i = attrs.length-1; i >= 0; i--) {
		var name = attrs[i].name;
		if (attrs[i].specified && !TiddlyWiki.isStandardField(name)) {
			fields[name] = attrs[i].value.unescapeLineBreaks();
		}
	}
	tiddler.assign(title,text,modifier,modified,tags,created,fields);
	return tiddler;
};

} // END OF TW2.1.x backward-compatibility functions
//}}}
A magician asks an unsuspecting observer to randomly choose five cards from a standard deck of playing cards.  The participant does not show these cards to the magician, but does show them to the magician's accomplice. The accomplice looks at the five cards, chooses four of them, and shows these four to the magician in a certain ordered manner. The magician immediately identifies the fifth hidden card.
A magician asks an unsuspecting observer to randomly arrange 10 cards  which are labelled 1 to 10 in a  hidden "face down" manner. The participant does not show the arrangement of these cards to the magician, but does show them to the magician's accomplice. The accomplice looks at the ten cards and flips over six of the cards in a certain ordered manner to reveal their values to the magician. The magician immediately identifies the values of the four remaining unknown cards.
In a room there are n people, each labelled with a unique number between 1 and n. A person may either be a knight or a spy. Knights always tell the truth, while spies may lie or tell the truth as they see fit. Each person in the room knows the identity of everyone else. Apart from this, all that is known is that strictly more knights than spies are present. Asking only questions of the form: ‘Person i, what is the identity of person j?’, what is the least number of questions that will guarantee to find the true identities of all n people?

In another variant, found in the "An Introduction to Bioinformatics Algorithms:

There are 100 professors. Some are honest, while others are dishonest. There are more honest professors than dishonest ones. Honest professors always tell the truth, but the dishonest ones sometimes tell the truth and sometimes lie. You can ask any professor the following question about any other professor, "Professor Y, is Professor X honest?" to which he/she will answer yes or no. Design an algorithm that allows you to figure out which of the professors are honest with no more than 198 questions.

Solution can be found here
http://ma.rhul.ac.uk/~uvah099/Maths/ksDRev2.pdf
[[Introduction]]
[[Mathemagic|mathemagic]]
[[Easy|easy]]
[[Medium|medium]]
[[Hard|hard]]
[[Techniques|technique]]
[[Other sites|Other puzzle sites]] 
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300

Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

//{{{
// Pretty sure this is incomplete and experimental
// TODO: Fix it or remove it.

(function($){

merge(config.macros,{
  mptwCollapse: {
    handler: function(place,macroName,params) {
      createTiddlyButton(place, params[0] == '+' ? '\u25AD' : '\u25AC', 'collapse/uncollapse', function(){
        $(story.findContainingTiddler(place)).toggleClass('collapsed');
      });
    }
  }
});

/* this doesn't work unless you have a modified ViewTempate */
config.shadowTiddlers["MptwCollapsePluginStyles"] = ""
  +".collapsed .uncollapsedView { display:none;       }"
  +".collapsedView              { display:none;       }"
  +".collapsed .collapsedView   { display:block;      }"
  +".tiddler.collapsed          { padding-bottom:1em; }"
  +".tiddler.collapsed .title   { font-size:100%;     }"
;

store.addNotification("MptwCollapsePluginStyles",refreshStyles);

})(jQuery);

//}}}
/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false;  // means web visitors can experiment with your site by clicking edit
readOnly = false;                        // needed because the above doesn't work any more post 2.1 (??)
showBackstage = true;                    // show backstage for same reason

config.options.chkInsertTabs = true;     // tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = "";  // don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";    // don't need message when creating a new tiddler

config.options.chkSaveBackups = false;         // do save backups
config.options.txtBackupFolder = 'twbackup';  // put backups in a backups folder

config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file
config.options.chkAutoSave = false; // disable

config.mptwVersion = "2.7.3";

config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};

if (config.options.txtTheme == '')
  config.options.txtTheme = 'MptwTheme';

// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see \[\[AdvancedOptions\]\])/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';

//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|

!StyleSheet
/*{{{*/

[[MptwTheme##StyleSheet]]

.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
}
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;
}

/*}}}*/

Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

!PageTemplate
<!--{{{-->
<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>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <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='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
<div class="uncollapsedView">
[[MptwTheme##ViewTemplateToolbar]]

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	<!--
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
	-->
</div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>
</div>
<div class="collapsedView">
	<span class='toolbar'>
		<span macro='toolbar closeTiddler'></span>
		<span macro='mptwCollapse +'></span>
	</span>
	<span class='title' macro='view title'></span>
</div>

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
	<!--span macro='mptwCollapse -'></span-->
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->

!StyleSheet
/*{{{*/

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS', sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas', monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS', sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}

/* get user styles specified in StyleSheet */
[[StyleSheet]]

/*}}}*/

|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|

!PageTemplate
<!--{{{-->

<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
	</div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>

/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{

// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';

// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';

// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';

// uncomment to disable 'new means new' functionality for the new journal macro
//config.newMeansNewForJournalsToo = false;

//}}}
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
  newHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
    }
  },
  newJournalHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
    }
  }
});

//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

// change this or set config.newMeansNewForJournalsToo it in MptwUuserConfigPlugin
if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;

String.prototype.getNextFreeName = function() {
  numberRegExp = / \(([0-9]+)\)$/;
  var match = numberRegExp.exec(this);
  if (match) {
  var num = parseInt(match[1]) + 1;
    return this.replace(numberRegExp," ("+num+")");
  }
  else {
    return this + " (1)";
  }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
  var r = false;
  story.forEachTiddler(function(title,element) {
    if (title == newName)
      r = true;
  });
  return r;
}

config.macros.newTiddler.getName = function(newName) {
  while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
    newName = newName.getNextFreeName();
  return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
  var title = this.getAttribute("newTitle");
  if(this.getAttribute("isJournal") == "true") {
    title = new Date().formatString(title.trim());
  }

  // ---- these three lines should be the only difference between this and the core onClickNewTiddler
  if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
    title = config.macros.newTiddler.getName(title);

  var params = this.getAttribute("params");
  var tags = params ? params.split("|") : [];
  var focus = this.getAttribute("newFocus");
  var template = this.getAttribute("newTemplate");
  var customFields = this.getAttribute("customFields");
  if(!customFields && !store.isShadowTiddler(title))
    customFields = String.encodeHashMap(config.defaultCustomFields);
  story.displayTiddler(null,title,template,false,null,null);
  var tiddlerElem = story.getTiddler(title);
  if(customFields)
    story.addCustomFields(tiddlerElem,customFields);
  var text = this.getAttribute("newText");
  if(typeof text == "string")
    story.getTiddlerField(title,"text").value = text.format([title]);
  for(var t=0;t<tags.length;t++)
    story.setTiddlerTag(title,tags[t],+1);
  story.focusTiddler(title,focus);
  return false;
};

//}}}
There are infinitely many people registered on the social network Mugbook. Some pairs of (different) users are registered as friends, but each person has only finitely many friends. Every user has at least one friend. (Friendship is symmetric; that is, if A is a friend of B, then B is a friend of A.) Each person is required to designate one of their friends as their best friend. If A designates B as her best friend, then (unfortunately) it does not follow that B necessarily designates A as her best friend. Someone designated as a best friend is called a 1-best friend. More generally, if n > 1 is a positive integer, then a user is an n-best friend provided that they have been designated the best friend of someone who is an (n - 1)-best friend. Someone who is a k-best friend for every positive integer k is called popular. 

(a) Prove that every popular person is the best friend of a popular person.
(b) Show that if people can have infinitely many friends, then it is possible that a popular person is not the best friend of a popular person.
Given a infinite grid coloured by n colours, can we always find a rectangle whose vertices are all of the same colour?
Simpler case n = 2

Gallai's Theorem

Given a infinite grid coloured by n colours, can we always find a square whose vertices are all of the same colour?
Simpler case n = 2
How many n are there such that n! + 1 is composite?
Which positive integers can be written as the sum of two or more consecutive positive integers?

Source: UKMT Senior
[[A collection from a thread thestudentroom|the_proof_is_trivial.pdf]]
There are n people at a party. The average number of friends per partygoer is d. Prove that it is possible for some of the partygoers to be in a room where everyone is friends with at least d/2 other people in the room.
Note that friendship is mutual: i.e. if A is a friend of B then B is a friend of A and vice versa.

[[solution|O6-solution]]
This question can be rephrased in graph theory lingo: 
Every graph G with average degree d contains a subgraph H such that all vertices of H have degree at least d/2 (with respect to H).
Solution: Condition on G is that the number of edges is at least nd/2. If there is a vertex with degree < d/2, then delete it, and it costs 1 vertex and < d/2 edges, so the condition is preserved. But it can’t go on forever, because once there is 1 vertex left, average degree is 0. So at some point during the process the condition must be satisfied.
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]]
{{select{<<selectTheme>>
<<selectPalette>>}}}
----
Also see [[AdvancedOptions]]
Also see [[UploadOptions]]
Here is a list of note worthy puzzle sites

* IBM - http://domino.research.ibm.com/Comm/wwwr_ponder.nsf/pages/index.html
* CMU - http://www.cs.cmu.edu/puzzle/
* Using your head is permitted - http://www.brand.site.co.il/riddles/
* Mirin math circle http://www.marinmathcircle.org/problems.html
* Nice general puzzles http://gurmeet.net/puzzles/
* Cambridge University Computing and Technology Society puzzle hunt 2013 http://cucats.soc.srcf.net/puzzlehunt
* http://richardwiseman.wordpress.com/101-friday-puzzles/
* http://n1b-algo.blogspot.co.uk/
* Another collection of puzzle site http://www.qbyte.org/
* https://www.math.uni-bielefeld.de/~sillke/
* http://www.mathpropress.com/mathCenter.html

! Olympiad
* http://www.ukmt.org.uk/

! Puzzlehunts

* Singapore 2015 http://www.sgpuzzlehunt.com/2015/puzzles.html


http://www.cs.ox.ac.uk/ugadmissions/how_to_apply/sample_interview_problems.html

! Other resources
[[Compiled russian maths puzzles from rec.puzzles|Collection of russian maths puzzles]]
Prove that in a sequence of mn+1 real numbers, there is some subsequence of (m+1) numbers is increasing or some subsequence of (n+1) numbers is decreasing.


!Obfuscated version
Line 50 people in order of age. Prove that there exists a selection of 8 people who are in order of increasing/decreasing height.

[[Solution|p1-solution]]
Player A and B play a game. There is a 2x2 board containing 4 coins. Player A does not know the orientation of the coins. Player B can see the board and the coins. Each turn, Player A specifies a set of cells. The coins in those specified cells are then flipped. Player B then rotates the board by either 0, pi/2, pi, 3*pi/2 and the process is repeated. Player A wins if at any point in time all the coins are heads. Can player A guarantee a win?

Source: A friend

see also [[CS12) Coin flipping magic|CS12) Coin flipping magic]]
There are 1000 pirates and they collectively discovered a chest containing 1000 coins. They are deciding how to split the loot. The 100 pirates are first ranked according to seniority and the most senior pirate starts by making a proposal for the split. After his proposal, all the pirates (including himself) will vote on the proposal. If at least half the pirates vote for the proposal, then the loot will be split according to the proposal, otherwise the senior pirate will be killed (hence cannot vote in the future) and the process is repeated until a proposal is accepted. The assumptions are that a pirate vote is based solely on the amount he can receive, the 100 pirates are perfect logicians, they are selfish and want to maximise their gains, they would rather get no coin than die, and they will vote in favour of any proposition that gives them the maximum amount so whats the maximum the most senior pirate can get (if at all) or how will this turn out?

What if individual pirate votes no if it is possible he get the same payoff in the future?

What if a tie means the proposer gets killed?

There are 6 spherical robot sentinels floating in a regular hexagonal arrangement in a large empty room. They do not move, but can observe everything around them, and none of them are obstructing their views of each other.

What proportion of the robots' total surface area are within sight of precisely n of the other robots (for n = 0 to 5)?
You have n coins of equal weight. You want to put the coins 1 at a time onto a balance scale such that one side is always heavier than the other side.
How many ways can you do that?

!Actual question
You have N coins of weight 1g to Ng. You want to put the coins one at a time onto a balance scale such that one side is always heavier than the other side.
How many ways can you do that?
Is there an infinite sequence of zeros and ones such that there is no three consecutive sub-sequences of any length?
Once upon a time there was a land where the only antidote to a poison was a stronger poison, which needed to be the next drink after the first poison. In this land, a malevolent dragon challenges the country's wise king to a duel. The king has no choice but to accept.

By bribing the judges, the dragon succeeds in establishing the following rules of the duel: Each dueler brings a full cup. First they must drink half of their opponent's cup and then they must drink half of their own cup.

The dragon wanted these rules because he is able to fly to a volcano, where the strongest poison in the country is located. The king doesn't have the dragon's abilities, so there is no way he can get the strongest poison. The dragon is confident of winning because he will bring the stronger poison.

The only advantage the king has is that the dragon is dumb and straightforward. The king correctly predicts what the dragon will do. How can the king kill the dragon and survive?
A blind man has a key ring with n keys, they are all indistinguishable by touch. To help the blind man distinguish the keys we can alter one end of the key to form different shapes. For example, consider the linear case, if we have a chain of n keys, by shaping the first key into a different shape, the man can distinguish every other key by counting the number of keys from the odd key. The question is, what is the minimum number of different shapes such that it is possible for the blind man to distinguish every other key? In the linear case, the answer is two since we just need the original shape and one different shape to mark the end.


source: http://math-fail.com/2013/05/the-blind-mans-keys.html
Alex and Bob work as financial advisors for the same company. They draw equal salaries from the company. They behave well at the office. Both work on similar assignments. Each assignment requires a yes-no decision. The company uses the decisions made by them to make profits.

After the recession hit the company very badly, one of them has to be fired. Both Alex and Bob have worked on almost the same number of assignments in the last ten years. Alex has been consistently taking about 80% decisions correctly every year. Bob, on the other hand, has been taking only about 5% correct decisions every year.

Assuming that the performances of Alex and Bob would remain the same in future, who should the company fire to maximize its profits in the years to come? Why?
A group of friends wants to know their average salary such that no individual salary can be deduced. There are at least three friends in the group. How can this problem be solved with a pen and paper?
Rajeev is trapped atop a building 200m high. He has with him a rope 150m long. There is a hook at the top where he stands. Looking down, he notices that midway between him and the ground, at a height of 100m, there is a ledge with another hook. In his pocket lies a Swiss knife. Hmm... how might he be able to come down using the rope, the two hooks and the Swiss knife?

Source: http://gurmeet.net/puzzles/
100 prisoners are imprisoned in solitary cells. Each cell is windowless and soundproof. There's a central living room with one light bulb; the bulb is initially off. No prisoner can see the light bulb from his or her own cell. Each day, the warden picks a prisoner equally at random, and that prisoner visits the central living room; at the end of the day the prisoner is returned to his cell. While in the living room, the prisoner can toggle the bulb if he or she wishes. Also, the prisoner has the option of asserting the claim that all 100 prisoners have been to the living room. If this assertion is false (that is, some prisoners still haven't been to the living room), all 100 prisoners will be shot for their stupidity. However, if it is indeed true, all prisoners are set free and inducted into MENSA, since the world can always use more smart people. Thus, the assertion should only be made if the prisoner is 100% certain of its validity.

Before this whole procedure begins, the prisoners are allowed to get together in the courtyard to discuss a plan. What is the optimal plan they can agree on, so that eventually, someone will make a correct assertion?

[Hint: there are solutions that require on average less than 27 years]
Mary baked a rectangular cake. Merlin secretly carved out a small rectangular piece, ate it and vanished! The remaining cake has to be split evenly between Mary's two kids. How could this be done with only one cut through the cake?

Note, cutting the cake horizontally is not the solution we're looking for. It could be the case that the cake has frosting on top and it wouldn't be fair to split it as such.

Source: http://gurmeet.net/puzzles/
An  old  wolf  had  spent  days  crossing  a  vast  wasteland  without 
anything to eat.  Starving,  he came upon a large metal enclosure in the middle of  a  field.  Inside  the compound were many  very 
fat,  well-fed sheep.  The walls of the enclosure were so high and 
the bars  so close together that it was impossible for the sheep or 
anything  to  escape  once  inside.  Due to his long  fast,  however, 
the wolf was  so thin that he knew he could squeeze in through 
the  bars  and  feast  himself  on  the  sheep  to  his  heart's  content. 
Although hunger urged him on,  the wily wolf also realized that after he ate his fill,  he would be unable to  escape.  The wolf sat 
and pondered and then found an ingenious solution.  What did the wolf do? 

Source : Lateral logic puzzle - Erwin brecher q15
Each of n customers leaves a hat at a hat-check and is then returned
a random one when they leave. What is the expected number of customers that
get the correct hat back?
You have two identical glass bottles that will break if dropped from a specific floor between 1 and 100. Find the most efficient way to find out which floor will break the glass.

[[Solution|p23-solution]]
Suppose you have n friends, and you want to distribute a secret to all of them. Each day, everyone can only call one friend to tell him or her the secret. How should you coordinate this distribution of secret such that it takes the least number of days for everyone to learn about it?

[[solution|p24-solution]]
A thousand wires hang on a very high tower, so high that you cannot see what tip belongs with what bottom. This is something you are interested in knowing. You have a battery and a light bulb which will light up if two wires connect it to the battery with appropriate polarity (i.e. the battery and bulb each have two contact points, and one of each is + and the other side is -). Wires may be tied together to form longer wires, and you can see the bulb light up even if you are on the opposite side of the tower. Since the tower is so high, you want to minimize the number of times you have to climb up and/or down the staircase, regardless of how much you have to do while you are at the top or bottom. What is the minimum number of traversals required?
You are blindfolded, then given a deck of cards in which 23 of the cards have been flipped up, then inserted into the deck randomly (you know this). Without taking the blindfold off, rearrange the deck into two stacks such that both stacks have the same number of up-flipped cards. (You are allowed to flip as many cards as you please).

!An alternate version
You walk into a dark room with exactly 10 heads up coin. You are to separate the coins into two piles such that the number of heads up coins in each pile is the same. You can flip as many coins when you're doing this.
A princess inhabits a flight of 17 rooms in a row. Each room has a door to the outside, and there is a door between adjacent rooms. The princess spends each day in a room that is adjacent to the room she was in the day before. One day a prince arrives from far away to woo for the princess. The guardian explains the habits of the princess and also the rules to him: Each day he may knock at an outside door of his choice. If the princess is behind it she will open and in the end marry him. If not, nothing happens, and he gets another chance the next day. Unfortunately his return ticket expires after 30 days. Does he have enough time to conquer the princess?
Suppose I offer you four prizes: Prize A,B,C or D. You are to make a statement - any statement you like. If the statement is clearly true, I will give you a prize. You will win either A or B, I am not saying which one. If your statement is false, I will give you either C or D.

1) What statement should you make to ensure that you will win prize A?
2) what statement should you make to ensure that you will win prize C?
3) What statement should you make if you want to make me go back on my promise?
Rainman, on 29 Nov 2012 - 22:01, said:
An amoeba is sitting on the bottom left square (A1) of a chessboard which extends infinitely upwards and to the right. You can make an amoeba split into two. If an amoeba is split into two, its offspring will take the square directly above and the square directly to the right of the parent amoeba. This vacates the square of the parent amoeba. So your first move, splitting the amoeba on A1, will put one amoeba on A2 and one amoeba on B1. An amoeba can only split if both spaces for its offspring are unoccupied. Your objective is for all the amoebas to evacuate the area A1, A2, A3, B1, B2, B3, C1, and C2. (Squares marked with x in drawing below)
<html>
<pre>
...........
oooooooo...
oooooooo...
xxoooooo...
xxxooooo...
xxxooooo...
</pre>
</html>
We all know about the Census problem, 

A census taker approaches a house and asks the woman who answers the door "How many children do you have, and what are their ages?"

Woman: "I have three children, the product of their ages are 36, the sum of their ages are equal to the address of the house next door."

The census taker walks next door, comes back and says "I need more information."

The woman replies "I have to go, my oldest child is sleeping upstairs."

Census taker: "Thank you, I now have everything I need."

What are the ages of each of the three children?

!Here is a variation of the problem that is alleged to have appeared in the Singapore PSLE 2012.

Ben and Mark are students of Mr Tan. Mr Tan's birthday is on N/M/1970 and both of them know that Mr Tan's birthday is one of these 10 dates.

|4/3	|5/3 	|8/3|
|3/6	|7/6 	||
|1/9	|5/9||
|1/12	|2/12	|8/12|

Mr Tan tells Ben the value of M and tells Mark the value of N. Then Mr Tan asks them: "Do you know when is my birthday?"

Ben says:" I don't know, but I am sure that Mark doesn't know either."
Mark says:" Initially I don't know, but now I know."
Ben says:" Oh, then I know it too."

Base on the dialogue and the dates given, can you figure out which date is Mr Tan's birthday?

!Another classic variation

Two perfect logicians, S and P, are told that integers x and y have been chosen such that 1 < x < y and x + y < 100. S is given the value x+y and P is given the value xy. They then have the following conversation.

P: I cannot determine the two numbers.
S: I knew that.
P: Now I can determine them.
S: So can I.

Given that the above statements are true, what are the two numbers?
!Two player version

Albert and Bilbert are about to play a game in which hats, either rouge or puce, will be placed on their heads. Each will be able to see the color of his partner's hat, but not the color of his own. At the blow a whistle Albert and Bilbert will simultaneously make a guess as to the color of his own hat. Incorrect guesses will not be punished. A win consists of at least one correct guess. What strategy can Albert and Bilbert agree upon to secure a win?

!100 player version

Following the same rules as above, one-hundred players will play the same game with hats that can be any of 100 different colors. (Not all colors need be used.) Each player can see the colors of her 99 colleagues. If a win consists of at least one correct guess and no penalty for incorrect guesses, devise a strategy that guarantees a win.
/***
|''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"
	});
*/
//}}}
When there are k pigeonholes and there are k+1 mails, then they will be 1 pigeonhole with at least 2 mails. A more advanced version of the principle will be the following: If mn + 1 pigeons are placed in n pigeonholes, then there will be at least one pigeonhole with m + 1 or more pigeons in it.

!Canonical examples
Consider a sequence of any 7 distinct real numbers. Is it possible to select two of them say x and y, which satisfy the inequality that  0 < (x-y)/(1+xy) < 1/sqrt(3)   
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
  var diff = (((new Date()).getTime() - this.getTime()) / 1000);
  var day_diff = Math.floor(diff / 86400);

  if (isNaN(day_diff))      return "";
  else if (diff < 0)        return "in the future";
  else if (diff < 60)       return "just now";
  else if (diff < 120)      return "1 minute ago";
  else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
  else if (diff < 7200)     return "1 hour ago";
  else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
  else if (day_diff == 1)   return "Yesterday";
  else if (day_diff < 7)    return day_diff + " days ago";
  else if (day_diff < 14)   return  "a week ago";
  else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
  else if (day_diff < 62)   return "a month ago";
  else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
  else if (day_diff < 730)  return "a year ago";
  else                      return Math.ceil(day_diff/365) + " years ago";
}

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
  return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}

// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)';
config.mptwDateFormat = 'pppp';

//}}}
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

  dropdownChar: (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);

    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 tagged = store.getTaggedTiddlers(tiddler.title);
    if (tagged.length > 0) {
      var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                          config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
      theTag.setAttribute("tag",tiddler.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 #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
" { border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
" { margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
" /* looks better in right justified main menus */",
" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }",
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
    ""].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["QuickOpenTagStyles"] = this.styles;
    store.addNotification("QuickOpenTagStyles",refreshStyles);
  }
}

config.quickOpenTag.init();

//}}}
There is one pile of counters. The first player may remove any positive number of counters, but not the whole pile.
Thereafter, each player may remove at most twice the number of counters his opponent took on the previous move.
The player who removes the last counter wins. Can the first player always win?
!4 bugs problem

Imagine four bugs situated at each vertex of a unit square.
Suddenly, each bug begins to chase its counterclockwise neighbour.
If the bugs travel at 1 unit per minute, how long will it take for the four bugs to crash into one another?

!Hexagon

What if there are 6 bugs on each vertex of a unit hexagon?

!Triangle

What if it is on a triangle?
Solve: x^4 + x^3 + x^2 + x + 1 = 0
There are 6 dots arranged in a line. An "unlock code" is a path through some or all (but not none) of these points. subject to the limitations:
1) No point can be visited twice,
2) If a point obstructs another point, the obstructing point should be visited first.

(eg if the points are numbered 1-6 from left to right, then the paths "1-2-3", "2-3-1", "3-4-5-2" are permitted, but "1-3", "3-4-1" are not.)

How many possible unlock codes are there?
A pentagon and its mid points are drawn. The original pentagon is then erased, leaving just its mid points visible. Is it possible to reconstruct the pentagon?
1) How may different coloured cubes can we make if we have six distinct colour and every face of the cube has to have a different colour?
2) What about a regular solid with n faces and n distinct colours?
3) What about a cube with k distinct colours where k > 6?
4) What about a regular solid with n faces and k distinct colours where k > n?
5*) What if the colours were allowed to repeat?

[[Partial Solution | RM10-soln]]
!How may different coloured cubes can we make if we have six distinct colour and every face of the cube has to have a different colour?

We first fix one of the faces, say the bottom one to one colour. Then we choose the face opposite that, there are 5 ways of doing that. Next, we choose the 4 sides, which is the same as arranging 4 objects in a circle, so there are 4!/4 ways. The total = 5 * 4!/4

We can generalise this to a regular solid of n faces and n colours to get the following formula: (number of faces)!/(2 * number of edges)

!Colours are allowed to repeat

Look at [[Burnside Lemma|Burnside Lemma]]


Given a, b, c. Come up with a way to determine the first and last c digits of a^b (a to the power of b)?
For example, find the first 10 digits of 2^100000000

We can assume that computers can be used, however, the problem with direct calculations is that the answer may overflow. For a computational exercise, consider a and b to be between 1 and 10^9, c to be between 1 and 9.

[[Solution | RM11-soln]]
!Solution 1

To determine the last k digits of a * b, we only need to keep track of the last k digits for both a and b. We want to have a similar method for the first k digits - keeping track of only the first n digits of a and b to determine the first n digits of a * b. The difficulty is to determine what value of n is needed for each k.

We can use the concept of fractional error to aid our calculation. Suppose we store "a" inaccurately as x with a relative error of e, ie a * x = | a-x |, then the relative error of a^m = m * e. We can determine with high probability* what the first k of a^m will be if we make sure the absolute error is small enough such that a^m plus minus absolute error does not change the first k digits. This can be done by setting e such that m * e < 10 ^ (-k).

Manipulating the equation, we need e < 10^(-k) / m. Or e < 10 ^ ((-k) - length(m)) < 10^(-k) / m. 

This means if we keep the first k + length(m) digits of a, we can determine the k digits of a * a accurately.

This algorithm has a complexity of O(m), but we can make it O(log m) by calculating the powers of a more effectively, as illustrated by the following code:

{{{
// calculate the power of a to the m.
pow (a, m) = 
	if m = 1 then a
	else if (m mod 2 == 0) then pow (a*a, m div 2)
	else a * pow (a*a, m div 2)
}}}

!Solution 2

We note that a^x = x * 10^log (a).
To find a^m, we just need to find accurately the first k digits of the fractional part of m * log_10 (a), then 10^m * log_10(a) will give us the digits required
How many distinct ways are there to arrange 4 identical white and 4 identical black stones in a circle such that they are evenly spaced? An arragement is distinct if it cannot be obtained by rotating another arragement. For example, WWWWBBBB is the same as BBBBWWWW

[RM12-soln]

!Extension

This can be extended to m black and n white.
There are two heuristic to solving this:

1) Calculate total possibilities by counting permutations in a line.
2) Consider symmetric case separately

Label the positions 1 to 8 and assume, WLOG, that position 1 is black. Otherwise rotate the arrangement. With position 1 fixed, count the number of ways to arrange the rest. This is equivalent to counting in a striaght line, so there are 7C3 = 35 possibilities. However, some of this has rotational symmetries so we exclude them. The arrangements with rotational symmetries are:

BBBBWWWW (, BBBWWWWB, BBWWWWBB, BWWWWBBB)
BBWWBBWW (, BWWBBWWB)
BWBWBWBW

Excluding these 7 patterns, we have 28 patterns that have rotational order 1 and we would have counted them 4 times for each pattern. So we divide by 4 to get the number of distinct pattern ( = 28 / 4 ). 

Adding back to the symmetric case, we have 7 + 3 = 10.
The powers 2^n and 5^n start with the same digit where n is a positive integer. What are the possible values for this digit?

Source:
http://www.mathematik.uni-bielefeld.de/~sillke/PUZZLES/powers-2-5
http://cotpi.com/p/63/
In the figure below, the rectangle in the top left corner measures 3 cm by 6 cm.
What is the radius and area of the circle? What is the area of the square?
<html>
<img src="data:image/gif;base64,R0lGODlheAB4AIcAAP///z8/PwAAAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAAAAP8ALAAAAAB4AHgAAAj/AAUIHEiwoMGDCBMqXMiwocOHAgBInEixosWLGDNq3Mixo8eOAgEEGEmypMmTAQBANIhRYcuVMBOqjIiyJsqZKyfGPKhzp8+ZIm0KHYmzYU+fMiUizRly6NCiSaEudal06kKgToVKLVjVas6tXiM2zVoT7NGwMM+GxUr2JkuwaNPGFUuz7UmocOemzSu3rt2SOLvq9SoYKdu/JIEOHszXIdCPGhcvLty3sUvJmOnuVLw5c2bLCDl/9eyZstGQfUmTBk1QtGPVsDW/ls2QdWzCEF1fvX2btW6ZvHmD/s0zeHDLxLkaN944+UDby+fydY46+vHdtJVbZ345+/Pty/M6/4cOPi7c5OTLmw9dXbv68MW9p3+Pduvv+fTrs2z/PT987Xj5Z12AsuEnoH79FWXggbgl2B+D0QXW3oIQWiWhZhRWuNSF1Gm4WnUdevgZiN6JCBtnKmVoomF0pbgifI+9GGGMMjJHY43C3YhjbFWZtuNnOv64WohC6kVkkeuViORk/C05opJOStdklExCSeVaU14ppZVaTnVkl51xCeZPWY5pYZlmbohmmmSKyWZua75ZmZxYuklnbXHeOZuKdH6pJ3AR8clmj4KmSeifPwWJ6EOHLroXaoWC6aJYkXY56aSOvoZipqe1mCenm9q5aKii6snhg5zG5+mniCrIX6VIurRKG6w/Ekhgqqiu2hquU97Hq31Z0voisCUKK6JZZRrrIbJKKgvheWg6e6B4a0rrH7VWWvvedHlqC15zn3obYafDGbono2P6xuq6w8JZqrgfuksevJjNy26uO6bn565Czrcvvzji929r9Hpp4MBcFRyTj/I2+GyDfDK8ncRMlYonfRTPaZ7C+20Ja8ZAMnbvV+KqlaSzIFuI8siJfpzymRYbTNFmFfUWEmQ456zzzjxbxOtOAQEAOw==">
</html>

Source : http://math.ucsd.edu/~wgarner/personal/puzzles/

Solution: Jr pna guvax bs vg va n pbbeqvangr flfgrz. Vs jr fhofgvghgr gur cbvag guerr,fvk vagb gur rdhngvba bs gur pvepyr jr trg na rdhngvba va e, gur enqvhf bs gur pvepyr. Gura jr ner qbar.
How many acute triangles can be formed using the vertices of a cube?

Source: http://math.ucsd.edu/~wgarner/personal/puzzles/cube_puzzle.htm

Solution:

Gur fbhepr gnyxf nobhg n fbyhgvba juvpu V yvxr. Vg fbyirf vg hfvat cebonovyvgl. jr svaq gur cebonovyvgl gung n gevnatyr vf nphgr, gura jr zhygvcyl ol gur gbgny ahzore bs gevnatyrf. Ol flzzrgel, jr pna pbafvqre whfg bar iregrk, naq pbhag gur ahzore bs nphgr gevnatyrf naq gbgny ahzore bs gevnatyr gung vapyhqrf gung iregrk. jr trg guerr nphgr gevnatyrf bhg bs n gbgny bs gjragl bar (frira gvzrf fvk qvivqr ol gjb), tvivat gur engvb gjb qvivqr ol frira. gurer ner n gbgny bs rvtug pubbfr guerr gevnatyrf, naq zhygvcylvat vg ol gur cebonovyvgl tvirf gur nafjre
Find a number consisting of 9 digits in which each of the digits from 1 to 9 appears only once. This number should satisfy the following requirements:
- The number has to be divisible by 9.
- If the right most number is removed, the remaining number must be divisible by 8.
...
- If the 8 right most digits are removed, the remaining number must be divisible by 1.

Solution in prolog:

puzzle(A,B,C,D,E,F,G,H,I):-
Vars = [A,B,C,D,E,F,G,H,I],
Vars in 1..9,
all_different(Vars),
0 #= (10*A + B) mod 2,
0 #= (100*A + 10*B + C) mod 3,
0 #= (1000*A + 100*B + 10*C + D) mod 4,
0 #= (10000*A + 1000*B + 100*C + 10*D + E) mod 5,
0 #= (100000*A + 10000*B + 1000*C + 100*D + 10*E + F) mod 6,
0 #= (1000000*A + 100000*B + 10000*C + 1000*D + 100*E + 10*F + G) mod 7,
0 #= (10000000*A + 1000000*B + 100000*C + 10000*D + 1000*E + 100*F + 10*G + H) mod 8,
0 #= (100000000*A + 10000000*B + 1000000*C + 100000*D + 10000*E + 1000*F + 100*G + 10*H + I) mod 9,
labeling([],Vars).

Solution : bar pna nyfb nethr ybtvpnyyl (ol jevgvat bhg rdhngvbaf va zbqhyhf) naq erqhpr gur cbffvovyvgvrf gb 10.
On the blackboard the mathematics professor wrote a polynomial f(x) with integer coefficients and said, "Today is my son's birthday. When his age A is substituted for x, then f(A) = A. You will note also that f(0) = P and that P is a prime number larger than A. How old is the professor's son?
You are given three piles with 5, 49 and 51 pebbles respectively. Two operations are allowed: (a) merge two piles together or (b) divide a pile with an even number of pebbles into two equal piles. Is there a sequence of operations that would result in 105 piles with one pebble each?

Source: http://gurmeet.net/puzzles/
There are n persons in a circle, numbered 1 thru n. Going around the circle, every second person is removed from the circle, starting with person number 2, 4, and so on. Show that the number of the last person remaining in the circle can be obtained by writing n in binary, then moving the leftmost 1 to the right. So for example, with n = 13 persons (1101 in binary), the last person is number 11 (1011 in binary).

Source: Classic problem found in introductory books on combinatorics.

Update 10/12/2014
A simulation in python:
{{{
def jos(n,k):
    s = range(n)
    start = 0
    for i in range(n,1,-1):
        start = (start + k) % i
        s.pop(start)
        start -=1
    return s[0]
}}}

While there is a nice formula for power of 2s, there doesn't seem to be one for other powers.
A military base has a number of identical hoverplanes. Each hoverplane can carry enough fuel to fly exactly halfway around the planet. Hoverplanes do not use any fuel while hovering stationary in the air, and hoverplanes can transfer any amount of fuel between each other while in the air. What is the minimum number of planes are that are needed so that one plane is able to get all the way around the planet and all assisting planes return safely to base?

[[Solution| rm20-solution]]

Still looking for an elegant solution
source: http://www.marinmathcircle.org/
<html><img width="600" height="337" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAFRAlgDASIAAhEBAxEB/8QAHAABAAMBAQEBAQAAAAAAAAAAAAECAwUGBAcI/8QATxAAAQIEBAMEBQgGBwcCBwAAAQACAwQFEQYSITFBUWETInGBFBYykZQHQlJWYqHR0hUjVWOxwSQzNENTcvAlREVzdKLhNYIXVGSDwsPx/8QAGgEBAAIDAQAAAAAAAAAAAAAAAAEDAgUGBP/EADMRAQACAgEEAAQEBAYDAQAAAAABAgMREgQTITEFMkFRFCJSgTORsfBCQ2FicdGhwfHh/9oADAMBAAIRAxEAPwD+VEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARFNja9tEEIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiINoEN8aNDhQmufEe4Na1ouSTsB1X9G+olJ9Tf/h92MH1n7P07024v6flv6Nm2y5O5vbNruvDfIlRWSQm8a1KG10vTHdlT4bxpGnCLtPhDHfPXKu16ZMem+l9s/wBJ7Tte1v3s973vzutr8P8Ah/4mtrW/b/lqfiHxD8Peta/u/EY8J8GPEhRWlkVji1zXCxBG4KyX618ttFZOtlMa06E1sCpu7KoQ2DSDOgXcegiDvjrmX5LstbkpOO01t7hs8d4yVi9fUoREWDMREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR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" />
</html>

source http://scienceblogs.com/startswithabang/2012/07/28/weekend-diversion-triangles-a-puzzle-and-beauty/
I am thinking of a polynomial in x. I tell you that the coefficients are either -1, 0 or 1. You can ask me a question by giving me an integer (x) and I will tell you what f(x) is. What is the minimum number of questions you need to ask to determine the polynomial?

Extension: Suppose I tell you the coefficients are 0, 1, 2, 3, 4, or 5. How many questions do you need?
Extension 2: Suppose my coefficients are [-k, k], how many questions do you need?
Extension 3: Suppose now I only tell you the coefficients are non-negative, how many questions and what are the questions?

[[RM22-soln]]

source:http://mindyourdecisions.com/blog/2014/05/05/monday-puzzle-guess-my-polynomial/
We solve the general case that is extension 2. We just need one question, the value of f(2k+1) or any x >= 2k+1, because we can express every number uniquely in base 2k+1. To handle negative number, we recursively change occurrences of (..., a, -b, ...) to (..., a+1, k-b, ...).

In the case where you don't know the range of the coefficients, you can just ask an extra question of f(1) to find out the largest possible coefficient and ask any number larger than that. In particular, asking for the power of ten that is larger than that will give the answer in a readable format.
Find a 10 digit number such that the n-th digit is the number of n's in the number. e.g. the 3 digit is how many threes there are in the number.

Is the solution unique? Explain.
1) You have 21 pills. One of them is poisonous, which you know is heavier than the others. You have a tipping scale. How can you find in three weighing the poison pills? What is the theoretical maximum? Can it be achieved?

2) You have 12 pills. You know one of them is poisonous pill, but do not know whether it is lighter or heavier than the rest. How can you find this pill, as well as determine whether it is heavier or lighter compared to the rest, in three weighing? What is the theoretical maximum? Can it be achieved?

[[Solution|rm24-solution]]
A point P is inside an equilateral triangle of side length d such that the distances to the vertices are given by a, b, c. Find the formula relating a,b,c,d.

Try with the case a,b,c = 3,4,5

[[solution|rm25-solution]]
Given triangle ABC, with cevians AD, BE, CF dividing the sides in ratio 1:2, whats the area of the triangle in the middle?
<html>
<img width="100%" src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACLwAAAaQCAYAAABrNNWZAAAgAElEQVR4Aezdi5KcOrIFUHui//+X+1qeqzHGQPFICT3WiThRVRSkUitxxBn3Hvrn969/fviHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQCcC/+mkT20SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+C0g8OJGIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6EpA4KWrcWmWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBA4MU9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0JWAwEtX49IsAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAwIt7gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCsBgZeuxqVZAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABgRf3AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFcCAi9djUuzBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECAi/uAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAga4EBF66GpdmCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBF7cAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAl0JCLx0NS7NEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQICLy4BwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLoSEHjpalyaJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQEHhxDxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHQlIPDS1bg0S4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIPDiHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhKQOClq3FplgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQODFPUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINCVgMBLV+PSLAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAgMCLe4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKArAYGXrsalWQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAYEX9wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBXAgIvXY1LswQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgIv7gECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGuBL666lazBAgQIECAAAECBAgQIECAAAECBAgQIEAgQODnz59/Vfn+/v7rsw8ECBAgQIAAAQIECLQt4Akvbc9HdwQIECBAgAABAgQIECBAgAABAgQIECAQKLAOuuTS6fjed/kcrwQIECBAgAABAgQItCMg8NLOLHRCgAABAgQIECBAgAABAgQIECBAgAABAhUEBFsqIFuCAAECBAgQIECAQGEBgZfCwMoTIECAAAECBAgQIECAAAECBAgQIECAwPsCZ5/gIgzz/qx0QIAAAQIECBAgQOCMgMDLGSXnECBAgAABAgQIECBAgAABAgQIECBAgEC3AldDLFfP7xZG4wQIECBAgAABAgQ6FhB46Xh4WidAgAABAgQIECBAgAABAgQIECBAgACBYwHhlWMf3xIgQIAAAQIECBDoVUDgpdfJ6ZsAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMKmAwMukg7dtAgQIECBAgAABAgQIECBAgAABAgQIjC7w5Oku6don149ua38ECBAgQIAAAQIE3hYQeHl7AtYnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBC4JCDwconLyQQIECBAgAABAgQIECBAgAABAgQIECDQg0DU01mi6vRgpkcCBAgQIECAAAECPQkIvPQ0Lb0SIECAAAECBAgQIECAAAECBAgQIECAQHUBoZfq5BYkQIAAAQIECBAg8FHg6+MZTiBAgAABAgQIECBAgAABAgQIECBAgAABAp0ICKd0MihtEiBAgAABAgQIEHgo4AkvDwFdToAAAQIECBAgQIAAAQIECBAgQIAAAQJtCJQMu6TaJeu3IagLAgQIECBAgAABAv0ICLz0MyudEiBAgAABAgQIECBAgAABAgQIECBAgMCLAt/f3y+ubmkCBAgQIECAAAECBJYCAi9LDe8JECBAgAABAgQIECBAgAABAgQIECBAgMCOgCe87MA4TIAAAQIECBAgQOAFAYGXF9AtSYAAAQIECBAgQIAAAQIECBAgQIAAAQKxArXCKLXWidVRjQABAgQIECBAgMB4AgIv483UjggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECQwsIvAw9XpsjQIAAAQIECBAgQIAAAQIECBAgQIAAgWgBT3mJFlWPAAECBAgQIECAwHUBgZfrZq4gQIAAAQIECBAgQIAAAQIECBAgQIAAgYYEBFAaGoZWCBAgQIAAAQIECFQSEHipBG0ZAgQIECBAgAABAgQIECBAgAABAgQIEIgXeCvs8ta68YIqEiBAgAABAgQIEOhTQOClz7npmgABAgQIECBAgAABAgQIECBAgAABAgReFPj+/n5xdUsTIECAAAECBAgQICDw4h4gQIAAAQIECBAgQIAAAQIECBAgQIAAgS4F3nzKyptrdzksTRMgQIAAAQIECBAIFhB4CQZVjgABAgQIECBAgAABAgQIECBAgAABAgTGF/CEl/FnbIcECBAgQIAAAQJtCwi8tD0f3REgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKwEBF5WID4SIECAAAECBAgQIECAAAECBAgQIECAQPsCb/9KobfXb39COiRAgAABAgQIECBQVkDgpayv6gQIECBAgAABAgQIECBAgAABAgQIECAQLBAZNnnyq4ki+wgmUo4AAQIECBAgQIDA8AICL8OP2AYJECBAgAABAgQIECBAgAABAgQIECAwjkBUyCQFXZ6EXbJoVD+5nlcCBAgQIECAAAECBM4JCLycc3IWAQIECBAgQIAAAQIECBAgQIAAAQIECLwsUCpcEhV+eZnH8gQIECBAgAABAgSmEhB4mWrcNkuAAAECBAgQIECAAAECBAgQIECAAAECWwKlwjRbazlGgAABAgQIECBAgMBzAYGX54YqECBAgAABAgQIECBAgAABAgQIECBAgEBhgahASomnuUT1VphQeQIECBAgQIAAAQJDCQi8DDVOmyFAgAABAgQIECBAgAABAgQIECBAgMB4AjUCJSWCMONNwo4IECBAgAABAgQItCMg8NLOLHRCgAABAgQIECBAgAABAgQIECBAgAABAgUFUqil1D81QjmleleXAAECBAgQIECAQI8CAi89Tk3PBAgQIECAAAECBAgQIECAAAECBAgQmESglyBJyTDNJKO2TQIECBAgQIAAAQKXBAReLnE5mQABAgQIECBAgAABAgQIECBAgAABAgR6FDgbSDl73tqgl2DOum+fCRAgQIAAAQIECPQqIPDS6+T0TYAAAQIECBAgQIAAAQIECBAgQIAAgcEFhEgGH7DtESBAgAABAgQIEHggIPDyAM+lBAgQIECAAAECBAgQIECAAAECBAgQINC+wN2ntlzdmYDOVTHnEyBAgAABAgQIELgvIPBy386VBAgQIECAAAECBAgQIECAAAECBAgQIFBIICo8UivsUohBWQIECBAgQIAAAQIEdgQEXnZgHCZAgAABAgQIECBAgAABAgQIECBAgAABAlcFooI6V9d1PgECBAgQIECAAIHZBAReZpu4/RIgQIAAAQIECBAgQIAAAQIECBAgQKBxgajQyN2nu9y9rnFW7REgQIAAAQIECBAYSkDgZahx2gwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYHwBgZfxZ2yHBAgQIECAAAECBAgQIECAAAECBAgQ6EYg4uku6QktT5/S8vT6bsA1SoAAAQIECBAgQKBTAYGXTgenbQIECBAgQIAAAQIECBAgQIAAAQIECIwmEBF2Gc3EfggQIECAAAECBAgQ2BYQeNl2cZQAAQIECBAgQIAAAQIECBAgQIAAAQIEOhSIfDJLZK0OKbVMgAABAgQIECBAoGkBgZemx6M5AgQIECBAgAABAgQIECBAgAABAgQIzCHg6S5zzNkuCRAgQIAAAQIECEQJCLxESapDgAABAgQIECBAgAABAgQIECBAgAABAq8KtPJEFuGdV28DixMgQIAAAQIECEwiIPAyyaBtkwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwioDAyyiTtA8CBAgQIECAAAECBAgQIECAAAECBAh0KhDxRJRST3cpVbfTUWmbAAECBAgQIECAQDMCAi/NjEIjBAgQIECAAAECBAgQIECAAAECBAgQIDCKQESIZxQL+yBAgAABAgQIECBQQkDgpYSqmgQIECBAgAABAgQIECBAgAABAgQIECBwSmDUYIgnw5wav5MIECBAgAABAgQI3BYQeLlN50ICBAgQIECAAAECBAgQIECAAAECBAgQaEGgxXDJqEGeFuatBwIECBAgQIAAAQJJQODFfUCAAAECBAgQIECAAAECBAgQIECAAAECrwgIhbzCblECBAgQIECAAAECQwgIvAwxRpsgQIAAAQIECBAgQIAAAQIECBAgQIDAnAKln+7yJJSTrn1y/ZwTtWsCBAgQIECAAAEC5wQEXs45OYsAAQIECBAgQIAAAQIECBAgQIAAAQIECFwWKB3IudyQCwgQIECAAAECBAgMIiDwMsggbYMAAQIECBAgQIAAAQIECBAgQIAAAQK9CEQ9+aRGmOTpGp7w0stdqU8CBAgQIECAAIHeBAReepuYfgkQIECAAAECBAgQIECAAAECBAgQIEDgx9MgCkICBAgQIECAAAECBPoWEHjpe366J0CAAAECBAgQIECAAAECBAgQIECAQDcCUU92qb1h4Zra4tYjQIAAAQIECBAg8FlA4OWzkTMIECBAgAABAgQIECBAgAABAgQIECBAIECg5+DIk979WqOAm0cJAgQIECBAgAABAisBgZcViI8ECBAgQIAAAQIECBAgQIAAAQIECBAgUEYgKvjxJHxSZmfHVXvr93g3viVAgAABAgQIECDQhoDASxtz0AUBAgQIECBAgAABAgQIECBAgAABAgQIDCoQFfQZlMe2CBAgQIAAAQIECNwS+Lp1lYsIECBAgAABAgQIECBAgAABAgQIECBAgMAFgYjQhyelXAB3KgECBAgQIECAAIHBBTzhZfAB2x4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYDQBgZfRJmo/BAgQIECAAAECBAgQIECAAAECBAgQaEwg4ukujW3pcjsMLpO5gAABAgQIECBAgMChgMDLIY8vCRAgQIAAAQIECBAgQIAAAQIECBAgQOCJQM9Bj9R7/veJQbo2/Tqmni2e7t/1BAgQIECAAAECBKIFBF6iRdUjQIAAAQIECBAgQIAAAQIECBAgQIAAgd8CPQc81r2vP98ZcQ69RNS6s75rCBAgQIAAAQIECIwk8DXSZuyFAAECBAgQIECAAAECBAgQIECAAAECBMYTSEGRK/+kQEkOl+Rrl8dSrXw81y0ZQsm95LXSa+5necx7AgQIECBAgAABAgTOC3jCy3krZxIgQIAAAQIECBAgQIAAAQIECBAgQIDASYGSAZK9FtKaed38ms9dhk6W75ff5/fpdR2IWX539f26l6vXO58AAQIECBAgQIAAgX8FBF7+NXGEAAECBAgQIECAAAECBAgQIECAAAECBAYQ2AutbAVQlse2AjElONKay3VLrKEmAQIECBAgQIAAgVEFBF5Gnax9ESBAgAABAgQIECBAgAABAgQIECBA4CWBN0IcW2tuHVuSpO+3ztk6lq7bC9Asa159X6Lm1R6cT4AAAQIECBAgQKBHAYGXHqemZwIECBAgQIAAAQIECBAgQIAAAQIECDQqsBcWudvuViDk6hrp/HzNk3q5xt29bF1XoubWOo4RIECAAAECBAgQGE3ga7QN2Q8BAgQIECBAgAABAgQIECBAgAABAgQI1BUoGdpItZchlfXnTztd97b+/Ol63xMgQIAAAQIECBAg0KaAwEubc9EVAQIECBAgQIAAAQIECBAgQIAAAQIEuhAoHSDJYZe8Tvq8fN8FkiYJECBAgAABAgQIEAgX8CuNwkkVJECAAAECBAgQIECAAAECBAgQIECAAIEogRxuSfWWYZdl/eU5y+PeEyBAgAABAgQIECAwroAnvIw7WzsjQIAAAQIECBAgQIAAAQIECBAgQIDAEAI50JJf06b2wi+9bTg/waa3vvVLgAABAgQIECBA4G0BT3h5ewLWJ0CAAAECBAgQIECAAAECBAgQIECAAIHTAjkgsgy/nL64wRNH2UeDtFoiQIAAAQIECBAYXMATXgYfsO0RIECAAAECBAgQIECAAAECBAgQIECglEDNsMZoQZc8k7yv/NkrAQIECBAgQIAAAQLnBDzh5ZyTswgQIECAAAECBAgQIECAAAECBAgQIEDgRYEUrkn/Coi8OARLEyBAgAABAgQIEGhIQOCloWFohQABAgQIECBAgAABAgQIECBAgAABAj0J1Ayf5LVqPlWm9Czynkqvoz4BAgQIECBAgACBEQUEXkacqj0RIECAAAECBAgQIECAAAECBAgQIECggkDN8Ml6rd7DIr33X+H2sgQBAgQIECBAgACBQwGBl0MeXxIgQIAAAQIECBAgQIAAAQIECBAgQIBAiwLrAEyLPeqJAAECBAgQIECAAIFyAgIv5WxVJkCAAAECBAgQIECAAAECBAgQIECAAAEC/wh4uss/JA4QIECAAAECBAgQuCwg8HKZzAUECBAgQIAAAQIECBAgQIAAAQIECBAg8MYTVmoFRdI6ea38ujXxo++2zs/H3rDLa3slQIAAAQIECBAgMIrAz1//Qf49ymbsgwABAgQIECBAgAABAgQIECBAgAABAgTqCLwZ2kh/rX11/fU1y89P/5r8ai9pQk/XrDNlqxAgQIAAAQIECBBoV8ATXtqdjc4IECBAgAABAgQIECBAgAABAgQIECDQpMCdgEfURpZBlbM1965Jx98KnrxpeNbNeQQIECBAgAABAgRaFvhquTm9ESBAgAABAgQIECBAgAABAgQIECBAgACBJLAMpiwDLMvjS6lloGT5fl1reU3N93t91+zBWgQIECBAgAABAgR6FvArjXqent4JECBAgAABAgQIECBAgAABAgQIECBQWWAdHnmy/N3QR+7hyvV3rrmyt1z/yjVX+r9S17kECBAgQIAAAQIEZhDwhJcZpmyPBAgQIECAAAECBAgQIECAAAECBAgQCBC4E+rYW/ZJ2OPOtXeu2evdcQIECBAgQIAAAQIE3hf4z/st6IAAAQIECBAgQIAAAQIECBAgQIAAAQIEehCICo1E1enB7KjHyADR0Tq+I0CAAAECBAgQIDCigMDLiFO1JwIECBAgQIAAAQIECBAgQIAAAQIECBQQENAogKokAQIECBAgQIAAAQK3BARebrG5iAABAgQIECBAgAABAgQIECBAgAABAnMJRIVdPN3l7/smyvXvqj4RIECAAAECBAgQGF9A4GX8GdshAQIECBAgQIAAAQIECBAgQIAAAQIEHgkIZXzmE+T5bOQMAgQIECBAgAABApECAi+RmmoRIECAAAECBAgQIECAAAECBAgQIECAwLQCQi/Tjt7GCRAgQIAAAQIEXhAQeHkB3ZIECBAgQIAAAQIECBAgQIAAAQIECBDoRSDy6S4CIb1MXZ8ECBAgQIAAAQIE2hcQeGl/RjokQIAAAQIECBAgQIAAAQIECBAgQIBA9wLCLvsjjAwV7a/iGwIECBAgQIAAAQJjCQi8jDVPuyFAgAABAgQIECBAgAABAgQIECBAgECYgCDGdco7wZ4711zvzBUECBAgQIAAAQIExhIQeBlrnnZDgAABAgQIECBAgAABAgQIECBAgACB5gRmCnTcCQnduaa5IWuIAAECBAgQIECAQGUBgZfK4JYjQIAAAQIECBAgQIAAAQIECBAgQIBADwJCGPemNFO4556QqwgQIECAAAECBAjECAi8xDiqQoAAAQIECBAgQIAAAQIECBAgQIAAgWEEWgi7tNBDzYHOtt+attYiQIAAAQIECBAYU0DgZcy52hUBAgQIECBAgAABAgQIECBAgAABAgSaELj7xJO71zWxaU0QIECAAAECBAgQIFBcQOClOLEFCBAgQIAAAQIECBAgQIAAAQIECBAgMKfArKGVu/v2lJc5/5zYNQECBAgQIECAwD0BgZd7bq4iQIAAAQIECBAgQIAAAQIECBAgQIDAkAJCF8/HetfwblDmeccqECBAgAABAgQIEOhPQOClv5npmAABAgQIECBAgAABAgQIECBAgAABAkUE7gY1ijTTcdEzwZUz53RMoHUCBAgQIECAAAECxQUEXooTW4AAAQIECBAgQIAAAQIECBAgQIAAAQLzCQh0/PhxZLAOFx2dO9/dY8cECBAgQIAAAQIEPgsIvHw2cgYBAgQIECBAgAABAgQIECBAgAABAgSGF1gHMIbfcOENpgAL08LIyhMgQIAAAQIECEwtIPAy9fhtngABAgQIECBAgAABAgQIECBAgAABAj9Cgxkp6OFpJf+9q846nD3PvUqAAAECBAgQIECAwB8BgZc/Ft4RIECAAAECBAgQIECAAAECBAgQIECAwEMBTzX5A3jWIp139tw/1b0jQIAAAQIECBAgMLeAwMvc87d7AgQIECBAgAABAgQIECBAgAABAgQmF4gOWnhayX9vqDuud66Z/Pa1fQIECBAgQIAAgYkFBF4mHr6tEyBAgAABAgQIECBAgAABAgQIECBAIFJA2OWP5h2LO9f8WdE7AgQIECBAgAABAnMJCLzMNW+7JUCAAAECBAgQIECAAAECBAgQIECAwP8EPFHkfxRNvDGPJsagCQIECBAgQIAAgU4EBF46GZQ2CRAgQIAAAQIECBAgQIAAAQIECBAgQGB8AaGX8WdshwQIECBAgAABAjECAi8xjqoQIECAAAECBAgQIECAAAECBAgQIEBgWoH0q3j8Op5/x8/kXxNHCBAgQIAAAQIECEQJCLxESapDgAABAgQIECBAgAABAgQIECBAgACBjgQinyQSWasjQq0SIECAAAECBAgQIPCigMDLi/iWJkCAAAECBAgQIECAAAECBAgQIECAwFsCkU8fiaz1lkepda/aXD2/VN/qEiBAgAABAgQIEGhdQOCl9QnpjwABAgQIECBAgAABAgQIECBAgAABAgUEIp/KElmrwFa7Ksmyq3FplgABAgQIECBA4EUBgZcX8S1NgAABAgQIECBAgAABAgQIECBAgACBtwSiniSS6kTVesui9Lp8SgurT4AAAQIECBAgMKOAwMuMU7dnAgQIECBAgAABAgQIECBAgAABAgQI/BIQxKh3G7CuZ20lAgQIECBAgACBOQQEXuaYs10SIECAAAECBAgQIECAAAECBAgQIEBgU+BJEOPJtZvNOPhbIP1aI7/ayM1AgAABAgQIECBA4FhA4OXYx7cECBAgQIAAAQIECBAgQIAAAQIECBAYXuBOcOXONcNDBm6QbyCmUgQIECBAgAABAkMKCLwMOVabIkCAAAECBAgQIECAAAECBAgQIECAAIHWBK6EWDzhpbXp6YcAAQIECBAgQKA1AYGX1iaiHwIECBAgQIAAAQIECBAgQIAAAQIECFQQWAcqzoYx0nlnz62wja6WWJsfNc/4SMd3BAgQIECAAAECBH78EHhxFxAgQIAAAQIECBAgQIAAAQIECBAgQGBCgRSoWAYwlu8n5Kiy5SshFvOoMhKLECBAgAABAgQIdCwg8NLx8LROgAABAgQIECBAgAABAgQIECBAgACBuwIpULEMYCzf79U8c87etY4TIECAAAECBAgQIEAgUkDgJVJTLQIECBAgQIAAAQIECBAgQIAAAQIECHQikMIry6eILN93sgVtEiBAgAABAgQIECAwsYDAy8TDt3UCBAgQIECAAAECBAgQIECAAAECBOYVuPqEF093mfdesXMCBAgQIECAAAECLQoIvLQ4FT0RIECAAAECBAgQIECAAAECBAgQIECgoEAOuyyf6rJ8v15a2GUtUv4z8/LGViBAgAABAgQIEOhbQOCl7/npngABAgQIECBAgAABAgQIECBAgAABAo8FjsIuj4srcEvATG6xuYgAAQIECBAgQGAiAYGXiYZtqwQIECBAgAABAgQIECBAgAABAgQIzCuQAxTp1dND3rsP2L9nb2UCBAgQIECAAIGxBARexpqn3RAgQIAAAQIECBAgQIAAAQIECBAgQOAfgRx2yV8sPy/f5+/zawpnCGhkjZjXI+/lCtyXGt4TIECAAAECBAgQ+FdA4OVfE0cIECBAgAABAgQIECBAgAABAgQIECAwlEAOT+SwRfqc3ufjW5s9+m7rfMfOCZxxPXPOudWcRYAAAfV6apwAACAASURBVAIECBAgQGBcAYGXcWdrZwQIECBAgAABAgQIECBAgAABAgQIEPgtsA635OBLft1iOvpu63zH4gTYx1mqRIAAAQIECBAgMK6AwMu4s7UzAgQIECBAgAABAgQIECBAgAABAgQI/BZITwxJIYorTw65ci7mWAH2sZ6qESBAgAABAgQIjCkg8DLmXO2KAAECBAgQIECAAAECBAgQIECAAAECjwQ8ZeQR3+HFnwIt7A/5fEmAAAECBAgQIEDgt4DAixuBAAECBAgQIECAAAECBAgQIECAAAECgwvkp7t8ClLkIEZ6ze8Hp2lme0vv5ftmGtQIAQIECBAgQIAAgcYEBF4aG4h2CBAgQIAAAQIECBAgQIAAAQIECBAgUELgU9glrylskSXKvu45p+NnZ1W2Q9UJECBAgAABAgQItC0g8NL2fHRHgAABAgQIECBAgAABAgQIECBAgACBxwJ74Ypl4TPnLM/3/rnA0lzI5bmnCgQIECBAgAABAnMJCLzMNW+7JUCAAAECBAgQIECAAAECBAgQIEBgQgFhinaHnkMv+TXNKr9vt2udESBAgAABAgQIEHhfQODl/RnogAABAgQIECBAgAABAgQIECBAgAABAkUFcoAivy4XS8e2ji/P8b6sQPbPr2VXU50AAQIECBAgQIDAGAI/f/0H9PcYW7ELAgQIECBAgAABAgQIECBAgAABAgQIEDgr4EkiZ6WcR4AAAQIECBAgQIBAiwKe8NLiVPREgAABAgQIECBAgAABAgQIECBAgACBwgL+v5CFgZUnQIAAAQIECBAgQKCogMBLUV7FCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEogUEXqJF1SNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgqIPBSlFdxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaAGBl2hR9QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIoKCLwU5VWcAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgWkDgJVpUPQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaICAi9FeRUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCIFhB4iRZVjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKiAwEtRXsUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiBQReokXVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCog8FKUV3ECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFoAYGXaFH1CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEigoIvBTlVZwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBaQOAlWlQ9AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBogICL0V5FSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEIgWEHiJFlWPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgqIDAS1FexQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKIFBF6iRdUjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKiDwUpRXcQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWgBgZdoUfUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKCgi8FOVVnAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIFpA4CVaVD0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGiAgIvRXkVJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiBYQeIkWVY8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCogMBLUV7FCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEogUEXqJF1SNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgqIPBSlFdxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaAGBl2hR9QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIoKCLwU5VWcAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgWkDgJVpUPQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaICAi9FeRUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCIFhB4iRZVjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKiAwEtRXsUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiBQReokXVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCog8FKUV3ECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFoAYGXaFH1CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEigoIvBTlVZwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBaQOAlWlQ9AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBogICL0V5FSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEIgWEHiJFlWPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgqIDAS1FexQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKIFBF6iRdUjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKiDwUpRXcQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWgBgZdoUfUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKCgi8FOVVnAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIFpA4CVaVD0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGiAgIvRXkVJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiBYQeIkWVY8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCogMBLUV7FCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEogUEXqJF1SNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgqIPBSlFdxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaAGBl2hR9QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIoKCLwU5VWcAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgWkDgJVpUPQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaICAi9FeRUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCIFhB4iRZVjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKiAwEtRXsUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiBQReokXVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCog8FKUV3ECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFoAYGXaFH1CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEigoIvBTlVZwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBaQOAlWlQ9AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBogICL0V5FSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEIgWEHiJFlWPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgqIDAS1FexQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKIFBF6iRdUjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKiDwUpRXcQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWgBgZdoUfUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKCgi8FOVVnAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIFpA4CVaVD0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGiAgIvRXkVJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiBYQeIkWVY8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCogMBLUV7FCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEogUEXqJF1SNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgqIPBSlFdxAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaAGBl2hR9QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIoKCLwU5VWcAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgWkDgJVpUPQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaICAi9FeRUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCIFhB4iRZVjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKiAwEtRXsUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSiBQReokXVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCog8FKUV3ECBAgQIECAAAECBAgQIECAAAECBAgQuCvw8+fP35fm17t1XEeAAAECBAgQIECAwHgCAi/jzdSOCBAgQIAAAQIECBAgQIAAAQIECBAgMIxADrvk12E2ZiMECBAgQIAAAQIECDwSEHh5xOdiAgQIECBAgAABAgQIECBAgAABAgQIECghsBVwycfWryXWV5MAAQIECBAgQIAAgbYFBF7ano/uCBAgQIAAAQIECBAgQIAAAQIECBAgMJ1ADrQsN/79/f0j/Zv/yefk13zcKwECBAgQIECAAAECcwgIvMwxZ7skQIAAAQIECBAgQIAAAQIECBAgQIBAFwJ7AZa9411sSpMECBAgQIAAAQIECIQLCLyEkypIgAABAgQIECBAgAABAgQIECBAgAABAncEjkIty6e7rGsfXbc+12cCBAgQIECAAAECBMYQEHgZY452QYAAAQIECBAgQIAAAQIECBAgQIAAgSkEhFumGLNNEiBAgAABAgQIEPgoIPDykcgJBAgQIECAAAECBAgQIECAAAECBAgQIFBa4GmQJV3/tEbpPapPgAABAgQIECBAgECcgMBLnKVKBAgQIECAAAECBAgQIECAAAECBAgQIHBT4OhXFqWSAi03YV1GgAABAgQIECBAYFABgZdBB2tbBAgQIECAAAECBAgQIECAAAECBAgQ6EnA01l6mpZeCRAgQIAAAQIECLwvIPDy/gx0QIAAAQIECBAgQIAAAQIECBAgQIAAgakFhF2mHr/NEyBAgAABAgQIELglIPByi81FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbwkIvLwlb10CBAgQIECAAAECBAgQIECAAAECBAgQ+OHpLm4CAgQIECBAgAABAgTuCHzducg1BAgQIECAAAECBAgQIECAAAECBAgQIEDgiYCgyxM91xIgQIAAAQIECBAg4Akv7gECBAgQIECAAAECBAgQIECAAAECBAgQGELg+/t7iH3YBAECBAgQIECAAAECnwUEXj4bOYMAAQIECBAgQIAAAQIECBAgQIAAAQIEAgVKPN1F2CVwQEoRIECAAAECBAgQ6EBA4KWDIWmRAAECBAgQIECAAAECBAgQIECAAAECBI4FSoRojlf0LQECBAgQIECAAAECbwp8vbm4tQkQIECAAAECBAgQIECAAAECBAgQIEBgLoESwRRPd5nrHrJbAgQIECBAgAABAknAE17cBwQIECBAgAABAgQIECBAgAABAgQIECBQRaBE2KVK4xYhQIAAAQIECBAgQKA5AYGX5kaiIQIECBAgQIAAAQIECBAgQIAAAQIECIwnIOwy3kztiAABAgQIECBAgMCbAgIvb+pbmwABAgQIECBAgAABAgQIECBAgAABAhMIlAy7+HVGE9xAtkiAAAECBAgQIEBgQ0DgZQPFIQIECBAgQIAAAQIECBAgQIAAAQIE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AAECBAgQIECAAAECBAgQIEBgIZB+XVCpXxn0RlDljTUXnN4SIECAAAECBAgQINCIwFcjfWiDAAECBAgQIECAAAECBAgQIECAAAECBAIFSoVcUotvhk4i95VqvbmXwHErRYAAAQIECBAgQGA6AU94mW7kNkyAAAECBAgQIECAAAECBAgQIECAwOgCkaGQ1qyiAyojW7U2O/0QIECAAAECBAgQiBTwhJdITbUIECBAgAABAgQIECBAgAABAgQIECDwokDp8EZ02OQOVX4qS+m93unNNQQIECBAgAABAgQI1BMQeKlnbSUCBAgQIECAAAECBAgQIECAAAECBAiECowU+shhmk97Sud9OicUWTECBAgQIECAAAECBJoU8CuNmhyLpggQIECAAAECBAgQIECAAAECBAgQIPBZIIdEPp/5/Iwaa50Jspw55+puS9S82oPzCRAgQIAAAQIECBC4JiDwcs3L2QQIECBAgAABAgQIECBAgAABAgQIEGhCIIU0agU1aoRdEmqtdZoYoCYIECBAgAABAgQIEHgkIPDyiM/FBAgQIECAAAECBAgQIECAAAECBAgQqC9QK+iSdlY7hFJ7vfrTsyIBAgQIECBAgAABAhECAi8RimoQIECAAAECBAgQIECAAAECBAgQIECgksDZsMvT4Ei6/mmNSiQhy5x1DVlMEQIECBAgQIAAAQIEHgt8Pa6gAAECBAgQIECAAAECBAgQIECAAAECBAgUF7gayLh6fvENWIAAAQIECBAgQIAAAQKBAp7wEoipFAECBAgQIECAAAECBAgQIECAAAECBHoXmO3JLst5CQktNbwnQIAAAQIECBAg0LaAwEvb89EdAQIECBAgQIAAAQIECBAgQIAAAQIEftQIYrQUdJnpVym5vQkQIECAAAECBAgQuCcg8HLPzVUECBAgQIAAAQIECBAgQIAAAQIECBCoIlAr7FJlMycXqbHnvVbeXHuvJ8cJECBAgAABAgQIEPhXQODlXxNHCBAgQIAAAQIECBAgQIAAAQIECBAg0ITArOGLN5/w8ubaTdx0miBAgAABAgQIECDQicDPX//x/t1Jr9okQIAAAQIECBAgQIAAAQIECBAgQIDAFAI1gy6t/xVxTYt8c7Vukvv0SoAAAQIECBAgQGBmga+ZN2/vBAgQIECAAAECBAgQIECAAAECBAgQaEmgZrijh1DH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EHj5bOQMAgQIECBAgAABAgQIECBAgAABAgQmEcihhfx6tO2IkMRRfd/1J3DmvulvVzomQIAAAQIECBAg0KaAwEubc9EVAQIECBAgQIAAAQIECBAgQIAAAQIvCKQQy9kgy91ww9n6L2y/myWvGJ499+x53SBplAABAgQIECBAgMDgAj9//Uf89+B7tD0CBAgQIECAAAECBAgQIECAAAECBAjsCtwNruwW3PnCX8XuwNw4fHVmV+yv1t5q/8p6W9c7RoAAAQIECBAgQIDAZwFPePls5AwCBAgQIECAAAECBAgQIECAAAECBAYUSMGGdbhBUKGPQZtTH3PSJQECBAgQIECAAIGSAgIvJXXVJkCAAAECBAgQIECAAAECBAgQIECgG4EUolgHYKKaF9CIkixfx6zKG1uBAAECBAgQIECAQISAwEuEohoECBAgQIAAAQIECBAgQIAAAQIECHQjsBdq2Tv+dGMCFE8Fn19farZ7ndVeb68PxwkQIECAAAECBAiMLCDwMvJ07Y0AAQIECBAgQIAAAQIECBAgQIAAgb8EchAhv/71ZYEPwi4FUJUkQIAAAQIECBAgQIDALwGBF7cBAQIECBAgQIAAAQIECBAgQIAAAQJTCNQKuSTMFHQRdpnittrdZM37bbcJXxAgQIAAAQIECBAYWEDgZeDh2hoBAgQIECBAgAABAgQIECBAgAABAv8VED4Y+04QLhp7vnZHgAABAgQIECBAYEtA4GVLxTECBAgQIECAAAECBAgQIECAAAECBIYQSEGX2mEX4Yv6t070jKNmGN1XfVkrEiBAgAABAgQIEGhXQOCl3dnojAABAgQIECBAgAABAgQIECBAgACBhwJRwYWzbdRe72xfs59nLrPfAfZPgAABAgQIECAwosDXiJuyJwIECBAgQIAAAQIECBAgQIAAAQIECNR8uoZAhfuNAAECBAgQIECAAAECdQU84aWut9UIECBAgAABAgQIECBAgAABAgQIEKgkUCuEUmudSmzdLMO9m1FplAABAgQIECBAgEARAYGXIqyKEiBAgAABAgQIECBAgAABAgQIECDwhsDyqS7L9yV6SYELoYsSsudqrucbPYuo+a77PLc7ZxEgQIAAAQIECBAg8ElA4OWTkO8JECBAgAABAgQIECBAgAABAgQIEOhCYBksSO+jAxBLhJK1l+t4f04gzWM5//VVR9+tz43+7F6JFlWPAAECBAgQIECAwH8FBF7cCQQIECBAgAABAgQIECBAgAABAgQIdCuQgwz5tcZGBBhqKB+vsZ53+tzqXNa9Hu/MtwQIECBAgAABAgQInBUQeDkr5TwCBAgQIECAAAECBAgQIECAAAECBJoSyEGC/Jqby+GH9fH8/ZPXVkMVT/bU47Vbcygx72SztVaPZnomQIAAAQIECBAgMJqAwMtoE7UfAgQIECBAgAABAgQIECBAgAABAhMKrEMJOfQSRZHqr9eIqq1OjMDRfNJ3pQIxZ7pPa7+5/pkenUOAAAECBAgQIECgNwGBl94mpl8CBAgQIECAAAECBAgQIECAAAECBP4JD2wFXKICBkdBCqNoR2DrHkjd5fnl1zsdP7k2rxdRI9fySoAAAQIECBAgQIDAjx8CL+4CAgQIECBAgAABAgQIECBAgAABAgS6EtgKsqQwwdbxpxsTUngqWPf69T1Q6r64s6t1b3dquIYAAQIECBAgQIAAgT8CAi9/LLwjQIAAAQIECBAgQIAAAQIECBAgQIDAb4EUlBB26e9mWM8sh0zya3870jEBAgQIECBAgAABAnsCAi97Mo4TIECAAAECBAgQIECAAAECBAgQINCMQA4s5NfcWA44rI/n7++85pp3rnXNuwJH98HRd2e6jrgvnvZwpk/nECBAgAABAgQIEJhF4GuWjdonAQIECBAgQIAAAQIECBAgQIAAAQJ9CuSQQH5d7mLr2PL7K+8jAg1X1nMuAQIECBAgQIAAAQIECNwX8ISX+3auJECAAAECBAgQIECAAAECBAgQIECgsMBeoCU6nBJdrzCL8jcEImYcUeNG6y4hQIAAAQIECBAgQGBDQOBlA8UhAgQIECBAgAABAgQIECBAgAABAgTeFdgLuqSuUujg6PurnQsxXBVr9/yjWUbcM1E1Iuq0OwWdESBAgAABAgQIEKgj8PPX/wD4rrOUVQgQIECAAAECBAgQIECAAAECBAgQIHAsUDsI4K9Hj+fR+rdX7peoWV9Z88gvqp+jNXxHgAABAgQIECBAYGQBT3gZebr2RoAAAQIECBAgQIAAAQIECBAgQKAjgRQkqBUCSOvUWqujEXTV6tXgydXz9zDcN3syjhMgQIAAAQIECBCoKyDwUtfbagQIECBAgAABAgQIECBAgAABAgQIbAhEhRE2Sv9zSGDhH5IuD/Q+x5r3fJcD1jQBAgQIECBAgACBDwICLx+AfE2AAAECBAgQIECAAAECBAgQIECAQFmB5Q/+l+/TqpGhhlQrsl5ZFdXvCHya7/r+urOGawgQIECAAAECBAgQaENA4KWNOeiCAAECBAgQIECAAAECBAgQIECAAIGFQA6nRAUUPgUhFkt726lAmvGn+yXqPoiq86nfTkehbQIECBAgQIAAAQJVBAReqjBbhAABAgQIECBAgAABAgQIECBAgACBPYGt8EAKAkSFAbbq7/XieL8CZ+6XM+ecFXBfnZVyHgECBAgQIECAAIEyAgIvZVxVJUCAAAECBAgQIECAAAECBAgQIEBgRyCHDtavO6ffPpwCCUIJt/mavzDfP8tGP8370/fLWrXeb+2j1trWIUCAAAECBAgQINCzgMBLz9PTOwECBAgQIECAAAECBAgQIECAAIFOBdIP+VP4YP3D/qhAQlSdTnmnaHtvxnvHE8r6fnsKdbTW09quJ0CAAAECBAgQIEDgWODr+GvfEiBAgAABAgQIECBAgAABAgQIECBA4LnAVtBgfSyFB9bHrq4sgHBVrN/z072yvmee3j/9auicAAECBAgQIECAwHwCnvAy38ztmAABAgQIECBAgAABAgQIECBAgEB1gRpBlBprVIez4K7AOuySTnzjHohYU1Bnd8y+IECAAAECBAgQILArIPCyS+MLAgQIECBAgAABAgQIECBAgAABAgSiBM78QP/MOXv9RIQO9mo73qbA1v2ydWzd/Zlz1tf4TIAAAQIECBAgQIBAewICL+3NREcECBAgQIAAAQIECBAgQIAAAQIEhhIoHTAQdhnqdjm9mbtzv3vd6cZunlj6z8nNtlxGgAABAgQIECBAoFkBgZdmR6MxAgQIECBAgAABAgQIECBAgAABAv0KpB/e539L7qLV8ELJPau9L/DW/fDWuvsSviFAgAABAgQIECAwvoDAy/gztkMCBAgQIECAAAECBAgQIECAAAECVQVqPalCyKDqWLtYbO/eq3GvRKyx138X+JokQIAAAQIECBAgUFlA4KUyuOUIECBAgAABAgQIECBAgAABAgQIzCwQEQpINSLqzDyHUfc+wn0h9DLq3WlfBAgQIECAAAEC0QICL9Gi6hEgQIAAAQIECBAgQIAAAQIECBCYWODTD+vT909CCU+unXgsQ259617bu7+2zi2B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CBAgQIAAAQIECBAgQIAAAQIERhWIheD4yQX3DHv356xye7dTeQQI3Esg3h093h82vdxrXLWGAAECBAgQIEDgt4ANL+4EAgQIECBAgAABAgQIECBAgAABAjsEygXg3PRSxu0ospmlx2J1s2CRBB4icMZz9xAa3SBAgAABAgQIECDwaAEbXh49vDpHgAABAgQIECBAgAABAgQIECBwhkC9wB6bUnLTyxn1KZMAgbZA/Sy2U/2JfesGsh793mr9R90RAQIECBAgQIAAgXMEbHg5x1WpBAgQIECAAAECBAgQIECAAAECDxSIBd/Wom/ElZteWmm2ckR5PRapt9YrPYGRBDwj145Wj3fbtS1WGwECBAgQIECAwJMFbHh58ujqGwECBAgQIECAAAECBAgQIECAQDeBuYXeMza7dGu4ggg8VGDumXxolw91y+agQ3wyEyBAgAABAgQI3FDAhpcbDoomESBAgAABAgQIECBAgAABAgQI3EdgzaJ6pMlNL0dbblH6qKD8bxFYelbq6/X5W5x693PNO7F3ncojQIAAAQIECBAg0BKw4aWlIo4AAQIECBAgQIAAAQIECBAgQIBAIdBa4K0Xz1tpiiIWD6O8uszFTBIQeLlAbjYrGfJZOvpMlmU6JkCAAAECBAgQIEDgfgI/vj78/7pfs7SIAAECBAgQIECAAAECBAgQIECAwOcFrlow9xXd58daC8YVWPuces7++Wet1Zq7gecaJWkIECBAgAABAgTOFPAbXs7UVTYBAgQIECBAgAABAgQIECBAgMCwAvXCcL24W5/v7WivcvbWLx+BkQXq53TkvlzR9njfeOdcIa0OAgQIECBAgACBKwRseLlCWR0ECBAgQIAAAQIECBAgQIAAAQJDC8QCcS6s52Jxnh/pWJZ1pAx5CRAg8AmBHu/AT7RbnQQIECBAgAABAs8RsOHlOWOpJwQIECBAgAABAgQIECBAgAABAp0E6oXcOI/NKbnxpcdGlR5ldOquYgg8UsAzNj2sbKZtXCFAgAABAgQIEBhHwIaXccZKSwkQIECAAAECBAgQIECAAAECBD4oEJteciNMhnubY7F5r5x8BAj0EujxHjr6LuzVF+UQIECAAAECBAi8U+DnO7ut1wQIECBAgAABAgQIECBAgAABAgT+Frhq4bbHIvPfLXdG4J0Cc89sPGdz198pptcECBAgQIAA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Q6Bmgfcjw4UdC8QLeANnNa7nBydenpwvQU4CBAgQIECAAAECBAgQIECAAIGjAuU70djP33OluIhP5cexFOdDgAABAgQIECBAYEvAD162dBwj0EkgLdp6LdhiQdip6aeL7dXf0w0aPOOo4zg423/Nc779R2GDAAECBAgQIECAAAECBAh8ViB/v3LlXUHKm5f1WdATHS/dyv1UZBnH+wS0LAQIECBAgACBjwr88ffk0c+kPzr4uv2MQFrA9bjsyoXhM737vdYeff29lvljRh2/WWSdZ7OMlHYSIECAAAECBAgQIECAAIF7BeJdXP7uJb1HyOPz/aXW5XnTce8hlpTW40q/9ZS/juyNya+UtggQIECAAAECBL4s4C+8fHn09f0RgVispcrfvDh+c99anDhnFvot6p29jLh+8nD2Pmk/AQIECBAgQIAAAQIECBAg0E8g3lHFu4TamvIfxOR5orw8znZ7Ae/O2psqkQABAgQIECDwRgE/eHnjqOrT8AItFsajLvpa9G34AdxoYLwMKZOMOl5lO0faXzuXIj7CkdqsLQQIECBAgAABAgQIECBAgMC4AkfeJaS0e+9z1t4DjSvwTMvCfc9zqXWMl1TEESBAgAABAgQIhIAfvISEkMAAArULuDOLw57di0VrzzruLvuK8ZW8d/dzpPreeB6N5KstBAgQIECAAAECBAgQIECAwL8C8Q4uwtxl771OeXypjLw8278Ean5E9Cu1LQIECBAgQIAAAQL7An/8Pcn8334yKQgQ6C1QszguF9S921RT/htvISM614zFjGneeP7MOA7aTIAAAQIECBAgQIAAAQIEviKw9N4n3k/k7+eW0m0ZRRlbaRz7V+CobcrF19lDgAABAgQIECCwJOAvvCypiCPwgMDWou3MIrBXF7ba2avOu8odyfmuPt9dz5vPn7st1UeAAAECBAgQIECAAAECBAgcF0jvJvJ3QPm7inI7T3e8JjnOCpRjdLYc+QgQIECAAAECBN4v4C+8vH+M9XBigdEW1fmif2LWH00fzfhH416y88bz5iVDoxsECBAgQIAAAQIECBAgQOCTAuX7oK13F2XaPbCtsvbyfuX4UdNwYRsSQgIECBAgQIAAgRDwF15CQkhgMIGzC79e3XjTgnI0215j1rvcdE4sWb7pXOltqHwCBAgQIECAAAECBAgQIEDgfoH8nYb3GM/6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xpkSIyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENgS6D7hxZddtqZPHQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgeQLNEl7O+jJL9BPH502q4s9fAAASdUlEQVSRiAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLJAs4SX/JB3z33d5V059xEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE5hX47j00SS+9z5DxESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSuFej6Cy/XUngaAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDACAJNEl6+vr5Oib30E33F8ZSOdUKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCsQJOEl7M1JLucLao/AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMC4AkMkvPz8/IwrbOQECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKnCgyR8OILL6fOuc4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkMLNEl4OeOLLNFHOcbP0NIGT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcIpAk4SXM0bmqy5nKOqDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCfQLOEl/hCyydkZ/TxyfPdS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0J9As4SX/kI1IgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRkEmiW8+JNEM/x6iIEAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0J9As4SXM0KVNHOGoj4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAnMJNEt4+fn5mUtKNAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAl0INEt46SI6gyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJhOQMLLdFMqIAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDA3ALdJ7x8fX3NPQOiI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQeEmgacLLz8/PS4PRmAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCeQNOEl72Hv1pfvvbiiy+vqmlPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJhLYKiEl7noRUOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPCOQPcJL/FnkXzZ5Z3pdQ8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYD6B7hNeCnlOdokEmLp8vqkREQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwJLA91JhT2Ul2SUnueSxrZXnNs4JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTmEmj+hRdJKXP9woiGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHC3QPOElzMCzH/S6Iz+9EGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCuQPd/0miJdikBxpdklqSUESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTmE7jkCy8lGeXMhJS6r/p6vmkSEQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQAhckvASD/vkWH/V5ewkmk/G5l4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHrBIZJeFn6iktJglkqv47PkwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBK4WGCbhpf7CS4GS7HL1r4vnESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTuFxgm4aVQ1Ukv9fX9nEZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQWuC79QNy/+WLLJ8mqXx6fx6PcwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfEEhvrCS+b154yyhnMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwHMELk94KYkqZyWrnNXPc6ZbpAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB8QUuT3jJZJ8krPjTRlnSOQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgOQK3Jbx8kuwS0yPpJSQcCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLPEbgt4eUs4pL0IvHlLE39ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6F7g94eWML730z2yEBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZwncnvByViC+8nKWpH4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAn0LTJPwUpiXkl7iTx5FXRz7nhajI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWBPoIuHlzD9rtJXQEnXlGOdrMMoJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6FOgi4eVsmpzQspZMs1Z+9lj0R4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcK5ANwkvLRJQ6q+4xDPieC6l3ggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBK4Q+L7iIXc/Iye45PO7x+X5BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrwt084WXMvQWySj5zxu9zuMOAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB3gS6SnhpiSPxpaWuvgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC1wl0l/DS4isvmVPiS9ZwToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYT6C7hJdC2DrppTzjaOJLaecfAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAPwJdJrwUnpL00lPiSz9TZiQECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWcLdJvwcvW05C+5xNdfoiyOV4/J8wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBP4r8PXrKyo//y3uq+TuhJMBiPqaMKMhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQUGOILL3cnnNydcNNw/nVNgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBhOYIiEl6I6YtKLRJnh/vvw94DLvMXPmBEYNQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmFtgmISXHqYhkiDieGRMpa1/4wqYv3HnzsgJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYF6Br19fTvkZLbwekxCWGMs4l8qXvF9pu3S/snMEtn63js7lOSPRCwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILAm8L1W0Wv5VkLCnWN+d1z5vnIuqaLdLGbrraeUOYi5iONWe3UECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAtQJDfuGlEB1NXriWc/tpS8ksEcdS3XZvasOuhYT5aKGqTwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcI7AsAkvJfyWCQ/n8L7WiySLY15XzHuZi/Icc3JsTrQiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJXCgyd8FKgrkh+uHJC8rNmTLbI83Ukvtw+21x1fmSMV43FcwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF/BIZPeKkn8u4EiXo8La5HSsIYeT5Gcm7xe6ZPAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQq8B0CS8BPXKiRcTw7rFlosZTXFsavjuv7iNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT+EZg24aWE95TkjE9+mSOxg9VvxTD5XeKMAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6Engr54Gc/ZYJC7si5ZEF8ku+05aECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAv0IfPczlDYjyUkvEjvaGOuVAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHClwPQJLxlT8kvWcF4L5N+Pus41AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0I/A1H/SaIu5JDdIcNgSelad34VnzbdoCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBsgccmvMS0SXwJieceJbs8d+5FToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJjCjzqTxptTVGd9PD19bXVXN0kAvW8TxKWMAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwNQCEl5WprdOhJAAswI1aHE9v4OGYdgECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCRAhJeDk57SZCQ9HIQq8NmElw6nBRDIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbwpIeHkBLpImJL68gHZj05ivG4fg0QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEADAQkvb6DmRIqS/FKuJcG8Adnoljw/jR6hWwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOBGga9fyQE/Nz5/2kdLgDl/av2qnm+qRwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMKKAL7w0mrVIzpD4sg8cVqVleOWy/R60IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJ4k4AsvN852JHfcOITLHi2B5TJqDyJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtML+MLLjVO8lAQySxLMUmw3Uns0AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMJGAhJfOJrNOFOk9AaYeb2echkOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMKCDhpfNJ/SShJCfLLPVT6kt5brfFsdTHVnt1BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEWAl+/khh+WnSsz/EFIiFm/EhEQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMwk8NdMwYjlXAG5UOd66o0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4R0DCyzmOeiFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIELhIQMLLRdAeQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcI6AhJdzHPVCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwkYCEl4ugPYYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOAcAQkv5zjqhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4CIBCS8XQXsMAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAOQISXs5x1AsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBFAhJeLoL2GAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXMEJLyc46gXAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiwT+D+c768UFrHXRAAAAAElFTkSuQmCC'></html>

[[Solution|rm26-solution]]
A king stands on the upper left square of the chessboard. Two players make turns
moving the king either one square to the right or one square downward or one square
along a diagonal in the southeast direction. The player who can place the king on the
lower right square of the chessboard wins. Who will win? Describe the winning
strategy.

Source: Introduction to bioinfo pg 54

[[Solution|solution-rm27]]
In how many different ways can 20 lightbulbs be arranged in a straight line if it is not permitted for two adjacent bulbs to both be on?


[[Solution|solution-rm28]]
12 + 34 + 5 + 6 + 78 + 9 = 144

In how many ways is it possible to make a sum of 144 using only addition signs and all of the digits 1 to 9 in that order?

[[solution| solution-rm29]]
A standard pack of cards is shuffled completely, then arranged in a line on a table from left to right. What is the mean position of the first ace?

Source: UKMT Senior Scheme May 2017 Q5
Alice shoots free throws on a basketball court. She hits the first and misses the second; thereafter the probability that she hits the next shot is equal to the proportion of shots she has hit so far. What is the probability she hits exactly 50 of her first 100 shots?
In a remote village, the (only) greengrocer uses a scale-balance and a 1 kg weight. Unfortunately, as a result of an accident, the balance breaks and the greengrocer, in repairing it, does not get the point of balance exactly in the middle, but slightly offset. 

A customer enters and asks for 2 kg of apples. The greengrocer places his 1 kg weight in the left-hand pan and fills the right-hand pan with apples until the scales balance. He then empties the apples into a brown paper bag. Now he puts the 1 kg weight to the right-hand pan and fills up the left-hand pan with apples until the scales balance. He then adds these apples to those in the brown paper bag and gives the lot to the customer.

What's the weight of apples the customer actually get? <2, exactly 2 or >2?
There are two tennis ball tubes, each with a closed end, that can contain a maximum of k balls each. The radius of the tubes are exactly the radius of the ball so the balls stack up in the tube. A ball is introduced each time and it will go into either one of the tube with probability of 0.5. If one of the tube is full, the ball will definitely go into the other tube. If n balls is distributed, n less than or equals to 2k, what is the probability that position i from the base of the first tube is occupied by a ball?
A chess tournament for 2^n players is organised as a knock-out tournament with n rounds, the last round being the final. Two players are chosen at random. Calculate the probabilities they meet in

i) the first round
ii) the final round
iii) in any round
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0a|
|Date:|27-Jun-2011|
|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,creator) {
      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,creator);
    },

    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();

//}}}
/***
|Name|SaveAsPlugin|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Save current document to another path/filename|
!!!!!Documentation
<<<
see [[SaveAsPluginInfo]]
<<<
!!!!!Revisions
<<<
2011.02.14 2.7.1 fix OSX error: use picker.file.path
2009.10.13 2.7.0 added 'here' param (saves current tiddler)
2009.08.16 2.6.2 fixed handling for backstage
| Please see [[SaveAsPluginInfo]] for additional revision details |
2006.02.03 1.0.0 Created
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveAsPlugin= {major: 2, minor: 7, revision: 1, date: new Date(2011,2,14)};

config.macros.saveAs = {
	label: 'save as...',
	labelparam: 'label:',
	prompt: 'Save current document to a different path/file',
	promptparam: 'prompt:',
	filePrompt: 'Please select or enter a target path/filename',
	targetparam: 'target:',
	defaultFilename: 'new.html',
	filenameparam: 'filename:',
	currfilekeyword: 'here',
	typeparam: 'type:',
	type_TW: 'tw', type_PS: 'ps', type_TX: 'tx', type_CS: 'cs', type_NF: 'nf', // file type tokens
	type_map: {
		tiddlywiki:'tw', tw:'tw', wiki: 'tw',
		purestore: 'ps', ps:'ps', store:'ps',
		plaintext: 'tx', tx:'tx', text: 'tx',
		comma:     'cs', cs:'cs', csv:  'cs',
		newsfeed:  'nf', nf:'nf', xml:  'nf', rss:'nf'
	},
	limitparam: 'limit:',
	replaceparam: 'replace',
	mergeparam: 'merge',
	quietparam: 'quiet',
	openparam: 'open',
	askParam: 'ask',
	hereParam: 'here',
	askMsg: "Enter a tag filter (use * for all tiddlers, 'none' for blank document)",
	hereMsg: 'Enter a tiddler title',
	emptyParam: 'none',
	confirmmsg: "Found %0 tiddlers matching\n\n'%1'\n\nPress OK to proceed",
	mergeprompt: '%0\nalready contains tiddler definitions.\n'
		+'\nPress OK to add new/revised tiddlers to current file contents.'
		+'\nPress Cancel to completely replace file contents',
	mergestatus: 'Merged %0 new/revised tiddlers and %1 existing tiddlers',
	okmsg: '%0 tiddlers written to %1',
	failmsg: 'An error occurred while creating %1',
	filter: '',
	handler: function(place,macroName,params) {
		if ((params[0]||'').startsWith(this.labelparam))
			var label=params.shift().substr(this.labelparam.length);
		if ((params[0]||'').startsWith(this.promptparam))
			var prompt=params.shift().substr(this.promptparam.length);
		if ((params[0]||'').startsWith(this.targetparam))
			var target=params.shift().substr(this.targetparam.length);
		if ((params[0]||'').startsWith(this.filenameparam))
			var filename=params.shift().substr(this.filenameparam.length);
		if ((params[0]||'').startsWith(this.typeparam))
			var filetype=this.type_map[params.shift().substr(this.typeparam.length).toLowerCase()];
		if ((params[0]||'').startsWith(this.limitparam))
			var limit=params.shift().substr(this.limitparam.length);
		var q=((params[0]||'')==this.quietparam);   if (q) params.shift();
		var o=((params[0]||'')==this.replaceparam); if (o) params.shift();
		var m=((params[0]||'')==this.mergeparam);   if (m) params.shift();
		var a=((params[0]||'')==this.openparam);    if (a) params.shift();
		var btn=createTiddlyButton(place,label||this.label,prompt||this.prompt,
			function(){ config.macros.saveAs.go( this.getAttribute('target'),
				this.getAttribute('filename'), this.getAttribute('filetype'),
				this.getAttribute('filter'), this.getAttribute('limit'),
				this.getAttribute('quiet')=='true',
				this.getAttribute('overwrite')=='true',
				this.getAttribute('merge')=='true',
				this.getAttribute('autoopen')=='true',
				this);
				return false;
			});
		if (target) btn.setAttribute('target',target);
		if (filename) btn.setAttribute('filename',filename);
		btn.setAttribute('filetype',filetype||this.type_TW);
		btn.setAttribute('filter',params.join(' '));
		btn.setAttribute('limit',limit||0);
		btn.setAttribute('quiet',q?'true':'false');
		btn.setAttribute('overwrite',o?'true':'false');
		btn.setAttribute('merge',m?'true':'false');
		btn.setAttribute('autoopen',a?'true':'false');
	},
	go: function(target,filename,filetype,filter,limit,quiet,overwrite,merge,autoopen,here) {
		var cm=config.messages; // abbreviation
		var cms=config.macros.saveAs; // abbreviation
		if (window.location.protocol!='file:') // make sure we are local
			{ displayMessage(cm.notFileUrlError); return; }

		// get tidders, confirm filtered results
		var tids=cms.selectTiddlers(filter,here);
		if (tids===false) return; // cancelled by user
		if (cms.filter!=cms.emptyParam && cms.filter.length && !quiet)
			if (!confirm(cms.confirmmsg.format([tids.length,cms.filter]))) return;

		// get target path/filename
		if (!filetype) filetype=this.type_TW;
		target=target||cms.getTarget(filename,filetype==this.type_TX?'txt':filetype==this.type_CS?'csv':'html');
		if (!target) return; // cancelled by user

		var link='file:///'+target.replace(/\\/g,'/');
		var samefile=link==decodeURIComponent(window.location.href);
		var p=getLocalPath(document.location.href);
		if (samefile) {
			if (config.options.chkSaveBackups)
				{ var t=loadOriginal(p);if(t)saveBackup(p,t); }
			if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function)
				saveRss(p);
		}
		var notes='';
		var total={val:0};
		var out=this.assembleFile(target,filetype,tids,limit||0,notes,quiet,overwrite,merge,total);
		var ok=saveFile(target,out);
		if (ok && autoopen) {
			if (!samefile) window.open(link).focus();
			else { store.setDirty(false); window.location.reload(); }
		}
		if (!quiet || !(ok && autoopen))
			displayMessage((ok?this.okmsg:this.failmsg).format([total.val,target]),link);
	},
	selectTiddlers: function(filter,here) {
		var cms=config.macros.saveAs; // abbreviation
		var tids=[]; cms.filter=filter||'';
		if (filter==cms.emptyParam)
			return tids;
		if (filter==config.macros.saveAs.hereParam) {
			var here=story.findContainingTiddler(here);
			if (here) var tid=here.getAttribute('tiddler');
			else var tid=prompt(config.macros.saveAs.hereMsg,'');
			while (tid && !store.tiddlerExists(tid)) {
				var err='"'+tid+'" not found.\nPlease try again.\n\n';
				var tid=prompt(err+config.macros.saveAs.hereMsg,tid);
			}
			if (!tid) return false;  // cancelled by user
			return [store.getTiddler(tid)];
		}
		if (filter==config.macros.saveAs.askParam) {
			filter=prompt(config.macros.saveAs.askMsg,'');
			if (!filter) return false;  // cancelled by user
			cms.filter=filter=='*'?'':filter;
		}
		if (!filter||!filter.length||filter=='*') tids=store.getTiddlers('title');
		else tids=store.filterTiddlers('[tag['+filter+']]');
		return tids;
	},
	getTarget: function(defName,defExt) {
		var cms=config.macros.saveAs; // abbreviation
		// get new target path/filename
		var newPath=getLocalPath(window.location.href);
		var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\'); 
		if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
		if (!defName||!defName.length) { // use current filename as default
			var p=getLocalPath(window.location.href);
			var s=p.lastIndexOf('/'); if (s==-1) s=p.lastIndexOf('\\'); 
			if (s!=-1) defName=p.substr(s+1);
		}
		var defFilename=(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
		var target=cms.askForFilename(cms.filePrompt,newPath,defFilename,defExt);
		if (!target) return; // cancelled by user
		// if specified file does not include a path, assemble fully qualified path and filename
		var slashpos=target.lastIndexOf('/'); if (slashpos==-1) slashpos=target.lastIndexOf('\\');
		if (slashpos==-1) target=target+(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
		return target;
	},
	askForFilename: function(msg,path,file,defExt) {
		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.modeSave);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension=defExt||'html';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
				if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP/Vista only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
				s.FilterIndex=(defExt=='txt')?2:3; // default to HTML files;
				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;
	},
	plainTextHeader:
		 'Source:\n\t%0\n'
		+'Title:\n\t%1\n'
		+'Subtitle:\n\t%2\n'
		+'Created:\n\t%3 by %4\n'
		+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
	plainTextTiddler:
		'- - - - - - - - - - - - - - -\n'
		+'|     title: %0\n'
		+'|   created: %1\n'
		+'|  modified: %2\n'
		+'| edited by: %3\n'
		+'|      tags: %4\n'
		+'- - - - - - - - - - - - - - -\n'
		+'%5\n',
	plainTextFooter:
		'',
	newsFeedHeader:
		 '<'+'?xml version="1.0"?'+'>\n'
		+'<rss version="2.0">\n'
		+'<channel>\n'
		+'<title>%1</title>\n'
		+'<link>%0</link>\n'
		+'<description>%2</description>\n'
		+'<language>en-us</language>\n'
		+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
		+'<pubDate>%3</pubDate>\n'
		+'<lastBuildDate>%3</lastBuildDate>\n'
		+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
		+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
	newsFeedTiddler:
		'\n%0\n',
	newsFeedFooter:
		'</channel></rss>',
	pureStoreHeader:
		 '<html><body>'
		+'<style type="text/css">'
		+'	#storeArea {display:block;margin:1em;}'
		+'	#storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
		+'	#pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
		+'</style>'
		+'<div id="pureStoreHeading">'
		+'	TiddlyWiki "PureStore" export file<br>'
		+'	Source'+': <b>%0</b><br>'
		+'	Title: <b>%1</b><br>'
		+'	Subtitle: <b>%2</b><br>'
		+'	Created: <b>%3</b> by <b>%4</b><br>'
		+'	TiddlyWiki %5 / %6 %7<br>'
		+'	Notes:<hr><pre>%8</pre>'
		+'</div>'
		+'<div id="storeArea">',
	pureStoreTiddler:
		'%0\n%1',
	pureStoreFooter:
		'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
	assembleFile: function(target,filetype,tids,limit,notes,quiet,overwrite,merge,total) {
		var revised='';
		var now = new Date().toLocaleString();
		var src=convertUnicodeToUTF8(document.location.href);
		var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
		var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
		var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
		var twver = version.major+'.'+version.minor+'.'+version.revision;
		var v=version.extensions.SaveAsPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
		var headerargs=[src,title,subtitle,now,user,twver,'SaveAsPlugin',pver,notes];
		switch (filetype) {
			case this.type_TX: // plain text
				var header=this.plainTextHeader.format(headerargs);
				var footer=this.plainTextFooter;
				break;
			case this.type_CS: // comma-separated
				var fields={};
				for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
				var names=['title','created','modified','modifier','tags','text'];
				for (var f in fields) names.push(f);
				var header=names.join(',')+'\n';
				var footer='';
				break;
			case this.type_NF: // news feed (XML)
				headerargs[0]=store.getTiddlerText('SiteUrl','');
				var header=this.newsFeedHeader.format(headerargs);
				var footer=this.newsFeedFooter;
				tids=store.sortTiddlers(tids,'-modified');
				break;
			case this.type_PS: // PureStore (no code)
				var header=this.pureStoreHeader.format(headerargs);
				var footer=this.pureStoreFooter;
				break;
			case this.type_TW: // full TiddlyWiki
			default:
				var currPath=getLocalPath(window.location.href);
				var original=loadFile(currPath);
				if (!original) { alert(config.messages.cantSaveError); return; }
				var posDiv = locateStoreArea(original);
				if (!posDiv) { alert(config.messages.invalidFileError.format([currPath])); return; }
				var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
				var footer = '\n'+original.substr(posDiv[1]);
				break;
		}
		if (parseInt(limit)!=0) tids=tids.slice(0,limit);
		var out=this.getData(target,filetype,tids,quiet,overwrite,merge,fields);
		var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
		// if full TW, insert page title and language attr, and reset MARKUP blocks as needed...
		if (filetype==this.type_TW) {
			var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
			revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
			revised=updateLanguageAttribute(revised);
			var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
			revised=updateMarkupBlock(revised,'PRE-HEAD',
				titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
			revised=updateMarkupBlock(revised,'POST-HEAD',
				titles.contains('MarkupPostHead')?'MarkupPostHead':null);
			revised=updateMarkupBlock(revised,'PRE-BODY',
				titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
			revised=updateMarkupBlock(revised,'POST-SCRIPT',
				titles.contains('MarkupPostBody')?'MarkupPostBody':null);
		}
		total.val=out.length;
		return revised;
	},
	getData: function(target,filetype,tids,quiet,overwrite,merge,fields) {
		// output selected tiddlers and gather list of titles (for use with merge)
		var out=[]; var titles=[];
		var url=store.getTiddlerText('SiteUrl','');
		for (var i=0; i<tids.length; i++) {
			out.push(this.formatItem(store,filetype,tids[i],url,fields));
			titles.push(tids[i].title);
		}
		// if TW or PureStore format, ask to merge with existing tiddlers (if any)
		if (filetype==this.type_TW || filetype==this.type_PS) {
			if (overwrite) return out; // skip merge... forced overwrite
			var txt=loadFile(target);
			if (txt && txt.length) {
				var remoteStore=new TiddlyWiki();
				if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
				if (remoteStore.importTiddlyWiki(txt) && (merge||confirm(this.mergeprompt.format([target])))) {
					var existing=remoteStore.getTiddlers('title');
					for (var i=0; i<existing.length; i++)
						if (!titles.contains(existing[i].title))
							out.push(this.formatItem(remoteStore,filetype,existing[i],url));
					if (!quiet) displayMessage(this.mergestatus.format([tids.length,out.length-tids.length]));
				}
			}
		}
		return out;
	},
	formatItem: function(s,f,t,u,fields) {
		if (f==this.type_TW)
			var r=s.getSaver().externalizeTiddler(s,t);
		if (f==this.type_PS)
			var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
		if (f==this.type_NF)
			var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
		if (f==this.type_TX)
			var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
				t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
		if (f==this.type_CS) {
			function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
			var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
				toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
			for (var f in fields) out.push(toCSV(t.fields[f]||''));
			var r=out.join(',');
		}
		return r||'';
	}
};
//}}}
//{{{
// automatically add saveAs to backstage
config.tasks.saveAs = {
	text: 'saveAs',
	tooltip: config.macros.saveAs.prompt,
	action: function(){ clearMessage(); config.macros.saveAs.go(); }
}
config.backstageTasks.splice(config.backstageTasks.indexOf('save')+1,0,'saveAs');
//}}}
|Name|SaveAsPluginInfo|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.7.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SaveAsPlugin|
>//Note: This plugin replaces ''[[NewDocumentPlugin]]'' (except for the HTML+CSS "snapshot" features, which are now provided by [[SnapshotPlugin]].//
!!!!!Usage
<<<
This plugin automatically adds a 'save as' command to the TiddlyWiki 'backstage' menu so you can quickly create an exact copy of the current TiddlyWiki document.  The plugin also defines a macro that you can use to place a "save as..." command link into your sidebar/mainmenu/any tiddler (or wherever you like).  When the command link is clicked, a system-specific dialog box will be displayed so you can select/enter the desired target path and filename.
{{{
<<saveAs "label:..." "prompt:..." "filename:..." "type:..." "limit:..."
	quiet replace merge open filter|ask|here|none>>
}}}
//(all parameters are optional)//
*''label:...''<br>custom link text (instead of "save as...")
*''prompt:...''<br>custom tooltip text
*''filename:...''<br>default filename to be shown when asking for an output path/file
*''type:...''<br>a keyword, indicating one of the following output file formats:
**''~TiddlyWiki''<br>(or ''wiki'' or ''tw'') a TiddlyWiki HTML document 
**''~PureStore''<br>(or ''store'' or ''ps'') a TiddlyWiki "PureStore" HTML export file (just tiddlers, no core code)
**''~PlainText''<br>(or ''text'' or ''tx'') a plain text file listing of tiddler //source// content
**''Comma''<br>(or ''csv'' or ''cs'') a Comma-Separated Value (CSV) database/spreadsheet file
**''~NewsFeed''<br>(or ''xml'' or ''rss'' or ''nf'') an RSS ~NewsFeed XML file
*''limit:...''<br>output is limited to the specified number of tiddlers
*''quiet''<br>normally, when using filtering (see below), the number of matching tiddlers is reported and you are asked to confirm before saving those tiddlers to a new file.  Use the ''quiet'' keyword to suppress this confirmation step.
*''replace''<br>overwrites existing output file, if any, without confirmation.
*''merge''<br>merges with existing output file, if any, without confirmation.
*''open''<br>opens the newly created document file in a separate browser tab/window.
*''filter''<br>selects a subset of tiddlers to be written into the new document.  If omitted, all tiddlers in the document are written to the new file.  ''filter'' can either:
**a tag value<br>selects only tiddlers that are tagged with that value.  To select tiddlers based on a combination of tags, you can install [[MatchTagsPlugin]] to construct complex 'tag expressions' using full 'boolean' logic with AND, OR, and NOT operators, as well as nested parentheses.
**''ask''<br>prompts you to enter a tag (or tag expression) whenever you click on the 'save as...' command
**''here''<br>selects the current tiddler (if any).  If the command is not embedded within a tiddler, you will be prompted to enter a tiddler title.
**''none''<br>omits all tiddlers and creates a new //empty// document
<<<
!!!!!Examples
<<<
save all tiddlers:
>{{{<<saveAs>>}}}<br>try it: <<saveAs>>
save only tiddlers matching a single tag:
>{{{<<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" "ImportExportPackage>>
save to a ~PureStore format:
>{{{<<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>
save to a ~PlainText format:
>{{{<<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>
save tiddlers matching a complex combination of tags (requires [[MatchTagsPlugin]]):
>{{{<<saveAs (alpha or settings) and not systemConfig>>}}}
>try it: <<saveAs (alpha or settings) and not systemConfig>>
prompt for tag or tag expression each time:
>{{{<<saveAs "label:custom save as..." ask>>}}}
>try it: <<saveAs "label:custom save as..." ask>>
save this tiddler:
>{{{<<saveAs "label:save this tiddler..." {{"filename:"+tiddler.title}} quiet here>>}}}
>try it: <<saveAs "label:save this tiddler..." {{"filename:"+tiddler.title}} quiet here>>
<<<
!!!!!Revisions
<<<
2009.10.13 2.7.0 added 'here' param (saves current tiddler)
2009.08.16 2.6.2 fixed handling for backstage
2009.08.04 2.6.1 fixed handling when limit is omitted.
2009.08.03 2.6.0 added 'limit:nn' parameter.
2009.08.02 2.5.3 in getData(), if type=RSS, sort by modified (most recent first).
2009.07.03 2.5.2 TW252 fixup: don't call convertUTF8ToUnicode() for local loadFile() I/O
2009.04.30 2.5.1 custom fields in CSV output.
2009.04.19 2.5.0 added CSV format.
2008.09.29 2.4.3 in getData(), convert UTF8 to Unicode before merging (fixes international characters).
2008.09.28 2.4.2 in go(), fixed typo that prevented backstage SaveAs from working.
2008.09.24 2.4.1 if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively
2008.09.24 2.4.0 when 'open' param is used and file is saved to current location, reload() page instead of opening a new tab/window.  Added 'filename' param to specify default filename.  Added 'replace' and 'merge' keyword params to control file handling without asking user.  Improved use of 'quiet' flag to eliminate more unwanted messages
2008.09.19 2.3.2 fixed backstage SaveAs command (was defaulting to empty document).  in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.16 2.3.1 fixed IE 'navigate away' error by returning false from button onclick handler
2008.09.11 2.3.0 added support for alternative file formats: ~PlainText (TX), ~PureStore (PS), or ~NewsFeed (XML) in addition to existing ~TiddlyWiki (TW) document format
2008.09.06 2.2.1 corrected handling of autoopen attribute so it only applies when "open" param is specified
2008.08.01 2.2.0 added "open" param to auto-open newly saved document
2008.07.20 2.1.3 added "quiet" param to bypass confirmation when using tag filter
2008.04.22 2.1.2 corrected use of getTarget() to check for "user cancelled"
2008.04.22 2.1.1 documentation fixes
2008.04.22 2.1.0 added support for tag filtering to completely replace [[NewDocumentPlugin]] (now retired)
2008.04.12 2.0.1 automatically add "saveAs" to backstage commands
2008.04.12 2.0.0 initial release based on [[NewDocumentPlugin]]

__Previous revisions from [[NewDocumentPlugin]]__
2008.04.20 1.8.0 added support for 'noCSS' and 'viewer' params for alternative snapshot output
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.04 [*.*.*] update for ~TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.03.30 1.7.0 added support for "print" param as alternative for "snap".  When "print" is used, the filename is ignored and ouput is directed to another browser tab/window, where the print dialog is then automatically triggered
2007.03.30 1.6.1 added support for "here" keyword for current tiddler elementID and "prompt:text" param for specifying tooltip text
2007.02.12 1.6.0 in onClickNewDocument(), reset HTML source 'markup'
2006.10.23 1.5.1 in onClickNewDocument(), get saved parameter value for snapID instead of using default "contentWrapper" (oops!)
2006.10.18 1.5.0 new optional param for 'snap'... specify alternative DOM element ID (default is still "contentWrapper")
2006.08.03 1.4.3 in promptForFilename(), for IE (~WinXP only), added handling for ~UserAccounts.~CommonDialog
2006.07.29 1.4.2 in onClickNewDocument(), okmsg display is now linked to newly created file
2006.07.24 1.4.1 in promptForFilename(), check for nsIFilePicker.returnCancel to allow nsIFilePicker.returnOK **OR** nsIFilePicker.returnReplace to be processed
2006.05.23 1.4.0 due to very poor performance, support for tag *expressions* has been removed, in favor of a simpler "containsAny()" scan for tags
2006.04.09 1.3.6 in onClickNewDocument, added call to convertUnicodeToUTF8() to better handle international characters
2006.03.15 1.3.5 added nsIFilePicker() handler for selecting filename in moz-based browsers.  IE and other non-moz browsers still use simple prompt() dialog
2006.03.15 1.3.0 added "label:text" param for custom link text.  added special "all" filter parameter for "save as..." handling (writes all tiddlers to output file)
2006.03.09 1.2.0 added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document
2006.02.24 1.1.2 Fix incompatiblity with TW 2.0.5 by removing custom definition of getLocalPath() (which is now part of TW core)
2006.02.03 1.1.1 concatentate 'extra' params so that tag expressions don't have to be quoted.   moved all text to 'formatted' string definitions for easier translation.
2006.02.03 1.1.0 added support for tag EXPRESSIONS.  plus improved documentation and code cleanup
2006.02.03 1.0.0 Created
<<<
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these add them to the commands in ToolbarCommands under EditToolbar,
or in the MptwTheme tiddler under EditTemplate.
***/
//{{{
merge(config.commands,{

  saveCloseTiddler: {
    text: 'done/close',
    tooltip: 'Save changes to this tiddler and close it',
    handler: function(ev,src,title) {
      var closeTitle = title;
      var newTitle = story.saveTiddler(title,ev.shiftKey);
      if (newTitle)
        closeTitle = newTitle;
      return config.commands.closeTiddler.handler(ev,src,closeTitle);
    }
  },

  cancelCloseTiddler: {
    text: 'cancel/close',
    tooltip: 'Undo changes to this tiddler and close it',
    handler: function(ev,src,title) {
      // the same as closeTiddler now actually
      return config.commands.closeTiddler.handler(ev,src,title);
    }
  }

});

//}}}
/***
|Name|SaveFromWebConfig|
|Source|http://www.TiddlyTools.com/#SaveFromWebConfig|
|Documentation|http://www.TiddlyTools.com/#SaveFromWebPluginInfo|
|Version|1.3.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|configuration settings for SaveFromWebPlugin|
***/
/***
!!!!! URL for server-side 'reflector' script.
***/
//{{{
config.options.txtSaveFromWebScriptURL="savefromweb.php";
//}}}
/***
>Script can be hosted on ANY web server that supports PHP5.
***/
/***
!!!!! URL for TiddlyWiki core source
***/
//{{{
config.options.txtSaveFromWebSourceFile="http://www.TiddlyTools.com/empty.html";
//}}}
/***
>document URL for retrieving TiddlyWiki core source code. Using an *empty* TW minimizes data transfer for retrieving TW core. Can be on ANY domain... If blank, get core source code from current document URL.
***/
/***
!!!!! Target filename
***/
//{{{
config.options.txtSaveFromWebTargetFilename="";
//}}}
/***
>specifies the destination filename for the downloaded file. Can be any valid filename for local filesystem and appears as the default value when you are prompted to save the file.  If blank, the filename of the current document (or the domain name if there is no filename in the URL) is used.
***/
/***
!!!!! Pre-fetch option:
***/
//{{{
config.options.chkSaveFromWebPreFetch=false;
//}}}
/***
<<<
* true=get (and cache) TW core code when document is first loaded (i.e., when plugin is initialized)
* false=get and cache core code the first time the file is being saved
This option causes the plugin to retrieve the TiddlyWiki core source as soon as you load the document, instead of waiting for the first time you save.  This ensures that the TiddlyWiki core source can still be saved to the local filesystem even if your network connection is dropped before you save your changes.  Note that, even without pre-fetching, the core source is always cached after it is retrieved, so that subsequent saves don't do extra work to get it again.
<<<
***/
/***
!!!!! Local I/O option
***/
//{{{
config.options.chkSaveFromWebAttemptLocalIO=false;
//}}}
/***
<<<
(requires browser security permissions, i.e., "trusted site" settings).
The plugin will try to obtain security permission for direct filesystem I/O.  If you grant filesystem access to the script, then it writes the document directly to your filesystem, and doesn't use the server-side reflector script at all.  This allows you to save a remote file to your local filesystem, even if your net connection drops after you open the document. Note: if filesystem permissions are not granted, the plugin will automatically attempt to use the server-side reflector script as a fallback... even if no longer connected to the net.
<<<
***/
 
/***
|Name|SaveFromWebPlugin|
|Source|http://www.TiddlyTools.com/#SaveFromWebPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveFromWebPluginInfo|
|Version|1.3.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|extend 'save changes' to get remote document contents and save to local filesystem |
Normally, when you are viewing a TiddlyWiki document over the web (i.e., not via {{{file://}}}) and you select the "save changes" (or "save to disk") command, an error message is displayed: //__"You need to save this TiddlyWiki to a file before you can save changes."__//  This plugin extends the use of {{{<<saveChanges>>}}} so that when you are viewing and/or editing a remote TiddlyWiki document, instead of receiving this somewhat confusing and unhelpful message, you can still click the "save changes" (or "save to disk") command to ''store a copy of the remote document directly onto your local filesystem'', //including any unsaved tiddler changes/additions you have made while working on-line.//
!!!!!Documentation
>see [[SaveFromWebPluginInfo]]
!!!!!Configuration
> see [[SaveFromWebConfig]]
!!!!!Revisions
<<<
2011.02.14 1.3.2 fix OSX error: use picker.file.path
2008.09.29 1.3.1 in saveFromWeb(), do NOT convert UTF8 to Unicode when merging retrieved source for submission to server-side reflector script.  Fixes mangling of international characters and symbols.
|please see [[SaveFromWebPluginInfo]] for additional revision details|
2007.06.26 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveFromWebPlugin= {major: 1, minor: 3, revision: 2, date: new Date(2011,2,14)};
//}}}

//{{{
// DEFAULT SETTINGS
if (config.options.txtSaveFromWebScriptURL==undefined)
	config.options.txtSaveFromWebScriptURL="savefromweb.php";
if (config.options.txtSaveFromWebTargetFilename==undefined)
	config.options.txtSaveFromWebTargetFilename=""; // use current filename when blank
if (config.options.txtSaveFromWebSourceFile==undefined)
	config.options.txtSaveFromWebSourceFile=""; // use current URL when blank
if (config.options.chkSaveFromWebAttemptLocalIO==undefined)
	config.options.chkSaveFromWebAttemptLocalIO=true; // true=try to use local filesystem I/O (requires security permissions)
if (config.options.chkSaveFromWebPreFetch==undefined)
	config.options.chkSaveFromWebPreFetch=false; // true=retrieve TW core when document is first loaded
//}}}

//{{{
// OPTIONAL: get TW core source code when plugin is loaded (i.e., once per document session)
if (document.location.protocol!="file:" && config.options.chkSaveFromWebPreFetch) {
	// retrieve TW source from server...
	var src=document.location.href;
	if (config.options.txtSaveFromWebSourceFile && config.options.txtSaveFromWebSourceFile.length)
		src=config.options.txtSaveFromWebSourceFile;
	var target=config.options.txtSaveFromWebTargetFilename;
	if (!target.length) { // use current filename
		var loc=document.location.pathname;
		var slashpos=loc.lastIndexOf("/");
		target=(slashpos==-1)?loc:loc.substr(slashpos+1);
		if (!target.length) target=document.location.host+".html";
	}
	var xhr=loadRemoteFile(src,function(success,target,txt,src,xhr){if(success)config.saveFromWebSourceCache=txt;},target);
}
//}}}

//{{{
window.saveFromWeb_saveChanges = window.saveChanges;
window.saveChanges = function(onlyIfDirty,tiddlers) {
	// if on file:, just use standard core save handling
	if(document.location.protocol == "file:") { window.saveFromWeb_saveChanges.apply(this,arguments); return; }
	clearMessage();
	// get target filename
	var target=config.options.txtSaveFromWebTargetFilename;
	if (!target.length) { // use current filename
		var loc=document.location.pathname;
		var slashpos=loc.lastIndexOf("/");
		target=(slashpos==-1)?loc:loc.substr(slashpos+1);
		if (!target.length) target=document.location.host+".html";
	}
	// get TW core source location
	var src=document.location.href;
	if (config.options.txtSaveFromWebSourceFile && config.options.txtSaveFromWebSourceFile.length)
		src=config.options.txtSaveFromWebSourceFile;
	// if core source has already been cached, go straight to saving the file...
	if (config.saveFromWebSourceCache)
		{ window.saveFromWeb(true,target,config.saveFromWebSourceCache,src,null); return; }
	// otherwise, retrieve TW source from server...
	displayMessage("Retrieving TiddlyWiki core from "+src);
	var xhr=loadRemoteFile(src,window.saveFromWeb,target);
	if (!xhr) { // couldn't load remote, report core error message
		displayMessage("Could not retrieve TiddlyWiki core... download unsuccessful.");
		alert(config.messages.notFileUrlError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
	}
	return;
}
//}}}

//{{{
window.saveFromWeb = function(success,target,txt,url,xhr) {
	if(!success) {
		displayMessage("Could not retrieve TiddlyWiki core... download unsuccessful.");
		alert(config.messages.cantSaveError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
		return;
	}
	// Locate the storeArea div's in the original source
	var posDiv=locateStoreArea(txt);
	if(!posDiv) { alert(config.messages.invalidFileError.format([url])); return; }

	// cache the document source so subsequent saves don't have to retrieve the source each time
	if (!config.saveFromWebSourceCache) config.saveFromWebSourceCache=txt;

	// if we can get local filesystem access, then ask for a filename and merge/write the file
	if (config.options.chkSaveFromWebAttemptLocalIO) {
		try {
			// get local target path+filename (may be blocked by browser security)
			var target=promptForFilename( "Save file as:","C:\\",target,"html");
			if (!target || !target.length) return;
			saveBackup(target,txt);
			saveRss(target);
			saveEmpty(target,txt,posDiv);
			saveMain(target,txt,posDiv);
			return;
		} catch(e) { }
	}
	// otherwise, fallback to using online 'reflector' script (if any)
	if (config.options.txtSaveFromWebScriptURL.length) {
		displayMessage("Merging tiddlers with core and preparing for download...");
		var merged=txt.substr(0,posDiv[0]+startSaveArea.length)+"\n"+
			store.allTiddlersAsHtml()+"\n"+txt.substr(posDiv[1]);
		var title=getPageTitle().htmlEncode();
		merged=merged.replaceChunk("<title"+">","</title"+">"," "+title+" ");
		merged=updateLanguageAttribute(merged);
		merged=updateMarkupBlock(merged,"PRE-HEAD","MarkupPreHead");
		merged=updateMarkupBlock(merged,"POST-HEAD","MarkupPostHead");
		merged=updateMarkupBlock(merged,"PRE-BODY","MarkupPreBody");
		merged=updateMarkupBlock(merged,"POST-SCRIPT","MarkupPostBody");
		// create form in a hidden frame and submit it to server
		var html='<input type="hidden" name="filename" value="">'
			+'<input type="hidden" name="contents" value="">';
		var form=window.createHiddenForm(config.options.txtSaveFromWebScriptURL,html);
		form.filename.value=target;
		form.contents.value=merged;
		form.submit();
	}
}
//}}}

//{{{
window.createHiddenForm=function(action,body) {
	var f=document.getElementById("saveFromWebFrame");
	if (f) document.body.removeChild(f);
	var f=createTiddlyElement(document.body,"iframe","saveFromWebFrame");
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
	d.open();
	d.writeln('<form target="_self" action="'+action+'" method="post" enctype="multipart/form-data">'+body+'</form>');
	d.close();
	return d.getElementsByTagName("form")[0];
}
//}}}

//{{{
// note: if blocked by browser security, this function will throw an error...
// the CALLING function should use "try{...} catch(e){...}" to handle the security errors
window.promptForFilename=function(msg,path,file,defext) {
	var result="";
	if(window.Components) { // moz
		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.modeSave);
		picker.displayDirectory=null;
		picker.defaultExtension=defext;
		picker.defaultString=file;
		picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
		if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
	}
	else { // IE (XP only)
		var s = new ActiveXObject('UserAccounts.CommonDialog');
		s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
		s.FilterIndex=1; // default to ALL files;
		s.InitialDir=path;
		s.FileName=file;
		if (s.showOpen()) var result=s.FileName;
	}
	return result;
}
//}}}
|Name|SaveFromWebPluginInfo|
|Source|http://www.TiddlyTools.com/#SaveFromWebPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveFromWebPluginInfo|
|Version|1.3.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for SaveFromWebPlugin|
Normally, when you are viewing a TiddlyWiki document over the web (i.e., not via {{{file://}}}) and you select the "save changes" (or "save to disk") command, an error message is displayed: //__"You need to save this TiddlyWiki to a file before you can save changes."__//  This plugin extends the use of {{{<<saveChanges>>}}} so that when you are viewing and/or editing a remote TiddlyWiki document, instead of receiving this somewhat confusing and unhelpful message, you can still click the "save changes" (or "save to disk") command to ''store a copy of the remote document directly onto your local filesystem'', //including any unsaved tiddler changes/additions you have made while working on-line.//
!!!!!Usage
<<<
When you select <<saveChanges>> while viewing a remote document (i.e., a URL starting with http: rather than file:), the plugin first ''retrieves the TiddlyWiki core source code from the original document'' file stored on the remote server.  Then, it ''combines that core source with the tiddlers'' contained in the currently loaded document, ''including any changes you have made.''

While the next step //should// be to simply write the merged core+tiddler data directly to your hard drive, certain JavaScript features, such as reading/writing directly to the local filesystem, require expanded "cross-domain" privileges that are normally restricted for use only with ''signed'' scripts.  Although some browsers will let you grant filesystem permissions to a remotely-loaded script, this usually involves either a series of popup confirmation messages or manually re-configuring (and/or disabling) your browser's built-in security protections, which often include settings and options that most users find difficult to understand and inconvenient to access.

To avoid these security complications, the "save from web" processing requires just a few additional steps to prepare the modified document and deliver it to your browser: rather than writing the document data directly to the local filesystem, the plugin ''sends the merged core+tiddler data to a small companion script installed on the remote server'' (see savefromweb.php, below).  This simple "reflector" script then immediately ''downloads the new document data back to the browser'', which prompts you to either open the downloaded document for viewing or save it to your local hard drive.  Once the document has been stored on your filesystem, you can open that copy in your browser and work offline with full access to all TiddlyWiki features.

Important note for users of Internet Explorer's Popup Blocker feature...
>{{block{
//The default security settings of IE's "Popup Blocker" feature will warn you whenever an attempt is made to download a file in response to a scripted action such as the internal javascript processing performed by SaveFromWebPlugin.  However, if you then click IE's yellow warning message and select the 'download this file...' menu command, this will also cause IE to attempt a 'page transition' away from the currently loaded TiddlyWiki document... but, because there are unsaved changes in the document, you will first receive a confirmation message, allowing you to cancel the page transition.  Regrettably, this also prevents the download from succeeding.  Unfortunately, if you permit the page transition to occur, then your TiddlyWiki document is immediately reloaded and all the unsaved tiddler changes are discarded... and the download still fails to complete!//

''__To permit SaveFromWebPlugin to function properly with Internet Explorer, you will need to adjust the "download" security setting...__''
#From the ''Tools > Internet Options > Security'' tab,
#Select the "Internet" security zone (or what ever zone you are using to view the remote document)
#Press the "Custom level..." button
#In the "Settings" listbox, scroll to the "Downloads" section
#''ENABLE "automatic prompting for downloads"''(the first setting in the section)
#Press OK to accept the new settings.
}}}
<<<
!!!!!Configuration
> see [[SaveFromWebConfig]]
!!!!! Server script installation
<<<
On your web server, in the same directory as your published document, create a file called ''{{{savefromweb.php}}}'', containing the following PHP server-side script.
//{{{
<?php
// savefromweb.php
// Author: Eric L. Shulman / ELS Design Studios
// Source: http://www.TiddlyTools.com/savefromweb.php
// License: http://www.TiddlyTools.com/#LegalStatements
// Usage: install the php script on the server in the same directory as your TiddlyWiki document(s)

// This script 'reflects' any contents sent to it (via form POST) so they are
// sent back to the browser as a binary file.  This invokes the browser's built-in
// download-and-save handling, which does not require security permissions to access
// the local filesystem.

$args=$_POST;
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header('Content-type: application/binary; charset="UTF-8"');
header('Content-disposition: attachment; filename="'.$args['filename'].'"');
$c=$args['contents'];
$c=str_replace("\\'","'",$c); // decode single-quotes
$c=str_replace("\\\"","\"",$c); // decode double-quotes
$c=str_replace("\\\\","\\",$c); // decode backslashes
$c=str_replace("\r\n","\n",$c); // change CRLF to LF
print $c;
?>
//}}}
<<<
!!!!!Direct filesystem access (browser security permissions)
<<<
Although sending the merged document data from browser to server and back again allows it to be saved to your filesystem without requiring you to extensively re-configure your browser's built-in security protections, it also increases the overall processing time because the document's data is actually being transmitted //three// times: it is first retrieved from the remote server to get the TiddlyWiki core source; then, after merging with the updated tiddler data, it is sent back to the server, which immediately 'reflects' it back to the browser for final handling by the built-in "file download" interface.

However, ''if you are accessing a "trusted site"'' (perhaps on a server within a secure private network), depending upon the specific options provided by your browser, ''you may be able to eliminate the round-trip processing by authorizing the appropriate filesystem security permissions in your browser''.  When filesystem access has been permitted, instead of making the round trip with the merged core+tiddler data, the plugin will directly prompt you for a destination path/file, using your computer's "native" path/file selection interface, and then write new the TiddlyWiki document data directly to the indicated location on your local file system.

FireFox users: please see [[FAQ_BrowserSecurity]] for information on configuring your browser to permit remote filesystem access from trusted sites
<<<
!!!!!Revisions
<<<
2008.09.29 1.3.1 in saveFromWeb(), do NOT convert UTF8 to Unicode when merging retrieved source for submission to server-side reflector script.  Fixes mangling of international characters and symbols.
2008.01.08 [*.*.*] plugin size reduction: documentation moved to SaveFromWebPluginInfo
2007.08.08 1.3.0 added caching of the downloaded TW core source code so it only has to be retrieved once.
2007.08.08 1.2.5 Added option to 'pre-fetch' the TW core so background download-and-cache is performed each time the document is loaded.  added option to try using direct filesystem access (with permissions) to bypass the round-trip through the server-side reflector script if the connection to the network is dropped after the document was loaded into the browser.  If permissions are not granted, fallback to use the server-side reflector script.
2007.08.07 1.2.0 removed 'download only' optimization.  The round-trip takes longer, but permits the reflector script to be located ANYWHERE on the net, at ANY valid URL, instead of having to use the same server location as the remote document.
2007.07.27 1.1.1 new documentation and code cleanup
2007.07.26 1.1.0 re-wrote to support savefromweb.php remote "reflector" script.  Allows use of browser's native download dialog to receive file as a fallback alternative to using local filesystem I/O (which would require additional security permissions)
2007.06.27 1.0.1 in saveFromWeb(), pass content from server through convertUnicodeToUTF8() before writing to file.
2007.06.26 1.0.0 initial release
<<<
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{

config.macros.selectTheme = {
  label: {
    selectTheme:"select theme",
    selectPalette:"select palette"
  },
  prompt: {
    selectTheme:"Select the current theme",
    selectPalette:"Select the current palette"
  },
  tags: {
    selectTheme:'systemTheme',
    selectPalette:'systemPalette'
  }
};

config.macros.selectTheme.handler = function(place,macroName)
{
  var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
  // want to handle palettes and themes with same code. use mode attribute to distinguish
  btn.setAttribute('mode',macroName);
};

config.macros.selectTheme.onClick = function(ev)
{
  var e = ev ? ev : window.event;
  var popup = Popup.create(this);
  var mode = this.getAttribute('mode');
  var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
  // for default
  if (mode == "selectPalette") {
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
    btn.setAttribute('theme',"(default)");
    btn.setAttribute('mode',mode);
  }
  for(var i=0; i<tiddlers.length; i++) {
    var t = tiddlers[i].title;
    var name = store.getTiddlerSlice(t,'Name');
    var desc = store.getTiddlerSlice(t,'Description');
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
    btn.setAttribute('theme',t);
    btn.setAttribute('mode',mode);
  }
  Popup.show();
  return stopEvent(e);
};

config.macros.selectTheme.onClickTheme = function(ev)
{
  var mode = this.getAttribute('mode');
  var theme = this.getAttribute('theme');
  if (mode == 'selectTheme')
    story.switchTheme(theme);
  else // selectPalette
    config.macros.selectTheme.updatePalette(theme);
  return false;
};

config.macros.selectTheme.updatePalette = function(title)
{
  if (title != "") {
    store.deleteTiddler("ColorPalette");
    if (title != "(default)")
      store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
          config.options.txtUserName,undefined,"");
    refreshAll();
    if(config.options.chkAutoSave)
      saveChanges(true);
  }
};

config.macros.applyTheme = {
  label: "apply",
  prompt: "apply this theme or palette" // i'm lazy
};

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
  var useTiddler = params[0] ? params[0] : tiddler.title;
  var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
  btn.setAttribute('theme',useTiddler);
  btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};

//}}}
<<search>><<closeAll>><<permaview>><<tiddler TiddlyNewSidebar>><<saveChanges>><<tiddler TiddlyHomeSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options" "Change TiddlyWiki advanced options">>
a personal puzzle notebook
My Puzzle Repository
The items in the YourSearch result list are displayed in a "ranked" order, i.e. the best matches are listed first. 

If you want any other ordering (e.g. sort by date) you need to make the function {{{abego.YourSearch.getRankFunction()}}} return a different rank function {{{function(tiddler, lastQuery)}}}. The number returned by the rankFunction defines the position of the given tiddler in the result. Higher numbers are displayed first. Tiddlers with same rank numbers are sorted by their titles (case sensitive).

! Example: Sort by title
As tiddlers with the same rank number are sorted by their title you may use the following simple script to get the YourSearch result alphabetically sorted:
{{{
<script>
var myZeroRankFunction = function(tiddler, lastQuery) {
    return 0;
};

abego.YourSearch.getRankFunction = function() {
    return myZeroRankFunction;
}
</script>
}}}

! Example: Sort by date
For a "sort by last modified date" ordering you may use this script:
{{{
<script>
var myDateRankFunction = function(tiddler, lastQuery) {
    return tiddler.modified.getTime();
};

abego.YourSearch.getRankFunction = function() {
    return myDateRankFunction;
}
</script>
}}}

! Use the Standard Ordering
To switch back to the standard ordering you may use this code use:
{{{
<script>
abego.YourSearch.getRankFunction = abego.YourSearch.getStandardRankFunction;
</script>
}}}
//(Note: there are no {{{()}}} behind the {{{abego.YourSearch.getStandardRankFunction}}})//

! Switch between "Standard" and "By Date" Ordering
With just some few lines more you can use a checkbox to switch between "standard" and "by date" sorting. 

To define the checkbox add a line like the following in a tiddler (e.g. in AdvancedOptions):
{{{
<<option chkYourSearchSortByDate>> Sort 'Your Search' result by Date 
}}}
<<option chkYourSearchSortByDate>> Sort 'Your Search' result by Date 
(Clicking the checkbox will affect the next query you type).

And here the script that adjusts the ranking/sorting:
{{{
<script>
var myDateRankFunction = function(tiddler, lastQuery) {
    return tiddler.modified.getTime();
};

abego.YourSearch.getRankFunction = function() {
return config.options.chkYourSearchSortByDate 
        ? myDateRankFunction
         : abego.YourSearch.getStandardRankFunction();
}
</script>
}}}
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

  parseTagExpr: function(debug) {

    if (this.trim() == "")
      return "(true)";

    var anyLogicOp = /(!|&&|\|\||\(|\))/g;
    var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

    var spaced = this.
      // because square brackets in templates are no good
      // this means you can use [(With Spaces)] instead of [[With Spaces]]
      replace(/\[\(/g," [[").
      replace(/\)\]/g,"]] ").
      // space things out so we can use readBracketedList. tricky eh?
      replace(anyLogicOp," $1 ");

    var expr = "";

    var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

    for (var i=0;i<tokens.length;i++)
      if (tokens[i].match(singleLogicOp))
        expr += tokens[i];
      else
        expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

    if (debug)
      alert(expr);

    return '('+expr+')';
  }

});

merge(TiddlyWiki.prototype,{
  getTiddlersByTagExpr: function(tagExpr,sortField) {

    var result = [];

    var expr = tagExpr.parseTagExpr();

    store.forEachTiddler(function(title,tiddler) {
      if (eval(expr))
        result.push(tiddler);
    });

    if(!sortField)
      sortField = "title";

    result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});

    return result;
  }
});

config.taggly = {

  // for translations
  lingo: {
    labels: {
      asc:        "\u2191", // down arrow
      desc:       "\u2193", // up arrow
      title:      "title",
      modified:   "modified",
      created:    "created",
      show:       "+",
      hide:       "-",
      normal:     "normal",
      group:      "group",
      commas:     "commas",
      sitemap:    "sitemap",
      numCols:    "cols\u00b1", // plus minus sign
      label:      "Tagged as '%0':",
      exprLabel:  "Matching tag expression '%0':",
      excerpts:   "excerpts",
      descr:      "descr",
      slices:     "slices",
      contents:   "contents",
      sliders:    "sliders",
      noexcerpts: "title only",
      noneFound:  "(none)"
    },

    tooltips: {
      title:      "Click to sort by title",
      modified:   "Click to sort by modified date",
      created:    "Click to sort by created date",
      show:       "Click to show tagging list",
      hide:       "Click to hide tagging list",
      normal:     "Click to show a normal ungrouped list",
      group:      "Click to show list grouped by tag",
      sitemap:    "Click to show a sitemap style list",
      commas:     "Click to show a comma separated list",
      numCols:    "Click to change number of columns",
      excerpts:   "Click to show excerpts",
      descr:      "Click to show the description slice",
      slices:     "Click to show all slices",
      contents:   "Click to show entire tiddler contents",
      sliders:    "Click to show tiddler contents in sliders",
      noexcerpts: "Click to show entire title only"
    },

    tooDeepMessage: "* //sitemap too deep...//"
  },

  config: {
    showTaggingCounts: true,
    listOpts: {
      // the first one will be the default
      sortBy:     ["title","modified","created"],
      sortOrder:  ["asc","desc"],
      hideState:  ["show","hide"],
      listMode:   ["normal","group","sitemap","commas"],
      numCols:    ["1","2","3","4","5","6"],
      excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
    },
    valuePrefix: "taggly.",
    excludeTags: ["excludeLists","excludeTagging"],
    excerptSize: 50,
    excerptMarker: "/%"+"%/",
    siteMapDepthLimit: 25
  },

  getTagglyOpt: function(title,opt) {
    var val = store.getValue(title,this.config.valuePrefix+opt);
    return val ? val : this.config.listOpts[opt][0];
  },

  setTagglyOpt: function(title,opt,value) {
    // create it silently if it doesn't exist
    if (!store.tiddlerExists(title)) {
      store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");

      // <<tagglyTagging expr:"...">> creates a tiddler to store its display settings
      // Make those tiddlers less noticeable by tagging as excludeSearch and excludeLists
      // Because we don't want to hide real tags, check that they aren't actually tags before doing so
      // Also tag them as tagglyExpression for manageability
      // (contributed by RA)
      if (!store.getTaggedTiddlers(title).length) {
        store.setTiddlerTag(title,true,"excludeSearch");
        store.setTiddlerTag(title,true,"excludeLists");
        store.setTiddlerTag(title,true,"tagglyExpression");
      }
    }

    // if value is default then remove it to save space
    return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);
  },

  getNextValue: function(title,opt) {
    var current = this.getTagglyOpt(title,opt);
    var pos = this.config.listOpts[opt].indexOf(current);
    // supposed to automagically don't let cols cycle up past the number of items
    // currently broken in some situations, eg when using an expression
    // lets fix it later when we rewrite for jquery
    // the columns thing should be jquery table manipulation probably
    var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
    var newPos = (pos + 1) % limit;
    return this.config.listOpts[opt][newPos];
  },

  toggleTagglyOpt: function(title,opt) {
    var newVal = this.getNextValue(title,opt);
    this.setTagglyOpt(title,opt,newVal);
  },

  createListControl: function(place,title,type) {
    var lingo = config.taggly.lingo;
    var label;
    var tooltip;
    var onclick;

    if ((type == "title" || type == "modified" || type == "created")) {
      // "special" controls. a little tricky. derived from sortOrder and sortBy
      label = lingo.labels[type];
      tooltip = lingo.tooltips[type];

      if (this.getTagglyOpt(title,"sortBy") == type) {
        label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
        onclick = function() {
          config.taggly.toggleTagglyOpt(title,"sortOrder");
          return false;
        }
      }
      else {
        onclick = function() {
          config.taggly.setTagglyOpt(title,"sortBy",type);
          config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
          return false;
        }
      }
    }
    else {
      // "regular" controls, nice and simple
      label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
      tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
      onclick = function() {
        config.taggly.toggleTagglyOpt(title,type);
        return false;
      }
    }

    // hide button because commas don't have columns
    if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
      createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
  },

  makeColumns: function(orig,numCols) {
    var listSize = orig.length;
    var colSize = listSize/numCols;
    var remainder = listSize % numCols;

    var upperColsize = colSize;
    var lowerColsize = colSize;

    if (colSize != Math.floor(colSize)) {
      // it's not an exact fit so..
      upperColsize = Math.floor(colSize) + 1;
      lowerColsize = Math.floor(colSize);
    }

    var output = [];
    var c = 0;
    for (var j=0;j<numCols;j++) {
      var singleCol = [];
      var thisSize = j < remainder ? upperColsize : lowerColsize;
      for (var i=0;i<thisSize;i++)
        singleCol.push(orig[c++]);
      output.push(singleCol);
    }

    return output;
  },

  drawTable: function(place,columns,theClass) {
    var newTable = createTiddlyElement(place,"table",null,theClass);
    var newTbody = createTiddlyElement(newTable,"tbody");
    var newTr = createTiddlyElement(newTbody,"tr");
    for (var j=0;j<columns.length;j++) {
      var colOutput = "";
      for (var i=0;i<columns[j].length;i++)
        colOutput += columns[j][i];
      var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
      wikify(colOutput,newTd);
    }
    return newTable;
  },

  createTagglyList: function(place,title,isTagExpr) {
    switch(this.getTagglyOpt(title,"listMode")) {
      case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
      case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
      case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
      case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
    }
  },

  getTaggingCount: function(title,isTagExpr) {
    // thanks to Doug Edmunds
    if (this.config.showTaggingCounts) {
      var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
      if (tagCount > 0)
        return " ("+tagCount+")";
    }
    return "";
  },

  getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
    return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
  },

  getExcerpt: function(inTiddlerTitle,title,indent) {
    if (!indent)
      indent = 1;

    var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
    var t = store.getTiddler(title);

    if (t && displayMode == "excerpts") {
      var text = t.text.replace(/\n/," ");
      var marker = text.indexOf(this.config.excerptMarker);
      if (marker != -1) {
        return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
      }
      else if (text.length < this.config.excerptSize) {
        return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
      }
      else {
        return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
      }
    }
    else if (t && displayMode == "contents") {
      return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
    }
    else if (t && displayMode == "sliders") {
      return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
    }
    else if (t && displayMode == "descr") {
      var descr = store.getTiddlerSlice(title,'Description');
      return descr ? " {{excerpt{" + descr  + "}}}" : "";
    }
    else if (t && displayMode == "slices") {
      var result = "";
      var slices = store.calcAllSlices(title);
      for (var s in slices)
        result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
      return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
    }
    return "";
  },

  notHidden: function(t,inTiddler) {
    if (typeof t == "string")
      t = store.getTiddler(t);
    return (!t || !t.tags.containsAny(this.config.excludeTags) ||
        (inTiddler && this.config.excludeTags.contains(inTiddler)));
  },

  // this is for normal and commas mode
  createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

    var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

    if (this.getTagglyOpt(title,"sortOrder") == "desc")
      list = list.reverse();

    var output = [];
    var first = true;
    for (var i=0;i<list.length;i++) {
      if (this.notHidden(list[i],title)) {
        var countString = this.getTaggingCount(list[i].title);
        var excerpt = this.getExcerpt(title,list[i].title);
        if (useCommas)
          output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
        else
          output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

        first = false;
      }
    }

    return this.drawTable(place,
      this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
      useCommas ? "commas" : "normal");
  },

  // this is for the "grouped" mode
  createTagglyListGrouped: function(place,title,isTagExpr) {
    var sortBy = this.getTagglyOpt(title,"sortBy");
    var sortOrder = this.getTagglyOpt(title,"sortOrder");

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")
      list = list.reverse();

    var leftOvers = []
    for (var i=0;i<list.length;i++)
      leftOvers.push(list[i].title);

    var allTagsHolder = {};
    for (var i=0;i<list.length;i++) {
      for (var j=0;j<list[i].tags.length;j++) {

        if (list[i].tags[j] != title) { // not this tiddler

          if (this.notHidden(list[i].tags[j],title)) {

            if (!allTagsHolder[list[i].tags[j]])
              allTagsHolder[list[i].tags[j]] = "";

            if (this.notHidden(list[i],title)) {
              allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
                    + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

              leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

            }
          }
        }
      }
    }

    var allTags = [];
    for (var t in allTagsHolder)
      allTags.push(t);

    var sortHelper = function(a,b) {
      if (a == b) return 0;
      if (a < b) return -1;
      return 1;
    };

    allTags.sort(function(a,b) {
      var tidA = store.getTiddler(a);
      var tidB = store.getTiddler(b);
      if (sortBy == "title") return sortHelper(a,b);
      else if (!tidA && !tidB) return 0;
      else if (!tidA) return -1;
      else if (!tidB) return +1;
      else return sortHelper(tidA[sortBy],tidB[sortBy]);
    });

    var leftOverOutput = "";
    for (var i=0;i<leftOvers.length;i++)
      if (this.notHidden(leftOvers[i],title))
        leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

    var output = [];

    if (sortOrder == "desc")
      allTags.reverse();
    else if (leftOverOutput != "")
      // leftovers first...
      output.push(leftOverOutput);

    for (var i=0;i<allTags.length;i++)
      if (allTagsHolder[allTags[i]] != "")
        output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

    if (sortOrder == "desc" && leftOverOutput != "")
      // leftovers last...
      output.push(leftOverOutput);

    return this.drawTable(place,
        this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
        "grouped");

  },

  // used to build site map
  treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")
      list.reverse();

    var indent = "";
    for (var j=0;j<depth;j++)
      indent += "*"

    var childOutput = "";

    if (depth > this.config.siteMapDepthLimit)
      childOutput += indent + this.lingo.tooDeepMessage + "\n";
    else
      for (var i=0;i<list.length;i++)
        if (list[i].title != title)
          if (this.notHidden(list[i].title,this.config.inTiddler))
            childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

    if (depth == 0)
      return childOutput;
    else
      return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
  },

  // this if for the site map mode
  createTagglyListSiteMap: function(place,title,isTagExpr) {
    this.config.inTiddler = title; // nasty. should pass it in to traverse probably
    var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
    return this.drawTable(place,
        this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
        "sitemap"
        );
  },

  macros: {
    tagglyTagging: {
      handler: function (place,macroName,params,wikifier,paramString,tiddler) {
        var parsedParams = paramString.parseParams("tag",null,true);
        var refreshContainer = createTiddlyElement(place,"div");

        // do some refresh magic to make it keep the list fresh - thanks Saq
        refreshContainer.setAttribute("refresh","macro");
        refreshContainer.setAttribute("macroName",macroName);

        var tag = getParam(parsedParams,"tag");
        var expr = getParam(parsedParams,"expr");

        if (expr) {
          refreshContainer.setAttribute("isTagExpr","true");
          refreshContainer.setAttribute("title",expr);
          refreshContainer.setAttribute("showEmpty","true");
        }
        else {
          refreshContainer.setAttribute("isTagExpr","false");
          if (tag) {
                refreshContainer.setAttribute("title",tag);
            refreshContainer.setAttribute("showEmpty","true");
          }
          else {
                refreshContainer.setAttribute("title",tiddler.title);
            refreshContainer.setAttribute("showEmpty","false");
          }
        }
        this.refresh(refreshContainer);
      },

      refresh: function(place) {
        var title = place.getAttribute("title");
        var isTagExpr = place.getAttribute("isTagExpr") == "true";
        var showEmpty = place.getAttribute("showEmpty") == "true";
        jQuery(place).empty()
        addClass(place,"tagglyTagging");
        var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
        if (countFound > 0 || showEmpty) {
          var lingo = config.taggly.lingo;
          config.taggly.createListControl(place,title,"hideState");
          if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
            createTiddlyElement(place,"span",null,"tagglyLabel",
                isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
            config.taggly.createListControl(place,title,"title");
            config.taggly.createListControl(place,title,"modified");
            config.taggly.createListControl(place,title,"created");
            config.taggly.createListControl(place,title,"listMode");
            config.taggly.createListControl(place,title,"excerpts");
            config.taggly.createListControl(place,title,"numCols");
            config.taggly.createTagglyList(place,title,isTagExpr);
            if (countFound == 0 && showEmpty)
              createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
          }
        }
      }
    }
  },

  // todo fix these up a bit
  styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
    ""].join("\n"),

  init: function() {
    merge(config.macros,this.macros);
    config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
    store.addNotification("TagglyTaggingStyles",refreshStyles);
  }
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
  name: "inlinesliders",
  // match: "\\+\\+\\+\\+|\\<slider",
  match: "\\<slider",
  // lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
  lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
  handler: function(w) {
    this.lookaheadRegExp.lastIndex = w.matchStart;
    var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
    if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
      var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
      var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
      panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
      wikify(lookaheadMatch[3],panel);
      w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
    }
   },
   onClickSlider : function(e) {
    if(!e) var e = window.event;
    var n = this.nextSibling;
    n.style.display = (n.style.display=="none") ? "block" : "none";
    return false;
  }
});

//}}}
/***
|Name|TemporaryTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#TemporaryTiddlersPlugin|
|Version|1.1.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|blocks tiddlers tagged with "temporary" from being saved into the TW file|
!!!!!Usage
<<<
When the TW document is saved (either to local disk or remote URL), any tiddlers tagged with "temporary" will be skipped over, so that they are not written to the file.  To keep a temporary tiddler, simply edit it and remove the tag before saving the file.  This feature can be combined with various plugins that can automatically create new tiddlers, such as [[SearchOptionsPlugin]] ([[SearchResults]]) and [[ImportTiddlersPlugin]] ([[ImportedTiddlers]]) so that these transient results are not retained when you save you document.

You can also use this tag with the {{{<<loadTiddlers>>}}} macro and the //auto-tagging// features provided by [[ImportTiddlersPlugin]], so that each time you open your document, you can automatically retrieve an up-to-date set of common tiddlers that are stored in another document (either local or via remote URL), without those tiddlers being retained when you save your document.
<<<
!!!!!Configuration
<<<
When saving the document:
<<option chkTemporaryQuiet>> Suppress reporting of individual temporary tiddlers that have not been saved
<<option chkTemporaryKeep>> Keep temporary tiddlers (i.e., ignore the 'temporary' tag)
Enter a tag value to use when marking tiddlers as temporary: <<option txtTemporaryTag>>
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.2] added "nnn temporary tiddlers not saved" summary message
2008.04.08 [1.1.1] don't automatically add configuration options to AdvancedOptions tiddler
2008.03.01 [1.1.0] added support for recognizing 'temporary' flag stored as a tiddler *field* (as an optional alternative to using a tag)
2007.02.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TemporaryTiddlersPlugin= {major: 1, minor: 1, revision: 2, date: new Date(2008,11,14)};

// configuration defaults
if (config.options.chkTemporaryKeep ==undefined) config.options.chkTemporaryKeep =false;
if (config.options.chkTemporaryQuiet==undefined) config.options.chkTemporaryQuiet=true;
if (config.options.txtTemporaryTag==undefined) config.options.txtTemporaryTag="temporary";
// lingo
config.messages.TemporaryWarning = "'%0' ...temporary tiddler";
config.messages.TemporarySummary = "%0 temporary tiddlers will not be saved";
// core override
SaverBase.prototype.externalize = function(store) 
{
	var results=[]; var totaltemps=0;
	var tiddlers=store.getTiddlers("title");
	for (var t=0; t<tiddlers.length; t++) {
		if (config.options.chkTemporaryKeep||!(tiddlers[t].fields['temporary']||tiddlers[t].isTagged(config.options.txtTemporaryTag)))
			results.push(this.externalizeTiddler(store, tiddlers[t]));
		else {
			if (!config.options.chkTemporaryQuiet) // notify user that tiddler won't be saved
				displayMessage(config.messages.TemporaryWarning.format([tiddlers[t].title]));
			totaltemps++;
		}
	}
	if (totaltemps) displayMessage(config.messages.TemporarySummary.format([totaltemps]));
	return results.join("\n");
}
//}}}
/***
|Name|TiddlerTweakerPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerTweakerPlugin|
|Version|2.4.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|select multiple tiddlers and modify author, created, modified and/or tag values|
~TiddlerTweaker is a 'power tool' for TiddlyWiki authors.  Select multiple tiddlers from a listbox and 'bulk modify' the creator, author, created, modified and/or tag values of those tiddlers using a compact set of form fields.  The values you enter into the fields simultaneously overwrite the existing values in all tiddlers you have selected.
!!!!!Usage
<<<
{{{<<tiddlerTweaker>>}}}
{{smallform{<<tiddlerTweaker>>}}}
By default, any tags you enter into the TiddlerTweaker will //replace// the existing tags in all the tiddlers you have selected.  However, you can also use TiddlerTweaker to quickly filter specified tags from the selected tiddlers, while leaving any other tags assigned to those tiddlers unchanged:
>Any tag preceded by a '+' (plus) or '-' (minus), will be added or removed from the existing tags //instead of replacing the entire tag definition// of each tiddler (e.g., enter '-excludeLists' to remove that tag from all selected tiddlers.  When using this syntax, care should be taken to ensure that //every// tag is preceded by '+' or '-', to avoid inadvertently overwriting any other existing tags on the selected tiddlers.  (note: the '+' or '-' prefix on each tag value is NOT part of the tag value, and is only used by TiddlerTweaker to control how that tag value is processed)
Important Notes:
* TiddlerTweaker is a 'power user' tool that can make changes to many tiddlers at once.  ''You should always have a recent backup of your document (or 'save changes' just *before* tweaking the tiddlers), just in case you accidentally 'shoot yourself in the foot'.''
* The date and author information on any tiddlers you tweak will ONLY be updated if the corresponding checkboxes have been selected.  As a general rule, after using TiddlerTweaker, always ''//remember to save your document//'' when you are done, even though the tiddler timeline tab may not show any recently modified tiddlers.
* Selecting and updating all tiddlers in a document can take a while.  Your browser may warn about an 'unresponsive script'.  Usually, if you allow it to continue, it should complete the processing... eventually.  Nonetheless, be sure to save your work before you begin tweaking lots of tiddlers, just in case something does get stuck.
<<<
!!!!!Revisions
<<<
2011.01.21 2.4.5 auto-selection: use "-" for untagged tiddlers.  Also, added 'opened', 'invert'
2009.09.15 2.4.4 added 'edit' button. moved html definition to separate section
2009.09.13 2.4.3 in settiddlers(), convert backslashed chars (\n\b\s\t) in replacement text
2009.06.26 2.4.2 only add brackets around tags containing spaces
2009.06.22 2.4.1 in setFields(), add brackets around all tags shown tweaker edit field
2009.03.30 2.4.0 added 'sort by modifier'
2009.01.22 2.3.0 added support for text pattern find/replace
2008.10.27 2.2.3 in setTiddlers(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.09.07 2.2.2 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.12 2.2.1 replace built-in backstage tweak task with tiddler tweaker control panel (moved from BackstageTweaks)
2008.01.13 2.2.0 added 'auto-selection' links: all, changed, tags, title, text
2007.12.26 2.1.0 added support for managing 'creator' custom field (see [[CoreTweaks]])
2007.11.01 2.0.3 added config.options.txtTweakerSortBy for cookie-based persistence of list display order preference setting.
2007.09.28 2.0.2 in settiddlers() and deltiddlers(), added suspend/resume notification handling (improves performance when operating on multiple tiddlers)
2007.08.03 2.0.1 added shadow definition for [[TiddlerTweaker]] tiddler for use as parameter references with {{{<<tiddler>>, <<slider>> or <<tabs>>}}} macros.
2007.08.03 2.0.0 converted from inline script
2006.01.01 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerTweakerPlugin= {major: 2, minor: 4, revision: 5, date: new Date(2011,1,21)};

// shadow tiddler
config.shadowTiddlers.TiddlerTweaker='<<tiddlerTweaker>>';

// defaults
if (config.options.txtTweakerSortBy==undefined) config.options.txtTweakerSortBy='modified';

// backstage task
if (config.tasks) { // for TW2.2b3 or above
	config.tasks.tweak.tooltip='review/modify tiddler internals: dates, authors, tags, etc.';
	config.tasks.tweak.content='{{smallform small groupbox{<<tiddlerTweaker>>}}}';
}

// 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.macros.tiddlerTweaker = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var span=createTiddlyElement(place,'span');
		span.innerHTML=store.getTiddlerText('TiddlerTweakerPlugin##html');
		this.init(span.getElementsByTagName('form')[0],config.options.txtTweakerSortBy);
	},
	init: function(f,sortby) { // set form controls
		if (!f) return; // form might not be rendered yet...
		while (f.list.options[0]) f.list.options[0]=null; // empty the list
		var tids=store.getTiddlers(sortby);
		if (sortby=='size') // descending order
			tids.sort(function(a,b) {return a.text.length > b.text.length ? -1 : (a.text.length == b.text.length ? 0 : +1);});
		var who='';
		for (i=0; i<tids.length; i++) { var t=tids[i];
			var label=t.title; var value=t.title;
			switch (sortby) {
				case 'modified':
				case 'created':
					var t=tids[tids.length-i-1]; // reverse order
					var when=t[sortby].formatString('YY.0MM.0DD 0hh:0mm ');
					label=when+t.title;
					value=t.title;
					break;
				case 'size':
					label='['+t.text.length+'] '+label;
					break;
				case 'modifier':
				case 'creator':
					if (who!=t[sortby]) {
						who=t[sortby];
						f.list.options[f.list.length]=new Option('by '+who+':','',false,false);
					}
					label='\xa0\xa0\xa0'+label; // indent
					break;
			}
			f.list.options[f.list.length]=new Option(label,value,false,false);
		}
		f.title.value=f.who.value=f.creator.value=f.tags.value='';
		f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value='';
		f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value='';
		f.stats.disabled=f.set.disabled=f.del.disabled=f.edit.disabled=f.display.disabled=true;
		f.settitle.disabled=false;
		config.options.txtTweakerSortBy=sortby;
		f.sortby.value=sortby; // sync droplist
		if (sortby!='modified') saveOptionCookie('txtTweakerSortBy');
		else removeCookie('txtTweakerSortBy');
	},
	enablefields: function(here) { // enables/disables inputs based on #items selected
		var f=here.form; var list=f.list;
		var c=0; for (i=0;i<list.length;i++) if (list.options[i].selected) c++;
		if (c>1) f.title.disabled=true;
		if (c>1) f.settitle.checked=false;
		f.set.disabled=(c==0);
		f.del.disabled=(c==0);
		f.edit.disabled=(c==0);
		f.display.disabled=(c==0);
		f.settitle.disabled=(c>1);
		f.stats.disabled=(c==0);
		var msg=(c==0)?'select tiddlers':(c+' tiddler'+(c!=1?'s':'')+' selected');
		here.previousSibling.firstChild.firstChild.nextSibling.innerHTML=msg;
		if (c) clearMessage(); else displayMessage('no tiddlers selected');
	},
	setfields: function(here) { // set fields from first selected tiddler
		var f=here.form;
		if (!here.value.length) {
			f.title.value=f.who.value=f.creator.value=f.tags.value='';
			f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value='';
			f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value='';
			return;
		}
		var tid=store.getTiddler(here.value); if (!tid) return;
		f.title.value=tid.title;
		f.who.value=tid.modifier;
		f.creator.value=tid.fields['creator']||''; // custom field - might not exist
		f.tags.value=tid.tags.map(function(t){return String.encodeTiddlyLink(t)}).join(' ');
		var c=tid.created; var m=tid.modified;
		f.cm.value=c.getMonth()+1;
		f.cd.value=c.getDate();
		f.cy.value=c.getFullYear();
		f.ch.value=c.getHours();
		f.cn.value=c.getMinutes();
		f.mm.value=m.getMonth()+1;
		f.md.value=m.getDate();
		f.my.value=m.getFullYear();
		f.mh.value=m.getHours();
		f.mn.value=m.getMinutes();
	},
	selecttiddlers: function(here,callback) {
		var f=here; while (f&&f.nodeName.toLowerCase()!='form')f=f.parentNode;
		for (var t=f.list.options.length-1; t>=0; t--)
			f.list.options[t].selected=callback(f.list.options[t]);
		config.macros.tiddlerTweaker.enablefields(f.list);
		return false;
	},
	settiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		var cdate=new Date(f.cy.value,f.cm.value-1,f.cd.value,f.ch.value,f.cn.value);
		var mdate=new Date(f.my.value,f.mm.value-1,f.md.value,f.mh.value,f.mn.value);
		if (tids.length>1 && !confirm('Are you sure you want to update these tiddlers:\n\n'+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			var title=!f.settitle.checked?tid.title:f.title.value;
			var who=!f.setwho.checked?tid.modifier:f.who.value;
			var text=tid.text;
			if (f.replacetext.checked) {
				var r=f.replacement.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
				text=text.replace(new RegExp(f.pattern.value,'mg'),r);
			}				
			var tags=tid.tags;
			if (f.settags.checked) { 
				var intags=f.tags.value.readBracketedList();
				var addtags=[]; var deltags=[]; var reptags=[];
				for (i=0;i<intags.length;i++) {
					if (intags[i].substr(0,1)=='+')
						addtags.push(intags[i].substr(1));
					else if (intags[i].substr(0,1)=='-')
						deltags.push(intags[i].substr(1));
					else
						reptags.push(intags[i]);
				}
				if (reptags.length)
					tags=reptags;
				if (addtags.length)
					tags=new Array().concat(tags,addtags);
				if (deltags.length)
					for (i=0;i<deltags.length;i++)
						{ var pos=tags.indexOf(deltags[i]); if (pos!=-1) tags.splice(pos,1); }
			}
			if (!f.setcdate.checked) cdate=tid.created;
			if (!f.setmdate.checked) mdate=tid.modified;
			store.saveTiddler(tid.title,title,text,who,mdate,tags,tid.fields);
			if (f.setcreator.checked) store.setValue(tid.title,'creator',f.creator.value); // set creator
			if (f.setcdate.checked) tid.assign(null,null,null,null,null,cdate); // set create date
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	displaytiddlers: function(here,edit) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0; i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		story.displayTiddlers(story.findContainingTiddler(f),tids,edit?DEFAULT_EDIT_TEMPLATE:null);
	},
	deltiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			if (tid.tags.contains('systemConfig')) {
				var msg=tid.title+' is tagged with systemConfig.'
					+'\n\nRemoving this tiddler may cause unexpected results.  Are you sure?';
				if (!confirm(msg)) continue;
			}
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	stats: function(here) {
		var f=here.form; var list=f.list; var tids=[]; var out=''; var tot=0;
		var target=f.nextSibling;
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			out+='[['+tid.title+']] '+tid.text.length+'\n'; tot+=tid.text.length;
		}
		var avg=tot/tids.length;
		out=tot+' bytes in '+tids.length+' selected tiddlers ('+avg+' bytes/tiddler)\n<<<\n'+out+'<<<\n';
		removeChildren(target);
		target.innerHTML="<hr><font size=-2><a href='javascript:;' style='float:right' "
			+"onclick='this.parentNode.parentNode.style.display=\"none\"'>close</a></font>";
		wikify(out,target);
		target.style.display='block';
	}
};
//}}}
/***
//{{{
!html
<style>
.tiddlerTweaker table,
.tiddlerTweaker table tr,
.tiddlerTweaker table td
	{ padding:0;margin:0;border:0;white-space:nowrap; }
</style><form class='tiddlerTweaker'><!--
--><table style="width:100%"><tr valign="top"><!--
--><td style="text-align:center;width:99%;"><!--
	--><font size=-2><div style="text-align:left;"><span style="float:right"><!--
	-->&nbsp; <a href="javascript:;" 
		title="select all tiddlers"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return opt.value.length;
		});">all</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers currently displayed in the story column"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return story.getTiddler(opt.value);
		});">opened</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers that are new/changed since the last file save"
		onclick="var lastmod=new Date(document.lastModified);
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tid=store.getTiddler(opt.value);
				return tid&&tid.modified>lastmod;
			});
		">changed</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers with at least one matching tag"
		onclick="var t=prompt('Enter space-separated tags (match one or more).  Use \x22-\x22 to match untagged tiddlers');
			if (!t||!t.length) return false;
			var tags=t.readBracketedList();
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tid=store.getTiddler(opt.value);
				return tid&&tags[0]=='-'?!tid.tags.length:tid.tags.containsAny(tags);
			});
		">tags</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers whose titles include matching text"
		onclick="var t=prompt('Enter a title (or portion of a title) to match');
			if (!t||!t.length) return false;
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				return opt.value.indexOf(t)!=-1;
			});
		">titles</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers containing matching text"
		onclick="var t=prompt('Enter tiddler text (content) to match');
			if (!t||!t.length) return false;
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tt=store.getTiddlerText(opt.value,'');
				return tt.indexOf(t)!=-1;
			});
		">text</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="reverse selection of all list items"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return !opt.selected;
		});">invert</a><!--
	--></span><span>select tiddlers</span><!--
	--></div><!--
	--></font><select multiple name=list size="11" style="width:99.99%" 
		title="use click, shift-click and/or ctrl-click to select multiple tiddler titles" 
		onclick="config.macros.tiddlerTweaker.enablefields(this)" 
		onchange="config.macros.tiddlerTweaker.setfields(this)"><!--
	--></select><br><!--
	-->show<input type=text size=1 value="11" 
		onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--
	-->by<!--
	--><select name=sortby size=1 
		onchange="config.macros.tiddlerTweaker.init(this.form,this.value)"><!--
	--><option value="title">title</option><!--
	--><option value="size">size</option><!--
	--><option value="modified">modified</option><!--
	--><option value="created">created</option><!--
	--><option value="modifier">modifier</option><!--
	--></select><!--
	--><input type="button" value="refresh" 
		onclick="config.macros.tiddlerTweaker.init(this.form,this.form.sortby.value)"<!--
	--> <input type="button" name="stats" disabled value="totals..." 
		onclick="config.macros.tiddlerTweaker.stats(this)"><!--
--></td><td style="width:1%"><!--
	--><div style="text-align:left"><font size=-2>&nbsp;modify values</font></div><!--
	--><table style="width:100%;"><tr><!--
	--><td style="padding:1px"><!--
		--><input type=checkbox name=settitle unchecked 
			title="allow changes to tiddler title (rename tiddler)" 
			onclick="this.form.title.disabled=!this.checked">title<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=title size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setcreator unchecked 
			title="allow changes to tiddler creator" 
			onclick="this.form.creator.disabled=!this.checked">created by<!--
	--></td><td style="padding:1px;"><!--
		--><input type=text name=creator size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setwho unchecked 
			title="allow changes to tiddler author" 
			onclick="this.form.who.disabled=!this.checked">modified by<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=who size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setcdate unchecked 
			title="allow changes to created date" 
			onclick="var f=this.form;
				f.cm.disabled=f.cd.disabled=f.cy.disabled=f.ch.disabled=f.cn.disabled=!this.checked"><!--
		-->created on<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=cm size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=cd size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=cy size=4 style="width:3em;padding:0;text-align:center" disabled><!--
		--> at <input type=text name=ch size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> : <input type=text name=cn size=2 style="width:2em;padding:0;text-align:center" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setmdate unchecked 
			title="allow changes to modified date" 
			onclick="var f=this.form;
				f.mm.disabled=f.md.disabled=f.my.disabled=f.mh.disabled=f.mn.disabled=!this.checked"><!--
		-->modified on<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=mm size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=md size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=my size=4 style="width:3em;padding:0;text-align:center" disabled><!--
		--> at <input type=text name=mh size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> : <input type=text name=mn size=2 style="width:2em;padding:0;text-align:center" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=replacetext unchecked
			title="find/replace matching text" 
			onclick="this.form.pattern.disabled=this.form.replacement.disabled=!this.checked">replace text<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=pattern size=15 value="" style="width:40%" disabled 
			title="enter TEXT PATTERN (regular expression)"> with<!--
		--><input type=text name=replacement size=15 value="" style="width:40%" disabled 
			title="enter REPLACEMENT TEXT"><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=settags checked 
			title="allow changes to tiddler tags" 
			onclick="this.form.tags.disabled=!this.checked">tags<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=tags size=35 value="" style="width:98%" 
			title="enter new tags or use '+tag' and '-tag' to add/remove tags from existing tags"><!--
	--></td></tr></table><!--
	--><div style="text-align:center"><!--
	--><nobr><input type=button name=display disabled style="width:24%" value="display" 
		title="show selected tiddlers"
		onclick="config.macros.tiddlerTweaker.displaytiddlers(this,false)"><!--
	--> <input type=button name=edit disabled style="width:23%" value="edit" 
		title="edit selected tiddlers"
		onclick="config.macros.tiddlerTweaker.displaytiddlers(this,true)"><!--
	--> <input type=button name=del disabled style="width:24%" value="delete" 
		title="remove selected tiddlers"
		onclick="config.macros.tiddlerTweaker.deltiddlers(this)"><!--
	--> <input type=button name=set disabled style="width:24%" value="update" 
		title="update selected tiddlers"
		onclick="config.macros.tiddlerTweaker.settiddlers(this)"></nobr><!--
	--></div><!--
--></td></tr></table><!--
--></form><span style="display:none"><!--content replaced by tiddler "stats"--></span>
!end
//}}}
***/
 
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options 
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed. 
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab  = config.options.chkHideTabsBarWhenSingleTab  ? config.options.chkHideTabsBarWhenSingleTab  : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
	tooltip : "see ",
	tooltipClose : "click here to close this tab",
	tooltipSave : "click here to save this tab",
	promptRename : "Enter tiddler new name",
	currentTiddler : "",
	previousState : false,
	previousKey : config.options.txtPreviousTabKey,
	nextKey : config.options.txtNextTabKey,	
	tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
	handler: function(place,macroName,params) {
		var previous = null;
		if (config.macros.tiddlersBar.isShown())
			story.forEachTiddler(function(title,e){
				if (title==config.macros.tiddlersBar.currentTiddler){
					var d = createTiddlyElement(null,"span",null,"tab tabSelected");
					config.macros.tiddlersBar.createActiveTabButton(d,title);
					if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
					previous = "active";
				}
				else {
					var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
					var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
					btn.setAttribute("tiddler", title);
					if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
					previous=btn;
				}
				var isDirty =story.isDirty(title);
				var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
				c.setAttribute("tiddler", title);
				if (place.childNodes) {
					place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
					place.insertBefore(d,place.firstChild); 
				}
				else place.appendChild(d);
			})
	}, 
	refresh: function(place,params){
		removeChildren(place);
		config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
		if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
			story.refreshAllTiddlers();
			if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
			config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
		}
	},
	isShown : function(){
		if (config.options.chkDisableTabsBar) return false;
		if (!config.options.chkHideTabsBarWhenSingleTab) return true;
		var cpt=0;
		story.forEachTiddler(function(){cpt++});
		return (cpt>1);
	},
	selectNextTab : function(){  //used when the current tab is closed (to select another tab)
		var previous="";
		story.forEachTiddler(function(title){
			if (!config.macros.tiddlersBar.currentTiddler) {
				story.displayTiddler(null,title);
				return;
			}
			if (title==config.macros.tiddlersBar.currentTiddler) {
				if (previous) {
					story.displayTiddler(null,previous);
					return;
				}
				else config.macros.tiddlersBar.currentTiddler=""; 	// so next tab will be selected
			}
			else previous=title;
			});		
	},
	onSelectTab : function(e){
		var t = this.getAttribute("tiddler");
		if (t) story.displayTiddler(null,t);
		return false;
	},
	onTabClose : function(e){
		var t = this.getAttribute("tiddler");
		if (t) {
			if(story.hasChanges(t) && !readOnly) {
				if(!confirm(config.commands.cancelTiddler.warning.format([t])))
				return false;
			}
			story.closeTiddler(t);
		}
		return false;
	},
	onTabSave : function(e) {
		var t = this.getAttribute("tiddler");
		if (!e) e=window.event;
		if (t) config.commands.saveTiddler.handler(e,null,t);
		return false;
	},
	onSelectedTabButtonClick : function(event,src,title) {
		var t = this.getAttribute("tiddler");
		if (!event) event=window.event;
		if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
			config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
		return false;
	},
	onTiddlersBarAction: function(event) {
		var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
		if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
	},
	createActiveTabButton : function(place,title) {
		if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
			var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
			btn.setAttribute("tiddler", title);
		}
		else
			createTiddlyText(place,title);
	}
}

story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;

story.closeTiddler = function(title,animate,unused) {
	if (title==config.macros.tiddlersBar.currentTiddler)
		config.macros.tiddlersBar.selectNextTab();
	story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
	story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);
	var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;  
	if (config.macros.tiddlersBar.isShown()) {
		story.forEachTiddler(function(t,e){
			if (t!=title) e.style.display="none";
			else e.style.display="";
		})
		config.macros.tiddlersBar.currentTiddler=title;
	}
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
	coreRefreshPageTemplate(title);
	if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}

ensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)

config.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";
store.addNotification("StyleSheetTiddlersBar", refreshStyles);

config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");

//}}}
<<upload>><html><a href=download.php class='button'>download</a></html>
<<newTiddler>>
<script>
var Ptext = "'P" + (store.reverseLookup("tags","puzzle",true).length+1) + ") ' puzzle";
var RMtext = "'RM" + (store.reverseLookup("tags","recreational-maths",true).length+1) + ") ' recreational-maths";
var Mtext = "'M" + (store.reverseLookup("tags","mathemagic",true).length+1) + ") ' mathemagic";
var Otext = "'O" + (store.reverseLookup("tags","olympiad",true).length+1) + ") ' olympiad";
var CStext = "'CS" + (store.reverseLookup("tags","computer-science",true).length+1) + ") ' computer-science";
var FPtext = "'FP" + (store.reverseLookup("tags","fun",true).length+1) + ") ' fun";
wikify("<<newJournal " + Ptext + " label:'New Puzzle' prompt:'Creates a New Puzzle Entry'>>",place);
wikify("<<newJournal " + RMtext + " label:'New Recreational Maths' prompt:'Creates a New Recreational Maths Entry'>>",place);
wikify("<<newJournal " + Mtext + " label:'New Mathemagic' prompt:'Creates a New Mathemagic Entry'>>",place);
wikify("<<newJournal " + Otext + " label:'New Olympiad' prompt:'Creates a New Olympiad Entry'>>",place);
wikify("<<newJournal " + CStext + " label:'New Computer Science' prompt:'Creates a New Computer Science Entry'>>",place);
wikify("<<newJournal " + FPtext + " label:'New Fun Puzzle' prompt:'Creates a New Fun Puzzle Entry'>>",place);
</script>
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;

merge(config.macros,{

  toggleTag: {

    createIfRequired: true,
    shortLabel: "[[%0]]",
    longLabel: "[[%0]] [[%1]]",

    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      var tiddlerTitle = tiddler ? tiddler.title : '';
      var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
      var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
      var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
      var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
      var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
      label = (label == '-' ? '' : label); // dash means no label
      var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
      var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
        if (!store.tiddlerExists(title)) {
          if (config.macros.toggleTag.createIfRequired) {
            var content = store.getTiddlerText(title); // just in case it's a shadow
            store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
          }
          else
            return false;
        }
        if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
            theTiddler.modified = new Date();
        store.setTiddlerTag(title,this.checked,tag);
        return true;
      });
    }
  }
});

//}}}

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 10/01/2016 01:23:16 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  | ok |
| 10/01/2016 01:23:43 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  | failed |
| 10/01/2016 01:24:32 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  |
| 18/02/2016 10:35:10 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  |
| 16/04/2016 13:09:49 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  | failed |
| 16/04/2016 13:09:59 | YourName | [[/|http://dlow.me/puzzles/]] | [[store.php|http://dlow.me/puzzles/store.php]] | . | [[index.html | http://dlow.me/puzzles/index.html]] |  |
| 04/06/2016 15:28:57 | YourName | [[/|http://www.web.dlow.me/puzzles/]] | [[store.php|http://www.web.dlow.me/puzzles/store.php]] | . | [[index.html | http://www.web.dlow.me/puzzles/index.html]] |  |
| 25/09/2016 00:47:24 | YourName | [[/|http://web.dlow.me/puzzles/]] | [[store.php|http://web.dlow.me/puzzles/store.php]] | . | [[index.html | http://web.dlow.me/puzzles/index.html]] |  | ok |
| 25/09/2016 00:48:42 | YourName | [[/|http://web.dlow.me/puzzles/]] | [[store.php|http://web.dlow.me/puzzles/store.php]] | . | [[index.html | http://web.dlow.me/puzzles/index.html]] |  |
| 09/05/2017 18:50:45 | YourName | [[/|https://web.dlow.me/puzzles/]] | [[store.php|https://web.dlow.me/puzzles/store.php]] | . | [[index.html | https://web.dlow.me/puzzles/index.html]] |  |
UploadPlugin uses the following sequence for finding parameters :
#''macro'' parameters
#''Options'' saved in cookies
#''Plugin'' default values
!Options used by UploadPlugin
| Option | Value | Default |
|Upload Username: |<<option txtUploadUserName>>| |
|Upload Password: |<<option pasUploadPassword>>| |
|Url of the UploadService script: |<<option txtUploadStoreUrl urlInput>>| store.php |
|Relative Directory where to store the file: |<<option txtUploadDir urlInput>>| . (the script directory) |
|Filename of the uploaded file: |<<option txtUploadFilename urlInput>>| index.html |
|Directory to backup file on webserver^^(1)^^: |<<option txtUploadBackupDir urlInput>>| //null// (none/no backup) |
|Log in UploadLog |<<option chkUploadLog>> Trace Upload| true |
|Maximum of lines in UploadLog |<<option txtUploadLogMaxLine>>| 10 |

^^(1)^^No backup if Backup Directory is empty, the previous file will be overwritten. Use a '.' to backup in the script directory.

<<upload>> with these options.

!Upload Macro parameters
{{{
<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
 Optional positional parameters can be passed to overwrite UploadOptions. 
}}}

!UploadToFile Macro Macro parameters
{{{
<<uploadTofile [filename [tiddlerTitle]]>>
 tiddlerTitle, filename: if omitted the title of the current tiddler
}}}
/***
|''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");


//}}}

// null logger : no more UploadLog and no upload logging
// BidiX - 2006/11/8
//{{{
config.macros.upload.UploadLog = function() {return this;};
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {};
config.macros.upload.UploadLog.prototype.endUpload = function() {};
//}}}
/***
|''Name:''|UploadToFileMacro|
|''Description:''|Upload a tiddler as a file using UploadPlugin context. Used with the SimonBaird's HideWhenPlugin ViewTemplate provides a new command in the tiddler toolbar.|
|''Version:''|2.0.1|
|''Date:''|Apr 21, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadToFileMacro|
|''Usage:''|{{{<<uploadTofile [filename [tiddlerTitle]]>>}}}<br>{{{tiddlerTitle, filename: if omitted the title of the current tiddler}}}|
|''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:''|UploadPlugin|
***/
//{{{
version.extensions.UploadToFileMacro = {
	major: 2, minor: 0, revision: 1, 
	date: new Date("Apr 21, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadToFilePlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

// require UploadPlugin 4.0.0 or better
config.macros.uploadToFile = {
	label: "upload %0 to file %1",
	prompt: "upload tiddler '%0' to file '%1' ",
	warning: "Are you sure you want to upload '%0'?",
	messages: {
		fileUploaded: "tiddler '%0' uploaded to file '%1'",
		fileNotUploaded: "tiddler '%0' NOT uploaded"
	},

	handler: function(place, macroName, params, wikifier,paramString, tiddler) {
		// parameters initialization
		var toFilename = params[0];
		var tiddlerTitle = params[1];
		if (!tiddlerTitle) { 
			tiddlerTitle = tiddler.title;
		} else {
			tiddler = store.getTiddler(tiddlerTitle);
		}
		if (!toFilename) { 
			toFilename = tiddlerTitle;
		} 
		var prompt = this.prompt.format([tiddlerTitle, toFilename]);
		createTiddlyButton(place, this.label.format([params[1], params[0]]), this.prompt.format([tiddlerTitle, toFilename]), 
			function () {
				config.macros.uploadToFile.upload(tiddler, null, toFilename); 
				return false;}, 
			null, null, null);
	},

	upload:  function(tiddler, storeUrl, toFilename, uploadDir, backupDir, username, password) {
		if (!tiddler)	{
			alert("Tiddler not found.");
			return false;
		}
		var uploadIt = true; 
		if ((this.warning) && (!confirm(this.warning.format([tiddler.title])))) 
			return false;
		// parameters initialization
		storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
		toFilename = (toFilename ? toFilename : tiddler.title);
		backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
		uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
		username = (username ? username : config.options.txtUploadUserName);
		password = (password ? password :config.options.pasUploadPassword);
		var callback = function(status,params,responseText,url,xhr) {
			if (status) { 
				if (responseText.substring(0,1) == '0') {
					// 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:")));
					if (destfile.substring(0,2) == './') 
						destfile = destfile.substring(2);
					displayMessage(config.macros.uploadToFile.messages.fileUploaded.format([params[6],destfile]),
						bidix.dirname(url)+'/'+destfile);
				} else {
					alert(responseText);
					displayMessage(config.macros.uploadToFile.messages.fileNotUploaded.format([params[1]]));
				}
			} else {
				displayMessage("HTTP Error " + xhr.status + " in accessing " + url);
			}
		};
		var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password, tiddler.title);
		return bidix.upload.httpUpload(uploadParams,tiddler.text,callback,uploadParams);
		
	}
};

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"
	}
};

//
// Initializations
//

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

//}}}
<!--{{{-->
<span class='yourSearchNumber' macro='foundTiddler number'></span>
<span class='yourSearchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;
<span macro='foundTiddler field includeURL'/></span>&nbsp;-&nbsp;
<span class='yourSearchTags' macro='foundTiddler field tags 50'/></span>
<span macro="yourSearch if previewText"><div class='yourSearchText' macro='foundTiddler field text 250'/></div></span>
<!--}}}-->
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.5 (2010-02-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2010 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Community:''|[[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]]|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!About YourSearch
YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!

For more information see [[Help|YourSearch Help]].
!Compatibility
This plugin requires TiddlyWiki 2.1. 
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.5.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:5,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",licence:"[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",copyright:"Copyright (c) abego Software GmbH, 2005-2010 (www.abego-software.de)"};if(!window.abego){window.abego={};}if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,_4=_1.length;i<_4;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,_7=this.length;i<_7;i++){_5.call(_6,this[i],i,this);}};}abego.toInt=function(s,_8){if(!s){return _8;}var n=parseInt(s);return (n==NaN)?_8:n;};abego.createEllipsis=function(_9){var e=createTiddlyElement(_9,"span");e.innerHTML="&hellip;";};abego.shallowCopy=function(_a){if(!_a){return _a;}var _b={};for(var n in _a){_b[n]=_a[n];}return _b;};abego.copyOptions=function(_c){return !_c?{}:abego.shallowCopy(_c);};abego.countStrings=function(_d,s){if(!s){return 0;}var _e=s.length;var n=0;var _f=0;while(1){var i=_d.indexOf(s,_f);if(i<0){return n;}n++;_f=i+_e;}return n;};abego.getBracedText=function(_10,_11,_12){if(!_11){_11=0;}var re=/\{([^\}]*)\}/gm;re.lastIndex=_11;var m=re.exec(_10);if(m){var s=m[1];var _13=abego.countStrings(s,"{");if(!_13){if(_12){_12.lastIndex=re.lastIndex;}return s;}var len=_10.length;for(var i=re.lastIndex;i<len&&_13;i++){var c=_10.charAt(i);if(c=="{"){_13++;}else{if(c=="}"){_13--;}}}if(!_13){if(_12){_12.lastIndex=i-1;}return _10.substring(m.index+1,i-1);}}};abego.select=function(_14,_15,_16,_17){if(!_17){_17=[];}_14.forEach(function(t){if(_15.call(_16,t)){_17.push(t);}});return _17;};abego.consumeEvent=function(e){if(e.stopPropagation){e.stopPropagation();}if(e.preventDefault){e.preventDefault();}e.cancelBubble=true;e.returnValue=true;};abego.TiddlerFilterTerm=function(_18,_19){if(!_19){_19={};}var _1a=_18;if(!_19.textIsRegExp){_1a=_18.escapeRegExp();if(_19.fullWordMatch){_1a="\\b"+_1a+"\\b";}}var _1b=new RegExp(_1a,"m"+(_19.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_1b,_19.fields,_19.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_1c){return this.tester.test(_1c);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}var _1d=m[2]?m[2].trim():"";r.push({name:"text",value:_1d});r[0].text=[_1d];return {title:m[1].trim(),params:r};}else{return {title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_1e,_1f,_20){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var _21={"!":"title","%":"text","#":"tags"};var _22={};var _23;re.lastIndex=_1f;while(1){var i=re.lastIndex;var m=re.exec(_1e);if(!m||m.index!=i){throw "Word or String literal expected";}if(m[1]){var _24={};var _25=abego.getBracedText(_1e,0,_24);if(!_25){throw "Invalid {...} syntax";}var f=Function("tiddler","return ("+_25+");");return {func:f,lastIndex:_24.lastIndex,markRE:null};}if(m[2]){_23=true;}else{if(m[3]){_22[_21[m[3]]]=1;}else{if(m[4]){_22[m[4]]=1;}else{var _26=m[6];var _27=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _20=abego.copyOptions(_20);_20.fullWordMatch=_23;_20.textIsRegExp=_26;var _28=[];for(var n in _22){_28.push(n);}if(_28.length==0){_20.fields=_20.defaultFields;}else{_20.fields=_28;_20.withExtendedFields=false;}var _29=new abego.TiddlerFilterTerm(_27,_20);var _2a=_26?_27:_27.escapeRegExp();if(_2a&&_23){_2a="\\b"+_2a+"\\b";}return {func:function(_2b){return _29.test(_2b);},lastIndex:re.lastIndex,markRE:_2a?"(?:"+_2a+")":null};}}}}};abego.BoolExp=function(s,_2c,_2d){this.s=s;var _2e=_2d&&_2d.defaultOperationIs_OR;var _2f=/\s*(?:(\-|not)|(\())/gi;var _30=/\s*\)/g;var _31=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var _32=/\s*[^\)\s]/g;var _33=/\s*(\-|not)?(\s*\()?/gi;var _34;var _35=function(_36){_33.lastIndex=_36;var m=_33.exec(s);var _37;var _38;if(m&&m.index==_36){_36+=m[0].length;_37=m[1];if(m[2]){var e=_34(_36);_30.lastIndex=e.lastIndex;if(!_30.exec(s)){throw "Missing ')'";}_38={func:e.func,lastIndex:_30.lastIndex,markRE:e.markRE};}}if(!_38){_38=_2c(s,_36,_2d);}if(_37){_38.func=(function(f){return function(_39){return !f(_39);};})(_38.func);_38.markRE=null;}return _38;};_34=function(_3a){var _3b=_35(_3a);while(1){var l=_3b.lastIndex;_31.lastIndex=l;var m=_31.exec(s);var _3c;var _3d;if(m&&m.index==l){_3c=!m[1];_3d=_35(_31.lastIndex);}else{try{_3d=_35(l);}catch(e){return _3b;}_3c=_2e;}_3b.func=(function(_3e,_3f,_40){return _40?function(_41){return _3e(_41)||_3f(_41);}:function(_42){return _3e(_42)&&_3f(_42);};})(_3b.func,_3d.func,_3c);_3b.lastIndex=_3d.lastIndex;if(!_3b.markRE){_3b.markRE=_3d.markRE;}else{if(_3d.markRE){_3b.markRE=_3b.markRE+"|"+_3d.markRE;}}}};var _43=_34(0);this.evalFunc=_43.func;if(_43.markRE){this.markRegExp=new RegExp(_43.markRE,_2d.caseSensitive?"mg":"img");}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments);};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp;};abego.BoolExp.prototype.toString=function(){return this.s;};abego.MultiFieldRegExpTester=function(re,_44,_45){this.re=re;this.fields=_44?_44:["title","text","tags"];this.withExtendedFields=_45;};abego.MultiFieldRegExpTester.prototype.test=function(_46){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_46,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}if(this.withExtendedFields){return store.forEachField(_46,function(_47,_48,_49){return typeof _49=="string"&&re.test(_49)?_48:null;},true);}return null;};abego.TiddlerQuery=function(_4a,_4b,_4c,_4d,_4e){if(_4c){this.regExp=new RegExp(_4a,_4b?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_4d,_4e);}else{this.expr=new abego.BoolExp(_4a,abego.parseTiddlerFilterTerm,{defaultFields:_4d,caseSensitive:_4b,withExtendedFields:_4e});}this.getQueryText=function(){return _4a;};this.getUseRegExp=function(){return _4c;};this.getCaseSensitive=function(){return _4b;};this.getDefaultFields=function(){return _4d;};this.getWithExtendedFields=function(){return _4e;};};abego.TiddlerQuery.prototype.test=function(_4f){if(!_4f){return false;}if(this.regExp){return this.tester.test(_4f);}return this.expr.exec(_4f);};abego.TiddlerQuery.prototype.filter=function(_50){return abego.select(_50,this.test,this);};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return "".search(this.regExp)>=0?null:this.regExp;}return this.expr.getMarkRegExp();};abego.TiddlerQuery.prototype.toString=function(){return (this.regExp?this.regExp:this.expr).toString();};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0;};merge(abego.PageWiseRenderer.prototype,{setItems:function(_51){this.items=_51;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_52){return this.items?this.items.length:0;},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage());},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage());},setFirstIndexOnPage:function(_53){this.firstIndexOnPage=Math.min(Math.max(0,_53),this.getItemsCount()-1);},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage;},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1);},onPageChanged:function(_54,_55){},renderPage:function(_56){if(_56.beginRendering){_56.beginRendering(this);}try{if(this.getItemsCount()){var _57=this.getLastIndexOnPage();var _58=-1;for(var i=this.getFirstIndexOnPage();i<=_57;i++){_58++;_56.render(this,this.items[i],i,_58);}}}finally{if(_56.endRendering){_56.endRendering(this);}}},addPageNavigation:function(_59){if(!this.getItemsCount()){return;}var _5a=this;var _5b=function(e){if(!e){var e=window.event;}abego.consumeEvent(e);var _5c=abego.toInt(this.getAttribute("page"),0);var _5d=_5a.getCurrentPageIndex();if(_5c==_5d){return;}var _5e=_5c*_5a.getItemsPerPage();_5a.setFirstIndexOnPage(_5e);_5a.onPageChanged(_5c,_5d);};var _5f;var _60=this.getCurrentPageIndex();var _61=this.getLastPageIndex();if(_60>0){_5f=createTiddlyButton(_59,"Previous","Go to previous page (Shortcut: Alt-'<')",_5b,"prev");_5f.setAttribute("page",(_60-1).toString());_5f.setAttribute("accessKey","<");}for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _62=_60+i;if(_62<0){continue;}if(_62>_61){break;}var _63=(i+_60+1).toString();var _64=_62==_60?"currentPage":"otherPage";_5f=createTiddlyButton(_59,_63,"Go to page %0".format([_63]),_5b,_64);_5f.setAttribute("page",(_62).toString());}if(_60<_61){_5f=createTiddlyButton(_59,"Next","Go to next page (Shortcut: Alt-'>')",_5b,"next");_5f.setAttribute("page",(_60+1).toString());_5f.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _65=40;var _66=4;var _67=function(_68,_69,_6a){var n=_68.length;if(n==0){_68.push({start:_69,end:_6a});return;}var i=0;for(;i<n;i++){var _6b=_68[i];if(_6b.start<=_6a&&_69<=_6b.end){var r;var _6c=i+1;for(;_6c<n;_6c++){r=_68[_6c];if(r.start>_6a||_69>_6b.end){break;}}var _6d=_69;var _6e=_6a;for(var j=i;j<_6c;j++){r=_68[j];_6d=Math.min(_6d,r.start);_6e=Math.max(_6e,r.end);}_68.splice(i,_6c-i,{start:_6d,end:_6e});return;}if(_6b.start>_6a){break;}}_68.splice(i,0,{start:_69,end:_6a});};var _6f=function(_70){var _71=0;for(var i=0;i<_70.length;i++){var _72=_70[i];_71+=_72.end-_72.start;}return _71;};var _73=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _74=function(s,_75){if(!_73(s[_75])){return null;}for(var i=_75-1;i>=0&&_73(s[i]);i--){}var _76=i+1;var n=s.length;for(i=_75+1;i<n&&_73(s[i]);i++){}return {start:_76,end:i};};var _77=function(s,_78,_79){var _7a;if(_79){_7a=_74(s,_78);}else{if(_78<=0){return _78;}_7a=_74(s,_78-1);}if(!_7a){return _78;}if(_79){if(_7a.start>=_78-_66){return _7a.start;}if(_7a.end<=_78+_66){return _7a.end;}}else{if(_7a.end<=_78+_66){return _7a.end;}if(_7a.start>=_78-_66){return _7a.start;}}return _78;};var _7b=function(s,_7c){var _7d=[];if(_7c){var _7e=0;var n=s.length;var _7f=0;do{_7c.lastIndex=_7e;var _80=_7c.exec(s);if(_80){if(_7e<_80.index){var t=s.substring(_7e,_80.index);_7d.push({text:t});}_7d.push({text:_80[0],isMatch:true});_7e=_80.index+_80[0].length;}else{_7d.push({text:s.substr(_7e)});break;}}while(true);}else{_7d.push({text:s});}return _7d;};var _81=function(_82){var _83=0;for(var i=0;i<_82.length;i++){if(_82[i].isMatch){_83++;}}return _83;};var _84=function(s,_85,_86,_87,_88){var _89=Math.max(Math.floor(_88/(_87+1)),_65);var _8a=Math.max(_89-(_86-_85),0);var _8b=Math.min(Math.floor(_86+_8a/3),s.length);var _8c=Math.max(_8b-_89,0);_8c=_77(s,_8c,true);_8b=_77(s,_8b,false);return {start:_8c,end:_8b};};var _8d=function(_8e,s,_8f){var _90=[];var _91=_81(_8e);var pos=0;for(var i=0;i<_8e.length;i++){var t=_8e[i];var _92=t.text;if(t.isMatch){var _93=_84(s,pos,pos+_92.length,_91,_8f);_67(_90,_93.start,_93.end);}pos+=_92.length;}return _90;};var _94=function(s,_95,_96){var _97=_96-_6f(_95);while(_97>0){if(_95.length==0){_67(_95,0,_77(s,_96,false));return;}else{var _98=_95[0];var _99;var _9a;if(_98.start==0){_99=_98.end;if(_95.length>1){_9a=_95[1].start;}else{_67(_95,_99,_77(s,_99+_97,false));return;}}else{_99=0;_9a=_98.start;}var _9b=Math.min(_9a,_99+_97);_67(_95,_99,_9b);_97-=(_9b-_99);}}};var _9c=function(_9d,s,_9e,_9f,_a0){if(_9f.length==0){return;}var _a1=function(_a2,s,_a3,_a4,_a5){var t;var _a6;var pos=0;var i=0;var _a7=0;for(;i<_a3.length;i++){t=_a3[i];_a6=t.text;if(_a4<pos+_a6.length){_a7=_a4-pos;break;}pos+=_a6.length;}var _a8=_a5-_a4;for(;i<_a3.length&&_a8>0;i++){t=_a3[i];_a6=t.text.substr(_a7);_a7=0;if(_a6.length>_a8){_a6=_a6.substr(0,_a8);}if(t.isMatch){createTiddlyElement(_a2,"span",null,"marked",_a6);}else{createTiddlyText(_a2,_a6);}_a8-=_a6.length;}if(_a5<s.length){abego.createEllipsis(_a2);}};if(_9f[0].start>0){abego.createEllipsis(_9d);}var _a9=_a0;for(var i=0;i<_9f.length&&_a9>0;i++){var _aa=_9f[i];var len=Math.min(_aa.end-_aa.start,_a9);_a1(_9d,s,_9e,_aa.start,_aa.start+len);_a9-=len;}};this.render=function(_ab,s,_ac,_ad){if(s.length<_ac){_ac=s.length;}var _ae=_7b(s,_ad);var _af=_8d(_ae,s,_ac);_94(s,_af,_ac);_9c(_ab,s,_ae,_af,_ac);};};(function(){function _b0(msg){alert(msg);throw msg;};if(version.major<2||(version.major==2&&version.minor<1)){_b0("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive");}abego.YourSearch={};var _b1;var _b2;var _b3=function(_b4){_b1=_b4;};var _b5=function(){return _b1?_b1:[];};var _b6=function(){return _b1?_b1.length:0;};var _b7=4;var _b8=10;var _b9=2;var _ba=function(s,re){var m=s.match(re);return m?m.length:0;};var _bb=function(_bc,_bd){var _be=_bd.getMarkRegExp();if(!_be){return 1;}var _bf=_bc.title.match(_be);var _c0=_bf?_bf.length:0;var _c1=_ba(_bc.getTags(),_be);var _c2=_bf?_bf.join("").length:0;var _c3=_bc.title.length>0?_c2/_bc.title.length:0;var _c4=_c0*_b7+_c1*_b9+_c3*_b8+1;return _c4;};var _c5=function(_c6,_c7,_c8,_c9,_ca,_cb){_b2=null;var _cc=_c6.reverseLookup("tags",_cb,false);try{var _cd=[];if(config.options.chkSearchInTitle){_cd.push("title");}if(config.options.chkSearchInText){_cd.push("text");}if(config.options.chkSearchInTags){_cd.push("tags");}_b2=new abego.TiddlerQuery(_c7,_c8,_c9,_cd,config.options.chkSearchExtendedFields);}catch(e){return [];}var _ce=_b2.filter(_cc);var _cf=abego.YourSearch.getRankFunction();for(var i=0;i<_ce.length;i++){var _d0=_ce[i];var _d1=_cf(_d0,_b2);_d0.searchRank=_d1;}if(!_ca){_ca="title";}var _d2=function(a,b){var _d3=a.searchRank-b.searchRank;if(_d3==0){if(a[_ca]==b[_ca]){return (0);}else{return (a[_ca]<b[_ca])?-1:+1;}}else{return (_d3>0)?-1:+1;}};_ce.sort(_d2);return _ce;};var _d4=80;var _d5=50;var _d6=250;var _d7=50;var _d8=25;var _d9=10;var _da="yourSearchResult";var _db="yourSearchResultItems";var _dc;var _dd;var _de;var _df;var _e0;var _e1=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _e2=function(){return _dd!=null&&_dd.parentNode==document.body;};var _e3=function(){if(_e2()){document.body.removeChild(_dd);}};var _e4=function(e){_e3();var _e5=this.getAttribute("tiddlyLink");if(_e5){var _e6=this.getAttribute("withHilite");var _e7=highlightHack;if(_e6&&_e6=="true"&&_b2){highlightHack=_b2.getMarkRegExp();}story.displayTiddler(this,_e5);highlightHack=_e7;}return (false);};var _e8=function(){if(!_de){return;}var _e9=_de;var _ea=findPosX(_e9);var _eb=findPosY(_e9);var _ec=_e9.offsetHeight;var _ed=_ea;var _ee=_eb+_ec;var _ef=findWindowWidth();if(_ef<_dd.offsetWidth){_dd.style.width=(_ef-100)+"px";_ef=findWindowWidth();}var _f0=_dd.offsetWidth;if(_ed+_f0>_ef){_ed=_ef-_f0-30;}if(_ed<0){_ed=0;}_dd.style.left=_ed+"px";_dd.style.top=_ee+"px";_dd.style.display="block";};var _f1=function(){if(_dd){window.scrollTo(0,ensureVisible(_dd));}if(_de){window.scrollTo(0,ensureVisible(_de));}};var _f2=function(){_e8();_f1();};var _f3;var _f4;var _f5=new abego.PageWiseRenderer();var _f6=function(_f7){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){_b0("YourSearchItemTemplate not found");}this.place=document.getElementById(_db);if(!this.place){this.place=createTiddlyElement(_f7,"div",_db);}};merge(_f6.prototype,{render:function(_f8,_f9,_fa,_fb){_f3=_fb;_f4=_f9;var _fc=createTiddlyElement(this.place,"div",null,"yourSearchItem");_fc.innerHTML=this.itemHtml;applyHtmlMacros(_fc,null);refreshElements(_fc,null);},endRendering:function(_fd){_f4=null;}});var _fe=function(){if(!_dd||!_de){return;}var _ff=store.getTiddlerText("YourSearchResultTemplate");if(!_ff){_ff="<b>Tiddler YourSearchResultTemplate not found</b>";}_dd.innerHTML=_ff;applyHtmlMacros(_dd,null);refreshElements(_dd,null);var _100=new _f6(_dd);_f5.renderPage(_100);_f2();};_f5.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_d9):abego.toInt(config.options.txtItemsPerPage,_d8);return (n>0)?n:1;};_f5.onPageChanged=function(){_fe();};var _101=function(){if(_de==null||!config.options.chkUseYourSearch){return;}if((_de.value==_dc)&&_dc&&!_e2()){if(_dd&&(_dd.parentNode!=document.body)){document.body.appendChild(_dd);_f2();}else{abego.YourSearch.onShowResult(true);}}};var _102=function(){_e3();_dd=null;_dc=null;};var _103=function(self,e){while(e!=null){if(self==e){return true;}e=e.parentNode;}return false;};var _104=function(e){if(e.target==_de){return;}if(e.target==_df){return;}if(_dd&&_103(_dd,e.target)){return;}_e3();};var _105=function(e){if(e.keyCode==27){_e3();}};addEvent(document,"click",_104);addEvent(document,"keyup",_105);var _106=function(text,_107,_108){_dc=text;_b3(_c5(store,text,_107,_108,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _109=function(_10a,_10b,_10c,_10d,_10e,_10f){_e1();_dc="";var _110=null;var _111=function(txt){if(config.options.chkUseYourSearch){_106(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_dc=txt.value;};var _112=function(e){_111(_de);return false;};var _113=function(e){if(!e){var e=window.event;}_de=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_e0&&_e2()){_e0.onclick.apply(_e0,[e]);}else{_111(this);}break;case 27:if(_e2()){_e3();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_101();}if(this.value.length<3&&_110){clearTimeout(_110);}if(this.value.length>2){if(this.value!=_dc){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_110){clearTimeout(_110);}var txt=this;_110=setTimeout(function(){_111(txt);},500);}}else{if(_110){clearTimeout(_110);}}}if(this.value.length==0){_e3();}};var _114=function(e){this.select();clearMessage();_101();};var args=_10e.parseParams("list",null,true);var _115=getFlag(args,"buttonAtRight");var _116=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}var txt=createTiddlyElement(null,"input",null,"txtOptionInput searchField",null);if(_10c[0]){txt.value=_10c[0];}txt.onkeyup=_113;txt.onfocus=_114;txt.setAttribute("size",_116);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}if(_10a){_10a.appendChild(txt);}if(_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}_de=txt;_df=btn;};var _117=function(){_e3();var _118=_b5();var n=_118.length;if(n){var _119=[];for(var i=0;i<n;i++){_119.push(_118[i].title);}story.displayTiddlers(null,_119);}};var _11a=function(_11b,_11c,_11d,_11e){invokeMacro(_11b,"option",_11c,_11d,_11e);var elem=_11b.lastChild;var _11f=elem.onclick;elem.onclick=function(e){var _120=_11f.apply(this,arguments);_fe();return _120;};return elem;};var _121=function(s){var _122=["''","{{{","}}}","//","<<<","/***","***/"];var _123="";for(var i=0;i<_122.length;i++){if(i!=0){_123+="|";}_123+="("+_122[i].escapeRegExp()+")";}return s.replace(new RegExp(_123,"mg"),"").trim();};var _124=function(){var i=_f3;return (i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _125=new abego.LimitedTextRenderer();var _126=function(_127,s,_128){_125.render(_127,s,_128,_b2.getMarkRegExp());};var _129=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_12a,_12b,_12c,_12d,_12e,tags,_12f){_129.apply(this,arguments);_102();};var _130=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_131){_130.apply(this,arguments);_102();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_132,_133,_134,_135,_136,_137){if(_134.length==0){return;}var name=_134[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_132,_133,_134,_135,_136,_137);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _b6()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_138){if(_b6()){var _139=_f5.getLastIndexOnPage();var s="%0 - %1".format([_f5.getFirstIndexOnPage()+1,_139+1]);createTiddlyText(_138,s);}},count:function(_13a){createTiddlyText(_13a,_b6().toString());},query:function(_13b){if(_b2){createTiddlyText(_13b,_b2.toString());}},version:function(_13c){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_13c,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_13d){var e=createTiddlyElement(_13d,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2005-2008 <b><font color=\"red\">abego</font></b> Software<font>";},newTiddlerButton:function(_13e){if(_b2){var r=abego.parseNewTiddlerCommandLine(_b2.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_13e,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _13f=btn.onclick;btn.onclick=function(){_e3();_13f.apply(this,arguments);};_e0=btn;}},linkButton:function(_140,_141,_142,_143,_144,_145){if(_142<2){return;}var _146=_142[1];var text=_142<3?_146:_142[2];var _147=_142<4?text:_142[3];var _148=_142<5?null:_142[4];var btn=createTiddlyButton(_140,text,_147,_e4,null,null,_148);btn.setAttribute("tiddlyLink",_146);},closeButton:function(_149,_14a,_14b,_14c,_14d,_14e){var _14f=createTiddlyButton(_149,"close","Close the Search Results (Shortcut: ESC)",_e3);},openAllButton:function(_150,_151,_152,_153,_154,_155){var n=_b6();if(n==0){return;}var _156=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _157=createTiddlyButton(_150,_156,"Open all found tiddlers (Shortcut: Alt-O)",_117);_157.setAttribute("accessKey","O");},naviBar:function(_158,_159,_15a,_15b,_15c,_15d){_f5.addPageNavigation(_158);},"if":function(_15e,_15f,_160,_161,_162,_163){if(_160.length<2){return;}var _164=_160[1];var _165=(_164=="not");if(_165){if(_160.length<3){return;}_164=_160[2];}var test=config.macros.yourSearch.tests[_164];var _166=false;try{if(test){_166=test(_15e,_15f,_160,_161,_162,_163)!=_165;}else{_166=(!eval(_164))==_165;}}catch(ex){}if(!_166){_15e.style.display="none";}},chkPreviewText:function(_167,_168,_169,_16a,_16b,_16c){var _16d=_169.slice(1).join(" ");var elem=_11a(_167,"chkPreviewText",_16a,_16c);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(_16e,_16f,_170,_171,_172,_173){var name=_170[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_16e,_16f,_170,_171,_172,_173);}},funcs:{title:function(_174,_175,_176,_177,_178,_179){if(!_f4){return;}var _17a=_124();var _17b=_17a>=0?"Open tiddler (Shortcut: Alt-%0)".format([_17a.toString()]):"Open tiddler";var btn=createTiddlyButton(_174,null,_17b,_e4,null);btn.setAttribute("tiddlyLink",_f4.title);btn.setAttribute("withHilite","true");_126(btn,_f4.title,_d4);if(_17a>=0){btn.setAttribute("accessKey",_17a.toString());}},tags:function(_17c,_17d,_17e,_17f,_180,_181){if(!_f4){return;}_126(_17c,_f4.getTags(),_d5);},text:function(_182,_183,_184,_185,_186,_187){if(!_f4){return;}_126(_182,_121(_f4.text),_d6);},field:function(_188,_189,_18a,_18b,_18c,_18d){if(!_f4){return;}var name=_18a[1];var len=_18a.length>2?abego.toInt(_18a[2],_d7):_d7;var v=store.getValue(_f4,name);if(v){_126(_188,_121(v),len);}},number:function(_18e,_18f,_190,_191,_192,_193){var _194=_124();if(_194>=0){var text="%0)".format([_194.toString()]);createTiddlyElement(_18e,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_d8,txtItemsPerPageWithPreview:_d9};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n];}}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+"s {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles "+"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text "+"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only"+"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may"+" also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+"}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one"+" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containin"+"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+"an Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you "+"type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+")|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must "+"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two"+" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+" to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change "+"the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+" all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}"+"} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"j"+"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you"+" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+"k', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch"+"\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/"+"}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript E"+"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|"+"!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+"you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+"tc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the "+"'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+"Search Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \"use\" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText"+">> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+" to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!')     <<option chk"+"SearchInText>>Text ('%')     <<option chkSearchInTags>>Tags ('#')    <<option chkSearchExtendedFiel"+"ds>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don"+"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items "+"on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with pre"+"view text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers["YourSearchStyleSheet"]="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+"y;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width:"+" thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSea"+"rchRange, .yourSearchCount, .yourSearchQuery   {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary ."+"button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summa"+"ry .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*"+"/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-to"+"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+"r {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;"+"\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/"+"\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: bla"+"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+"archNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #"+"FF0000;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold"+";\n\tcolor: blue;\n}\n/*}}}*/\n";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\n{{{\n-->\n<span macro=\"yourSearch if found\">\n<!-- The Summary Header ============================"+"================ -->\n<table class=\"summary\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"+"<tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Result <span class=\"yourSearchRange\" macro=\"yourSearc"+"h itemRange\"></span>\n\t\t&nbsp;of&nbsp;<span class=\"yourSearchCount\" macro=\"yourSearch count\"></span>\n"+"\t\tfor&nbsp;<span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>\n\t</td>\n\t<td class=\"yourSea"+"rchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch chkPreviewText\"></span><span class=\"chkBoxLabel"+"\">preview text</span>\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch openAllButton\"></span>\n\t\t<span macro=\"yourSearch lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+"seButton\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+"eview=\"10\"></div>\n\n<!-- The Footer (with the Navigation) ==========================================="+"= -->\n<table class=\"yourSearchFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody"+">\n  <tr>\n\t<td align=\"left\">\n\t\tResult page: <span class=\"yourSearchNaviBar\" macro=\"yourSearch naviBar"+"\"></span>\n\t</td>\n\t<td align=\"right\"><span macro=\"yourSearch version\"></span>, <span macro=\"yourSearc"+"h copyright\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n<!-- end of the 'tiddlers found' case ========="+"================================== -->\n</span>\n\n\n<!-- The \"No tiddlers found\" case ================="+"========================== -->\n<span macro=\"yourSearch if not found\">\n<table class=\"summary\" border="+"\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Resu"+"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+"d class=\"yourSearchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Options'"+" options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Help' help"+" 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch closeButton\"></span>\n\t</td>\n  <"+"/tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSea"+"rchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+"undTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=_109;var _195=function(){if(config.macros.search.handler!=_109){alert("Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may "+"disable the other plugin or change the load order of \nthe plugins (by changing the names of the tidd"+"lers)\nto enable the 'Your Search' features.");}};setTimeout(_195,5000);abego.YourSearch.getStandardRankFunction=function(){return _bb;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _f4;};abego.YourSearch.closeResult=function(){_e3();};abego.YourSearch.getFoundTiddlers=function(){return _b1;};abego.YourSearch.getQuery=function(){return _b2;};abego.YourSearch.onShowResult=function(_196){highlightHack=_b2?_b2.getMarkRegExp():null;if(!_196){_f5.setItems(_b5());}if(!_dd){_dd=createTiddlyElement(document.body,"div",_da,"yourSearchResult");}else{if(_dd.parentNode!=document.body){document.body.appendChild(_dd);}}_fe();highlightHack=null;};})();}
//%/
For YourSearchPlugin source code see the [[archive|http://tiddlywiki.abego-software.de/archive]].

First solution: set x to be sufficiently large such that the precision of Int cannot handle x+0.5. A sufficient number is Integer.MAX_VALUE + 0.5

However, this doesn't work if we cast to long instead.

Second solution: negative number. Round will work as if on the number line, but casting to integer will cast towards 0. Causing it to become a ceiling function.
i) Smallest is n-1
ii) we can make use of the result we have for the first case.

Imagine a tree where we do a tournament style knockout round. For each pair, a number wins if it's the smaller one. Such a tree will have height lg n
To find the second smallest one, we just need to find the smallest among those that the smallest one 'knock out'. And we need lg n - 1 comparisons for that. So in total we need n + lg n - 2

[[good explanation | http://n1b-algo.blogspot.co.uk/2008/12/finding-second-smallest-element.html]]

iii )  randomised partition algorithm has an expected linear time, although worse case is O(n^2)
There are many other possible solutions, I think analysis for exact value might be complicated here

[[MIT OCW into to algo | http://www.catonmat.net/blog/mit-introduction-to-algorithms-part-four/]]


m+1, n+1 and mn+1 should shout out pigeonhole.

Assign each number a tuple (longest increasing subsequence, longest decreasing subsequence). Note that no two numbers can have the same tuple, because one of them must occur after the other, so we can definitely increase the longest increasing or decreasing subsequence of the second number, giving a contradiction. Suppose on the contrary that the claim is wrong. that means that for each tuple (x,y) x<=m, y<=n, this means the maximum number of tuples we can have is mn. But we have mn+1 tuples, so contradiction.

A way to visualise this is to imagine a grid of m rows and n columns. each number in the row must be increasing relative to its left neighbour, and each column must be decreasing relative to the top neighbour. So the condition is equivalent to filling fully a row or column and still be fill it in as though there is an invisible row/column. Which must be the case since there are mn+1 numbers but only mn cells. 

The relation between the two solutions is that we have introduced a bijection cell to coordinates from the visual way to the pigenhole method.

More
https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93Szekeres_theorem
Drop at 14, then 14 + 13, then 14 + 13 + 12 and so on.
Suppose it breaks at floor 27, then we know the actual floor is somewhere between 15 and 27, we then test each floor individually,

This will require at most 14 tries.

!Comments
It is very tempting to do binary search on this. However, we cannot do that because once the glass bottle is broken, we cannot use it again.
The problem is not so much about how many days is needed but how to assign who to call.

If we assign each person a serial number, from 0 to n-1, and consider their binary representation, then on day i (from 1 to lg n), person k would tell person j (if he knows) where j is given by the binary representation of k, with the ith bit flipped.

As an example:

Day 1
000 -> 001

Day 2
000 -> 010
001 -> 011

Day 3

000 -> 100
001 -> 101
010 -> 110
011 -> 111

The nicest way to view this is to think of it as a point expanding to a line, then expanding to a square, then expanding to a cube. This pattern can go on forever.

<html>
<img src='data:image/png;base64,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'>
</html>


The key is to make use of symmetry. Using all the fuel to get the first craft to mid point and then trying to get other crafts to refuel it there will lead to solutions in the region 20. 

The solution by getting the craft to 1/4 the way and then re-fuelling it there and repeat in a symmetric manner will give the solution 5.

INSERT PICTORIAL SOLUTION
1) Theoretical maximum is 27 because each weighing gives 3 possible states. So we have 3^3 possible states. We can assign each possible outcome to a state, hence we can distinguish them.

2) http://mathforum.org/library/drmath/view/55618.html
Basically, each outcome has 2 possible states. Suppose pill 1 is the poisonous one. Then we need to distinguish states pill 1 is heavier, pill 1 is lighter. etc. Hence there are 24 states to distinguish.

The link goes through how the states can be used to construct a solution.

The following argument shows that we cannot leave out 5 pills in the first weigh because if we did that, then we need to distinguish 10 states in 2 weighings. That is not possible because we can only distinguish 3^2 = 9 states. 

Also related is http://oeis.org/A003462

[[Problem|RM24) Poison pills and three weighing]]

! An interesting heuristic using shannon's theorems

https://youtu.be/y5VdtQSqiAI?t=27m52s
We should choose our first weighing which gives us the greatest entropy. Which will give us the maximum information content.
In our first weighing, we could choose 6v6, 5v5, 4v4, ... 
Calculating the entropies, we see that its 1, 1.45, 1.58, 1.5, 1.25, 0.8 by considering the probability of each of the three outcomes (left tips, same, right tips)
So we should choose 4v4

! A poetic solution
In the solution presented in Eureka, the journal of Archimedeans, Cambridge University
The solution is presented as a poem about a certain professor Felix Fiddlesticks, and the main idea goes like this:
{{{
F set the coins out in a row
And chalked on each a letter, so, 
To form the words F AM NOT LICKED
(An idea in his brain had clicked)
And now his mother he'll enjoin:
MA DO LIKE
ME TO FIND
FAKE COIN
}}}

Source: Professor stewarts cambinet of mathematical curiosities
3(a^4 + b^4 + c^4 + d^4) = (a^2 + b^2 + c^2 + d^2)^2

source: Mathematical circus p65
<html><img width="100%" src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAC1oAAASlCAYAAAALAkmZAAAgAElEQVR4Aezd65LkJhIG0G5Hv/8r1w7jxdbIpRIIkLiciXDUTUDmSe0Pe77Qfr9+/fnyhwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT+Efjrn3feECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBvAUFrNwIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR2AoLWOxAfCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIGjtHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBOQNB6B+IjAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBK3dAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENgJCFrvQHwkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAoLV7gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjsBQesdiI8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAQtHYPECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYCcgaL0D8ZEAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKC1u4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI7AQErXcgPhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ2j1AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnYCg9Q7ERwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAhauwcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwExC03oH4SIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAUFr9wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR2AoLWOxAfCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIGjtHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBOQNB6B+IjAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBK3dAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENgJCFrvQHwkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAoLV7gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjsBQesdiI8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAQtHYPECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYCcgaL0D8ZEAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKC1u4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI7AQErXcgPhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ2j1AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBnYCg9Q7ERwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAhauwcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwExC03oH4SIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAUFr9wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR2AoLWOxAfCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIGjtHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBOQNB6B+IjAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBK3dAwQIECBAgAABAgQIECBAgEAzge/v7997x9dmB9mYAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEClQV+Ku9nOwIECBAgQIAAAQIECBAgQIDA1zZYvX2PhgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqMIeKL1KJNSJwECBAgQIECAAAECBAgQGETgKFh99P0gbSmTAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHFBAStFxu4dgkQIECAAAECBAgQIECAwJMCwtZP6jubAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEcAUHrHC3XEiBAgAABAgQIECBAgAABAh8FBKk/8viRAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGBBAStBxqWUgkQIECAAAECBAgQIECAwAwCIYwtkD3DJPVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYG6Bn7nb0x0BAgQIECBAgAABAgQIECBwh0BucPr1et1RljMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwWcATrS/TWUiAAAECBAgQIECAAAECBAhcFfBU66ty1hEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcJeAJ1rfJe0cAgQIECBAgAABAgQIECAwoUDuk6wnJNASAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKTCghaTzpYbREgQIAAAQIECBAgQIAAgZYCtQLWcZ/X69WyXHsTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgW+Cv7BUWECBAgAABAgQIECBAgAABAssL1AxG19xr+cEAIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmoCgdTVKGxEgQIAAAQIECBAgQIAAgXUE4pOo1+lYpwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIrCYgaL3axPVLgAABAgQIECBAgAABAgQKBWqGrMPTrGvuV9ia5QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEPhHQND6HwpvCBAgQIAAAQIECBAgQIAAgRSBEI6u9UfIupakfQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqC3wU3tD+xEgQIAAAQIECBAgQIAAAQLzCghGzztbnREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8KeAJ1r/6eETAQIECBAgQIAAAQIECBAg8EGg5tOsPxzjJwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDwuIGj9+AgUQIAAAQIECBAgQIAAAQIExhHwROtxZqVSAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKBASty/ysJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgQgFB6wmHqiUCBAgQIECAAAECBAgQINBCoOXTrFvu3cLCngQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzC8gaD3/jHVIgAABAgQIECBAgAABAgSKBa4GoV+vV/LZV89IPsCFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyBAQtM7AcikBAgQIECBAgAABAgQIEFhNoCT8HELWOetzQtmrzUG/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjcL/D96y8x0x8tdX99TiRAgAABAgQIECBAgAABAgQeFsgJS4dS9/+pIWf9fu3DrTueAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGFBTzReuHha50AAQIECBAgQIAAAQIECJwJ5ISkj/bKCU/XOO+oDt8TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgR0DQOkfLtQQIECBAgAABAgQIECBAgMBHgZxQ9buNSte/29N3BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuCIgaH1FzRoCBAgQIECAAAECBAgQIDC5QHiydO7TpT+FpD/9tqXMPXO71nsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUFBC0rqlpLwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEphAQtJ5ijJogQIAAAQIECBAgQIAAAQL1BK48VTrlidUp19Trwk4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoExC0LvOzmgABAgQIECBAgAABAgQILC+QEqAO4e3UAHfqdcvDAyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKmAoHVTXpsTIECAAAECBAgQIECAAIGxBHJDzikh6yCQet1YWqolQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBmAUHrmaerNwIECBAgQIAAAQIECBAgkCHQKmQdSxC2jhJeCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYQUDQeoQpqZEAAQIECBAgQIAAAQIECEwgkBrkFsieYNhaIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCBgKD1BEPUAgECBAgQIECAAAECBAgQKBVIDUHHc66Eoa+sied5JUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwN0CgtZ3izuPAAECBAgQIECAAAECBAgMLiAwPfgAlU+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJKAoHUSk4sIECBAgAABAgQIECBAgMC8ArlPs24t0Vs9rfu1PwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECfQoIWvc5F1URIECAAAECBAgQIECAAIHbBHKeUJ1z7dUG7jjjam3WESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwjoCg9Tqz1ikBAgQIECBAgAABAgQIEHgrcOcTpFNC1KGeO2t6i+JLAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSWF/hZXgAAAQIECBAgQIAAAQIECBBYWCAn0JwSkv5EmXPWp338RoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgTsEPNH6DmVnECBAgAABAgQIECBAgAABAl+lQW2EBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuFNA0PpObWcRIECAAAECBAgQIECAAIGOBHKeMF0rJF1rn44YlUKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwKQCgtaTDlZbBAgQIECAAAECBAgQIECgR4GccHeP9auJAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF1BASt15m1TgkQIECAAAECBAgQIECAwG+BEHZ+KvCc80TrJ+t0qxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ2j1AgAABAgQIECBAgAABAgQI3CYQwtM5Yeuca29rwkEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCwhIGi9xJg1SYAAAQIECBAgQIAAAQIE/ha48iTrmmHnsFdODTnXmjEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqCgha19S0FwECBAgQIECAAAECBAgQ6Fjg6dDy1fOvrut4FEojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAAAUHrAYakRAIECBAgQIAAAQIECBAgUCpwNayc8jTr7d7xfXg9el/ai/UECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBC4Q+D711+Yvu44yBkECBAgQIAAAQIECBAgQIDAcwIx9Jxbwdl/Nri6b24d8fqzeuJ1XgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAq4InWpYLWEyBAgAABAgQIECBAgACBzgWuhKFDoHkbao57bF/j+zvbf+LMO/tzFgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/QgIWvczC5UQIECAAAECBAgQIECAAIHqAiXB5Lg2vIbQ9fZz9UJtSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc4EfjqrRzkECBAgQIAAAQIECBAgQIBABYEYiq6w1e8tau9Xqy77ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoJWAJ1q3krUvAQIECBAgQIAAAQIECBAYWCAGq8NreJp1L396qqUXE3UQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBGQNC6jatdCRAgQIAAAQIECBAgQIDAIwIhGB1D0iUFxEBzeO0tbF3Sl7UECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIFRC0TpVyHQECBAgQIECAAAECBAgQWEQghqtDuzG0HV+fJIjh7ydrcDYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAusICFqvM2udEiBAgAABAgQIECBAgMDkArXC0L0+wbpWf5PfBtojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCSwPevp0G9Ku1lGwIECBAgQIAAAQIECBAgQOBhgVnDyP7zxcM3luMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILCjgidYLDl3LBAgQIECAAAECBAgQIDCnwKwh6zmnpSsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHoXELTufULqI0CAAAECBAgQIECAAAECCQJC1glILiFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECGgKB1BpZLCRAgQIAAAQIECBAgQIBArwKv16vX0n7Xta3v6P1RA+F6QfIjHd8TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBK4KfVxvYlQIAAAQIECBAgQIAAAQIE7hPoLYi8DVMHhVDf/rsYoI6vR1rv1h5d63sCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUEvBE61qS9iFAgAABAgQIECBAgAABApMJ7IPRob34XXzdthy+i/9sv9+ui99v16eExFOuiXt7JUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQA2B719/sdn3/7dwjS7tQYAAAQIECBAgQIAAAQIEJheoEUQO/4lgv0/8ruV/Ptif+W5ULc9/d57vCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIGjtHiBAgAABAgQIECBAgAABAoMLpASVj1q8I0h9dPb2+5QehK23Yt4TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBa4Kf1AfYnQIAAAQIECBAgQIAAAQIE2gikhJPfnbwPLO8/v1vT8rurfbSsyd4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4CwEBAgQIECBAgAABAgQIECAwpsCVgPSVNWPqqJoAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlAoLWZX5WEyBAgAABAgQIECBAgACBRwTCU6BznwTda8g6pa5wTW6/jwzGoQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITCMgaD3NKDVCgAABAgQIECBAgAABAgTGFAgB6rOwdco1Y3avagIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEehUQtO51MuoiQIAAAQIECBAgQIAAAQIVBc6CzBWPyt4q9WnVnmidTWsBAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIFAoLWBXiWEiBAgAABAgQIECBAgACBJwRmDBynBMFTA9lPzMSZBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMJyBoPd9MdUSAAAECBAgQIECAAAECBP4QSAkx/7HggQ8p4fFwzQi9PMDnSAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGggIWjdAtSUBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmMLCFqPPT/VEyBAgAABAgQIECBAgMBiAilPfh6RJOVJ1SnXjNi7mgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6FNA0LrPuaiKAAECBAgQIECAAAECBAhUERglnHwWIA99nF1TBcwmBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+L+AoLVbgQABAgQIECBAgAABAgQIEHhcIASpP4XChawfH5ECCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCwn8LNcxxomQIAAAQIECBAgQIAAAQIDClwJGn8KLvdIcNbjaP30aKwmAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTSBTzROt3KlQQIECBAgAABAgQIECBAYAiBUQPJZ3WfBbGHGI4iCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYRkDQephRKZQAAQIECBAgQIAAAQIEVhXIDRiH689Cyz1anvU5Yk89OquJAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE0AUHrNCdXESBAgAABAgQIECBAgACBRwTOwsePFNXo0LMgdbBYyaMRs20JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEgUELROhHIZAQIECBAgQIAAAQIECBAg0FYgJUR9FsZuW6HdCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYSUDQeqVp65UAAQIECBAgQIAAAQIEhhJICR7vGwpB5JHDyCPXvp+FzwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIjC0gaD32/E6rv/KX8qebuoAAAQIECBAgQIAAAQIEuhUY+d8DQ8j6rP6z37sdjMIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBhO4PvXX2K+hqtawQQIECBAgAABAgQIECBAYHKBK4HiWf4VP6X3WXqd/DbWHgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGhBTzReujxKZ4AAQIECBAgQIAAAQIECPwtsFLweKVe3d8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDwnIGj9nL2TCRAgQIAAAQIECBAgQIDAoUBOmDjn2sMDO/oh9POpp5QnXnfUjlIIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBhU4GfQupVNgAABAgQIECBAgAABAgSmFkgNE38KJI8KdNb7jD2POit1EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJhZwBOtZ56u3ggQIECAAAECBAgQIEBgWIGVw8Sh90/9nwWxhx26wgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6EpA0LqrcSiGAAECBAgQIECAAAECBAj8LRDCxJ/CxuGqs99HtvwUpp6575FnpnYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECswkIWs82Uf0QIECAAAECBAgQIECAwPACMWT9KWw8fJMnDXwKU6/scsLmZwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEKgoIWlfEtBUBAgQIECBAgAABAgQIEKghEELGMWx9tN+nIPLRmpG+/xSmnr33keakVgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIzCwhazzxdvREgQIAAAQIECBAgQIDAkAKfQsahodmDxmf9DzlURRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMJyAoPVwI1MwAQIECBAgQIAAAQIECKwi8C5wPHvIOsz2U4+fflvlvtAnAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQL3CAha3+PsFAIECBAgQIAAAQIECBAg8FEghqrj67uLVwoZH/X6yeedme8IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwVUDQ+qqcdQQIECBAgCuuxOcAACAASURBVAABAgQIECBAoLJADBEfhYwrH9f1dtFiXySbvYjPBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0EhC0biVrXwIECBAgQIAAAQIECBAgkCgQQsUhQBxDxO9CxvG3xC2Hv2y1focfmAYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITCggaD3hULVEgAABAgQIECBAgAABAmMJhFBxCFe/C1iP1Undardh6+37uqfYjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAu8FBK3fu/iWAAECBAgQIECAAAECBAjcKiBI/J47uLB5b+NbAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaCvy03d7uBAgQIECAAAECBAgQIECAQIrA0dOshYz/1WPxr4V3BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0F/BE6/bGTiBAgAABAgQIECBAgAABApcEBIsvsVlEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBKgKC1lUYbUKAAAECBAgQIECAAAECBOoJCFjXs7QTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIErgp8//rL29fVxdYRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgRgFPtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYUELSecap6IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgSEDQuojPYgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhQQtJ5xqnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBIQNC6iM9iAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmFBC0nnGqeiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoEhA0LqIz2ICBAgQIECAAAECBAgQIDCuwPf391f4xx8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+K+AoPV/TXxDgAABAgQIECBAgAABAgSmFIihagHrKcerKQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEKgsIWlcGtR0BAgQIECBAgAABAgQIEOhZIIattzUKXm81vCdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDfAoLW7gQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjsBAStdyA+EiBAgAABAgQIECBAgACBGQXePcl632fKNfs1PhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBWAUHrWSerLwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIELgsIWl+ms5AAAQIECBAgQIAAAQIECIwhkPOk6pxrx+helQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIELgmIGh9zc0qAgQIECBAgAABAgQIECAwhEBucPr1eg3RlyIJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQWkDQurWw/QkQIECAAAECBAgQIECAwEACucHsgVpTKgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLIEBK2zuFxMgAABAgQIECBAgAABAgTGEbgSmvZE63Hmq1ICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNoKCFq39bU7AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDCghaDzg0JRMgQIAAAQIECBAgQIAAgTOB8DTr+HTq+Hq2xu8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8K+AoPW/Ft4RIECAAAECBAgQIECAAIEpBULoOuWPQHaKkmsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFhFQNB6lUnrkwABAgQIECBAgAABAgSWENiGqrfvz5oXsj4T8jsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqsJCFqvNnH9EiBAgAABAgQIECBAgMD0AjkB6+kxNEiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGLAoLWF+EsI0CAAAECBAgQIECAAAECPQqEJ1PnPp069/oe+1YTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEagsIWtcWtR8BAgQIECBAgAABAgQIEHhAYPsU6+37s1KErM+E/E6AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwKoCgtarTl7fBAgQIECAAAECBAgQIDCFwDZUHd5vP0/RoCYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwkICg9UPwjiVAgAABAgQIECBAgAABAqUCMVQdX0v3s54AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE/hUQtP7XwjsCBAgQIECAAAECBAgQIDCMQK1wda19hoFTKAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBIFBK0ToVxGgAABAgQIECBAgAABAgRmFHi9XjO2pScCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgUCwhaFxPagAABAgQIECBAgAABAgQI3CtQ8ynUYa+a+90r4TQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0ExC0bmdrZwIECBAgQIAAAQIECBAgUF1AKLo6qQ0JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwVkDQ+i2LLwkQIECAAAECBAgQIECAQH8CJSHr1+v1sSFPtv7I40cCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBYUELRecOhaJkCAAAECBAgQIECAAIHxBEpD1jnrc64dT1LFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSBMQtE5zchUBAgQIECBAgAABAgQIEBhWICc4nXPtsCAKJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIKAoHUCkksIECBAgAABAgQIECBAgMCTAk+En58480ljZxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAvIGi9F/GZAAECBAgQIECAAAECBAh0IhDCzk8Gnp88u5MRKIMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYUFBK0XHr7WCRAgQIAAAQIECBAgQKBvgdfr9RX+8YcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE7hcQtL7f3IkECBAgQIAAAQIECBAgQCBZ4MpTpYWzk3ldSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUMBQetDGj8QIECAAAECBAgQIECAAIF7BWKoOr5ePT2sj2Hr+Fqy19W11hEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBkgZ+Ri1c7AQIECBAgQIAAAQIECBAYXWAfqt5+3r5P7TMEq7frtu9T93AdAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHx9eaK1u4AAAQIECBAgQIAAAQIECDwoEJ84HV9jKVcD0nFdeN3vGffOfY175q5zPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEYWELQeeXpqJ0CAAAECBAgQIECAAIHhBWKIOb7WbKjFnjXrsxcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR6FhC07nk6aiNAgAABAgQIECBAgACBKQViADq+Xn3y9Hbd9n0LtFhri73tSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgR4FBK17nIqaCBAgQIAAAQIECBAgQGApgdwQcwhVx2B1fA1g2/dLAWqWAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECDQQErRug2pIAAQIECBAgQIAAAQIECBwJxFB1fD267t3324D19vd9wHr/eXut9wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQJiBonebkKgIECBAgQIAAAQIECBAgUCSwDVZfCUKnrgnXbc8qKnq3uNW+u2N8JECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQBcCgtZdjEERBAgQIECAAAECBAgQIDC7wDYAnRNYTg1Yb/2urNmu954AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEvr4Erd0FBAgQIECAAAECBAgQIEDgBoGccHUsJwam42v83isBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItBcQtG5v7AQCBAgQIECAAAECBAgQWFggBKyvhKxLyYSzSwWtJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgdQFB69XvAP0TIECAAAECBAgQIECAQBOBGLC+Gni+uq5JMzYlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAggKC1gsOXcsECBAgQIAAAQIECBAg0E5g//Tq/eeUk2uFrGvtk1KzawgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCbwM9sDemHAAECBAgQIECAAAECBAg8IRAD1SHcHN/n1jFCMDr0NkKdufauJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwF7AE633Ij4TIECAAAECBAgQIECAAIFMgdXCx1eD5JmsLidAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCjAoLWj/I7nAABAgQIECBAgAABAgRmEYjh4/ia01d4QnSrp0S32jenP9cSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgRAFB6xGnpmYCBAgQIECAAAECBAgQ6EbgSrB6W3zrIHRpfdtavSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBKAoLWK01brwQIECBAgAABAgQIECBQTSAEmMM/JUHpkrWpjbQ6Q4A7dQKuI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgVAFB61Enp24CBAgQIECAAAECBAgQeFwghJivBo5bBaD3KKVh8P1+8fNd9cfzvBIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOBuAUHru8WdR4AAAQIECBAgQIAAAQLDC8RwdXzNbejOkHKrs672nmvlegIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDwlIGj9lLxzCRAgQIAAAQIECBAgQGBIgZKAcQg9two+n2E+de5ZXX4nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBArwKC1r1ORl0ECBAgQIAAAQIECBAg0JVAScC6q0YqFsOkIqatCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoTkDQuruRKIgAAQIECBAgQIAAAQIEehOIgeL4eqW+p58oXVL7lX6tIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwOgCgtajT1D9BAgQIECAAAECBAgQINBUoCSgHMPV8bVpoSeb91DDSYl+JkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFcCgtZdjUMxBAgQIECAAAECBAgQINCLQEnAettDLwHnWv1sewvvW+27P8dnAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI3C0gaH23uPMIECBAgAABAgQIECBAoHuBEB4OAemSEHEvAeuAHfvpHl6BBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6EhA0LqjYSiFAAECBAgQIECAAAECBPoRKAlZ99PF35WUhsbP+pnJ6qxXvxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsI7Azzqt6pQAAQIECBAgQIAAAQIECJwLxNDwlXByT0+xPu/UFQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwScATrT/p+I0AAQIECBAgQIAAAQIElhEIAesYsg5Nb9+nIlxZk7p379et3Hvvs1EfAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLXBAStr7lZRYAAAQIECBAgQIAAAQITCdQKCff8ROvWtbXef6LbTSsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAwi8DNIncokQIAAAQIECBAgQIAAAQJVBWqFq0NRI4SMQ7+hzpS+U6+rOhCbESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDMBT7TubCDKIUCAAAECBAgQIECAAIF7BEYIR9eUaB2eTglw1+zHXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGgtIGjdWtj+BAgQIECAAAECBAgQINCVQAwEx9fS4kYKbIdaz+qNgeyz60rdrCdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDvAoLWvU9IfQQIECBAgAABAgQIECBQXWDFkHVErNV73G/72nLv7TneEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4A4BQes7lJ1BgAABAgQIECBAgAABAo8L1AwBpzwZ+vGGDwo4e1L13uns+oNjfE2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHhBX6G70ADBAgQIECAAAECBAgQIEAgQSAEhvch4oRlf1wyQ+j4zGDbYw2zPwB9IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwEACnmg90LCUSoAAAQIECBAgQIAAAQL5AiFYHP/JXz3fim2Q+l13+yD22fX7Pfbr97/7TIAAa0X7uwAAIABJREFUAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVEEBK1HmZQ6CRAgQIAAAQIECBAgQKBYIDc0vD2wZO12n6ffnwWh3/X57run+3A+AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWgsIWrcWtj8BAgQIECBAgAABAgQIPCLwLlD87ruz4kLIeKag8VkvV4z2hmGPGvvs9/WZAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdwoIWt+p7SwCBAgQIECAAAECBAgQuEUghnzj69VDz0LJV/d9ct2ZyVHPR98f9ZJ7/dE+vidAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBTAoLWT8k7lwABAgQIECBAgAABAgSqC5yFiFMPDCHhWYPCZ70dGYbvc0yO9kmdgesIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwtICg9dMTcD4BAgQIECBAgAABAgQIVBGIwd74enXTnDDx1TOeXvfJ6Kj/o++f7sX5BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaCUgaN1K1r4ECBAgQIAAAQIECBAgMJyAMPHX16cQdhhojtHZXsPdIAomQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGApAUHrpcatWQIECBAgQIAAAQIECMwpUCPQmxMgHlmx1Kp0/ch2aidAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYC0BQeu15q1bAgQIECBAgAABAgQITCdQGvwNAetVQtZh+KW95q4vnc90N6yGCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYRkDQephRKZQAAQIECBAgQIAAAQIEokAI7wrwRo26r2dBau51ve1GgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC/At+//gL11W95KiNAgAABAgQIECBAgAABAu8FSgO/q/7r8JlbqsvZPvuppe67X+czAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEnhL4eepg5xIgQIAAAQIECBAgQIAAgSsCuQHfd2cI/b5T+fpKdcmdQeq+76vyLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJ4R+OuZY51KgAABAgQIECBAgAABAgSuCZSGdkvXX6t6jFWpAepcw9R9x1BSJQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECqwh4ovUqk9YnAQIECBAgQIAAAQIEBhcoDevmhoMH57pUPqNLbBYRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCpgCdaTzpYbREgQIAAAQIECBAgQGAmgdKQ9UwWLXvJcRbKbjkJexMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0IOAJ1r3MAU1ECBAgAABAgQIECBAgMBbgZzg79sNfn0pEHwkc+/3YZZmca+50wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKBPwROsyP6sJECBAgAABAgQIECBAoGMBwd784eSE2/nm+1pBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA4AoLW48xKpQQIECBAgAABAgQIEFhKICfwu4cJAWAh4L1K2ueWbiUzTaveVQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgnIGhdz9JOBAgQIECAAAECBAgQIFBJQCC3EuSbbc6C1OzfoPmKAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIElBQStlxy7pgkQIECAAAECBAgQINCvQGnQ9yxI3G/n91RW6ruvMte79vn7enwmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBALYGfWhvZhwABAgQIECBAgAABAgQIlAiUBnBzA78ltY68NjiVWo/cv9oJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQKiBonSrlOgIECBAgQIAAAQIECBCoKlAz7CtknT6amu7x1NzwdqjBzKKeVwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEehX4q9fC1EWAAAECBAgQIECAAAECcwvUCNqGPWrsM7f0n93x+tPDJwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBwJeKL1kYzvCRAgQIAAAQIECBAgQKCJQK0nKgsMXxvPmX9w9cTpa7ZWESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwl4AnWs81T90QIECAAAECBAgQIECgW4EQ3q0V4BWyvj7mM7uzIPbRyWf7Hq3zPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHoV+P71F6GvXotTFwECBAgQIECAAAECBAjMJXA1xBsV/CtslLj+mjKDEueU/WP1JefEPbwSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECglYAnWreStS8BAgQIECBAgAABAgQI/CMQwrc5Adx/Fm7eCOVuMAretnTMnXHu9QVtW0qAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFsAUHrbDILCBAgQIAAAQIECBAgQCBHoEaYtmU4OKeXGa5NmUfKNe8swpzM6p2M7wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGFFA0HrEqamZAAECBAgQIECAAAECgwhcDezG9gR3o0Sd1zCPlCB0yjVHFeXOPPf6o3N9T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdoCP7U3tB8BAgQIECBAgAABAgQIrC1QKzhbEvZdewKfuz+bT6l7WH92xucK/UqAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE+BDzRuo85qIIAAQIECBAgQIAAAQIENgKlYd/NVt5uBFJcS0PSV9ZfWbNpy1sCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0ERC0bsJqUwIECBAgQIAAAQIECKwnEMKyNQKzKWHg9XTrdXzme/b7WSVX1l9Zc1aH3wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAqIGhdKmg9AQIECBAgQIAAAQIECPwWKAnLxrXxFWk7gbMw/NnvKZXlzrFWSD+lNtcQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgVeAn9ULXESBAgAABAgQIECBAgACBI4HScG5YnxvOParF92UCT83hqXPLtKwmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBmAU+0nnm6eiNAgAABAgQIECBAgMANAqUh6xCwFbK9YVD/P+LMunSesZOcuYZra50bz/dKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBUgFB61JB6wkQIECAAAECBAgQILCwQGk49iz0uzBts9bPZlZzJmdnxSZTr4vXeyVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAdAoLWdyg7gwABAgQIECBAgAABApMJhGBsaTi2ZqB3Mt6m7Zy5l851W/zZWdtrvSdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBvAoLWvU1EPQQIECBAgAABAgQIEOhYoEbAOrQngPvckM+C1LVnk7PfWW3PqTmZAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEVBQStV5y6ngkQIECAAAECBAgQIHBBoEYINoRuc4K3F8q05ETgzL/GnPclnJ25v95nAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9CAgaN3DFNRAgAABAgQIECBAgACBBQSEbfsY8lmQusWczs7cyuRcu13nPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGoLCFrXFrUfAQIECBAgQIAAAQIEJhMoDb6G4G6L8O5kzN20Uzrvd42Y/zsV3xEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LuAoHXvE1IfAQIECBAgQIAAAQIEHhYIIdkW4duH23L8gUCLUHTu/ZN7/UErviZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECRgKB1EZ/FBAgQIECAAAECBAgQmFsgBF5LQq8tQrtzi7fv7mwmJfM+qv7szHfrWtTx7hzfESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4EhA0PpIxvcECBAgQIAAAQIECBBYXCAEXa8EZCNbydq4h9f6AmcBZnOrb25HAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGFBC0HnNuqiZAgAABAgQIECBAgEBTgRjGja9ND7P5rQJPBanDublnu/9uvTUcRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDATuBn99lHAgQIECBAgAABAgQIEFhYoFawNTdQuzD5ra3Xmu/Vop8+/2rd1hEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsKaAJ1qvOXddEyBAgAABAgQIECBA4D8CNUKwV55a/J9CfNFM4OkA/JXza9yXzUBtTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDA1AKC1lOPV3MECBAgQIAAAQIECBBIExBmTXMa/aqzOV8JQuea5J6Re31uPa4nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAkcDP0Q++J0CAAAECBAgQIECAAIE1BM7CtykKwrApSq65IhDvT/fYFT1rCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoEfBE6xI9awkQIECAAAECBAgQIDC4QAyxlrQhAFuit+Za98yac9c1AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdEEBK1Hm5h6CRAgQIAAAQIECBAgUElAyLoS5ETb1LgnUjiunHNlTUotriFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCRgKD1kYzvCRAgQIAAAQIECBAgMKlACKzWCK16KvFYN0jKzO+a6V3njDUh1RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0JuAoHVvE1EPAQIECBAgQIAAAQIEBhAQlB1gSLsSU2aWEsbebXv5Y0o9+83vrG9/ts8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKwnIGi93sx1TIAAAQIECBAgQIDAogIhpFojqHolILsoeVdtp8z+7tnefV5XA1EMAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdCwhadz8iBRIgQIAAAQIECBAgQIAAgXKBHkPNKeHvfedX1uz38JkAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIpAj8pF7mGAAECBAgQIECAAAECBMYUqBlK7TGoO+ZUnqn67F4I8w3X3DnneOYzIk4lQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAZwFPtP7s41cCBAgQIECAAAECBAgQ+CVwZ/gWeBuBsxmeBbHbVPX3rme17c9+stZ9LT4TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCvgKD1vLPVGQECBAgQIECAAAECiwvUCKOGAGxuCHZx9m7bT7kfnpj11TNT+ul2GAojQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAIAUHrIcakSAIECBAgQIAAAQIECNwvcDUAe3+lTkwROJvn2e8pZ7iGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECMwkIWs80Tb0QIECAAAECBAgQIEDgl0B40m/J035D4Fbodr1bqeSeqaF15Z57uuYafduDAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF+BQSt+52NyggQIECAAAECBAgQIECAQDUBoeRqlDYiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGARAUHrRQatTQIECBAgQIAAAQIE5hcIQdrSMO2VpwrPLztHhyPM9kqNpff8HNPVBQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECLQQErVuo2pMAAQIECBAgQIAAAQI3C5SGTUPA9UrI9eY2HVcocDbj0vuosLzLy0et+3LDFhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcIuAoPUtzA4hQIAAAQIECBAgQIBAfYEYLo2vV084C99e3de68QR6uBd6qGG8yamYAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEWAoLWLVTtSYAAAQIECBAgQIAAgUEEhFoHGVSlMs9C+We/VyrjdBv35SmRCwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuEFA0PoGZEcQIECAAAECBAgQIECglUAvwdhW/dm3nkDKvSLgXM/bTgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIjC/wM34LOiBAgAABAgQIECBAgMA6Ailh2RQNgdoUJdc8KRDu0Zz7PV7r3n5yas4mQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMJeAJ1rPNU/dECBAgAABAgQIECAwsUAIktYIkdbYY2LmKVuLIeRPzfV4X+TWlHv9Jw+/ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQNDaPUCAAAECBAgQIECAAIGBBFICs0fthBCqIOqRztzfjzz3nNrD/z5K/jcy912gOwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEcgV+che4ngABAgQIECBAgAABAgTuFRAcvdd7xtPO7qGcMPOMPnoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAOwFPtH6n4jsCBAgQIECAAAECBP7H3r1oW4piCwK9USP//5ezg8pelRzDBwgq6MwxonUrj7UmyN5RcqMJDCBwtDm2JkQbaWu03lf2aPx7zrX36cmIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGvCtho/dWRlzcBAgQIECBAgAABAsMLpM2xPTbAHm2yHR5CgM0CR/No9DlSG99Rvs2gGiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4BMCf30iS0kSIECAAAECBAgQIEBgMoEeG0VrN6dORiTcCoE0F3rMqYouFSVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD0Av5F6+mHUAIECBAgQIAAAQIECLxNIG2Ibd0k3Vr/baZfz2dvk/Usm7Br5/Rezl+fD/InQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBMwEbrMielCBAgQIAAAQIECBAgcLlAvjE0Py/tOG1EjT+ldZQjkOZa7Sbmp9RmifMpH/0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBXwEbrvp5aI0CAAAECBAgQIECAwCmB2Fgdx1ONqERgReBoI/WbNy97nlYmhEsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBQL2GhdTKUgAQIECBAgQIAAAQIErhFo3Qz65o2y14h/q9U0P/bm2N69b0nJlgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAj8FbLT+6eETAQIECBAgQIAAAQIEbhXotcnVZutbh22qzo7m2Gxzpzbeo/ynGkzBEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwq4CN1rdy64wAAQIECBAgQIAAAQL/CrRuAE0bTms3nf7bu7OvCLxxjrwxp6/MR3kSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmEnARuuZRkusBAgQIECAAAECBAi8RqB1k3WC6NHGa0AlsimwN0++smF5z2ATzg0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBD4vYKP156cAAAIECBAgQIAAAQIE7hToteEzbZD9yibZO8fnjX3tzZNe8/EJt728nohHnwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIvE/ARuv3jamMCBAgQIAAAQIECBAYVCA2tcbxbJg2mJ6V+2a9rfkW82jr/tu0vpLn28ZNPgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSeFLDR+kl9fRMgQIAAAQIECBAgQKBCIG2Mjc2xFdUU/bjA1pyJjcdb92dgq409cp4hNzESIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPC8gI3Wz4+BCAgQIECAAAECBAgQ+IBA6wbP2g2lHyCVYoFAmndbc++Lc+qLORdME0UIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIENgQ+PX7JePfG/dcJkCAAAECBAgQIECAAIFGga1NrjXN+mtbjZayS4G9OfiWubWX49IjfX5L3mu5uUaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQD8B/6J1P0stESBAgAABAgQIECBA4IdA2vzZuqGztf6PgHz4lECaf3sbkM2tT00HyRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcELARusTaKoQIECAAAECBAgQIECgVGBvo2tpG8oROCPwpY3Utbl6Ls/MKHUIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIfE/ARuvvjbmMCRAgQIAAAQIECBC4WODoXxIu7b5282hpu8p9Q+BoM/HR/W8oyZIAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLbAjZab9u4Q4AAAQIECBAgQIAAgSqBXhtX0wZrm6yr6BVeETiaQ0f3V5oc+lJtPr2e16FRBEeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJOAjdZNfCoTIECAAAECBAgQIEDgp4DNmz89fHpOYG8upk3Je/efi7qt59rN1m29qU2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwNsFfv1+Cfn325OUHwECBAgQIECAAAECBK4U6LVh1V/Prhylb7Z9NDffNueO8l2bBW8zWMvRNQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzgn4F63PualFgAABAgQIECBAgACB/wqc2di5Rmez55qKay0CR3PTnPu//2PQMsPUJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPB+ARut3z/GMiRAgAABAgQIECBA4AKBtIn1aCNrSbdpo6fNniVSytQK7M2rdK/H/K2N6eryezmv9f1Gg7U8XSNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4JyAjdbn3NQiQIAAAQIECBAgQOCDArEpM46tBLWbQlv7U/9bAnvzNN176/yrzWvP6VszRrYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCwF/lpe8JkAAQIECBAgQIAAAQIEtgV6bMqs3Qi6HY07BLYF0jzrMV+3e3CHwHcF8mfLmv7deSBzAgQIECBAgAABAgQIECBAgAABAgQIECBA4P0C/kXr94+xDAkQIECAAAECBAgQaBRIG+ryTXWNzalO4BaBrTn7hU2htTluWd0yUDoZXiDmRzrGnzzouJ9fc06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIPAOAf+i9TvGURYECBAgQIAAAQIECEwgULv5c4KUhDiwQJpvaxtA164NnIbQCNwusHxGtp6lPLBUxxqfizgnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLxDwEbrd4yjLAgQIECAAAECBAgQuEBgudmupQsb8Fr01D0jsDV/SzaNnulvtDpfyXM091niiY3RW89JnkdJmby8cwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgfcI/Pr94vHv96QjEwIECBAgQIAAAQIECPQR6LWxzl+5+oyHVuoFjubw2+fmUf5bom932cr7rdfTPEhjenY+1LqYP7ViyhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExhb4z9jhiY4AAQIECBAgQIAAAQL3C/TakGfD3f1jp8d/BI7m8Bfm5hdyNN9/zvd83qfz+BxHXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqBWy0rhVTngABAgQIECBAgACBVwv02JCXNnja5PnqaTJ8ckfzr8c8Hx7hd4BHDjPkIMZ1gZjD6ZjGOT/GvfWa1159su9rM9M6AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCbAr9+v4z6+5upy5oAAQIECBAgQIAAAQI/BXpskPNXrJ+mPj0jcDSXvzZPjzyWo/Q1n2X+I3+uHcu7czF37hbXHwECBAgQIECAAAECBAgQIECAAAECBAgQIEDgWgH/ovW1vlonQIAAAQIECBAgQGASgR6b92ywm2Swhfk5gdpns8d68DnkmxKuHcubwvpvNyPHdqeDvggQIECAAAECBAgQIECAAAECBAgQIECAAAECbxL4603JyIUAAQIECBAgQIAAAQJnBHpsqrTB7oy8OlcI9JjPV8T1ZJtMntRv63uWsfMd0DbOahMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERhXwL1qPOjLiIkCAAAECBAgQIEBgCoG0uc4GuymG6jNBHs3Ho/ufgTpIdJYNvgdpTHc73NMxzkdPwjM1+giJjwABAgQIECBAgAABAgQIECBAgAABAgQIECBwXuDX75dBf5+vriYBAgQIECBAgAABAgTmFmjdyOevVHOP/xujL5nTX5y3JS5r8+GLVmsOV1w7OyZXxHKmTXPjjJo6BAgQIECAAAECBAgQIECAAAECBAgolY2QAAAgAElEQVQQIECAAIG5BPyL1nONl2gJECBAgAABAgQIEOgo0LLJL22ws8mu42BoqpuAeblOyWXd5amrLevvnTHn8ybO0zHO74xFXwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAvcL+Bet7zfXIwECBAgQIECAAAECDwu0bvCzwe7hAdT9rsDR/P7q/D1y2UP9qtmeydl7LeNwts+aemmsI0bjXiOnLAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgnQI2Wr9zXGVFgAABAgQIECBAgMCOQGyi2ymyecvGu00aNwYSOJrjX57HRzZrw/hlrzWPM9fOuJ/pp6ZOGteIyxjXyClLgAABAgQIECBAgAABAgQIECBAgAABAgQIEPiOwF/fSVWmBAgQIECAAAECBAh8XSA21H3dQf4EvijQ8vynujbinps1Le7netyuFRur87HMz7drukOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPBVgf98NXF5EyBAgAABAgQIECDwHYG00a91s1/ajGdD3nfmzMyZlmwKbn0eZvTxDN87aiPMsViz87GPa/dq6I0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBWARutZx05cRMgQIAAAQIECBAgQIAAgQ2BvU2uX99omm+63eD74/LXzf4AWVyI+ZYfk1l8XhS/5WOMWRxv6VQnBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC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