From ec0c91bca6b8ed0b8222e589f2cda1dc68f252fb Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Sat, 21 Dec 2024 19:13:00 +0800 Subject: [PATCH 001/458] Further fix html lang attribute (#8835) --- core/modules/startup/startup.js | 1 + 1 file changed, 1 insertion(+) diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index dcfcac48a5..b971e473b5 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -91,6 +91,7 @@ exports.startup = function() { document.documentElement.setAttribute("lang",pluginTiddler.getFieldString("name")); document.documentElement.setAttribute("dir",pluginTiddler.getFieldString("text-direction") || "auto"); } else { + document.documentElement.setAttribute("lang","en-GB"); document.documentElement.removeAttribute("dir"); } } From e8d4ce2ad017592c444ffddc77f232432f5a603a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sat, 21 Dec 2024 11:19:07 +0000 Subject: [PATCH 002/458] Update release note --- .../prerelease/tiddlers/Release 5.3.7.tid | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.3.7.tid b/editions/prerelease/tiddlers/Release 5.3.7.tid index 294399a7b9..3128087048 100644 --- a/editions/prerelease/tiddlers/Release 5.3.7.tid +++ b/editions/prerelease/tiddlers/Release 5.3.7.tid @@ -13,7 +13,8 @@ description: Under development ! Translation improvements -* +* French +* German ! Plugin Improvements @@ -28,19 +29,26 @@ description: Under development ! Usability Improvements -* +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8783"> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/commit/028c80782d105beb90f5d58a7f22e865c7e8c6f4">>) [[Hidden Setting: Default Type for Missing Tiddlers]] +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8661">> DiffTextWidget colours to several core palettes +* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8807">> Flexoki palette with additional colours ! Hackability Improvements -* +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8768">> several macros such as [[colour-picker Macro]], [[dumpvariables Macro]], [[image-picker Macro]], [[translink Macro]], [[tree Macro]] and [[list-links-draggable Macro]] to use the newer syntax +* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8780">> rendered plain text template to support more languages +* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8816">> 'disabled' attribute to SelectWidget and BrowseWidget +* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8819">> 'tabindex' attribute to BrowseWidget, RangeWidget, CheckboxWidget and RadioWidget +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8821">> the editor link dropdown to use newer syntax ! Bug Fixes -* +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8800">> problem with overwriting shadow tiddlers from plugins that do not have a `plugin-priority` field +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8831">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8835">>) problem with switching language not correctly updating the `lang` attribute of the root `` element ! Node.js Improvements -* +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8789">> incorrect redirect when combining a custom [[path-prefix|WebServer Parameter: path-prefix]] with manual HTTP Basic Authentication via the [[/login-basic|WebServer API: Force Basic Authentication Login]] endpoint ! Developer Improvements @@ -51,4 +59,13 @@ description: Under development [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: <<.contributors """ +DesignThinkerer +IchijikuIchigo +jrbntt +Leilei332 +linonetwo +michaeljmcd +pmario +well-noted +xcazin """>> From 1994574cfd7a05ad0c84afce171985ca207246d9 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Sun, 22 Dec 2024 19:27:31 +0800 Subject: [PATCH 003/458] Mark IE related things as deprecated (#8841) --- .../gettingstarted/GettingStarted - Internet Explorer.tid | 2 +- editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid | 3 ++- editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid | 3 ++- editions/tw5.com/tiddlers/saving/Saving.tid | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid index 3b8b5d4f09..295736a3f0 100644 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid +++ b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid @@ -1,7 +1,7 @@ caption: Internet Explorer created: 20140811172058274 modified: 20211114031651879 -tags: GettingStarted +tags: GettingStarted $:/deprecated title: GettingStarted - Internet Explorer type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid index 9305b31bd9..4049ea5081 100644 --- a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid +++ b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid @@ -5,10 +5,11 @@ delivery: DIY description: Manual method to let Internet Explorer save changes directly method: save modified: 20200507110355115 -tags: Saving Windows +tags: Saving Windows $:/deprecated title: Windows HTA Hack type: text/vnd.tiddlywiki +<<.deprecated-since "5.3.6">> Under Windows it is possible to convert TiddlyWiki into a true local application by renaming the HTML file to have the extension `*.hta`. The ''fsosaver'' module can then use the ~ActiveX ~FileSystemObject to save changes. Note that one disadvantage of this approach is that the TiddlyWiki file is saved in UTF-16 format, making it up to twice as large as it would be with the usual UTF-8 encoding. However, opening and saving the file via another saving method will re-encode the file to UTF-8. diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid index c5c7940e2e..6fc044a433 100644 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid +++ b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid @@ -6,10 +6,11 @@ delivery: Browser Extension description: Browser extension for Internet Explorer method: save modified: 20200507201415232 -tags: [[Internet Explorer]] Saving +tags: [[Internet Explorer]] Saving $:/deprecated title: Saving with TiddlyIE type: text/vnd.tiddlywiki +<<.deprecated-since "5.3.6">> # Install the TiddlyIE add-on from: #* https://github.com/davidjade/TiddlyIE/releases # Restart Internet Explorer. IE will prompt you to enable the TiddlyIE add-on. diff --git a/editions/tw5.com/tiddlers/saving/Saving.tid b/editions/tw5.com/tiddlers/saving/Saving.tid index 85c5d47ae8..f894f5e4e6 100644 --- a/editions/tw5.com/tiddlers/saving/Saving.tid +++ b/editions/tw5.com/tiddlers/saving/Saving.tid @@ -1,6 +1,6 @@ created: 20140912140651119 modified: 20220812144516626 -saving-browser: Firefox Chrome Edge [[Internet Explorer]] Safari Opera [[Standalone App]] +saving-browser: Firefox Chrome Edge Safari Opera [[Standalone App]] saving-os: Windows Mac Linux Android iOS tags: [[Working with TiddlyWiki]] title: Saving @@ -8,7 +8,7 @@ type: text/vnd.tiddlywiki \define alltagsfilter() -<$vars tag1="tag[" tag2="]" lb="[" rb="tag[Saving]sort[delivery]]"> +<$vars tag1="tag[" tag2="]" lb="[" rb="tag[Saving]sort[delivery]!tag[$:/deprecated]]"> <$set filter="[listaddprefixaddsuffix]+[join[]addprefixaddsuffix]" name="alltags" select=0> <$text text=<>/> From 664c6fd5d09a06e9e860189e6cc4f2bf4634c1d5 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sun, 22 Dec 2024 18:53:06 +0000 Subject: [PATCH 004/458] Initial commit (#8843) Fixes #8842 --- core/modules/widgets/transclude.js | 11 ++++++++--- core/modules/wiki.js | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/modules/widgets/transclude.js b/core/modules/widgets/transclude.js index 35b4941bd8..16561eab64 100755 --- a/core/modules/widgets/transclude.js +++ b/core/modules/widgets/transclude.js @@ -101,6 +101,7 @@ TranscludeWidget.prototype.execute = function() { } this.sourceText = target.text; this.parserType = target.type; + this._canonical_uri = target._canonical_uri; // Set the legacy transclusion context variables only if we're not transcluding a variable if(!this.transcludeVariable) { var recursionMarker = this.makeRecursionMarker(); @@ -228,7 +229,8 @@ TranscludeWidget.prototype.getTransclusionTarget = function() { }); return { text: parserInfo.text, - type: parserInfo.type + type: parserInfo.type, + _canonical_uri: parserInfo._canonical_uri }; } }; @@ -455,8 +457,11 @@ TranscludeWidget.prototype.makeRecursionMarker = function() { TranscludeWidget.prototype.parserNeedsRefresh = function() { // Doesn't need to consider transcluded variables because a parent variable can't change once a widget has been created - var parserInfo = this.wiki.getTextReferenceParserInfo(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{subTiddler:this.transcludeSubTiddler}); - return (this.sourceText === undefined || parserInfo.sourceText !== this.sourceText || parserInfo.parserType !== this.parserType) + var parserInfo = this.wiki.getTextReferenceParserInfo(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{ + subTiddler: this.transcludeSubTiddler, + defaultType: this.transcludeType + }); + return (this.sourceText === undefined || parserInfo.sourceText !== this.sourceText || parserInfo.parserType !== this.parserType || parserInfo._canonical_uri !== this._canonical_uri); }; TranscludeWidget.prototype.functionNeedsRefresh = function() { diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 29a839c7ae..620f4eccfa 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1132,6 +1132,7 @@ exports.getTextReferenceParserInfo = function(title,field,index,options) { if(tiddler.fields.type) { parserInfo.parserType = tiddler.fields.type; } + parserInfo._canonical_uri = tiddler.fields._canonical_uri; } } else if(field) { if(field === "title") { From ee6cfc7785752dfc5409ed5a4b2a0ff479dcf603 Mon Sep 17 00:00:00 2001 From: IchijikuIchigo Date: Mon, 23 Dec 2024 21:03:52 +0900 Subject: [PATCH 005/458] [ja_JP] Japanese translation update (#8853) * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Editions.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Empty Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Blog Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Full Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Resume Builder Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\Text Slicer Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\editions\XLSX Utilities Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Plugin Editions.tid' * [ja-JP] Japanese translation of 'editions\ja-JP\tiddlers\languages\Languages.tid' * [ja-JP] Japanese translation of 'editions\ja-JP\tiddlers\languages\Chinese (Simplified) Edition.tid' * [ja-JP] Japanese translation of 'editions\ja-JP\tiddlers\languages\Chinese (Traditional) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\Castellano (Espana) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\German (Germany) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\German (Austria) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\French (France) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\Japanese (Japan) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\Korean (Korea Republic) Edition.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\languages\LanguageGallery.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Plugins.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Installing a plugin from the plugin library.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Uninstalling a plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Manually installing a plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\OfficialPlugins.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Amazon Web Services Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\BrowserStorage Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\CodeMirror Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\D3 Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\External Attachments Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Highlight Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\JSZip Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\KaTeX Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Markdown Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Railroad Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Share Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\TW2Parser Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Twitter Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\TiddlyWiki Docs PR Maker.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\D3 Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Dynaview Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Consent Banner Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Innerwiki Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\Mobile Drag And Drop Shim Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\plugins\SaveTrail Plugin.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\TiddlyWiki Docs PR Maker.tid' --- .../tiddlers/TiddlyWiki Docs PR Maker.tid | 14 +++++++ .../ja-JP/tiddlers/editions/Blog Edition.tid | 11 +++++ editions/ja-JP/tiddlers/editions/Editions.tid | 18 +++++++++ .../ja-JP/tiddlers/editions/Empty Edition.tid | 16 ++++++++ .../ja-JP/tiddlers/editions/Full Edition.tid | 13 ++++++ .../editions/Résumé Builder Edition.tid | 11 +++++ .../tiddlers/editions/Text Slicer Edition.tid | 11 +++++ .../editions/XLSX Utilities Edition.tid | 11 +++++ .../languages/Castellano (Espana) Edition.tid | 14 +++++++ .../Chinese (Simplified) Edition.tid | 15 +++++++ .../Chinese (Traditional) Edition.tid | 15 +++++++ .../languages/French (France) Edition.tid | 13 ++++++ .../languages/German (Austria) Edition.tid | 15 +++++++ .../languages/German (Germany) Edition.tid | 15 +++++++ .../languages/Japanese (Japan) Edition.tid | 13 ++++++ .../Korean (Korea Republic) Edition.tid | 13 ++++++ .../tiddlers/languages/LanguageGallery.tid | 27 +++++++++++++ .../ja-JP/tiddlers/languages/Languages.tid | 19 +++++++++ .../plugins/Amazon Web Services Plugin.tid | 12 ++++++ .../plugins/BrowserStorage Plugin.tid | 20 ++++++++++ .../tiddlers/plugins/CodeMirror Plugin.tid | 12 ++++++ .../plugins/Consent Banner Plugin.tid | 16 ++++++++ editions/ja-JP/tiddlers/plugins/D3 Plugin.tid | 14 +++++++ .../tiddlers/plugins/Dynaview Plugin.tid | 14 +++++++ .../plugins/External Attachments Plugin.tid | 12 ++++++ .../tiddlers/plugins/Highlight Plugin.tid | 14 +++++++ .../tiddlers/plugins/Innerwiki Plugin.tid | 13 ++++++ ...lling a plugin from the plugin library.tid | 40 +++++++++++++++++++ .../ja-JP/tiddlers/plugins/JSZip Plugin.tid | 9 +++++ .../ja-JP/tiddlers/plugins/KaTeX Plugin.tid | 12 ++++++ .../plugins/Manually installing a plugin.tid | 31 ++++++++++++++ .../tiddlers/plugins/Markdown Plugin.tid | 12 ++++++ .../Mobile Drag And Drop Shim Plugin.tid | 10 +++++ .../tiddlers/plugins/OfficialPlugins.tid | 13 ++++++ .../tiddlers/plugins/Plugin Editions.tid | 11 +++++ editions/ja-JP/tiddlers/plugins/Plugins.tid | 32 +++++++++++++++ .../tiddlers/plugins/Railroad Plugin.tid | 12 ++++++ .../tiddlers/plugins/SaveTrail Plugin.tid | 17 ++++++++ .../ja-JP/tiddlers/plugins/Share Plugin.tid | 14 +++++++ .../tiddlers/plugins/TW2Parser Plugin.tid | 12 ++++++ .../ja-JP/tiddlers/plugins/Twitter Plugin.tid | 14 +++++++ .../plugins/Uninstalling a plugin.tid | 31 ++++++++++++++ 42 files changed, 661 insertions(+) create mode 100644 editions/ja-JP/tiddlers/TiddlyWiki Docs PR Maker.tid create mode 100644 editions/ja-JP/tiddlers/editions/Blog Edition.tid create mode 100644 editions/ja-JP/tiddlers/editions/Editions.tid create mode 100644 editions/ja-JP/tiddlers/editions/Empty Edition.tid create mode 100644 editions/ja-JP/tiddlers/editions/Full Edition.tid create mode 100644 editions/ja-JP/tiddlers/editions/Résumé Builder Edition.tid create mode 100644 editions/ja-JP/tiddlers/editions/Text Slicer Edition.tid create mode 100644 editions/ja-JP/tiddlers/editions/XLSX Utilities Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/Castellano (Espana) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/Chinese (Simplified) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/Chinese (Traditional) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/French (France) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/German (Austria) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/German (Germany) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/Korean (Korea Republic) Edition.tid create mode 100644 editions/ja-JP/tiddlers/languages/LanguageGallery.tid create mode 100644 editions/ja-JP/tiddlers/languages/Languages.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Amazon Web Services Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/BrowserStorage Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/CodeMirror Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Consent Banner Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/D3 Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Dynaview Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/External Attachments Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Highlight Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Innerwiki Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Installing a plugin from the plugin library.tid create mode 100644 editions/ja-JP/tiddlers/plugins/JSZip Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/KaTeX Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Manually installing a plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Markdown Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/OfficialPlugins.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Plugin Editions.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Plugins.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Railroad Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/SaveTrail Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Share Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/TW2Parser Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Twitter Plugin.tid create mode 100644 editions/ja-JP/tiddlers/plugins/Uninstalling a plugin.tid diff --git a/editions/ja-JP/tiddlers/TiddlyWiki Docs PR Maker.tid b/editions/ja-JP/tiddlers/TiddlyWiki Docs PR Maker.tid new file mode 100644 index 0000000000..0e1e506d76 --- /dev/null +++ b/editions/ja-JP/tiddlers/TiddlyWiki Docs PR Maker.tid @@ -0,0 +1,14 @@ +created: 20240313100515958 +modified: 20241222104855231 +original-modified: 20240313103959789 +tags: Editions +title: TiddlyWiki Docs PR Maker +ja-title: TiddlyWikiドキュメントPRメーカー + +[[@saqimtiaz|https://github.com/saqimtiaz/]]が作成した''~TiddlyWikiドキュメントPRメーカー''は、ドキュメントへの貢献と改善を支援するために設計された、tiddlywiki.comの特別エディションです。 + +https://saqimtiaz.github.io/tw5-docs-pr-maker/ + +ドキュメントに加えられたすべての変更は、GitHubに簡単に送信できます。 -- プルリクエストは自動的に作成されるため、エディションの名前は"PRメーカー"になります。 + +ドキュメントPRメーカーを使用する前に、無料の~GitHubアカウントを作成し、[[貢献者ライセンス契約|Contributor License Agreement]]に署名する必要があります。ドキュメントへの貢献の詳細については、[[ここ|Improving TiddlyWiki Documentation]]をご覧ください。 diff --git a/editions/ja-JP/tiddlers/editions/Blog Edition.tid b/editions/ja-JP/tiddlers/editions/Blog Edition.tid new file mode 100644 index 0000000000..227af6c595 --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Blog Edition.tid @@ -0,0 +1,11 @@ +created: 20150902123139133 +modified: 20241221102414663 +original-modified: 20150902123255662 +tags: Editions +title: Blog Edition +ja-title: ブログエディション +type: text/vnd.tiddlywiki + +TiddlyWikiの''ブログ''エディションには、TiddlyWikiで書かれた静的HTMLブログの公開を支援するツールが含まれています。現在、Node.jsで使用するように設計されています。 + +ドキュメントは準備中ですが、使用例については https://github.com/Jermolene-blog/blog を参照してください。 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/editions/Editions.tid b/editions/ja-JP/tiddlers/editions/Editions.tid new file mode 100644 index 0000000000..8ae0fcaf4e --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Editions.tid @@ -0,0 +1,18 @@ +created: 20140908125500000 +list: [[Empty Edition]] +modified: 20241220114652589 +original-modified: 20160107222125923 +tags: TableOfContents +title: Editions +ja-title: エディション +type: text/vnd.tiddlywiki + +TiddlyWikiは、特定の目的に合わせて調整されたいくつかの異なるエディションで配布されています + +エディションは、できるだけ早く立ち上げて実行できるように、TiddlyWikiのコアコンポーネントとプラグイン、ドキュメント、およびサンプルコンテンツで構成されています + +これらのエディションのコンポーネントを組み合わせて、特定のアプリケーションに固有のソリューションを作成できます + +<> + +<$macrocall $name=".tip" _="""エディションと、TiddlyWikiが実行される[[プラットフォーム|Platforms]]と混同しないように注意してください(例:[[単一HTMLファイル|Saving]] vs. [[Node.js|TiddlyWiki on Node.js]])"""/> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/editions/Empty Edition.tid b/editions/ja-JP/tiddlers/editions/Empty Edition.tid new file mode 100644 index 0000000000..05d5e0e0e3 --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Empty Edition.tid @@ -0,0 +1,16 @@ +created: 20140916213421041 +modified: 20241220115009879 +original-modified: 20160702084215576 +tags: Editions +title: Empty Edition +ja-title: 空エディション +type: text/vnd.tiddlywiki + + +TiddlyWikiの"空"エディションはバニラディストリビューションであり、コアコード以外に追加されているプラグインや構成はありません + +空のエディションは次からダウンロードできます: + +* リンク: [ext[empty.html]] +* ビルトイン: {{$:/editions/tw5.com/snippets/download-empty-button}} +ブラウザによっては、ダウンロード開始前にダウンロードを受け入れるかどうかを尋ねられる場合があります \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/editions/Full Edition.tid b/editions/ja-JP/tiddlers/editions/Full Edition.tid new file mode 100644 index 0000000000..2db8f9af81 --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Full Edition.tid @@ -0,0 +1,13 @@ +created: 20150310103210459 +modified: 20241221102710941 +original-modified: 20160602051530592 +tags: Editions +title: Full Edition +ja-title: フルエディション +type: text/vnd.tiddlywiki + +TiddlyWikiの"フル"エディションは、TiddlyWikiで使用可能なすべての言語、テーマ、プラグインで構成されています。これはTiddlyWikiのテスト、特に利用可能なすべての言語プラグイン間の切り替えに使用することを目的としています。 + +フルエディションは以下からダウンロードできます: + +https://tiddlywiki.com/editions/full/ \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/editions/Résumé Builder Edition.tid b/editions/ja-JP/tiddlers/editions/Résumé Builder Edition.tid new file mode 100644 index 0000000000..e82ba5ce98 --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Résumé Builder Edition.tid @@ -0,0 +1,11 @@ +created: 20150718123139133 +modified: 20241221103022837 +original-modified: 20160602051544252 +tags: Editions +title: Résumé Builder Edition +ja-title: 履歴書ビルダーエディション +type: text/vnd.tiddlywiki + +TiddlyWikiの''履歴書ビルダー''エディションを使用すると、Webに保存したり印刷したりできる職業上の履歴書を簡単な方法で作成し始めることができます + +https://tiddlywiki.com/editions/resumebuilder/ diff --git a/editions/ja-JP/tiddlers/editions/Text Slicer Edition.tid b/editions/ja-JP/tiddlers/editions/Text Slicer Edition.tid new file mode 100644 index 0000000000..cf935cd8aa --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/Text Slicer Edition.tid @@ -0,0 +1,11 @@ +created: 20150718123139133 +modified: 20241221103255652 +original-modified: 20160602051553479 +tags: Editions +title: Text-Slicer Edition +ja-title: テキストスライサーエディション +type: text/vnd.tiddlywiki + +TiddlyWikiの''テキストスライサー''エディションには、上級ユーザーが長いテキストを個々のTiddlerにスライスするのに役立つツールが含まれています + +https://tiddlywiki.com/editions/text-slicer/ \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/editions/XLSX Utilities Edition.tid b/editions/ja-JP/tiddlers/editions/XLSX Utilities Edition.tid new file mode 100644 index 0000000000..bbd70b3f97 --- /dev/null +++ b/editions/ja-JP/tiddlers/editions/XLSX Utilities Edition.tid @@ -0,0 +1,11 @@ +created: 20161023202301847 +modified: 20241221103512732 +original-modified: 20161023202301847 +tags: Editions +title: XLSX Utilities Edition +ja-title: XLSXユーティリティエディション +type: text/vnd.tiddlywiki + +TiddlyWikiの''XLSXユーティリティ''エディションには、Microsoft ExcelやGoogle Sheetsなどのアプリケーションによって生成された`.XLSX`スプレッドシートを操作するためのツールが含まれています。ブラウザーやNode.jsで使用できます + +https://tiddlywiki.com/editions/xlsx-utils/ diff --git a/editions/ja-JP/tiddlers/languages/Castellano (Espana) Edition.tid b/editions/ja-JP/tiddlers/languages/Castellano (Espana) Edition.tid new file mode 100644 index 0000000000..33f54a4a98 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Castellano (Espana) Edition.tid @@ -0,0 +1,14 @@ +caption: Castellano (España) +created: 20160511155557372 +list-before: Deutsch (Deutschland) Edition +modified: 20241221105234901 +original-modified: 20160511160224223 +tags: Languages +title: Edición en Castellano +ja-title: スペイン語版 +type: text/vnd.tiddlywiki + +La edición española de ~TiddlyWiki se encuentra aquí: + +* ''Documentación'' : https://tiddlywiki.com/languages/es-ES/index.html +* ''~TiddlyWiki en blanco'' : https://tiddlywiki.com/languages/es-ES/empty.html diff --git a/editions/ja-JP/tiddlers/languages/Chinese (Simplified) Edition.tid b/editions/ja-JP/tiddlers/languages/Chinese (Simplified) Edition.tid new file mode 100644 index 0000000000..fd43aeee27 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Chinese (Simplified) Edition.tid @@ -0,0 +1,15 @@ +caption: 中文 (简体) +created: 20140919215640174 +modified: 20241221104728318 +original-modified: 20140920030246450 +tags: Languages +title: Chinese (Simplified) Edition +ja-title: 中国語(簡体字)版 +type: text/vnd.tiddlywiki + +TiddlyWiki 的简体中文翻译版本: + + +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hans/empty.html + +另请参阅 [[中文 (正體) 版|Chinese (Traditional) Edition]]。 diff --git a/editions/ja-JP/tiddlers/languages/Chinese (Traditional) Edition.tid b/editions/ja-JP/tiddlers/languages/Chinese (Traditional) Edition.tid new file mode 100644 index 0000000000..7699fcd0e5 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Chinese (Traditional) Edition.tid @@ -0,0 +1,15 @@ +caption: 中文 (正體) +created: 20140919215743298 +modified: 20241221104801318 +original-modified: 20140920030246450 +tags: Languages +title: Chinese (Traditional) Edition +ja-title: 中国語(繁体字)版 +type: text/vnd.tiddlywiki + +TiddlyWiki 的正體中文翻譯版本: + + +* ''空白版本'': https://tiddlywiki.com/languages/zh-Hant/empty.html + +另請參閱 [[中文 (简体) 版|Chinese (Simplified) Edition]]。 diff --git a/editions/ja-JP/tiddlers/languages/French (France) Edition.tid b/editions/ja-JP/tiddlers/languages/French (France) Edition.tid new file mode 100644 index 0000000000..5cd2c5f20b --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/French (France) Edition.tid @@ -0,0 +1,13 @@ +created: 20140919215540827 +modified: 20241221105647964 +original-modified: 20141123162938012 +tags: Languages +caption: Français (France) +title: Édition en Français (France) +ja-title: フランス語版 +type: text/vnd.tiddlywiki + +La traduction en Français (France) de TiddlyWiki démarre ici : + +* ''documentation'' : https://tiddlywiki.com/languages/fr-FR/index.html +* ''empty'' : https://tiddlywiki.com/languages/fr-FR/empty.html diff --git a/editions/ja-JP/tiddlers/languages/German (Austria) Edition.tid b/editions/ja-JP/tiddlers/languages/German (Austria) Edition.tid new file mode 100644 index 0000000000..c1aa5b5c1e --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/German (Austria) Edition.tid @@ -0,0 +1,15 @@ +created: 20140919214900580 +modified: 20241221105339061 +original-modified: 20140919215900428 +tags: Languages +caption: Deutsch (Österreich) +title: Deutsch (Österreich) Edition +ja-title: オーストリア語版 +type: text/vnd.tiddlywiki + +Die österreichische Übersetzung von TiddlyWiki ist verfügbar unter: + +* ''Dokumentation'': https://tiddlywiki.com/languages/de-AT/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-AT/empty.html + +Siehe auch: [[Deutsch (Deutschland) Edition|ドイツ語版]]. diff --git a/editions/ja-JP/tiddlers/languages/German (Germany) Edition.tid b/editions/ja-JP/tiddlers/languages/German (Germany) Edition.tid new file mode 100644 index 0000000000..3659c2423c --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/German (Germany) Edition.tid @@ -0,0 +1,15 @@ +created: 20140919215410238 +modified: 20241221105310877 +original-modified: 20140919215851101 +tags: Languages +caption: Deutsch (Deutschland) +title: Deutsch (Deutschland) Edition +ja-title: ドイツ語版 +type: text/vnd.tiddlywiki + +Die deutsche Übersetzung von TiddlyWiki ist verfügbar unter: + +* ''Dokumentation'': https://tiddlywiki.com/languages/de-DE/index.html +* ''Leer'': https://tiddlywiki.com/languages/de-DE/empty.html + +Siehe auch: [[Deutsch (Österreich) Edition|オーストリア語版]]. diff --git a/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid b/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid new file mode 100644 index 0000000000..b6c02d7cf6 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid @@ -0,0 +1,13 @@ +caption: 日本語 (日本国) +created: 20201227004927059 +modified: 20241221105711724 +original-modified: 20201227010050287 +tags: Languages +title: Japanese (Japan) Edition +ja-title: 日本語版 +type: text/vnd.tiddlywiki + +TiddlyWikiの日本語バージョンはこちら: + + +* ''空白のコピー'' : https://tiddlywiki.com/languages/ja-JP/empty.html diff --git a/editions/ja-JP/tiddlers/languages/Korean (Korea Republic) Edition.tid b/editions/ja-JP/tiddlers/languages/Korean (Korea Republic) Edition.tid new file mode 100644 index 0000000000..9768a9508d --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Korean (Korea Republic) Edition.tid @@ -0,0 +1,13 @@ +caption: 한국어 (대한민국) +created: 20160424113322330 +modified: 20241221105737475 +original-modified: 20160424113322330 +tags: Languages +title: Korean (Korea Republic) Edition +ja-title: 韓国語版 +type: text/vnd.tiddlywiki + +티들리위키 한국어 번역은 다음에서 사용할 수 있습니다: + + +* ''빈 위키'' : https://tiddlywiki.com/languages/ko-KR/empty.html diff --git a/editions/ja-JP/tiddlers/languages/LanguageGallery.tid b/editions/ja-JP/tiddlers/languages/LanguageGallery.tid new file mode 100644 index 0000000000..801cdc72c5 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/LanguageGallery.tid @@ -0,0 +1,27 @@ +created: 20151231083708980 +modified: 20241221105811581 +original-modified: 20211117212723856 +tags: Languages +title: LanguageGallery Example +ja-title: 言語ギャラリー +type: text/vnd.tiddlywiki + +これは、ListWidgetとTranscludeWidgetを使用して、<>と<>の[[タグ付け|Tagging]]された言語アイコンすべてをグリッド表示する例です。 + + + diff --git a/editions/ja-JP/tiddlers/languages/Languages.tid b/editions/ja-JP/tiddlers/languages/Languages.tid new file mode 100644 index 0000000000..7c1eec7731 --- /dev/null +++ b/editions/ja-JP/tiddlers/languages/Languages.tid @@ -0,0 +1,19 @@ +created: 20141202125500000 +modified: 20241221104605323 +original-modified: 20160617101222113 +tags: TableOfContents +title: Languages +ja-title: 言語 +type: text/vnd.tiddlywiki + +!! 言語プラグイン + +TiddlyWikiのコアユーザーインターフェイスは20以上の言語で利用できます。[[プラグインライブラリからプラグインをインストールする|Installing a plugin from the plugin library]]の手順に従って、言語プラグインをインストールできます。サイドバーの"ツール"タブにある"言語"ボタンを使用して、表示する言語を変更できます。 + +[[TiddlyWiki を母国語に翻訳する|Translate TiddlyWiki into your language]]方法を学ぶことで、ライブラリに新しい言語を提供できます。 + +!! 言語エディション + +一部の言語については、追加の翻訳ドキュメントを備えた、ビルド済みエディションがあります。 + +<> diff --git a/editions/ja-JP/tiddlers/plugins/Amazon Web Services Plugin.tid b/editions/ja-JP/tiddlers/plugins/Amazon Web Services Plugin.tid new file mode 100644 index 0000000000..08ba80b2db --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Amazon Web Services Plugin.tid @@ -0,0 +1,12 @@ +created: 20170703193252423 +modified: 20241222101154614 +original-modified: 20170703193353918 +tags: OfficialPlugins +title: Amazon Web Services Plugin +ja-title: アマゾンウェブサービスプラグイン +type: text/vnd.tiddlywiki + +アマゾンウェブサービスプラグインは、アマゾンウェブサービスで動かすためのいくつかのツールを提供します: + +* TiddlyWikiをAWS Lambda関数として実行できるZIPファイル内の単一のJavaScriptファイルとして保存するためのテンプレート。この形式では、TiddlyWikiは、スタンドアロンのHTMLファイル構成と同様に、コードとデータの両方を含む自己完結型の単一ファイルです +* TiddlyWikiのNode.js構成とLambda構成の両方で、AWSサービスで操作するために使用できるコマンド \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/BrowserStorage Plugin.tid b/editions/ja-JP/tiddlers/plugins/BrowserStorage Plugin.tid new file mode 100644 index 0000000000..a5f97f3168 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/BrowserStorage Plugin.tid @@ -0,0 +1,20 @@ +created: 20190206181204119 +modified: 20241222101408936 +original-modified: 20190206181204119 +tags: OfficialPlugins +title: BrowserStorage Plugin +ja-title: ブラウザストレージプラグイン +type: text/vnd.tiddlywiki + +ブラウザストレージプラグインを使用すると、TiddlyWikiが[[ブラウザのローカルストレージ|https://en.wikipedia.org/wiki/Web_storage#localStorage]]にTiddlerを保存できるようになります。これは、変更がブラウザ内に保存され、ベースWikiがリロードされるたびに自動的に再適用されることを意味します + +ブラウザのローカルストレージはTiddlyWikiにとって万能薬ではありません: + +* ブラウザは、各ページで使用できるローカルストレージの量を制限しており、通常は5または10MBに制限されています +* 個人データをブラウザのローカル ストレージに保存すると、予期しないプライバシー侵害につながる可能性があります +* ブラウザは、ローカルストレージに保存されているデータを警告なしにいつでも削除する権利を留保します +* ブラウザはローカルストレージをURLと結び付けるため、以前に別のWikiが使用していたURLにWikiを移動すると問題が発生する可能性があります + +このプラグインは注意して使用してください。未解決の問題や未解決の疑問が数多くあります + +ブラウザストレージプラグインは、プラグインライブラリからインストールできます \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/CodeMirror Plugin.tid b/editions/ja-JP/tiddlers/plugins/CodeMirror Plugin.tid new file mode 100644 index 0000000000..46c0c5406f --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/CodeMirror Plugin.tid @@ -0,0 +1,12 @@ +created: 20160107223435497 +list: +modified: 20241222101622863 +original-modified: 20170228102537972 +tags: OfficialPlugins [[Plugin Editions]] +title: CodeMirror Plugin +ja-title: CodeMirrorプラグイン +type: text/vnd.tiddlywiki + +CodeMirrorプラグインは、洗練されたWebベースのエディタをTiddlyWikiに追加します + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/codemirror|plugins/tiddlywiki/codemirror]]でデモを参照してください \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Consent Banner Plugin.tid b/editions/ja-JP/tiddlers/plugins/Consent Banner Plugin.tid new file mode 100644 index 0000000000..5d1bbc91b4 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Consent Banner Plugin.tid @@ -0,0 +1,16 @@ +created: 20201019084534263 +modified: 20241222111136646 +original-modified: 20201019084658478 +tags: OfficialPlugins +title: Consent Banner Plugin +ja-title: 同意バナープラグイン +type: text/vnd.tiddlywiki + +同意バナープラグインは、[[EU一般データ保護規則|https://gdpr.eu/cookies/]]などの"Cookie法"に準拠したWebサイトの作成に役立ちます。 +このプラグインは、ユーザーにCookieを受け入れるか拒否するかを促すバナーを表示し、ユーザーの同意をローカルストレージに記録して、次回のアクセス時にバナーを非表示にできるようにします。 + +デフォルトでは、ユーザーがCookieを受け入れることに同意しない限り、<iframe>、<embed>、<object>で埋め込まれたコンテンツはブロックされます。 + +同意ステータスは構成Tiddlerを介して利用できるため、同意が得られたかどうかに応じて異なる動作をするコンテンツを構築できます。たとえば、ユーザーがCookieを受け入れない限り、自動的に youtube-nocookie.com バリアントのビデオURLを使用する~YouTubeビデオを埋め込むためのマクロが提供されています。 + +このプラグインを使用することで、特定の法律への準拠が保証されるわけではないことにご注意ください。あなたの状況に固有の技術的な問題を理解し、必要に応じて法的アドバイスを求める必要があります。 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/D3 Plugin.tid b/editions/ja-JP/tiddlers/plugins/D3 Plugin.tid new file mode 100644 index 0000000000..ec3d119669 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/D3 Plugin.tid @@ -0,0 +1,14 @@ +created: 20160107223425581 +caption: {{!!ja-title}} - ^^deprecated^^ +modified: 20241222102055511 +original-modified: 20240913122437925 +tags: OfficialPlugins [[Plugin Editions]] $:/deprecated +title: D3 Plugin +ja-title: D3プラグイン +type: text/vnd.tiddlywiki + +<<.deprecated-since "5.3.4">> D3プラグインは、D3ビジュアライゼーションライブラリをTiddlyWikiと統合します + +https://tiddlywiki.com/plugins/tiddlywiki/d3/ を参照してください + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/d3|plugins/tiddlywiki/d3]]でデモをご覧ください。 diff --git a/editions/ja-JP/tiddlers/plugins/Dynaview Plugin.tid b/editions/ja-JP/tiddlers/plugins/Dynaview Plugin.tid new file mode 100644 index 0000000000..a14cb3aba2 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Dynaview Plugin.tid @@ -0,0 +1,14 @@ +created: 20180111122953142 +modified: 20241223104409794 +original-modified: 20181113084151268 +tags: OfficialPlugins +title: Dynaview Plugin +ja-title: 動的表示プラグイン +type: text/vnd.tiddlywiki + +動的表示プラグインを使用すると、スクロールやズームによるブラウザビューポートの変更に動的に応答するユーザーインターフェイスを構築できます: + +* スクロールされて表示されるまで出力のレンダリングを延期できるCSSクラス +* 現在のズームレベルに応じてDOM要素の不透明度を変更できるようにするCSSクラス + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/dynaview|plugins/tiddlywiki/dynaview]]でデモをご覧ください diff --git a/editions/ja-JP/tiddlers/plugins/External Attachments Plugin.tid b/editions/ja-JP/tiddlers/plugins/External Attachments Plugin.tid new file mode 100644 index 0000000000..8b5a5bf222 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/External Attachments Plugin.tid @@ -0,0 +1,12 @@ +created: 20171031172325817 +list: +modified: 20241222102153176 +original-modified: 20171031172440017 +tags: OfficialPlugins [[Plugin Editions]] +title: External Attachments Plugin +ja-title: 外部添付プラグイン +type: text/vnd.tiddlywiki + +外部添付ファイルプラグインは、Tiddlerを外部添付ファイルとしてインポートするためのサポートを提供します。つまり、バイナリファイルを自己完結型Tiddlerとしてインポートするのではなく、''_canonical_uri''フィールドを介して元のファイルを参照する "スキニー" Tiddler としてインポートされます。これによりWikiのサイズが削減され、パフォーマンスが向上します。ただし、これはWikiが完全な自己完結型ではなくなったことを意味します + +このプラグインは、インポート/ドラッグされたファイルの''path''属性をサポートするTiddlyDesktopなどのプラットフォームでTiddlyWikiを使用する場合にのみ機能します \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Highlight Plugin.tid b/editions/ja-JP/tiddlers/plugins/Highlight Plugin.tid new file mode 100644 index 0000000000..78d7733c66 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Highlight Plugin.tid @@ -0,0 +1,14 @@ +created: 20160107223417655 +list: +modified: 20241222102315584 +original-modified: 20220222094354907 +tags: OfficialPlugins [[Plugin Editions]] +title: Highlight Plugin +ja-title: ハイライトプラグイン +type: text/vnd.tiddlywiki + +ハイライトプラグインは、テキストに色付けする機能を提供します + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/highlight|plugins/tiddlywiki/highlight]]を参照してください + +<<.warning """最新バージョンの[[ハイライトプラグイン|Highlight Plugin]]には、JavaScript ES6(2015年リリース)を完全にサポートする最新ブラウザが必要です。古いバージョンは、古いブラウザを使用する必要があるユーザー向けの''ハイライトレガシー''プラグインとして引き続き利用できます""">> diff --git a/editions/ja-JP/tiddlers/plugins/Innerwiki Plugin.tid b/editions/ja-JP/tiddlers/plugins/Innerwiki Plugin.tid new file mode 100644 index 0000000000..685f7a61be --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Innerwiki Plugin.tid @@ -0,0 +1,13 @@ +created: 20190127104143725 +modified: 20241223111102675 +original-modified: 20190127104143725 +tags: OfficialPlugins +title: Innerwiki Plugin +ja-title: インナーウィキプラグイン +type: text/vnd.tiddlywiki + +インナーウィキプラグインにより、TiddlyWikiは自身の変更されたコピー("innerwiki")を埋め込むことができます。主な目的は、時間の経過とともに変化するTiddlyWikiの外観に合わせて自動的に最新のスクリーンショットイラストを作成したり、異なる言語でスクリーンショットを作成したりできるようにすることです。 + +ブラウザでは、インナーウィキは埋め込みiframeとして表示されます。Node.jsでは、[[GoogleのPuppeteer|https://pptr.dev/]]を使用してインナーウィキをオフスクリーンのWebページとして読み込み、PNG画像としてスナップショットを作成します。 + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/innerwiki|plugins/tiddlywiki/innerwiki]]でデモをご覧ください diff --git a/editions/ja-JP/tiddlers/plugins/Installing a plugin from the plugin library.tid b/editions/ja-JP/tiddlers/plugins/Installing a plugin from the plugin library.tid new file mode 100644 index 0000000000..16b4403e56 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Installing a plugin from the plugin library.tid @@ -0,0 +1,40 @@ +created: 20160107222352710 +modified: 20241221111035323 +original-modified: 20220617122143911 +tags: Plugins +title: Installing a plugin from the plugin library +ja-title: プラグインライブラリからプラグインをインストールする +type: text/vnd.tiddlywiki + +\rules except wikilink + +手順を//隣に並べて//実行したい場合は、<>でできます。 + +TiddlyWikiをスタンドアロンの単一ファイルWikiとして使用する場合は、次の手順に従ってください。 + +# ブラウザでTiddlyWikiを開きます + +# 現在のWikiファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]]) + +# <>を開きます + +#* ''プラグイン''タブをクリックし +#*<<.icon $:/core/images/download-button>> ''他のプラグインを取得''ボタンをクリックします + +# <<.icon $:/core/images/chevron-right>> ''プラグインライブラリを開く''をクリックして公式プラグインライブラリを開きます + +# ライブラリのリストがロードされると: +## ''プラグイン''、''テーマ''、''言語''のタブが使用でき、 +## プラグインの詳細を検索する''検索''ボックスが使用できます + +# ''インストール''ボタンをクリックしてプラグインをインストールします + +# <<.icon $:/core/images/save-button-dynamic>>をクリックしてTiddlyWikiを保存します + +# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>のインストールを完了するためにウィンドウを更新します。 + +#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。 + +# これでプラグインが使用できるようになりました + +<$macrocall $name=".note" _="""''Node.js''でTiddlyWikiを使用する場合の詳細は、[[Node.jsで公式プラグインをインストールする|Installing official plugins on Node.js]]を確認してください。
概要は[[プラグイン|Plugins]]でご覧いただけます。"""/> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/JSZip Plugin.tid b/editions/ja-JP/tiddlers/plugins/JSZip Plugin.tid new file mode 100644 index 0000000000..c2519c5e50 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/JSZip Plugin.tid @@ -0,0 +1,9 @@ +created: 20201019084712096 +modified: 20241222103057478 +original-modified: 20201019084824422 +tags: OfficialPlugins +title: JSZip Plugin +ja-title: JSZipプラグイン +type: text/vnd.tiddlywiki + +このプラグインは、ブラウザでZipファイルを作成するためのプリミティブを提供します。また、[[JSZip|https://stuk.github.io/jszip/]]ライブラリを他のプラグインで使用できるようになります \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/KaTeX Plugin.tid b/editions/ja-JP/tiddlers/plugins/KaTeX Plugin.tid new file mode 100644 index 0000000000..a123646bfa --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/KaTeX Plugin.tid @@ -0,0 +1,12 @@ +created: 20160107223410181 +list: +modified: 20241222103257736 +original-modified: 20170228102517666 +tags: OfficialPlugins [[Plugin Editions]] +title: KaTeX Plugin +ja-title: KaTeXプラグイン +type: text/vnd.tiddlywiki + +このプラグインは、~LaTeXで書かれた数学表記を表示する機能を追加します + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/katex|plugins/tiddlywiki/katex]]を参照してください \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Manually installing a plugin.tid b/editions/ja-JP/tiddlers/plugins/Manually installing a plugin.tid new file mode 100644 index 0000000000..883d434b8e --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Manually installing a plugin.tid @@ -0,0 +1,31 @@ +created: 20160107222430613 +modified: 20241221112212036 +original-modified: 20220617115930635 +tags: Plugins +title: Manually installing a plugin +ja-title: プラグインを手動でインストールする +type: text/vnd.tiddlywiki + +\rules except wikilink + +手順を//隣に並べて//実行したい場合は、<>でできます。 + +# 現在のTiddlyWiki HTMLファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]]) + +# ブラウザでTiddlyWikiを開きます + +# 別のブラウザウィンドウで、プラグインへのリンク(例: https://tiddlywiki.com/plugins/tiddlywiki/katex )を見つけます。通常、これらのリンクはプラグインのホームページにあります + +# TiddlyWikiブラウザウィンドウに、`$:/plugins/tiddlywiki/example`へのリンクをドラッグします + +# $:/Import Tiddlerに表示された新しいプラグインをインポートします + +# TiddlyWikiを保存します(<<.icon $:/core/images/save-button-dynamic>>) + +# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>のインストールを完了するためにウィンドウを更新します。 + +#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。 + +# これでプラグインが使用できるようになりました + +<$macrocall $name=".note" _="公式プラグインライブラリからプラグインをインストールする方法の詳細については、[[プラグインライブラリからプラグインをインストールする|Installing a plugin from the plugin library]]を確認してください。
概要は[[プラグイン|Plugins]]でご覧いただけます。"/> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Markdown Plugin.tid b/editions/ja-JP/tiddlers/plugins/Markdown Plugin.tid new file mode 100644 index 0000000000..c84510abc4 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Markdown Plugin.tid @@ -0,0 +1,12 @@ +created: 20160107223401584 +list: +modified: 20241222103338193 +original-modified: 20170228102511347 +tags: OfficialPlugins [[Plugin Editions]] +title: Markdown Plugin +ja-title: Markdownプラグイン +type: text/vnd.tiddlywiki + +Markdownプラグインを使用すると、標準Markdownマークアップで記述されたTiddlerを使用できるようになります。 + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/markdown|plugins/tiddlywiki/markdown]]を参照してください。 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid b/editions/ja-JP/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid new file mode 100644 index 0000000000..cef08e2c29 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Mobile Drag And Drop Shim Plugin.tid @@ -0,0 +1,10 @@ +created: 20170328173820802 +caption: {{!!ja-title}} - ^^deprecated^^ +modified: 20241223111912267 +original-modified: 20240913122844238 +tags: OfficialPlugins $:/deprecated +title: Mobile Drag And Drop Shim Plugin +ja-title: モバイルのドラッグアンドドロップ詰め木プラグイン +type: text/vnd.tiddlywiki + +<<.deprecated-since "5.3.4">> モバイルのドラッグアンドドロップ詰め木プラグインは、iOSやAndroidなどのモバイルブラウザーでHTML 5互換のドラッグアンドドロップ操作を可能にする"詰め木"を提供します。この詰め木はTim Rufflesによって作成され、 https://github.com/timruffles/ios-html5-drag-drop-shim で公開されています。 diff --git a/editions/ja-JP/tiddlers/plugins/OfficialPlugins.tid b/editions/ja-JP/tiddlers/plugins/OfficialPlugins.tid new file mode 100644 index 0000000000..5d6aa0ab6a --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/OfficialPlugins.tid @@ -0,0 +1,13 @@ +created: 20170210075109635 +modified: 20241221112634689 +original-modified: 20220612082350537 +tags: Plugins +title: OfficialPlugins +ja-title: 公式プラグイン +type: text/vnd.tiddlywiki + +公式TiddlyWikiプラグインライブラリには、[[TiddlyWiki 5のメインGitHubレポジトリ|Working with the TiddlyWiki5 repository]]の一部であるプラグインが含まれています。[[プラグインライブラリ|Installing a plugin from the plugin library]]からインストールします。公式プラグインライブラリのプラグインは、[[アップグレードプロセス|UpgradeMechanism]]の一部として自動的に更新されます。 + +<> + +<$macrocall $name=".note" _="プラグインの概要と処理方法については、[[プラグイン|Plugins]]を参照してください"/> diff --git a/editions/ja-JP/tiddlers/plugins/Plugin Editions.tid b/editions/ja-JP/tiddlers/plugins/Plugin Editions.tid new file mode 100644 index 0000000000..9f4f5a6251 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Plugin Editions.tid @@ -0,0 +1,11 @@ +created: 20160107223443647 +modified: 20241221104043422 +original-modified: 20160107223732928 +tags: Editions +title: Plugin Editions +ja-title: プラグインエディション +type: text/vnd.tiddlywiki + +これらのエディションには、TiddlyWikiプラグインのオリジナルセットの簡単なデモが含まれています。これらは、プラグインライブラリが欠如していた以前のバージョンのTiddlyWiki用に用意されていました + +<> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Plugins.tid b/editions/ja-JP/tiddlers/plugins/Plugins.tid new file mode 100644 index 0000000000..cbd6511050 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Plugins.tid @@ -0,0 +1,32 @@ +created: 20140910215514237 +list: [[Installing a plugin from the plugin library]] [[Uninstalling a plugin]] [[Manually installing a plugin]] OfficialPlugins +modified: 20241221110419644 +original-modified: 20220617133819755 +tags: Concepts TableOfContents +title: Plugins +ja-title: プラグイン +type: text/vnd.tiddlywiki + +! 紹介 + +TiddlyWiki5のプラグインを使用して、Wikiをカスタマイズ・拡張するオプションコンポーネントを配布できます。公式プラグインライブラリやコミュニティサイトからプラグインをインストールできます。 + +内部的には、プラグインは1つのTiddlerとしてパッケージ化されたTiddler集であり、ユニットとしてインストール、コピー、無効化、削除することができます。プラグイン内の個々のTiddlerは、隠しTiddlerとして表示されます。 + +プラグインには、JavaScriptモジュール、スタイルシート、テンプレートを含めることができます。プラグインを使用して、通常のテキスト、画像、その他のコンテンツを配布することもできます。 + +! 単一ファイルWikiによるプラグインの処理 + +<> + +! クライアント - サーバー構成(Node.js)でのプラグインの処理 + +<> + +! プラグインのメカニズム + +[[プラグインのメカニズム|PluginMechanism]]Tiddlerには、プラグインが内部でどのように実装されるかについての詳細が含まれています。 + +プラグインの詳細は、<>のサブタグ<<.controlpanel-tab Plugins>>で開けます。 + +TiddlyWikiのメインコアコードを含む $:/core というプラグインがあります。これは常に存在し、デフォルトの[[隠しTiddler|ShadowTiddlers]]のソースです。 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Railroad Plugin.tid b/editions/ja-JP/tiddlers/plugins/Railroad Plugin.tid new file mode 100644 index 0000000000..7611f4d6d0 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Railroad Plugin.tid @@ -0,0 +1,12 @@ +created: 20160107223348621 +list: +modified: 20241222103824983 +original-modified: 20170228102501706 +tags: OfficialPlugins [[Plugin Editions]] +title: Railroad Plugin +ja-title: Railroadプラグイン +type: text/vnd.tiddlywiki + +{{$:/plugins/tiddlywiki/railroad/readme}} + +{{$:/plugins/tiddlywiki/railroad/syntax}} \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/SaveTrail Plugin.tid b/editions/ja-JP/tiddlers/plugins/SaveTrail Plugin.tid new file mode 100644 index 0000000000..77b02d3f88 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/SaveTrail Plugin.tid @@ -0,0 +1,17 @@ +created: 20170210074840860 +modified: 20241223112712712 +original-modified: 20170328173912704 +tags: OfficialPlugins +title: SaveTrail Plugin +ja-title: 履歴保存プラグイン +type: text/vnd.tiddlywiki + +このプラグインにより、TiddlyWikiは、以下のいずれかの方法で手動で変更されたすべてのTiddlerのコンテンツを(JSONファイルとして)継続的にダウンロードします: + +* 編集の確認 +* Tiddlerの削除 +* インポート +* 名前の変更/再リンク +* オプション: ドラフトTiddlerへのタイピングでダウンロード開始 + +必要に応じて、'前'と'後'のファイルが別々にダウンロードされます。正しく設定すると、ブラウザはバックグラウンドでファイルをサイレントにダウンロードし、誤ってデータが失われた場合のバックアップとして使用できます。 diff --git a/editions/ja-JP/tiddlers/plugins/Share Plugin.tid b/editions/ja-JP/tiddlers/plugins/Share Plugin.tid new file mode 100644 index 0000000000..adff94d41d --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Share Plugin.tid @@ -0,0 +1,14 @@ +created: 20201228143125000 +modified: 20241222103744408 +original-modified: 20201228143125000 +tags: OfficialPlugins +title: Share Plugin +ja-title: シェアプラグイン +type: text/vnd.tiddlywiki + +
このプラグインの機能を正確に理解していない限り、このプラグインをインストールしないでください
+ +この実験的なプラグインは、URL経由でTiddlerを共有するためのツールを提供します。これには以下が含まれます: + +* 起動時にブラウザのロケーションハッシュからTiddlerのグループをロードする機能 +* TiddlerのグループからURLを作成するためのウィザードとテンプレート \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/TW2Parser Plugin.tid b/editions/ja-JP/tiddlers/plugins/TW2Parser Plugin.tid new file mode 100644 index 0000000000..2c30ae15e0 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/TW2Parser Plugin.tid @@ -0,0 +1,12 @@ +created: 20160107223340750 +list: +modified: 20241222103757551 +original-modified: 20170228102455677 +tags: OfficialPlugins [[Plugin Editions]] +title: TW2Parser Plugin +ja-title: TW2Parser プラグイン +type: text/vnd.tiddlywiki + +この実験的なプラグインは、TiddlyWikiのオリジナルのクラシックバージョン用に書かれたWikiTextを表示する機能を追加します + +[ext[https://tiddlywiki.com/plugins/tiddlywiki/tw2parser|plugins/tiddlywiki/tw2parser]]を参照してください \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Twitter Plugin.tid b/editions/ja-JP/tiddlers/plugins/Twitter Plugin.tid new file mode 100644 index 0000000000..0afdd109a8 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Twitter Plugin.tid @@ -0,0 +1,14 @@ +created: 20170227223209558 +modified: 20241222103812151 +original-modified: 20170328173919702 +tags: OfficialPlugins +title: Twitter Plugin +ja-title: Twitterプラグイン +type: text/vnd.tiddlywiki + + +このプラグインは、twitter.comからさまざまなエンティティを埋め込むことができる`<$twitter>`ウィジェットを追加します: + +* 個別のツイートと会話スレッド +* ハッシュタグ/アカウントをツイートする、アカウントをフォロー/いいねする、URLを共有するためのボタン +* ユーザー、ハッシュタグ、リスト、コレクションからのツイートを表示するタイムライン \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/plugins/Uninstalling a plugin.tid b/editions/ja-JP/tiddlers/plugins/Uninstalling a plugin.tid new file mode 100644 index 0000000000..582e1e0561 --- /dev/null +++ b/editions/ja-JP/tiddlers/plugins/Uninstalling a plugin.tid @@ -0,0 +1,31 @@ +created: 20160107222504269 +modified: 20241221111742412 +original-modified: 20220617132957241 +tags: Plugins +title: Uninstalling a plugin +ja-title: プラグインをアンインストールする +type: text/vnd.tiddlywiki + +\rules except wikilink + +手順を//隣に並べて//実行したい場合は、<>でできます。 + +TiddlyWikiをスタンドアロンの単一ファイルWikiとして使用する場合は、次の手順に従ってください。 + +# 現在のWikiファイルのバックアップを作成します([[念のため|The First Rule of Using TiddlyWiki]]) + +# <>を開き、''プラグイン''タブに移動します + +# 削除したいプラグインをクリックして、スタンドアロンTiddlerとして開きます。 + +# <<.icon $:/core/images/down-arrow>> ''その他の操作''ボタン、そして<<.icon $:/core/images/delete-button>> ''削除''をクリックします + +# <<.icon $:/core/images/save-button-dynamic>>をクリックしてTiddlyWikiを保存します + +# ウィンドウの上部に黄色い警告バーが表示された場合は、TiddlyWikiがプラグイン<<.icon $:/core/images/refresh-button>>の削除を完了するためにウィンドウを更新します。 + +#* <<.from-version "5.1.22">> 動的読み込みをサポートするプラグインを削除するときにTiddlyWikiを更新する必要がなくなりました。詳細については、[[プラグインのメカニズム|PluginMechanism]]を参照してください。 + +# これでプラグインがアクティブではなくなるか、使用できるようになりました + +<$macrocall $name=".note" _="""Node.jsでTiddlyWikiを使用する場合の詳細は、[[Node.jsでプラグインをアンインストールする|Uninstalling a plugin with Node.js]]を確認してください。
概要は[[プラグイン|Plugins]]でご覧いただけます。"""/> \ No newline at end of file From 0c21bca0ad19088952147d911c73dfb634d8ccf3 Mon Sep 17 00:00:00 2001 From: IchijikuIchigo Date: Tue, 24 Dec 2024 21:00:33 +0900 Subject: [PATCH 006/458] [ja_JP] Uncomment out Japanese document link (#8866) --- .../ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid | 6 +++--- .../tw5.com/tiddlers/languages/Japanese (Japan) Edition.tid | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid b/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid index b6c02d7cf6..dce9809771 100644 --- a/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid +++ b/editions/ja-JP/tiddlers/languages/Japanese (Japan) Edition.tid @@ -1,7 +1,7 @@ caption: 日本語 (日本国) created: 20201227004927059 -modified: 20241221105711724 -original-modified: 20201227010050287 +modified: 20241224112824830 +original-modified: 20241224112736358 tags: Languages title: Japanese (Japan) Edition ja-title: 日本語版 @@ -9,5 +9,5 @@ type: text/vnd.tiddlywiki TiddlyWikiの日本語バージョンはこちら: - +* ''ドキュメント'' : https://tiddlywiki.com/languages/ja-JP/index.html * ''空白のコピー'' : https://tiddlywiki.com/languages/ja-JP/empty.html diff --git a/editions/tw5.com/tiddlers/languages/Japanese (Japan) Edition.tid b/editions/tw5.com/tiddlers/languages/Japanese (Japan) Edition.tid index ba9cabdedf..18da51de13 100644 --- a/editions/tw5.com/tiddlers/languages/Japanese (Japan) Edition.tid +++ b/editions/tw5.com/tiddlers/languages/Japanese (Japan) Edition.tid @@ -1,11 +1,11 @@ caption: 日本語 (日本国) created: 20201227004927059 -modified: 20201227010050287 +modified: 20241224112736358 tags: Languages title: Japanese (Japan) Edition type: text/vnd.tiddlywiki TiddlyWikiの日本語バージョンはこちら: - +* ''ドキュメント'' : https://tiddlywiki.com/languages/ja-JP/index.html * ''空白のコピー'' : https://tiddlywiki.com/languages/ja-JP/empty.html From 54f0c4fa34eac2803b84efaf79916f407f688b24 Mon Sep 17 00:00:00 2001 From: IchijikuIchigo Date: Thu, 26 Dec 2024 21:14:35 +0900 Subject: [PATCH 007/458] [ja_JP] Japanese translation update - 'About' section of tiddlywiki.com (#8870) * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\About.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\Acknowledgements.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\Contributors.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\History of TiddlyWiki.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\License.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\releasenotes\Releases.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\roadmap\RoadMap.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\about\Archive.tid' --- editions/ja-JP/tiddlers/about/About.tid | 11 +++ .../ja-JP/tiddlers/about/Acknowledgements.tid | 11 +++ editions/ja-JP/tiddlers/about/Archive.tid | 83 +++++++++++++++++ .../ja-JP/tiddlers/about/Contributors.tid | 45 ++++++++++ .../tiddlers/about/History of TiddlyWiki.tid | 88 +++++++++++++++++++ editions/ja-JP/tiddlers/about/License.tid | 21 +++++ .../ja-JP/tiddlers/releasenotes/Releases.tid | 15 ++++ editions/ja-JP/tiddlers/roadmap/RoadMap.tid | 11 +++ 8 files changed, 285 insertions(+) create mode 100644 editions/ja-JP/tiddlers/about/About.tid create mode 100644 editions/ja-JP/tiddlers/about/Acknowledgements.tid create mode 100644 editions/ja-JP/tiddlers/about/Archive.tid create mode 100644 editions/ja-JP/tiddlers/about/Contributors.tid create mode 100644 editions/ja-JP/tiddlers/about/History of TiddlyWiki.tid create mode 100644 editions/ja-JP/tiddlers/about/License.tid create mode 100644 editions/ja-JP/tiddlers/releasenotes/Releases.tid create mode 100644 editions/ja-JP/tiddlers/roadmap/RoadMap.tid diff --git a/editions/ja-JP/tiddlers/about/About.tid b/editions/ja-JP/tiddlers/about/About.tid new file mode 100644 index 0000000000..a3d096e832 --- /dev/null +++ b/editions/ja-JP/tiddlers/about/About.tid @@ -0,0 +1,11 @@ +created: 20140912145139340 +modified: 20241225110311898 +original-modified: 20140916132022553 +tags: TableOfContents +title: About +ja-title: TiddlyWikiについて +type: text/vnd.tiddlywiki + +TiddlyWikiの開発に関する情報: + +<> diff --git a/editions/ja-JP/tiddlers/about/Acknowledgements.tid b/editions/ja-JP/tiddlers/about/Acknowledgements.tid new file mode 100644 index 0000000000..9dbf4aeb4a --- /dev/null +++ b/editions/ja-JP/tiddlers/about/Acknowledgements.tid @@ -0,0 +1,11 @@ +created: 20140129204112515 +modified: 20241225111031964 +original-modified: 20140912145138466 +tags: About +title: Acknowledgements +ja-title: 謝辞 +type: text/vnd.tiddlywiki + +TiddlyWikiは、TiddlyWiki[[コミュニティ|Community]]の継続的なサポートなしでは成り立ちません。みなさんの注目とフィードバックにより、何が求められているかを理解することができ、その製品に対するみなさんの熱い思いから、投資する価値があることが分かります + +{{$:/Acknowledgements}} diff --git a/editions/ja-JP/tiddlers/about/Archive.tid b/editions/ja-JP/tiddlers/about/Archive.tid new file mode 100644 index 0000000000..6965067ad2 --- /dev/null +++ b/editions/ja-JP/tiddlers/about/Archive.tid @@ -0,0 +1,83 @@ +created: 20231005205623086 +modified: 20241226114558500 +original-modified: 20241115193649399 +tags: About +title: TiddlyWiki Archive +ja-title: TiddlyWikiアーカイブ + +\procedure versions() +5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 +5.1.10 5.1.11 5.1.12 5.1.13 5.1.14 5.1.15 5.1.16 5.1.17 5.1.18 5.1.19 +5.1.20 5.1.21 5.1.22 5.1.23 +5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 +5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 +\end + +TiddlyWikiの古いバージョンは[[アーカイブ|https://github.com/TiddlyWiki/tiddlywiki.com-gh-pages/tree/master/archive]]で入手できます: + + + + + + + + + + + <$list filter="[enlistreverse[]]" variable="version"> + <$let + filename=`TiddlyWiki-$(version)$` + emptyFilename=`Empty-$(filename)$` + releaseTiddler={{{ [addprefix[Release ]] }}} + releaseDate={{{ [get[released]format:date[TIMESTAMP]] }}} + nextVersion={{{ [enlistafter] }}} + nextReleaseTiddler={{{ [addprefix[Release ]] }}} + nextReleaseDate={{{ [get[released]format:date[TIMESTAMP]] }}} + lifetime={{{ [subtractdivide[86400000]add[0.5]fixed[0]] }}} + > + + + + + + + + + + +
+ バージョン + + リリース日 + + 生存期間 + + 概略 + + ダウンロード +
+ <$link to=<>> + <$text text=`v$(version)$`/> + + + <$view tiddler=<> field="released" format="date" template="YYYY年mmmDD日"/> + + <$list filter="[compare:number:lt[0]]" variable="ignore"> + 現在 + + <$list filter="[compare:number:gteq[0]]" variable="ignore"> + <$text text=<>/>日 + + + <$transclude $tiddler=<> $field="description" $format="inline"> + (none) + + + addprefix[https://tiddlywiki.com/archive/full/]]}}} rel="noopener noreferrer" target="_blank"> + Complete + + | + addprefix[https://tiddlywiki.com/archive/empty/]]}}} rel="noopener noreferrer" target="_blank"> + Empty + +
diff --git a/editions/ja-JP/tiddlers/about/Contributors.tid b/editions/ja-JP/tiddlers/about/Contributors.tid new file mode 100644 index 0000000000..0932764030 --- /dev/null +++ b/editions/ja-JP/tiddlers/about/Contributors.tid @@ -0,0 +1,45 @@ +created: 20140916132828137 +modified: 20241225111720612 +original-modified: 20140916133148206 +tags: About +title: Contributors +ja-title: 貢献者 +type: text/vnd.tiddlywiki + +以下は、[[TiddlyWikiの開発に貢献|https://github.com/TiddlyWiki/TiddlyWiki5/graphs/contributors]]するために時間を割いてくれている方々です: + +* Jeremy Ruston ([[@Jermolene|https://github.com/Jermolene]]) +* Dave Gifford ([[@giffmex|https://github.com/giffmex]]) +* Bram Chen ([[@BramChen|https://github.com/BramChen]]) +* Mario Pietsch ([[@pmario|https://github.com/pmario]]) +* Xavier Cazin ([[@xcazin|https://github.com/xcazin]]) +* Eric Shulman ([[@ericshulman|https://github.com/ericshulman]]) +* Stephan Hradek ([[@Skeeve|https://github.com/Skeeve]]) +* ~BuggyJef ([[@buggyj|https://github.com/buggyj]]) +* Nathan Cain ([[@natecain|https://github.com/natecain]]) +* Ton Gerner ([[@gernert|https://github.com/gernert]]) +* Devin Weaver ([[@sukima|https://github.com/sukima]]) +* João Bolila ([[@jbolila|https://github.com/jbolila]]) +* David Johnston ([[@Brennall|https://github.com/Brennall]]) +* David Jade ([[@davidjade|https://github.com/davidjade]]) +* Bob Robison ([[@grayeul|https://github.com/grayeul]]) +* [[@nameanyone|https://github.com/nameanyone]] +* Maurizio Pollio ([[@mpollio|https://github.com/mpollio]]) +* Ogoshi Masayuki ([[@ogoshima|https://github.com/ogoshima]]) +* Chris Sugden ([[@csugden|https://github.com/csugden]]) +* [[@asampal|https://github.com/asampal]] +* Bow Yi Jang ([[@Eucaly|https://github.com/Eucaly]]) +* Mal Gamble ([[@malgam|https://github.com/malgam]]) +* Michael Fogleman ([[@mwfogleman|https://github.com/mwfogleman]]) +* Daniel Barrett ([[@shendaras|https://github.com/shendaras]]) +* Simon Baird ([[@simonbaird|https://github.com/simonbaird]]) +* James Anderson ([[@welford|https://github.com/welford]]) +* Jon Lister ([[@jayfresh|https://github.com/jayfresh]]) +* [[@TheDiveO|https://github.com/TheDiveO]] +* Danielo Rodríguez ([[@danielo515|https://github.com/danielo515]]) +* [[@willover|https://github.com/willover]] +* [[@slotik|https://github.com/slotik]] +* Irene Knapp ([[@IreneKnapp|https://github.com/IreneKnapp]]) +* Brian Shaver ([[@shakerlxxv|https://github.com/shakerlxxv]]) +* Tobi Beer ([[@tobibeer|https://github.com/tobibeer]]) +* Craig Cook ([[@BoyCook|https://github.com/BoyCook]]) diff --git a/editions/ja-JP/tiddlers/about/History of TiddlyWiki.tid b/editions/ja-JP/tiddlers/about/History of TiddlyWiki.tid new file mode 100644 index 0000000000..f4068b3bea --- /dev/null +++ b/editions/ja-JP/tiddlers/about/History of TiddlyWiki.tid @@ -0,0 +1,88 @@ +created: 20140908114400000 +modified: 20241225112134741 +original-modified: 20241016125145988 +tags: About +title: History of TiddlyWiki +ja-title: TiddlyWikiの歴史 +type: text/vnd.tiddlywiki + +! ~TiddlyWikiの20年 + +~TiddlyWikiの20周年を祝うために、いくつかのライブストリームを開催しました。録画はここで視聴できます: + +* 2024年9月19日 - https://youtube.com/live/z9slx92TyrU +* 2024年9月20日 - https://youtube.com/live/puFdN-FgOjg +* 2024年9月21日 - https://youtube.com/live/0SjsHvwjHGE +* 2024年9月22日 - https://youtube.com/live/oD7Jtq2D4lg + +GitHubでは、TiddlyWikiの貢献者に記念日の感想を[[聞いて|https://github.com/TiddlyWiki/TiddlyWiki5/discussions/7983]]お祝いしました。興味深く思慮深い回答がいくつか寄せられました。たとえば、[[@FND|https://github.com/FND]]からの回答は次の通りです: + +> TiddlyWikiは、私のキャリアだけでなく、価値観にも計り知れないほどの永続的な影響を与えました。今日に至るまで、私はTiddlyWikiから学んだ[[基本的なコンセプト|https://prepitaph.org/articles/creative-privacy/]] - その多くは、他では忘れられたり無視されたりしています - を頻繁に参照しています。このバックグラウンドがあることで、技術的な複雑さを崇拝したり、テクノロジーの世界に人間が存在することを思い出したりする場合でも、この業界で仕事をする上で自分の方向性を保つことができます。 + +> TiddlyWikiとは、人々のことです。このコミュニティや、Jeremyがその周りに築いたグループと交流し、そこから学ぶことができたのは、私にとって計り知れない特権でした。また、この特権がまったくの偶然によって私に与えられたものだということを思い出すのにも役立ちます。この恩返しをしていきたいと思います。 + +~TiddlyWikiを特集した最近のポッドキャスト: + +* 2016年のチェンジログ ポッドキャスト - https://changelog.com/podcast/196 ~TiddlyWikiの背景について議論しています +* 2021年のFloss Weeklyの録画 - https://twit.tv/shows/floss-weekly/episodes/620 + +! TiddlyWikiの起源 + +遡ること1997年に、同僚が私に[[Ward Cunningham のオリジナル wiki|http://c2.com/cgi/wiki]]を紹介してくれました。これほど強力なものがわずか700行のPerlに収まることに感銘を受け、セキュリティとパーミッションの根本的な再考に魅了されました。他の多くの開発者と同様に、私もあらゆる機会を利用してさまざまなWikiを試し、仕事での使用法を模索しました + +私にとってWikiの魅力は、印刷物中心のドキュメントやEメールの一般的なパラダイムを最終的に破壊する可能性があるという感覚でした + +人々がWikiを使用する様子を数年間観察した結果、パワーユーザーは複数のブラウザタブで複数のWikiページを同時に開く機能を多用しており、ページの比較やレビュー、ページ間でのテキストのコピー、未読ページの一種のキューとして用いることが容易になっていることに気づきました + +一度に複数のページを操作するこの機能がWikiをリファクタリングする機能の中心であると感じました。また、愛情を込めてリファクタリングされたWikiはより便利になる傾向があると一般に認められています。それでも、標準のWikiユーザーインターフェイスは常に、単一ページを一度に表示し操作すること専用にデザインされてきました + +2004年4月にGMailを見たとき、すべての考えがまとまりました。GMailは、Ajaxを巧みに使用して個々のメールをスレッド化された会話に融合させました。 + +このアイデアをさらに探求するために、HTMLとJavaScriptを試し始めました。私にはどちらの経験もなく、以前の活動で、いくつかの静的ページと単純なASPサイトをまとめただけでした。これらのクライアント側テクノロジーについて理解するのは大変でした。他の皆さんと同じように、私もWebプログラミングの非互換性と矛盾がどれほど恐ろしいものであるかを知り、愕然としました + +! TiddlyWikiのラウンチ + +そうして、2004年9月に、私は原始的な[[TiddlyWikiの最初のバージョン|https://classic.tiddlywiki.com/firstversion.html]]をリリースしました。これは、アイデアを実証するための最小のもので、シンプルで自己完結型の静的な48KB HTMLファイルでした + +TiddlyWikiの最初のバージョンをこの方法で作成することの欠点は、編集に使用するのが完全に非現実的になることでした。'変更を保存'をクリックすると、ファイルシステムにHTMLページを書き込むために、保存されるデータを示すウィンドウがポップアップ表示されるだけでした + +初期のフィードバックの多くは、TiddlyWikiは優れているが、変更を適切に保存できればさらに便利になるというものでした。ブラウザで実行されているHTMLファイルがローカルファイルシステムに変更を保存することは不可能であることはわかっていると思っていたので、少しイライラしました + +数か月以内に、TiddlyWikiがブラウザに変更を保存できるようにする実験的なFirefox拡張機能を目にしました。コードを調べてみると、ファイルシステムへの書き込みに使用されていたAPIは、`file://` URI経由でロードされている場合に限り、実際には通常のHTMLファイルで利用できることがわかりました + +私はFirefoxコードをTiddlyWikiのコアに適合させ、すぐにInternet Explorerにも同様の機能を追加しました(MicrosoftがInternet Explorerとともに配布した古い[[ActiveX|https://en.wikipedia.org/wiki/ActiveX]]コントロールを利用しています) + +! TiddlyWikiの成長 + +TiddlyWikiの成長における大きなマイルストーンは、Nathan Bowersによる"GTDTiddlyWiki"の作成でした。彼はバニラのTiddlyWiki製品を採用し、一般的なGetting Things Done方法論を使用してタスクをトラックするという特定のアプリケーションに適応させました。GTDTiddlyWikiはすぐに人気を博し、[[LifeHacker|https://lifehacker.com/]]などのWebサイトで熱狂的に歓迎されました + +その後数年間にわたって、TiddlyWikiの人気は高まり続け、新しい機能や能力も獲得しました。1年以内に、私はTiddlyWikiでオーダーメイドの開発作業を行うことで自活できるようになり、特にWikiパイオニアである[[SocialText|https://en.wikipedia.org/wiki/Socialtext]]と協力して変更をオンラインサーバと同期する機能に取り組みました + +! BTの獲得 + +2007年5月に、[[BT]]は私のコンサルティング会社である[[Osmosoft]]を買収しました。従業員が1人で、収益がほんの少ししかない会社を買収するというのは、異例の決断でした。[[Osmosoft]]は、コミュニティの将来を保証するために私がTiddlyWikiの知的財産をUnaMesaに譲渡したため、TiddlyWikiの知的財産さえ所有していませんでした + +[[BT]]の動機は、コミュニティベースのエコシステムを理解することでした。私は"オープンソースイノベーション責任者"として組織に加わり、オープンソースガバナンスの責任を負い、オープンソースコミュニティへの参加方法に関するアドバイスと専門知識を提供しました + +! [[Osmosoft]]とTiddlySpace + +私はBTに[[Osmosoft]]という名前でチームを作りました。私たちの目的は、オープンソースのメリットを広め、他のチームが実際にそのメリットを実感できるよう支援することでした。また、Webの使用全般、特にWeb標準の使用を普及する必要があることもわかりました + +私たちのアプローチは、話すことよりも見せることに重点を置くことでした。私たちはTiddlyWikiコミュニティと協力してエコシステムを拡張し、BT用の多数の内部システムを構築しました(TiddlyWikiに基づくものもあれば、そうでないものもあります) + +TiddlyWikiコミュニティへの[[Osmosoft]]の主な貢献は、TiddlyWebとTiddlySpaceの作成でした。TiddlyWebは、Tiddlerのための堅牢なインターネット規模のサーバであり、TiddlerのTiddlyWikiビューを構成することもできました。TiddlySpaceは、TiddlyWebをより直接的に使用可能な形式にパッケージ化する試みでした + +! BTを離れる + +2011年の終わりまでに、私はBTという企業の枠外でTiddlyWikiの可能性を実現するのがより適切な立場にあると感じるようになりました。そうして、私は退職して独立した開発者として働き始め、主にTiddlyWiki5という形でTiddlyWikiを新しくリブートすることに取り組みました + +! TiddlyWiki5の開発 + +私は2011年11月からTiddlyWikiの新しいリリースに取り組みました。プログラマーとして、すでに書いたものの"バージョン 2.0"に取り組むことは非常に魅力的な提案です。これは、要件が完全に理解され、目的の機能をサポートするために必要なアーキテクチャの進化に集中できることを意味します + +! 将来 + +TiddlyWiki5がついに"ベータ"ステータスを脱した今、私の希望は、それが長く存続することです。HTML5とNode.jsの標準機能のみを使用しているため、今後何年にもわたって完全に動作しない理由はありません。私の目標は、少なくとも25年は続けることです + +//Jeremy Ruston, 2014年9月20日// + diff --git a/editions/ja-JP/tiddlers/about/License.tid b/editions/ja-JP/tiddlers/about/License.tid new file mode 100644 index 0000000000..409b65fdd1 --- /dev/null +++ b/editions/ja-JP/tiddlers/about/License.tid @@ -0,0 +1,21 @@ +created: 20170127221457627 +modified: 20241226112706885 +original-modified: 20170127222646488 +title: License +ja-title: ライセンス +type: text/vnd.tiddlywiki +tags: About + +TiddlyWikiは、[[隠しTiddler|ShadowTiddlers]] [[$:/core/copyright.txt]]に保存されている[[寛容な3条項BSDライセンス|https://opensource.org/licenses/BSD-3-Clause]]に基づいて公開されています: + +
+ +{{$:/core/copyright.txt}} + +
+ +平たく言うと、このライセンスには、~TiddlyWikiの作成者やその他の者へのライセンス料の支払いやその他の法的義務を課すことなく、TiddlyWikiを利用して、やりたいことを何でもできる、と書かれています。代償として、~TiddlyWikiのようなオープンソースプロジェクトには何の保証もありません。~TiddlyWikiに関わる悲劇的な状況の連鎖によってデータが失われたとしても、~TiddlyWikiの使用による損失や損害についてTiddlyWikiの貢献者を訴えることはできません + +プロジェクトへの関わりを明示することが求められていますが、そうする義務はありません + +誤解を避けるために付け加えておきますが、あなたが~TiddlyWikiの自分のコピー内に保存する情報はすべて、あなたのもののままです。~TiddlyWikiを使用してコンテンツを公開しても、そのコンテンツに対してあなたが持つ権利は変更されません \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/releasenotes/Releases.tid b/editions/ja-JP/tiddlers/releasenotes/Releases.tid new file mode 100644 index 0000000000..e6fcd31bc1 --- /dev/null +++ b/editions/ja-JP/tiddlers/releasenotes/Releases.tid @@ -0,0 +1,15 @@ +created: 20150419144523070 +modified: 20241226113315947 +original-modified: 20231005205612322 +tags: About +title: Releases +ja-title: リリース +type: text/vnd.tiddlywiki + +TiddlyWikiとTiddlyDesktopの新しいリリースは、[[公式ディスカッショングループ|Forums]]と[[Twitter|https://twitter.com/TiddlyWiki]]にて発表します + +TiddlyWikiの次のバージョンのプレリリースは、テストとレビューの目的で https://tiddlywiki.com/prerelease で見付けられます。 + +旧バージョンをダウンロードするには、[[TiddlyWikiアーカイブ|TiddlyWiki Archive]]を参照してください + +<> diff --git a/editions/ja-JP/tiddlers/roadmap/RoadMap.tid b/editions/ja-JP/tiddlers/roadmap/RoadMap.tid new file mode 100644 index 0000000000..1e5b6c547a --- /dev/null +++ b/editions/ja-JP/tiddlers/roadmap/RoadMap.tid @@ -0,0 +1,11 @@ +created: 20130823203800000 +modified: 20241226114145100 +original-modified: 2020051619421803 +tags: About +title: RoadMap +ja-title: ロードマップ +type: text/vnd.tiddlywiki + +TiddlyWiki 5は現在、多くの人々に信頼されている成熟した安定したプロジェクトです。同時に、開発者とユーザーの幅広いコミュニティのおかげで、さまざまな方向に急速に進化しています。この逆説的な状況が可能なのは、プロジェクトが下位互換性を厳密に維持し、既存の機能に加えて新しい機能を追加しているためです + +正式なロードマップはありませんが、検索と置換、リッチテキスト編集など、まだ完全に実装されていない領域がかなりあります。現在の作業は~GitHub(https://github.com/TiddlyWiki/TiddlyWiki5/)で確認できます \ No newline at end of file From 3c7999c3bb910c40975113b36a5d695363fc9e5b Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Fri, 3 Jan 2025 16:13:52 +0100 Subject: [PATCH 008/458] [DOCS] fix 7264 - improve mouseevent eventcatcher documentation (#8875) * [DOCS] fix 7264 - improve mouseevent eventcatcher documentation * Update EventCatcherWidget.tid --- editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid b/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid index 870f15c8a7..a253a0e6c3 100644 --- a/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid @@ -44,8 +44,8 @@ The following variables are made available to the actions: |!Variables |!Description | |`dom-*` |All DOM attributes of the node matching the given selector are made available as variables, with the prefix `dom-` | |`modifier` |The [[modifier Variable]] contains the Modifier Key held during the event (can be "normal", "ctrl", "shift", "alt" or combinations thereof) | -|`event-mousebutton` |The mouse button (if any) used to trigger the event (can be "left", "right" or "middle"). Note that not all event types support the mousebutton property | -|`event-type` |The type property of the JavaScript event | +|`event-mousebutton` |The mouse button (if any) used to trigger the event (can be "left", "right" or "middle"). Note that not all event types support the mousebutton property. <<.infoBox """This property only guarantees to indicate which buttons are pressed during events caused by pressing or releasing one or multiple buttons. As such, it is not reliable for events such as mouseenter, mouseleave, mouseover, mouseout, or mousemove. More details at: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button""">> | +|`event-type` |The type property of the JavaScript event. | |`event-detail-*` |Any properties in the detail attribute of the event are made available with the prefix `event-detail-` | |`tv-popup-coords` |A relative co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) | |`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) | From cc0c89836db4957a0dba5d50115c2806beeefabb Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Sat, 4 Jan 2025 13:24:02 +0100 Subject: [PATCH 009/458] [DOCS] Add class:multi-columns to References: Concepts and Definitions (#8877) --- editions/tw5.com/tiddlers/concepts/Concepts.tid | 4 ++-- editions/tw5.com/tiddlers/definitions/Definitions.tid | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/Concepts.tid b/editions/tw5.com/tiddlers/concepts/Concepts.tid index ec1556ac1f..e1ab831ac3 100644 --- a/editions/tw5.com/tiddlers/concepts/Concepts.tid +++ b/editions/tw5.com/tiddlers/concepts/Concepts.tid @@ -1,11 +1,11 @@ color: #FF8383 created: 20130825144700000 list: Cascades ColourPalettes Commands [[Current Tiddler]] DataTiddlers [[Date Fields]] DefaultTiddlers DictionaryTiddlers ExternalImages Filters [[Hard and Soft Links]] JSONTiddlers [[Keyboard Shortcut Tiddler]] Macros Messages Modules PermaLinks Plugins Pragma [[Railroad Diagrams]] ShadowTiddlers [[Story River]] SystemTags SystemTiddlers Tagging TemplateTiddlers TextReference TiddlerFields TiddlerLinks Tiddlers TiddlyWiki TiddlyWiki5 [[Title List]] [[Title Selection]] Transclusion Variables Widgets Wiki WikiText -modified: 20211201100624625 +modified: 20250104110643596 tags: Reference title: Concepts type: text/vnd.tiddlywiki These are the concepts underlying TiddlyWiki. Understanding how these ideas fit together is the key to getting the most from TiddlyWiki. -<> +<> diff --git a/editions/tw5.com/tiddlers/definitions/Definitions.tid b/editions/tw5.com/tiddlers/definitions/Definitions.tid index b60d21ab6c..8c85861c51 100644 --- a/editions/tw5.com/tiddlers/definitions/Definitions.tid +++ b/editions/tw5.com/tiddlers/definitions/Definitions.tid @@ -1,10 +1,10 @@ color: #7bb95d -created: 201308251451 -modified: 201308251451 -title: Definitions +created: 20130825145100000 +modified: 20250104111522881 tags: Reference +title: Definitions type: text/vnd.tiddlywiki These are definitions of technical words and phrases used in this documentation. (As distinct from the [[Concepts]] that make up TiddlyWiki itself). -<> +<> From 394e960add31f1ca48439d71ee34a8d10a68524b Mon Sep 17 00:00:00 2001 From: David Bovill Date: Sat, 4 Jan 2025 12:31:50 +0000 Subject: [PATCH 010/458] Signing CLA (#8876) --- licenses/cla-individual.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 37fe4e941f..3e1aa42077 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -600,4 +600,5 @@ John Robinette, @jrbntt, 2024/11/25 @DesignThinkerer, 2024/12/02 -Thomas E Tuoti, @well-noted, 2024/12/16 \ No newline at end of file +Thomas E Tuoti, @well-noted, 2024/12/16 +@opn, 2025/01/04 \ No newline at end of file From 743415922d1156fa4cb047c37495fb588a7b7841 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Sun, 5 Jan 2025 14:31:20 +0000 Subject: [PATCH 011/458] Sign CLA (#8878) --- licenses/cla-individual.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 3e1aa42077..6f16cad99e 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -601,4 +601,7 @@ John Robinette, @jrbntt, 2024/11/25 @DesignThinkerer, 2024/12/02 Thomas E Tuoti, @well-noted, 2024/12/16 -@opn, 2025/01/04 \ No newline at end of file + +@opn, 2025/01/04 + +J. Ryan Stinnett, @jryans, 2025/01/04 From f8a8f00f5234fe383c1e7a8701e166a31b589415 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sun, 5 Jan 2025 14:35:27 +0000 Subject: [PATCH 012/458] Update for 2025 --- core/copyright.tid | 2 +- license | 2 +- readme.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/copyright.tid b/core/copyright.tid index 3f52380cc2..233295ce23 100644 --- a/core/copyright.tid +++ b/core/copyright.tid @@ -4,7 +4,7 @@ type: text/plain TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright (c) 2004-2007, Jeremy Ruston -Copyright (c) 2007-2024, UnaMesa Association +Copyright (c) 2007-2025, UnaMesa Association All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/license b/license index f7513a6935..ea8133e69d 100644 --- a/license +++ b/license @@ -1,7 +1,7 @@ TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com) Copyright (c) 2004-2007, Jeremy Ruston -Copyright (c) 2007-2024, UnaMesa Association +Copyright (c) 2007-2025, UnaMesa Association All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/readme.md b/readme.md index dc105b05b7..14fda9f98c 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@

Google Groups

For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005): https://groups.google.com/group/TiddlyWiki

Developer Forums

GitHub Stats

There are several resources for developers to learn more about TiddlyWiki and to discuss and contribute to its development.

Twitter

Other Forums

Documentation

There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: https://groups.google.com/group/tiddlywikidocs

-


Installing TiddlyWiki on Node.js

TiddlyWiki is a SingleFileApplication, which is easy to use. For advanced users and developers there is a possibility to use a Node.js client / server configuration. This configuration is also used to build the TiddlyWiki SinglePageApplication

  1. Install Node.js
    • Linux:
      Debian/Ubuntu:
      apt install nodejs
      May need to be followed up by:
      apt install npm
      Arch Linux
      yay -S tiddlywiki
      (installs node and tiddlywiki)
    • Mac
      brew install node
    • Android
    • Other
  2. Open a command line terminal and type:
    npm install -g tiddlywiki
    If it fails with an error you may need to re-run the command as an administrator:
    sudo npm install -g tiddlywiki (Mac/Linux)
  3. Ensure TiddlyWiki is installed by typing:
    tiddlywiki --version
    • In response, you should see TiddlyWiki report its current version (eg "5.3.6". You may also see other debugging information reported.)
  4. Try it out:
    1. tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
    2. tiddlywiki mynewwiki --listen to start TiddlyWiki
    3. Visit http://127.0.0.1:8080/ in your browser
    4. Try editing and creating tiddlers
  5. Optionally, make an offline copy:
    • click the +


      Installing TiddlyWiki on Node.js

      TiddlyWiki is a SingleFileApplication, which is easy to use. For advanced users and developers there is a possibility to use a Node.js client / server configuration. This configuration is also used to build the TiddlyWiki SinglePageApplication

      1. Install Node.js
        • Linux:
          Debian/Ubuntu:
          apt install nodejs
          May need to be followed up by:
          apt install npm
          Arch Linux
          yay -S tiddlywiki
          (installs node and tiddlywiki)
        • Mac
          brew install node
        • Android
        • Other
      2. Open a command line terminal and type:
        npm install -g tiddlywiki
        If it fails with an error you may need to re-run the command as an administrator:
        sudo npm install -g tiddlywiki (Mac/Linux)
      3. Ensure TiddlyWiki is installed by typing:
        tiddlywiki --version
        • In response, you should see TiddlyWiki report its current version (eg "5.3.7-prerelease". You may also see other debugging information reported.)
      4. Try it out:
        1. tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
        2. tiddlywiki mynewwiki --listen to start TiddlyWiki
        3. Visit http://127.0.0.1:8080/ in your browser
        4. Try editing and creating tiddlers
      5. Optionally, make an offline copy:
        • click the From 4478f445a595f5405d7bd3b29744f836f306b453 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Tue, 7 Jan 2025 17:26:02 +0100 Subject: [PATCH 013/458] unusedtitle trim title if needed (#8882) --- core/modules/macros/unusedtitle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/macros/unusedtitle.js b/core/modules/macros/unusedtitle.js index 8a61c425e1..1078f650d4 100644 --- a/core/modules/macros/unusedtitle.js +++ b/core/modules/macros/unusedtitle.js @@ -31,7 +31,7 @@ exports.run = function(baseName,separator,template,startCount) { } // $tw.wiki.generateNewTitle = function(baseTitle,options) // options.prefix must be a string! - return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}); + return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}).trim(); }; })(); From e9fb63affc53fabe158408d3a269af959034797b Mon Sep 17 00:00:00 2001 From: Galen Huntington Date: Tue, 21 Jan 2025 06:43:36 -0800 Subject: [PATCH 014/458] Sign CLA. (#8899) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 6f16cad99e..e6c177766b 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -605,3 +605,5 @@ Thomas E Tuoti, @well-noted, 2024/12/16 @opn, 2025/01/04 J. Ryan Stinnett, @jryans, 2025/01/04 + +Galen Huntington, @galenhuntington, 2025/01/19 From 9aed6a52488e4081e4e092aa4c5de940538d9d1e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 23 Jan 2025 18:05:56 +0000 Subject: [PATCH 015/458] Update CI due to deprecation of actions/upload-artifact@v3 See https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/ --- .github/workflows/ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75c3bb8d32..ed16d707d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,12 +10,12 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-test.sh" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report @@ -30,8 +30,8 @@ jobs: TW5_BUILD_MAIN_EDITION: "./editions/prerelease" TW5_BUILD_OUTPUT: "./output/prerelease" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-pre-build.sh" @@ -62,8 +62,8 @@ jobs: TW5_BUILD_OUTPUT: "./output" TW5_BUILD_ARCHIVE: "./output" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-pre-build.sh" From b04af8bf7ae04dc371d9c29d4c69bea2b23a9557 Mon Sep 17 00:00:00 2001 From: Galen Huntington Date: Thu, 23 Jan 2025 10:18:02 -0800 Subject: [PATCH 016/458] Bug fix: TTF extension was wrong. update font types, add OTF type. (#8898) * Bug fix: TTF extension was wrong. * Update font MIME types throughout; add font/otf. --- boot/boot.js | 7 ++++--- plugins/tiddlywiki/katex/files/tiddlywiki.files | 4 ++-- themes/tiddlywiki/starlight/arvo.woff.meta | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index ab403aa5ae..7570dade57 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2467,9 +2467,10 @@ $tw.boot.initStartup = function(options) { $tw.utils.registerFileType("image/vnd.microsoft.icon","base64",".ico",{flags:["image"]}); $tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]}); $tw.utils.registerFileType("application/wasm","base64",".wasm"); - $tw.utils.registerFileType("application/font-woff","base64",".woff"); - $tw.utils.registerFileType("application/x-font-ttf","base64",".woff"); - $tw.utils.registerFileType("application/font-woff2","base64",".woff2"); + $tw.utils.registerFileType("font/woff","base64",".woff"); + $tw.utils.registerFileType("font/woff2","base64",".woff2"); + $tw.utils.registerFileType("font/ttf","base64",".ttf"); + $tw.utils.registerFileType("font/otf","base64",".otf"); $tw.utils.registerFileType("audio/ogg","base64",".ogg"); $tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]); $tw.utils.registerFileType("video/ogg","base64",[".ogm",".ogv",".ogg"]); diff --git a/plugins/tiddlywiki/katex/files/tiddlywiki.files b/plugins/tiddlywiki/katex/files/tiddlywiki.files index 6dd868a103..506a0f4482 100644 --- a/plugins/tiddlywiki/katex/files/tiddlywiki.files +++ b/plugins/tiddlywiki/katex/files/tiddlywiki.files @@ -6,7 +6,7 @@ "isTiddlerFile": false, "fields": { "title": {"source": "filename", "prefix": "$:/plugins/tiddlywiki/katex/fonts/"}, - "type": "application/font-woff" + "type": "font/woff" } } ], @@ -37,4 +37,4 @@ "suffix": "})(require);\n" } ] -} \ No newline at end of file +} diff --git a/themes/tiddlywiki/starlight/arvo.woff.meta b/themes/tiddlywiki/starlight/arvo.woff.meta index 19b089408b..97732f909e 100644 --- a/themes/tiddlywiki/starlight/arvo.woff.meta +++ b/themes/tiddlywiki/starlight/arvo.woff.meta @@ -1,2 +1,2 @@ title: $:/themes/tiddlywiki/starlight/arvo.woff -type: application/font-woff +type: font/woff From 903d0fb8e12c5ef361dc816da3fa9d464de91e6a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 23 Jan 2025 21:47:22 +0000 Subject: [PATCH 017/458] Update CI due to deprecation of actions/upload-artifact@v3 See https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/ --- .github/workflows/ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75c3bb8d32..ed16d707d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,12 +10,12 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-test.sh" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report @@ -30,8 +30,8 @@ jobs: TW5_BUILD_MAIN_EDITION: "./editions/prerelease" TW5_BUILD_OUTPUT: "./output/prerelease" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-pre-build.sh" @@ -62,8 +62,8 @@ jobs: TW5_BUILD_OUTPUT: "./output" TW5_BUILD_ARCHIVE: "./output" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: "${{ env.NODE_VERSION }}" - run: "./bin/ci-pre-build.sh" From 0219af604bd3450d68a1ca96250c28db24b117bb Mon Sep 17 00:00:00 2001 From: Rhys-T <108157737+Rhys-T@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:48:45 -0500 Subject: [PATCH 018/458] Sign the CLA (#8904) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index e6c177766b..f827a3f2be 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -607,3 +607,5 @@ Thomas E Tuoti, @well-noted, 2024/12/16 J. Ryan Stinnett, @jryans, 2025/01/04 Galen Huntington, @galenhuntington, 2025/01/19 + +@Rhys-T, 2025/01/23 From 94b325f41f778238fbbd550873723571801f43a4 Mon Sep 17 00:00:00 2001 From: Rhys-T <108157737+Rhys-T@users.noreply.github.com> Date: Sat, 25 Jan 2025 05:59:51 -0500 Subject: [PATCH 019/458] Fix: Don't set dirty flag when shadow tiddler changes (#8903) Adds `shadow` and `normal` flags to each entry in `changedTiddlers`, indicating whether the corresponding version of the tiddler has changed. Makes the saver handler ignore any changes that aren't flagged `normal`. Fixes #8902. --- core/modules/saver-handler.js | 6 ++++-- core/modules/startup/plugins.js | 2 +- core/modules/wiki.js | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/modules/saver-handler.js b/core/modules/saver-handler.js index 23056bcc2c..612613140e 100644 --- a/core/modules/saver-handler.js +++ b/core/modules/saver-handler.js @@ -46,8 +46,10 @@ function SaverHandler(options) { // Filter the changes so that we only count changes to tiddlers that we care about var filteredChanges = self.filterFn.call(self.wiki,function(iterator) { $tw.utils.each(changes,function(change,title) { - var tiddler = self.wiki.getTiddler(title); - iterator(tiddler,title); + if(change.normal) { + var tiddler = self.wiki.getTiddler(title); + iterator(tiddler,title); + } }); }); // Adjust the number of changes diff --git a/core/modules/startup/plugins.js b/core/modules/startup/plugins.js index fc8ba95894..af354c38e8 100644 --- a/core/modules/startup/plugins.js +++ b/core/modules/startup/plugins.js @@ -75,7 +75,7 @@ exports.startup = function() { $tw.wiki.unpackPluginTiddlers(); // Queue change events for the changed shadow tiddlers $tw.utils.each(Object.keys(changedShadowTiddlers),function(title) { - $tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]); + $tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title], true); }); } } diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 620f4eccfa..928a2e8470 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -141,12 +141,15 @@ This method should be called after the changes it describes have been made to th title: Title of tiddler isDeleted: defaults to false (meaning the tiddler has been created or modified), true if the tiddler has been deleted + isShadow: defaults to false (meaning the change applies to the normal tiddler), + true if the tiddler being changed is a shadow tiddler */ -exports.enqueueTiddlerEvent = function(title,isDeleted) { +exports.enqueueTiddlerEvent = function(title,isDeleted,isShadow) { // Record the touch in the list of changed tiddlers this.changedTiddlers = this.changedTiddlers || Object.create(null); this.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null); this.changedTiddlers[title][isDeleted ? "deleted" : "modified"] = true; + this.changedTiddlers[title][isShadow ? "shadow" : "normal"] = true; // Increment the change count this.changeCount = this.changeCount || Object.create(null); if($tw.utils.hop(this.changeCount,title)) { From f02c9ebba3a95117baa8e55220ab79e18d84edef Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Sun, 26 Jan 2025 13:25:01 +0100 Subject: [PATCH 020/458] feat: support for avif images (#8911) --- boot/boot.js | 1 + core/modules/parsers/imageparser.js | 1 + 2 files changed, 2 insertions(+) diff --git a/boot/boot.js b/boot/boot.js index 7570dade57..2efa58b1d1 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2463,6 +2463,7 @@ $tw.boot.initStartup = function(options) { $tw.utils.registerFileType("image/webp","base64",".webp",{flags:["image"]}); $tw.utils.registerFileType("image/heic","base64",".heic",{flags:["image"]}); $tw.utils.registerFileType("image/heif","base64",".heif",{flags:["image"]}); + $tw.utils.registerFileType("image/avif","base64",".avif",{flags:["image"]}); $tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]}); $tw.utils.registerFileType("image/vnd.microsoft.icon","base64",".ico",{flags:["image"]}); $tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]}); diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index a964a4ba8f..d594803b29 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -40,6 +40,7 @@ exports["image/gif"] = ImageParser; exports["image/webp"] = ImageParser; exports["image/heic"] = ImageParser; exports["image/heif"] = ImageParser; +exports["image/avif"] = ImageParser; exports["image/x-icon"] = ImageParser; exports["image/vnd.microsoft.icon"] = ImageParser; From 42c22acba629030e3a016cd4a758a3cb17ac453a Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Mon, 27 Jan 2025 12:00:07 +0100 Subject: [PATCH 021/458] Cleans up cruft from edit widget (#8897) * chore: cleanup cruft from edit widget * chore: cleanup cruft from edit widget * chore: cleanup cruft from edit widget --- core/modules/widgets/edit.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/core/modules/widgets/edit.js b/core/modules/widgets/edit.js index eb7758e908..e4433e1da0 100644 --- a/core/modules/widgets/edit.js +++ b/core/modules/widgets/edit.js @@ -43,15 +43,6 @@ EditWidget.prototype.execute = function() { // Get our parameters this.editTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); this.editField = this.getAttribute("field","text"); - this.editIndex = this.getAttribute("index"); - this.editClass = this.getAttribute("class"); - this.editPlaceholder = this.getAttribute("placeholder"); - this.editTabIndex = this.getAttribute("tabindex"); - this.editFocus = this.getAttribute("focus",""); - this.editCancelPopups = this.getAttribute("cancelPopups",""); - this.editInputActions = this.getAttribute("inputActions"); - this.editRefreshTitle = this.getAttribute("refreshTitle"); - this.editAutoComplete = this.getAttribute("autocomplete"); // Choose the appropriate edit widget this.editorType = this.getEditorType(); // Make the child widgets @@ -89,8 +80,8 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ EditWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - // Refresh if an attribute has changed, or the type associated with the target tiddler has changed - if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (this.getEditorType() !== this.editorType)) { + // Refresh if the editor type has changed + if(changedAttributes.tiddler || changedAttributes.field || (this.getEditorType() !== this.editorType)) { this.refreshSelf(); return true; } else { From b1843837ea2eecd26a8691d42517f447611bb31c Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Mon, 27 Jan 2025 12:00:26 +0100 Subject: [PATCH 022/458] Fixes unnecessary refresh in Genesis widget (#8895) * fix: handle attributes correctly in genesis widget * fix: handle attributes correctly in genesis widget --- core/modules/widgets/genesis.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/modules/widgets/genesis.js b/core/modules/widgets/genesis.js index 299be1e487..a527553ad2 100644 --- a/core/modules/widgets/genesis.js +++ b/core/modules/widgets/genesis.js @@ -23,15 +23,21 @@ Inherit from the base widget class */ GenesisWidget.prototype = new Widget(); +GenesisWidget.prototype.computeAttributes = function(options) { + options = options || Object.create(null); + options.filterFn = function(name) { + // Only compute our own attributes which start with a single dollar + return name.charAt(0) === "$" && name.charAt(1) !== "$"; + } + return Widget.prototype.computeAttributes.call(this,options); +}; + /* Render this widget into the DOM */ GenesisWidget.prototype.render = function(parent,nextSibling) { this.parentDomNode = parent; - this.computeAttributes({filterFn: function(name) { - // Only compute our own attributes which start with a single dollar - return name.charAt(0) === "$" && name.charAt(1) !== "$"; - }}); + this.computeAttributes(); this.execute(); this.renderChildren(parent,nextSibling); }; From 67e8670c73a944c4c9dab8bb101704878c6ff4cc Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Tue, 28 Jan 2025 00:45:26 +0800 Subject: [PATCH 023/458] Extend copy to clipborad function to support customized mime types (#8912) * Extend copy to clipborad function to support customized mime types * Remove function default parameter syntax * Add plainText option * Use plainText name * Set "text/plain" data only when it exists * Docs update * Docs update --- core/modules/startup/rootwidget.js | 5 +++-- core/modules/utils/dom/dom.js | 15 +++++++++++---- core/wiki/macros/copy-to-clipboard.tid | 18 ++++++++++-------- .../macros/copy-to-clipboard Macro.tid | 6 +++++- .../copy-to-clipboard Macro (Examples).tid | 10 ++++++++-- .../WidgetMessage_ tm-copy-to-clipboard.tid | 4 +++- 6 files changed, 40 insertions(+), 18 deletions(-) diff --git a/core/modules/startup/rootwidget.js b/core/modules/startup/rootwidget.js index d96d569c36..8496b48dfd 100644 --- a/core/modules/startup/rootwidget.js +++ b/core/modules/startup/rootwidget.js @@ -77,8 +77,9 @@ exports.startup = function() { $tw.rootWidget.addEventListener("tm-copy-to-clipboard",function(event) { $tw.utils.copyToClipboard(event.param,{ successNotification: event.paramObject && event.paramObject.successNotification, - failureNotification: event.paramObject && event.paramObject.failureNotification - }); + failureNotification: event.paramObject && event.paramObject.failureNotification, + plainText: event.paramObject && event.paramObject.plainText + },event.paramObject.type); }); // Install the tm-focus-selector message $tw.rootWidget.addEventListener("tm-focus-selector",function(event) { diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index 0b71e128c3..5f33bbeea9 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -268,9 +268,10 @@ exports.copyStyles = function(srcDomNode,dstDomNode) { /* Copy plain text to the clipboard on browsers that support it */ -exports.copyToClipboard = function(text,options) { - options = options || {}; - text = text || ""; +exports.copyToClipboard = function(text,options,type) { + var text = text || ""; + var options = options || {}; + var type = type || "text/plain"; var textArea = document.createElement("textarea"); textArea.style.position = "fixed"; textArea.style.top = 0; @@ -283,10 +284,16 @@ exports.copyToClipboard = function(text,options) { textArea.style.outline = "none"; textArea.style.boxShadow = "none"; textArea.style.background = "transparent"; - textArea.value = text; document.body.appendChild(textArea); textArea.select(); textArea.setSelectionRange(0,text.length); + textArea.addEventListener("copy",function(event) { + event.preventDefault(); + if (options.plainText) { + event.clipboardData.setData("text/plain",options.plainText); + } + event.clipboardData.setData(type,text); + }); var succeeded = false; try { succeeded = document.execCommand("copy"); diff --git a/core/wiki/macros/copy-to-clipboard.tid b/core/wiki/macros/copy-to-clipboard.tid index d05d014e2c..f299cf955d 100644 --- a/core/wiki/macros/copy-to-clipboard.tid +++ b/core/wiki/macros/copy-to-clipboard.tid @@ -3,9 +3,11 @@ tags: $:/tags/Macro \whitespace trim -\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style) -<$button message="tm-copy-to-clipboard" - param=<> +\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style,type:"text/plain",plain) +\procedure copy-to-clipboard-actions() +<$action-sendmessage $message="tm-copy-to-clipboard" $param=<> type=<> plainText=<>/> +\end copy-to-clipboard-actions +<$button actions=<> class=<> style=< -\end +\end copy-to-clipboard -\procedure copy-to-clipboard-above-right(src,class:"tc-btn-invisible",style) -
          -
          - <$macrocall $name="copy-to-clipboard" src=<> class=<> style=< - diff --git a/editions/translators/tiddlers/Extracting Translations.tid b/editions/translators/tiddlers/Extracting Translations.tid index 3fe559e10d..c29d7a40eb 100644 --- a/editions/translators/tiddlers/Extracting Translations.tid +++ b/editions/translators/tiddlers/Extracting Translations.tid @@ -12,7 +12,6 @@ Use this procedure if the language being submitted is not already present in the # Create the new language folder `languages/xx-XX` # Copy the language files into the language folder # Create a `plugin.info` file for the translation -# Create an appropriate flag image in `icon.tid` # Add the new language to tw5.com # Submit a pull request diff --git a/editions/tw5.com/tiddlers/images/external/tiddlywiki.files b/editions/tw5.com/tiddlers/images/external/tiddlywiki.files deleted file mode 100644 index 340199e41a..0000000000 --- a/editions/tw5.com/tiddlers/images/external/tiddlywiki.files +++ /dev/null @@ -1,202 +0,0 @@ -{ - "tiddlers": [ - { - "file": "../../../../../languages/ca-ES/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: ca-ES", - "language": "ca-ES", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/cs-CZ/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: cs-CZ", - "language": "cs-CZ", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/da-DK/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: da-DK", - "language": "da-DK", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/de-AT/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: de-AT", - "language": "de-AT", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/de-DE/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: de-DE", - "language": "de-DE", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/el-GR/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: el-GR", - "language": "el-GR", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/en-US/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: en-US", - "language": "en-US", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/es-ES/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: es-ES", - "language": "es-ES", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/fr-FR/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: fr-FR", - "language": "fr-FR", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/hi-IN/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: hi-IN", - "language": "hi-IN", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/ia-IA/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: ia-IA", - "language": "ia-IA", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/it-IT/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: it-IT", - "language": "it-IT", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/ja-JP/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: ja-JP", - "language": "ja-JP", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/ko-KR/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: ko-KR", - "language": "ko-KR", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/nl-NL/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: nl-NL", - "language": "nl-NL", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/pa-IN/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: pa-IN", - "language": "pa-IN", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/pt-PT/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: pt-PT", - "language": "pt-PT", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/ru-RU/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: ru-RU", - "language": "ru-RU", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/sk-SK/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: sk-SK", - "language": "sk-SK", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/sv-SE/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: sv-SE", - "language": "sv-SE", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/zh-Hans/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: zh-Hans", - "language": "zh-Hans", - "tags": "Language Icon" - } - }, - { - "file": "../../../../../languages/zh-Hant/icon.tid", - "isTiddlerFile": true, - "fields": { - "title": "Language Icon: zh-Hant", - "language": "zh-Hant", - "tags": "Language Icon" - } - } - ] -} diff --git a/editions/tw5.com/tiddlers/languages/LanguageGallery.tid b/editions/tw5.com/tiddlers/languages/LanguageGallery.tid deleted file mode 100644 index cdb9720956..0000000000 --- a/editions/tw5.com/tiddlers/languages/LanguageGallery.tid +++ /dev/null @@ -1,25 +0,0 @@ -created: 20151231083708980 -modified: 20211117212723856 -tags: Languages -title: LanguageGallery Example -type: text/vnd.tiddlywiki - -Here is an example of using the ListWidget and the TranscludeWidget to show a grid of all of Language Icons which are tiddlers [[tagged|Tagging]] <>and <> - - - diff --git a/languages/ar-PS/icon.tid b/languages/ar-PS/icon.tid deleted file mode 100644 index fecb187cde..0000000000 --- a/languages/ar-PS/icon.tid +++ /dev/null @@ -1,7 +0,0 @@ -created: 20200618172251289 -modified: 20200618172321223 -tags: -title: $:/languages/ar-PS/icon -type: image/svg+xml - - diff --git a/languages/ca-ES/icon.tid b/languages/ca-ES/icon.tid deleted file mode 100644 index 264124da32..0000000000 --- a/languages/ca-ES/icon.tid +++ /dev/null @@ -1,8 +0,0 @@ -title: $:/languages/ca-ES/icon -type: image/svg+xml - - - - - - \ No newline at end of file diff --git a/languages/cs-CZ/icon.tid b/languages/cs-CZ/icon.tid deleted file mode 100644 index 4246c25dbb..0000000000 --- a/languages/cs-CZ/icon.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/languages/cs-CZ/icon -type: image/svg+xml - - - - - - - diff --git a/languages/da-DK/icon.tid b/languages/da-DK/icon.tid deleted file mode 100644 index 955f38a94e..0000000000 --- a/languages/da-DK/icon.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/languages/da-DK/icon -type: image/svg+xml - - - - - - - diff --git a/languages/de-AT/icon.tid b/languages/de-AT/icon.tid deleted file mode 100644 index a0b4315b0e..0000000000 --- a/languages/de-AT/icon.tid +++ /dev/null @@ -1,8 +0,0 @@ -title: $:/languages/de-AT/icon -type: image/svg+xml - - - - - - \ No newline at end of file diff --git a/languages/de-DE/icon.tid b/languages/de-DE/icon.tid deleted file mode 100644 index 4847c1df00..0000000000 --- a/languages/de-DE/icon.tid +++ /dev/null @@ -1,12 +0,0 @@ -title: $:/languages/de-DE/icon -type: image/svg+xml - - - - - Flag of Germany - - - - diff --git a/languages/el-GR/icon.tid b/languages/el-GR/icon.tid deleted file mode 100644 index 787a5f6ade..0000000000 --- a/languages/el-GR/icon.tid +++ /dev/null @@ -1,8 +0,0 @@ -title: $:/languages/el-GR/icon -type: image/svg+xml - - - Flag of Greece - - - \ No newline at end of file diff --git a/languages/en-PH/icon.tid b/languages/en-PH/icon.tid deleted file mode 100644 index c664ed2f0e..0000000000 --- a/languages/en-PH/icon.tid +++ /dev/null @@ -1,21 +0,0 @@ -title: $:/languages/en-PH/icon -type: image/svg+xml - - - Flag of the Philippines - - - - - - - - - - - - - - - - diff --git a/languages/en-US/icon.tid b/languages/en-US/icon.tid deleted file mode 100644 index 78681f521c..0000000000 --- a/languages/en-US/icon.tid +++ /dev/null @@ -1,29 +0,0 @@ -title: $:/languages/en-US/icon -type: image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/languages/es-ES/icon.tid b/languages/es-ES/icon.tid deleted file mode 100644 index 092788da75..0000000000 --- a/languages/es-ES/icon.tid +++ /dev/null @@ -1,409 +0,0 @@ -title: $:/languages/es-ES/icon -type: image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/languages/fa-IR/icon.tid b/languages/fa-IR/icon.tid deleted file mode 100644 index 70e6056298..0000000000 --- a/languages/fa-IR/icon.tid +++ /dev/null @@ -1,14 +0,0 @@ -title: $:/languages/fa-IR/icon -type: image/svg+xml - - - - - - - - \ No newline at end of file diff --git a/languages/fr-FR/icon.tid b/languages/fr-FR/icon.tid deleted file mode 100644 index a7ec4d9d08..0000000000 --- a/languages/fr-FR/icon.tid +++ /dev/null @@ -1,5 +0,0 @@ -title: $:/languages/fr-FR/icon -type: image/svg+xml - - - diff --git a/languages/he-IL/icon.tid b/languages/he-IL/icon.tid deleted file mode 100644 index c18b4a1583..0000000000 --- a/languages/he-IL/icon.tid +++ /dev/null @@ -1,38 +0,0 @@ -title: $:/languages/he-IL/icon -type: image/svg+xml - - - - - Flag of Israel - - - - - - - - - - - - diff --git a/languages/hi-IN/icon.tid b/languages/hi-IN/icon.tid deleted file mode 100644 index 4db8115ff0..0000000000 --- a/languages/hi-IN/icon.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/languages/hi-IN/icon -type: image/svg+xml - - \ No newline at end of file diff --git a/languages/ia-IA/icon.tid b/languages/ia-IA/icon.tid deleted file mode 100644 index 72eff65ed3..0000000000 --- a/languages/ia-IA/icon.tid +++ /dev/null @@ -1,13 +0,0 @@ -title: $:/languages/ia-IA/icon -type: image/svg+xml - - - - - Interlingua Logo - Created with Sketch. - - - - - \ No newline at end of file diff --git a/languages/it-IT/icon.tid b/languages/it-IT/icon.tid deleted file mode 100644 index 157744a52c..0000000000 --- a/languages/it-IT/icon.tid +++ /dev/null @@ -1,32 +0,0 @@ -title: $:/languages/it-IT/icon -type: image/svg+xml - - - - - Bandiera della Repubblica Italiana PMS 20060414 - - - - - \ No newline at end of file diff --git a/languages/ja-JP/icon.tid b/languages/ja-JP/icon.tid deleted file mode 100644 index 56a7d6efbc..0000000000 --- a/languages/ja-JP/icon.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/languages/ja-JP/icon -type: image/svg+xml - - - - - - - \ No newline at end of file diff --git a/languages/ko-KR/icon.tid b/languages/ko-KR/icon.tid deleted file mode 100644 index 83eda52876..0000000000 --- a/languages/ko-KR/icon.tid +++ /dev/null @@ -1,15 +0,0 @@ -title: $:/languages/ko-KR/icon -type: image/svg+xml - - - -Flag of South Korea - - - - - - - - - \ No newline at end of file diff --git a/languages/mk-MK/icon.tid b/languages/mk-MK/icon.tid deleted file mode 100644 index 20525ace9a..0000000000 --- a/languages/mk-MK/icon.tid +++ /dev/null @@ -1,8 +0,0 @@ -title: $:/languages/mk-MK/icon -type: image/svg+xml - - - - - - diff --git a/languages/nl-NL/icon.tid b/languages/nl-NL/icon.tid deleted file mode 100644 index 9cb61ccea3..0000000000 --- a/languages/nl-NL/icon.tid +++ /dev/null @@ -1,9 +0,0 @@ -title: $:/languages/nl-NL/icon -type: image/svg+xml - - - - - - - \ No newline at end of file diff --git a/languages/pa-IN/icon.tid b/languages/pa-IN/icon.tid deleted file mode 100644 index 2efc09d0fe..0000000000 --- a/languages/pa-IN/icon.tid +++ /dev/null @@ -1,4 +0,0 @@ -title: $:/languages/pa-IN/icon -type: image/svg+xml - - \ No newline at end of file diff --git a/languages/pl-PL/icon.tid b/languages/pl-PL/icon.tid deleted file mode 100644 index 0cecbb24a8..0000000000 --- a/languages/pl-PL/icon.tid +++ /dev/null @@ -1,7 +0,0 @@ -title: $:/languages/pl-PL/icon -type: image/svg+xml - - - - - \ No newline at end of file diff --git a/languages/pt-BR/icon.tid b/languages/pt-BR/icon.tid deleted file mode 100644 index 28daecd9ca..0000000000 --- a/languages/pt-BR/icon.tid +++ /dev/null @@ -1,54 +0,0 @@ -title: $:/languages/pt-BR/icon -type: image/svg+xml - - -image/svg+xml \ No newline at end of file diff --git a/languages/pt-PT/icon.tid b/languages/pt-PT/icon.tid deleted file mode 100644 index 8c15895135..0000000000 --- a/languages/pt-PT/icon.tid +++ /dev/null @@ -1,70 +0,0 @@ -title: $:/languages/pt-PT/icon -type: image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/languages/ru-RU/icon.tid b/languages/ru-RU/icon.tid deleted file mode 100644 index 3ea67a7b2a..0000000000 --- a/languages/ru-RU/icon.tid +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/languages/ru-RU/icon -type: image/svg+xml - - - - - - - - \ No newline at end of file diff --git a/languages/sk-SK/icon.tid b/languages/sk-SK/icon.tid deleted file mode 100644 index 626942b82b..0000000000 --- a/languages/sk-SK/icon.tid +++ /dev/null @@ -1,17 +0,0 @@ -title: $:/languages/sk-SK/icon -type: image/svg+xml - - - -Flag of Slovakia - - - - - - - - - - - \ No newline at end of file diff --git a/languages/sl-SI/icon.tid b/languages/sl-SI/icon.tid deleted file mode 100644 index b3b8d0584f..0000000000 --- a/languages/sl-SI/icon.tid +++ /dev/null @@ -1,28 +0,0 @@ -title: $:/languages/sl-SI/icon -type: image/svg+xml - - - - - Flag of Slovenia - - - - - - - - - - - - - - - - - - - - - diff --git a/languages/sv-SE/icon.tid b/languages/sv-SE/icon.tid deleted file mode 100755 index e8e16a6aee..0000000000 --- a/languages/sv-SE/icon.tid +++ /dev/null @@ -1,8 +0,0 @@ -title: $:/languages/sv-SE/icon -type: image/svg+xml - - - - - - \ No newline at end of file diff --git a/languages/zh-CN/icon.tid b/languages/zh-CN/icon.tid deleted file mode 100644 index 29cb7b9f1a..0000000000 --- a/languages/zh-CN/icon.tid +++ /dev/null @@ -1,18 +0,0 @@ -title: $:/languages/zh-CN/icon -type: image/svg+xml - - - - -Flag of the People's Republic of China - - - - - - - - - - diff --git a/languages/zh-HK/icon.tid b/languages/zh-HK/icon.tid deleted file mode 100644 index 38c8ff0961..0000000000 --- a/languages/zh-HK/icon.tid +++ /dev/null @@ -1,16 +0,0 @@ -title: $:/languages/zh-HK/icon -type: image/svg+xml - - - - - - - - - - - - - - \ No newline at end of file diff --git a/languages/zh-Hans/icon.tid b/languages/zh-Hans/icon.tid deleted file mode 100644 index ba8400636f..0000000000 --- a/languages/zh-Hans/icon.tid +++ /dev/null @@ -1,18 +0,0 @@ -title: $:/languages/zh-Hans/icon -type: image/svg+xml - - - - -Flag of the People's Republic of China - - - - - - - - - - diff --git a/languages/zh-Hant/icon.tid b/languages/zh-Hant/icon.tid deleted file mode 100644 index 97c8f6ab4a..0000000000 --- a/languages/zh-Hant/icon.tid +++ /dev/null @@ -1,14 +0,0 @@ -title: $:/languages/zh-Hant/icon -type: image/svg+xml - - - - - - - - - - - - \ No newline at end of file diff --git a/languages/zh-TW/icon.tid b/languages/zh-TW/icon.tid deleted file mode 100644 index 5db3cae30c..0000000000 --- a/languages/zh-TW/icon.tid +++ /dev/null @@ -1,14 +0,0 @@ -title: $:/languages/zh-TW/icon -type: image/svg+xml - - - - - - - - - - - - \ No newline at end of file From 0f79f88f5897296de67148ee0bba0416fa8af607 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 24 Feb 2025 21:49:48 +0100 Subject: [PATCH 049/458] Fix problem toc-selective-expandable (#8959) fix problem toc-selective-expandable --- core/wiki/macros/toc.tid | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 2bbc4f6fcc..4238c3a46e 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -1,7 +1,6 @@ title: $:/core/macros/toc tags: $:/tags/Macro - \define toc-open-icon() $:/core/images/down-arrow \define toc-closed-icon() $:/core/images/right-arrow @@ -121,7 +120,7 @@ tags: $:/tags/Macro <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item" >
        • >> <$link to={{{ [get[target]else] }}}> - <$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}"> + <$list filter="[all[current]tagging[]$sort$] -[subfilter<__exclude__>] +[limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}"> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> @@ -148,7 +147,7 @@ tags: $:/tags/Macro <$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix] }}}> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
        • >> - <$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="""<$button class="tc-btn-invisible">{{$:/core/images/blank}}<>"""> + <$list filter="[all[current]tagging[]$sort$] -[subfilter<__exclude__>] +[limit[1]]" variable="ignore" emptyMessage="""<$button class="tc-btn-invisible">{{$:/core/images/blank}}<>"""> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> From 378b9b3627cab368ed216cf5eb856370cfb4b9b0 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Thu, 27 Feb 2025 19:00:58 +0800 Subject: [PATCH 050/458] Allow building external core version of main site (#8953) --- bin/build-site.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/build-site.sh b/bin/build-site.sh index f1fe649e75..066d13d1ff 100755 --- a/bin/build-site.sh +++ b/bin/build-site.sh @@ -105,6 +105,7 @@ node $TW5_BUILD_TIDDLYWIKI \ fi # /index.html Main site +# /external-(version).html External core version of main site # /favicon.ico Favicon for main site # /static.html Static rendering of default tiddlers # /alltiddlers.html Static rendering of all tiddlers @@ -117,7 +118,7 @@ node $TW5_BUILD_TIDDLYWIKI \ --version \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --build favicon static index \ + --build favicon static index external-js \ || exit 1 # /empty.html Empty From 0dda07e3f194f344af7665b6d7fb7fca8970bccb Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Thu, 27 Feb 2025 13:02:43 -0500 Subject: [PATCH 051/458] Fix for #5930: missing tiddlers with checkbox indexes (#8964) --- core/modules/widgets/checkbox.js | 2 +- .../tiddlers/tests/test-checkbox-widget.js | 28 +++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index bf0a7bb796..9d3a074148 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -157,7 +157,7 @@ CheckboxWidget.prototype.getValue = function() { if(this.checkboxTag) { return false; } - if(this.checkboxField) { + if(this.checkboxField || this.checkboxIndex) { if(this.checkboxDefault === this.checkboxChecked) { return true; } diff --git a/editions/test/tiddlers/tests/test-checkbox-widget.js b/editions/test/tiddlers/tests/test-checkbox-widget.js index f42a269a9a..936f693382 100644 --- a/editions/test/tiddlers/tests/test-checkbox-widget.js +++ b/editions/test/tiddlers/tests/test-checkbox-widget.js @@ -78,6 +78,13 @@ Tests the checkbox widget thoroughly. startsOutChecked: false, expectedChange: { "TiddlerOne": { expand: "yes" } } }, + { + testName: "field mode default when missing -> true", + tiddlers: [], + widgetText: "<$checkbox tiddler='TiddlerOne' field='expand' default='yes' checked='yes' unchecked='no' />", + startsOutChecked: true, + expectedChange: { "TiddlerOne": { expand: "no" } } + }, { testName: "field mode indeterminate -> true", tiddlers: [{title: "TiddlerOne", text: "Jolly Old World", expand: "some other value"}], @@ -98,19 +105,28 @@ Tests the checkbox widget thoroughly. var indexModeTests = fieldModeTests.map(data => { var newData = {...data}; var newName = data.testName.replace('field mode', 'index mode'); + var tiddlerOneAlreadyExists = false; var newTiddlers = data.tiddlers.map(tiddler => { + if(tiddler.title === "TiddlerOne") { + tiddlerOneAlreadyExists = true; + } return {title: tiddler.title, type: "application/x-tiddler-dictionary", text: `one: a\nexpand: ${tiddler.expand}\ntwo: b`} }); var newWidgetText = data.widgetText.replace("field='expand'", "index='expand'"); var newChange = {}; for (var key of Object.keys(data.expectedChange)) { var oldChange = data.expectedChange[key]; - if (oldChange.expand) { - newChange[key] = { text: `one: a\nexpand: ${oldChange.expand}\ntwo: b` } + var text; + if (!tiddlerOneAlreadyExists) { + // If it wasn't there, the created one will be JSON + text = `{\n "expand": "${oldChange.expand}"\n}`; + } else if (oldChange.expand) { + text = `one: a\nexpand: ${oldChange.expand}\ntwo: b`; } else { // In index tiddlers, the "expand" field gets completely removed, not turned into "expand: (undefined)" - newChange[key] = { text: `one: a\ntwo: b` } + text = `one: a\ntwo: b`; } + newChange[key] = { text: text }; } newData.testName = newName; newData.tiddlers = newTiddlers; @@ -514,7 +530,9 @@ Tests the checkbox widget thoroughly. /* * Checkbox widget tests using the test data above */ - for (var data of checkboxTestData) { + // MAKE SURE TO USE $tw.utils.each HERE!!! + // If you use a forloop, the closure of the tests will all use the last value "data" was assigned to, and thus all run the same test. + $tw.utils.each(checkboxTestData, function(data) { it('checkbox widget test: ' + data.testName, function() { // Setup @@ -553,7 +571,7 @@ Tests the checkbox widget thoroughly. } } }) - } + }); }); From 4822919aa40e8c41da7bc4479ef095976bd97b95 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 3 Mar 2025 18:11:16 +0100 Subject: [PATCH 052/458] fix .median sort function (#8971) --- core/modules/filters/math.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/filters/math.js b/core/modules/filters/math.js index ed8e5eed63..6b1d45f088 100644 --- a/core/modules/filters/math.js +++ b/core/modules/filters/math.js @@ -128,7 +128,7 @@ exports.minall = makeNumericReducingOperator( exports.median = makeNumericArrayOperator( function(values) { var len = values.length, median; - values.sort(); + values.sort(function(a,b) {return a-b}); if(len % 2) { // Odd, return the middle number median = values[(len - 1) / 2]; From 81d8d678002c37f4ed3aa97948f21d2fcfa45e7d Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Tue, 4 Mar 2025 01:59:23 +0800 Subject: [PATCH 053/458] Update docs for plugin versions (#8968) * Update docs for plugin versions Update docs for share plugin. Add docs for Tour and Geospatial plugin. * Do not change modified field for some tiddlers --- .../tiddlers/plugins/Dynaview Plugin.tid | 2 +- .../tiddlers/plugins/Geospatial Plugin.tid | 17 +++++++++++++++++ .../tiddlers/plugins/Innerwiki Plugin.tid | 2 +- .../tw5.com/tiddlers/plugins/Share Plugin.tid | 6 ++++-- .../tw5.com/tiddlers/plugins/Tour Plugin.tid | 9 +++++++++ 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 editions/tw5.com/tiddlers/plugins/Geospatial Plugin.tid create mode 100644 editions/tw5.com/tiddlers/plugins/Tour Plugin.tid diff --git a/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid b/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid index a37dd0d0e0..0ab6bd536e 100644 --- a/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Dynaview Plugin.tid @@ -1,6 +1,6 @@ created: 20180111122953142 modified: 20181113084151268 -tags: OfficialPlugins +tags: OfficialPlugins [[Plugin Editions]] title: Dynaview Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/Geospatial Plugin.tid b/editions/tw5.com/tiddlers/plugins/Geospatial Plugin.tid new file mode 100644 index 0000000000..a9df92a7ed --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Geospatial Plugin.tid @@ -0,0 +1,17 @@ +created: 20250302053159467 +modified: 20250302053316068 +tags: OfficialPlugins [[Plugin Editions]] +title: Geospatial Plugin +type: text/vnd.tiddlywiki + +The Geospatial Plugin adds new primitives to the TiddlyWiki platform to enable non-developers to build sophisticated interactive geospatial applications. + +It incorporates a number of third party libraries and online services: + +* [[Leaflet.js|https://leafletjs.com/]], an open source library to display interactive maps +* [[Turf.js|https://turfjs.org/]], an open source library to perform geospatial calculations with [[GeoJSON|https://en.wikipedia.org/wiki/GeoJSON]] objects +* [[TravelTime|https://traveltime.com/]], a commercial API for [[geocoding|https://traveltime.com/features/geocoding]], [[routing|https://traveltime.com/features/multi-modal-routing]] and [[isochrones|https://traveltime.com/features/isochrones]] +* [[Flickr|https://www.flickr.com/services/api/]], a free API for retrieving geotagged photographs +* [[OpenLocationCode|https://github.com/google/open-location-code]], Google's open source library for converting to and from Open Location Codes (also known as [[PlusCodes|https://maps.google.com/pluscodes/]]) + +Try it out at https://tiddlywiki.com/plugins/tiddlywiki/geospatial/ \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/Innerwiki Plugin.tid b/editions/tw5.com/tiddlers/plugins/Innerwiki Plugin.tid index 11779f5350..39ce68c25f 100644 --- a/editions/tw5.com/tiddlers/plugins/Innerwiki Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Innerwiki Plugin.tid @@ -1,6 +1,6 @@ created: 20190127104143725 modified: 20190127104143725 -tags: OfficialPlugins +tags: OfficialPlugins [[Plugin Editions]] title: Innerwiki Plugin type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/plugins/Share Plugin.tid b/editions/tw5.com/tiddlers/plugins/Share Plugin.tid index f905065480..0bf35b8f34 100644 --- a/editions/tw5.com/tiddlers/plugins/Share Plugin.tid +++ b/editions/tw5.com/tiddlers/plugins/Share Plugin.tid @@ -1,6 +1,6 @@ created: 20201228143125000 -modified: 20201228143125000 -tags: OfficialPlugins +modified: 20250302051857380 +tags: OfficialPlugins [[Plugin Editions]] title: Share Plugin type: text/vnd.tiddlywiki @@ -10,3 +10,5 @@ This experimental plugin provides tools to share tiddlers via URLs, comprising: * The ability to load a group of tiddlers from the browser location hash at startup * Wizard and templates to create URLs from group of tiddlers + +See the demo at [ext[https://tiddlywiki.com/share|share]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/plugins/Tour Plugin.tid b/editions/tw5.com/tiddlers/plugins/Tour Plugin.tid new file mode 100644 index 0000000000..84f8fa9bd9 --- /dev/null +++ b/editions/tw5.com/tiddlers/plugins/Tour Plugin.tid @@ -0,0 +1,9 @@ +created: 20250302052635425 +modified: 20250302052905312 +tags: OfficialPlugins [[Plugin Editions]] +title: Tour Plugin +type: text/vnd.tiddlywiki + +The tour plugin allows interactive learning tours to be created and presented in TiddlyWiki. + +The demo TiddlyWiki interactive tour can be seen at https://tiddlywiki.com/tour \ No newline at end of file From 9c0fff268c059112d1bafbaacd94aeb8feda45d0 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 3 Mar 2025 19:00:39 +0100 Subject: [PATCH 054/458] [DOCS] make Filter Operators initial filter run assumption more visible (#8969) --- editions/tw5.com/tiddlers/filters/Filter Operators.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/Filter Operators.tid b/editions/tw5.com/tiddlers/filters/Filter Operators.tid index 35d80607f9..63d0e318b7 100644 --- a/editions/tw5.com/tiddlers/filters/Filter Operators.tid +++ b/editions/tw5.com/tiddlers/filters/Filter Operators.tid @@ -1,6 +1,6 @@ breadcrumbs: [[Filter Step]] created: 20140410103123179 -modified: 20230410114132501 +modified: 20250302200615061 tags: Filters title: Filter Operators type: text/vnd.tiddlywiki @@ -21,7 +21,7 @@ type: text/vnd.tiddlywiki A <<.def "filter operator">> is a predefined keyword attached to an individual step of a [[filter|Filters]]. It defines the particular action of that step. -''Important:'' In general, each first [[filter step|Filter Step]] of a [[filter run|Filter Run]] not given any input titles receives the output of <$link to="all Operator">[all[tiddlers]] as its input. +<<.tip """In general, each first [[filter step|Filter Step]] of a [[filter run|Filter Run]] not given any input titles receives the output of <$link to="all Operator">''[all[tiddlers]]'' as its input.""" title:"Important">> ''Table legend:'' From c25d6c11da91b96705892735d9d6909f29982612 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 6 Mar 2025 21:20:37 +0000 Subject: [PATCH 055/458] Update release note --- .../prerelease/tiddlers/Release 5.3.7.tid | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.3.7.tid b/editions/prerelease/tiddlers/Release 5.3.7.tid index 3128087048..1644c93000 100644 --- a/editions/prerelease/tiddlers/Release 5.3.7.tid +++ b/editions/prerelease/tiddlers/Release 5.3.7.tid @@ -15,6 +15,7 @@ description: Under development * French * German +* Japanese ! Plugin Improvements @@ -31,7 +32,8 @@ description: Under development * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8783"> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/commit/028c80782d105beb90f5d58a7f22e865c7e8c6f4">>) [[Hidden Setting: Default Type for Missing Tiddlers]] * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8661">> DiffTextWidget colours to several core palettes -* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8807">> Flexoki palette with additional colours +* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8807">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8911">>) Flexoki palette with additional colours +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8837">> [[incorrect|https://localizejs.com/articles/why-using-flag-icons-can-confuse-your-users/]] use of national flags to represent languages ! Hackability Improvements @@ -40,11 +42,29 @@ description: Under development * <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8816">> 'disabled' attribute to SelectWidget and BrowseWidget * <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8819">> 'tabindex' attribute to BrowseWidget, RangeWidget, CheckboxWidget and RadioWidget * <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8821">> the editor link dropdown to use newer syntax +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8911">> support for images in AVIF format +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8912">> support for custom MIME types to the [[WidgetMessage: tm-copy-to-clipboard]] ! Bug Fixes * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8800">> problem with overwriting shadow tiddlers from plugins that do not have a `plugin-priority` field * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8831">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8835">>) problem with switching language not correctly updating the `lang` attribute of the root `` element +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8842">> bug with refreshing ExternalImages with a `_canonical_uri` field +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8882">> [[unusedtitle Macro]] to trim whitespace from the generated title +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8898">> file extensions and MIME types for font files +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8903">> bug where the wiki would be marked as dirty when a shadow tiddler is changed +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8895">> unnecessary refresh with GenesisWidget +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/d4bc3fcd998902c17cd6bcefdc8d380e5c224458">> [[WidgetMessage: tm-http-request]] to pass custom variables to the progress actions +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8930">> FillWidget to no longer display its content +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8921">> inconsistent whitespace in page toolbar "More" dropdown +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8931">> RSOD with [[contains Operator]] if created field is accessed +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8881">> incorrect .html file extension of exported tiddlers on Android +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8951">> Arabic text using sans-serif font by adding "system-ui" to default font family +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8955">> refresh problem with "save" button +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8721">> [[list-tagged-draggable Macro]] to use the "caption" field if available +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8959">> problem with missing expandable arrow in [[toc-selective-expandable|Table-of-Contents Macros]] +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/5930">> the default value does not working for the CheckboxWidget if it is bound to an index in a data tiddler +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8970">> [[median Operator]] to order values as numbers, not strings ! Node.js Improvements @@ -60,12 +80,19 @@ description: Under development <<.contributors """ DesignThinkerer +flibbles +galenhuntington IchijikuIchigo +jeremyredhead jrbntt +jryans Leilei332 linonetwo michaeljmcd +opn pmario +Rhys-T +saqimtiaz well-noted xcazin """>> From 636dae6c586455ef080bff5de45fdf9a79cea515 Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Thu, 6 Mar 2025 16:28:39 -0500 Subject: [PATCH 056/458] Fixed RSoD error with moduleproperty filter operator (#8958) * Fixed RSoD error with moduleproperty filter operator * No RSoD when getting non-string objects as well --- core/modules/filters/moduleproperty.js | 13 ++++++++++--- editions/test/tiddlers/tests/test-filters.js | 10 ++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/core/modules/filters/moduleproperty.js b/core/modules/filters/moduleproperty.js index 8f3559b094..2aa0e6a0ca 100644 --- a/core/modules/filters/moduleproperty.js +++ b/core/modules/filters/moduleproperty.js @@ -18,9 +18,16 @@ Export our filter function exports.moduleproperty = function(source,operator,options) { var results = []; source(function(tiddler,title) { - var value = require(title)[operator.operand || ""]; - if(value !== undefined) { - results.push(value); + try { + var value = require(title)[operator.operand || ""]; + if(value !== undefined) { + if(typeof value !== "string") { + value = JSON.stringify(value); + } + results.push(value); + } + } catch(e) { + // Do nothing. It probably wasn't a module. } }); results.sort(); diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 727f64ca4f..5626db4f8d 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -1134,6 +1134,16 @@ Tests the filtering mechanism. expect(wiki.filterTiddlers("[[<>:\"/\\|?*]encodeuricomponent[]]").join(",")).toBe("%3C%3E%3A%22%2F%5C%7C%3F%2A"); }); + it("should handle the moduleproperty operator", function() { + // We don't need to confirm them all, only it it finds at least one module name that we're sure is there. + expect(wiki.filterTiddlers("[[macro]modules[]moduleproperty[name]]")).toContain("qualify"); + // No such property. Nothing to return. + expect(wiki.filterTiddlers("[[macro]modules[]moduleproperty[nonexistent]]").length).toBe(0); + // No such tiddlers. Nothing to return. + expect(wiki.filterTiddlers("[[nonexistent]moduleproperty[name]]").length).toBe(0); + // Non string properties should get toStringed. + expect(wiki.filterTiddlers("[[$:/core/modules/commands/init.js]moduleproperty[info]]").join(" ")).toBe('{"name":"init","synchronous":true}'); + }); } }); From c3695765ad8b3e46b4dcc89496a2daa331215a81 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 6 Mar 2025 21:29:21 +0000 Subject: [PATCH 057/458] Move execution of startup actions after initialisation of the language switcher (#8950) Fixes #8946 --- core/modules/startup/startup.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index b971e473b5..4013a37ee4 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -67,14 +67,6 @@ exports.startup = function() { wiki: $tw.wiki, document: $tw.browser ? document : $tw.fakeDocument }); - // Execute any startup actions - $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction"); - if($tw.browser) { - $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction/Browser"); - } - if($tw.node) { - $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction/Node"); - } // Kick off the language manager and switcher $tw.language = new $tw.Language(); $tw.languageSwitcher = new $tw.PluginSwitcher({ @@ -117,6 +109,14 @@ exports.startup = function() { handlerMethod: "handleKeydownEvent" }]); } + // Execute any startup actions + $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction"); + if($tw.browser) { + $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction/Browser"); + } + if($tw.node) { + $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction/Node"); + } // Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup $tw.wiki.clearTiddlerEventQueue(); // Find a working syncadaptor From c5b465ec99dc24d67d73f9e9a0802976b7521e25 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Tue, 11 Mar 2025 01:28:55 +0800 Subject: [PATCH 058/458] Make plugin editions use external core (#8952) * Make some editions use external core * Revert tw5.com-docs use external js * Revert "Revert tw5.com-docs use external js" This reverts commit 93f36cb0af735b2d0c906c7422648beb37e2a9bf. --- bin/build-site.sh | 24 +++++++++---------- .../classicparserdemo/tiddlers/$__coreURL.tid | 4 ++++ editions/classicparserdemo/tiddlywiki.info | 5 +++- .../codemirrordemo/tiddlers/$__coreURL.tid | 4 ++++ editions/codemirrordemo/tiddlywiki.info | 5 +++- editions/dynaviewdemo/tiddlers/$__coreURL.tid | 4 ++++ editions/dynaviewdemo/tiddlywiki.info | 5 +++- .../geospatialdemo/tiddlers/$__coreURL.tid | 4 ++++ editions/geospatialdemo/tiddlywiki.info | 5 +++- .../highlightdemo/tiddlers/$__coreURL.tid | 4 ++++ editions/highlightdemo/tiddlywiki.info | 5 +++- .../tiddlers/system/$__coreURL.tid | 4 ++++ editions/innerwikidemo/tiddlywiki.info | 3 +++ editions/katexdemo/tiddlers/$__coreURL.tid | 4 ++++ editions/katexdemo/tiddlywiki.info | 5 +++- editions/markdowndemo/tiddlers/$__coreURL.tid | 4 ++++ editions/markdowndemo/tiddlywiki.info | 5 +++- .../tiddlers/system/$__coreURL.tid | 4 ++++ editions/text-slicer/tiddlywiki.info | 3 +++ editions/tour/tiddlers/System/$__coreURL.tid | 4 ++++ editions/tw5.com-docs/tiddlers/$__coreURL.tid | 4 ++++ editions/tw5.com-docs/tiddlywiki.info | 5 +++- editions/xlsx-utils/tiddlers/$__coreURL.tid | 4 ++++ editions/xlsx-utils/tiddlywiki.info | 5 +++- 24 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 editions/classicparserdemo/tiddlers/$__coreURL.tid create mode 100644 editions/codemirrordemo/tiddlers/$__coreURL.tid create mode 100644 editions/dynaviewdemo/tiddlers/$__coreURL.tid create mode 100644 editions/geospatialdemo/tiddlers/$__coreURL.tid create mode 100644 editions/highlightdemo/tiddlers/$__coreURL.tid create mode 100644 editions/innerwikidemo/tiddlers/system/$__coreURL.tid create mode 100644 editions/katexdemo/tiddlers/$__coreURL.tid create mode 100644 editions/markdowndemo/tiddlers/$__coreURL.tid create mode 100644 editions/text-slicer/tiddlers/system/$__coreURL.tid create mode 100644 editions/tour/tiddlers/System/$__coreURL.tid create mode 100644 editions/tw5.com-docs/tiddlers/$__coreURL.tid create mode 100644 editions/xlsx-utils/tiddlers/$__coreURL.tid diff --git a/bin/build-site.sh b/bin/build-site.sh index 066d13d1ff..057f76b8d6 100755 --- a/bin/build-site.sh +++ b/bin/build-site.sh @@ -156,7 +156,7 @@ node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \ ./editions/tour \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all tour.html text/plain \ + --rendertiddler $:/core/save/all-external-js tour.html text/plain \ || exit 1 # /share.html Custom edition for sharing via the URL @@ -195,7 +195,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/xlsx-utils \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \ - --build index \ + --build external \ || exit 1 # /editions/resumebuilder/index.html Resume builder edition @@ -211,7 +211,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/text-slicer \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT/editions/text-slicer/ \ - --build index \ + --build external \ || exit 1 # /editions/translators/index.html Translators edition @@ -243,7 +243,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/tw5.com-docs \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \ - --build index \ + --build external \ || exit 1 # /editions/twitter-archivist/index.html Twitter Archivist edition @@ -266,7 +266,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/innerwikidemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/innerwiki/index.html text/plain \ || exit 1 # /plugins/tiddlywiki/dynaview/index.html Demo wiki with DynaView plugin @@ -276,7 +276,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/dynaviewdemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/dynaview/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/dynaview/empty.html text/plain \ || exit 1 @@ -290,7 +290,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/katexdemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/katex/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/katex/empty.html text/plain \ || exit 1 @@ -320,7 +320,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/codemirrordemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/codemirror/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/codemirror/empty.html text/plain \ || exit 1 @@ -330,7 +330,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/markdowndemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/markdown/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/markdown/empty.html text/plain \ || exit 1 @@ -340,7 +340,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/classicparserdemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/tw2parser/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/tw2parser/empty.html text/plain \ || exit 1 @@ -350,7 +350,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/highlightdemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/highlight/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/highlight/empty.html text/plain \ || exit 1 @@ -360,7 +360,7 @@ node $TW5_BUILD_TIDDLYWIKI \ ./editions/geospatialdemo \ --load $TW5_BUILD_OUTPUT/build.tid \ --output $TW5_BUILD_OUTPUT \ - --rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \ + --rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/geospatial/index.html text/plain \ --rendertiddler $:/core/save/empty plugins/tiddlywiki/geospatial/empty.html text/plain \ || exit 1 diff --git a/editions/classicparserdemo/tiddlers/$__coreURL.tid b/editions/classicparserdemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/classicparserdemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/classicparserdemo/tiddlywiki.info b/editions/classicparserdemo/tiddlywiki.info index 44d5993c57..3a443c4ce8 100644 --- a/editions/classicparserdemo/tiddlywiki.info +++ b/editions/classicparserdemo/tiddlywiki.info @@ -11,6 +11,9 @@ ], "build": { "index": [ - "--rendertiddler","$:/core/save/all","classicparserdemo.html","text/plain"] + "--rendertiddler","$:/core/save/all","classicparserdemo.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","classicparserdemo.html","text/plain" + ] } } diff --git a/editions/codemirrordemo/tiddlers/$__coreURL.tid b/editions/codemirrordemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/codemirrordemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/codemirrordemo/tiddlywiki.info b/editions/codemirrordemo/tiddlywiki.info index 7baa8f5a08..ef71f55c9a 100644 --- a/editions/codemirrordemo/tiddlywiki.info +++ b/editions/codemirrordemo/tiddlywiki.info @@ -22,6 +22,9 @@ ], "build": { "index": [ - "--rendertiddler","$:/core/save/all","codemirrordemo.html","text/plain"] + "--rendertiddler","$:/core/save/all","codemirrordemo.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","codemirrordemo.html","text/plain" + ] } } diff --git a/editions/dynaviewdemo/tiddlers/$__coreURL.tid b/editions/dynaviewdemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/dynaviewdemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/dynaviewdemo/tiddlywiki.info b/editions/dynaviewdemo/tiddlywiki.info index 96b2ef2e5c..d45ed738c1 100644 --- a/editions/dynaviewdemo/tiddlywiki.info +++ b/editions/dynaviewdemo/tiddlywiki.info @@ -9,6 +9,9 @@ ], "build": { "index": [ - "--rendertiddler","$:/core/save/all","index.html","text/plain"] + "--rendertiddler","$:/core/save/all","index.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" + ] } } \ No newline at end of file diff --git a/editions/geospatialdemo/tiddlers/$__coreURL.tid b/editions/geospatialdemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/geospatialdemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/geospatialdemo/tiddlywiki.info b/editions/geospatialdemo/tiddlywiki.info index db988811dd..527748f494 100644 --- a/editions/geospatialdemo/tiddlywiki.info +++ b/editions/geospatialdemo/tiddlywiki.info @@ -14,7 +14,10 @@ ], "build": { "index": [ - "--render","$:/core/save/all","index.html","text/plain"], + "--render","$:/core/save/all","index.html","text/plain"],, + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" + ], "favicon": [], "static": [], "empty": [], diff --git a/editions/highlightdemo/tiddlers/$__coreURL.tid b/editions/highlightdemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/highlightdemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/highlightdemo/tiddlywiki.info b/editions/highlightdemo/tiddlywiki.info index 075859c8c4..74342d35b6 100644 --- a/editions/highlightdemo/tiddlywiki.info +++ b/editions/highlightdemo/tiddlywiki.info @@ -16,6 +16,9 @@ "--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", - "--render","$:/core/templates/static.template.css","static/static.css","text/plain"] + "--render","$:/core/templates/static.template.css","static/static.css","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","highlightdemo.html","text/plain" + ] } } diff --git a/editions/innerwikidemo/tiddlers/system/$__coreURL.tid b/editions/innerwikidemo/tiddlers/system/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/innerwikidemo/tiddlers/system/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/innerwikidemo/tiddlywiki.info b/editions/innerwikidemo/tiddlywiki.info index 2a55c68d05..6767349827 100644 --- a/editions/innerwikidemo/tiddlywiki.info +++ b/editions/innerwikidemo/tiddlywiki.info @@ -19,6 +19,9 @@ "--screenshot", "[[$:/plugins/tiddlywiki/innerwiki/examples]]", "4" + ], + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" ] } } \ No newline at end of file diff --git a/editions/katexdemo/tiddlers/$__coreURL.tid b/editions/katexdemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/katexdemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/katexdemo/tiddlywiki.info b/editions/katexdemo/tiddlywiki.info index bd07b3e281..40c84dfc67 100644 --- a/editions/katexdemo/tiddlywiki.info +++ b/editions/katexdemo/tiddlywiki.info @@ -16,6 +16,9 @@ "--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", - "--render","$:/core/templates/static.template.css","static/static.css","text/plain"] + "--render","$:/core/templates/static.template.css","static/static.css","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","katexdemo.html","text/plain" + ] } } diff --git a/editions/markdowndemo/tiddlers/$__coreURL.tid b/editions/markdowndemo/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..99eff5356d --- /dev/null +++ b/editions/markdowndemo/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/markdowndemo/tiddlywiki.info b/editions/markdowndemo/tiddlywiki.info index 575c1e4166..bc025070dc 100644 --- a/editions/markdowndemo/tiddlywiki.info +++ b/editions/markdowndemo/tiddlywiki.info @@ -13,6 +13,9 @@ ], "build": { "index": [ - "--rendertiddler","$:/core/save/all","markdowndemo.html","text/plain"] + "--rendertiddler","$:/core/save/all","markdowndemo.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","markdowndemo.html","text/plain" + ] } } diff --git a/editions/text-slicer/tiddlers/system/$__coreURL.tid b/editions/text-slicer/tiddlers/system/$__coreURL.tid new file mode 100644 index 0000000000..f3ab8b9c04 --- /dev/null +++ b/editions/text-slicer/tiddlers/system/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/text-slicer/tiddlywiki.info b/editions/text-slicer/tiddlywiki.info index 7906ba5100..f3a0df3bff 100644 --- a/editions/text-slicer/tiddlywiki.info +++ b/editions/text-slicer/tiddlywiki.info @@ -13,6 +13,9 @@ "build": { "index": [ "--rendertiddler","$:/core/save/all","index.html","text/plain" + ], + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" ] } } \ No newline at end of file diff --git a/editions/tour/tiddlers/System/$__coreURL.tid b/editions/tour/tiddlers/System/$__coreURL.tid new file mode 100644 index 0000000000..5876d66871 --- /dev/null +++ b/editions/tour/tiddlers/System/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/tw5.com-docs/tiddlers/$__coreURL.tid b/editions/tw5.com-docs/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..f3ab8b9c04 --- /dev/null +++ b/editions/tw5.com-docs/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/tw5.com-docs/tiddlywiki.info b/editions/tw5.com-docs/tiddlywiki.info index 4d486267b0..b788116eb6 100644 --- a/editions/tw5.com-docs/tiddlywiki.info +++ b/editions/tw5.com-docs/tiddlywiki.info @@ -10,6 +10,9 @@ ], "build": { "index": [ - "--render","$:/core/save/all","index.html","text/plain"] + "--render","$:/core/save/all","index.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" + ] } } diff --git a/editions/xlsx-utils/tiddlers/$__coreURL.tid b/editions/xlsx-utils/tiddlers/$__coreURL.tid new file mode 100644 index 0000000000..f3ab8b9c04 --- /dev/null +++ b/editions/xlsx-utils/tiddlers/$__coreURL.tid @@ -0,0 +1,4 @@ +title: $:/coreURL +tags: $:/tags/Global + +\function coreURL() [[../../tiddlywikicore-$(version)$.js]substitute[]] diff --git a/editions/xlsx-utils/tiddlywiki.info b/editions/xlsx-utils/tiddlywiki.info index 7adfc403bd..5f1774f0be 100644 --- a/editions/xlsx-utils/tiddlywiki.info +++ b/editions/xlsx-utils/tiddlywiki.info @@ -12,6 +12,9 @@ ], "build": { "index": [ - "--rendertiddler","$:/core/save/all","index.html","text/plain"] + "--rendertiddler","$:/core/save/all","index.html","text/plain"], + "external": [ + "--render","$:/core/save/all-external-js","index.html","text/plain" + ] } } From 06adaf3331d983be822a40c10677fa05f6ea4536 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Tue, 11 Mar 2025 20:33:14 +0800 Subject: [PATCH 059/458] Update zh-Hans translation (#8974) --- languages/zh-Hans/ControlPanel.multids | 6 ++++++ languages/zh-Hans/EditTemplate.multids | 2 ++ 2 files changed, 8 insertions(+) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 53d244b3f1..15ff2d70fc 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -92,6 +92,10 @@ Plugins/PluginWillRequireReload: (需要重新加载) Plugins/Plugins/Caption: 插件 Plugins/Plugins/Hint: 插件 Plugins/Reinstall/Caption: 重新安装 +Plugins/Stability/Deprecated: 过时 +Plugins/Stability/Experimental: 实验性 +Plugins/Stability/Legacy: 老旧 +Plugins/Stability/Stable: 稳定 Plugins/Themes/Caption: 布局主题 Plugins/Themes/Hint: 布局主题插件 Plugins/Update/Caption: 更新 @@ -186,6 +190,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: 以 引用链 Settings/PerformanceInstrumentation/Caption: 性能检测 Settings/PerformanceInstrumentation/Hint: 在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。 Settings/PerformanceInstrumentation/Description: 启用性能检测 +Settings/RecentLimit/Caption: “最近”标签页限制 +Settings/RecentLimit/Hint: 侧边栏“最近”标签页显示的最多条目数 Settings/ToolbarButtonStyle/Caption: 工具栏按钮样式 Settings/ToolbarButtonStyle/Hint: 选择工具栏按钮的样式: Settings/ToolbarButtonStyle/Styles/Borderless: 无边框 diff --git a/languages/zh-Hans/EditTemplate.multids b/languages/zh-Hans/EditTemplate.multids index 2420eb6471..90fbb34817 100644 --- a/languages/zh-Hans/EditTemplate.multids +++ b/languages/zh-Hans/EditTemplate.multids @@ -26,6 +26,8 @@ Tags/ClearInput/Caption: 清除输入 Tags/ClearInput/Hint: 清除标签输入 Tags/Dropdown/Caption: 标签清单 Tags/Dropdown/Hint: 显示标签清单 +Tags/EmptyMessage: 找不到标签 +Tags/EmptyMessage/System: 找不到系统标签 Title/BadCharacterWarning: 请注意,避免在条目名称中使用这些字符:<> Title/Exists/Prompt: 目标条目已经存在 Title/Relink/Prompt: 将在其他条目的 //tags// 和 //list// 字段中的 ''<$text text=<>/>'' 改为 ''<$text text=<>/>'' From 897b14a8d612294142aee4e8e6aac401eb1ab9b4 Mon Sep 17 00:00:00 2001 From: Abdullah Ibrahim <76573989+rumman157@users.noreply.github.com> Date: Mon, 17 Mar 2025 21:51:40 +0600 Subject: [PATCH 060/458] Signing CLA (#8983) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index f827a3f2be..ee46925ffa 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -609,3 +609,5 @@ J. Ryan Stinnett, @jryans, 2025/01/04 Galen Huntington, @galenhuntington, 2025/01/19 @Rhys-T, 2025/01/23 + +@Rumman157, 2025/03/17 \ No newline at end of file From f6a60f51d279d4090623d401b34a59113f07d8d2 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Tue, 18 Mar 2025 00:15:28 +0800 Subject: [PATCH 061/458] Fix error in geospatial edition tiddlywiki.info file (#8977) --- editions/geospatialdemo/tiddlywiki.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/geospatialdemo/tiddlywiki.info b/editions/geospatialdemo/tiddlywiki.info index 527748f494..ed97005836 100644 --- a/editions/geospatialdemo/tiddlywiki.info +++ b/editions/geospatialdemo/tiddlywiki.info @@ -14,7 +14,7 @@ ], "build": { "index": [ - "--render","$:/core/save/all","index.html","text/plain"],, + "--render","$:/core/save/all","index.html","text/plain"], "external": [ "--render","$:/core/save/all-external-js","index.html","text/plain" ], From 4e6a2ffd60951f4c9aade44959d271c645878312 Mon Sep 17 00:00:00 2001 From: Abdullah Ibrahim <76573989+rumman157@users.noreply.github.com> Date: Tue, 18 Mar 2025 00:27:54 +0600 Subject: [PATCH 062/458] Signing CLA (#8982) From 0b3efc2771125937c4f5175ff81fef8f8529820b Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Fri, 21 Mar 2025 21:35:26 +0800 Subject: [PATCH 063/458] Fix overflow in Browser Storage settings page (#8752) Only a small fix --- plugins/tiddlywiki/browser-storage/settings.tid | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/tiddlywiki/browser-storage/settings.tid b/plugins/tiddlywiki/browser-storage/settings.tid index 6bbdc40c28..e6170dfb95 100644 --- a/plugins/tiddlywiki/browser-storage/settings.tid +++ b/plugins/tiddlywiki/browser-storage/settings.tid @@ -22,13 +22,15 @@ This filter determines which tiddlers will be saved to local storage. * `[all[]]` - attempt to save all changed tiddlers. This means even popup state tiddlers and temporary tiddlers will be saved. * `[all[]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]]` - save all tiddlers except popup state tiddlers, temp tiddlers and the history list. -<$link to="$:/config/BrowserStorage/SaveFilter">Browser Storage Save Filter: <$edit-text tiddler="$:/config/BrowserStorage/SaveFilter" default="" tag="input" size="50"/> +|tc-table-no-border|k +|<$link to="$:/config/BrowserStorage/SaveFilter">Browser Storage Save Filter |<$edit-text tiddler="$:/config/BrowserStorage/SaveFilter" default="" tag="input"/> | ! Custom Quota Exceeded Alert This setting allows a custom alert message to be displayed when an attempt to store a tiddler fails due to the storage quota being exceeded: -<$link to="$:/config/BrowserStorage/QuotaExceededAlert">Quota Exceeded Alert: <$edit-text tiddler="$:/config/BrowserStorage/QuotaExceededAlert" default="" tag="input" size="50"/> +|tc-table-no-border|k +|<$link to="$:/config/BrowserStorage/QuotaExceededAlert">Quota Exceeded Alert |<$edit-text tiddler="$:/config/BrowserStorage/QuotaExceededAlert" default="" tag="input"/> | ! Prevent browser from evicting local storage From 55dbce10f461c41240d2c6ee5a49bd6ed0edc15b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 21 Mar 2025 14:48:01 +0000 Subject: [PATCH 064/458] Fix crash loading large files Attempts to load large files are neutered with a warning message Is 100MB the right limit? --- boot/boot.js | 12 ++++++++++-- boot/bootprefix.js | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index f1f6e49061..11286678d1 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1902,8 +1902,16 @@ $tw.loadTiddlersFromFile = function(filepath,fields) { extensionInfo = $tw.utils.getFileExtensionInfo(ext), type = extensionInfo ? extensionInfo.type : null, typeInfo = type ? $tw.config.contentTypeInfo[type] : null, - data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"), - tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields), + fileSize = fs.statSync(filepath).size, + data; + if(fileSize > $tw.config.maxEditFileSize) { + data = "File " + filepath + "not loaded because it is too large"; + console.log("Warning: " + data); + ext = ".txt"; + } else { + data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"); + } + var tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields), metadata = $tw.loadMetadataForFile(filepath); if(metadata) { if(type === "application/json") { diff --git a/boot/bootprefix.js b/boot/bootprefix.js index 4dae1b28f7..92785d8235 100644 --- a/boot/bootprefix.js +++ b/boot/bootprefix.js @@ -19,6 +19,10 @@ var _bootprefix = (function($tw) { $tw = $tw || Object.create(null); $tw.boot = $tw.boot || Object.create(null); +// Config +$tw.config = $tw.config || Object.create(null); +$tw.config.maxEditFileSize = 100 * 1024 * 1024; // 100MB + // Detect platforms if(!("browser" in $tw)) { $tw.browser = typeof(window) !== "undefined" && typeof(document) !== "undefined" ? {} : null; From 819d84ecabd04f8a30f5406f45c795c3233a98eb Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Fri, 21 Mar 2025 23:51:13 +0800 Subject: [PATCH 065/458] Add removeEventListener, and allow register multiple listeners (#8978) * feat: add removeEventListener , and allow register multiple listeners Instead of remove old one when add new one. * refactor: simplify the logic, similar to wiki class's addEventListener * feat: prevent adding the same event listener multiple times --- core/modules/widgets/widget.js | 54 +++-- .../test/tiddlers/tests/test-widget-event.js | 224 ++++++++++++++++++ 2 files changed, 262 insertions(+), 16 deletions(-) create mode 100644 editions/test/tiddlers/tests/test-widget-event.js diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 14e90ba2d2..e2bfb79ca7 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -628,31 +628,53 @@ Widget.prototype.addEventListeners = function(listeners) { }; /* -Add an event listener +Add an event listener. + +Listener could return a boolean indicating whether to further propagation or not, default to `false`. */ Widget.prototype.addEventListener = function(type,handler) { - var self = this; - if(typeof handler === "string") { // The handler is a method name on this widget - this.eventListeners[type] = function(event) { - return self[handler].call(self,event); - }; - } else { // The handler is a function - this.eventListeners[type] = function(event) { - return handler.call(self,event); - }; + this.eventListeners[type] = this.eventListeners[type] || []; + if(this.eventListeners[type].indexOf(handler) === -1) { + this.eventListeners[type].push(handler); } }; /* -Dispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget +Remove an event listener +*/ +Widget.prototype.removeEventListener = function(type,handler) { + if(!this.eventListeners[type]) return; + var index = this.eventListeners[type].indexOf(handler); + if(index !== -1) { + this.eventListeners[type].splice(index,1); + } +}; + +/* +Dispatch an event to a widget. + +If the widget doesn't handle the event then it is also dispatched to the parent widget */ Widget.prototype.dispatchEvent = function(event) { event.widget = event.widget || this; - // Dispatch the event if this widget handles it - var listener = this.eventListeners[event.type]; - if(listener) { - // Don't propagate the event if the listener returned false - if(!listener(event)) { + var listeners = this.eventListeners[event.type]; + if(listeners) { + var self = this; + var shouldPropagate = true; + $tw.utils.each(listeners,function(handler) { + var propagate; + if(typeof handler === "string") { + // If handler is a string, call it as a method on the widget + propagate = self[handler].call(self,event); + } else { + // Otherwise call the function handler directly + propagate = handler.call(self,event); + } + if(propagate === false) { + shouldPropagate = false; + } + }); + if(!shouldPropagate) { return false; } } diff --git a/editions/test/tiddlers/tests/test-widget-event.js b/editions/test/tiddlers/tests/test-widget-event.js new file mode 100644 index 0000000000..b70f5424c2 --- /dev/null +++ b/editions/test/tiddlers/tests/test-widget-event.js @@ -0,0 +1,224 @@ +/*\ +title: test-widget-event.js +type: application/javascript +tags: [[$:/tags/test-spec]] +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +describe("Widget Event Listeners", function() { + var widget = require("$:/core/modules/widgets/widget.js"); + + function createWidgetNode(parseTreeNode,wiki,parentWidget) { + return new widget.widget(parseTreeNode,{ + wiki: wiki, + document: $tw.fakeDocument, + parentWidget: parentWidget + }); + } + + it("should call all added event listeners on dispatchEvent", function() { + var calls = []; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + + // Add a function listener. + widget.addEventListener("testEvent", function(e) { + calls.push("funcListener"); + return true; + }); + // Setup a method on widget for string listener. + widget.testHandler = function(e) { + calls.push("methodListener"); + return true; + }; + widget.addEventListener("testEvent", "testHandler"); + + var event = {type:"testEvent"}; + var result = widget.dispatchEvent(event); + expect(result).toBe(true); + expect(calls.length).toBe(2); + expect(calls).toContain("funcListener"); + expect(calls).toContain("methodListener"); + }); + + it("should remove an event listener correctly", function() { + var calls = []; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + + function listener(e) { + calls.push("listener"); + return true; + } + // Add listener twice: once as function and then add another distinct listener. + widget.addEventListener("removeTest", listener); + widget.addEventListener("removeTest", function(e) { + calls.push("secondListener"); + return true; + }); + // Remove the function listener. + widget.removeEventListener("removeTest", listener); + + var event = {type:"removeTest"}; + var result = widget.dispatchEvent(event); + expect(result).toBe(true); + expect(calls.length).toBe(1); + expect(calls).toContain("secondListener"); + expect(calls).not.toContain("listener"); + }); + + it("stop further propagation by returns false won't block other listeners on the same level.", function() { + var calls = []; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + + widget.addEventListener("stopEvent", function(e) { + calls.push("first"); + // stops further propagation, but still dispatch event for second listener. + return false; + }); + widget.addEventListener("stopEvent", function(e) { + calls.push("second"); + return true; + }); + var event = {type:"stopEvent"}; + var result = widget.dispatchEvent(event); + expect(result).toBe(false); + expect(calls.length).toBe(2); + expect(calls).toContain("first"); + expect(calls).toContain("second"); + }); + + it("should dispatch event to parent widget if not handled on child", function() { + var parentCalls = []; + var wiki = new $tw.Wiki(); + var parentWidget = createWidgetNode({type:"widget", text:"text"}, wiki); + parentWidget.addEventListener("parentEvent", function(e) { + parentCalls.push("parentListener"); + return true; + }); + // Create a child with parentWidget assigned. + var childWidget = createWidgetNode({type:"widget", text:"text"}, wiki, parentWidget); + // No listener on child; so dispatch should bubble up. + var event = {type:"parentEvent"}; + var result = childWidget.dispatchEvent(event); + expect(result).toBe(true); + expect(parentCalls.length).toBe(1); + expect(parentCalls).toContain("parentListener"); + }); + + it("should not dispatch event to parent if child's listener stops propagation", function() { + var parentCalls = []; + var wiki = new $tw.Wiki(); + var parentWidget = createWidgetNode({type:"widget", text:"text"}, wiki); + parentWidget.addEventListener("bubbleTest", function(e) { + parentCalls.push("parentListener"); + return true; + }); + var childWidget = createWidgetNode({type:"widget", text:"text"}, wiki, parentWidget); + childWidget.addEventListener("bubbleTest", function(e) { + return false; // Stop event propagation + }); + var event = {type:"bubbleTest"}; + var result = childWidget.dispatchEvent(event); + expect(result).toBe(false); + expect(parentCalls.length).toBe(0); + }); + + it("should call multiple listeners in proper order across child and parent", function() { + var calls = []; + var wiki = new $tw.Wiki(); + var parentWidget = createWidgetNode({type:"widget", text:"text"}, wiki); + parentWidget.addEventListener("chainEvent", function(e) { + calls.push("parentListener"); + return true; + }); + var childWidget = createWidgetNode({type:"widget", text:"text"}, wiki, parentWidget); + childWidget.addEventListener("chainEvent", function(e) { + calls.push("childListener"); + return true; + }); + var event = {type:"chainEvent"}; + var result = childWidget.dispatchEvent(event); + expect(result).toBe(true); + expect(calls.length).toBe(2); + // First call from child widget and then parent's listener. + expect(calls[0]).toBe("childListener"); + expect(calls[1]).toBe("parentListener"); + }); + + // Additional tests for multiple event types + it("should handle events of different types separately", function() { + var callsA = []; + var callsB = []; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + widget.addEventListener("eventA", function(e) { + callsA.push("A1"); + return true; + }); + widget.addEventListener("eventB", function(e) { + callsB.push("B1"); + return true; + }); + widget.dispatchEvent({type:"eventA"}); + widget.dispatchEvent({type:"eventB"}); + expect(callsA).toContain("A1"); + expect(callsB).toContain("B1"); + }); + + // Test using $tw.utils.each in removeEventListener internally (behavior verified via dispatch) + it("should remove listeners using $tw.utils.each without affecting other listeners", function() { + var calls = []; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + function listener1(e) { + calls.push("listener1"); + return true; + } + function listener2(e) { + calls.push("listener2"); + return true; + } + widget.addEventListener("testRemove", listener1); + widget.addEventListener("testRemove", listener2); + widget.removeEventListener("testRemove", listener1); + widget.dispatchEvent({type:"testRemove"}); + expect(calls.length).toBe(1); + expect(calls).toContain("listener2"); + expect(calls).not.toContain("listener1"); + }); + + it("should prevent adding the same event listener multiple times", function() { + var calls = 0; + var wiki = new $tw.Wiki(); + var widget = createWidgetNode({type:"widget", text:"text"}, wiki); + + function listener(e) { + calls++; + return true; + } + + // Add the same listener multiple times + widget.addEventListener("testEvent", listener); + widget.addEventListener("testEvent", listener); + widget.addEventListener("testEvent", listener); + + // Dispatch the event + var event = {type:"testEvent"}; + widget.dispatchEvent(event); + + // The listener should only be called once + expect(calls).toBe(1); + + // Check the internal structure of eventListeners array + expect(widget.eventListeners["testEvent"].length).toBe(1); + }); + +}); + +})(); From 8aa558eb2cfa1df3af39a1927a4a0afb41bad504 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Fri, 21 Mar 2025 18:22:57 +0100 Subject: [PATCH 066/458] Remove module function wrapper and add matching configurations for dprint and eslint (#7596) * remove blks first try * dprint.json seems to be OK, some forgotten functions * add some more space-after-keyword settings * server remove blks * add **/files to dprint exclude * dprint.js fixes a typo * add boot.js and bootprefix.js to dprint exclude * dprint change dprint.json * add dprint fmt as script * remove jslint comments * fix whitespace * fix whitespace * remove function-wrapper from geospatial plugin * fix whitespace * add function wrapper to dyannotate-startup * remove dpring.json --- .eslintrc.json | 317 ++++++++++++++++++ core/modules/commander.js | 5 - core/modules/commands/build.js | 5 - core/modules/commands/clearpassword.js | 5 - core/modules/commands/commands.js | 6 - core/modules/commands/deletetiddlers.js | 5 - core/modules/commands/editions.js | 5 - core/modules/commands/fetch.js | 5 - core/modules/commands/help.js | 5 - core/modules/commands/import.js | 5 - core/modules/commands/init.js | 5 - core/modules/commands/listen.js | 5 - core/modules/commands/load.js | 5 - core/modules/commands/makelibrary.js | 5 - core/modules/commands/output.js | 5 - core/modules/commands/password.js | 5 - core/modules/commands/render.js | 6 - core/modules/commands/rendertiddler.js | 5 - core/modules/commands/rendertiddlers.js | 5 - core/modules/commands/save.js | 6 - core/modules/commands/savelibrarytiddlers.js | 5 - core/modules/commands/savetiddler.js | 5 - core/modules/commands/savetiddlers.js | 5 - core/modules/commands/savewikifolder.js | 5 - core/modules/commands/server.js | 5 - core/modules/commands/setfield.js | 5 - core/modules/commands/unpackplugin.js | 5 - core/modules/commands/verbose.js | 5 - core/modules/commands/version.js | 5 - core/modules/config.js | 5 - core/modules/deserializers.js | 5 - core/modules/editor/engines/framed.js | 5 - core/modules/editor/engines/simple.js | 5 - core/modules/editor/factory.js | 5 - .../modules/editor/operations/bitmap/clear.js | 5 - .../editor/operations/bitmap/resize.js | 5 - .../editor/operations/bitmap/rotate-left.js | 5 - core/modules/editor/operations/text/excise.js | 5 - .../editor/operations/text/focus-editor.js | 5 - .../editor/operations/text/insert-text.js | 5 - .../editor/operations/text/make-link.js | 5 - .../editor/operations/text/prefix-lines.js | 5 - .../editor/operations/text/replace-all.js | 5 - .../operations/text/replace-selection.js | 5 - .../editor/operations/text/save-selection.js | 5 - .../editor/operations/text/wrap-lines.js | 5 - .../editor/operations/text/wrap-selection.js | 5 - core/modules/filterrunprefixes/all.js | 5 - core/modules/filterrunprefixes/and.js | 5 - core/modules/filterrunprefixes/cascade.js | 5 - core/modules/filterrunprefixes/else.js | 5 - core/modules/filterrunprefixes/except.js | 5 - core/modules/filterrunprefixes/filter.js | 5 - .../modules/filterrunprefixes/intersection.js | 5 - core/modules/filterrunprefixes/map.js | 5 - core/modules/filterrunprefixes/or.js | 5 - core/modules/filterrunprefixes/reduce.js | 5 - core/modules/filterrunprefixes/sort.js | 5 - core/modules/filterrunprefixes/then.js | 5 - core/modules/filters.js | 5 - core/modules/filters/addprefix.js | 5 - core/modules/filters/addsuffix.js | 5 - core/modules/filters/after.js | 5 - core/modules/filters/all.js | 5 - core/modules/filters/all/current.js | 5 - core/modules/filters/all/missing.js | 5 - core/modules/filters/all/orphans.js | 5 - core/modules/filters/all/shadows.js | 5 - core/modules/filters/all/tags.js | 5 - core/modules/filters/all/tiddlers.js | 5 - core/modules/filters/backlinks.js | 5 - core/modules/filters/backtranscludes.js | 3 - core/modules/filters/before.js | 5 - core/modules/filters/commands.js | 5 - core/modules/filters/compare.js | 5 - core/modules/filters/contains.js | 5 - core/modules/filters/count.js | 5 - core/modules/filters/crypto.js | 5 - core/modules/filters/days.js | 5 - core/modules/filters/deserialize.js | 5 - core/modules/filters/deserializers.js | 5 - core/modules/filters/duplicateslugs.js | 5 - core/modules/filters/each.js | 5 - core/modules/filters/eachday.js | 5 - core/modules/filters/editiondescription.js | 5 - core/modules/filters/editions.js | 5 - core/modules/filters/else.js | 5 - core/modules/filters/encodings.js | 5 - core/modules/filters/enlist.js | 5 - core/modules/filters/field.js | 5 - core/modules/filters/fields.js | 5 - core/modules/filters/filter.js | 5 - core/modules/filters/format.js | 5 - core/modules/filters/format/date.js | 5 - core/modules/filters/format/json.js | 5 - core/modules/filters/format/relativedate.js | 5 - core/modules/filters/format/timestamp.js | 4 - core/modules/filters/format/titlelist.js | 5 - core/modules/filters/function.js | 5 - core/modules/filters/get.js | 5 - core/modules/filters/getindex.js | 5 - core/modules/filters/getvariable.js | 5 - core/modules/filters/has.js | 5 - core/modules/filters/haschanged.js | 5 - core/modules/filters/indexes.js | 5 - core/modules/filters/insertafter.js | 5 - core/modules/filters/insertbefore.js | 5 - core/modules/filters/is.js | 5 - core/modules/filters/is/binary.js | 5 - core/modules/filters/is/blank.js | 5 - core/modules/filters/is/current.js | 5 - core/modules/filters/is/draft.js | 5 - core/modules/filters/is/image.js | 5 - core/modules/filters/is/missing.js | 5 - core/modules/filters/is/orphan.js | 5 - core/modules/filters/is/shadow.js | 5 - core/modules/filters/is/system.js | 5 - core/modules/filters/is/tag.js | 5 - core/modules/filters/is/tiddler.js | 5 - core/modules/filters/is/variable.js | 5 - core/modules/filters/json-ops.js | 6 - core/modules/filters/limit.js | 5 - core/modules/filters/links.js | 5 - core/modules/filters/list.js | 5 - core/modules/filters/listed.js | 5 - core/modules/filters/listops.js | 5 - core/modules/filters/lookup.js | 5 - core/modules/filters/match.js | 5 - core/modules/filters/math.js | 5 - core/modules/filters/minlength.js | 5 - core/modules/filters/moduleproperty.js | 5 - core/modules/filters/modules.js | 5 - core/modules/filters/moduletypes.js | 5 - core/modules/filters/next.js | 5 - core/modules/filters/plugintiddlers.js | 5 - core/modules/filters/prefix.js | 5 - core/modules/filters/previous.js | 5 - core/modules/filters/range.js | 5 - core/modules/filters/reduce.js | 5 - core/modules/filters/regexp.js | 5 - core/modules/filters/removeprefix.js | 5 - core/modules/filters/removesuffix.js | 5 - core/modules/filters/sameday.js | 5 - core/modules/filters/search.js | 5 - core/modules/filters/shadowsource.js | 5 - core/modules/filters/slugify.js | 5 - core/modules/filters/sort.js | 5 - core/modules/filters/sortsub.js | 5 - core/modules/filters/splitbefore.js | 5 - core/modules/filters/storyviews.js | 5 - core/modules/filters/strings.js | 5 - core/modules/filters/subfilter.js | 5 - core/modules/filters/substitute.js | 5 - core/modules/filters/subtiddlerfields.js | 5 - core/modules/filters/suffix.js | 5 - core/modules/filters/tag.js | 5 - core/modules/filters/tagging.js | 5 - core/modules/filters/tags.js | 5 - core/modules/filters/then.js | 5 - core/modules/filters/title.js | 5 - core/modules/filters/transcludes.js | 3 - core/modules/filters/unknown.js | 5 - core/modules/filters/untagged.js | 5 - core/modules/filters/variables.js | 5 - core/modules/filters/wikiparserrules.js | 5 - core/modules/filters/x-listops.js | 5 - core/modules/indexers/field-indexer.js | 5 - core/modules/indexers/tag-indexer.js | 5 - core/modules/info/platform.js | 5 - core/modules/keyboard.js | 5 - core/modules/language.js | 5 - core/modules/macros/changecount.js | 5 - core/modules/macros/contrastcolour.js | 5 - core/modules/macros/csvtiddlers.js | 5 - core/modules/macros/displayshortcuts.js | 5 - core/modules/macros/jsontiddler.js | 4 - core/modules/macros/jsontiddlers.js | 5 - core/modules/macros/makedatauri.js | 5 - core/modules/macros/now.js | 5 - core/modules/macros/qualify.js | 5 - core/modules/macros/resolvepath.js | 5 - core/modules/macros/unusedtitle.js | 5 - core/modules/macros/version.js | 5 - core/modules/parsers/audioparser.js | 6 - core/modules/parsers/binaryparser.js | 6 - core/modules/parsers/csvparser.js | 6 - core/modules/parsers/htmlparser.js | 6 - core/modules/parsers/imageparser.js | 6 - core/modules/parsers/parseutils.js | 5 - core/modules/parsers/pdfparser.js | 6 - core/modules/parsers/textparser.js | 5 - core/modules/parsers/videoparser.js | 5 - .../parsers/wikiparser/rules/codeblock.js | 5 - .../parsers/wikiparser/rules/codeinline.js | 5 - .../parsers/wikiparser/rules/commentblock.js | 5 - .../parsers/wikiparser/rules/commentinline.js | 5 - .../parsers/wikiparser/rules/conditional.js | 3 - core/modules/parsers/wikiparser/rules/dash.js | 5 - .../parsers/wikiparser/rules/emphasis/bold.js | 5 - .../wikiparser/rules/emphasis/italic.js | 5 - .../rules/emphasis/strikethrough.js | 5 - .../wikiparser/rules/emphasis/subscript.js | 5 - .../wikiparser/rules/emphasis/superscript.js | 5 - .../wikiparser/rules/emphasis/underscore.js | 5 - .../parsers/wikiparser/rules/entity.js | 5 - .../parsers/wikiparser/rules/extlink.js | 5 - .../rules/filteredtranscludeblock.js | 5 - .../rules/filteredtranscludeinline.js | 5 - .../parsers/wikiparser/rules/fnprocdef.js | 6 - .../wikiparser/rules/hardlinebreaks.js | 5 - .../parsers/wikiparser/rules/heading.js | 4 - .../parsers/wikiparser/rules/horizrule.js | 5 - core/modules/parsers/wikiparser/rules/html.js | 5 - .../modules/parsers/wikiparser/rules/image.js | 5 - .../parsers/wikiparser/rules/import.js | 5 - core/modules/parsers/wikiparser/rules/list.js | 5 - .../wikiparser/rules/macrocallblock.js | 5 - .../wikiparser/rules/macrocallinline.js | 5 - .../parsers/wikiparser/rules/macrodef.js | 5 - .../parsers/wikiparser/rules/parameters.js | 5 - .../parsers/wikiparser/rules/parsermode.js | 5 - .../parsers/wikiparser/rules/prettyextlink.js | 5 - .../parsers/wikiparser/rules/prettylink.js | 5 - .../parsers/wikiparser/rules/quoteblock.js | 5 - .../modules/parsers/wikiparser/rules/rules.js | 5 - .../parsers/wikiparser/rules/styleblock.js | 5 - .../parsers/wikiparser/rules/styleinline.js | 5 - .../parsers/wikiparser/rules/syslink.js | 5 - .../modules/parsers/wikiparser/rules/table.js | 5 - .../wikiparser/rules/transcludeblock.js | 5 - .../wikiparser/rules/transcludeinline.js | 5 - .../parsers/wikiparser/rules/typedblock.js | 5 - .../parsers/wikiparser/rules/whitespace.js | 5 - .../parsers/wikiparser/rules/wikilink.js | 5 - .../wikiparser/rules/wikilinkprefix.js | 5 - core/modules/parsers/wikiparser/wikiparser.js | 5 - .../parsers/wikiparser/wikirulebase.js | 5 - core/modules/pluginswitcher.js | 5 - core/modules/saver-handler.js | 5 - core/modules/savers/andtidwiki.js | 6 +- core/modules/savers/custom.js | 4 - core/modules/savers/download.js | 5 - core/modules/savers/fsosaver.js | 5 - core/modules/savers/gitea.js | 5 - core/modules/savers/github.js | 5 - core/modules/savers/gitlab.js | 5 - core/modules/savers/manualdownload.js | 5 - core/modules/savers/msdownload.js | 5 - core/modules/savers/put.js | 5 - core/modules/savers/tiddlyfox.js | 5 - core/modules/savers/tiddlyie.js | 5 - core/modules/savers/twedit.js | 5 - core/modules/savers/upload.js | 5 - core/modules/server/authenticators/basic.js | 5 - core/modules/server/authenticators/header.js | 4 - core/modules/server/routes/delete-tiddler.js | 6 - core/modules/server/routes/get-favicon.js | 6 - core/modules/server/routes/get-file.js | 6 - core/modules/server/routes/get-index.js | 6 - core/modules/server/routes/get-login-basic.js | 6 - core/modules/server/routes/get-status.js | 6 - .../modules/server/routes/get-tiddler-html.js | 6 - core/modules/server/routes/get-tiddler.js | 6 - .../server/routes/get-tiddlers-json.js | 6 - core/modules/server/routes/put-tiddler.js | 6 - core/modules/server/server.js | 5 - core/modules/startup/browser-messaging.js | 5 - core/modules/startup/commands.js | 5 - core/modules/startup/favicon.js | 5 - core/modules/startup/info.js | 5 - core/modules/startup/load-modules.js | 5 - core/modules/startup/password.js | 5 - core/modules/startup/plugins.js | 4 - core/modules/startup/render.js | 5 - core/modules/startup/rootwidget.js | 5 - core/modules/startup/startup.js | 5 - core/modules/startup/story.js | 5 - core/modules/startup/windows.js | 5 - core/modules/story.js | 6 - core/modules/storyviews/classic.js | 5 - core/modules/storyviews/pop.js | 5 - core/modules/storyviews/zoomin.js | 5 - core/modules/syncer.js | 5 - core/modules/tiddler.js | 5 - core/modules/upgraders/plugins.js | 5 - core/modules/upgraders/system.js | 5 - core/modules/upgraders/themetweaks.js | 5 - core/modules/utils/crypto.js | 5 - core/modules/utils/csv.js | 5 - core/modules/utils/dom/animations/slide.js | 5 - core/modules/utils/dom/animator.js | 5 - core/modules/utils/dom/browser.js | 5 - core/modules/utils/dom/dom.js | 5 - core/modules/utils/dom/dragndrop.js | 5 - core/modules/utils/dom/http.js | 5 - core/modules/utils/dom/keyboard.js | 5 - core/modules/utils/dom/modal.js | 5 - core/modules/utils/dom/notifier.js | 5 - core/modules/utils/dom/popup.js | 5 - core/modules/utils/dom/scroller.js | 5 - core/modules/utils/edition-info.js | 5 - core/modules/utils/escapecss.js | 6 +- core/modules/utils/fakedom.js | 5 - core/modules/utils/filesystem.js | 5 - core/modules/utils/linked-list.js | 5 +- core/modules/utils/logger.js | 5 - core/modules/utils/parsetree.js | 5 - core/modules/utils/performance.js | 5 - core/modules/utils/pluginmaker.js | 5 - core/modules/utils/repository.js | 3 - core/modules/utils/transliterate.js | 5 - core/modules/utils/utils.js | 5 - core/modules/widgets/action-confirm.js | 5 - core/modules/widgets/action-createtiddler.js | 5 - core/modules/widgets/action-deletefield.js | 5 - core/modules/widgets/action-deletetiddler.js | 5 - core/modules/widgets/action-listops.js | 6 - core/modules/widgets/action-log.js | 5 - core/modules/widgets/action-navigate.js | 5 - core/modules/widgets/action-popup.js | 5 - core/modules/widgets/action-sendmessage.js | 5 - core/modules/widgets/action-setfield.js | 5 - .../widgets/action-setmultiplefields.js | 6 - core/modules/widgets/browse.js | 5 - core/modules/widgets/button.js | 5 - core/modules/widgets/checkbox.js | 6 - core/modules/widgets/codeblock.js | 5 - core/modules/widgets/count.js | 5 - core/modules/widgets/data.js | 3 - core/modules/widgets/diff-text.js | 5 - core/modules/widgets/draggable.js | 5 - core/modules/widgets/droppable.js | 5 - core/modules/widgets/dropzone.js | 5 - core/modules/widgets/edit-binary.js | 5 - core/modules/widgets/edit-bitmap.js | 5 - core/modules/widgets/edit-shortcut.js | 5 - core/modules/widgets/edit-text.js | 5 - core/modules/widgets/edit.js | 5 - core/modules/widgets/element.js | 5 - core/modules/widgets/encrypt.js | 5 - core/modules/widgets/entity.js | 5 - core/modules/widgets/error.js | 5 - core/modules/widgets/eventcatcher.js | 5 - core/modules/widgets/fieldmangler.js | 5 - core/modules/widgets/fields.js | 5 - core/modules/widgets/fill.js | 6 - core/modules/widgets/genesis.js | 5 - core/modules/widgets/image.js | 5 - core/modules/widgets/importvariables.js | 5 - core/modules/widgets/jsontiddler.js | 5 - core/modules/widgets/keyboard.js | 5 - core/modules/widgets/let.js | 5 - core/modules/widgets/link.js | 6 - core/modules/widgets/linkcatcher.js | 5 - core/modules/widgets/list.js | 36 +- core/modules/widgets/log.js | 5 - core/modules/widgets/macrocall.js | 5 - core/modules/widgets/messagecatcher.js | 5 - core/modules/widgets/navigator.js | 5 - core/modules/widgets/parameters.js | 5 - core/modules/widgets/password.js | 5 - core/modules/widgets/qualify.js | 5 - core/modules/widgets/radio.js | 5 - core/modules/widgets/range.js | 5 - core/modules/widgets/raw.js | 5 - core/modules/widgets/reveal.js | 5 - core/modules/widgets/scrollable.js | 5 - core/modules/widgets/select.js | 5 - core/modules/widgets/setmultiplevariables.js | 6 - core/modules/widgets/setvariable.js | 5 - core/modules/widgets/slot.js | 5 - core/modules/widgets/testcase.js | 3 - core/modules/widgets/text.js | 5 - core/modules/widgets/tiddler.js | 5 - core/modules/widgets/transclude.js | 5 - core/modules/widgets/vars.js | 5 - core/modules/widgets/view.js | 5 - core/modules/widgets/widget.js | 5 - core/modules/widgets/wikify.js | 5 - core/modules/wiki-bulkops.js | 5 - core/modules/wiki.js | 5 - .../javascript-widget-tutorial/domwidget.js | 4 - .../javascript-widget-tutorial/donothing.js | 5 - .../hello-attribute-optimized.js | 6 - .../hello-attribute.js | 6 - .../javascript-widget-tutorial/hello.js | 5 - .../refreshcount.js | 6 - .../tiddlerfield-norefresh.js | 6 - .../tiddlerfield.js | 6 - .../tiddlers/tests/modules/utils/test-csv.js | 5 - .../tiddlers/tests/test-action-widgets.js | 4 +- .../test/tiddlers/tests/test-backlinks.js | 5 - .../tiddlers/tests/test-backtranscludes.js | 5 - .../tiddlers/tests/test-checkbox-widget.js | 3 +- .../tiddlers/tests/test-compare-filter.js | 3 +- .../tests/test-deserialize-operator.js | 6 +- .../test/tiddlers/tests/test-deserializers.js | 4 - editions/test/tiddlers/tests/test-fakedom.js | 3 - editions/test/tiddlers/tests/test-filters.js | 7 - .../test/tiddlers/tests/test-html-parser.js | 5 - .../test/tiddlers/tests/test-json-filters.js | 3 +- .../test/tiddlers/tests/test-linked-list.js | 4 - .../tiddlers/tests/test-parsetextreference.js | 4 - editions/test/tiddlers/tests/test-plugins.js | 3 - editions/test/tiddlers/tests/test-popup.js | 4 - .../tiddlers/tests/test-prefixes-filter.js | 4 +- .../test/tiddlers/tests/test-tags-operator.js | 3 +- editions/test/tiddlers/tests/test-tags.js | 4 - editions/test/tiddlers/tests/test-tiddler.js | 4 - editions/test/tiddlers/tests/test-utils.js | 5 - .../tests/test-widget-getVariableInfo.js | 3 - editions/test/tiddlers/tests/test-widget.js | 4 - .../tiddlers/tests/test-wikitext-parser.js | 4 - .../tests/test-wikitext-tabs-macro.js | 4 - editions/test/tiddlers/tests/test-wikitext.js | 4 - .../tiddlers/system/dropbox-url-macro.js | 4 - editions/tw5.com/tiddlers/system/if-macro.js | 4 - plugins/tiddlywiki/aws/modules/command.js | 3 +- plugins/tiddlywiki/aws/modules/encodings.js | 3 +- plugins/tiddlywiki/aws/modules/init.js | 3 +- plugins/tiddlywiki/aws/modules/utils.js | 3 +- plugins/tiddlywiki/bibtex/deserializer.js | 5 - plugins/tiddlywiki/browser-sniff/browser.js | 5 - .../tiddlywiki/browser-storage/rawmarkup.js | 4 - plugins/tiddlywiki/browser-storage/startup.js | 5 - plugins/tiddlywiki/browser-storage/util.js | 6 - plugins/tiddlywiki/cecily/cecily.js | 5 - .../tiddlywiki/classictools/modules/recipe.js | 5 - .../tiddlywiki/codemirror/edit-codemirror.js | 5 - plugins/tiddlywiki/codemirror/engine.js | 5 - .../tiddlywiki/confetti/confetti-manager.js | 3 - .../tiddlywiki/confetti/confetti-widget.js | 3 - plugins/tiddlywiki/confetti/startup.js | 3 - .../tiddlywiki/consent-banner/raw-widget.js | 5 - plugins/tiddlywiki/consent-banner/startup.js | 5 - plugins/tiddlywiki/d3/barwidget.js | 5 - plugins/tiddlywiki/d3/cloudwidget.js | 5 - .../dynannotate/modules/dynannotate.js | 5 - .../dynannotate/modules/element-spotlight.js | 3 - .../modules/legacy-selection-tracker.js | 5 - .../dynannotate/modules/selection-tracker.js | 5 - .../tiddlywiki/dynannotate/modules/startup.js | 3 - .../tiddlywiki/dynannotate/modules/textmap.js | 5 - plugins/tiddlywiki/dynaview/dynaview.js | 5 - .../evernote/modules/enex-deserializer.js | 19 +- .../external-attachments/startup.js | 6 - .../filesystem/filesystemadaptor.js | 5 - plugins/tiddlywiki/freelinks/plain-text.js | 5 - plugins/tiddlywiki/freelinks/text.js | 5 - plugins/tiddlywiki/geospatial/geotools.js | 5 - .../tiddlywiki/geospatial/operators/helper.js | 5 - .../tiddlywiki/geospatial/operators/lookup.js | 6 - .../geospatial/operators/measurement.js | 5 - .../tiddlywiki/geospatial/operators/olc.js | 5 - .../geospatial/operators/transformation.js | 6 - plugins/tiddlywiki/geospatial/startup.js | 5 - .../geospatial/widgets/geobaselayer.js | 5 - .../tiddlywiki/geospatial/widgets/geolayer.js | 5 - .../tiddlywiki/geospatial/widgets/geomap.js | 6 - .../googleanalytics/googleanalytics.js | 7 - .../highlight-legacy/highlightblock.js | 6 - .../tiddlywiki/highlight/highlightblock.js | 8 +- plugins/tiddlywiki/innerwiki/anchor.js | 3 - plugins/tiddlywiki/innerwiki/innerwiki.js | 5 - plugins/tiddlywiki/innerwiki/screenshot.js | 5 - plugins/tiddlywiki/jasmine/command.js | 3 - plugins/tiddlywiki/jasmine/jasmine-plugin.js | 6 +- .../jasmine/run-wiki-based-tests.js | 5 - plugins/tiddlywiki/jasmine/startup.js | 6 +- plugins/tiddlywiki/jszip/startup.js | 5 - plugins/tiddlywiki/katex/latex-parser.js | 5 - plugins/tiddlywiki/katex/wrapper.js | 6 - .../editor-operations/make-markdown-link.js | 5 - plugins/tiddlywiki/markdown-legacy/wrapper.js | 5 - .../editor-operations/make-markdown-link.js | 5 - .../tiddlywiki/markdown/markdown-it-katex.js | 5 +- .../markdown/markdown-it-tiddlywiki.js | 5 - plugins/tiddlywiki/markdown/wrapper.js | 4 - plugins/tiddlywiki/mobiledragdrop/startup.js | 5 - .../tiddlywiki/nodewebkitsaver/nodewebkit.js | 4 +- .../tiddlywiki/pluginlibrary/libraryserver.js | 5 - plugins/tiddlywiki/qrcode/barcodereader.js | 3 - plugins/tiddlywiki/qrcode/makeqr.js | 6 - plugins/tiddlywiki/railroad/components.js | 5 - plugins/tiddlywiki/railroad/parser.js | 5 - plugins/tiddlywiki/railroad/typed-parser.js | 6 - plugins/tiddlywiki/railroad/wrapper.js | 5 - plugins/tiddlywiki/savetrail/savetrail.js | 5 - plugins/tiddlywiki/share/rawmarkup.js | 5 - plugins/tiddlywiki/stacked-view/stacked.js | 5 - plugins/tiddlywiki/tahoelafs/saver.js | 5 - .../text-slicer/modules/commands/slice.js | 5 - .../modules/filters/list-children.js | 5 - .../tiddlywiki/text-slicer/modules/slicer.js | 5 - .../modules/startup/slicer-startup.js | 5 - .../tiddlywiki/tiddlyweb/tiddlywebadaptor.js | 5 - .../tiddlywiki/tw2parser/classictransclude.js | 5 - plugins/tiddlywiki/tw2parser/entry.js | 4 - .../tiddlywiki/tw2parser/parameteradapter.js | 4 - .../tiddlywiki/tw2parser/wikitextparser.js | 5 - plugins/tiddlywiki/tw2parser/wikitextrules.js | 5 - .../tiddlywiki/twitter-archivist/archivist.js | 5 - .../twitter-archivist/loadtwitterarchive.js | 5 - .../tiddlywiki/twitter-archivist/startup.js | 5 - plugins/tiddlywiki/twitter/startup.js | 5 - plugins/tiddlywiki/twitter/twitter-widget.js | 5 - plugins/tiddlywiki/upgrade/config.js | 5 - plugins/tiddlywiki/xlsx-utils/deserializer.js | 5 - plugins/tiddlywiki/xlsx-utils/importer.js | 5 - plugins/tiddlywiki/xlsx-utils/startup.js | 5 - .../xlsx-utils/xlsx-import-command.js | 5 - 511 files changed, 385 insertions(+), 2505 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..cbcea998b0 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,317 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "node": true + }, + "extends": [ + "eslint:recommended" + ], + "globals": { + "$tw": "writable" + }, + "parserOptions": { + "ecmaVersion": 5 + }, + "plugins": [], + "rules": { + "array-bracket-newline": "off", + "array-bracket-spacing": "off", + "array-callback-return": "off", + "array-element-newline": "off", + "arrow-body-style": "error", + "arrow-parens": [ + "error", + "as-needed" + ], + "arrow-spacing": [ + "error", + { + "after": true, + "before": true + } + ], + "block-scoped-var": "off", + "block-spacing": "off", + "brace-style": "off", + "callback-return": "off", + "camelcase": "off", + "capitalized-comments": "off", + "class-methods-use-this": "error", + "comma-dangle": "off", + "comma-spacing": "off", + "comma-style": "off", + "complexity": "off", + "computed-property-spacing": "off", + "consistent-return": "off", + "consistent-this": "off", + "curly": "off", + "default-case": "off", + "default-case-last": "error", + "default-param-last": "error", + "dot-location": "off", + "dot-notation": "off", + "eol-last": "off", + "eqeqeq": "off", + "func-call-spacing": "off", + "func-name-matching": "off", + "func-names": "off", + "func-style": "off", + "function-call-argument-newline": "off", + "function-paren-newline": "off", + "generator-star-spacing": "error", + "global-require": "off", + "grouped-accessor-pairs": "error", + "guard-for-in": "off", + "handle-callback-err": "off", + "id-blacklist": "error", + "id-denylist": "error", + "id-length": "off", + "id-match": "error", + "implicit-arrow-linebreak": "error", + "indent": "off", + "indent-legacy": "off", + "init-declarations": "off", + "jsx-quotes": "error", + "key-spacing": "off", + "keyword-spacing": [ + "error", + { + "before": true, + "after": false, + "overrides": { + "case": { + "after": true + }, + "do": { + "after": true + }, + "else": { + "after": true + }, + "return": { + "after": true + }, + "throw": { + "after": true + }, + "try": { + "after": true + }, + "catch": { + "after": true + } + } + } + ], + "line-comment-position": "off", + "linebreak-style": "off", + "lines-around-comment": "off", + "lines-around-directive": "off", + "lines-between-class-members": "error", + "max-classes-per-file": "error", + "max-depth": "off", + "max-len": "off", + "max-lines": "off", + "max-lines-per-function": "off", + "max-nested-callbacks": "error", + "max-params": "off", + "max-statements": "off", + "max-statements-per-line": "off", + "multiline-comment-style": "off", + "multiline-ternary": "off", + "new-parens": "off", + "newline-after-var": "off", + "newline-before-return": "off", + "newline-per-chained-call": "off", + "no-alert": "off", + "no-array-constructor": "off", + "no-await-in-loop": "error", + "no-bitwise": "off", + "no-buffer-constructor": "off", + "no-caller": "error", + "no-catch-shadow": "off", + "no-confusing-arrow": "error", + "no-console": "off", + "no-constant-condition": [ + "error", + { + "checkLoops": false + } + ], + "no-constructor-return": "error", + "no-continue": "off", + "no-div-regex": "off", + "no-duplicate-imports": "error", + "no-else-return": "off", + "no-empty-function": "off", + "no-eq-null": "off", + "no-eval": "off", + "no-extend-native": "off", + "no-extra-bind": "off", + "no-extra-label": "off", + "no-extra-parens": "off", + "no-floating-decimal": "off", + "no-implicit-coercion": [ + "error", + { + "boolean": false, + "number": false, + "string": false + } + ], + "no-implicit-globals": "off", + "no-implied-eval": "error", + "no-inline-comments": "off", + "no-invalid-this": "off", + "no-iterator": "error", + "no-label-var": "off", + "no-labels": "off", + "no-lone-blocks": "off", + "no-lonely-if": "off", + "no-loop-func": "off", + "no-loss-of-precision": "error", + "no-magic-numbers": "off", + "no-mixed-operators": "off", + "no-mixed-requires": "off", + "no-multi-assign": "off", + "no-multi-spaces": "off", + "no-multi-str": "error", + "no-multiple-empty-lines": ["warn", { "max": 4, "maxEOF": 0 }], + "no-native-reassign": "off", + "no-negated-condition": "off", + "no-negated-in-lhs": "error", + "no-nested-ternary": "off", + "no-new": "off", + "no-new-func": "off", + "no-new-object": "off", + "no-new-require": "error", + "no-new-wrappers": "error", + "no-octal-escape": "error", + "no-param-reassign": "off", + "no-path-concat": "error", + "no-plusplus": "off", + "no-process-env": "off", + "no-process-exit": "off", + "no-promise-executor-return": "error", + "no-proto": "off", + "no-restricted-exports": "error", + "no-restricted-globals": "error", + "no-restricted-imports": "error", + "no-restricted-modules": "error", + "no-restricted-properties": "error", + "no-restricted-syntax": "error", + "no-return-assign": "off", + "no-return-await": "error", + "no-script-url": "off", + "no-self-compare": "off", + "no-sequences": "off", + "no-shadow": "off", + "no-spaced-func": "off", + "no-sync": "off", + "no-tabs": "off", + "no-template-curly-in-string": "error", + "no-ternary": "off", + "no-throw-literal": "off", + "no-trailing-spaces": "error", + "no-undef-init": "off", + "no-undefined": "off", + "no-underscore-dangle": "off", + "no-unmodified-loop-condition": "off", + "no-unneeded-ternary": "off", + "no-unreachable-loop": "error", + "no-unused-expressions": "off", + "no-use-before-define": "off", + "no-useless-backreference": "error", + "no-useless-call": "off", + "no-useless-computed-key": "error", + "no-useless-concat": "off", + "no-useless-constructor": "error", + "no-useless-rename": "error", + "no-useless-return": "off", + "no-var": "off", + "no-void": "off", + "no-warning-comments": "off", + "no-whitespace-before-property": "error", + "nonblock-statement-body-position": [ + "error", + "any" + ], + "object-curly-newline": "off", + "object-curly-spacing": "off", + "object-property-newline": "off", + "object-shorthand": "off", + "one-var": "off", + "one-var-declaration-per-line": "off", + "operator-assignment": "off", + "operator-linebreak": "off", + "padded-blocks": "off", + "padding-line-between-statements": "error", + "prefer-arrow-callback": "off", + "prefer-const": "off", + "prefer-destructuring": "off", + "prefer-exponentiation-operator": "off", + "prefer-named-capture-group": "off", + "prefer-numeric-literals": "error", + "prefer-object-spread": "off", + "prefer-promise-reject-errors": "error", + "prefer-reflect": "off", + "prefer-regex-literals": "off", + "prefer-rest-params": "off", + "prefer-spread": "off", + "prefer-template": "off", + "quote-props": "off", + "quotes": "off", + "radix": "off", + "require-atomic-updates": "error", + "require-await": "error", + "require-jsdoc": "off", + "require-unicode-regexp": "off", + "rest-spread-spacing": "error", + "semi": "off", + "semi-spacing": "off", + "semi-style": "off", + "sort-imports": "error", + "sort-keys": "off", + "sort-vars": "off", + "space-before-blocks": "off", + "space-before-function-paren": "off", + "space-in-parens": "off", + "space-infix-ops": "off", + "space-unary-ops": "off", + "spaced-comment": "off", + "strict": "off", + "switch-colon-spacing": "off", + "symbol-description": "error", + "template-curly-spacing": "error", + "template-tag-spacing": "error", + "unicode-bom": [ + "error", + "never" + ], + "valid-jsdoc": "off", + "valid-typeof": [ + "error", + { + "requireStringLiterals": false + } + ], + "vars-on-top": "off", + "wrap-iife": "off", + "wrap-regex": "off", + "yield-star-spacing": "error", + "yoda": "off", + "no-useless-escape": "off", + "no-unused-vars": "off", + "no-empty": "off", + "no-extra-semi": "off", + "no-redeclare": "off", + "no-control-regex": "off", + "no-mixed-spaces-and-tabs": "off", + "no-extra-boolean-cast": "off", + "no-prototype-builtins": "off", + "no-undef": "off", + "no-unreachable": "off", + "no-self-assign": "off" + } +} diff --git a/core/modules/commander.js b/core/modules/commander.js index b55679a2e8..b73e39b0f6 100644 --- a/core/modules/commander.js +++ b/core/modules/commander.js @@ -6,10 +6,7 @@ module-type: global The $tw.Commander class is a command interpreter \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -173,5 +170,3 @@ Commander.initCommands = function(moduleType) { }; exports.Commander = Commander; - -})(); diff --git a/core/modules/commands/build.js b/core/modules/commands/build.js index 60456372dc..cbb7663f18 100644 --- a/core/modules/commands/build.js +++ b/core/modules/commands/build.js @@ -6,10 +6,7 @@ module-type: command Command to build a build target \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -48,5 +45,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/clearpassword.js b/core/modules/commands/clearpassword.js index 9f714a3ef6..915c60d234 100644 --- a/core/modules/commands/clearpassword.js +++ b/core/modules/commands/clearpassword.js @@ -6,10 +6,7 @@ module-type: command Clear password for crypto operations \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -29,5 +26,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/commands.js b/core/modules/commands/commands.js index 813f190644..ddaa387db0 100644 --- a/core/modules/commands/commands.js +++ b/core/modules/commands/commands.js @@ -7,10 +7,6 @@ Runs the commands returned from a filter \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -38,5 +34,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/deletetiddlers.js b/core/modules/commands/deletetiddlers.js index 3d8b855d9e..797a6428a4 100644 --- a/core/modules/commands/deletetiddlers.js +++ b/core/modules/commands/deletetiddlers.js @@ -6,10 +6,7 @@ module-type: command Command to delete tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -38,5 +35,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/editions.js b/core/modules/commands/editions.js index cc802b9f5d..c46489d095 100644 --- a/core/modules/commands/editions.js +++ b/core/modules/commands/editions.js @@ -6,10 +6,7 @@ module-type: command Command to list the available editions \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -35,5 +32,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/fetch.js b/core/modules/commands/fetch.js index 07cda691c8..be076eb3c9 100644 --- a/core/modules/commands/fetch.js +++ b/core/modules/commands/fetch.js @@ -6,10 +6,7 @@ module-type: command Commands to fetch external tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -171,5 +168,3 @@ Command.prototype.processBody = function(body,type,options,url) { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/help.js b/core/modules/commands/help.js index 90c1908291..861c8f6d8b 100644 --- a/core/modules/commands/help.js +++ b/core/modules/commands/help.js @@ -6,10 +6,7 @@ module-type: command Help command \*/ -(function(){ -/*jshint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -37,5 +34,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/import.js b/core/modules/commands/import.js index 9465c3da1c..7c7b6740d3 100644 --- a/core/modules/commands/import.js +++ b/core/modules/commands/import.js @@ -6,10 +6,7 @@ module-type: command Command to import tiddlers from a file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -44,5 +41,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/init.js b/core/modules/commands/init.js index 2d053ae3c7..ed48a54941 100644 --- a/core/modules/commands/init.js +++ b/core/modules/commands/init.js @@ -6,10 +6,7 @@ module-type: command Command to initialise an empty wiki folder \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -55,5 +52,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/listen.js b/core/modules/commands/listen.js index ca6e6e0765..80cb182936 100644 --- a/core/modules/commands/listen.js +++ b/core/modules/commands/listen.js @@ -6,10 +6,7 @@ module-type: command Listen for HTTP requests and serve tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Server = require("$:/core/modules/server/server.js").Server; @@ -44,5 +41,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/load.js b/core/modules/commands/load.js index 8fd9cba104..e19ecd59ac 100644 --- a/core/modules/commands/load.js +++ b/core/modules/commands/load.js @@ -6,10 +6,7 @@ module-type: command Command to load tiddlers from a file or directory \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -47,5 +44,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/makelibrary.js b/core/modules/commands/makelibrary.js index 3af2e49433..b8ad2e5b63 100644 --- a/core/modules/commands/makelibrary.js +++ b/core/modules/commands/makelibrary.js @@ -6,10 +6,7 @@ module-type: command Command to pack all of the plugins in the library into a plugin tiddler of type "library" \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -41,5 +38,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/output.js b/core/modules/commands/output.js index 0532f58d76..d43eb2596f 100644 --- a/core/modules/commands/output.js +++ b/core/modules/commands/output.js @@ -6,10 +6,7 @@ module-type: command Command to set the default output location (defaults to current working directory) \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -34,5 +31,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/password.js b/core/modules/commands/password.js index 85d53fa33d..27139a9ed0 100644 --- a/core/modules/commands/password.js +++ b/core/modules/commands/password.js @@ -6,10 +6,7 @@ module-type: command Save password for crypto operations \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -32,5 +29,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/render.js b/core/modules/commands/render.js index bd8b23171a..c85feda92a 100644 --- a/core/modules/commands/render.js +++ b/core/modules/commands/render.js @@ -6,10 +6,7 @@ module-type: command Render individual tiddlers and save the results to the specified files \*/ -(function(){ - /*jslint node: true, browser: true */ - /*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -66,6 +63,3 @@ Render individual tiddlers and save the results to the specified files }; exports.Command = Command; - - })(); - \ No newline at end of file diff --git a/core/modules/commands/rendertiddler.js b/core/modules/commands/rendertiddler.js index 41812aea14..2a996c8c16 100755 --- a/core/modules/commands/rendertiddler.js +++ b/core/modules/commands/rendertiddler.js @@ -6,10 +6,7 @@ module-type: command Command to render a tiddler and save it to a file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -53,5 +50,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/rendertiddlers.js b/core/modules/commands/rendertiddlers.js index 78272cc33c..f392ba7046 100644 --- a/core/modules/commands/rendertiddlers.js +++ b/core/modules/commands/rendertiddlers.js @@ -6,10 +6,7 @@ module-type: command Command to render several tiddlers to a folder of files \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -65,5 +62,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/save.js b/core/modules/commands/save.js index 3cb7ef08c6..1d9155623e 100644 --- a/core/modules/commands/save.js +++ b/core/modules/commands/save.js @@ -6,10 +6,7 @@ module-type: command Saves individual tiddlers in their raw text or binary format to the specified files \*/ -(function(){ - /*jslint node: true, browser: true */ - /*global $tw: false */ "use strict"; exports.info = { @@ -64,6 +61,3 @@ Saves individual tiddlers in their raw text or binary format to the specified fi }; exports.Command = Command; - - })(); - \ No newline at end of file diff --git a/core/modules/commands/savelibrarytiddlers.js b/core/modules/commands/savelibrarytiddlers.js index af42d7c8a8..431960edd4 100644 --- a/core/modules/commands/savelibrarytiddlers.js +++ b/core/modules/commands/savelibrarytiddlers.js @@ -16,10 +16,7 @@ The pathname specifies the pathname to the folder in which the JSON files should The skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -94,5 +91,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/savetiddler.js b/core/modules/commands/savetiddler.js index efc484ec7b..492fe9f124 100644 --- a/core/modules/commands/savetiddler.js +++ b/core/modules/commands/savetiddler.js @@ -6,10 +6,7 @@ module-type: command Command to save the content of a tiddler to a file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -47,5 +44,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/savetiddlers.js b/core/modules/commands/savetiddlers.js index 9c750e2049..0e15d5edca 100644 --- a/core/modules/commands/savetiddlers.js +++ b/core/modules/commands/savetiddlers.js @@ -6,10 +6,7 @@ module-type: command Command to save several tiddlers to a folder of files \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -52,5 +49,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/savewikifolder.js b/core/modules/commands/savewikifolder.js index 461ff6f049..751e0e54ea 100644 --- a/core/modules/commands/savewikifolder.js +++ b/core/modules/commands/savewikifolder.js @@ -15,10 +15,7 @@ The following options are supported: Supports backward compatibility with --savewikifolder [] [ [=] ]* \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -221,5 +218,3 @@ WikiFolderMaker.prototype.saveFile = function(filename,encoding,data) { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/server.js b/core/modules/commands/server.js index 507d1281d9..d1ee487a2a 100644 --- a/core/modules/commands/server.js +++ b/core/modules/commands/server.js @@ -6,10 +6,7 @@ module-type: command Deprecated legacy command for serving tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Server = require("$:/core/modules/server/server.js").Server; @@ -51,5 +48,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/setfield.js b/core/modules/commands/setfield.js index 3f8ec1d14f..7be8cbdca8 100644 --- a/core/modules/commands/setfield.js +++ b/core/modules/commands/setfield.js @@ -6,10 +6,7 @@ module-type: command Command to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -54,5 +51,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/unpackplugin.js b/core/modules/commands/unpackplugin.js index 6f85c066f5..5e2bd33c06 100644 --- a/core/modules/commands/unpackplugin.js +++ b/core/modules/commands/unpackplugin.js @@ -6,10 +6,7 @@ module-type: command Command to extract the shadow tiddlers from within a plugin \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -40,5 +37,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/verbose.js b/core/modules/commands/verbose.js index 6b01178292..23b5303c7f 100644 --- a/core/modules/commands/verbose.js +++ b/core/modules/commands/verbose.js @@ -6,10 +6,7 @@ module-type: command Verbose command \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -30,5 +27,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/commands/version.js b/core/modules/commands/version.js index 24edc97f79..e14c635de2 100644 --- a/core/modules/commands/version.js +++ b/core/modules/commands/version.js @@ -6,10 +6,7 @@ module-type: command Version command \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -28,5 +25,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/core/modules/config.js b/core/modules/config.js index fdcf94d0fe..3546a21bc1 100644 --- a/core/modules/config.js +++ b/core/modules/config.js @@ -6,10 +6,7 @@ module-type: config Core configuration constants \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.preferences = {}; @@ -37,5 +34,3 @@ exports.htmlVoidElements = "area,base,br,col,command,embed,hr,img,input,keygen,l exports.htmlBlockElements = "address,article,aside,audio,blockquote,canvas,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,nav,ol,p,pre,section,summary,table,tfoot,ul,video".split(","); exports.htmlUnsafeElements = "script".split(","); - -})(); diff --git a/core/modules/deserializers.js b/core/modules/deserializers.js index bff4aaea16..972a41bb0b 100644 --- a/core/modules/deserializers.js +++ b/core/modules/deserializers.js @@ -6,10 +6,7 @@ module-type: tiddlerdeserializer Functions to deserialise tiddlers from a block of text \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["application/x-tiddler-html-div"] = function(text,fields) { @@ -181,5 +178,3 @@ var deserializeTiddlerDiv = function(text /* [,fields] */) { } return undefined; }; - -})(); diff --git a/core/modules/editor/engines/framed.js b/core/modules/editor/engines/framed.js index 34d11dec7c..9b1c8cd81f 100644 --- a/core/modules/editor/engines/framed.js +++ b/core/modules/editor/engines/framed.js @@ -6,10 +6,7 @@ module-type: library Text editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea \*/ -(function(){ -/*jslint node: true,browser: true */ -/*global $tw: false */ "use strict"; var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height"; @@ -273,5 +270,3 @@ FramedEngine.prototype.executeTextOperation = function(operation) { }; exports.FramedEngine = FramedEngine; - -})(); diff --git a/core/modules/editor/engines/simple.js b/core/modules/editor/engines/simple.js index 809dc58ea9..93f0215222 100644 --- a/core/modules/editor/engines/simple.js +++ b/core/modules/editor/engines/simple.js @@ -6,10 +6,7 @@ module-type: library Text editor engine based on a simple input or textarea tag \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height"; @@ -172,5 +169,3 @@ SimpleEngine.prototype.executeTextOperation = function(operation) { }; exports.SimpleEngine = SimpleEngine; - -})(); diff --git a/core/modules/editor/factory.js b/core/modules/editor/factory.js index 6157ec67fd..984cc76bad 100644 --- a/core/modules/editor/factory.js +++ b/core/modules/editor/factory.js @@ -6,10 +6,7 @@ module-type: library Factory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DEFAULT_MIN_TEXT_AREA_HEIGHT = "100px"; // Minimum height of textareas in pixels @@ -386,5 +383,3 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) { } exports.editTextWidgetFactory = editTextWidgetFactory; - -})(); diff --git a/core/modules/editor/operations/bitmap/clear.js b/core/modules/editor/operations/bitmap/clear.js index cb86b43a12..48d5772d5a 100644 --- a/core/modules/editor/operations/bitmap/clear.js +++ b/core/modules/editor/operations/bitmap/clear.js @@ -6,10 +6,7 @@ module-type: bitmapeditoroperation Bitmap editor operation to clear the image \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["clear"] = function(event) { @@ -20,5 +17,3 @@ exports["clear"] = function(event) { // Save changes this.strokeEnd(); }; - -})(); diff --git a/core/modules/editor/operations/bitmap/resize.js b/core/modules/editor/operations/bitmap/resize.js index 12059a5cbc..683cfa11aa 100644 --- a/core/modules/editor/operations/bitmap/resize.js +++ b/core/modules/editor/operations/bitmap/resize.js @@ -6,10 +6,7 @@ module-type: bitmapeditoroperation Bitmap editor operation to resize the image \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["resize"] = function(event) { @@ -25,5 +22,3 @@ exports["resize"] = function(event) { // Save the image into the tiddler this.saveChanges(); }; - -})(); diff --git a/core/modules/editor/operations/bitmap/rotate-left.js b/core/modules/editor/operations/bitmap/rotate-left.js index 6e1b15d3e2..25aa77300d 100644 --- a/core/modules/editor/operations/bitmap/rotate-left.js +++ b/core/modules/editor/operations/bitmap/rotate-left.js @@ -6,10 +6,7 @@ module-type: bitmapeditoroperation Bitmap editor operation to rotate the image left by 90 degrees \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["rotate-left"] = function(event) { @@ -20,5 +17,3 @@ exports["rotate-left"] = function(event) { // Save the image into the tiddler this.saveChanges(); }; - -})(); diff --git a/core/modules/editor/operations/text/excise.js b/core/modules/editor/operations/text/excise.js index 0753705c59..c0920cf096 100644 --- a/core/modules/editor/operations/text/excise.js +++ b/core/modules/editor/operations/text/excise.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to excise the selection to a new tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function isMarkdown(mediaType) { @@ -53,5 +50,3 @@ exports["excise"] = function(event,operation) { operation.newSelStart = operation.selStart; operation.newSelEnd = operation.selStart + operation.replacement.length; }; - -})(); diff --git a/core/modules/editor/operations/text/focus-editor.js b/core/modules/editor/operations/text/focus-editor.js index 0b36f731cb..19e4a8997d 100644 --- a/core/modules/editor/operations/text/focus-editor.js +++ b/core/modules/editor/operations/text/focus-editor.js @@ -4,14 +4,9 @@ type: application/javascript module-type: texteditoroperation Simply focus the Text editor \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["focus-editor"] = function(event,operation) { operation = null; }; - -})(); \ No newline at end of file diff --git a/core/modules/editor/operations/text/insert-text.js b/core/modules/editor/operations/text/insert-text.js index 7847149685..0e24d7413d 100644 --- a/core/modules/editor/operations/text/insert-text.js +++ b/core/modules/editor/operations/text/insert-text.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation insert text at the caret position. If there is a selection it is replaced. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["insert-text"] = function(event,operation) { @@ -19,5 +16,3 @@ exports["insert-text"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - -})(); diff --git a/core/modules/editor/operations/text/make-link.js b/core/modules/editor/operations/text/make-link.js index e8caf21c53..ca11f34c62 100644 --- a/core/modules/editor/operations/text/make-link.js +++ b/core/modules/editor/operations/text/make-link.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to make a link \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["make-link"] = function(event,operation) { @@ -25,5 +22,3 @@ exports["make-link"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - -})(); diff --git a/core/modules/editor/operations/text/prefix-lines.js b/core/modules/editor/operations/text/prefix-lines.js index 0a005c96f6..0f3412b678 100644 --- a/core/modules/editor/operations/text/prefix-lines.js +++ b/core/modules/editor/operations/text/prefix-lines.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to add a prefix to the selected lines \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["prefix-lines"] = function(event,operation) { @@ -51,5 +48,3 @@ exports["prefix-lines"] = function(event,operation) { operation.newSelEnd = operation.newSelStart + operation.replacement.length; } }; - -})(); diff --git a/core/modules/editor/operations/text/replace-all.js b/core/modules/editor/operations/text/replace-all.js index fc1541935f..f6fe0b24cb 100644 --- a/core/modules/editor/operations/text/replace-all.js +++ b/core/modules/editor/operations/text/replace-all.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to replace the entire text \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["replace-all"] = function(event,operation) { @@ -19,5 +16,3 @@ exports["replace-all"] = function(event,operation) { operation.newSelStart = 0; operation.newSelEnd = operation.replacement.length; }; - -})(); diff --git a/core/modules/editor/operations/text/replace-selection.js b/core/modules/editor/operations/text/replace-selection.js index 740a41fb19..24ef9c70f7 100644 --- a/core/modules/editor/operations/text/replace-selection.js +++ b/core/modules/editor/operations/text/replace-selection.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to replace the selection \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["replace-selection"] = function(event,operation) { @@ -19,5 +16,3 @@ exports["replace-selection"] = function(event,operation) { operation.newSelStart = operation.selStart; operation.newSelEnd = operation.selStart + operation.replacement.length; }; - -})(); diff --git a/core/modules/editor/operations/text/save-selection.js b/core/modules/editor/operations/text/save-selection.js index 484e6ff3c8..00b7174b69 100644 --- a/core/modules/editor/operations/text/save-selection.js +++ b/core/modules/editor/operations/text/save-selection.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to save the current selection in a specified tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["save-selection"] = function(event,operation) { @@ -19,5 +16,3 @@ exports["save-selection"] = function(event,operation) { this.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd)); } }; - -})(); diff --git a/core/modules/editor/operations/text/wrap-lines.js b/core/modules/editor/operations/text/wrap-lines.js index 2e4f229430..9e85d50ca1 100644 --- a/core/modules/editor/operations/text/wrap-lines.js +++ b/core/modules/editor/operations/text/wrap-lines.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to wrap the selected lines with a prefix and suffix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["wrap-lines"] = function(event,operation) { @@ -43,5 +40,3 @@ exports["wrap-lines"] = function(event,operation) { operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart); } }; - -})(); diff --git a/core/modules/editor/operations/text/wrap-selection.js b/core/modules/editor/operations/text/wrap-selection.js index 665d72eb45..4fb463b740 100644 --- a/core/modules/editor/operations/text/wrap-selection.js +++ b/core/modules/editor/operations/text/wrap-selection.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to wrap the selection with the specified prefix and suffix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["wrap-selection"] = function(event,operation) { @@ -134,5 +131,3 @@ exports["wrap-selection"] = function(event,operation) { addPrefixSuffix(); } }; - -})(); diff --git a/core/modules/filterrunprefixes/all.js b/core/modules/filterrunprefixes/all.js index 652936de01..7d57ce408f 100644 --- a/core/modules/filterrunprefixes/all.js +++ b/core/modules/filterrunprefixes/all.js @@ -7,10 +7,7 @@ Union of sets without de-duplication. Equivalent to = filter run prefix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -21,5 +18,3 @@ exports.all = function(operationSubFunction) { results.push.apply(results, operationSubFunction(source,widget)); }; }; - -})(); diff --git a/core/modules/filterrunprefixes/and.js b/core/modules/filterrunprefixes/and.js index 309c228e67..c394b243e1 100644 --- a/core/modules/filterrunprefixes/and.js +++ b/core/modules/filterrunprefixes/and.js @@ -7,10 +7,7 @@ Intersection of sets. Equivalent to + filter run prefix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -24,5 +21,3 @@ exports.and = function(operationSubFunction,options) { results.pushTop(operationSubFunction(source,widget)); }; }; - -})(); diff --git a/core/modules/filterrunprefixes/cascade.js b/core/modules/filterrunprefixes/cascade.js index 486e75f456..98044579ce 100644 --- a/core/modules/filterrunprefixes/cascade.js +++ b/core/modules/filterrunprefixes/cascade.js @@ -3,10 +3,7 @@ title: $:/core/modules/filterrunprefixes/cascade.js type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -39,5 +36,3 @@ exports.cascade = function(operationSubFunction,options) { } } }; - -})(); \ No newline at end of file diff --git a/core/modules/filterrunprefixes/else.js b/core/modules/filterrunprefixes/else.js index 6e9ef29b3f..89635069c6 100644 --- a/core/modules/filterrunprefixes/else.js +++ b/core/modules/filterrunprefixes/else.js @@ -6,10 +6,7 @@ module-type: filterrunprefix Equivalent to ~ filter run prefix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.else = function(operationSubFunction) { } }; }; - -})(); diff --git a/core/modules/filterrunprefixes/except.js b/core/modules/filterrunprefixes/except.js index 659f14228d..5ebed7feab 100644 --- a/core/modules/filterrunprefixes/except.js +++ b/core/modules/filterrunprefixes/except.js @@ -7,10 +7,7 @@ Difference of sets. Equivalent to - filter run prefix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -21,5 +18,3 @@ exports.except = function(operationSubFunction) { results.remove(operationSubFunction(source,widget)); }; }; - -})(); diff --git a/core/modules/filterrunprefixes/filter.js b/core/modules/filterrunprefixes/filter.js index 4ab0571095..0c6ed150f9 100644 --- a/core/modules/filterrunprefixes/filter.js +++ b/core/modules/filterrunprefixes/filter.js @@ -4,10 +4,7 @@ type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -35,5 +32,3 @@ exports.filter = function(operationSubFunction,options) { } } }; - -})(); diff --git a/core/modules/filterrunprefixes/intersection.js b/core/modules/filterrunprefixes/intersection.js index 34d36066fd..ce9ea45463 100644 --- a/core/modules/filterrunprefixes/intersection.js +++ b/core/modules/filterrunprefixes/intersection.js @@ -4,10 +4,7 @@ type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.intersection = function(operationSubFunction) { } }; }; - -})(); diff --git a/core/modules/filterrunprefixes/map.js b/core/modules/filterrunprefixes/map.js index b756d6699c..c7f1ae5eb4 100644 --- a/core/modules/filterrunprefixes/map.js +++ b/core/modules/filterrunprefixes/map.js @@ -3,10 +3,7 @@ title: $:/core/modules/filterrunprefixes/map.js type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -40,5 +37,3 @@ exports.map = function(operationSubFunction,options) { } } }; - -})(); \ No newline at end of file diff --git a/core/modules/filterrunprefixes/or.js b/core/modules/filterrunprefixes/or.js index 82eff083a8..c4ffb20144 100644 --- a/core/modules/filterrunprefixes/or.js +++ b/core/modules/filterrunprefixes/or.js @@ -6,10 +6,7 @@ module-type: filterrunprefix Equivalent to a filter run with no prefix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -20,5 +17,3 @@ exports.or = function(operationSubFunction) { results.pushTop(operationSubFunction(source,widget)); }; }; - -})(); diff --git a/core/modules/filterrunprefixes/reduce.js b/core/modules/filterrunprefixes/reduce.js index ee2998837a..351d976bd9 100644 --- a/core/modules/filterrunprefixes/reduce.js +++ b/core/modules/filterrunprefixes/reduce.js @@ -3,10 +3,7 @@ title: $:/core/modules/filterrunprefixes/reduce.js type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -36,5 +33,3 @@ exports.reduce = function(operationSubFunction,options) { } } }; - -})(); diff --git a/core/modules/filterrunprefixes/sort.js b/core/modules/filterrunprefixes/sort.js index d8d3761261..126376887d 100644 --- a/core/modules/filterrunprefixes/sort.js +++ b/core/modules/filterrunprefixes/sort.js @@ -4,10 +4,7 @@ type: application/javascript module-type: filterrunprefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -48,5 +45,3 @@ exports.sort = function(operationSubFunction,options) { } } }; - -})(); \ No newline at end of file diff --git a/core/modules/filterrunprefixes/then.js b/core/modules/filterrunprefixes/then.js index 9f6d5c76a6..0f37fb37ff 100644 --- a/core/modules/filterrunprefixes/then.js +++ b/core/modules/filterrunprefixes/then.js @@ -6,10 +6,7 @@ module-type: filterrunprefix Replace results of previous runs unless empty \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.then = function(operationSubFunction) { } }; }; - -})(); diff --git a/core/modules/filters.js b/core/modules/filters.js index aa82a352af..321f5a2114 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -6,10 +6,7 @@ module-type: wikimethod Adds tiddler filtering methods to the $tw.Wiki object. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widgetClass = require("$:/core/modules/widgets/widget.js").widget; @@ -367,5 +364,3 @@ exports.compileFilter = function(filterString) { this.filterCacheCount++; return fnMeasured; }; - -})(); diff --git a/core/modules/filters/addprefix.js b/core/modules/filters/addprefix.js index d1f0a822b2..497af1f3bc 100644 --- a/core/modules/filters/addprefix.js +++ b/core/modules/filters/addprefix.js @@ -8,10 +8,7 @@ especially useful in contexts where only a filter expression is allowed and macro substitution isn't available. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -24,5 +21,3 @@ exports.addprefix = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/addsuffix.js b/core/modules/filters/addsuffix.js index fb80c2573e..27ca659e96 100644 --- a/core/modules/filters/addsuffix.js +++ b/core/modules/filters/addsuffix.js @@ -8,10 +8,7 @@ especially useful in contexts where only a filter expression is allowed and macro substitution isn't available. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -24,5 +21,3 @@ exports.addsuffix = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/after.js b/core/modules/filters/after.js index 6e5f3c77c8..9840a73fa4 100644 --- a/core/modules/filters/after.js +++ b/core/modules/filters/after.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the tiddler from the current list that is after the tiddler named in the operand. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.after = function(source,operator,options) { return [results[index + 1]]; } }; - -})(); diff --git a/core/modules/filters/all.js b/core/modules/filters/all.js index 3554a74b32..790afeca5d 100644 --- a/core/modules/filters/all.js +++ b/core/modules/filters/all.js @@ -8,10 +8,7 @@ Filter operator for selecting tiddlers [all[shadows+tiddlers]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var allFilterOperators; @@ -54,5 +51,3 @@ exports.all = function(source,operator,options) { } return results.makeTiddlerIterator(options.wiki); }; - -})(); diff --git a/core/modules/filters/all/current.js b/core/modules/filters/all/current.js index 82ad8cca35..098fa85f07 100644 --- a/core/modules/filters/all/current.js +++ b/core/modules/filters/all/current.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[current]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.current = function(source,prefix,options) { return []; } }; - -})(); diff --git a/core/modules/filters/all/missing.js b/core/modules/filters/all/missing.js index 4ba932089c..c87e43c98e 100644 --- a/core/modules/filters/all/missing.js +++ b/core/modules/filters/all/missing.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[missing]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -18,5 +15,3 @@ Export our filter function exports.missing = function(source,prefix,options) { return options.wiki.getMissingTitles(); }; - -})(); diff --git a/core/modules/filters/all/orphans.js b/core/modules/filters/all/orphans.js index d5b4fc2702..a2e29ba97a 100644 --- a/core/modules/filters/all/orphans.js +++ b/core/modules/filters/all/orphans.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[orphans]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -18,5 +15,3 @@ Export our filter function exports.orphans = function(source,prefix,options) { return options.wiki.getOrphanTitles(); }; - -})(); diff --git a/core/modules/filters/all/shadows.js b/core/modules/filters/all/shadows.js index 51654fee20..7946afa736 100644 --- a/core/modules/filters/all/shadows.js +++ b/core/modules/filters/all/shadows.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[shadows]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -18,5 +15,3 @@ Export our filter function exports.shadows = function(source,prefix,options) { return options.wiki.allShadowTitles(); }; - -})(); diff --git a/core/modules/filters/all/tags.js b/core/modules/filters/all/tags.js index 2aaa9dec25..de243453fe 100644 --- a/core/modules/filters/all/tags.js +++ b/core/modules/filters/all/tags.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[tags]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -18,5 +15,3 @@ Export our filter function exports.tags = function(source,prefix,options) { return Object.keys(options.wiki.getTagMap()); }; - -})(); diff --git a/core/modules/filters/all/tiddlers.js b/core/modules/filters/all/tiddlers.js index 9a6e438756..4e480bf4da 100644 --- a/core/modules/filters/all/tiddlers.js +++ b/core/modules/filters/all/tiddlers.js @@ -6,10 +6,7 @@ module-type: allfilteroperator Filter function for [all[tiddlers]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -18,5 +15,3 @@ Export our filter function exports.tiddlers = function(source,prefix,options) { return options.wiki.allTitles(); }; - -})(); diff --git a/core/modules/filters/backlinks.js b/core/modules/filters/backlinks.js index f066d936a6..f8bd4903a3 100644 --- a/core/modules/filters/backlinks.js +++ b/core/modules/filters/backlinks.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning all the backlinks from a tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.backlinks = function(source,operator,options) { }); return results.makeTiddlerIterator(options.wiki); }; - -})(); diff --git a/core/modules/filters/backtranscludes.js b/core/modules/filters/backtranscludes.js index 253b9dd7b4..2451ab9416 100644 --- a/core/modules/filters/backtranscludes.js +++ b/core/modules/filters/backtranscludes.js @@ -7,9 +7,6 @@ Filter operator for returning all the backtranscludes from a tiddler \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* diff --git a/core/modules/filters/before.js b/core/modules/filters/before.js index 292cc619d3..1d3473b69f 100644 --- a/core/modules/filters/before.js +++ b/core/modules/filters/before.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the tiddler from the current list that is before the tiddler named in the operand. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.before = function(source,operator,options) { return [results[index - 1]]; } }; - -})(); diff --git a/core/modules/filters/commands.js b/core/modules/filters/commands.js index 5ab575a783..753c8b8db6 100644 --- a/core/modules/filters/commands.js +++ b/core/modules/filters/commands.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the commands available in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.commands = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/compare.js b/core/modules/filters/compare.js index fd509a28ef..ac84f8da2b 100644 --- a/core/modules/filters/compare.js +++ b/core/modules/filters/compare.js @@ -6,10 +6,7 @@ module-type: filteroperator General purpose comparison operator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.compare = function(source,operator,options) { @@ -36,5 +33,3 @@ var modes = { "lteq": function(value) {return value <= 0;}, "lt": function(value) {return value < 0;} } - -})(); diff --git a/core/modules/filters/contains.js b/core/modules/filters/contains.js index 918f415cdb..910b43a4a9 100644 --- a/core/modules/filters/contains.js +++ b/core/modules/filters/contains.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for finding values in array fields \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -41,5 +38,3 @@ exports.contains = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/count.js b/core/modules/filters/count.js index 638b135dfc..3a7be70ad3 100644 --- a/core/modules/filters/count.js +++ b/core/modules/filters/count.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the number of entries in the current list. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.count = function(source,operator,options) { }); return [count + ""]; }; - -})(); diff --git a/core/modules/filters/crypto.js b/core/modules/filters/crypto.js index cfb524d061..8b05220b2a 100644 --- a/core/modules/filters/crypto.js +++ b/core/modules/filters/crypto.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for cryptography, using the Stanford JavaScript library \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.sha256 = function(source,operator,options) { @@ -20,5 +17,3 @@ exports.sha256 = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/days.js b/core/modules/filters/days.js index 318d72567b..663416d64c 100644 --- a/core/modules/filters/days.js +++ b/core/modules/filters/days.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator that selects tiddlers with a specified date field within a specified date interval. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -46,5 +43,3 @@ exports.days = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/deserialize.js b/core/modules/filters/deserialize.js index 5511f29e80..cebab43d32 100644 --- a/core/modules/filters/deserialize.js +++ b/core/modules/filters/deserialize.js @@ -4,10 +4,7 @@ type: application/javascript module-type: filteroperator Filter operator for deserializing string data into JSON representing tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["deserialize"] = function(source,operator,options) { @@ -35,5 +32,3 @@ exports["deserialize"] = function(source,operator,options) { } return results; } - -})(); \ No newline at end of file diff --git a/core/modules/filters/deserializers.js b/core/modules/filters/deserializers.js index ddca998ea3..7ab96fbaea 100644 --- a/core/modules/filters/deserializers.js +++ b/core/modules/filters/deserializers.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the deserializers in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.deserializers = function(source,operator,options) { results.sort(); return results; }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/duplicateslugs.js b/core/modules/filters/duplicateslugs.js index dbd2f23e71..30b6da0a72 100644 --- a/core/modules/filters/duplicateslugs.js +++ b/core/modules/filters/duplicateslugs.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter function for [duplicateslugs[]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.duplicateslugs = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/each.js b/core/modules/filters/each.js index 5c2c290776..0a389b5c3e 100644 --- a/core/modules/filters/each.js +++ b/core/modules/filters/each.js @@ -7,10 +7,7 @@ Filter operator that selects one tiddler for each unique value of the specified With suffix "list", selects all tiddlers that are values in a specified list field. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -63,5 +60,3 @@ exports.each = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/eachday.js b/core/modules/filters/eachday.js index 6fdccf879c..86f343e25e 100644 --- a/core/modules/filters/eachday.js +++ b/core/modules/filters/eachday.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator that selects one tiddler for each unique day covered by the specified date field \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -35,5 +32,3 @@ exports.eachday = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/editiondescription.js b/core/modules/filters/editiondescription.js index 2ee387163d..ce526a9a96 100644 --- a/core/modules/filters/editiondescription.js +++ b/core/modules/filters/editiondescription.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the descriptions of the specified edition names \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -29,5 +26,3 @@ exports.editiondescription = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/editions.js b/core/modules/filters/editions.js index 05ae57c312..919dacfe97 100644 --- a/core/modules/filters/editions.js +++ b/core/modules/filters/editions.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the available editions in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.editions = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/else.js b/core/modules/filters/else.js index c3829371ec..cffcf33ef3 100644 --- a/core/modules/filters/else.js +++ b/core/modules/filters/else.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for replacing an empty input list with a constant, passing a non-empty input list straight through \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ exports.else = function(source,operator,options) { return results; } }; - -})(); diff --git a/core/modules/filters/encodings.js b/core/modules/filters/encodings.js index 231e4d1197..ecb0d7289d 100644 --- a/core/modules/filters/encodings.js +++ b/core/modules/filters/encodings.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for applying decodeURIComponent() to each item. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -116,5 +113,3 @@ exports.escapecss = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/enlist.js b/core/modules/filters/enlist.js index 0baaa93663..69aa9e9e0d 100644 --- a/core/modules/filters/enlist.js +++ b/core/modules/filters/enlist.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning its operand parsed as a list \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -38,5 +35,3 @@ exports.enlist = function(source,operator,options) { return list; } }; - -})(); diff --git a/core/modules/filters/field.js b/core/modules/filters/field.js index 3a07c0c27a..8dd608d457 100644 --- a/core/modules/filters/field.js +++ b/core/modules/filters/field.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for comparing fields for equality \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -71,5 +68,3 @@ exports.field = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/fields.js b/core/modules/filters/fields.js index 2f0bf26dc5..e569f0e5e3 100644 --- a/core/modules/filters/fields.js +++ b/core/modules/filters/fields.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the fields on the selected tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -41,5 +38,3 @@ exports.fields = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/filter.js b/core/modules/filters/filter.js index f15cbefc52..466d43f8b3 100644 --- a/core/modules/filters/filter.js +++ b/core/modules/filters/filter.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning those input titles that pass a subfilter \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -30,5 +27,3 @@ exports.filter = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/format.js b/core/modules/filters/format.js index 2fc786d887..944007797a 100644 --- a/core/modules/filters/format.js +++ b/core/modules/filters/format.js @@ -4,10 +4,7 @@ type: application/javascript module-type: filteroperator Filter operator for formatting strings \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var formatFilterOperators; @@ -42,5 +39,3 @@ exports.format = function(source,operator,options) { return results; } }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/format/date.js b/core/modules/filters/format/date.js index fcf1a5cad0..c74df3444e 100644 --- a/core/modules/filters/format/date.js +++ b/core/modules/filters/format/date.js @@ -3,10 +3,7 @@ title: $:/core/modules/filters/format/date.js type: application/javascript module-type: formatfilteroperator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.date = function(source,operand,options) { }); return results; }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/format/json.js b/core/modules/filters/format/json.js index 2130a76ed3..5db3658e74 100644 --- a/core/modules/filters/format/json.js +++ b/core/modules/filters/format/json.js @@ -3,10 +3,7 @@ title: $:/core/modules/filters/format/json.js type: application/javascript module-type: formatfilteroperator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -31,5 +28,3 @@ exports.json = function(source,operand,options) { }); return results; }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/format/relativedate.js b/core/modules/filters/format/relativedate.js index f771bb3397..ab9c02d72b 100644 --- a/core/modules/filters/format/relativedate.js +++ b/core/modules/filters/format/relativedate.js @@ -3,10 +3,7 @@ title: $:/core/modules/filters/format/relativedate.js type: application/javascript module-type: formatfilteroperator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.relativedate = function(source,operand,options) { }); return results; }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/format/timestamp.js b/core/modules/filters/format/timestamp.js index d6f5afe30d..9be351c339 100644 --- a/core/modules/filters/format/timestamp.js +++ b/core/modules/filters/format/timestamp.js @@ -3,10 +3,7 @@ title: $:/core/modules/filters/format/timestamp.js type: application/javascript module-type: formatfilteroperator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,4 +19,3 @@ exports.timestamp = function(source,operand,options) { }); return results; }; -})(); \ No newline at end of file diff --git a/core/modules/filters/format/titlelist.js b/core/modules/filters/format/titlelist.js index 47608323d2..9e9c827ef1 100644 --- a/core/modules/filters/format/titlelist.js +++ b/core/modules/filters/format/titlelist.js @@ -3,10 +3,7 @@ title: $:/core/modules/filters/format/titlelist.js type: application/javascript module-type: formatfilteroperator \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -21,5 +18,3 @@ exports.titlelist = function(source,operand,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/function.js b/core/modules/filters/function.js index bc0702cf4f..b6f2fa6365 100644 --- a/core/modules/filters/function.js +++ b/core/modules/filters/function.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning those input titles that are returned from a function \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -37,5 +34,3 @@ exports.function = function(source,operator,options) { // console.log(`function ${functionName} with params ${JSON.stringify(params)} results: ${JSON.stringify(results)}`); return results; }; - -})(); diff --git a/core/modules/filters/get.js b/core/modules/filters/get.js index feae6684ed..8c078ec85c 100644 --- a/core/modules/filters/get.js +++ b/core/modules/filters/get.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for replacing tiddler titles by the value of the field specified in the operand. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.get = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/getindex.js b/core/modules/filters/getindex.js index b604d4ec8e..ce34b33565 100644 --- a/core/modules/filters/getindex.js +++ b/core/modules/filters/getindex.js @@ -6,10 +6,7 @@ module-type: filteroperator returns the value at a given index of datatiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.getindex = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/getvariable.js b/core/modules/filters/getvariable.js index 43451abed8..eab6971943 100644 --- a/core/modules/filters/getvariable.js +++ b/core/modules/filters/getvariable.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.getvariable = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/has.js b/core/modules/filters/has.js index f081809a3e..ceb117f9c1 100644 --- a/core/modules/filters/has.js +++ b/core/modules/filters/has.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking if a tiddler has the specified field or index \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -66,5 +63,3 @@ exports.has = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/haschanged.js b/core/modules/filters/haschanged.js index 4c63b7758d..43d660cb95 100644 --- a/core/modules/filters/haschanged.js +++ b/core/modules/filters/haschanged.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returns tiddlers from the list that have a non-zero changecount. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.haschanged = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/indexes.js b/core/modules/filters/indexes.js index 3bbb226591..1de730217f 100644 --- a/core/modules/filters/indexes.js +++ b/core/modules/filters/indexes.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the indexes of a data tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ exports.indexes = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/insertafter.js b/core/modules/filters/insertafter.js index 79c84cb95c..a8f1edf129 100644 --- a/core/modules/filters/insertafter.js +++ b/core/modules/filters/insertafter.js @@ -6,10 +6,7 @@ module-type: filteroperator Insert an item after another item in a list \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -42,5 +39,3 @@ exports.insertafter = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/insertbefore.js b/core/modules/filters/insertbefore.js index 4a032daf97..33e41887f0 100644 --- a/core/modules/filters/insertbefore.js +++ b/core/modules/filters/insertbefore.js @@ -6,10 +6,7 @@ module-type: filteroperator Insert an item before another item in a list \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -42,5 +39,3 @@ exports.insertbefore = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is.js b/core/modules/filters/is.js index b759437864..87861a6e92 100644 --- a/core/modules/filters/is.js +++ b/core/modules/filters/is.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking tiddler properties \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var isFilterOperators; @@ -44,5 +41,3 @@ exports.is = function(source,operator,options) { return results; } }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/is/binary.js b/core/modules/filters/is/binary.js index 01b9aabd39..7fb02772e5 100644 --- a/core/modules/filters/is/binary.js +++ b/core/modules/filters/is/binary.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[binary]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.binary = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/blank.js b/core/modules/filters/is/blank.js index 8f500da452..274d3eba11 100644 --- a/core/modules/filters/is/blank.js +++ b/core/modules/filters/is/blank.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[blank]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.blank = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/current.js b/core/modules/filters/is/current.js index b5b88f6167..1853c5e28b 100644 --- a/core/modules/filters/is/current.js +++ b/core/modules/filters/is/current.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[current]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -33,5 +30,3 @@ exports.current = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/draft.js b/core/modules/filters/is/draft.js index 016da3f49a..caba7849fa 100644 --- a/core/modules/filters/is/draft.js +++ b/core/modules/filters/is/draft.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[draft]] analagous to [has[draft.of]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.draft = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/image.js b/core/modules/filters/is/image.js index 3527540d33..be276c8348 100644 --- a/core/modules/filters/is/image.js +++ b/core/modules/filters/is/image.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[image]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.image = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/missing.js b/core/modules/filters/is/missing.js index 8ebf90d41b..7720ac4727 100644 --- a/core/modules/filters/is/missing.js +++ b/core/modules/filters/is/missing.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[missing]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.missing = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/orphan.js b/core/modules/filters/is/orphan.js index 94d09ad613..8827da4c94 100644 --- a/core/modules/filters/is/orphan.js +++ b/core/modules/filters/is/orphan.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[orphan]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -33,5 +30,3 @@ exports.orphan = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/shadow.js b/core/modules/filters/is/shadow.js index cfb6b926cb..4f1335c692 100644 --- a/core/modules/filters/is/shadow.js +++ b/core/modules/filters/is/shadow.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[shadow]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.shadow = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/system.js b/core/modules/filters/is/system.js index 84d0656fdb..b27feb3923 100644 --- a/core/modules/filters/is/system.js +++ b/core/modules/filters/is/system.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[system]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.system = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/tag.js b/core/modules/filters/is/tag.js index d614029c4b..69d1713be9 100644 --- a/core/modules/filters/is/tag.js +++ b/core/modules/filters/is/tag.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[tag]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -33,5 +30,3 @@ exports.tag = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/tiddler.js b/core/modules/filters/is/tiddler.js index d97cd78923..24ca5cee29 100644 --- a/core/modules/filters/is/tiddler.js +++ b/core/modules/filters/is/tiddler.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[tiddler]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.tiddler = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/is/variable.js b/core/modules/filters/is/variable.js index 110d9a7c83..624a179d72 100644 --- a/core/modules/filters/is/variable.js +++ b/core/modules/filters/is/variable.js @@ -6,10 +6,7 @@ module-type: isfilteroperator Filter function for [is[variable]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.variable = function(source,prefix,options) { } return results; }; - -})(); diff --git a/core/modules/filters/json-ops.js b/core/modules/filters/json-ops.js index 0c58964ebc..8f16ad4175 100644 --- a/core/modules/filters/json-ops.js +++ b/core/modules/filters/json-ops.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for JSON operations \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["jsonget"] = function(source,operator,options) { @@ -279,6 +276,3 @@ function setDataItem(data,indexes,value) { } return data; } - -})(); - \ No newline at end of file diff --git a/core/modules/filters/limit.js b/core/modules/filters/limit.js index c878c1ac77..9b440155e8 100644 --- a/core/modules/filters/limit.js +++ b/core/modules/filters/limit.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for chopping the results to a specified maximum number of entries \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -30,5 +27,3 @@ exports.limit = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/links.js b/core/modules/filters/links.js index 0305f4b7f9..0b56a8871e 100644 --- a/core/modules/filters/links.js +++ b/core/modules/filters/links.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning all the links from a tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.links = function(source,operator,options) { }); return results.makeTiddlerIterator(options.wiki); }; - -})(); diff --git a/core/modules/filters/list.js b/core/modules/filters/list.js index 1b23b9382b..2a5e7b8bbf 100644 --- a/core/modules/filters/list.js +++ b/core/modules/filters/list.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the tiddlers whose title is listed in the operand tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -31,5 +28,3 @@ exports.list = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/listed.js b/core/modules/filters/listed.js index 8cb1c2f68e..6103052458 100644 --- a/core/modules/filters/listed.js +++ b/core/modules/filters/listed.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning all tiddlers that have the selected tiddlers in a list \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.listed = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/listops.js b/core/modules/filters/listops.js index 89bd8eeb7c..ccd81b9fe1 100644 --- a/core/modules/filters/listops.js +++ b/core/modules/filters/listops.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for manipulating the current selection list \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -116,5 +113,3 @@ exports.zth = function(source,operator,options) { }); return results.slice(count,count + 1); }; - -})(); diff --git a/core/modules/filters/lookup.js b/core/modules/filters/lookup.js index aaf81729d2..f500b87ddc 100644 --- a/core/modules/filters/lookup.js +++ b/core/modules/filters/lookup.js @@ -12,10 +12,7 @@ field or index value. If the 2nd suffix does not exist, it defaults to field. If the second operand is missing it defaults to "text" for fields, and "0" for indexes \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -49,5 +46,3 @@ exports.lookup = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/match.js b/core/modules/filters/match.js index 34caf487e3..ce0b2b9d44 100644 --- a/core/modules/filters/match.js +++ b/core/modules/filters/match.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking if a title matches a string \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -49,5 +46,3 @@ exports.match = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/math.js b/core/modules/filters/math.js index 6b1d45f088..4c2a9168a6 100644 --- a/core/modules/filters/math.js +++ b/core/modules/filters/math.js @@ -13,10 +13,7 @@ Note that strings are converted to numbers automatically. Trailing non-digits ar * "12kk" converts to 12 \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.negate = makeNumericBinaryOperator( @@ -243,5 +240,3 @@ function makeNumericArrayOperator(fnCalc) { return results; }; }; - -})(); diff --git a/core/modules/filters/minlength.js b/core/modules/filters/minlength.js index d4e679bef1..4428049f83 100644 --- a/core/modules/filters/minlength.js +++ b/core/modules/filters/minlength.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for filtering out titles that don't meet the minimum length in the operand \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -25,5 +22,3 @@ exports.minlength = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/moduleproperty.js b/core/modules/filters/moduleproperty.js index 2aa0e6a0ca..67b994d52c 100644 --- a/core/modules/filters/moduleproperty.js +++ b/core/modules/filters/moduleproperty.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter [[module-name]moduleproperty[name]] retrieve a module property \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -33,5 +30,3 @@ exports.moduleproperty = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/modules.js b/core/modules/filters/modules.js index a9e1850187..b09d8d825d 100644 --- a/core/modules/filters/modules.js +++ b/core/modules/filters/modules.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the titles of the modules of a given type in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -37,5 +34,3 @@ exports.modules = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/moduletypes.js b/core/modules/filters/moduletypes.js index 67321caea1..752c383ac5 100644 --- a/core/modules/filters/moduletypes.js +++ b/core/modules/filters/moduletypes.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the module types in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -23,5 +20,3 @@ exports.moduletypes = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/next.js b/core/modules/filters/next.js index c12295bf59..01c7e1f90a 100644 --- a/core/modules/filters/next.js +++ b/core/modules/filters/next.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.next = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/plugintiddlers.js b/core/modules/filters/plugintiddlers.js index 489ec52e5f..c56f88a919 100644 --- a/core/modules/filters/plugintiddlers.js +++ b/core/modules/filters/plugintiddlers.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the titles of the shadow tiddlers within a plugin \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.plugintiddlers = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/prefix.js b/core/modules/filters/prefix.js index 97dd56f4e0..9b53cd78ea 100644 --- a/core/modules/filters/prefix.js +++ b/core/modules/filters/prefix.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking if a title starts with a prefix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -50,5 +47,3 @@ exports.prefix = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/previous.js b/core/modules/filters/previous.js index ed975458cd..2d76aa59f1 100644 --- a/core/modules/filters/previous.js +++ b/core/modules/filters/previous.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.previous = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/range.js b/core/modules/filters/range.js index 09b8d0334b..7932e85483 100644 --- a/core/modules/filters/range.js +++ b/core/modules/filters/range.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for generating a numeric range. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -99,5 +96,3 @@ exports.range = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/reduce.js b/core/modules/filters/reduce.js index efe8aea4a9..112a927bc4 100644 --- a/core/modules/filters/reduce.js +++ b/core/modules/filters/reduce.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -44,5 +41,3 @@ exports.reduce = function(source,operator,options) { return []; } }; - -})(); diff --git a/core/modules/filters/regexp.js b/core/modules/filters/regexp.js index 837e77575c..b9d3e2377c 100644 --- a/core/modules/filters/regexp.js +++ b/core/modules/filters/regexp.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for regexp matching \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -68,5 +65,3 @@ exports.regexp = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/removeprefix.js b/core/modules/filters/removeprefix.js index 185e1fc873..5e9e4919e1 100644 --- a/core/modules/filters/removeprefix.js +++ b/core/modules/filters/removeprefix.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -34,5 +31,3 @@ exports.removeprefix = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/removesuffix.js b/core/modules/filters/removesuffix.js index 76c0c7b35f..98f4f9ba51 100644 --- a/core/modules/filters/removesuffix.js +++ b/core/modules/filters/removesuffix.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -38,5 +35,3 @@ exports.removesuffix = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/sameday.js b/core/modules/filters/sameday.js index 5dfc351287..91e3e55e35 100644 --- a/core/modules/filters/sameday.js +++ b/core/modules/filters/sameday.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator that selects tiddlers with a modified date field on the same day as the provided value. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -29,5 +26,3 @@ exports.sameday = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/search.js b/core/modules/filters/search.js index dcb534c073..532cdc839a 100644 --- a/core/modules/filters/search.js +++ b/core/modules/filters/search.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for searching for the text in the operand tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -55,5 +52,3 @@ exports.search = function(source,operator,options) { }); } }; - -})(); diff --git a/core/modules/filters/shadowsource.js b/core/modules/filters/shadowsource.js index f16e2bcc77..2797599918 100644 --- a/core/modules/filters/shadowsource.js +++ b/core/modules/filters/shadowsource.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the source plugins for shadow tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ exports.shadowsource = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/slugify.js b/core/modules/filters/slugify.js index afc12423e3..694426d2a2 100644 --- a/core/modules/filters/slugify.js +++ b/core/modules/filters/slugify.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for slugifying a tiddler title \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.slugify = function(source,operator,options) { @@ -19,5 +16,3 @@ exports.slugify = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/sort.js b/core/modules/filters/sort.js index 176cd47408..cdfe797283 100644 --- a/core/modules/filters/sort.js +++ b/core/modules/filters/sort.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for sorting \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -52,5 +49,3 @@ var prepare_results = function (source) { }); return results; }; - -})(); diff --git a/core/modules/filters/sortsub.js b/core/modules/filters/sortsub.js index d328be09c9..291829992a 100644 --- a/core/modules/filters/sortsub.js +++ b/core/modules/filters/sortsub.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for sorting by a subfilter \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -48,5 +45,3 @@ exports.sortsub = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/splitbefore.js b/core/modules/filters/splitbefore.js index 071cead3eb..c38b5480df 100644 --- a/core/modules/filters/splitbefore.js +++ b/core/modules/filters/splitbefore.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator that splits each result on the first occurance of the specified separator and returns the unique values. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.splitbefore = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/storyviews.js b/core/modules/filters/storyviews.js index 41fffed92b..df097582ac 100644 --- a/core/modules/filters/storyviews.js +++ b/core/modules/filters/storyviews.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the story views in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -25,5 +22,3 @@ exports.storyviews = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/strings.js b/core/modules/filters/strings.js index 11f7634b74..4183bac7f6 100644 --- a/core/modules/filters/strings.js +++ b/core/modules/filters/strings.js @@ -8,10 +8,7 @@ Filter operators for strings. Unary/binary operators work on each item in turn, Sum/product/maxall/minall operate on the entire list, returning a single item. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.length = makeStringBinaryOperator( @@ -293,5 +290,3 @@ exports.charcode = function(source,operator,options) { }); return [chars.join("")]; }; - -})(); \ No newline at end of file diff --git a/core/modules/filters/subfilter.js b/core/modules/filters/subfilter.js index 79ae82777d..5e35f7cd17 100644 --- a/core/modules/filters/subfilter.js +++ b/core/modules/filters/subfilter.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning its operand evaluated as a filter \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -29,5 +26,3 @@ exports.subfilter = function(source,operator,options) { return list; } }; - -})(); diff --git a/core/modules/filters/substitute.js b/core/modules/filters/substitute.js index 655ef7321b..925e592863 100644 --- a/core/modules/filters/substitute.js +++ b/core/modules/filters/substitute.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for substituting variables and embedded filter expressions with their corresponding values \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ exports.substitute = function(source,operator,options) { return results; }; -})(); - \ No newline at end of file diff --git a/core/modules/filters/subtiddlerfields.js b/core/modules/filters/subtiddlerfields.js index 681dd243df..d16150706a 100644 --- a/core/modules/filters/subtiddlerfields.js +++ b/core/modules/filters/subtiddlerfields.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.subtiddlerfields = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/suffix.js b/core/modules/filters/suffix.js index 96b32c4a9e..e31d405685 100644 --- a/core/modules/filters/suffix.js +++ b/core/modules/filters/suffix.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking if a title ends with a suffix \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -54,5 +51,3 @@ exports.suffix = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/tag.js b/core/modules/filters/tag.js index 951a28c6bd..fdb67af798 100644 --- a/core/modules/filters/tag.js +++ b/core/modules/filters/tag.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for checking for the presence of a tag \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -54,5 +51,3 @@ exports.tag = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/tagging.js b/core/modules/filters/tagging.js index a7fea68ec1..0efff01ef0 100644 --- a/core/modules/filters/tagging.js +++ b/core/modules/filters/tagging.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning all tiddlers that are tagged with the selected tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.tagging = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/tags.js b/core/modules/filters/tags.js index 4a73fd83fc..c4ce719c8c 100644 --- a/core/modules/filters/tags.js +++ b/core/modules/filters/tags.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning all the tags of the selected tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.tags = function(source,operator,options) { }); return Object.keys(tags); }; - -})(); diff --git a/core/modules/filters/then.js b/core/modules/filters/then.js index 994775c08f..5d9c75a08b 100644 --- a/core/modules/filters/then.js +++ b/core/modules/filters/then.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for replacing any titles with a constant \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -22,5 +19,3 @@ exports.then = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/title.js b/core/modules/filters/title.js index 88ac6f1328..a1dff909b6 100644 --- a/core/modules/filters/title.js +++ b/core/modules/filters/title.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for comparing title fields for equality \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.title = function(source,operator,options) { } return results; }; - -})(); diff --git a/core/modules/filters/transcludes.js b/core/modules/filters/transcludes.js index 8f42b3bae2..0245dcaa40 100644 --- a/core/modules/filters/transcludes.js +++ b/core/modules/filters/transcludes.js @@ -7,9 +7,6 @@ Filter operator for returning all the transcludes from a tiddler \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* diff --git a/core/modules/filters/unknown.js b/core/modules/filters/unknown.js index 6ae5baaf0a..8fe2a6889e 100644 --- a/core/modules/filters/unknown.js +++ b/core/modules/filters/unknown.js @@ -8,10 +8,7 @@ Filter operator for handling unknown filter operators. Not intended to be used directly by end users, hence the square brackets around the name. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var fieldFilterOperatorFn = require("$:/core/modules/filters/field.js").field; @@ -45,5 +42,3 @@ exports["[unknown]"] = function(source,operator,options) { // Otherwise, use the "field" operator return fieldFilterOperatorFn(source,operator,options); }; - -})(); diff --git a/core/modules/filters/untagged.js b/core/modules/filters/untagged.js index d16de87f8e..22f3f6d0c7 100644 --- a/core/modules/filters/untagged.js +++ b/core/modules/filters/untagged.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning all the selected tiddlers that are untagged \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -25,5 +22,3 @@ exports.untagged = function(source,operator,options) { }); return results; }; - -})(); diff --git a/core/modules/filters/variables.js b/core/modules/filters/variables.js index c92b780d26..f35885cb06 100644 --- a/core/modules/filters/variables.js +++ b/core/modules/filters/variables.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the active variables \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ exports.variables = function(source,operator,options) { } return names.sort(); }; - -})(); diff --git a/core/modules/filters/wikiparserrules.js b/core/modules/filters/wikiparserrules.js index 213298515e..5bdbcdfdf4 100644 --- a/core/modules/filters/wikiparserrules.js +++ b/core/modules/filters/wikiparserrules.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator for returning the names of the wiki parser rules in this wiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -27,5 +24,3 @@ exports.wikiparserrules = function(source,operator,options) { results.sort(); return results; }; - -})(); diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js index ae17297a59..2f305d0ca3 100644 --- a/core/modules/filters/x-listops.js +++ b/core/modules/filters/x-listops.js @@ -6,10 +6,7 @@ module-type: filteroperator Extended filter operators to manipulate the current list. \*/ -(function () { - /*jslint node: true, browser: true */ - /*global $tw: false */ "use strict"; /* @@ -231,5 +228,3 @@ Extended filter operators to manipulate the current list. } return cycleValueInArray(results,operands,step); } - -})(); diff --git a/core/modules/indexers/field-indexer.js b/core/modules/indexers/field-indexer.js index 3aefc99ac5..47e89de34a 100644 --- a/core/modules/indexers/field-indexer.js +++ b/core/modules/indexers/field-indexer.js @@ -6,10 +6,7 @@ module-type: indexer Indexes the tiddlers with each field value \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global modules: false */ "use strict"; var DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128; @@ -139,5 +136,3 @@ FieldIndexer.prototype.lookup = function(name,value) { }; exports.FieldIndexer = FieldIndexer; - -})(); diff --git a/core/modules/indexers/tag-indexer.js b/core/modules/indexers/tag-indexer.js index 4721fea088..7844173c63 100644 --- a/core/modules/indexers/tag-indexer.js +++ b/core/modules/indexers/tag-indexer.js @@ -6,10 +6,7 @@ module-type: indexer Indexes the tiddlers with each tag \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global modules: false */ "use strict"; function TagIndexer(wiki) { @@ -94,5 +91,3 @@ TagSubIndexer.prototype.lookup = function(tag) { exports.TagIndexer = TagIndexer; - -})(); diff --git a/core/modules/info/platform.js b/core/modules/info/platform.js index 0eb0b9ea8b..9775b2d6b4 100644 --- a/core/modules/info/platform.js +++ b/core/modules/info/platform.js @@ -6,10 +6,7 @@ module-type: info Initialise basic platform $:/info/ tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) { @@ -48,5 +45,3 @@ exports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) { } return infoTiddlerFields; }; - -})(); diff --git a/core/modules/keyboard.js b/core/modules/keyboard.js index 1740ba35ba..8adab9e811 100644 --- a/core/modules/keyboard.js +++ b/core/modules/keyboard.js @@ -6,10 +6,7 @@ module-type: global Keyboard handling utilities \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var namedKeys = { @@ -383,5 +380,3 @@ KeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) { }; exports.KeyboardManager = KeyboardManager; - -})(); diff --git a/core/modules/language.js b/core/modules/language.js index 5e44d66967..b0409ee4dd 100644 --- a/core/modules/language.js +++ b/core/modules/language.js @@ -6,10 +6,7 @@ module-type: global The $tw.Language() manages translateable strings \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -41,5 +38,3 @@ Language.prototype.getRawString = function(title) { }; exports.Language = Language; - -})(); diff --git a/core/modules/macros/changecount.js b/core/modules/macros/changecount.js index 2d0f62e5a3..871ce630d2 100644 --- a/core/modules/macros/changecount.js +++ b/core/modules/macros/changecount.js @@ -6,10 +6,7 @@ module-type: macro Macro to return the changecount for the current tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ Run the macro exports.run = function() { return this.wiki.getChangeCount(this.getVariable("currentTiddler")) + ""; }; - -})(); diff --git a/core/modules/macros/contrastcolour.js b/core/modules/macros/contrastcolour.js index eab6f0108f..8134bdeff1 100644 --- a/core/modules/macros/contrastcolour.js +++ b/core/modules/macros/contrastcolour.js @@ -6,10 +6,7 @@ module-type: macro Macro to choose which of two colours has the highest contrast with a base colour \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -51,5 +48,3 @@ exports.run = function(target,fallbackTarget,colourA,colourB) { brightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114; return Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB; }; - -})(); diff --git a/core/modules/macros/csvtiddlers.js b/core/modules/macros/csvtiddlers.js index a492fd81c9..e5d2f91370 100644 --- a/core/modules/macros/csvtiddlers.js +++ b/core/modules/macros/csvtiddlers.js @@ -6,10 +6,7 @@ module-type: macro Macro to output tiddlers matching a filter to CSV \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -75,5 +72,3 @@ exports.run = function(filter,format) { function quoteAndEscape(value) { return "\"" + value.replace(/"/mg,"\"\"") + "\""; } - -})(); diff --git a/core/modules/macros/displayshortcuts.js b/core/modules/macros/displayshortcuts.js index b182972383..10f6c72210 100644 --- a/core/modules/macros/displayshortcuts.js +++ b/core/modules/macros/displayshortcuts.js @@ -6,10 +6,7 @@ module-type: macro Macro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -41,5 +38,3 @@ exports.run = function(shortcuts,prefix,separator,suffix) { return ""; } }; - -})(); diff --git a/core/modules/macros/jsontiddler.js b/core/modules/macros/jsontiddler.js index 509fd55593..ff5ae3c9bd 100644 --- a/core/modules/macros/jsontiddler.js +++ b/core/modules/macros/jsontiddler.js @@ -6,10 +6,7 @@ module-type: macro Macro to output a single tiddler to JSON \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -37,4 +34,3 @@ exports.run = function(title) { return JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces); }; -})(); diff --git a/core/modules/macros/jsontiddlers.js b/core/modules/macros/jsontiddlers.js index eeaf70d3a0..25e08f6b9f 100644 --- a/core/modules/macros/jsontiddlers.js +++ b/core/modules/macros/jsontiddlers.js @@ -6,10 +6,7 @@ module-type: macro Macro to output tiddlers matching a filter to JSON \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -29,5 +26,3 @@ Run the macro exports.run = function(filter,spaces) { return this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces)); }; - -})(); diff --git a/core/modules/macros/makedatauri.js b/core/modules/macros/makedatauri.js index 0ff862df1c..db67495e53 100644 --- a/core/modules/macros/makedatauri.js +++ b/core/modules/macros/makedatauri.js @@ -8,10 +8,7 @@ Macro to convert a string of text to a data URI <> \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -32,5 +29,3 @@ Run the macro exports.run = function(text,type,_canonical_uri) { return $tw.utils.makeDataUri(text,type,_canonical_uri); }; - -})(); diff --git a/core/modules/macros/now.js b/core/modules/macros/now.js index d0a15dce27..86513f1b9d 100644 --- a/core/modules/macros/now.js +++ b/core/modules/macros/now.js @@ -6,10 +6,7 @@ module-type: macro Macro to return a formatted version of the current time \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ Run the macro exports.run = function(format) { return $tw.utils.formatDateString(new Date(),format || "0hh:0mm, DDth MMM YYYY"); }; - -})(); diff --git a/core/modules/macros/qualify.js b/core/modules/macros/qualify.js index de9dc6c8e5..ff6716dd4b 100644 --- a/core/modules/macros/qualify.js +++ b/core/modules/macros/qualify.js @@ -6,10 +6,7 @@ module-type: macro Macro to qualify a state tiddler title according \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -28,5 +25,3 @@ Run the macro exports.run = function(title) { return title + "-" + this.getStateQualifier(); }; - -})(); diff --git a/core/modules/macros/resolvepath.js b/core/modules/macros/resolvepath.js index d84d87563e..68c2e4d047 100644 --- a/core/modules/macros/resolvepath.js +++ b/core/modules/macros/resolvepath.js @@ -6,10 +6,7 @@ module-type: macro Resolves a relative path for an absolute rootpath. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "resolvepath"; @@ -25,5 +22,3 @@ Run the macro exports.run = function(source, root) { return $tw.utils.resolvePath(source, root); }; - -})(); diff --git a/core/modules/macros/unusedtitle.js b/core/modules/macros/unusedtitle.js index 1078f650d4..056c713df6 100644 --- a/core/modules/macros/unusedtitle.js +++ b/core/modules/macros/unusedtitle.js @@ -5,10 +5,7 @@ module-type: macro Macro to return a new title that is unused in the wiki. It can be given a name as a base. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "unusedtitle"; @@ -33,5 +30,3 @@ exports.run = function(baseName,separator,template,startCount) { // options.prefix must be a string! return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}).trim(); }; - -})(); diff --git a/core/modules/macros/version.js b/core/modules/macros/version.js index b0dd0b0d5c..0a5315b817 100644 --- a/core/modules/macros/version.js +++ b/core/modules/macros/version.js @@ -6,10 +6,7 @@ module-type: macro Macro to return the TiddlyWiki core version number \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ Run the macro exports.run = function() { return $tw.version; }; - -})(); diff --git a/core/modules/parsers/audioparser.js b/core/modules/parsers/audioparser.js index 5eb2ff9852..601de058e3 100644 --- a/core/modules/parsers/audioparser.js +++ b/core/modules/parsers/audioparser.js @@ -6,10 +6,7 @@ module-type: parser The audio parser parses an audio tiddler into an embeddable HTML element \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var AudioParser = function(type,text,options) { @@ -36,6 +33,3 @@ exports["audio/ogg"] = AudioParser; exports["audio/mpeg"] = AudioParser; exports["audio/mp3"] = AudioParser; exports["audio/mp4"] = AudioParser; - -})(); - diff --git a/core/modules/parsers/binaryparser.js b/core/modules/parsers/binaryparser.js index 60e7b5ef02..947d9befaa 100644 --- a/core/modules/parsers/binaryparser.js +++ b/core/modules/parsers/binaryparser.js @@ -6,10 +6,7 @@ module-type: parser The binary parser parses a binary tiddler into a warning message and download link \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var BINARY_WARNING_MESSAGE = "$:/core/ui/BinaryWarning"; @@ -69,6 +66,3 @@ var BinaryParser = function(type,text,options) { }; exports["application/octet-stream"] = BinaryParser; - -})(); - diff --git a/core/modules/parsers/csvparser.js b/core/modules/parsers/csvparser.js index f40b5f0e56..2d32b3a061 100644 --- a/core/modules/parsers/csvparser.js +++ b/core/modules/parsers/csvparser.js @@ -6,10 +6,7 @@ module-type: parser The CSV text parser processes CSV files into a table wrapped in a scrollable widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var CsvParser = function(type,text,options) { @@ -58,6 +55,3 @@ var CsvParser = function(type,text,options) { exports["text/csv"] = CsvParser; exports["text/tab-delimited-values"] = CsvParser; - -})(); - diff --git a/core/modules/parsers/htmlparser.js b/core/modules/parsers/htmlparser.js index 24c9f5d3e3..fee869868d 100644 --- a/core/modules/parsers/htmlparser.js +++ b/core/modules/parsers/htmlparser.js @@ -6,10 +6,7 @@ module-type: parser The HTML parser displays text as raw HTML \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var HtmlParser = function(type,text,options) { @@ -34,6 +31,3 @@ var HtmlParser = function(type,text,options) { }; exports["text/html"] = HtmlParser; - -})(); - diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index d594803b29..c7201445fa 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -6,10 +6,7 @@ module-type: parser The image parser parses an image into an embeddable HTML element \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var ImageParser = function(type,text,options) { @@ -43,6 +40,3 @@ exports["image/heif"] = ImageParser; exports["image/avif"] = ImageParser; exports["image/x-icon"] = ImageParser; exports["image/vnd.microsoft.icon"] = ImageParser; - -})(); - diff --git a/core/modules/parsers/parseutils.js b/core/modules/parsers/parseutils.js index 2a2e363094..30bc395095 100644 --- a/core/modules/parsers/parseutils.js +++ b/core/modules/parsers/parseutils.js @@ -22,10 +22,7 @@ Most functions have the following pattern: The exception is `skipWhiteSpace`, which just returns the position after the whitespace. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -384,5 +381,3 @@ exports.parseAttribute = function(source,pos) { node.end = pos; return node; }; - -})(); diff --git a/core/modules/parsers/pdfparser.js b/core/modules/parsers/pdfparser.js index c7830bf697..0551e93faf 100644 --- a/core/modules/parsers/pdfparser.js +++ b/core/modules/parsers/pdfparser.js @@ -6,10 +6,7 @@ module-type: parser The PDF parser embeds a PDF viewer \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var ImageParser = function(type,text,options) { @@ -30,6 +27,3 @@ var ImageParser = function(type,text,options) { }; exports["application/pdf"] = ImageParser; - -})(); - diff --git a/core/modules/parsers/textparser.js b/core/modules/parsers/textparser.js index 17f9bde106..ca97404ac4 100644 --- a/core/modules/parsers/textparser.js +++ b/core/modules/parsers/textparser.js @@ -6,10 +6,7 @@ module-type: parser The plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TextParser = function(type,text,options) { @@ -32,5 +29,3 @@ exports["application/javascript"] = TextParser; exports["application/json"] = TextParser; exports["text/css"] = TextParser; exports["application/x-tiddler-dictionary"] = TextParser; - -})(); diff --git a/core/modules/parsers/videoparser.js b/core/modules/parsers/videoparser.js index 1c8a38bb27..e4406e56ad 100644 --- a/core/modules/parsers/videoparser.js +++ b/core/modules/parsers/videoparser.js @@ -6,10 +6,7 @@ module-type: parser The video parser parses a video tiddler into an embeddable HTML element \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var VideoParser = function(type,text,options) { @@ -36,5 +33,3 @@ exports["video/ogg"] = VideoParser; exports["video/webm"] = VideoParser; exports["video/mp4"] = VideoParser; exports["video/quicktime"] = VideoParser; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/codeblock.js b/core/modules/parsers/wikiparser/rules/codeblock.js index 6c3480566b..bdecd65be5 100644 --- a/core/modules/parsers/wikiparser/rules/codeblock.js +++ b/core/modules/parsers/wikiparser/rules/codeblock.js @@ -12,10 +12,7 @@ Wiki text rule for code blocks. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "codeblock"; @@ -56,5 +53,3 @@ exports.parse = function() { } }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/codeinline.js b/core/modules/parsers/wikiparser/rules/codeinline.js index 048fc051c0..5606ba478c 100644 --- a/core/modules/parsers/wikiparser/rules/codeinline.js +++ b/core/modules/parsers/wikiparser/rules/codeinline.js @@ -11,10 +11,7 @@ Wiki text inline rule for code runs. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "codeinline"; @@ -54,5 +51,3 @@ exports.parse = function() { }] }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/commentblock.js b/core/modules/parsers/wikiparser/rules/commentblock.js index 1c303f38f8..96d3deb3dc 100644 --- a/core/modules/parsers/wikiparser/rules/commentblock.js +++ b/core/modules/parsers/wikiparser/rules/commentblock.js @@ -18,10 +18,7 @@ xxxx Note that the syntax for comments is simplified to an opening "" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html) \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "commentblock"; @@ -52,5 +49,3 @@ exports.parse = function() { // Don't return any elements return []; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/commentinline.js b/core/modules/parsers/wikiparser/rules/commentinline.js index 671bd79d65..e826b95e62 100644 --- a/core/modules/parsers/wikiparser/rules/commentinline.js +++ b/core/modules/parsers/wikiparser/rules/commentinline.js @@ -12,10 +12,7 @@ Wiki text inline rule for HTML comments. For example: Note that the syntax for comments is simplified to an opening "" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html) \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "commentinline"; @@ -46,5 +43,3 @@ exports.parse = function() { // Don't return any elements return []; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/conditional.js b/core/modules/parsers/wikiparser/rules/conditional.js index c2d6a43b85..4dccf75fbf 100644 --- a/core/modules/parsers/wikiparser/rules/conditional.js +++ b/core/modules/parsers/wikiparser/rules/conditional.js @@ -11,9 +11,6 @@ This is a <%if [{something}] %>Elephant<%elseif [{else}] %>Pelican<%else%>Crocod \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "conditional"; diff --git a/core/modules/parsers/wikiparser/rules/dash.js b/core/modules/parsers/wikiparser/rules/dash.js index 45481bf07b..02d82baec6 100644 --- a/core/modules/parsers/wikiparser/rules/dash.js +++ b/core/modules/parsers/wikiparser/rules/dash.js @@ -12,10 +12,7 @@ This is an em-dash: --- ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "dash"; @@ -36,5 +33,3 @@ exports.parse = function() { entity: dash }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/emphasis/bold.js b/core/modules/parsers/wikiparser/rules/emphasis/bold.js index 3799feeb5a..70f741759f 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/bold.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/bold.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "bold"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/emphasis/italic.js b/core/modules/parsers/wikiparser/rules/emphasis/italic.js index 3e0744c4da..995e581232 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/italic.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/italic.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "italic"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js b/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js index 0fb34fc526..24380ed115 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "strikethrough"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/emphasis/subscript.js b/core/modules/parsers/wikiparser/rules/emphasis/subscript.js index 12be0fbbc4..104ed0294a 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/subscript.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/subscript.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "subscript"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/emphasis/superscript.js b/core/modules/parsers/wikiparser/rules/emphasis/superscript.js index 5a5330d8c6..be71572557 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/superscript.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/superscript.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "superscript"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/emphasis/underscore.js b/core/modules/parsers/wikiparser/rules/emphasis/underscore.js index d36bd242d7..2c2bf71c32 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/underscore.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/underscore.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "underscore"; @@ -46,5 +43,3 @@ exports.parse = function() { children: tree }]; }; - -})(); \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/entity.js b/core/modules/parsers/wikiparser/rules/entity.js index dc3917dafc..df2068b788 100644 --- a/core/modules/parsers/wikiparser/rules/entity.js +++ b/core/modules/parsers/wikiparser/rules/entity.js @@ -10,10 +10,7 @@ Wiki text inline rule for HTML entities. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "entity"; @@ -36,5 +33,3 @@ exports.parse = function() { // Return the entity return [{type: "entity", entity: this.match[0]}]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/extlink.js b/core/modules/parsers/wikiparser/rules/extlink.js index 5b9f57adf0..2678e38735 100644 --- a/core/modules/parsers/wikiparser/rules/extlink.js +++ b/core/modules/parsers/wikiparser/rules/extlink.js @@ -14,10 +14,7 @@ A suppressed external link: ~http://www.tiddlyspace.com/ External links can be suppressed by preceding them with `~`. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "extlink"; @@ -52,5 +49,3 @@ exports.parse = function() { }]; } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js b/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js index 73bdff813d..2fd96183e0 100644 --- a/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js +++ b/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js @@ -14,10 +14,7 @@ Wiki text rule for block-level filtered transclusion. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "filteredtranscludeblock"; @@ -70,5 +67,3 @@ exports.parse = function() { } return [node]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js b/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js index c0b19a941e..ee82ff5171 100644 --- a/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js +++ b/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js @@ -14,10 +14,7 @@ Wiki text rule for inline filtered transclusion. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "filteredtranscludeinline"; @@ -69,5 +66,3 @@ exports.parse = function() { } return [node]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/fnprocdef.js b/core/modules/parsers/wikiparser/rules/fnprocdef.js index 85bd14d5c6..8e675a3d1d 100644 --- a/core/modules/parsers/wikiparser/rules/fnprocdef.js +++ b/core/modules/parsers/wikiparser/rules/fnprocdef.js @@ -20,10 +20,7 @@ definition text ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "fnprocdef"; @@ -92,6 +89,3 @@ exports.parse = function() { } return parseTreeNodes; }; - -})(); - \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/hardlinebreaks.js b/core/modules/parsers/wikiparser/rules/hardlinebreaks.js index 94f517cd47..da28f78084 100644 --- a/core/modules/parsers/wikiparser/rules/hardlinebreaks.js +++ b/core/modules/parsers/wikiparser/rules/hardlinebreaks.js @@ -17,10 +17,7 @@ Not ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "hardlinebreaks"; @@ -56,5 +53,3 @@ exports.parse = function() { // Return the nodes return tree; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/heading.js b/core/modules/parsers/wikiparser/rules/heading.js index 7a0ecb9db9..af2a6ad125 100644 --- a/core/modules/parsers/wikiparser/rules/heading.js +++ b/core/modules/parsers/wikiparser/rules/heading.js @@ -6,10 +6,7 @@ module-type: wikirule Wiki text block rule for headings \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "heading"; @@ -45,4 +42,3 @@ exports.parse = function() { children: tree }]; }; -})(); diff --git a/core/modules/parsers/wikiparser/rules/horizrule.js b/core/modules/parsers/wikiparser/rules/horizrule.js index bacad06ed9..2294add6bc 100644 --- a/core/modules/parsers/wikiparser/rules/horizrule.js +++ b/core/modules/parsers/wikiparser/rules/horizrule.js @@ -10,10 +10,7 @@ Wiki text block rule for rules. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "horizrule"; @@ -30,5 +27,3 @@ exports.parse = function() { this.parser.pos = this.matchRegExp.lastIndex; return [{type: "element", tag: "hr"}]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/html.js b/core/modules/parsers/wikiparser/rules/html.js index 61c4ad9e1e..c5f0e86c56 100644 --- a/core/modules/parsers/wikiparser/rules/html.js +++ b/core/modules/parsers/wikiparser/rules/html.js @@ -17,10 +17,7 @@ This is a widget invocation }}} \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "html"; @@ -194,5 +191,3 @@ exports.isLegalTag = function(tag) { return true; } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/image.js b/core/modules/parsers/wikiparser/rules/image.js index 6f58225e0c..2bc90b80d3 100644 --- a/core/modules/parsers/wikiparser/rules/image.js +++ b/core/modules/parsers/wikiparser/rules/image.js @@ -17,10 +17,7 @@ Wiki text inline rule for embedding images. For example: Generates the `<$image>` widget. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "image"; @@ -129,5 +126,3 @@ exports.parseImage = function(source,pos) { node.end = pos; return node; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/import.js b/core/modules/parsers/wikiparser/rules/import.js index bb1832255d..52332f0e38 100644 --- a/core/modules/parsers/wikiparser/rules/import.js +++ b/core/modules/parsers/wikiparser/rules/import.js @@ -10,10 +10,7 @@ Wiki pragma rule for importing variable definitions ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "import"; @@ -50,5 +47,3 @@ exports.parse = function() { children: [] }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/list.js b/core/modules/parsers/wikiparser/rules/list.js index d89c201b9e..98cc5540fc 100644 --- a/core/modules/parsers/wikiparser/rules/list.js +++ b/core/modules/parsers/wikiparser/rules/list.js @@ -40,10 +40,7 @@ A CSS class can be applied to a list item as follows: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "list"; @@ -152,5 +149,3 @@ exports.parse = function() { // Return the root element of the list return [listStack[0]]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/macrocallblock.js b/core/modules/parsers/wikiparser/rules/macrocallblock.js index a2c10e04ab..3793d563d3 100644 --- a/core/modules/parsers/wikiparser/rules/macrocallblock.js +++ b/core/modules/parsers/wikiparser/rules/macrocallblock.js @@ -10,10 +10,7 @@ Wiki rule for block macro calls ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "macrocallblock"; @@ -52,5 +49,3 @@ exports.parse = function() { this.parser.pos = call.end; return [call]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/macrocallinline.js b/core/modules/parsers/wikiparser/rules/macrocallinline.js index e9f79f09e6..bd6e777bbe 100644 --- a/core/modules/parsers/wikiparser/rules/macrocallinline.js +++ b/core/modules/parsers/wikiparser/rules/macrocallinline.js @@ -10,10 +10,7 @@ Wiki rule for macro calls ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "macrocallinline"; @@ -45,5 +42,3 @@ exports.parse = function() { this.parser.pos = call.end; return [call]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index 2001f70d56..342f5aacd2 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -12,10 +12,7 @@ definition text, including $param$ markers ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "macrodef"; @@ -88,5 +85,3 @@ exports.parse = function() { $tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); return parseTreeNodes; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/parameters.js b/core/modules/parsers/wikiparser/rules/parameters.js index 60bbd89017..ccd50319c7 100644 --- a/core/modules/parsers/wikiparser/rules/parameters.js +++ b/core/modules/parsers/wikiparser/rules/parameters.js @@ -11,10 +11,7 @@ definition text ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "parameters"; @@ -56,5 +53,3 @@ exports.parse = function() { orderedAttributes: orderedAttributes }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/parsermode.js b/core/modules/parsers/wikiparser/rules/parsermode.js index 72a6de067c..868db3e151 100644 --- a/core/modules/parsers/wikiparser/rules/parsermode.js +++ b/core/modules/parsers/wikiparser/rules/parsermode.js @@ -11,10 +11,7 @@ Wiki pragma rule for parser mode specifications ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "parsermode"; @@ -64,5 +61,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/prettyextlink.js b/core/modules/parsers/wikiparser/rules/prettyextlink.js index 4707fa0d0a..2c575c2271 100644 --- a/core/modules/parsers/wikiparser/rules/prettyextlink.js +++ b/core/modules/parsers/wikiparser/rules/prettyextlink.js @@ -11,10 +11,7 @@ Wiki text inline rule for external links. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "prettyextlink"; @@ -116,5 +113,3 @@ exports.parseLink = function(source,pos) { node.end = closePos + 2; return node; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/prettylink.js b/core/modules/parsers/wikiparser/rules/prettylink.js index 66c19dc886..91579256dc 100644 --- a/core/modules/parsers/wikiparser/rules/prettylink.js +++ b/core/modules/parsers/wikiparser/rules/prettylink.js @@ -12,10 +12,7 @@ Wiki text inline rule for pretty links. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "prettylink"; @@ -66,5 +63,3 @@ exports.parse = function() { }]; } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/quoteblock.js b/core/modules/parsers/wikiparser/rules/quoteblock.js index fdd6c860b7..be8746de42 100644 --- a/core/modules/parsers/wikiparser/rules/quoteblock.js +++ b/core/modules/parsers/wikiparser/rules/quoteblock.js @@ -6,10 +6,7 @@ module-type: wikirule Wiki text rule for quote blocks. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "quoteblock"; @@ -72,5 +69,3 @@ exports.parse = function() { children: tree }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/rules.js b/core/modules/parsers/wikiparser/rules/rules.js index 1d0f80f29b..7b37493087 100644 --- a/core/modules/parsers/wikiparser/rules/rules.js +++ b/core/modules/parsers/wikiparser/rules/rules.js @@ -11,10 +11,7 @@ Wiki pragma rule for rules specifications ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "rules"; @@ -60,5 +57,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/styleblock.js b/core/modules/parsers/wikiparser/rules/styleblock.js index 3fcad5bb4a..2abf2fc9e9 100644 --- a/core/modules/parsers/wikiparser/rules/styleblock.js +++ b/core/modules/parsers/wikiparser/rules/styleblock.js @@ -26,10 +26,7 @@ This is a paragraph ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "styleblock"; @@ -69,5 +66,3 @@ exports.parse = function() { } return tree; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/styleinline.js b/core/modules/parsers/wikiparser/rules/styleinline.js index 653e48986d..3aea0d266a 100644 --- a/core/modules/parsers/wikiparser/rules/styleinline.js +++ b/core/modules/parsers/wikiparser/rules/styleinline.js @@ -13,10 +13,7 @@ Wiki text inline rule for assigning styles and classes to inline runs. For examp \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "styleinline"; @@ -54,5 +51,3 @@ exports.parse = function() { } return [node]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/syslink.js b/core/modules/parsers/wikiparser/rules/syslink.js index 6bcbee3848..a578502658 100644 --- a/core/modules/parsers/wikiparser/rules/syslink.js +++ b/core/modules/parsers/wikiparser/rules/syslink.js @@ -6,10 +6,7 @@ module-type: wikirule Wiki text inline rule for system tiddler links. Can be suppressed preceding them with `~`. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "syslink"; @@ -49,5 +46,3 @@ exports.parse = function() { }]; } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/table.js b/core/modules/parsers/wikiparser/rules/table.js index fbdbb4f9dc..67def255f4 100644 --- a/core/modules/parsers/wikiparser/rules/table.js +++ b/core/modules/parsers/wikiparser/rules/table.js @@ -6,10 +6,7 @@ module-type: wikirule Wiki text block rule for tables. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "table"; @@ -187,5 +184,3 @@ exports.parse = function() { } return [table]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/transcludeblock.js b/core/modules/parsers/wikiparser/rules/transcludeblock.js index c033c24409..525113d5d7 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeblock.js +++ b/core/modules/parsers/wikiparser/rules/transcludeblock.js @@ -11,10 +11,7 @@ Wiki text rule for block-level transclusion. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "transcludeblock"; @@ -85,5 +82,3 @@ exports.parse = function() { } } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/transcludeinline.js b/core/modules/parsers/wikiparser/rules/transcludeinline.js index 3ce9dc78e6..4ae58e6175 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeinline.js +++ b/core/modules/parsers/wikiparser/rules/transcludeinline.js @@ -11,10 +11,7 @@ Wiki text rule for inline-level transclusion. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "transcludeinline"; @@ -83,5 +80,3 @@ exports.parse = function() { } } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/typedblock.js b/core/modules/parsers/wikiparser/rules/typedblock.js index 07c88be15f..03fdc8e10c 100644 --- a/core/modules/parsers/wikiparser/rules/typedblock.js +++ b/core/modules/parsers/wikiparser/rules/typedblock.js @@ -22,10 +22,7 @@ $$$ ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -82,5 +79,3 @@ exports.parse = function() { }]; } }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/whitespace.js b/core/modules/parsers/wikiparser/rules/whitespace.js index 5fd9d4b833..3be34ee886 100644 --- a/core/modules/parsers/wikiparser/rules/whitespace.js +++ b/core/modules/parsers/wikiparser/rules/whitespace.js @@ -11,10 +11,7 @@ Wiki pragma rule for whitespace specifications ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "whitespace"; @@ -68,5 +65,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/wikilink.js b/core/modules/parsers/wikiparser/rules/wikilink.js index 6b195f9ff9..d706de8a90 100644 --- a/core/modules/parsers/wikiparser/rules/wikilink.js +++ b/core/modules/parsers/wikiparser/rules/wikilink.js @@ -14,10 +14,7 @@ AnotherLink Precede a camel case word with `~` to prevent it from being recognised as a link. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "wikilink"; @@ -64,5 +61,3 @@ exports.parse = function() { }] }]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/wikilinkprefix.js b/core/modules/parsers/wikiparser/rules/wikilinkprefix.js index 60cb3d992c..c1c5db1f61 100644 --- a/core/modules/parsers/wikiparser/rules/wikilinkprefix.js +++ b/core/modules/parsers/wikiparser/rules/wikilinkprefix.js @@ -10,10 +10,7 @@ Wiki text inline rule for suppressed wiki links. For example: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "wikilinkprefix"; @@ -36,5 +33,3 @@ exports.parse = function() { // Return the link without unwikilink character as plain text return [{type: "text", text: linkText.substr(1)}]; }; - -})(); diff --git a/core/modules/parsers/wikiparser/wikiparser.js b/core/modules/parsers/wikiparser/wikiparser.js index 854171d197..3d1379fd47 100644 --- a/core/modules/parsers/wikiparser/wikiparser.js +++ b/core/modules/parsers/wikiparser/wikiparser.js @@ -19,10 +19,7 @@ Attributes are stored as hashmaps of the following objects: {type: "macro", macro: } - indirect through a macro invocation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -495,5 +492,3 @@ WikiParser.prototype.amendRules = function(type,names) { }; exports["text/vnd.tiddlywiki"] = WikiParser; - -})(); diff --git a/core/modules/parsers/wikiparser/wikirulebase.js b/core/modules/parsers/wikiparser/wikirulebase.js index 8aa960ef79..a9d6c748f0 100644 --- a/core/modules/parsers/wikiparser/wikirulebase.js +++ b/core/modules/parsers/wikiparser/wikirulebase.js @@ -6,10 +6,7 @@ module-type: global Base class for wiki parser rules \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -35,5 +32,3 @@ WikiRuleBase.prototype.findNextMatch = function(startPos) { }; exports.WikiRuleBase = WikiRuleBase; - -})(); diff --git a/core/modules/pluginswitcher.js b/core/modules/pluginswitcher.js index 2915de95a7..d89d261d7b 100644 --- a/core/modules/pluginswitcher.js +++ b/core/modules/pluginswitcher.js @@ -6,10 +6,7 @@ module-type: global Manages switching plugins for themes and languages. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -75,5 +72,3 @@ PluginSwitcher.prototype.switchPlugins = function() { }; exports.PluginSwitcher = PluginSwitcher; - -})(); diff --git a/core/modules/saver-handler.js b/core/modules/saver-handler.js index e760fd8f18..7f4e834a0d 100644 --- a/core/modules/saver-handler.js +++ b/core/modules/saver-handler.js @@ -6,10 +6,7 @@ module-type: global The saver handler tracks changes to the store and handles saving the entire wiki via saver modules. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -214,5 +211,3 @@ SaverHandler.prototype.updateDirtyStatus = function() { }; exports.SaverHandler = SaverHandler; - -})(); diff --git a/core/modules/savers/andtidwiki.js b/core/modules/savers/andtidwiki.js index 9ab405e372..5ce4dbe0ea 100644 --- a/core/modules/savers/andtidwiki.js +++ b/core/modules/savers/andtidwiki.js @@ -6,10 +6,8 @@ module-type: saver Handles saving changes via the AndTidWiki Android app \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ + "use strict"; var AndTidWiki = function(wiki) { @@ -86,5 +84,3 @@ Create an instance of this saver exports.create = function(wiki) { return new AndTidWiki(wiki); }; - -})(); diff --git a/core/modules/savers/custom.js b/core/modules/savers/custom.js index 8366912049..dc5f917039 100644 --- a/core/modules/savers/custom.js +++ b/core/modules/savers/custom.js @@ -9,10 +9,7 @@ on the parent window (of an iframe). If present, the saver must define and the saver may define priority: number \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var findSaver = function(window) { @@ -57,4 +54,3 @@ Create an instance of this saver exports.create = function(wiki) { return new CustomSaver(wiki); }; -})(); diff --git a/core/modules/savers/download.js b/core/modules/savers/download.js index 003c332c3e..9d046d24ac 100644 --- a/core/modules/savers/download.js +++ b/core/modules/savers/download.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via HTML5's download APIs \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -84,5 +81,3 @@ Create an instance of this saver exports.create = function(wiki) { return new DownloadSaver(wiki); }; - -})(); diff --git a/core/modules/savers/fsosaver.js b/core/modules/savers/fsosaver.js index 37224e42a7..85b56e9565 100644 --- a/core/modules/savers/fsosaver.js +++ b/core/modules/savers/fsosaver.js @@ -9,10 +9,7 @@ Note: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally However, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -70,5 +67,3 @@ Create an instance of this saver exports.create = function(wiki) { return new FSOSaver(wiki); }; - -})(); diff --git a/core/modules/savers/gitea.js b/core/modules/savers/gitea.js index 826719ee91..ef23214c16 100644 --- a/core/modules/savers/gitea.js +++ b/core/modules/savers/gitea.js @@ -6,10 +6,7 @@ module-type: saver Saves wiki by pushing a commit to the gitea \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -132,5 +129,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GiteaSaver(wiki); }; - -})(); diff --git a/core/modules/savers/github.js b/core/modules/savers/github.js index c0a34f2d64..f0dca48fc6 100644 --- a/core/modules/savers/github.js +++ b/core/modules/savers/github.js @@ -6,10 +6,7 @@ module-type: saver Saves wiki by pushing a commit to the GitHub v3 REST API \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -115,5 +112,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GitHubSaver(wiki); }; - -})(); diff --git a/core/modules/savers/gitlab.js b/core/modules/savers/gitlab.js index 243aab8a57..43305b5783 100644 --- a/core/modules/savers/gitlab.js +++ b/core/modules/savers/gitlab.js @@ -6,10 +6,7 @@ module-type: saver Saves wiki by pushing a commit to the GitLab REST API \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: true */ "use strict"; /* @@ -113,5 +110,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GitLabSaver(wiki); }; - -})(); diff --git a/core/modules/savers/manualdownload.js b/core/modules/savers/manualdownload.js index af9bcd7433..bb3c3c142f 100644 --- a/core/modules/savers/manualdownload.js +++ b/core/modules/savers/manualdownload.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via HTML5's download APIs \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Title of the tiddler containing the download message @@ -52,5 +49,3 @@ Create an instance of this saver exports.create = function(wiki) { return new ManualDownloadSaver(wiki); }; - -})(); diff --git a/core/modules/savers/msdownload.js b/core/modules/savers/msdownload.js index 6cb55c3348..233fd35712 100644 --- a/core/modules/savers/msdownload.js +++ b/core/modules/savers/msdownload.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via window.navigator.msSaveBlob() \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -55,5 +52,3 @@ Create an instance of this saver exports.create = function(wiki) { return new MsDownloadSaver(wiki); }; - -})(); diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 69689e6db5..b77cfdfc8a 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -9,10 +9,7 @@ Works with any server which accepts a PUT request to the current URL, such as a WebDAV server. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -136,5 +133,3 @@ Create an instance of this saver exports.create = function(wiki) { return new PutSaver(wiki); }; - -})(); diff --git a/core/modules/savers/tiddlyfox.js b/core/modules/savers/tiddlyfox.js index 81b373d421..2356e287e5 100644 --- a/core/modules/savers/tiddlyfox.js +++ b/core/modules/savers/tiddlyfox.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via the TiddlyFox file extension \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ "use strict"; var TiddlyFoxSaver = function(wiki) { @@ -82,5 +79,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TiddlyFoxSaver(wiki); }; - -})(); diff --git a/core/modules/savers/tiddlyie.js b/core/modules/savers/tiddlyie.js index d6d49db453..3b380592dc 100644 --- a/core/modules/savers/tiddlyie.js +++ b/core/modules/savers/tiddlyie.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via Internet Explorer BHO extenion (TiddlyIE) \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -67,5 +64,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TiddlyIESaver(wiki); }; - -})(); diff --git a/core/modules/savers/twedit.js b/core/modules/savers/twedit.js index ec125bf94d..8aae0c54e7 100644 --- a/core/modules/savers/twedit.js +++ b/core/modules/savers/twedit.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via the TWEdit iOS app \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ "use strict"; var TWEditSaver = function(wiki) { @@ -87,5 +84,3 @@ exports.create = function(wiki) { if($tw.browser) { window.version = {title: "TiddlyWiki"}; } - -})(); diff --git a/core/modules/savers/upload.js b/core/modules/savers/upload.js index ade5450001..7f17d77bde 100644 --- a/core/modules/savers/upload.js +++ b/core/modules/savers/upload.js @@ -8,10 +8,7 @@ Handles saving changes via upload to a server. Designed to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -107,5 +104,3 @@ Create an instance of this saver exports.create = function(wiki) { return new UploadSaver(wiki); }; - -})(); diff --git a/core/modules/server/authenticators/basic.js b/core/modules/server/authenticators/basic.js index cd528c485f..e67e701f5d 100644 --- a/core/modules/server/authenticators/basic.js +++ b/core/modules/server/authenticators/basic.js @@ -6,10 +6,7 @@ module-type: authenticator Authenticator for WWW basic authentication \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; if($tw.node) { @@ -90,5 +87,3 @@ BasicAuthenticator.prototype.authenticateRequest = function(request,response,sta }; exports.AuthenticatorClass = BasicAuthenticator; - -})(); diff --git a/core/modules/server/authenticators/header.js b/core/modules/server/authenticators/header.js index cc1d6bdaf8..bbcf9a1d42 100644 --- a/core/modules/server/authenticators/header.js +++ b/core/modules/server/authenticators/header.js @@ -6,10 +6,7 @@ module-type: authenticator Authenticator for trusted header authentication \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function HeaderAuthenticator(server) { @@ -46,4 +43,3 @@ HeaderAuthenticator.prototype.authenticateRequest = function(request,response,st exports.AuthenticatorClass = HeaderAuthenticator; -})(); diff --git a/core/modules/server/routes/delete-tiddler.js b/core/modules/server/routes/delete-tiddler.js index 85b552599e..33cb40d550 100644 --- a/core/modules/server/routes/delete-tiddler.js +++ b/core/modules/server/routes/delete-tiddler.js @@ -6,10 +6,6 @@ module-type: route DELETE /recipes/default/tiddlers/:title \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "DELETE"; @@ -24,5 +20,3 @@ exports.handler = function(request,response,state) { }); response.end(); }; - -}()); diff --git a/core/modules/server/routes/get-favicon.js b/core/modules/server/routes/get-favicon.js index 39a3911275..8b757b2f7a 100644 --- a/core/modules/server/routes/get-favicon.js +++ b/core/modules/server/routes/get-favicon.js @@ -6,10 +6,6 @@ module-type: route GET /favicon.ico \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -20,5 +16,3 @@ exports.handler = function(request,response,state) { var buffer = state.wiki.getTiddlerText("$:/favicon.ico",""); state.sendResponse(200,{"Content-Type": "image/x-icon"},buffer,"base64"); }; - -}()); diff --git a/core/modules/server/routes/get-file.js b/core/modules/server/routes/get-file.js index 45aa51d34b..39681de4c3 100644 --- a/core/modules/server/routes/get-file.js +++ b/core/modules/server/routes/get-file.js @@ -6,10 +6,6 @@ module-type: route GET /files/:filepath \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -44,5 +40,3 @@ exports.handler = function(request,response,state) { state.sendResponse(404,{"Content-Type": "text/plain"},"File '" + suppliedFilename + "' not found"); } }; - -}()); diff --git a/core/modules/server/routes/get-index.js b/core/modules/server/routes/get-index.js index f2d01f7932..7ba52faf60 100644 --- a/core/modules/server/routes/get-index.js +++ b/core/modules/server/routes/get-index.js @@ -6,10 +6,6 @@ module-type: route GET / \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -23,5 +19,3 @@ exports.handler = function(request,response,state) { }; state.sendResponse(200,responseHeaders,text); }; - -}()); diff --git a/core/modules/server/routes/get-login-basic.js b/core/modules/server/routes/get-login-basic.js index 69d3bf908c..bca3bd18d3 100644 --- a/core/modules/server/routes/get-login-basic.js +++ b/core/modules/server/routes/get-login-basic.js @@ -6,10 +6,6 @@ module-type: route GET /login-basic -- force a Basic Authentication challenge \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -32,5 +28,3 @@ exports.handler = function(request,response,state) { response.end(); } }; - -}()); diff --git a/core/modules/server/routes/get-status.js b/core/modules/server/routes/get-status.js index ac35ee8748..d93c64037f 100644 --- a/core/modules/server/routes/get-status.js +++ b/core/modules/server/routes/get-status.js @@ -6,10 +6,6 @@ module-type: route GET /status \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -29,5 +25,3 @@ exports.handler = function(request,response,state) { }); state.sendResponse(200,{"Content-Type": "application/json"},text,"utf8"); }; - -}()); diff --git a/core/modules/server/routes/get-tiddler-html.js b/core/modules/server/routes/get-tiddler-html.js index ab1570e309..a891ea6e7a 100644 --- a/core/modules/server/routes/get-tiddler-html.js +++ b/core/modules/server/routes/get-tiddler-html.js @@ -6,10 +6,6 @@ module-type: route GET /:title \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -40,5 +36,3 @@ exports.handler = function(request,response,state) { response.end(); } }; - -}()); diff --git a/core/modules/server/routes/get-tiddler.js b/core/modules/server/routes/get-tiddler.js index ae6cfeadc3..58ecb8a43e 100644 --- a/core/modules/server/routes/get-tiddler.js +++ b/core/modules/server/routes/get-tiddler.js @@ -6,10 +6,6 @@ module-type: route GET /recipes/default/tiddlers/:title \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "GET"; @@ -42,5 +38,3 @@ exports.handler = function(request,response,state) { response.end(); } }; - -}()); diff --git a/core/modules/server/routes/get-tiddlers-json.js b/core/modules/server/routes/get-tiddlers-json.js index 6f3f07f6ad..89f91032ee 100644 --- a/core/modules/server/routes/get-tiddlers-json.js +++ b/core/modules/server/routes/get-tiddlers-json.js @@ -6,10 +6,6 @@ module-type: route GET /recipes/default/tiddlers.json?filter= \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DEFAULT_FILTER = "[all[tiddlers]!is[system]sort[title]]"; @@ -46,5 +42,3 @@ exports.handler = function(request,response,state) { var text = JSON.stringify(tiddlers); state.sendResponse(200,{"Content-Type": "application/json"},text,"utf8"); }; - -}()); diff --git a/core/modules/server/routes/put-tiddler.js b/core/modules/server/routes/put-tiddler.js index ff1bd2737a..74327bd50d 100644 --- a/core/modules/server/routes/put-tiddler.js +++ b/core/modules/server/routes/put-tiddler.js @@ -6,10 +6,6 @@ module-type: route PUT /recipes/default/tiddlers/:title \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.method = "PUT"; @@ -48,5 +44,3 @@ exports.handler = function(request,response,state) { }); response.end(); }; - -}()); diff --git a/core/modules/server/server.js b/core/modules/server/server.js index d3c98f8fc2..2118e9b503 100644 --- a/core/modules/server/server.js +++ b/core/modules/server/server.js @@ -6,10 +6,7 @@ module-type: library Serve tiddlers over http \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; if($tw.node) { @@ -374,5 +371,3 @@ Server.prototype.listen = function(port,host,prefix) { }; exports.Server = Server; - -})(); diff --git a/core/modules/startup/browser-messaging.js b/core/modules/startup/browser-messaging.js index 733041e451..27ddb19d5a 100644 --- a/core/modules/startup/browser-messaging.js +++ b/core/modules/startup/browser-messaging.js @@ -6,10 +6,7 @@ module-type: startup Browser message handling \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -181,5 +178,3 @@ exports.startup = function() { } },false); }; - -})(); diff --git a/core/modules/startup/commands.js b/core/modules/startup/commands.js index bd8b4afb30..3e4e40f450 100644 --- a/core/modules/startup/commands.js +++ b/core/modules/startup/commands.js @@ -6,10 +6,7 @@ module-type: startup Command processing \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -33,5 +30,3 @@ exports.startup = function(callback) { ); commander.execute(); }; - -})(); diff --git a/core/modules/startup/favicon.js b/core/modules/startup/favicon.js index 55e7891e23..d1a7c56770 100644 --- a/core/modules/startup/favicon.js +++ b/core/modules/startup/favicon.js @@ -6,10 +6,7 @@ module-type: startup Favicon handling \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -39,5 +36,3 @@ function setFavicon() { faviconLink.setAttribute("href",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri)); } } - -})(); diff --git a/core/modules/startup/info.js b/core/modules/startup/info.js index ed23059301..a5767ed341 100644 --- a/core/modules/startup/info.js +++ b/core/modules/startup/info.js @@ -6,10 +6,7 @@ module-type: startup Initialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -54,5 +51,3 @@ exports.startup = function() { $tw.wiki.registerPluginTiddlers("info",[TITLE_INFO_PLUGIN]); $tw.wiki.unpackPluginTiddlers(); }; - -})(); diff --git a/core/modules/startup/load-modules.js b/core/modules/startup/load-modules.js index 1dc71f7acc..cf0a8232dd 100644 --- a/core/modules/startup/load-modules.js +++ b/core/modules/startup/load-modules.js @@ -6,10 +6,7 @@ module-type: startup Load core modules \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -36,5 +33,3 @@ exports.startup = function() { $tw.wiki.initParsers(); $tw.Commander.initCommands(); }; - -})(); diff --git a/core/modules/startup/password.js b/core/modules/startup/password.js index 5e8bd53523..5ea36ee197 100644 --- a/core/modules/startup/password.js +++ b/core/modules/startup/password.js @@ -6,10 +6,7 @@ module-type: startup Password handling \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -49,5 +46,3 @@ exports.startup = function() { } }); }; - -})(); diff --git a/core/modules/startup/plugins.js b/core/modules/startup/plugins.js index af354c38e8..3ceda8669e 100644 --- a/core/modules/startup/plugins.js +++ b/core/modules/startup/plugins.js @@ -6,10 +6,7 @@ module-type: startup Startup logic concerned with managing plugins \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -82,4 +79,3 @@ exports.startup = function() { }); }; -})(); diff --git a/core/modules/startup/render.js b/core/modules/startup/render.js index 7206a51d02..13cbb03564 100644 --- a/core/modules/startup/render.js +++ b/core/modules/startup/render.js @@ -6,10 +6,7 @@ module-type: startup Title, stylesheet and page rendering \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -120,5 +117,3 @@ exports.startup = function() { // Run any post-render startup actions $tw.rootWidget.invokeActionsByTag("$:/tags/StartupAction/PostRender"); }; - -})(); diff --git a/core/modules/startup/rootwidget.js b/core/modules/startup/rootwidget.js index 95e902db65..b30e03e7b8 100644 --- a/core/modules/startup/rootwidget.js +++ b/core/modules/startup/rootwidget.js @@ -6,10 +6,7 @@ module-type: startup Setup the root widget and the core root widget handlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -128,5 +125,3 @@ exports.startup = function() { }); } }; - -})(); diff --git a/core/modules/startup/startup.js b/core/modules/startup/startup.js index 4013a37ee4..6f78c71b50 100755 --- a/core/modules/startup/startup.js +++ b/core/modules/startup/startup.js @@ -6,10 +6,7 @@ module-type: startup Miscellaneous startup logic for both the client and server. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -148,5 +145,3 @@ exports.startup = function() { $tw.anim = new $tw.utils.Animator(); } }; - -})(); diff --git a/core/modules/startup/story.js b/core/modules/startup/story.js index c58c759c39..a0c8780244 100644 --- a/core/modules/startup/story.js +++ b/core/modules/startup/story.js @@ -6,10 +6,7 @@ module-type: startup Load core modules \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -234,5 +231,3 @@ function updateLocationHash(options) { } } } - -})(); diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 34f45d7a58..8506a9866a 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -6,10 +6,7 @@ module-type: startup Setup root widget handlers for the messages concerned with opening external browser windows \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -110,5 +107,3 @@ exports.startup = function() { // Close open windows when unloading main window $tw.addUnloadTask(closeAllWindows); }; - -})(); diff --git a/core/modules/story.js b/core/modules/story.js index 16ff5a74a4..4e624bb260 100644 --- a/core/modules/story.js +++ b/core/modules/story.js @@ -6,10 +6,7 @@ module-type: global Lightweight object for managing interactions with the story and history lists. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -133,6 +130,3 @@ Story.prototype.storyNewTiddler = function(targetTitle) { }; exports.Story = Story; - - -})(); diff --git a/core/modules/storyviews/classic.js b/core/modules/storyviews/classic.js index a85e458c57..c1f1c0e0f1 100644 --- a/core/modules/storyviews/classic.js +++ b/core/modules/storyviews/classic.js @@ -6,10 +6,7 @@ module-type: storyview Views the story as a linear sequence \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/#easeInOutCubic @@ -117,5 +114,3 @@ ClassicStoryView.prototype.remove = function(widget) { }; exports.classic = ClassicStoryView; - -})(); diff --git a/core/modules/storyviews/pop.js b/core/modules/storyviews/pop.js index e2634e3d5b..cbf649b184 100644 --- a/core/modules/storyviews/pop.js +++ b/core/modules/storyviews/pop.js @@ -6,10 +6,7 @@ module-type: storyview Animates list insertions and removals \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var PopStoryView = function(listWidget) { @@ -99,5 +96,3 @@ PopStoryView.prototype.remove = function(widget) { }; exports.pop = PopStoryView; - -})(); diff --git a/core/modules/storyviews/zoomin.js b/core/modules/storyviews/zoomin.js index d02f705e73..e5c5b88a80 100644 --- a/core/modules/storyviews/zoomin.js +++ b/core/modules/storyviews/zoomin.js @@ -6,10 +6,7 @@ module-type: storyview Zooms between individual tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/#easeInOutCubic @@ -226,5 +223,3 @@ ZoominListView.prototype.logTextNodeRoot = function(node) { }; exports.zoomin = ZoominListView; - -})(); diff --git a/core/modules/syncer.js b/core/modules/syncer.js index f7627e1ac5..f565d0b9f5 100644 --- a/core/modules/syncer.js +++ b/core/modules/syncer.js @@ -6,10 +6,7 @@ module-type: global The syncer tracks changes to the store and synchronises them to a remote data store represented as a "sync adaptor" \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -703,5 +700,3 @@ SyncFromServerTask.prototype.run = function(callback) { }; exports.Syncer = Syncer; - -})(); diff --git a/core/modules/tiddler.js b/core/modules/tiddler.js index d8d67bf77c..d28f90945c 100644 --- a/core/modules/tiddler.js +++ b/core/modules/tiddler.js @@ -6,10 +6,7 @@ module-type: tiddlermethod Extension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js) \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.hasTag = function(tag) { @@ -99,5 +96,3 @@ exports.getFieldDay = function(field) { this.cache.day[field] = day; return day; }; - -})(); diff --git a/core/modules/upgraders/plugins.js b/core/modules/upgraders/plugins.js index 83487aabf3..8f35d50908 100644 --- a/core/modules/upgraders/plugins.js +++ b/core/modules/upgraders/plugins.js @@ -6,10 +6,7 @@ module-type: upgrader Upgrader module that checks that plugins are newer than any already installed version \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var UPGRADE_LIBRARY_TITLE = "$:/UpgradeLibrary"; @@ -75,5 +72,3 @@ exports.upgrade = function(wiki,titles,tiddlers) { }); return messages; }; - -})(); diff --git a/core/modules/upgraders/system.js b/core/modules/upgraders/system.js index a653a75b18..ae3f76b3c9 100644 --- a/core/modules/upgraders/system.js +++ b/core/modules/upgraders/system.js @@ -6,10 +6,7 @@ module-type: upgrader Upgrader module that suppresses certain system tiddlers that shouldn't be imported \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DONT_IMPORT_LIST = ["$:/Import", "$:/build"], @@ -47,5 +44,3 @@ exports.upgrade = function(wiki,titles,tiddlers) { } return messages; }; - -})(); diff --git a/core/modules/upgraders/themetweaks.js b/core/modules/upgraders/themetweaks.js index e411b285ad..616f9008db 100644 --- a/core/modules/upgraders/themetweaks.js +++ b/core/modules/upgraders/themetweaks.js @@ -15,10 +15,7 @@ Now, each tweak is stored in its own separate tiddler. This upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var MAPPINGS = { @@ -61,5 +58,3 @@ exports.upgrade = function(wiki,titles,tiddlers) { }); return messages; }; - -})(); diff --git a/core/modules/utils/crypto.js b/core/modules/utils/crypto.js index 8ad0923a46..dc239fbccf 100644 --- a/core/modules/utils/crypto.js +++ b/core/modules/utils/crypto.js @@ -6,10 +6,7 @@ module-type: utils Utility functions related to crypto. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -90,5 +87,3 @@ exports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,optio }); } }; - -})(); diff --git a/core/modules/utils/csv.js b/core/modules/utils/csv.js index 68b6471273..177f0c0aca 100644 --- a/core/modules/utils/csv.js +++ b/core/modules/utils/csv.js @@ -6,10 +6,7 @@ module-type: utils A barebones CSV parser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var QUOTE = '"'; @@ -120,5 +117,3 @@ exports.parseCsvStringWithHeader = function(text,options) { } return csv; } - -})(); diff --git a/core/modules/utils/dom/animations/slide.js b/core/modules/utils/dom/animations/slide.js index face94960d..2057c44608 100644 --- a/core/modules/utils/dom/animations/slide.js +++ b/core/modules/utils/dom/animations/slide.js @@ -6,10 +6,7 @@ module-type: animation A simple slide animation that varies the height of the element \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function slideOpen(domNode,options) { @@ -111,5 +108,3 @@ exports.slide = { open: slideOpen, close: slideClosed }; - -})(); diff --git a/core/modules/utils/dom/animator.js b/core/modules/utils/dom/animator.js index f994d9b585..013900975b 100644 --- a/core/modules/utils/dom/animator.js +++ b/core/modules/utils/dom/animator.js @@ -6,10 +6,7 @@ module-type: utils Orchestrates animations and transitions \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function Animator() { @@ -39,5 +36,3 @@ Animator.prototype.perform = function(type,domNode,options) { }; exports.Animator = Animator; - -})(); diff --git a/core/modules/utils/dom/browser.js b/core/modules/utils/dom/browser.js index fcc292bedd..7501d4154c 100644 --- a/core/modules/utils/dom/browser.js +++ b/core/modules/utils/dom/browser.js @@ -6,10 +6,7 @@ module-type: utils Browser feature detection \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -160,5 +157,3 @@ exports.getFullScreenApis = function() { return result; } }; - -})(); diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index 5f33bbeea9..a5b14ff784 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -6,10 +6,7 @@ module-type: utils Various static DOM-related utility functions. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Popup = require("$:/core/modules/utils/dom/popup.js"); @@ -395,5 +392,3 @@ exports.querySelectorAllSafe = function(selector,baseElement) { console.log("Invalid selector: ",selector); } }; - -})(); diff --git a/core/modules/utils/dom/dragndrop.js b/core/modules/utils/dom/dragndrop.js index c7c32cbafd..25a13537c6 100644 --- a/core/modules/utils/dom/dragndrop.js +++ b/core/modules/utils/dom/dragndrop.js @@ -6,10 +6,7 @@ module-type: utils Browser data transfer utilities, used with the clipboard and drag and drop \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -275,5 +272,3 @@ exports.dragEventContainsFiles = function(event) { }; exports.dragEventContainsType = dragEventContainsType; - -})(); diff --git a/core/modules/utils/dom/http.js b/core/modules/utils/dom/http.js index 37a7855a5a..75b82cd77c 100644 --- a/core/modules/utils/dom/http.js +++ b/core/modules/utils/dom/http.js @@ -6,10 +6,7 @@ module-type: utils HTTP support \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -353,5 +350,3 @@ exports.setQueryStringParameter = function(url,paramName,paramValue) { return url; } }; - -})(); diff --git a/core/modules/utils/dom/keyboard.js b/core/modules/utils/dom/keyboard.js index 0ba1af5a07..926753a65c 100644 --- a/core/modules/utils/dom/keyboard.js +++ b/core/modules/utils/dom/keyboard.js @@ -6,10 +6,7 @@ module-type: utils Keyboard utilities; now deprecated. Instead, use $tw.keyboardManager \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; ["parseKeyDescriptor","checkKeyDescriptor"].forEach(function(method) { @@ -21,5 +18,3 @@ Keyboard utilities; now deprecated. Instead, use $tw.keyboardManager } }; }); - -})(); diff --git a/core/modules/utils/dom/modal.js b/core/modules/utils/dom/modal.js index 1e620aa9a7..cd827c3be8 100644 --- a/core/modules/utils/dom/modal.js +++ b/core/modules/utils/dom/modal.js @@ -6,10 +6,7 @@ module-type: utils Modal message mechanism \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -253,5 +250,3 @@ Modal.prototype.adjustPageClass = function() { }; exports.Modal = Modal; - -})(); diff --git a/core/modules/utils/dom/notifier.js b/core/modules/utils/dom/notifier.js index bf93d451c1..8743b83bef 100644 --- a/core/modules/utils/dom/notifier.js +++ b/core/modules/utils/dom/notifier.js @@ -6,10 +6,7 @@ module-type: utils Notifier mechanism \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -88,5 +85,3 @@ Notifier.prototype.display = function(title,options) { }; exports.Notifier = Notifier; - -})(); diff --git a/core/modules/utils/dom/popup.js b/core/modules/utils/dom/popup.js index 017e7da8f6..6ed7c4bca2 100644 --- a/core/modules/utils/dom/popup.js +++ b/core/modules/utils/dom/popup.js @@ -6,10 +6,7 @@ module-type: utils Module that creates a $tw.utils.Popup object prototype that manages popups in the browser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -243,5 +240,3 @@ exports.buildCoordinates = function(prefix,position) { } exports.Popup = Popup; - -})(); diff --git a/core/modules/utils/dom/scroller.js b/core/modules/utils/dom/scroller.js index 905bb27507..84be12c501 100644 --- a/core/modules/utils/dom/scroller.js +++ b/core/modules/utils/dom/scroller.js @@ -6,10 +6,7 @@ module-type: utils Module that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -135,5 +132,3 @@ PageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,ca }; exports.PageScroller = PageScroller; - -})(); diff --git a/core/modules/utils/edition-info.js b/core/modules/utils/edition-info.js index b9d97f962e..2c525e3cc1 100644 --- a/core/modules/utils/edition-info.js +++ b/core/modules/utils/edition-info.js @@ -6,10 +6,7 @@ module-type: utils-node Information about the available editions \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var fs = require("fs"), @@ -44,5 +41,3 @@ exports.getEditionInfo = function() { } return editionInfo; }; - -})(); \ No newline at end of file diff --git a/core/modules/utils/escapecss.js b/core/modules/utils/escapecss.js index 5935b034a7..f2248c4458 100644 --- a/core/modules/utils/escapecss.js +++ b/core/modules/utils/escapecss.js @@ -6,12 +6,10 @@ module-type: utils Provides CSS.escape() functionality. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false, window: false */ "use strict"; +// TODO -- resolve this construction exports.escapeCSS = (function() { // use browser's native CSS.escape() function if available if ($tw.browser && window.CSS && window.CSS.escape) { @@ -100,5 +98,3 @@ exports.escapeCSS = (function() { return result; }; })(); - -})(); diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 66f2314e20..764ac84f8e 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -6,10 +6,7 @@ module-type: global A barebones implementation of DOM interfaces needed by the rendering mechanism. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Sequence number used to enable us to track objects for testing @@ -353,5 +350,3 @@ var document = { }; exports.fakeDocument = document; - -})(); diff --git a/core/modules/utils/filesystem.js b/core/modules/utils/filesystem.js index 86001c2915..aa214586a8 100644 --- a/core/modules/utils/filesystem.js +++ b/core/modules/utils/filesystem.js @@ -6,10 +6,7 @@ module-type: utils-node File system utilities \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var fs = require("fs"), @@ -543,5 +540,3 @@ exports.cleanupTiddlerFiles = function(options,callback) { return callback(null,bootInfo); } }; - -})(); diff --git a/core/modules/utils/linked-list.js b/core/modules/utils/linked-list.js index 917069d162..8d7f446763 100644 --- a/core/modules/utils/linked-list.js +++ b/core/modules/utils/linked-list.js @@ -7,7 +7,8 @@ This is a doubly-linked indexed list intended for manipulation, particularly pushTop, which it does with significantly better performance than an array. \*/ -(function(){ + +"use strict"; function LinkedList() { this.clear(); @@ -204,5 +205,3 @@ LLMap.prototype = { }; exports.LinkedList = LinkedList; - -})(); diff --git a/core/modules/utils/logger.js b/core/modules/utils/logger.js index 1bee046462..da0d669232 100644 --- a/core/modules/utils/logger.js +++ b/core/modules/utils/logger.js @@ -6,10 +6,7 @@ module-type: utils A basic logging implementation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var ALERT_TAG = "$:/tags/Alert"; @@ -134,5 +131,3 @@ Logger.prototype.clearAlerts = function() { }; exports.Logger = Logger; - -})(); diff --git a/core/modules/utils/parsetree.js b/core/modules/utils/parsetree.js index a74b8f3f81..410f921818 100644 --- a/core/modules/utils/parsetree.js +++ b/core/modules/utils/parsetree.js @@ -6,10 +6,7 @@ module-type: utils Parse tree utility functions. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -122,5 +119,3 @@ exports.getParseTreeText = function getParseTreeText(tree) { } return output.join(""); }; - -})(); diff --git a/core/modules/utils/performance.js b/core/modules/utils/performance.js index 8a86d33c72..f8311d9774 100644 --- a/core/modules/utils/performance.js +++ b/core/modules/utils/performance.js @@ -6,10 +6,7 @@ module-type: global Performance measurement. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function Performance(enabled) { @@ -87,5 +84,3 @@ Performance.prototype.measure = function(name,fn) { }; exports.Performance = Performance; - -})(); diff --git a/core/modules/utils/pluginmaker.js b/core/modules/utils/pluginmaker.js index e7426d62be..f64bbec85b 100644 --- a/core/modules/utils/pluginmaker.js +++ b/core/modules/utils/pluginmaker.js @@ -6,10 +6,7 @@ module-type: utils A quick and dirty way to pack up plugins within the browser. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -75,5 +72,3 @@ exports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) { // Return a heartwarming confirmation return "Plugin " + title + " successfully saved"; }; - -})(); diff --git a/core/modules/utils/repository.js b/core/modules/utils/repository.js index 3aeb4d25a8..359f558b89 100644 --- a/core/modules/utils/repository.js +++ b/core/modules/utils/repository.js @@ -7,9 +7,6 @@ Utilities for working with the TiddlyWiki repository file structure \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js index ce1cbeddb5..37c5502bfc 100644 --- a/core/modules/utils/transliterate.js +++ b/core/modules/utils/transliterate.js @@ -6,10 +6,7 @@ module-type: utils Transliteration static utility functions. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -928,5 +925,3 @@ exports.transliterateToSafeASCII = function(str) { return exports.transliterationPairs[ch] || "" }); }; - -})(); diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 234de0c756..a228f91d43 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -6,10 +6,7 @@ module-type: utils Various static utility functions. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var base64utf8 = require("$:/core/modules/utils/base64-utf8/base64-utf8.module.js"); @@ -1038,5 +1035,3 @@ exports.makeCompareFunction = function(type,options) { }; return (types[type] || types[options.defaultType] || types.number); }; - -})(); diff --git a/core/modules/widgets/action-confirm.js b/core/modules/widgets/action-confirm.js index 68d8c447e4..c2ca39b64c 100644 --- a/core/modules/widgets/action-confirm.js +++ b/core/modules/widgets/action-confirm.js @@ -5,10 +5,7 @@ type: application/javascript module-type: widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -74,5 +71,3 @@ ConfirmWidget.prototype.allowActionPropagation = function() { }; exports["action-confirm"] = ConfirmWidget; - -})(); diff --git a/core/modules/widgets/action-createtiddler.js b/core/modules/widgets/action-createtiddler.js index b49eaad205..d010e64659 100644 --- a/core/modules/widgets/action-createtiddler.js +++ b/core/modules/widgets/action-createtiddler.js @@ -6,10 +6,7 @@ module-type: widget Action widget to create a new tiddler with a unique name and specified fields. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw:false, require:false, exports:false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -109,5 +106,3 @@ CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-createtiddler"] = CreateTiddlerWidget; - -})(); diff --git a/core/modules/widgets/action-deletefield.js b/core/modules/widgets/action-deletefield.js index 00f06562dd..fd55e22703 100644 --- a/core/modules/widgets/action-deletefield.js +++ b/core/modules/widgets/action-deletefield.js @@ -6,10 +6,7 @@ module-type: widget Action widget to delete fields of a tiddler. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -85,5 +82,3 @@ DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-deletefield"] = DeleteFieldWidget; - -})(); diff --git a/core/modules/widgets/action-deletetiddler.js b/core/modules/widgets/action-deletetiddler.js index 816f9f55e1..fa80620b7d 100644 --- a/core/modules/widgets/action-deletetiddler.js +++ b/core/modules/widgets/action-deletetiddler.js @@ -6,10 +6,7 @@ module-type: widget Action widget to delete a tiddler. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -69,5 +66,3 @@ DeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-deletetiddler"] = DeleteTiddlerWidget; - -})(); diff --git a/core/modules/widgets/action-listops.js b/core/modules/widgets/action-listops.js index b3d93a6579..29cf9f8def 100644 --- a/core/modules/widgets/action-listops.js +++ b/core/modules/widgets/action-listops.js @@ -6,10 +6,6 @@ module-type: widget Action widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler) \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; var ActionListopsWidget = function(parseTreeNode, options) { @@ -87,5 +83,3 @@ ActionListopsWidget.prototype.invokeAction = function(triggeringWidget, }; exports["action-listops"] = ActionListopsWidget; - -})(); diff --git a/core/modules/widgets/action-log.js b/core/modules/widgets/action-log.js index 7b1d1e9041..3f8caf0477 100644 --- a/core/modules/widgets/action-log.js +++ b/core/modules/widgets/action-log.js @@ -6,10 +6,7 @@ module-type: widget Action widget to log debug messages \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -94,5 +91,3 @@ LogWidget.prototype.log = function() { } exports["action-log"] = LogWidget; - -})(); diff --git a/core/modules/widgets/action-navigate.js b/core/modules/widgets/action-navigate.js index 2df6a011fd..67c7713db5 100644 --- a/core/modules/widgets/action-navigate.js +++ b/core/modules/widgets/action-navigate.js @@ -6,10 +6,7 @@ module-type: widget Action widget to navigate to a tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -87,5 +84,3 @@ NavigateWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-navigate"] = NavigateWidget; - -})(); diff --git a/core/modules/widgets/action-popup.js b/core/modules/widgets/action-popup.js index a3ce20165f..b44b3a5248 100644 --- a/core/modules/widgets/action-popup.js +++ b/core/modules/widgets/action-popup.js @@ -6,10 +6,7 @@ module-type: widget Action widget to trigger a popup. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -81,5 +78,3 @@ ActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-popup"] = ActionPopupWidget; - -})(); diff --git a/core/modules/widgets/action-sendmessage.js b/core/modules/widgets/action-sendmessage.js index d1e800c918..7b9e6453f1 100644 --- a/core/modules/widgets/action-sendmessage.js +++ b/core/modules/widgets/action-sendmessage.js @@ -6,10 +6,7 @@ module-type: widget Action widget to send a message \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -95,5 +92,3 @@ SendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-sendmessage"] = SendMessageWidget; - -})(); diff --git a/core/modules/widgets/action-setfield.js b/core/modules/widgets/action-setfield.js index f853484cd3..2d2c6ce47f 100644 --- a/core/modules/widgets/action-setfield.js +++ b/core/modules/widgets/action-setfield.js @@ -6,10 +6,7 @@ module-type: widget Action widget to set a single field or index on a tiddler. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -71,5 +68,3 @@ SetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-setfield"] = SetFieldWidget; - -})(); diff --git a/core/modules/widgets/action-setmultiplefields.js b/core/modules/widgets/action-setmultiplefields.js index 174c72889b..1e2326394d 100644 --- a/core/modules/widgets/action-setmultiplefields.js +++ b/core/modules/widgets/action-setmultiplefields.js @@ -6,10 +6,7 @@ module-type: widget Action widget to set multiple fields or indexes on a tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -81,6 +78,3 @@ SetMultipleFieldsWidget.prototype.invokeAction = function(triggeringWidget,event }; exports["action-setmultiplefields"] = SetMultipleFieldsWidget; - -})(); - \ No newline at end of file diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index d3fc6f0029..b0173f6e21 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -6,10 +6,7 @@ module-type: widget Browse widget for browsing for files to import \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -117,5 +114,3 @@ BrowseWidget.prototype.refresh = function(changedTiddlers) { }; exports.browse = BrowseWidget; - -})(); diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index aef0fe6309..68f2fcd119 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -6,10 +6,7 @@ module-type: widget Button widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -279,5 +276,3 @@ ButtonWidget.prototype.refresh = function(changedTiddlers) { }; exports.button = ButtonWidget; - -})(); diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 9d3a074148..7fe62fb42a 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -6,10 +6,7 @@ module-type: widget Checkbox widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -344,6 +341,3 @@ CheckboxWidget.prototype.refresh = function(changedTiddlers) { }; exports.checkbox = CheckboxWidget; - -})(); - \ No newline at end of file diff --git a/core/modules/widgets/codeblock.js b/core/modules/widgets/codeblock.js index aa7910cf8e..0c709c8e2a 100644 --- a/core/modules/widgets/codeblock.js +++ b/core/modules/widgets/codeblock.js @@ -6,10 +6,7 @@ module-type: widget Code block node widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -62,5 +59,3 @@ CodeBlockWidget.prototype.refresh = function(changedTiddlers) { }; exports.codeblock = CodeBlockWidget; - -})(); diff --git a/core/modules/widgets/count.js b/core/modules/widgets/count.js index b7ee454524..57acc6fe26 100644 --- a/core/modules/widgets/count.js +++ b/core/modules/widgets/count.js @@ -6,10 +6,7 @@ module-type: widget Count widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -68,5 +65,3 @@ CountWidget.prototype.refresh = function(changedTiddlers) { }; exports.count = CountWidget; - -})(); diff --git a/core/modules/widgets/data.js b/core/modules/widgets/data.js index 5d76f5abd8..d51e2ba8b6 100644 --- a/core/modules/widgets/data.js +++ b/core/modules/widgets/data.js @@ -7,9 +7,6 @@ Widget to dynamically represent one or more tiddlers \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index 47a47e2595..32cc4f1d82 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -6,10 +6,7 @@ module-type: widget Widget to display a diff between two texts \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget, @@ -144,5 +141,3 @@ DiffTextWidget.prototype.refresh = function(changedTiddlers) { }; exports["diff-text"] = DiffTextWidget; - -})(); diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js index 97e795ae4a..0bb2fc169a 100644 --- a/core/modules/widgets/draggable.js +++ b/core/modules/widgets/draggable.js @@ -6,10 +6,7 @@ module-type: widget Draggable widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -131,5 +128,3 @@ DraggableWidget.prototype.refresh = function(changedTiddlers) { }; exports.draggable = DraggableWidget; - -})(); diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index ba54d88600..fe528d08f2 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -6,10 +6,7 @@ module-type: widget Droppable widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -206,5 +203,3 @@ DroppableWidget.prototype.refresh = function(changedTiddlers) { }; exports.droppable = DroppableWidget; - -})(); \ No newline at end of file diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index 043b2557f3..7d7d8b8156 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -6,10 +6,7 @@ module-type: widget Dropzone widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var IMPORT_TITLE = "$:/Import"; @@ -328,5 +325,3 @@ DropZoneWidget.prototype.refresh = function(changedTiddlers) { }; exports.dropzone = DropZoneWidget; - -})(); diff --git a/core/modules/widgets/edit-binary.js b/core/modules/widgets/edit-binary.js index a4a18f63d4..bb9581df73 100644 --- a/core/modules/widgets/edit-binary.js +++ b/core/modules/widgets/edit-binary.js @@ -6,10 +6,7 @@ module-type: widget Edit-binary widget; placeholder for editing binary tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var BINARY_WARNING_MESSAGE = "$:/core/ui/BinaryWarning"; @@ -103,5 +100,3 @@ EditBinaryWidget.prototype.refresh = function(changedTiddlers) { }; exports["edit-binary"] = EditBinaryWidget; - -})(); diff --git a/core/modules/widgets/edit-bitmap.js b/core/modules/widgets/edit-bitmap.js index 5065127d89..3065384b3e 100644 --- a/core/modules/widgets/edit-bitmap.js +++ b/core/modules/widgets/edit-bitmap.js @@ -6,10 +6,7 @@ module-type: widget Edit-bitmap widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Default image sizes @@ -339,5 +336,3 @@ EditBitmapWidget.prototype.saveChanges = function() { }; exports["edit-bitmap"] = EditBitmapWidget; - -})(); diff --git a/core/modules/widgets/edit-shortcut.js b/core/modules/widgets/edit-shortcut.js index 1935b23371..9a45b6ec09 100644 --- a/core/modules/widgets/edit-shortcut.js +++ b/core/modules/widgets/edit-shortcut.js @@ -6,10 +6,7 @@ module-type: widget Widget to display an editable keyboard shortcut \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -154,5 +151,3 @@ EditShortcutWidget.prototype.refresh = function(changedTiddlers) { }; exports["edit-shortcut"] = EditShortcutWidget; - -})(); diff --git a/core/modules/widgets/edit-text.js b/core/modules/widgets/edit-text.js index bc7b774905..28dc5f79c7 100644 --- a/core/modules/widgets/edit-text.js +++ b/core/modules/widgets/edit-text.js @@ -6,10 +6,7 @@ module-type: widget Edit-text widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTextWidgetFactory, @@ -17,5 +14,3 @@ var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTex SimpleEngine = require("$:/core/modules/editor/engines/simple.js").SimpleEngine; exports["edit-text"] = editTextWidgetFactory(FramedEngine,SimpleEngine); - -})(); diff --git a/core/modules/widgets/edit.js b/core/modules/widgets/edit.js index e4433e1da0..ed2ad0b359 100644 --- a/core/modules/widgets/edit.js +++ b/core/modules/widgets/edit.js @@ -6,10 +6,7 @@ module-type: widget Edit widget is a meta-widget chooses the appropriate actual editting widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -90,5 +87,3 @@ EditWidget.prototype.refresh = function(changedTiddlers) { }; exports.edit = EditWidget; - -})(); diff --git a/core/modules/widgets/element.js b/core/modules/widgets/element.js index 716886e5b0..34fd3b9ffc 100755 --- a/core/modules/widgets/element.js +++ b/core/modules/widgets/element.js @@ -6,10 +6,7 @@ module-type: widget Element widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -101,5 +98,3 @@ ElementWidget.prototype.refresh = function(changedTiddlers) { }; exports.element = ElementWidget; - -})(); diff --git a/core/modules/widgets/encrypt.js b/core/modules/widgets/encrypt.js index 28dfdaf78f..edfbe44299 100644 --- a/core/modules/widgets/encrypt.js +++ b/core/modules/widgets/encrypt.js @@ -6,10 +6,7 @@ module-type: widget Encrypt widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -65,5 +62,3 @@ EncryptWidget.prototype.refresh = function(changedTiddlers) { }; exports.encrypt = EncryptWidget; - -})(); diff --git a/core/modules/widgets/entity.js b/core/modules/widgets/entity.js index 6f1a66fed4..a88f32c3d5 100755 --- a/core/modules/widgets/entity.js +++ b/core/modules/widgets/entity.js @@ -6,10 +6,7 @@ module-type: widget HTML entity widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -56,5 +53,3 @@ EntityWidget.prototype.refresh = function(changedTiddlers) { }; exports.entity = EntityWidget; - -})(); diff --git a/core/modules/widgets/error.js b/core/modules/widgets/error.js index 6a4a607f1c..efbb2cbfbe 100644 --- a/core/modules/widgets/error.js +++ b/core/modules/widgets/error.js @@ -6,10 +6,7 @@ module-type: widget Error widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -59,5 +56,3 @@ ErrorWidget.prototype.refresh = function(changedTiddlers) { }; exports.error = ErrorWidget; - -})(); diff --git a/core/modules/widgets/eventcatcher.js b/core/modules/widgets/eventcatcher.js index dad9503c69..70dc992021 100644 --- a/core/modules/widgets/eventcatcher.js +++ b/core/modules/widgets/eventcatcher.js @@ -6,10 +6,7 @@ module-type: widget Event handler widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -155,5 +152,3 @@ EventWidget.prototype.refresh = function(changedTiddlers) { }; exports.eventcatcher = EventWidget; - -})(); diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index 5a7e436596..811318e990 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -6,10 +6,7 @@ module-type: widget Field mangler widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -130,5 +127,3 @@ FieldManglerWidget.prototype.handleAddTagEvent = function(event) { }; exports.fieldmangler = FieldManglerWidget; - -})(); diff --git a/core/modules/widgets/fields.js b/core/modules/widgets/fields.js index 0e32443ad7..db558e3b62 100755 --- a/core/modules/widgets/fields.js +++ b/core/modules/widgets/fields.js @@ -6,10 +6,7 @@ module-type: widget Fields widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -110,5 +107,3 @@ FieldsWidget.prototype.refresh = function(changedTiddlers) { }; exports.fields = FieldsWidget; - -})(); diff --git a/core/modules/widgets/fill.js b/core/modules/widgets/fill.js index 870bf7878e..3a93a2b02d 100644 --- a/core/modules/widgets/fill.js +++ b/core/modules/widgets/fill.js @@ -6,10 +6,7 @@ module-type: widget Sub-widget used by the transclude widget for specifying values for slots within transcluded content. It doesn't do anything by itself because the transclude widget only ever deals with the parse tree nodes, and doesn't instantiate the widget itself \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -29,6 +26,3 @@ FillWidget.prototype.execute = function() { }; exports.fill = FillWidget; - -})(); - \ No newline at end of file diff --git a/core/modules/widgets/genesis.js b/core/modules/widgets/genesis.js index a527553ad2..3084ad2856 100644 --- a/core/modules/widgets/genesis.js +++ b/core/modules/widgets/genesis.js @@ -6,10 +6,7 @@ module-type: widget Genesis widget for dynamically creating widgets \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -117,5 +114,3 @@ GenesisWidget.prototype.refresh = function(changedTiddlers) { }; exports.genesis = GenesisWidget; - -})(); diff --git a/core/modules/widgets/image.js b/core/modules/widgets/image.js index 52496fd742..a8fddc7892 100644 --- a/core/modules/widgets/image.js +++ b/core/modules/widgets/image.js @@ -22,10 +22,7 @@ Tiddlers that contain wikitext could be rendered to a DIV of the usual size of a The width and height attributes are interpreted as a number of pixels, and do not need to include the "px" suffix. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -162,5 +159,3 @@ ImageWidget.prototype.refresh = function(changedTiddlers) { }; exports.image = ImageWidget; - -})(); diff --git a/core/modules/widgets/importvariables.js b/core/modules/widgets/importvariables.js index 3e1ac3fc6f..befee4a908 100644 --- a/core/modules/widgets/importvariables.js +++ b/core/modules/widgets/importvariables.js @@ -6,10 +6,7 @@ module-type: widget Import variable definitions from other tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -132,5 +129,3 @@ ImportVariablesWidget.prototype.refresh = function(changedTiddlers) { }; exports.importvariables = ImportVariablesWidget; - -})(); diff --git a/core/modules/widgets/jsontiddler.js b/core/modules/widgets/jsontiddler.js index 44a9e50e36..8d16ae8625 100644 --- a/core/modules/widgets/jsontiddler.js +++ b/core/modules/widgets/jsontiddler.js @@ -6,10 +6,7 @@ module-type: widget Render a tiddler as JSON text \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -87,5 +84,3 @@ JSONTiddlerWidget.prototype.getTiddlerFields = function() { }; exports.jsontiddler = JSONTiddlerWidget; - -})(); \ No newline at end of file diff --git a/core/modules/widgets/keyboard.js b/core/modules/widgets/keyboard.js index 9515f5a3b6..f4f6c29069 100644 --- a/core/modules/widgets/keyboard.js +++ b/core/modules/widgets/keyboard.js @@ -6,10 +6,7 @@ module-type: widget Keyboard shortcut widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -135,5 +132,3 @@ KeyboardWidget.prototype.refresh = function(changedTiddlers) { }; exports.keyboard = KeyboardWidget; - -})(); diff --git a/core/modules/widgets/let.js b/core/modules/widgets/let.js index 2b2886530c..3cc09ad94d 100644 --- a/core/modules/widgets/let.js +++ b/core/modules/widgets/let.js @@ -14,10 +14,7 @@ the later variables to depend upon the earlier ones. ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -92,5 +89,3 @@ LetWidget.prototype.refresh = function(changedTiddlers) { }; exports["let"] = LetWidget; - -})(); diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index f02a7cae21..c8b54818dc 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -6,10 +6,7 @@ module-type: widget Link widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -225,6 +222,3 @@ LinkWidget.prototype.refresh = function(changedTiddlers) { }; exports.link = LinkWidget; - -})(); - \ No newline at end of file diff --git a/core/modules/widgets/linkcatcher.js b/core/modules/widgets/linkcatcher.js index 4f4a66b175..d95b523ad6 100644 --- a/core/modules/widgets/linkcatcher.js +++ b/core/modules/widgets/linkcatcher.js @@ -6,10 +6,7 @@ module-type: widget Linkcatcher widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -100,5 +97,3 @@ LinkCatcherWidget.prototype.handleNavigateEvent = function(event) { }; exports.linkcatcher = LinkCatcherWidget; - -})(); diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index d4ad419952..f86d2d5719 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -6,10 +6,7 @@ module-type: widget List and list item widgets \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -523,4 +520,35 @@ ListJoinWidget.prototype.refresh = function() { return false; } exports["list-join"] = ListJoinWidget; -})(); +/* +Make <$list-template> and <$list-empty> widgets that do nothing +*/ +var ListTemplateWidget = function(parseTreeNode,options) { + // Main initialisation inherited from widget.js + this.initialise(parseTreeNode,options); +}; +ListTemplateWidget.prototype = new Widget(); +ListTemplateWidget.prototype.render = function() {} +ListTemplateWidget.prototype.refresh = function() { return false; } + +exports["list-template"] = ListTemplateWidget; + +var ListEmptyWidget = function(parseTreeNode,options) { + // Main initialisation inherited from widget.js + this.initialise(parseTreeNode,options); +}; +ListEmptyWidget.prototype = new Widget(); +ListEmptyWidget.prototype.render = function() {} +ListEmptyWidget.prototype.refresh = function() { return false; } + +exports["list-empty"] = ListEmptyWidget; + +var ListJoinWidget = function(parseTreeNode,options) { + // Main initialisation inherited from widget.js + this.initialise(parseTreeNode,options); +}; +ListJoinWidget.prototype = new Widget(); +ListJoinWidget.prototype.render = function() {} +ListJoinWidget.prototype.refresh = function() { return false; } + +exports["list-join"] = ListJoinWidget; diff --git a/core/modules/widgets/log.js b/core/modules/widgets/log.js index 9d6e95159c..332c79fc2a 100644 --- a/core/modules/widgets/log.js +++ b/core/modules/widgets/log.js @@ -6,10 +6,7 @@ module-type: widget-subclass Widget to log debug messages \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.baseClass = "action-log"; @@ -26,5 +23,3 @@ exports.prototype.render = function(event) { Object.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event); Object.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this); } - -})(); \ No newline at end of file diff --git a/core/modules/widgets/macrocall.js b/core/modules/widgets/macrocall.js index 2c4adc3553..75a927a629 100644 --- a/core/modules/widgets/macrocall.js +++ b/core/modules/widgets/macrocall.js @@ -6,10 +6,7 @@ module-type: widget Macrocall widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -87,5 +84,3 @@ MacroCallWidget.prototype.refresh = function(changedTiddlers) { }; exports.macrocall = MacroCallWidget; - -})(); diff --git a/core/modules/widgets/messagecatcher.js b/core/modules/widgets/messagecatcher.js index 1457cd11f4..44cb60f41c 100644 --- a/core/modules/widgets/messagecatcher.js +++ b/core/modules/widgets/messagecatcher.js @@ -6,10 +6,7 @@ module-type: widget Message catcher widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -106,5 +103,3 @@ MessageCatcherWidget.prototype.refresh = function(changedTiddlers) { }; exports.messagecatcher = MessageCatcherWidget; - -})(); diff --git a/core/modules/widgets/navigator.js b/core/modules/widgets/navigator.js index 205db4c917..793bc8416c 100755 --- a/core/modules/widgets/navigator.js +++ b/core/modules/widgets/navigator.js @@ -6,10 +6,7 @@ module-type: widget Navigator widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var IMPORT_TITLE = "$:/Import"; @@ -639,5 +636,3 @@ NavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) { }; exports.navigator = NavigatorWidget; - -})(); diff --git a/core/modules/widgets/parameters.js b/core/modules/widgets/parameters.js index fdd2cb9637..638db80542 100644 --- a/core/modules/widgets/parameters.js +++ b/core/modules/widgets/parameters.js @@ -6,10 +6,7 @@ module-type: widget Widget for definition of transclusion parameters \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget, @@ -104,5 +101,3 @@ ParametersWidget.prototype.refresh = function(changedTiddlers) { }; exports.parameters = ParametersWidget; - -})(); diff --git a/core/modules/widgets/password.js b/core/modules/widgets/password.js index 1d2e4ca69f..59b084940d 100644 --- a/core/modules/widgets/password.js +++ b/core/modules/widgets/password.js @@ -6,10 +6,7 @@ module-type: widget Password widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -78,5 +75,3 @@ PasswordWidget.prototype.refresh = function(changedTiddlers) { }; exports.password = PasswordWidget; - -})(); diff --git a/core/modules/widgets/qualify.js b/core/modules/widgets/qualify.js index 07a5c8b4e2..438d88d65e 100644 --- a/core/modules/widgets/qualify.js +++ b/core/modules/widgets/qualify.js @@ -6,10 +6,7 @@ module-type: widget Qualify text to a variable \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -62,5 +59,3 @@ QualifyWidget.prototype.refresh = function(changedTiddlers) { }; exports.qualify = QualifyWidget; - -})(); diff --git a/core/modules/widgets/radio.js b/core/modules/widgets/radio.js index 8384552662..4587df65fe 100644 --- a/core/modules/widgets/radio.js +++ b/core/modules/widgets/radio.js @@ -6,10 +6,7 @@ module-type: widget Set a field or index at a given tiddler via radio buttons \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -138,5 +135,3 @@ RadioWidget.prototype.refresh = function(changedTiddlers) { }; exports.radio = RadioWidget; - -})(); diff --git a/core/modules/widgets/range.js b/core/modules/widgets/range.js index efb935aac9..8d039b1f19 100644 --- a/core/modules/widgets/range.js +++ b/core/modules/widgets/range.js @@ -6,10 +6,7 @@ module-type: widget Range widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -200,5 +197,3 @@ RangeWidget.prototype.refresh = function(changedTiddlers) { }; exports.range = RangeWidget; - -})(); diff --git a/core/modules/widgets/raw.js b/core/modules/widgets/raw.js index 6d0ac41ded..3de52a8929 100644 --- a/core/modules/widgets/raw.js +++ b/core/modules/widgets/raw.js @@ -6,10 +6,7 @@ module-type: widget Raw widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -49,5 +46,3 @@ RawWidget.prototype.refresh = function(changedTiddlers) { }; exports.raw = RawWidget; - -})(); diff --git a/core/modules/widgets/reveal.js b/core/modules/widgets/reveal.js index 3e3510f750..f57f1cf423 100755 --- a/core/modules/widgets/reveal.js +++ b/core/modules/widgets/reveal.js @@ -6,10 +6,7 @@ module-type: widget Reveal widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -275,5 +272,3 @@ RevealWidget.prototype.updateState = function() { }; exports.reveal = RevealWidget; - -})(); diff --git a/core/modules/widgets/scrollable.js b/core/modules/widgets/scrollable.js index 227c455c3b..f34d462e7f 100644 --- a/core/modules/widgets/scrollable.js +++ b/core/modules/widgets/scrollable.js @@ -6,10 +6,7 @@ module-type: widget Scrollable widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DEBOUNCE_INTERVAL = 100; // Delay after last scroll event before updating the bound tiddler @@ -262,5 +259,3 @@ ScrollableWidget.prototype.refresh = function(changedTiddlers) { }; exports.scrollable = ScrollableWidget; - -})(); diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index f58a118910..8bc23542cc 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -16,10 +16,7 @@ Select widget: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -209,5 +206,3 @@ SelectWidget.prototype.refresh = function(changedTiddlers) { }; exports.select = SelectWidget; - -})(); diff --git a/core/modules/widgets/setmultiplevariables.js b/core/modules/widgets/setmultiplevariables.js index 41951953e0..c2c3f65de0 100644 --- a/core/modules/widgets/setmultiplevariables.js +++ b/core/modules/widgets/setmultiplevariables.js @@ -6,10 +6,7 @@ module-type: widget Widget to set multiple variables at once from a list of names and a list of values \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -76,6 +73,3 @@ SetMultipleVariablesWidget.prototype.refresh = function(changedTiddlers) { }; exports["setmultiplevariables"] = SetMultipleVariablesWidget; - -})(); - \ No newline at end of file diff --git a/core/modules/widgets/setvariable.js b/core/modules/widgets/setvariable.js index f8e98f3909..688268a8de 100755 --- a/core/modules/widgets/setvariable.js +++ b/core/modules/widgets/setvariable.js @@ -6,10 +6,7 @@ module-type: widget Set variable widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -122,5 +119,3 @@ SetWidget.prototype.refresh = function(changedTiddlers) { exports.setvariable = SetWidget; exports.set = SetWidget; - -})(); diff --git a/core/modules/widgets/slot.js b/core/modules/widgets/slot.js index eeaaedefe0..37c671c902 100644 --- a/core/modules/widgets/slot.js +++ b/core/modules/widgets/slot.js @@ -6,10 +6,7 @@ module-type: widget Widget for definition of slots within transcluded content. The values provided by the translusion are passed to the slot. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget, @@ -78,5 +75,3 @@ SlotWidget.prototype.refresh = function(changedTiddlers) { }; exports.slot = SlotWidget; - -})(); diff --git a/core/modules/widgets/testcase.js b/core/modules/widgets/testcase.js index ad19052795..cc71418675 100644 --- a/core/modules/widgets/testcase.js +++ b/core/modules/widgets/testcase.js @@ -7,9 +7,6 @@ Widget to display a test case \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; diff --git a/core/modules/widgets/text.js b/core/modules/widgets/text.js index 14f7291147..a349b55504 100755 --- a/core/modules/widgets/text.js +++ b/core/modules/widgets/text.js @@ -6,10 +6,7 @@ module-type: widget Text node widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -58,5 +55,3 @@ TextNodeWidget.prototype.refresh = function(changedTiddlers) { }; exports.text = TextNodeWidget; - -})(); diff --git a/core/modules/widgets/tiddler.js b/core/modules/widgets/tiddler.js index 0b70ff8753..6c08aac4e9 100755 --- a/core/modules/widgets/tiddler.js +++ b/core/modules/widgets/tiddler.js @@ -6,10 +6,7 @@ module-type: widget Tiddler widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -97,5 +94,3 @@ TiddlerWidget.prototype.refresh = function(changedTiddlers) { }; exports.tiddler = TiddlerWidget; - -})(); diff --git a/core/modules/widgets/transclude.js b/core/modules/widgets/transclude.js index 16561eab64..9bec28b076 100755 --- a/core/modules/widgets/transclude.js +++ b/core/modules/widgets/transclude.js @@ -6,10 +6,7 @@ module-type: widget Transclude widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -485,5 +482,3 @@ TranscludeWidget.prototype.refresh = function(changedTiddlers) { }; exports.transclude = TranscludeWidget; - -})(); diff --git a/core/modules/widgets/vars.js b/core/modules/widgets/vars.js index 42c2b273d0..97edab0417 100644 --- a/core/modules/widgets/vars.js +++ b/core/modules/widgets/vars.js @@ -13,10 +13,7 @@ This widget allows multiple variables to be set in one go: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -69,5 +66,3 @@ VarsWidget.prototype.refresh = function(changedTiddlers) { }; exports["vars"] = VarsWidget; - -})(); diff --git a/core/modules/widgets/view.js b/core/modules/widgets/view.js index 070836bffe..e7c808645a 100755 --- a/core/modules/widgets/view.js +++ b/core/modules/widgets/view.js @@ -6,10 +6,7 @@ module-type: widget View widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -224,5 +221,3 @@ ViewWidget.prototype.refresh = function(changedTiddlers) { }; exports.view = ViewWidget; - -})(); diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index e2bfb79ca7..b89df34b7c 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -6,10 +6,7 @@ module-type: widget Widget base class \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -868,5 +865,3 @@ Widget.evaluateVariable = function(widget,name,options) { }; exports.widget = Widget; - -})(); diff --git a/core/modules/widgets/wikify.js b/core/modules/widgets/wikify.js index 1830b20483..18146566b7 100644 --- a/core/modules/widgets/wikify.js +++ b/core/modules/widgets/wikify.js @@ -6,10 +6,7 @@ module-type: widget Widget to wikify text into a variable \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -153,5 +150,3 @@ WikifyWidget.prototype.refresh = function(changedTiddlers) { }; exports.wikify = WikifyWidget; - -})(); diff --git a/core/modules/wiki-bulkops.js b/core/modules/wiki-bulkops.js index d730b3c2e2..ca7ca4a97c 100644 --- a/core/modules/wiki-bulkops.js +++ b/core/modules/wiki-bulkops.js @@ -6,10 +6,7 @@ module-type: wikimethod Bulk tiddler operations such as rename. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -84,5 +81,3 @@ function relinkTiddler(fromTitle,toTitle,options) { exports.renameTiddler = renameTiddler; exports.relinkTiddler = relinkTiddler; - -})(); diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 928a2e8470..878b34eb25 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -16,10 +16,7 @@ Adds the following properties to the wiki object: * `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -1791,5 +1788,3 @@ exports.slugify = function(title,options) { } return slug; }; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js b/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js index 243839764a..7db98db8c4 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js @@ -3,10 +3,7 @@ Library function for creating widget using a dom creating function \*/ -(function() { -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -44,4 +41,3 @@ function createDomWidget(domCreatorFunction) { return MyWidget; } module.exports = createDomWidget; -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js b/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js index b1899b6453..1112e64c3a 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js @@ -3,14 +3,9 @@ Do nothing widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; exports.donothing = Widget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js b/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js index 71cec17624..66418be075 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute-optimized.js @@ -3,10 +3,6 @@ Hello, World widget \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -47,5 +43,3 @@ MyWidget.prototype.refresh = function(changedTiddlers) { }; exports.hello = MyWidget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js b/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js index 3e91aa122d..15ca2534a8 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/hello-attribute.js @@ -3,10 +3,6 @@ Hello, World widget \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -43,5 +39,3 @@ MyWidget.prototype.refresh = function(changedTiddlers) { }; exports.hello = MyWidget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/hello.js b/editions/dev/tiddlers/javascript-widget-tutorial/hello.js index 91afbd8f45..ea159e9cf8 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/hello.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/hello.js @@ -3,10 +3,7 @@ Hello, World widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -31,5 +28,3 @@ MyWidget.prototype.render = function(parent,nextSibling) { }; exports.hello = MyWidget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js b/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js index b8ee53d89c..1c19e1513b 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/refreshcount.js @@ -3,10 +3,6 @@ widget to count the number of times this widget refreshes \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -39,5 +35,3 @@ MyWidget.prototype.refresh = function(changedTiddlers) { }; exports.refreshcount = MyWidget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js b/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js index 59f179b5dd..54bc79e2bb 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield-norefresh.js @@ -3,10 +3,6 @@ Hello, World widget \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -32,5 +28,3 @@ MyWidget.prototype.render = function(parent, nextSibling) { }; exports.tiddlerfield = MyWidget; - -})(); diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js b/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js index c19e84f601..a07c339a37 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/tiddlerfield.js @@ -3,10 +3,6 @@ Hello, World widget \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -42,5 +38,3 @@ MyWidget.prototype.refresh = function(changedTiddlers) { }; exports.tiddlerfield = MyWidget; - -})(); diff --git a/editions/test/tiddlers/tests/modules/utils/test-csv.js b/editions/test/tiddlers/tests/modules/utils/test-csv.js index b53e9b2891..3556235ec7 100644 --- a/editions/test/tiddlers/tests/modules/utils/test-csv.js +++ b/editions/test/tiddlers/tests/modules/utils/test-csv.js @@ -6,9 +6,6 @@ tags: [[$:/tags/test-spec]] Tests the backlinks mechanism. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe('CSV Parsing', function() { @@ -29,5 +26,3 @@ describe('CSV Parsing', function() { }) }); - -})(); diff --git a/editions/test/tiddlers/tests/test-action-widgets.js b/editions/test/tiddlers/tests/test-action-widgets.js index 9d706e1a3b..f8a7ddea02 100644 --- a/editions/test/tiddlers/tests/test-action-widgets.js +++ b/editions/test/tiddlers/tests/test-action-widgets.js @@ -6,7 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the action widgets. \*/ -(function(){ + /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -94,5 +94,3 @@ it("should handle the action-listops widget", function() { }); -})(); - diff --git a/editions/test/tiddlers/tests/test-backlinks.js b/editions/test/tiddlers/tests/test-backlinks.js index ea7c2b7b4c..c02f9b1c76 100644 --- a/editions/test/tiddlers/tests/test-backlinks.js +++ b/editions/test/tiddlers/tests/test-backlinks.js @@ -6,9 +6,6 @@ tags: [[$:/tags/test-spec]] Tests the backlinks mechanism. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe('Backlinks tests', function() { @@ -141,5 +138,3 @@ describe('Backlinks tests', function() { }); }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-backtranscludes.js b/editions/test/tiddlers/tests/test-backtranscludes.js index afc09af4e7..52f08d9705 100644 --- a/editions/test/tiddlers/tests/test-backtranscludes.js +++ b/editions/test/tiddlers/tests/test-backtranscludes.js @@ -6,9 +6,6 @@ tags: $:/tags/test-spec Tests the backtranscludes mechanism. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe('Backtranscludes and transclude filter tests', function() { @@ -253,5 +250,3 @@ describe('Backtranscludes and transclude filter tests', function() { }); }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-checkbox-widget.js b/editions/test/tiddlers/tests/test-checkbox-widget.js index 936f693382..83ed66421f 100644 --- a/editions/test/tiddlers/tests/test-checkbox-widget.js +++ b/editions/test/tiddlers/tests/test-checkbox-widget.js @@ -6,7 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the checkbox widget thoroughly. \*/ -(function(){ + /*jslint node: true, browser: true */ /*global $tw: false */ @@ -575,5 +575,4 @@ Tests the checkbox widget thoroughly. }); -})(); \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-compare-filter.js b/editions/test/tiddlers/tests/test-compare-filter.js index b146fcc182..1fedf890ca 100644 --- a/editions/test/tiddlers/tests/test-compare-filter.js +++ b/editions/test/tiddlers/tests/test-compare-filter.js @@ -6,7 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the compare filter. \*/ -(function(){ + /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -81,4 +81,3 @@ describe("'compare' filter tests", function() { }); -})(); diff --git a/editions/test/tiddlers/tests/test-deserialize-operator.js b/editions/test/tiddlers/tests/test-deserialize-operator.js index c629de3ae3..cc465dfbb6 100644 --- a/editions/test/tiddlers/tests/test-deserialize-operator.js +++ b/editions/test/tiddlers/tests/test-deserialize-operator.js @@ -6,7 +6,7 @@ tags: [[$:/tags/test-spec]] Tests deserialize[] filter operator with various core deserializers \*/ -(function(){ + /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -37,8 +37,4 @@ Tests deserialize[] filter operator with various core deserializers }); }); -})(); - - - \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-deserializers.js b/editions/test/tiddlers/tests/test-deserializers.js index ae652cdfec..d207debf1a 100644 --- a/editions/test/tiddlers/tests/test-deserializers.js +++ b/editions/test/tiddlers/tests/test-deserializers.js @@ -6,7 +6,6 @@ tags: [[$:/tags/test-spec]] Tests various core deserializers \*/ -(function(){ /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -34,6 +33,3 @@ Tests various core deserializers executeTestCase("dezerializer test data case 5",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' }, { title: 'Hello "There"', text: 'Calculator'} , { title: 'Hello "There"', text: 'Protractor'} ]); }); - - })(); - \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-fakedom.js b/editions/test/tiddlers/tests/test-fakedom.js index 7041f017b8..faec01af69 100644 --- a/editions/test/tiddlers/tests/test-fakedom.js +++ b/editions/test/tiddlers/tests/test-fakedom.js @@ -7,9 +7,6 @@ Tests the fakedom that Tiddlywiki occasionally uses. \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("fakedom tests", function() { diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 5626db4f8d..96100e2f7d 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -6,12 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the filtering mechanism. \*/ -(function(){ - /* jslint node: true, browser: true */ - /* eslint-env node, browser, jasmine */ - /* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/ - /* global $tw, require */ "use strict"; describe("Filter tests", function() { @@ -1148,5 +1143,3 @@ Tests the filtering mechanism. }); - })(); - diff --git a/editions/test/tiddlers/tests/test-html-parser.js b/editions/test/tiddlers/tests/test-html-parser.js index d2266ca5ee..9fc1082358 100644 --- a/editions/test/tiddlers/tests/test-html-parser.js +++ b/editions/test/tiddlers/tests/test-html-parser.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests for the internal components of the HTML tag parser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function FakeParser() { @@ -231,5 +228,3 @@ describe("HTML tag new parser tests", function() { }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-json-filters.js b/editions/test/tiddlers/tests/test-json-filters.js index bfb8a45047..566f77fe29 100644 --- a/editions/test/tiddlers/tests/test-json-filters.js +++ b/editions/test/tiddlers/tests/test-json-filters.js @@ -6,7 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the JSON filters and the format:json operator \*/ -(function(){ + /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -151,4 +151,3 @@ describe("json filter tests", function() { }); -})(); diff --git a/editions/test/tiddlers/tests/test-linked-list.js b/editions/test/tiddlers/tests/test-linked-list.js index de477257d4..20150bc808 100644 --- a/editions/test/tiddlers/tests/test-linked-list.js +++ b/editions/test/tiddlers/tests/test-linked-list.js @@ -21,10 +21,7 @@ NOTE TO FURTHER LINKED LIST DEVELOPERS: the end. I think you'll probably be better off preventing 'prev' from ever adding undefined. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("LinkedList class tests", function() { @@ -307,4 +304,3 @@ describe("LinkedList class tests", function() { }); }); -})(); diff --git a/editions/test/tiddlers/tests/test-parsetextreference.js b/editions/test/tiddlers/tests/test-parsetextreference.js index 59f885232d..3c18b90fb1 100644 --- a/editions/test/tiddlers/tests/test-parsetextreference.js +++ b/editions/test/tiddlers/tests/test-parsetextreference.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests for source attribute in parser returned from wiki.parseTextReference \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Wiki.parseTextReference tests", function() { @@ -129,4 +126,3 @@ describe("Wiki.parseTextReference tests", function() { }); -})(); diff --git a/editions/test/tiddlers/tests/test-plugins.js b/editions/test/tiddlers/tests/test-plugins.js index 8e79efe241..fadf92a107 100644 --- a/editions/test/tiddlers/tests/test-plugins.js +++ b/editions/test/tiddlers/tests/test-plugins.js @@ -7,9 +7,6 @@ Tests for integrity of the core plugins, languages, themes and editions \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; if($tw.node) { diff --git a/editions/test/tiddlers/tests/test-popup.js b/editions/test/tiddlers/tests/test-popup.js index 455da2b9b4..fe6dac2c44 100644 --- a/editions/test/tiddlers/tests/test-popup.js +++ b/editions/test/tiddlers/tests/test-popup.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests some utility function of the Popup prototype. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Popup tests", function() { @@ -60,4 +57,3 @@ describe("Popup tests", function() { }); }); -})(); diff --git a/editions/test/tiddlers/tests/test-prefixes-filter.js b/editions/test/tiddlers/tests/test-prefixes-filter.js index a8d109d73d..c71d325855 100644 --- a/editions/test/tiddlers/tests/test-prefixes-filter.js +++ b/editions/test/tiddlers/tests/test-prefixes-filter.js @@ -4,7 +4,7 @@ type: application/javascript tags: [[$:/tags/test-spec]] Tests the reduce prefix and filter. \*/ -(function(){ + /* jslint node: true, browser: true */ /* eslint-env node, browser, jasmine */ @@ -459,5 +459,3 @@ describe("'reduce' and 'intersection' filter prefix tests", function() { expect(wiki.filterTiddlers('[tag[shopping]] :reduce[]',anchorWidget).join(",")).toBe(" 0 Brownies, 1 Chick Peas, 2 Milk, 3 Rice Pudding,"); }); }); - -})(); \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-tags-operator.js b/editions/test/tiddlers/tests/test-tags-operator.js index 87970d1135..4fa0b59632 100644 --- a/editions/test/tiddlers/tests/test-tags-operator.js +++ b/editions/test/tiddlers/tests/test-tags-operator.js @@ -6,8 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the tagging mechanism. \*/ -/*jslint node: true, browser: true */ -/*global $tw: false */ + "use strict"; describe("Tags Operator tests", function() { diff --git a/editions/test/tiddlers/tests/test-tags.js b/editions/test/tiddlers/tests/test-tags.js index 563c39fe57..2032db0394 100644 --- a/editions/test/tiddlers/tests/test-tags.js +++ b/editions/test/tiddlers/tests/test-tags.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the tagging mechanism. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Tag tests", function() { @@ -179,4 +176,3 @@ function runTests(wiki,wikiOptions) { }); -})(); diff --git a/editions/test/tiddlers/tests/test-tiddler.js b/editions/test/tiddlers/tests/test-tiddler.js index f85ee9c6ae..070ca98dcd 100644 --- a/editions/test/tiddlers/tests/test-tiddler.js +++ b/editions/test/tiddlers/tests/test-tiddler.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the tiddler object \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Tiddler tests", function() { @@ -134,4 +131,3 @@ describe("Tiddler tests", function() { }); -})(); diff --git a/editions/test/tiddlers/tests/test-utils.js b/editions/test/tiddlers/tests/test-utils.js index 91ddf86f40..29fa99c01c 100644 --- a/editions/test/tiddlers/tests/test-utils.js +++ b/editions/test/tiddlers/tests/test-utils.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests various utility functions. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Utility tests", function() { @@ -210,5 +207,3 @@ describe("Utility tests", function() { }); }); - -})(); \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-widget-getVariableInfo.js b/editions/test/tiddlers/tests/test-widget-getVariableInfo.js index 7273a6dcec..4ce21a9564 100644 --- a/editions/test/tiddlers/tests/test-widget-getVariableInfo.js +++ b/editions/test/tiddlers/tests/test-widget-getVariableInfo.js @@ -7,9 +7,6 @@ Tests the wikitext rendering pipeline end-to-end. We also need tests that indivi \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Widget module", function() { diff --git a/editions/test/tiddlers/tests/test-widget.js b/editions/test/tiddlers/tests/test-widget.js index 637104c0bd..7d1cbc329b 100755 --- a/editions/test/tiddlers/tests/test-widget.js +++ b/editions/test/tiddlers/tests/test-widget.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the wikitext rendering pipeline end-to-end. We also need tests that individually test parsers, rendertreenodes etc., but this gets us started. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Widget module", function() { @@ -945,4 +942,3 @@ describe("Widget module", function() { }); }); -})(); diff --git a/editions/test/tiddlers/tests/test-wikitext-parser.js b/editions/test/tiddlers/tests/test-wikitext-parser.js index a488ff0306..c35ad1dce7 100644 --- a/editions/test/tiddlers/tests/test-wikitext-parser.js +++ b/editions/test/tiddlers/tests/test-wikitext-parser.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests for wikitext parser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("WikiText parser tests", function() { @@ -420,4 +417,3 @@ describe("WikiText parser tests", function() { }); }); -})(); diff --git a/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js b/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js index 973f6fe66a..16e93d73a0 100644 --- a/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js +++ b/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js @@ -9,10 +9,7 @@ Intended to permit future readability improvements. Adding new functionality will probably change the "expected" html structure. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Tabs-macro HTML tests", function() { @@ -81,4 +78,3 @@ describe("Tabs-macro HTML tests", function() { }); }); -})(); diff --git a/editions/test/tiddlers/tests/test-wikitext.js b/editions/test/tiddlers/tests/test-wikitext.js index eddef73f70..c86cb90d76 100644 --- a/editions/test/tiddlers/tests/test-wikitext.js +++ b/editions/test/tiddlers/tests/test-wikitext.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the wikitext rendering pipeline end-to-end. We also need tests that individually test parsers, rendertreenodes etc., but this gets us started. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("WikiText tests", function() { @@ -71,4 +68,3 @@ describe("WikiText tests", function() { }); }); -})(); diff --git a/editions/tw5.com/tiddlers/system/dropbox-url-macro.js b/editions/tw5.com/tiddlers/system/dropbox-url-macro.js index ac7a306ca8..8cbd904629 100644 --- a/editions/tw5.com/tiddlers/system/dropbox-url-macro.js +++ b/editions/tw5.com/tiddlers/system/dropbox-url-macro.js @@ -12,10 +12,7 @@ Implements the Dropbox URL converter macro. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "dropbox-url"; @@ -29,4 +26,3 @@ exports.run = function(url) { return "`" + url + "` ([[open|" + url + "]])"; }; -})(); diff --git a/editions/tw5.com/tiddlers/system/if-macro.js b/editions/tw5.com/tiddlers/system/if-macro.js index 6c902ed65d..910b247490 100644 --- a/editions/tw5.com/tiddlers/system/if-macro.js +++ b/editions/tw5.com/tiddlers/system/if-macro.js @@ -3,10 +3,7 @@ title: $:/editions/tw5.com/if-macro.js type: application/javascript module-type: macro \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = ".if"; @@ -23,4 +20,3 @@ exports.run = function(cond, then, elze) { return cond ? then : elze; }; -})(); diff --git a/plugins/tiddlywiki/aws/modules/command.js b/plugins/tiddlywiki/aws/modules/command.js index 2846f24d85..50ef266cdc 100644 --- a/plugins/tiddlywiki/aws/modules/command.js +++ b/plugins/tiddlywiki/aws/modules/command.js @@ -6,8 +6,7 @@ module-type: command --aws command \*/ -/*jslint node: true, browser: true */ -/*global $tw: false */ + "use strict"; var async, diff --git a/plugins/tiddlywiki/aws/modules/encodings.js b/plugins/tiddlywiki/aws/modules/encodings.js index cc1068ee68..9594185670 100644 --- a/plugins/tiddlywiki/aws/modules/encodings.js +++ b/plugins/tiddlywiki/aws/modules/encodings.js @@ -6,8 +6,7 @@ module-type: filteroperator Filter operator for applying encodeuricomponent() to each item, with the addition of converting single quotes to %27, as required by AWS \*/ -/*jslint node: true, browser: true */ -/*global $tw: false */ + "use strict"; /* diff --git a/plugins/tiddlywiki/aws/modules/init.js b/plugins/tiddlywiki/aws/modules/init.js index 34db71abe5..325543f55f 100644 --- a/plugins/tiddlywiki/aws/modules/init.js +++ b/plugins/tiddlywiki/aws/modules/init.js @@ -6,8 +6,7 @@ module-type: startup AWS initialisation \*/ -/*jslint node: true, browser: true */ -/*global $tw: false */ + "use strict"; // Export name and synchronous status diff --git a/plugins/tiddlywiki/aws/modules/utils.js b/plugins/tiddlywiki/aws/modules/utils.js index a4b2ccdfb9..b663e179e9 100644 --- a/plugins/tiddlywiki/aws/modules/utils.js +++ b/plugins/tiddlywiki/aws/modules/utils.js @@ -6,8 +6,7 @@ module-type: library AWS utility functions \*/ -/*jslint node: true, browser: true */ -/*global $tw: false */ + "use strict"; /* diff --git a/plugins/tiddlywiki/bibtex/deserializer.js b/plugins/tiddlywiki/bibtex/deserializer.js index 9a87e82fb8..116f055976 100644 --- a/plugins/tiddlywiki/bibtex/deserializer.js +++ b/plugins/tiddlywiki/bibtex/deserializer.js @@ -6,10 +6,7 @@ module-type: tiddlerdeserializer BibTeX file deserializer \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var bibtexParse = require("$:/plugins/tiddlywiki/bibtex/bibtexParse.js"); @@ -46,5 +43,3 @@ exports["application/x-bibtex"] = function(text,fields) { // Return the output tiddlers return results; }; - -})(); diff --git a/plugins/tiddlywiki/browser-sniff/browser.js b/plugins/tiddlywiki/browser-sniff/browser.js index 26989623a1..31573fa7e1 100644 --- a/plugins/tiddlywiki/browser-sniff/browser.js +++ b/plugins/tiddlywiki/browser-sniff/browser.js @@ -6,10 +6,7 @@ module-type: info Initialise $:/info/browser tiddlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.getInfoTiddlerFields = function() { @@ -78,5 +75,3 @@ exports.getInfoTiddlerFields = function() { } return infoTiddlerFields; }; - -})(); diff --git a/plugins/tiddlywiki/browser-storage/rawmarkup.js b/plugins/tiddlywiki/browser-storage/rawmarkup.js index bf7c41e0a2..d94d9d2366 100644 --- a/plugins/tiddlywiki/browser-storage/rawmarkup.js +++ b/plugins/tiddlywiki/browser-storage/rawmarkup.js @@ -7,8 +7,6 @@ Startup code injected as raw markup \*/ -(function() { - // Need to initialise these because we run before bootprefix.js and boot.js $tw = window.$tw || Object.create(null); $tw.hooks = $tw.hooks || { names: {}}; @@ -89,5 +87,3 @@ function hookBootTiddlersLoaded() { text: $tw.utils.stringifyList(log) }); } - -})(); diff --git a/plugins/tiddlywiki/browser-storage/startup.js b/plugins/tiddlywiki/browser-storage/startup.js index 2d72879713..9ab61620d6 100644 --- a/plugins/tiddlywiki/browser-storage/startup.js +++ b/plugins/tiddlywiki/browser-storage/startup.js @@ -6,10 +6,7 @@ module-type: startup Startup initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -135,5 +132,3 @@ exports.startup = function() { }); }); }; - -})(); diff --git a/plugins/tiddlywiki/browser-storage/util.js b/plugins/tiddlywiki/browser-storage/util.js index 0f55ada7da..5cdcfa3984 100644 --- a/plugins/tiddlywiki/browser-storage/util.js +++ b/plugins/tiddlywiki/browser-storage/util.js @@ -7,10 +7,6 @@ Utility methods for browser-storage plugin \*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function BrowserStorageUtil(wiki,options) { @@ -109,5 +105,3 @@ BrowserStorageUtil.prototype.clearLocalStorage = function() { }; exports.BrowserStorageUtil = BrowserStorageUtil; - -})(); diff --git a/plugins/tiddlywiki/cecily/cecily.js b/plugins/tiddlywiki/cecily/cecily.js index 9eec05fd4d..06c1d30846 100644 --- a/plugins/tiddlywiki/cecily/cecily.js +++ b/plugins/tiddlywiki/cecily/cecily.js @@ -6,10 +6,7 @@ module-type: storyview Positions tiddlers on a 2D map \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var CecilyStoryView = function(listWidget) { @@ -141,5 +138,3 @@ CecilyStoryView.prototype.lookupTiddlerInMap = function(title,domNode) { }; exports.cecily = CecilyStoryView; - -})(); diff --git a/plugins/tiddlywiki/classictools/modules/recipe.js b/plugins/tiddlywiki/classictools/modules/recipe.js index aa53628879..7fa918f469 100644 --- a/plugins/tiddlywiki/classictools/modules/recipe.js +++ b/plugins/tiddlywiki/classictools/modules/recipe.js @@ -8,10 +8,7 @@ Module to deserialize tiddlers from an old school TiddlyWiki recipe file. The idea is to process the recipe file recursively, loading tiddlers into the main store using synchronous file operations. The tiddlers have their titles prefixed with the associated marker in curly brackets ("{shadow}", "{tiddler}" etc). \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["text/vnd.tiddlywiki2-recipe"] = function(text,fields) { @@ -80,5 +77,3 @@ exports["text/vnd.tiddlywiki2-recipe"] = function(text,fields) { }); return tiddlers; }; - -})(); diff --git a/plugins/tiddlywiki/codemirror/edit-codemirror.js b/plugins/tiddlywiki/codemirror/edit-codemirror.js index a8e79928d6..53ed6efddb 100755 --- a/plugins/tiddlywiki/codemirror/edit-codemirror.js +++ b/plugins/tiddlywiki/codemirror/edit-codemirror.js @@ -6,15 +6,10 @@ module-type: widget Edit-codemirror widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTextWidgetFactory, CodeMirrorEngine = require("$:/plugins/tiddlywiki/codemirror/engine.js").CodeMirrorEngine; exports["edit-codemirror"] = editTextWidgetFactory(CodeMirrorEngine,CodeMirrorEngine); - -})(); diff --git a/plugins/tiddlywiki/codemirror/engine.js b/plugins/tiddlywiki/codemirror/engine.js index d994344fc7..38064fcd6a 100755 --- a/plugins/tiddlywiki/codemirror/engine.js +++ b/plugins/tiddlywiki/codemirror/engine.js @@ -6,10 +6,7 @@ module-type: library Text editor engine based on a CodeMirror instance \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var CODEMIRROR_OPTIONS = "$:/config/CodeMirror", @@ -316,5 +313,3 @@ CodeMirrorEngine.prototype.executeTextOperation = function(operation) { }; exports.CodeMirrorEngine = $tw.browser ? CodeMirrorEngine : require("$:/core/modules/editor/engines/simple.js").SimpleEngine; - -})(); diff --git a/plugins/tiddlywiki/confetti/confetti-manager.js b/plugins/tiddlywiki/confetti/confetti-manager.js index 0ddd6139f5..66ccb427e6 100644 --- a/plugins/tiddlywiki/confetti/confetti-manager.js +++ b/plugins/tiddlywiki/confetti/confetti-manager.js @@ -7,9 +7,6 @@ Confetti manager \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var confetti = require("$:/plugins/tiddlywiki/confetti/confetti.js"); diff --git a/plugins/tiddlywiki/confetti/confetti-widget.js b/plugins/tiddlywiki/confetti/confetti-widget.js index 6c78f70666..c3bbc25e38 100644 --- a/plugins/tiddlywiki/confetti/confetti-widget.js +++ b/plugins/tiddlywiki/confetti/confetti-widget.js @@ -7,9 +7,6 @@ Confetti widget \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; diff --git a/plugins/tiddlywiki/confetti/startup.js b/plugins/tiddlywiki/confetti/startup.js index 6634cbbcad..fafbecee72 100644 --- a/plugins/tiddlywiki/confetti/startup.js +++ b/plugins/tiddlywiki/confetti/startup.js @@ -7,9 +7,6 @@ Setup the root widget event handlers \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status diff --git a/plugins/tiddlywiki/consent-banner/raw-widget.js b/plugins/tiddlywiki/consent-banner/raw-widget.js index a38deee395..b6fd338a72 100644 --- a/plugins/tiddlywiki/consent-banner/raw-widget.js +++ b/plugins/tiddlywiki/consent-banner/raw-widget.js @@ -6,10 +6,7 @@ module-type: widget An override of the raw widget that blocks raw content until the user has consented to accept cookies \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -65,5 +62,3 @@ RawWidget.prototype.refresh = function(changedTiddlers) { }; exports.raw = RawWidget; - -})(); diff --git a/plugins/tiddlywiki/consent-banner/startup.js b/plugins/tiddlywiki/consent-banner/startup.js index 861a03a918..9c2a269b3a 100644 --- a/plugins/tiddlywiki/consent-banner/startup.js +++ b/plugins/tiddlywiki/consent-banner/startup.js @@ -6,10 +6,7 @@ module-type: startup Startup initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -103,5 +100,3 @@ exports.startup = function() { }); } }; - -})(); diff --git a/plugins/tiddlywiki/d3/barwidget.js b/plugins/tiddlywiki/d3/barwidget.js index 08b71cff20..0603dd7b42 100644 --- a/plugins/tiddlywiki/d3/barwidget.js +++ b/plugins/tiddlywiki/d3/barwidget.js @@ -6,10 +6,7 @@ module-type: widget A widget for displaying stacked or grouped bar charts. Derived from http://bl.ocks.org/mbostock/3943967 \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget, @@ -200,5 +197,3 @@ BarWidget.prototype.refresh = function(changedTiddlers) { }; exports.d3bar = BarWidget; - -})(); diff --git a/plugins/tiddlywiki/d3/cloudwidget.js b/plugins/tiddlywiki/d3/cloudwidget.js index 149747d3e3..69b297d900 100644 --- a/plugins/tiddlywiki/d3/cloudwidget.js +++ b/plugins/tiddlywiki/d3/cloudwidget.js @@ -6,10 +6,7 @@ module-type: widget A widget for displaying word clouds. Derived from https://github.com/jasondavies/d3-cloud \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget, @@ -129,5 +126,3 @@ CloudWidget.prototype.refresh = function(changedTiddlers) { }; exports.d3cloud = CloudWidget; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/dynannotate.js b/plugins/tiddlywiki/dynannotate/modules/dynannotate.js index 4e4d0ef31e..5372277762 100644 --- a/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +++ b/plugins/tiddlywiki/dynannotate/modules/dynannotate.js @@ -6,10 +6,7 @@ module-type: widget Dynannotate widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TextMap = require("$:/plugins/tiddlywiki/dynannotate/textmap.js").TextMap; @@ -433,5 +430,3 @@ DynannotateWidget.prototype.refresh = function(changedTiddlers) { }; exports.dynannotate = DynannotateWidget; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js b/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js index 7b581e28d3..9a7ab71add 100644 --- a/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js +++ b/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js @@ -7,9 +7,6 @@ Manages the element spotlight effect \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function ElementSpotlight() { diff --git a/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js b/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js index f282601f8b..43fbe5148b 100644 --- a/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js +++ b/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js @@ -6,10 +6,7 @@ module-type: library Legacy version of the dyannotate background daemon to track the selection \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TextMap = require("$:/plugins/tiddlywiki/dynannotate/textmap.js").TextMap; @@ -100,5 +97,3 @@ LegacySelectionTracker.prototype.findSelectionContainer = function findSelection }; exports.LegacySelectionTracker = LegacySelectionTracker; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js b/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js index 6b74d0c4ba..2ae328e5b3 100644 --- a/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js +++ b/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js @@ -6,10 +6,7 @@ module-type: library Background daemon to track the selection \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function SelectionTracker(wiki,options) { @@ -167,5 +164,3 @@ SelectionTracker.prototype.performSelectionActions = function(chunks,variables,a }; exports.SelectionTracker = SelectionTracker; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/startup.js b/plugins/tiddlywiki/dynannotate/modules/startup.js index 4324c58937..cdcbd4bfb4 100644 --- a/plugins/tiddlywiki/dynannotate/modules/startup.js +++ b/plugins/tiddlywiki/dynannotate/modules/startup.js @@ -10,8 +10,6 @@ Startup the dyannotate background daemon to track the selection \*/ (function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -60,4 +58,3 @@ exports.startup = function() { }; })(); - \ No newline at end of file diff --git a/plugins/tiddlywiki/dynannotate/modules/textmap.js b/plugins/tiddlywiki/dynannotate/modules/textmap.js index 934ceb0ffc..5e523a2cc2 100644 --- a/plugins/tiddlywiki/dynannotate/modules/textmap.js +++ b/plugins/tiddlywiki/dynannotate/modules/textmap.js @@ -6,10 +6,7 @@ module-type: library Structure for modelling mapping between a string and its representation in the DOM \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var PREFIX_SUFFIX_LENGTH = 50; @@ -178,5 +175,3 @@ exports.TextMap.prototype.extractContext = function(startContainer,startOffset,t suffix: this.string.slice(startPos + text.length, Math.min(startPos + text.length + PREFIX_SUFFIX_LENGTH, this.string.length)) }; }; - -})(); diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index 271a419859..2f8af31f53 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -6,10 +6,7 @@ module-type: startup Zoom everything \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -263,5 +260,3 @@ function saveViewportDimensions() { } } } - -})(); diff --git a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js index 0e195b5ead..e3535c74d6 100644 --- a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js +++ b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js @@ -8,10 +8,7 @@ ENEX file deserializer For details see: https://blog.evernote.com/tech/2013/08/08/evernote-export-format-enex/ \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // DOMParser = require("$:/plugins/tiddlywiki/xmldom/dom-parser").DOMParser; @@ -136,4 +133,18 @@ function fixAttachmentReference(contentNode, md5Hash, mimeType, name) { } -})(); +function fixAttachmentReference(contentNode, md5Hash, mimeType, name) { + if(!contentNode) return; + var mediaNode = contentNode.querySelector('en-media[hash="' + md5Hash + '"]'); + if(!name) { + throw new Error("name is empty for resource hash" + md5Hash); + } + if(!mediaNode) return; + if(mimeType.indexOf("image/") === 0) { + // find en-media node, replace with image syntax + mediaNode.parentNode.replaceChild($tw.utils.domMaker("p", {text: "[img["+ name + "]]"}), mediaNode); + } else { + // For other than image attachments, we make a link to the tiddler + mediaNode.parentNode.replaceChild($tw.utils.domMaker("p", {text: "[["+ name + "]]"}), mediaNode); + } +} diff --git a/plugins/tiddlywiki/external-attachments/startup.js b/plugins/tiddlywiki/external-attachments/startup.js index 9478c6e2ac..898c92e960 100644 --- a/plugins/tiddlywiki/external-attachments/startup.js +++ b/plugins/tiddlywiki/external-attachments/startup.js @@ -6,10 +6,7 @@ module-type: startup Startup initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var ENABLE_EXTERNAL_ATTACHMENTS_TITLE = "$:/config/ExternalAttachments/Enable", @@ -123,6 +120,3 @@ function test_makePathRelative() { test("\\\\SHARE\\Users\\me\\something\\file.png","/SHARE/Users/me/somethingelse/index.html","../something/file.png",{isWindows: true}); test("\\\\SHARE\\Users\\me\\something\\file.png","/C:/Users/me/something/index.html","/SHARE/Users/me/something/file.png",{isWindows: true}); } - - -})(); diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index 451928101e..b5cc8fa619 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -6,10 +6,7 @@ module-type: syncadaptor A sync adaptor module for synchronising with the local filesystem via node.js APIs \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Get a reference to the file system @@ -167,5 +164,3 @@ FileSystemAdaptor.prototype.removeTiddlerFileInfo = function(title) { if(fs) { exports.adaptorClass = FileSystemAdaptor; } - -})(); diff --git a/plugins/tiddlywiki/freelinks/plain-text.js b/plugins/tiddlywiki/freelinks/plain-text.js index 2e7e0d7079..93572c3d45 100644 --- a/plugins/tiddlywiki/freelinks/plain-text.js +++ b/plugins/tiddlywiki/freelinks/plain-text.js @@ -6,10 +6,7 @@ module-type: widget A copy of the core text widget under a different name \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -58,5 +55,3 @@ PlainTextNodeWidget.prototype.refresh = function(changedTiddlers) { }; exports["plain-text"] = PlainTextNodeWidget; - -})(); diff --git a/plugins/tiddlywiki/freelinks/text.js b/plugins/tiddlywiki/freelinks/text.js index 2b3370ebd8..658a3ca96c 100755 --- a/plugins/tiddlywiki/freelinks/text.js +++ b/plugins/tiddlywiki/freelinks/text.js @@ -6,10 +6,7 @@ module-type: widget An override of the core text widget that automatically linkifies the text \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TITLE_TARGET_FILTER = "$:/config/Freelinks/TargetFilter"; @@ -164,5 +161,3 @@ TextNodeWidget.prototype.refresh = function(changedTiddlers) { }; exports.text = TextNodeWidget; - -})(); diff --git a/plugins/tiddlywiki/geospatial/geotools.js b/plugins/tiddlywiki/geospatial/geotools.js index 38df56a524..9d3c534f69 100644 --- a/plugins/tiddlywiki/geospatial/geotools.js +++ b/plugins/tiddlywiki/geospatial/geotools.js @@ -6,10 +6,7 @@ module-type: library Geospatial utilities \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"); @@ -37,5 +34,3 @@ exports.parsePoint = function(str) { // Return the string now we know it is a valid GeoJSON Point return json; } - -})(); diff --git a/plugins/tiddlywiki/geospatial/operators/helper.js b/plugins/tiddlywiki/geospatial/operators/helper.js index 164b1dc86b..e083f44712 100644 --- a/plugins/tiddlywiki/geospatial/operators/helper.js +++ b/plugins/tiddlywiki/geospatial/operators/helper.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for geospatial helpers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"); @@ -20,5 +17,3 @@ exports.geopoint = function(source,operator,options) { alt = $tw.utils.parseNumber(operator.operands[2] || "0"); return [JSON.stringify(turf.point([long,lat,alt]))]; }; - -})(); diff --git a/plugins/tiddlywiki/geospatial/operators/lookup.js b/plugins/tiddlywiki/geospatial/operators/lookup.js index 59ca131e78..da152c15bc 100644 --- a/plugins/tiddlywiki/geospatial/operators/lookup.js +++ b/plugins/tiddlywiki/geospatial/operators/lookup.js @@ -6,10 +6,6 @@ module-type: filteroperator Filter operators for geospatial lookup \*/ -(function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"), @@ -41,5 +37,3 @@ function getPolygonsContainingPoint(featureCollection,point) { }); return properties; } - -})(); diff --git a/plugins/tiddlywiki/geospatial/operators/measurement.js b/plugins/tiddlywiki/geospatial/operators/measurement.js index 51c46b6543..6b88bb3c43 100644 --- a/plugins/tiddlywiki/geospatial/operators/measurement.js +++ b/plugins/tiddlywiki/geospatial/operators/measurement.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for geospatial measurement \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"), @@ -50,5 +47,3 @@ exports.geonearestpoint = function(source,operator,options) { return []; } }; - -})(); diff --git a/plugins/tiddlywiki/geospatial/operators/olc.js b/plugins/tiddlywiki/geospatial/operators/olc.js index ee8c34fa5e..c0c3dbfefa 100644 --- a/plugins/tiddlywiki/geospatial/operators/olc.js +++ b/plugins/tiddlywiki/geospatial/operators/olc.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for open location code conversions \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var openlocationcode = require("$:/plugins/tiddlywiki/geospatial/openlocationcode.js"), @@ -51,5 +48,3 @@ exports["olc-encode"] = function(source,operator,options) { } return [olc]; }; - -})(); diff --git a/plugins/tiddlywiki/geospatial/operators/transformation.js b/plugins/tiddlywiki/geospatial/operators/transformation.js index 2947780c50..3538be3ee4 100644 --- a/plugins/tiddlywiki/geospatial/operators/transformation.js +++ b/plugins/tiddlywiki/geospatial/operators/transformation.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operators for geospatial transformation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var turf = require("$:/plugins/tiddlywiki/geospatial/turf.js"), @@ -83,6 +80,3 @@ function geojsonOp(geojsonObjects, op) { }); return turf.featureCollection(resultFeatures); } - - -})(); diff --git a/plugins/tiddlywiki/geospatial/startup.js b/plugins/tiddlywiki/geospatial/startup.js index 1b76e9949e..43ee207dd4 100644 --- a/plugins/tiddlywiki/geospatial/startup.js +++ b/plugins/tiddlywiki/geospatial/startup.js @@ -6,10 +6,7 @@ module-type: startup Geospatial initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -74,5 +71,3 @@ exports.startup = function() { } }); }; - -})(); diff --git a/plugins/tiddlywiki/geospatial/widgets/geobaselayer.js b/plugins/tiddlywiki/geospatial/widgets/geobaselayer.js index 09920219b8..7979642676 100644 --- a/plugins/tiddlywiki/geospatial/widgets/geobaselayer.js +++ b/plugins/tiddlywiki/geospatial/widgets/geobaselayer.js @@ -6,12 +6,7 @@ module-type: widget geobaselayer widget to represent a base layer for a geomap widget. Clone of the data widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.geobaselayer = require("$:/core/modules/widgets/data.js").data; - -})(); diff --git a/plugins/tiddlywiki/geospatial/widgets/geolayer.js b/plugins/tiddlywiki/geospatial/widgets/geolayer.js index b39cd402ef..301c9630cf 100644 --- a/plugins/tiddlywiki/geospatial/widgets/geolayer.js +++ b/plugins/tiddlywiki/geospatial/widgets/geolayer.js @@ -6,12 +6,7 @@ module-type: widget geolayer widget to represent a layer for a geomap widget. Clone of the data widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.geolayer = require("$:/core/modules/widgets/data.js").data; - -})(); diff --git a/plugins/tiddlywiki/geospatial/widgets/geomap.js b/plugins/tiddlywiki/geospatial/widgets/geomap.js index f3cad03775..a5e24d80db 100644 --- a/plugins/tiddlywiki/geospatial/widgets/geomap.js +++ b/plugins/tiddlywiki/geospatial/widgets/geomap.js @@ -6,10 +6,7 @@ module-type: widget Leaflet map widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -351,6 +348,3 @@ GeomapWidget.prototype.refresh = function(changedTiddlers) { }; exports.geomap = GeomapWidget; - -})(); - diff --git a/plugins/tiddlywiki/googleanalytics/googleanalytics.js b/plugins/tiddlywiki/googleanalytics/googleanalytics.js index ef333ffb9f..4dfbb1ef54 100644 --- a/plugins/tiddlywiki/googleanalytics/googleanalytics.js +++ b/plugins/tiddlywiki/googleanalytics/googleanalytics.js @@ -6,10 +6,7 @@ module-type: startup Runs Google Analytics with the measurement ID in the tiddler `$:/GoogleAnalyticsMeasurementID` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -55,7 +52,3 @@ exports.startup = function() { } } }; - - - -})(); diff --git a/plugins/tiddlywiki/highlight-legacy/highlightblock.js b/plugins/tiddlywiki/highlight-legacy/highlightblock.js index 9c1187a914..9e295d013d 100644 --- a/plugins/tiddlywiki/highlight-legacy/highlightblock.js +++ b/plugins/tiddlywiki/highlight-legacy/highlightblock.js @@ -6,10 +6,6 @@ module-type: widget Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TYPE_MAPPINGS_BASE = "$:/config/HighlightPlugin/TypeMappings/"; @@ -40,5 +36,3 @@ CodeBlockWidget.prototype.postRender = function() { } } }; - -})(); diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index 1d80346318..3bc515fd63 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -6,10 +6,6 @@ module-type: widget Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 \*/ -(function() { - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TYPE_MAPPINGS_BASE = "$:/config/HighlightPlugin/TypeMappings/"; @@ -46,6 +42,4 @@ if(hljs.getLanguage !== undefined) { } } }; -} - -})(); +} diff --git a/plugins/tiddlywiki/innerwiki/anchor.js b/plugins/tiddlywiki/innerwiki/anchor.js index b18be7e7cc..5843702560 100644 --- a/plugins/tiddlywiki/innerwiki/anchor.js +++ b/plugins/tiddlywiki/innerwiki/anchor.js @@ -7,9 +7,6 @@ Anchor widget to represent an innerwiki graphical anchor. Clone of the data widg \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.anchor = require("$:/core/modules/widgets/data.js").data; diff --git a/plugins/tiddlywiki/innerwiki/innerwiki.js b/plugins/tiddlywiki/innerwiki/innerwiki.js index 9bd58eba8f..2142a03166 100644 --- a/plugins/tiddlywiki/innerwiki/innerwiki.js +++ b/plugins/tiddlywiki/innerwiki/innerwiki.js @@ -6,10 +6,7 @@ module-type: widget Widget to display an innerwiki in an iframe \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DEFAULT_INNERWIKI_TEMPLATE = "$:/plugins/tiddlywiki/innerwiki/template"; @@ -347,5 +344,3 @@ InnerWikiWidget.prototype.saveScreenshot = function(options,callback) { }; exports.innerwiki = InnerWikiWidget; - -})(); diff --git a/plugins/tiddlywiki/innerwiki/screenshot.js b/plugins/tiddlywiki/innerwiki/screenshot.js index 428dfb59e4..954c8ead49 100644 --- a/plugins/tiddlywiki/innerwiki/screenshot.js +++ b/plugins/tiddlywiki/innerwiki/screenshot.js @@ -6,10 +6,7 @@ module-type: command Commands to render tiddlers identified by a filter and save any screenshots identified by <$innerwiki> widgets \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var InnerWikiWidget = require("$:/plugins/tiddlywiki/innerwiki/innerwiki.js").innerwiki; @@ -79,5 +76,3 @@ Command.prototype.findInnerWikiWidgets = function(widgetNode) { }; exports.Command = Command; - -})(); diff --git a/plugins/tiddlywiki/jasmine/command.js b/plugins/tiddlywiki/jasmine/command.js index fe7e623345..155b9bbeb6 100644 --- a/plugins/tiddlywiki/jasmine/command.js +++ b/plugins/tiddlywiki/jasmine/command.js @@ -6,9 +6,6 @@ module-type: command The command which executes jasmine on the command line for TiddlyWiki5 \*/ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var jasmine = require("./jasmine-plugin.js"); diff --git a/plugins/tiddlywiki/jasmine/jasmine-plugin.js b/plugins/tiddlywiki/jasmine/jasmine-plugin.js index 8dbf6568e9..a6b0be7537 100644 --- a/plugins/tiddlywiki/jasmine/jasmine-plugin.js +++ b/plugins/tiddlywiki/jasmine/jasmine-plugin.js @@ -6,10 +6,8 @@ module-type: library The main module of the Jasmine test plugin for TiddlyWiki5 \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: true */ + "use strict"; var TEST_TIDDLER_FILTER = "[all[tiddlers+shadows]type[application/javascript]tag[$:/tags/test-spec]]"; @@ -157,5 +155,3 @@ exports.runTests = function(callback,specFilter) { nodeJasmineWrapper.execute(null,specFilter); } }; - -})(); diff --git a/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js b/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js index 2e854cf463..52d86de77e 100644 --- a/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js +++ b/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js @@ -6,10 +6,7 @@ tags: [[$:/tags/test-spec]] Tests the wiki based tests \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var TEST_WIKI_TIDDLER_FILTER = "[all[tiddlers+shadows]type[text/vnd.tiddlywiki-multiple]tag[$:/tags/wiki-test-spec]]"; @@ -99,5 +96,3 @@ describe("Wiki-based tests", function() { } }); - -})(); diff --git a/plugins/tiddlywiki/jasmine/startup.js b/plugins/tiddlywiki/jasmine/startup.js index 47aec342da..276381cffb 100644 --- a/plugins/tiddlywiki/jasmine/startup.js +++ b/plugins/tiddlywiki/jasmine/startup.js @@ -6,10 +6,8 @@ module-type: startup The main module of the Jasmine test plugin for TiddlyWiki5 \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: true */ + "use strict"; var jasmine = require("./jasmine-plugin.js"); @@ -34,5 +32,3 @@ if($tw.browser) { // We make this check after the commands are run. exports.after = ["commands"]; } - -})(); diff --git a/plugins/tiddlywiki/jszip/startup.js b/plugins/tiddlywiki/jszip/startup.js index 26466d74e1..812d90bc72 100644 --- a/plugins/tiddlywiki/jszip/startup.js +++ b/plugins/tiddlywiki/jszip/startup.js @@ -6,10 +6,7 @@ module-type: startup Setup the root widget event handlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var JSZip = require("$:/plugins/tiddlywiki/jszip/jszip.js"); @@ -100,5 +97,3 @@ function downloadZipFile(title,filename) { document.body.removeChild(link); } } - -})(); diff --git a/plugins/tiddlywiki/katex/latex-parser.js b/plugins/tiddlywiki/katex/latex-parser.js index 6b72c7f515..78b6eee2e0 100644 --- a/plugins/tiddlywiki/katex/latex-parser.js +++ b/plugins/tiddlywiki/katex/latex-parser.js @@ -17,10 +17,7 @@ This wikiparser can be modified using the rules eg: ``` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.name = "latex-parser"; @@ -65,5 +62,3 @@ exports.parse = function() { } }]; }; - -})(); diff --git a/plugins/tiddlywiki/katex/wrapper.js b/plugins/tiddlywiki/katex/wrapper.js index 1b41655cab..05b820749b 100644 --- a/plugins/tiddlywiki/katex/wrapper.js +++ b/plugins/tiddlywiki/katex/wrapper.js @@ -6,10 +6,7 @@ module-type: widget Wrapper for `katex.min.js` that provides a `<$latex>` widget. It is also available under the alias `<$katex>` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var katex = require("$:/plugins/tiddlywiki/katex/katex.min.js"), @@ -94,6 +91,3 @@ KaTeXWidget.prototype.refresh = function(changedTiddlers) { exports.latex = KaTeXWidget; exports.katex = KaTeXWidget; - -})(); - diff --git a/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js b/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js index 13f5026a7e..75f3cc5745 100644 --- a/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js +++ b/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to make a markdown link \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["make-markdown-link"] = function(event,operation) { @@ -33,5 +30,3 @@ exports["make-markdown-link"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - -})(); diff --git a/plugins/tiddlywiki/markdown-legacy/wrapper.js b/plugins/tiddlywiki/markdown-legacy/wrapper.js index 6fa56232a9..c1da539cc3 100755 --- a/plugins/tiddlywiki/markdown-legacy/wrapper.js +++ b/plugins/tiddlywiki/markdown-legacy/wrapper.js @@ -6,10 +6,7 @@ module-type: parser Wraps up the remarkable parser for use as a Parser in TiddlyWiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var r = require("$:/plugins/tiddlywiki/markdown-legacy/remarkable.js"); @@ -337,5 +334,3 @@ var MarkdownParser = function(type, text, options) { exports["text/x-markdown"] = MarkdownParser; exports["text/markdown"] = MarkdownParser; - -})(); diff --git a/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js b/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js index 76f62f5a57..5a3502695d 100644 --- a/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js +++ b/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js @@ -6,10 +6,7 @@ module-type: texteditoroperation Text editor operation to make a markdown link \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports["make-markdown-link"] = function(event,operation) { @@ -39,5 +36,3 @@ exports["make-markdown-link"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - -})(); diff --git a/plugins/tiddlywiki/markdown/markdown-it-katex.js b/plugins/tiddlywiki/markdown/markdown-it-katex.js index dc70f829af..ac8b6d2ab4 100644 --- a/plugins/tiddlywiki/markdown/markdown-it-katex.js +++ b/plugins/tiddlywiki/markdown/markdown-it-katex.js @@ -5,7 +5,7 @@ module-type: library Based on markdown-it-katex v2.0.0 by @waylonflinn https://github.com/waylonflinn/markdown-it-katex | MIT License \*/ -(function(){ + /* Process inline math */ /* Like markdown-it-simplemath, this is a stripped down, simplified version of: @@ -166,5 +166,4 @@ function math_inline_block(state, silent) { module.exports = function math_plugin(md, options) { md.inline.ruler.after('escape', 'math_inline', math_inline); md.inline.ruler.after('escape', 'math_inline_block', math_inline_block); -}; -})(); \ No newline at end of file +}; \ No newline at end of file diff --git a/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js b/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js index 64189ba8bf..ad55daa75d 100644 --- a/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js +++ b/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js @@ -6,10 +6,7 @@ module-type: library Wraps up the markdown-it parser for use as a Parser in TiddlyWiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var md; @@ -535,5 +532,3 @@ module.exports = function tiddlyWikiPlugin(markdown,options) { md.core.ruler.disable('text_join'); md.core.ruler.push('wikify',wikify); }; - -})(); diff --git a/plugins/tiddlywiki/markdown/wrapper.js b/plugins/tiddlywiki/markdown/wrapper.js index 708b932e39..83da544b95 100755 --- a/plugins/tiddlywiki/markdown/wrapper.js +++ b/plugins/tiddlywiki/markdown/wrapper.js @@ -6,10 +6,7 @@ module-type: parser Wraps up the markdown-it parser for use as a Parser in TiddlyWiki \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var MarkdownIt = require("./markdown-it"); @@ -261,4 +258,3 @@ function MarkdownParser(type,text,options) { exports["text/markdown"] = MarkdownParser; exports["text/x-markdown"] = MarkdownParser; -})(); diff --git a/plugins/tiddlywiki/mobiledragdrop/startup.js b/plugins/tiddlywiki/mobiledragdrop/startup.js index 6abbbd16de..311bacc547 100644 --- a/plugins/tiddlywiki/mobiledragdrop/startup.js +++ b/plugins/tiddlywiki/mobiledragdrop/startup.js @@ -6,10 +6,7 @@ module-type: startup Startup initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -21,5 +18,3 @@ exports.synchronous = true; exports.startup = function() { window.addEventListener("touchmove", function() {}); }; - -})(); diff --git a/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js b/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js index 73cbd2f100..85fe21ef5f 100644 --- a/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js +++ b/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js @@ -6,7 +6,7 @@ module-type: saver Handles saving changes in the NW.js environment. Not required by TiddlyDesktop, which re-uses the TiddlyFox saver, but useful if you're embedding a single TiddlyWiki document into a NW.js app. \*/ -(function(){ + /*jslint node: true, browser: true */ /*global $tw: false, netscape: false, Components: false */ @@ -57,5 +57,3 @@ Create an instance of this saver exports.create = function(wiki) { return new NodeWebKitSaver(wiki); }; - -})(); diff --git a/plugins/tiddlywiki/pluginlibrary/libraryserver.js b/plugins/tiddlywiki/pluginlibrary/libraryserver.js index 4f5f3e2eca..01814d7912 100644 --- a/plugins/tiddlywiki/pluginlibrary/libraryserver.js +++ b/plugins/tiddlywiki/pluginlibrary/libraryserver.js @@ -6,10 +6,7 @@ module-type: library A simple HTTP-over-window.postMessage implementation of a standard TiddlyWeb-compatible server. It uses real HTTP to load the individual tiddler JSON files. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Listen for window messages @@ -86,5 +83,3 @@ function httpGet(url,callback) { }; http.send(); } - -})(); diff --git a/plugins/tiddlywiki/qrcode/barcodereader.js b/plugins/tiddlywiki/qrcode/barcodereader.js index 79d2592546..f44ec4c0e2 100644 --- a/plugins/tiddlywiki/qrcode/barcodereader.js +++ b/plugins/tiddlywiki/qrcode/barcodereader.js @@ -7,9 +7,6 @@ barcodereader widget for reading barcodes \*/ (function(){ - -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; diff --git a/plugins/tiddlywiki/qrcode/makeqr.js b/plugins/tiddlywiki/qrcode/makeqr.js index 0328a84681..409af17c31 100644 --- a/plugins/tiddlywiki/qrcode/makeqr.js +++ b/plugins/tiddlywiki/qrcode/makeqr.js @@ -6,10 +6,7 @@ module-type: macro Macro to convert a string into a QR Code \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -69,6 +66,3 @@ function generateQrCode(text,options) { margin = parseInt((size - qr.getModuleCount() * cellsize) / 2); return qr.createImgTag(cellsize, margin, size); } - - -})(); diff --git a/plugins/tiddlywiki/railroad/components.js b/plugins/tiddlywiki/railroad/components.js index 85d0d16e23..669e42333c 100644 --- a/plugins/tiddlywiki/railroad/components.js +++ b/plugins/tiddlywiki/railroad/components.js @@ -6,10 +6,7 @@ module-type: library Components of a railroad diagram. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var railroad = require("$:/plugins/tiddlywiki/railroad/railroad-diagrams.js"); @@ -287,5 +284,3 @@ exports.components = { Terminal: Terminal, Transclusion: Transclusion }; - -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/railroad/parser.js b/plugins/tiddlywiki/railroad/parser.js index 02256524dd..38e9ee32f0 100644 --- a/plugins/tiddlywiki/railroad/parser.js +++ b/plugins/tiddlywiki/railroad/parser.js @@ -33,10 +33,7 @@ pragmas: \end single|double|none \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var components = require("$:/plugins/tiddlywiki/railroad/components.js").components; @@ -448,5 +445,3 @@ Parser.prototype.readPragma = function(source,pos) { /////////////////////////// Exports exports.parser = Parser; - -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/railroad/typed-parser.js b/plugins/tiddlywiki/railroad/typed-parser.js index c956ff09ba..ac93bf8e1c 100644 --- a/plugins/tiddlywiki/railroad/typed-parser.js +++ b/plugins/tiddlywiki/railroad/typed-parser.js @@ -6,10 +6,7 @@ module-type: parser This parser wraps unadorned railroad syntax into a railroad widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var RailroadParser = function(type,text,options) { @@ -23,6 +20,3 @@ console.log(text); }; exports["text/vnd.tiddlywiki.railroad"] = RailroadParser; - -})(); - diff --git a/plugins/tiddlywiki/railroad/wrapper.js b/plugins/tiddlywiki/railroad/wrapper.js index 311d2f4208..0e2a90059a 100644 --- a/plugins/tiddlywiki/railroad/wrapper.js +++ b/plugins/tiddlywiki/railroad/wrapper.js @@ -6,10 +6,7 @@ module-type: widget Wrapper for `railroad-diagrams.js` that provides a `<$railroad>` widget. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Parser = require("$:/plugins/tiddlywiki/railroad/parser.js").parser, @@ -143,5 +140,3 @@ RailroadWidget.prototype.dispatchLink = function(to,event) { }; exports.railroad = RailroadWidget; - -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index ec6fe7c01b..a1f253ba38 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -6,10 +6,7 @@ module-type: startup A startup module to download every changed tiddler as a JSON file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -149,5 +146,3 @@ function saveTiddlerFile(tiddler,options) { link.click(); document.body.removeChild(link); } - -})(); diff --git a/plugins/tiddlywiki/share/rawmarkup.js b/plugins/tiddlywiki/share/rawmarkup.js index 264f7fc736..0c4c58b92e 100644 --- a/plugins/tiddlywiki/share/rawmarkup.js +++ b/plugins/tiddlywiki/share/rawmarkup.js @@ -6,10 +6,7 @@ module-type: library Read tiddlers from the browser location hash \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Get the hash @@ -108,5 +105,3 @@ function removeWarningBanner() { warningWrapper.parentNode.removeChild(warningWrapper); stylesWrapper.parentNode.removeChild(stylesWrapper); } - -})(); diff --git a/plugins/tiddlywiki/stacked-view/stacked.js b/plugins/tiddlywiki/stacked-view/stacked.js index 32d30d6d5d..9ef5d5bffe 100644 --- a/plugins/tiddlywiki/stacked-view/stacked.js +++ b/plugins/tiddlywiki/stacked-view/stacked.js @@ -6,10 +6,7 @@ module-type: storyview Keeps tiddlers in a stack \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/#easeInOutCubic @@ -84,5 +81,3 @@ StackedListView.prototype.remove = function(widget) { }; exports.stacked = StackedListView; - -})(); \ No newline at end of file diff --git a/plugins/tiddlywiki/tahoelafs/saver.js b/plugins/tiddlywiki/tahoelafs/saver.js index 2e508352e7..bfbe7f3222 100644 --- a/plugins/tiddlywiki/tahoelafs/saver.js +++ b/plugins/tiddlywiki/tahoelafs/saver.js @@ -6,10 +6,7 @@ module-type: saver A bare bones saver for Tahoe-LAFS. It just PUTs the new HTML file back to the server at the same URL. \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -53,5 +50,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TahoeSaver(wiki); }; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js index 67f2b02f12..2debe95a8c 100644 --- a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js +++ b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js @@ -6,10 +6,7 @@ module-type: command Command to slice a specified tiddler \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"), @@ -54,5 +51,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js b/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js index 443f80a0bb..828a0599cb 100644 --- a/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js +++ b/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js @@ -6,10 +6,7 @@ module-type: filteroperator Filter operator returning all the descendents of a tiddler listed in the "list" field \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -34,5 +31,3 @@ exports["list-children"] = function(source,operator,options) { }); return Object.keys(children); }; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index 2fc2238bb7..ad18b45fa6 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -16,10 +16,7 @@ var slicer = new textSlicer.Slicer(doc,{ }); \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function Slicer(options) { @@ -474,5 +471,3 @@ Slicer.prototype.makeTitle = function(prefix) { }; exports.Slicer = Slicer; - -})(); diff --git a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js index 19eeac5bef..0fee863637 100644 --- a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js +++ b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js @@ -6,10 +6,7 @@ module-type: startup Setup the root widget event handlers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var textSlicer = require("$:/plugins/tiddlywiki/text-slicer/modules/slicer.js"); @@ -47,5 +44,3 @@ exports.startup = function() { }); }); }; - -})(); diff --git a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js index b91ea35607..b33d3b5e6c 100644 --- a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js +++ b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js @@ -6,10 +6,7 @@ module-type: syncadaptor A sync adaptor module for synchronising with TiddlyWeb compatible servers \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var CONFIG_HOST_TIDDLER = "$:/config/tiddlyweb/host", @@ -375,5 +372,3 @@ TiddlyWebAdaptor.prototype.parseEtag = function(etag) { if($tw.browser && document.location.protocol.substr(0,4) === "http" ) { exports.adaptorClass = TiddlyWebAdaptor; } - -})(); diff --git a/plugins/tiddlywiki/tw2parser/classictransclude.js b/plugins/tiddlywiki/tw2parser/classictransclude.js index 8afbed60cb..6c91cd1060 100644 --- a/plugins/tiddlywiki/tw2parser/classictransclude.js +++ b/plugins/tiddlywiki/tw2parser/classictransclude.js @@ -6,10 +6,7 @@ module-type: widget Transclude widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var sliceSeparator = "::"; var sectionSeparator = "##"; @@ -191,5 +188,3 @@ TranscludeWidget.prototype.refresh = function(changedTiddlers) { }; exports.classictransclude = TranscludeWidget; - -})(); diff --git a/plugins/tiddlywiki/tw2parser/entry.js b/plugins/tiddlywiki/tw2parser/entry.js index 073221b8ba..b4d654a4f8 100644 --- a/plugins/tiddlywiki/tw2parser/entry.js +++ b/plugins/tiddlywiki/tw2parser/entry.js @@ -3,9 +3,6 @@ title: $:/macros/tiddlywiki/entry.js type: application/javascript module-type: macro \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* Information about this macro @@ -27,4 +24,3 @@ exports.run = function(key,map) { return ""; } } -})(); diff --git a/plugins/tiddlywiki/tw2parser/parameteradapter.js b/plugins/tiddlywiki/tw2parser/parameteradapter.js index 7dc8e751da..3580ba7e3b 100644 --- a/plugins/tiddlywiki/tw2parser/parameteradapter.js +++ b/plugins/tiddlywiki/tw2parser/parameteradapter.js @@ -3,10 +3,7 @@ title: $:/macros/classic/macroadapter.js type: application/javascript module-type: module \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* Information about this module: @@ -94,4 +91,3 @@ var paramadapter = { exports.name = 'macroadapter'; exports.namedapter = namedapter; exports.paramadapter = paramadapter; -})(); diff --git a/plugins/tiddlywiki/tw2parser/wikitextparser.js b/plugins/tiddlywiki/tw2parser/wikitextparser.js index fec58f3bdf..81b56f94fb 100644 --- a/plugins/tiddlywiki/tw2parser/wikitextparser.js +++ b/plugins/tiddlywiki/tw2parser/wikitextparser.js @@ -28,10 +28,7 @@ HTML nodes look like this: ` \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -196,5 +193,3 @@ WikiTextParser.prototype.subWikifyTerm = function(output,terminatorRegExp) { }; exports["text/x-tiddlywiki"] = WikiTextParser; - -})(); diff --git a/plugins/tiddlywiki/tw2parser/wikitextrules.js b/plugins/tiddlywiki/tw2parser/wikitextrules.js index 068bb97573..1b590d3145 100755 --- a/plugins/tiddlywiki/tw2parser/wikitextrules.js +++ b/plugins/tiddlywiki/tw2parser/wikitextrules.js @@ -6,10 +6,7 @@ module-type: module Rule modules for the wikitext parser \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var macroadapter = require("$:/macros/classic/macroadapter.js"); var textPrimitives = { @@ -824,5 +821,3 @@ var rules = [ ]; exports.rules = rules; - -})(); diff --git a/plugins/tiddlywiki/twitter-archivist/archivist.js b/plugins/tiddlywiki/twitter-archivist/archivist.js index e0ffe2d52e..69b7e8153b 100644 --- a/plugins/tiddlywiki/twitter-archivist/archivist.js +++ b/plugins/tiddlywiki/twitter-archivist/archivist.js @@ -6,10 +6,7 @@ module-type: utils Utility class for manipulating Twitter archives \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; function TwitterArchivist(options) { @@ -315,5 +312,3 @@ function arrayBufferToBase64(arrayBuffer) { exports.TwitterArchivist = TwitterArchivist; exports.TwitterArchivistSourceNodeJs = TwitterArchivistSourceNodeJs; exports.TwitterArchivistSourceBrowser = TwitterArchivistSourceBrowser; - -})(); diff --git a/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js b/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js index 497b82bf59..5874fa3fa3 100644 --- a/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js +++ b/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js @@ -6,10 +6,7 @@ module-type: command Read tiddlers from an unzipped Twitter archive \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var widget = require("$:/core/modules/widgets/widget.js"); @@ -49,5 +46,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); diff --git a/plugins/tiddlywiki/twitter-archivist/startup.js b/plugins/tiddlywiki/twitter-archivist/startup.js index b87453dda1..47cc47dc72 100644 --- a/plugins/tiddlywiki/twitter-archivist/startup.js +++ b/plugins/tiddlywiki/twitter-archivist/startup.js @@ -6,10 +6,7 @@ module-type: startup Twitter initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -34,5 +31,3 @@ exports.startup = function() { }); }); }; - -})(); diff --git a/plugins/tiddlywiki/twitter/startup.js b/plugins/tiddlywiki/twitter/startup.js index 48d1065418..9a28196a1a 100644 --- a/plugins/tiddlywiki/twitter/startup.js +++ b/plugins/tiddlywiki/twitter/startup.js @@ -6,10 +6,7 @@ module-type: startup Twitter initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -23,5 +20,3 @@ exports.startup = function() { logger.alert("The plugin 'tiddlywiki/twitter' is disabled until this wiki is saved and reloaded again"); } }; - -})(); diff --git a/plugins/tiddlywiki/twitter/twitter-widget.js b/plugins/tiddlywiki/twitter/twitter-widget.js index 0046b7139a..6ee3e785a9 100644 --- a/plugins/tiddlywiki/twitter/twitter-widget.js +++ b/plugins/tiddlywiki/twitter/twitter-widget.js @@ -6,10 +6,7 @@ module-type: widget Twitter widget \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -140,5 +137,3 @@ TwitterWidget.prototype.refresh = function(changedTiddlers) { }; exports.twitter = TwitterWidget; - -})(); diff --git a/plugins/tiddlywiki/upgrade/config.js b/plugins/tiddlywiki/upgrade/config.js index 0c50f1fa74..4010d53cf1 100644 --- a/plugins/tiddlywiki/upgrade/config.js +++ b/plugins/tiddlywiki/upgrade/config.js @@ -6,10 +6,7 @@ module-type: startup Startup module for configuring the upgrade plugin \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -22,5 +19,3 @@ exports.startup = function() { $tw.config.usePasswordVault = true; $tw.config.disableAutoSave = true; }; - -})(); diff --git a/plugins/tiddlywiki/xlsx-utils/deserializer.js b/plugins/tiddlywiki/xlsx-utils/deserializer.js index 250184d23f..b27f41ccdb 100644 --- a/plugins/tiddlywiki/xlsx-utils/deserializer.js +++ b/plugins/tiddlywiki/xlsx-utils/deserializer.js @@ -6,10 +6,7 @@ module-type: tiddlerdeserializer XLSX file deserializer \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -26,5 +23,3 @@ exports["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = f // Return the output tiddlers return importer.getResults(); }; - -})(); diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js index 2bb963ab62..28a735e478 100644 --- a/plugins/tiddlywiki/xlsx-utils/importer.js +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -6,10 +6,7 @@ module-type: library Class to import an Excel file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var DEFAULT_IMPORT_SPEC_TITLE = "$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec"; @@ -201,5 +198,3 @@ XLSXImporter.prototype.findColumns = function(sheet,sheetSize) { }; exports.XLSXImporter = XLSXImporter; - -})(); diff --git a/plugins/tiddlywiki/xlsx-utils/startup.js b/plugins/tiddlywiki/xlsx-utils/startup.js index 15772384fe..269a10ff4e 100644 --- a/plugins/tiddlywiki/xlsx-utils/startup.js +++ b/plugins/tiddlywiki/xlsx-utils/startup.js @@ -6,10 +6,7 @@ module-type: startup Initialisation \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; // Export name and synchronous status @@ -25,5 +22,3 @@ exports.startup = function() { logger.alert("The plugin 'xlsx-utils' requires the 'jszip' plugin to be installed"); } }; - -})(); diff --git a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js index 98773a3c68..b71787c00b 100644 --- a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js +++ b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js @@ -6,10 +6,7 @@ module-type: command Command to import an xlsx file \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.info = { @@ -42,5 +39,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - -})(); From 961e74f73d230d0028efb586db07699120eac888 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Sat, 22 Mar 2025 19:32:00 +0800 Subject: [PATCH 067/458] Remove .eslintrc.json (#8987) --- .eslintrc.json | 317 ------------------------------------------------- 1 file changed, 317 deletions(-) delete mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index cbcea998b0..0000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,317 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "node": true - }, - "extends": [ - "eslint:recommended" - ], - "globals": { - "$tw": "writable" - }, - "parserOptions": { - "ecmaVersion": 5 - }, - "plugins": [], - "rules": { - "array-bracket-newline": "off", - "array-bracket-spacing": "off", - "array-callback-return": "off", - "array-element-newline": "off", - "arrow-body-style": "error", - "arrow-parens": [ - "error", - "as-needed" - ], - "arrow-spacing": [ - "error", - { - "after": true, - "before": true - } - ], - "block-scoped-var": "off", - "block-spacing": "off", - "brace-style": "off", - "callback-return": "off", - "camelcase": "off", - "capitalized-comments": "off", - "class-methods-use-this": "error", - "comma-dangle": "off", - "comma-spacing": "off", - "comma-style": "off", - "complexity": "off", - "computed-property-spacing": "off", - "consistent-return": "off", - "consistent-this": "off", - "curly": "off", - "default-case": "off", - "default-case-last": "error", - "default-param-last": "error", - "dot-location": "off", - "dot-notation": "off", - "eol-last": "off", - "eqeqeq": "off", - "func-call-spacing": "off", - "func-name-matching": "off", - "func-names": "off", - "func-style": "off", - "function-call-argument-newline": "off", - "function-paren-newline": "off", - "generator-star-spacing": "error", - "global-require": "off", - "grouped-accessor-pairs": "error", - "guard-for-in": "off", - "handle-callback-err": "off", - "id-blacklist": "error", - "id-denylist": "error", - "id-length": "off", - "id-match": "error", - "implicit-arrow-linebreak": "error", - "indent": "off", - "indent-legacy": "off", - "init-declarations": "off", - "jsx-quotes": "error", - "key-spacing": "off", - "keyword-spacing": [ - "error", - { - "before": true, - "after": false, - "overrides": { - "case": { - "after": true - }, - "do": { - "after": true - }, - "else": { - "after": true - }, - "return": { - "after": true - }, - "throw": { - "after": true - }, - "try": { - "after": true - }, - "catch": { - "after": true - } - } - } - ], - "line-comment-position": "off", - "linebreak-style": "off", - "lines-around-comment": "off", - "lines-around-directive": "off", - "lines-between-class-members": "error", - "max-classes-per-file": "error", - "max-depth": "off", - "max-len": "off", - "max-lines": "off", - "max-lines-per-function": "off", - "max-nested-callbacks": "error", - "max-params": "off", - "max-statements": "off", - "max-statements-per-line": "off", - "multiline-comment-style": "off", - "multiline-ternary": "off", - "new-parens": "off", - "newline-after-var": "off", - "newline-before-return": "off", - "newline-per-chained-call": "off", - "no-alert": "off", - "no-array-constructor": "off", - "no-await-in-loop": "error", - "no-bitwise": "off", - "no-buffer-constructor": "off", - "no-caller": "error", - "no-catch-shadow": "off", - "no-confusing-arrow": "error", - "no-console": "off", - "no-constant-condition": [ - "error", - { - "checkLoops": false - } - ], - "no-constructor-return": "error", - "no-continue": "off", - "no-div-regex": "off", - "no-duplicate-imports": "error", - "no-else-return": "off", - "no-empty-function": "off", - "no-eq-null": "off", - "no-eval": "off", - "no-extend-native": "off", - "no-extra-bind": "off", - "no-extra-label": "off", - "no-extra-parens": "off", - "no-floating-decimal": "off", - "no-implicit-coercion": [ - "error", - { - "boolean": false, - "number": false, - "string": false - } - ], - "no-implicit-globals": "off", - "no-implied-eval": "error", - "no-inline-comments": "off", - "no-invalid-this": "off", - "no-iterator": "error", - "no-label-var": "off", - "no-labels": "off", - "no-lone-blocks": "off", - "no-lonely-if": "off", - "no-loop-func": "off", - "no-loss-of-precision": "error", - "no-magic-numbers": "off", - "no-mixed-operators": "off", - "no-mixed-requires": "off", - "no-multi-assign": "off", - "no-multi-spaces": "off", - "no-multi-str": "error", - "no-multiple-empty-lines": ["warn", { "max": 4, "maxEOF": 0 }], - "no-native-reassign": "off", - "no-negated-condition": "off", - "no-negated-in-lhs": "error", - "no-nested-ternary": "off", - "no-new": "off", - "no-new-func": "off", - "no-new-object": "off", - "no-new-require": "error", - "no-new-wrappers": "error", - "no-octal-escape": "error", - "no-param-reassign": "off", - "no-path-concat": "error", - "no-plusplus": "off", - "no-process-env": "off", - "no-process-exit": "off", - "no-promise-executor-return": "error", - "no-proto": "off", - "no-restricted-exports": "error", - "no-restricted-globals": "error", - "no-restricted-imports": "error", - "no-restricted-modules": "error", - "no-restricted-properties": "error", - "no-restricted-syntax": "error", - "no-return-assign": "off", - "no-return-await": "error", - "no-script-url": "off", - "no-self-compare": "off", - "no-sequences": "off", - "no-shadow": "off", - "no-spaced-func": "off", - "no-sync": "off", - "no-tabs": "off", - "no-template-curly-in-string": "error", - "no-ternary": "off", - "no-throw-literal": "off", - "no-trailing-spaces": "error", - "no-undef-init": "off", - "no-undefined": "off", - "no-underscore-dangle": "off", - "no-unmodified-loop-condition": "off", - "no-unneeded-ternary": "off", - "no-unreachable-loop": "error", - "no-unused-expressions": "off", - "no-use-before-define": "off", - "no-useless-backreference": "error", - "no-useless-call": "off", - "no-useless-computed-key": "error", - "no-useless-concat": "off", - "no-useless-constructor": "error", - "no-useless-rename": "error", - "no-useless-return": "off", - "no-var": "off", - "no-void": "off", - "no-warning-comments": "off", - "no-whitespace-before-property": "error", - "nonblock-statement-body-position": [ - "error", - "any" - ], - "object-curly-newline": "off", - "object-curly-spacing": "off", - "object-property-newline": "off", - "object-shorthand": "off", - "one-var": "off", - "one-var-declaration-per-line": "off", - "operator-assignment": "off", - "operator-linebreak": "off", - "padded-blocks": "off", - "padding-line-between-statements": "error", - "prefer-arrow-callback": "off", - "prefer-const": "off", - "prefer-destructuring": "off", - "prefer-exponentiation-operator": "off", - "prefer-named-capture-group": "off", - "prefer-numeric-literals": "error", - "prefer-object-spread": "off", - "prefer-promise-reject-errors": "error", - "prefer-reflect": "off", - "prefer-regex-literals": "off", - "prefer-rest-params": "off", - "prefer-spread": "off", - "prefer-template": "off", - "quote-props": "off", - "quotes": "off", - "radix": "off", - "require-atomic-updates": "error", - "require-await": "error", - "require-jsdoc": "off", - "require-unicode-regexp": "off", - "rest-spread-spacing": "error", - "semi": "off", - "semi-spacing": "off", - "semi-style": "off", - "sort-imports": "error", - "sort-keys": "off", - "sort-vars": "off", - "space-before-blocks": "off", - "space-before-function-paren": "off", - "space-in-parens": "off", - "space-infix-ops": "off", - "space-unary-ops": "off", - "spaced-comment": "off", - "strict": "off", - "switch-colon-spacing": "off", - "symbol-description": "error", - "template-curly-spacing": "error", - "template-tag-spacing": "error", - "unicode-bom": [ - "error", - "never" - ], - "valid-jsdoc": "off", - "valid-typeof": [ - "error", - { - "requireStringLiterals": false - } - ], - "vars-on-top": "off", - "wrap-iife": "off", - "wrap-regex": "off", - "yield-star-spacing": "error", - "yoda": "off", - "no-useless-escape": "off", - "no-unused-vars": "off", - "no-empty": "off", - "no-extra-semi": "off", - "no-redeclare": "off", - "no-control-regex": "off", - "no-mixed-spaces-and-tabs": "off", - "no-extra-boolean-cast": "off", - "no-prototype-builtins": "off", - "no-undef": "off", - "no-unreachable": "off", - "no-self-assign": "off" - } -} From 40d53543dc943ff8689264df71cd2ed7b9c0b21c Mon Sep 17 00:00:00 2001 From: bobjtls <71995093+bobjtls@users.noreply.github.com> Date: Sat, 22 Mar 2025 22:35:15 +1100 Subject: [PATCH 068/458] Signing CLA (#8985) --- licenses/cla-individual.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index ee46925ffa..4033e9fc16 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -610,4 +610,5 @@ Galen Huntington, @galenhuntington, 2025/01/19 @Rhys-T, 2025/01/23 -@Rumman157, 2025/03/17 \ No newline at end of file +@Rumman157, 2025/03/17 +@bob.jansen@cultconv.com, 2025/03/22 \ No newline at end of file From 1b605f0b876d77f70e24d26a24182eb4b9286d26 Mon Sep 17 00:00:00 2001 From: bobjtls <71995093+bobjtls@users.noreply.github.com> Date: Sat, 22 Mar 2025 22:35:56 +1100 Subject: [PATCH 069/458] Docs: Addition of example for ActionSetField widget (#8986) --- .../tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid index f278dae0b2..92de54be93 100644 --- a/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ActionSetFieldWidget.tid @@ -1,6 +1,6 @@ caption: action-setfield created: 20141025120850184 -modified: 20150806171403798 +modified: 20250322010115457 tags: Widgets ActionWidgets title: ActionSetFieldWidget type: text/vnd.tiddlywiki @@ -66,3 +66,10 @@ src='<$button> <$action-navigate $to="$:/ControlPanel"/> Go to Control Panel "Appearance" tab '/> + +Here is an example of a button that will update the value of an existing field in a tiddler +<$macrocall $name='wikitext-example-without-html' +src='<$button> +<$action-setfield $tiddler="Test" existing_field_name="new field value"/> +Update Field existing_field_name in tiddler Test +'/> \ No newline at end of file From 48fa2be6acd635e4ee78b8e5c7405a66ade6bc52 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Sat, 22 Mar 2025 21:37:15 +0100 Subject: [PATCH 070/458] [DOCS] Add HTML Tag info to reveal-widget (#8941) --- editions/tw5.com/tiddlers/HTML Tags.tid | 11 +++++++++++ editions/tw5.com/tiddlers/widgets/RevealWidget.tid | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/HTML Tags.tid diff --git a/editions/tw5.com/tiddlers/HTML Tags.tid b/editions/tw5.com/tiddlers/HTML Tags.tid new file mode 100644 index 0000000000..8df3b22d96 --- /dev/null +++ b/editions/tw5.com/tiddlers/HTML Tags.tid @@ -0,0 +1,11 @@ +created: 20250211092107689 +modified: 20250211092307574 +tags: Definitions +title: HTML Tags +type: text/vnd.tiddlywiki + +<<< +In HTML, a tag is used for creating an element. + +The name of an HTML element is the name that appears at the beginning of the element's start tag and at the end of the element's end tag (if the element has an end tag). For example, the p in the `

          ` start tag and `

          ` end tag is the name of the HTML paragraph element. Note that an element name in an end tag is preceded by a slash character: `

          `, and that for void elements, the end tag is neither required nor allowed. +<<< https://developer.mozilla.org/en-US/docs/Glossary/Tag \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index 37df94c1e7..0aff56e23e 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -1,7 +1,7 @@ caption: reveal created: 20131024141900000 jeremy: tiddlywiki -modified: 20240721175716320 +modified: 20250211091937860 tags: Widgets title: RevealWidget type: text/vnd.tiddlywiki @@ -28,7 +28,7 @@ The content of the `<$reveal>` widget is displayed according to the rules given |stateTitle |A title containing the state, ''without'' TextReference. Gets preferred over the <<.attr state>> attribute | |stateField |A ''field name'' which is used to look for the state, if the attribute <<.attr stateTitle>> is present | |stateIndex |An ''index'' which is used to look for the state, if the attribute <<.attr stateTitle>> is present | -|tag |Overrides the default HTML element tag (`
          ` in block mode or `` in inline mode) | +|tag |Overrides the default [[HTML Tags]] (`
          ` in block mode or `` in inline mode) | |type |The type of matching performed: ''match'', ''nomatch'', ''popup'', ''lt'', ''gt'', ''lteq'' or ''gteq'' | |text |The text to match when the type is ''match'', ''nomatch'', ''lt'', ''gt'', ''lteq'' or ''gteq'' | |class |An optional CSS class name to be assigned to the HTML element
          » Set to `tc-popup-keep` to make a popup "sticky", so it won't close when you click inside of it| From 8bda28afd5082bbf3f77482990f476ca6764df17 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Thu, 27 Mar 2025 18:22:56 +0100 Subject: [PATCH 071/458] Fix typo (#8994) --- editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid b/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid index 883f1e450c..0ecac24006 100644 --- a/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid +++ b/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid @@ -48,6 +48,6 @@ $caption$ <> """>> -<<.warning """If macros are nested, textual substitution will only occur for the outermost macro. Thi is because by the time the inner macros are processed all the substitutions will have already occurred""">> +<<.warning """If macros are nested, textual substitution will only occur for the outermost macro. This is because by the time the inner macros are processed all the substitutions will have already occurred""">> A more formal [[presentation|Macro Definition Syntax]] of this syntax is also available. From f315567924d6571293719f2447205ce1ad93c98b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sun, 6 Apr 2025 15:22:25 +0100 Subject: [PATCH 072/458] Update MultiWikiServer tiddler --- .../roadmap/multiwikiserver/MultiWikiServer.tid | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/editions/tw5.com/tiddlers/roadmap/multiwikiserver/MultiWikiServer.tid b/editions/tw5.com/tiddlers/roadmap/multiwikiserver/MultiWikiServer.tid index 891bdb3785..d15f346794 100644 --- a/editions/tw5.com/tiddlers/roadmap/multiwikiserver/MultiWikiServer.tid +++ b/editions/tw5.com/tiddlers/roadmap/multiwikiserver/MultiWikiServer.tid @@ -14,13 +14,8 @@ Planned features include: * Instantaneous synchronisation of changes between the server and all connected clients * Workflow processing on the server, for example to automatically compress images, or to archive webpages -MWS does require basic knowledge of the command line and Node.js but is designed to be as simple as possible to setup and use. Once downloaded, just two commands are needed to complete the installation and start the server: +MWS does require basic knowledge of the command line and Node.js but is designed to be as simple as possible to setup and use. A few simple commands are all that is needed to complete the installation and start the server. -``` -npm install -npm start -``` +MWS is currently under development at ~GitHub but it is already functional and usable: -MWS is currently [[under development at GitHub|https://github.com/TiddlyWiki/TiddlyWiki5/pull/7915]] but it is already functional and usable. Visit the MWS website for more information: - -! https://mws.tiddlywiki.com/ \ No newline at end of file +https://github.com/TiddlyWiki/MultiWikiServer/ From 34cf59d31ef3b3c2db5d5453b846790b28f39feb Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Sat, 12 Apr 2025 22:32:10 +0800 Subject: [PATCH 073/458] Fix some download file types. (#9026) --- core/ui/ExportTiddlyWikiCore.tid | 2 +- core/ui/PageControls/export-tiddlywikicore.tid | 2 +- plugins/tiddlywiki/share/wizard.tid | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ui/ExportTiddlyWikiCore.tid b/core/ui/ExportTiddlyWikiCore.tid index 4b913a0209..af097b6489 100644 --- a/core/ui/ExportTiddlyWikiCore.tid +++ b/core/ui/ExportTiddlyWikiCore.tid @@ -12,7 +12,7 @@ Export the TiddlyWiki core JavaScript code for running with external JavaScript: tooltip="Export the TiddlyWiki core code for running with external JavaScript" aria-label="export TiddlyWiki core" class="tc-btn-big-green"> -<$action-sendmessage $message='tm-download-file' $param='$:/core/templates/tiddlywiki5.js' filename=<>/> +<$action-sendmessage $message='tm-download-file' $param='$:/core/templates/tiddlywiki5.js' filename=<> type="application/javascript"/> {{$:/core/images/download-button}} Download TiddlyWiki core diff --git a/core/ui/PageControls/export-tiddlywikicore.tid b/core/ui/PageControls/export-tiddlywikicore.tid index a6bb68c139..087ca6a36f 100644 --- a/core/ui/PageControls/export-tiddlywikicore.tid +++ b/core/ui/PageControls/export-tiddlywikicore.tid @@ -12,7 +12,7 @@ element, and right-click its `src` URI. Save the link as ''$(jsFileName)$''

          Export the ~TiddlyWiki core ~JavaScript code for running with external ~JavaScript: <$button tooltip="Export the ~TiddlyWiki core code for running with external ~JavaScript" aria-label="export TiddlyWiki core" class="tc-btn-big-green"> -<$list filter="[[$:/boot/boot.js]is[missing]]" variable="ignore" emptyMessage="""<$action-sendmessage $message="tm-download-file" $param="$:/core/templates/tiddlywiki5.js" filename=<>/>""" > +<$list filter="[[$:/boot/boot.js]is[missing]]" variable="ignore" emptyMessage="""<$action-sendmessage $message="tm-download-file" $param="$:/core/templates/tiddlywiki5.js" filename=<> type="application/javascript"/>""" > <$action-setfield $tiddler=<> text=<> subtitle="Export ~TiddllyWiki Core"/> <$action-sendmessage $message="tm-modal" $param=<>/> diff --git a/plugins/tiddlywiki/share/wizard.tid b/plugins/tiddlywiki/share/wizard.tid index 8dbf96989d..52fcbee847 100644 --- a/plugins/tiddlywiki/share/wizard.tid +++ b/plugins/tiddlywiki/share/wizard.tid @@ -66,7 +66,7 @@ Generate sharing link !! 5 - Export the shared tiddlers <$button> -<$action-sendmessage $message="tm-download-file" $param="$:/core/templates/exporters/JsonFile" exportFilter={{$:/config/plugins/share/filter}} filename="tiddlers.json"/> +<$action-sendmessage $message="tm-download-file" $param="$:/core/templates/exporters/JsonFile" exportFilter={{$:/config/plugins/share/filter}} filename="tiddlers.json" type="application/json"/> Export as JSON From 5f551ca46f5c95d5fea88774ddd55f1bbe18dcde Mon Sep 17 00:00:00 2001 From: yaisog Date: Sun, 13 Apr 2025 18:53:12 +0200 Subject: [PATCH 074/458] Change configTiddlerFilter for keyboard-driven-input (#9032) --- core/ui/AdvancedSearch/Standard.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/AdvancedSearch/Standard.tid b/core/ui/AdvancedSearch/Standard.tid index c85c8b9f22..ae80ced350 100644 --- a/core/ui/AdvancedSearch/Standard.tid +++ b/core/ui/AdvancedSearch/Standard.tid @@ -37,7 +37,7 @@ caption: {{$:/language/Search/Standard/Caption}} inputCancelActions=<> inputAcceptActions=<> inputAcceptVariantActions=<> - configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]" + configTiddlerFilter="[[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]" filterMinLength={{$:/config/Search/MinLength}}/> From 4e28742aa62e319a4bae7baae58703b396b27f52 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 14 Apr 2025 19:28:04 +0200 Subject: [PATCH 075/458] Remove function wrappers from plugins (#9030) --- plugins/tiddlywiki/confetti/confetti-manager.js | 3 --- plugins/tiddlywiki/confetti/confetti-widget.js | 3 --- plugins/tiddlywiki/confetti/startup.js | 3 --- plugins/tiddlywiki/dynannotate/modules/element-spotlight.js | 3 --- plugins/tiddlywiki/dynannotate/modules/startup.js | 4 ---- plugins/tiddlywiki/innerwiki/anchor.js | 3 --- plugins/tiddlywiki/qrcode/barcodereader.js | 3 --- 7 files changed, 22 deletions(-) diff --git a/plugins/tiddlywiki/confetti/confetti-manager.js b/plugins/tiddlywiki/confetti/confetti-manager.js index 66ccb427e6..5ffb48fe08 100644 --- a/plugins/tiddlywiki/confetti/confetti-manager.js +++ b/plugins/tiddlywiki/confetti/confetti-manager.js @@ -6,7 +6,6 @@ module-type: global Confetti manager \*/ -(function(){ "use strict"; var confetti = require("$:/plugins/tiddlywiki/confetti/confetti.js"); @@ -49,5 +48,3 @@ ConfettiManager.prototype.reset = function () { }; exports.ConfettiManager = ConfettiManager; - -})(); diff --git a/plugins/tiddlywiki/confetti/confetti-widget.js b/plugins/tiddlywiki/confetti/confetti-widget.js index c3bbc25e38..f26dc3e05f 100644 --- a/plugins/tiddlywiki/confetti/confetti-widget.js +++ b/plugins/tiddlywiki/confetti/confetti-widget.js @@ -6,7 +6,6 @@ module-type: widget Confetti widget \*/ -(function(){ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -60,5 +59,3 @@ ConfettiWidget.prototype.refresh = function(changedTiddlers) { }; exports.confetti = ConfettiWidget; - -})(); diff --git a/plugins/tiddlywiki/confetti/startup.js b/plugins/tiddlywiki/confetti/startup.js index fafbecee72..1ece709ebd 100644 --- a/plugins/tiddlywiki/confetti/startup.js +++ b/plugins/tiddlywiki/confetti/startup.js @@ -6,7 +6,6 @@ module-type: startup Setup the root widget event handlers \*/ -(function(){ "use strict"; // Export name and synchronous status @@ -56,5 +55,3 @@ exports.startup = function() { $tw.confettiManager.reset(); }); }; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js b/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js index 9a7ab71add..fea230d55e 100644 --- a/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js +++ b/plugins/tiddlywiki/dynannotate/modules/element-spotlight.js @@ -6,7 +6,6 @@ module-type: library Manages the element spotlight effect \*/ -(function(){ "use strict"; function ElementSpotlight() { @@ -129,5 +128,3 @@ ElementSpotlight.prototype.shineSpotlight = function(selectors) { }; exports.ElementSpotlight = ElementSpotlight; - -})(); diff --git a/plugins/tiddlywiki/dynannotate/modules/startup.js b/plugins/tiddlywiki/dynannotate/modules/startup.js index cdcbd4bfb4..a7c4af2526 100644 --- a/plugins/tiddlywiki/dynannotate/modules/startup.js +++ b/plugins/tiddlywiki/dynannotate/modules/startup.js @@ -8,8 +8,6 @@ module-type: startup Startup the dyannotate background daemon to track the selection \*/ -(function(){ - "use strict"; // Export name and synchronous status @@ -56,5 +54,3 @@ exports.startup = function() { $tw.dynannotate.elementSpotlight.shineSpotlight(selectors); }); }; - -})(); diff --git a/plugins/tiddlywiki/innerwiki/anchor.js b/plugins/tiddlywiki/innerwiki/anchor.js index 5843702560..6b37cc97db 100644 --- a/plugins/tiddlywiki/innerwiki/anchor.js +++ b/plugins/tiddlywiki/innerwiki/anchor.js @@ -6,9 +6,6 @@ module-type: widget Anchor widget to represent an innerwiki graphical anchor. Clone of the data widget \*/ -(function(){ "use strict"; exports.anchor = require("$:/core/modules/widgets/data.js").data; - -})(); diff --git a/plugins/tiddlywiki/qrcode/barcodereader.js b/plugins/tiddlywiki/qrcode/barcodereader.js index f44ec4c0e2..ceba2b36b3 100644 --- a/plugins/tiddlywiki/qrcode/barcodereader.js +++ b/plugins/tiddlywiki/qrcode/barcodereader.js @@ -6,7 +6,6 @@ module-type: widget barcodereader widget for reading barcodes \*/ -(function(){ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -83,5 +82,3 @@ BarCodeReaderWidget.prototype.refresh = function(changedTiddlers) { }; exports.barcodereader = BarCodeReaderWidget; - -})(); From 73e70e77c1f66e0fc1cdd3ab5e7c66f77545466f Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 14 Apr 2025 19:28:43 +0200 Subject: [PATCH 076/458] Remove function wrappers from test editions (#9029) --- editions/test/tiddlers/tests/test-action-deletefield.js | 8 -------- editions/test/tiddlers/tests/test-fakedom.js | 3 --- editions/test/tiddlers/tests/test-plugins.js | 4 ---- editions/test/tiddlers/tests/test-widget-event.js | 5 ----- .../test/tiddlers/tests/test-widget-getVariableInfo.js | 2 -- 5 files changed, 22 deletions(-) diff --git a/editions/test/tiddlers/tests/test-action-deletefield.js b/editions/test/tiddlers/tests/test-action-deletefield.js index 876f44d8eb..f87eeda011 100644 --- a/editions/test/tiddlers/tests/test-action-deletefield.js +++ b/editions/test/tiddlers/tests/test-action-deletefield.js @@ -6,12 +6,6 @@ tags: [[$:/tags/test-spec]] Tests <$action-deletefield />. \*/ -(function(){ - -/* jslint node: true, browser: true */ -/* eslint-env node, browser, jasmine */ -/* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/ -/* global $tw, require */ "use strict"; describe("<$action-deletefield /> tests", function() { @@ -172,5 +166,3 @@ it("should correctly delete fields", function() { }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-fakedom.js b/editions/test/tiddlers/tests/test-fakedom.js index faec01af69..8cfe3f9c2e 100644 --- a/editions/test/tiddlers/tests/test-fakedom.js +++ b/editions/test/tiddlers/tests/test-fakedom.js @@ -6,7 +6,6 @@ tags: [[$:/tags/test-spec]] Tests the fakedom that Tiddlywiki occasionally uses. \*/ -(function(){ "use strict"; describe("fakedom tests", function() { @@ -20,5 +19,3 @@ describe("fakedom tests", function() { expect($tw.fakeDocument.createTextNode("text").TEXT_NODE).toBe(3); }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-plugins.js b/editions/test/tiddlers/tests/test-plugins.js index fadf92a107..86cd4c6f0b 100644 --- a/editions/test/tiddlers/tests/test-plugins.js +++ b/editions/test/tiddlers/tests/test-plugins.js @@ -6,7 +6,6 @@ tags: [[$:/tags/test-spec]] Tests for integrity of the core plugins, languages, themes and editions \*/ -(function(){ "use strict"; if($tw.node) { @@ -47,6 +46,3 @@ if($tw.node) { }); }); } - - -})(); diff --git a/editions/test/tiddlers/tests/test-widget-event.js b/editions/test/tiddlers/tests/test-widget-event.js index b70f5424c2..9aeb9a8381 100644 --- a/editions/test/tiddlers/tests/test-widget-event.js +++ b/editions/test/tiddlers/tests/test-widget-event.js @@ -3,10 +3,7 @@ title: test-widget-event.js type: application/javascript tags: [[$:/tags/test-spec]] \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; describe("Widget Event Listeners", function() { @@ -220,5 +217,3 @@ describe("Widget Event Listeners", function() { }); }); - -})(); diff --git a/editions/test/tiddlers/tests/test-widget-getVariableInfo.js b/editions/test/tiddlers/tests/test-widget-getVariableInfo.js index 4ce21a9564..ae0f4ce203 100644 --- a/editions/test/tiddlers/tests/test-widget-getVariableInfo.js +++ b/editions/test/tiddlers/tests/test-widget-getVariableInfo.js @@ -6,7 +6,6 @@ tags: [[$:/tags/test-spec]] Tests the wikitext rendering pipeline end-to-end. We also need tests that individually test parsers, rendertreenodes etc., but this gets us started. \*/ -(function(){ "use strict"; describe("Widget module", function() { @@ -89,4 +88,3 @@ describe("Widget module", function() { }); -})(); From fbeb8cddc8770f4fd3d646bc508e4bf422c9f144 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 14 Apr 2025 19:29:08 +0200 Subject: [PATCH 077/458] Remove function wrappers from core/modules (#9028) --- core/modules/filters/backtranscludes.js | 3 --- core/modules/filters/transcludes.js | 3 --- core/modules/parsers/wikiparser/rules/conditional.js | 3 --- core/modules/utils/errors.js | 4 ---- core/modules/utils/repository.js | 3 --- core/modules/widgets/data.js | 3 --- core/modules/widgets/testcase.js | 3 --- 7 files changed, 22 deletions(-) diff --git a/core/modules/filters/backtranscludes.js b/core/modules/filters/backtranscludes.js index 2451ab9416..07ef9b254b 100644 --- a/core/modules/filters/backtranscludes.js +++ b/core/modules/filters/backtranscludes.js @@ -6,7 +6,6 @@ module-type: filteroperator Filter operator for returning all the backtranscludes from a tiddler \*/ -(function(){ "use strict"; /* @@ -19,5 +18,3 @@ exports.backtranscludes = function(source,operator,options) { }); return results.makeTiddlerIterator(options.wiki); }; - -})(); diff --git a/core/modules/filters/transcludes.js b/core/modules/filters/transcludes.js index 0245dcaa40..5032e42551 100644 --- a/core/modules/filters/transcludes.js +++ b/core/modules/filters/transcludes.js @@ -6,7 +6,6 @@ module-type: filteroperator Filter operator for returning all the transcludes from a tiddler \*/ -(function(){ "use strict"; /* @@ -19,5 +18,3 @@ exports.transcludes = function(source,operator,options) { }); return results.makeTiddlerIterator(options.wiki); }; - -})(); diff --git a/core/modules/parsers/wikiparser/rules/conditional.js b/core/modules/parsers/wikiparser/rules/conditional.js index 4dccf75fbf..3995b90dc0 100644 --- a/core/modules/parsers/wikiparser/rules/conditional.js +++ b/core/modules/parsers/wikiparser/rules/conditional.js @@ -10,7 +10,6 @@ This is a <%if [{something}] %>Elephant<%elseif [{else}] %>Pelican<%else%>Crocod ``` \*/ -(function(){ "use strict"; exports.name = "conditional"; @@ -113,5 +112,3 @@ exports.parseIfClause = function(filterCondition) { // Return the parse tree node return [listWidget]; }; - -})(); diff --git a/core/modules/utils/errors.js b/core/modules/utils/errors.js index fac4b3fa77..40e0a4f8f6 100644 --- a/core/modules/utils/errors.js +++ b/core/modules/utils/errors.js @@ -6,8 +6,6 @@ module-type: utils Custom errors for TiddlyWiki. \*/ -(function(){ - function TranscludeRecursionError() { Error.apply(this,arguments); this.signatures = Object.create(null); @@ -19,5 +17,3 @@ TranscludeRecursionError.MAX_WIDGET_TREE_DEPTH = 1000; TranscludeRecursionError.prototype = Object.create(Error); exports.TranscludeRecursionError = TranscludeRecursionError; - -})(); diff --git a/core/modules/utils/repository.js b/core/modules/utils/repository.js index 359f558b89..08d8828d9c 100644 --- a/core/modules/utils/repository.js +++ b/core/modules/utils/repository.js @@ -6,7 +6,6 @@ module-type: utils Utilities for working with the TiddlyWiki repository file structure \*/ -(function(){ "use strict"; /* @@ -45,5 +44,3 @@ exports.getAllPlugins = function(options) { $tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,options.ignoreEnvironmentVariables ? undefined : $tw.config.languagesEnvVar),collectPlugins); return tiddlers; }; - -})(); diff --git a/core/modules/widgets/data.js b/core/modules/widgets/data.js index d51e2ba8b6..50eafc63f2 100644 --- a/core/modules/widgets/data.js +++ b/core/modules/widgets/data.js @@ -6,7 +6,6 @@ module-type: widget Widget to dynamically represent one or more tiddlers \*/ -(function(){ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -187,5 +186,3 @@ function hasPayloadChanged(a,b) { } exports.data = DataWidget; - -})(); diff --git a/core/modules/widgets/testcase.js b/core/modules/widgets/testcase.js index cc71418675..ccdce7ac5e 100644 --- a/core/modules/widgets/testcase.js +++ b/core/modules/widgets/testcase.js @@ -6,7 +6,6 @@ module-type: widget Widget to display a test case \*/ -(function(){ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -160,5 +159,3 @@ TestCaseWidget.prototype.refresh = function(changedTiddlers) { }; exports["testcase"] = TestCaseWidget; - -})(); From 1e2ce0bc80265fccff03bea7d3d3e505a3dcb3a3 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 14 Apr 2025 19:29:33 +0200 Subject: [PATCH 078/458] Remove function wrapper from development documentation. (#9027) --- editions/dev/tiddlers/new/Filter Operators.tid | 6 ------ editions/dev/tiddlers/new/Hook_ th-before-importing.tid | 5 ----- editions/dev/tiddlers/new/ParserSubclassingMechanism.tid | 4 ---- editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid | 4 ---- 4 files changed, 19 deletions(-) diff --git a/editions/dev/tiddlers/new/Filter Operators.tid b/editions/dev/tiddlers/new/Filter Operators.tid index c7c2e74564..4a1d173e39 100644 --- a/editions/dev/tiddlers/new/Filter Operators.tid +++ b/editions/dev/tiddlers/new/Filter Operators.tid @@ -34,13 +34,11 @@ Suppose we want to make a filter operator that returns every other tiddler from We make a new tiddler, set its `type` and `module-type` appropriately, and begin writing the code: ``` -(function(){ "use strict"; exports.everyother = function(source, operator, options) { // TODO } -})(); ``` For the example filter syntax, our function will be called with @@ -54,7 +52,6 @@ As is usually the case, we don't care about `operator.operator` here (since that We could implement the operator by iterating over the input tiddlers and explicitly building a result array of titles: ``` -(function(){ "use strict"; exports.everyother = function(source, operator, options) { @@ -66,7 +63,6 @@ exports.everyother = function(source, operator, options) { }); return result; } -})(); ``` That is, we supply a callback to `source` that negates `include` each time through (in order to grab every other result) and pushes the `title` of every other tiddler onto the result. @@ -74,7 +70,6 @@ That is, we supply a callback to `source` that negates `include` each time throu Alternatively, we can return our own iterator, by returning a function that accepts a similar callback and only calls it on every other tiddler: ``` -(function(){ "use strict"; exports.everyother = function(source, operator, options) { @@ -86,7 +81,6 @@ exports.everyother = function(source, operator, options) { }); }; } -})(); ``` Either way, we could interpret the `!` flag on the filter, if present, to mean that we want the //other// half of the tiddlers, by using it to set the initial value of `include`: `var include = operator.prefix !== "!";` diff --git a/editions/dev/tiddlers/new/Hook_ th-before-importing.tid b/editions/dev/tiddlers/new/Hook_ th-before-importing.tid index 19157566fa..483fb5388d 100644 --- a/editions/dev/tiddlers/new/Hook_ th-before-importing.tid +++ b/editions/dev/tiddlers/new/Hook_ th-before-importing.tid @@ -40,10 +40,7 @@ module-type: startup YOUR DISCRCRIPTION COMES HERE! \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false, exports: true */ "use strict"; // Export name and synchronous status @@ -63,6 +60,4 @@ exports.startup = function() { }); }; -})(); - ``` \ No newline at end of file diff --git a/editions/dev/tiddlers/new/ParserSubclassingMechanism.tid b/editions/dev/tiddlers/new/ParserSubclassingMechanism.tid index c4aab295eb..8f36638cae 100644 --- a/editions/dev/tiddlers/new/ParserSubclassingMechanism.tid +++ b/editions/dev/tiddlers/new/ParserSubclassingMechanism.tid @@ -11,10 +11,7 @@ The wikitext parser subclassing mechanism makes it possible for custom parsers t Here is an example of a subclass of the checkbox widget that adds logging to the event handler: ```js -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var WikiParser = require("$:/core/modules/parsers/wikiparser/wikiparser.js")["text/vnd.tiddlywiki"], @@ -38,5 +35,4 @@ var MyCustomWikiParser = function(type,text,options) { exports["text/vnd.my-custom-type"] = MyCustomWikiParser; -})(); ``` diff --git a/editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid b/editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid index 3f39d4e3a7..484952131d 100644 --- a/editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid +++ b/editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid @@ -26,10 +26,7 @@ module-type: widget-subclass Widget base class \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; exports.baseClass = "checkbox"; // Extend the <$checkbox> widget @@ -50,5 +47,4 @@ exports.prototype.handleChangeEvent = function(event) { console.log("Checkbox status:",this.inputDomNode.checked); }; -})(); ``` From 866e55954f2b5b5d72dc3699984b1392e0f3acab Mon Sep 17 00:00:00 2001 From: Rob Hoelz Date: Mon, 14 Apr 2025 12:33:18 -0500 Subject: [PATCH 079/458] Stringify derived fields for tiddlywiki.files (#9025) Otherwise, when serializing the tiddlers as JSON when loading plugins, derived values may end up with the incorrect values. Take the `modified` field for example - without stringification, it ends up as something like `new Date(2025, 3, 12, 6, 56, 23)`, which then gets serialized as `"2025-04-12T11:56:23.000Z"` (in my timezone), rather than `"20250412115623000"`. The string `"2025-04-12T11:56:23.000Z"` trips up TiddlyWiki's date parser upon load, and it gets parsed as `20250101000000000` instead. Fixes GH #9021 --- boot/boot.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index 11286678d1..20a639731c 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -2000,7 +2000,7 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) { var value = tiddler[name]; switch(fieldInfo.source) { case "subdirectories": - value = path.relative(rootPath, filename).split(path.sep).slice(0, -1); + value = $tw.utils.stringifyList(path.relative(rootPath, filename).split(path.sep).slice(0, -1)); break; case "filepath": value = path.relative(rootPath, filename).split(path.sep).join('/'); @@ -2021,10 +2021,10 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) { value = path.extname(filename); break; case "created": - value = new Date(fs.statSync(pathname).birthtime); + value = $tw.utils.stringifyDate(new Date(fs.statSync(pathname).birthtime)); break; case "modified": - value = new Date(fs.statSync(pathname).mtime); + value = $tw.utils.stringifyDate(new Date(fs.statSync(pathname).mtime)); break; } if(fieldInfo.prefix) { From c409d8414e99a8e78d387ba53c5a36898fb6939f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 14 Apr 2025 22:17:18 +0100 Subject: [PATCH 080/458] Fix bug exposed by #9030 I think the bug was originally introduced in a9f9ffd40948589b2f2942810a06fa7d5ed107d5 --- plugins/tiddlywiki/dynannotate/modules/startup.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/tiddlywiki/dynannotate/modules/startup.js b/plugins/tiddlywiki/dynannotate/modules/startup.js index a7c4af2526..b95d5ef01c 100644 --- a/plugins/tiddlywiki/dynannotate/modules/startup.js +++ b/plugins/tiddlywiki/dynannotate/modules/startup.js @@ -1,5 +1,3 @@ -const { ElementSpotlight } = require("./element-spotlight"); - /*\ title: $:/plugins/tiddlywiki/dynannotate/startup.js type: application/javascript From 65afdacdfeb2b48f9216e9b96c3f92b6c0f3d9c5 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Mon, 21 Apr 2025 02:44:39 +0800 Subject: [PATCH 081/458] Remove links in field descriptions (#9036) --- core/language/en-GB/Fields.multids | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/language/en-GB/Fields.multids b/core/language/en-GB/Fields.multids index 9830e96c1b..61835821a9 100644 --- a/core/language/en-GB/Fields.multids +++ b/core/language/en-GB/Fields.multids @@ -4,12 +4,12 @@ _canonical_uri: The full URI of an external image tiddler author: Name of the author of a plugin bag: The name of the bag from which a tiddler came caption: The text to be displayed on a tab or button -class: The CSS class applied to a tiddler when rendering it - see [[Custom styles by user-class]]. Also used for [[Modals]] +class: The CSS class applied to a tiddler when rendering it. Also used for Modals code-body: The view template will display the tiddler as code if set to ''yes'' color: The CSS color value associated with a tiddler -component: The name of the component responsible for an [[alert tiddler|AlertMechanism]] +component: The name of the component responsible for an alert tiddler core-version: For a plugin, indicates what version of TiddlyWiki with which it is compatible -current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]] +current-tiddler: Used to cache the top tiddler in a history list created: The date a tiddler was created creator: The name of the person who created a tiddler dependents: For a plugin, lists the dependent plugin titles From 271b8f9e0df1ef4920046a2eb91efea84f801b73 Mon Sep 17 00:00:00 2001 From: MatthewSalmon <43498574+matthewsalmon@users.noreply.github.com> Date: Sun, 27 Apr 2025 09:24:16 +0100 Subject: [PATCH 082/458] Update cla-individual.md (#9039) Signing the CLA with GitHub handle --- licenses/cla-individual.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 4033e9fc16..ba091524d3 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -611,4 +611,7 @@ Galen Huntington, @galenhuntington, 2025/01/19 @Rhys-T, 2025/01/23 @Rumman157, 2025/03/17 -@bob.jansen@cultconv.com, 2025/03/22 \ No newline at end of file + +@bob.jansen@cultconv.com, 2025/03/22 + +Matthew Salmon, @matthewsalmon, 2025/04/24 From 1519ff638db064985a364cb9f803f06ecf183347 Mon Sep 17 00:00:00 2001 From: MatthewSalmon <43498574+matthewsalmon@users.noreply.github.com> Date: Sun, 27 Apr 2025 21:43:41 +0100 Subject: [PATCH 083/458] Update JavaScript Macros.tid (#9037) Removed "tt" in cannot --- editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid index d861de2326..3e44263dda 100644 --- a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid +++ b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid @@ -28,5 +28,5 @@ Note that JavaScript macros work on both the client and the server, and so do no !! Macro Behaviour -Macros are just used to return a chunk of wikitext for further processing. They should not make modifications to tiddlers in the wiki store. The reason is that you cannott control when the macro is called; it may be called repeatedly as part of refresh processing. So it is important that macros do not have any other side effects beyond generating their text. +Macros are just used to return a chunk of wikitext for further processing. They should not make modifications to tiddlers in the wiki store. The reason is that you cannot control when the macro is called; it may be called repeatedly as part of refresh processing. So it is important that macros do not have any other side effects beyond generating their text. From 4060f762e07e1f43d031410b3ebc7c7bdd03ab95 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 29 Apr 2025 14:01:43 +0100 Subject: [PATCH 084/458] Cherry pick 1519ff638db064985a364cb9f803f06ecf183347 from master --- editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid index d861de2326..d70ed70cce 100644 --- a/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid +++ b/editions/dev/tiddlers/from tw5.com/JavaScript Macros.tid @@ -28,5 +28,4 @@ Note that JavaScript macros work on both the client and the server, and so do no !! Macro Behaviour -Macros are just used to return a chunk of wikitext for further processing. They should not make modifications to tiddlers in the wiki store. The reason is that you cannott control when the macro is called; it may be called repeatedly as part of refresh processing. So it is important that macros do not have any other side effects beyond generating their text. - +Macros are just used to return a chunk of wikitext for further processing. They should not make modifications to tiddlers in the wiki store. The reason is that you cannot control when the macro is called; it may be called repeatedly as part of refresh processing. So it is important that macros do not have any other side effects beyond generating their text. From 5e8d6fb790226a2ff519ca8ac9f7da4f3c5a11da Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Sun, 4 May 2025 16:22:00 +0200 Subject: [PATCH 085/458] Adds a custom action to check the target branch (#9046) * ci: added cerebrus action to validate files in PRs based on the target branch * fix: reflect move of action repo to TW org * use cerebrus v2 * fix: use pull_request_target to enable write access --- .github/workflows/pr-path-validation.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/pr-path-validation.yml diff --git a/.github/workflows/pr-path-validation.yml b/.github/workflows/pr-path-validation.yml new file mode 100644 index 0000000000..570db8463b --- /dev/null +++ b/.github/workflows/pr-path-validation.yml @@ -0,0 +1,18 @@ +name: Validate PR Paths + +on: + pull_request_target: + types: [opened, reopened, synchronize] + +jobs: + validate-pr: + runs-on: ubuntu-latest + + steps: + - name: Validate PR + uses: TiddlyWiki/cerebrus@v2 + with: + pr_number: ${{ github.event.pull_request.number }} + repo: ${{ github.repository }} + base_ref: ${{ github.base_ref }} + github_token: ${{ secrets.GITHUB_TOKEN }} From 1480d495b326928b7a44726eb62f7c7c1daab1e7 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Mon, 5 May 2025 13:00:11 +0200 Subject: [PATCH 086/458] ci: use v3 of cerebrus that also posts a build size report to PRs (#9048) --- .github/workflows/pr-check-build-size.yml | 18 ++++++++++++++++ .github/workflows/pr-comment-build-size.yml | 23 +++++++++++++++++++++ .github/workflows/pr-path-validation.yml | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pr-check-build-size.yml create mode 100644 .github/workflows/pr-comment-build-size.yml diff --git a/.github/workflows/pr-check-build-size.yml b/.github/workflows/pr-check-build-size.yml new file mode 100644 index 0000000000..0343491710 --- /dev/null +++ b/.github/workflows/pr-check-build-size.yml @@ -0,0 +1,18 @@ +name: Calculate PR build size +on: + pull_request: + types: [opened, reopened, synchronize] + +jobs: + calculate-build-size: + runs-on: ubuntu-latest + + steps: + - name: Build and check size + uses: saqimtiaz/cerebrus@v3 + with: + pr_number: ${{ github.event.pull_request.number }} + repo: ${{ github.repository }} + base_ref: ${{ github.base_ref }} + github_token: ${{ secrets.GITHUB_TOKEN }} + mode: size:calc \ No newline at end of file diff --git a/.github/workflows/pr-comment-build-size.yml b/.github/workflows/pr-comment-build-size.yml new file mode 100644 index 0000000000..8680fe7703 --- /dev/null +++ b/.github/workflows/pr-comment-build-size.yml @@ -0,0 +1,23 @@ +name: Comment on PR build size (Trusted workflow) + +on: + repository_dispatch: + types: [pr_build_size_report] + +jobs: + comment-build-size-on-pr: + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - name: Build and check size + uses: TiddlyWiki/cerebrus@v3 + with: + pr_number: ${{ github.event.client_payload.pr_number }} + repo: ${{ github.repository }} + base_ref: ${{ github.event.client_payload.base_branch }} + github_token: ${{ secrets.GITHUB_TOKEN }} + mode: size:comment + pr_size: ${{ github.event.client_payload.pr_size }} + base_size: ${{ github.event.client_payload.base_size }} \ No newline at end of file diff --git a/.github/workflows/pr-path-validation.yml b/.github/workflows/pr-path-validation.yml index 570db8463b..1001019707 100644 --- a/.github/workflows/pr-path-validation.yml +++ b/.github/workflows/pr-path-validation.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Validate PR - uses: TiddlyWiki/cerebrus@v2 + uses: TiddlyWiki/cerebrus@v3 with: pr_number: ${{ github.event.pull_request.number }} repo: ${{ github.repository }} From 9df912a341de2cf515a99ea59e6e8e5467868238 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 5 May 2025 12:32:27 +0100 Subject: [PATCH 087/458] Trial commit to master for testing purposes See https://github.com/TiddlyWiki/TiddlyWiki5/pull/9048#issuecomment-2850685095 --- editions/tw5.com/tiddlywiki.info | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 2f3ddade89..47de3c4559 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -2,11 +2,11 @@ "description": "Documentation from https://tiddlywiki.com", "plugins": [ "tiddlywiki/browser-sniff", - "tiddlywiki/railroad", - "tiddlywiki/internals", - "tiddlywiki/menubar", "tiddlywiki/confetti", "tiddlywiki/dynannotate", + "tiddlywiki/internals", + "tiddlywiki/menubar", + "tiddlywiki/railroad", "tiddlywiki/tour" ], "themes": [ From 80058e7f450e1f28781a513c3ae09f4fb1e48a20 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Tue, 6 May 2025 11:57:35 +0200 Subject: [PATCH 088/458] Resolves permissions issues in workflow to check PR build size (#9049) * ci: use v3 of cerebrus that also posts a build size report to PRs * fix: resolved permissions issues in checking PR build size --- .github/workflows/pr-check-build-size.yml | 42 ++++++++++++++++++--- .github/workflows/pr-comment-build-size.yml | 29 ++++++++++---- .github/workflows/pr-path-validation.yml | 2 +- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/.github/workflows/pr-check-build-size.yml b/.github/workflows/pr-check-build-size.yml index 0343491710..77450a71f0 100644 --- a/.github/workflows/pr-check-build-size.yml +++ b/.github/workflows/pr-check-build-size.yml @@ -1,18 +1,50 @@ name: Calculate PR build size on: - pull_request: + pull_request_target: types: [opened, reopened, synchronize] jobs: calculate-build-size: runs-on: ubuntu-latest - + permissions: + pull-requests: read + contents: read + outputs: + pr_size: ${{ steps.get_sizes.outputs.pr_size }} + base_size: ${{ steps.get_sizes.outputs.base_size }} steps: - - name: Build and check size - uses: saqimtiaz/cerebrus@v3 + - name: build-size-check + id: get_sizes + uses: TiddlyWiki/cerebrus@v4 with: pr_number: ${{ github.event.pull_request.number }} repo: ${{ github.repository }} base_ref: ${{ github.base_ref }} github_token: ${{ secrets.GITHUB_TOKEN }} - mode: size:calc \ No newline at end of file + mode: size:calc + + dispatch-followup: + needs: calculate-build-size + runs-on: ubuntu-latest + permissions: + actions: write # Required to dispatch another workflow + pull-requests: write + contents: read + steps: + - name: Trigger follow-up workflow + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'pr-comment-build-size.yml', + ref: 'master', + inputs: { + pr_number: '${{ github.event.pull_request.number }}', + base_ref: '${{ github.event.pull_request.base.ref }}', + pr_size: '${{ needs.calculate-build-size.outputs.pr_size }}', + base_size: '${{ needs.calculate-build-size.outputs.base_size }}' + } + }); \ No newline at end of file diff --git a/.github/workflows/pr-comment-build-size.yml b/.github/workflows/pr-comment-build-size.yml index 8680fe7703..8421d99c8d 100644 --- a/.github/workflows/pr-comment-build-size.yml +++ b/.github/workflows/pr-comment-build-size.yml @@ -1,23 +1,36 @@ name: Comment on PR build size (Trusted workflow) on: - repository_dispatch: - types: [pr_build_size_report] + workflow_dispatch: + inputs: + pr_number: + required: true + type: string + base_ref: + required: true + type: string + pr_size: + required: true + type: string + base_size: + required: true + type: string jobs: - comment-build-size-on-pr: + comment-on-pr: runs-on: ubuntu-latest permissions: pull-requests: write + contents: read steps: - name: Build and check size - uses: TiddlyWiki/cerebrus@v3 + uses: TiddlyWiki/cerebrus@v4 with: - pr_number: ${{ github.event.client_payload.pr_number }} + pr_number: ${{ inputs.pr_number }} repo: ${{ github.repository }} - base_ref: ${{ github.event.client_payload.base_branch }} + base_ref: ${{ inputs.base_ref }} github_token: ${{ secrets.GITHUB_TOKEN }} mode: size:comment - pr_size: ${{ github.event.client_payload.pr_size }} - base_size: ${{ github.event.client_payload.base_size }} \ No newline at end of file + pr_size: ${{ inputs.pr_size }} + base_size: ${{ inputs.base_size }} diff --git a/.github/workflows/pr-path-validation.yml b/.github/workflows/pr-path-validation.yml index 1001019707..674a9115bd 100644 --- a/.github/workflows/pr-path-validation.yml +++ b/.github/workflows/pr-path-validation.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Validate PR - uses: TiddlyWiki/cerebrus@v3 + uses: TiddlyWiki/cerebrus@v4 with: pr_number: ${{ github.event.pull_request.number }} repo: ${{ github.repository }} From 77cb8335c16a53bc9806784ad620965b8c6d7755 Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Sun, 18 May 2025 18:56:38 +0800 Subject: [PATCH 089/458] Update Chinese Community.tid (#9060) * Update Chinese Community.tid (cherry picked from commit 3385f6899114037d8accd9adc4dc8fda55bfd521) * Update Chinese Community.tid (cherry picked from commit ffe91c987470c1527e8aafbb39b45b6861d09481) --- .../tiddlers/community/Chinese Community.tid | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/Chinese Community.tid b/editions/tw5.com/tiddlers/community/Chinese Community.tid index 709933b4a3..7fb2dbdf78 100644 --- a/editions/tw5.com/tiddlers/community/Chinese Community.tid +++ b/editions/tw5.com/tiddlers/community/Chinese Community.tid @@ -1,20 +1,13 @@ title: 中文社区 - Chinese Community tags: Community -# A Chinese community tutorial program that people can edit together: -#* Main site: [ext[https://tw-cn.netlify.app/]] -#* Accelerated access: [ext[https://tw-cn.cpolar.top/]] -#* Alternate: [ext[https://tiddly-wiki-chinese-tutorial.vercel.app]] -# Tiddlywiki Chinese Chat Forum: [ext[https://talk.tidgi.fun/topic/6]] -# Chinese translation of Tiddlywiki official website [ext[https://bramchen.github.io/tw5-docs/zh-Hans/]] -# The best Chinese introductory tutorial for newbies [ext[https://keatonlao.github.io/tiddlywiki-xp/]] - ---- - -# 大家可以一起编辑的中文社区教程项目: -#* 主站:[ext[https://tw-cn.netlify.app/]] -#* 加速访问:[ext[https://tw-cn.cpolar.top/]] -#* 备用:[ext[https://tiddly-wiki-chinese-tutorial.vercel.app]] -# 太微中文交流论坛:[ext[https://talk.tidgi.fun/topic/6]] -# 太微官网汉化版:[ext[https://bramchen.github.io/tw5-docs/zh-Hans/]] -# 最适合新手的中文入门教程:[ext[https://keatonlao.github.io/tiddlywiki-xp/]] +* 大家可以一起编辑的中文社区教程项目: +*# 主站:[ext[https://tw-cn.netlify.app/]] +*# 加速访问:[ext[https://tw-cn.cpolar.top/]] +*# 备用:[ext[https://tiddly-wiki-chinese-tutorial.vercel.app]] +* 太微中文交流论坛:[ext[https://talk.tidgi.fun/topic/6]] +* 太微官网汉化版:[ext[https://bramchen.github.io/tw5-docs/zh-Hans/]] +* 最适合新手的中文入门教程:[ext[https://keatonlao.github.io/tiddlywiki-xp/]] +* TiddlyWiki 爱好者 QQ 群: 946052860 +*# [ext[点击链接加入群聊【TiddlyWiki爱好者】|https://qm.qq.com/q/13SFxVArlu]] +*# [ext[点击链接加入腾讯频道【太微TiddlyWiki】|https://pd.qq.com/s/474hgpll1]] From da4f5c64cab2700810b44cbd9b94bb87c70173a8 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sun, 18 May 2025 12:04:08 +0100 Subject: [PATCH 090/458] Change experimental plugins to stable See discussion at https://talk.tiddlywiki.org/t/introduction-to-the-geospatial-plugin/7984/37 --- plugins/tiddlywiki/confetti/plugin.info | 2 +- plugins/tiddlywiki/geospatial/plugin.info | 2 +- plugins/tiddlywiki/stacked-view/plugin.info | 2 +- plugins/tiddlywiki/tour/plugin.info | 2 +- plugins/tiddlywiki/tw5.com-docs/plugin.info | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/tiddlywiki/confetti/plugin.info b/plugins/tiddlywiki/confetti/plugin.info index bbd2753f53..3d8cbd047e 100644 --- a/plugins/tiddlywiki/confetti/plugin.info +++ b/plugins/tiddlywiki/confetti/plugin.info @@ -3,5 +3,5 @@ "name": "Confetti", "description": "Animated confetti effect", "list": "readme", - "stability": "STABILITY_1_EXPERIMENTAL" + "stability": "STABILITY_2_STABLE" } diff --git a/plugins/tiddlywiki/geospatial/plugin.info b/plugins/tiddlywiki/geospatial/plugin.info index 0f54de2e91..ab722cb36a 100644 --- a/plugins/tiddlywiki/geospatial/plugin.info +++ b/plugins/tiddlywiki/geospatial/plugin.info @@ -3,5 +3,5 @@ "name": "Geospatial Utilities", "description": "Geospatial utilities", "list": "readme docs settings license", - "stability": "STABILITY_1_EXPERIMENTAL" + "stability": "STABILITY_2_STABLE" } diff --git a/plugins/tiddlywiki/stacked-view/plugin.info b/plugins/tiddlywiki/stacked-view/plugin.info index 098752ed78..d28ec18685 100644 --- a/plugins/tiddlywiki/stacked-view/plugin.info +++ b/plugins/tiddlywiki/stacked-view/plugin.info @@ -3,5 +3,5 @@ "name": "Stacked View", "description": "Stacked card storyview", "list": "readme", - "stability": "STABILITY_1_EXPERIMENTAL" + "stability": "STABILITY_2_STABLE" } diff --git a/plugins/tiddlywiki/tour/plugin.info b/plugins/tiddlywiki/tour/plugin.info index d21d0b3833..701a10cc7b 100644 --- a/plugins/tiddlywiki/tour/plugin.info +++ b/plugins/tiddlywiki/tour/plugin.info @@ -4,5 +4,5 @@ "description": "A tour of TiddlyWiki", "list": "readme docs settings", "dependents": ["$:/plugins/tiddlywiki/confetti","$:/plugins/tiddlywiki/dynannotate"], - "stability": "STABILITY_1_EXPERIMENTAL" + "stability": "STABILITY_2_STABLE" } diff --git a/plugins/tiddlywiki/tw5.com-docs/plugin.info b/plugins/tiddlywiki/tw5.com-docs/plugin.info index e81d705929..2eb42fca74 100644 --- a/plugins/tiddlywiki/tw5.com-docs/plugin.info +++ b/plugins/tiddlywiki/tw5.com-docs/plugin.info @@ -3,5 +3,5 @@ "name": "TW5.com Docs", "description": "Documentation from tiddlywiki.com", "list": "readme", - "stability": "STABILITY_1_EXPERIMENTAL" + "stability": "STABILITY_2_STABLE" } From 44617232a75ae299645cbfb6bfe263b84fff8fc9 Mon Sep 17 00:00:00 2001 From: Jason E Baldus Date: Wed, 28 May 2025 13:50:08 -0400 Subject: [PATCH 091/458] Signing CLA (#9072) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index ba091524d3..28ebe9d1f7 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -615,3 +615,5 @@ Galen Huntington, @galenhuntington, 2025/01/19 @bob.jansen@cultconv.com, 2025/03/22 Matthew Salmon, @matthewsalmon, 2025/04/24 + +@jbaldus, 2025/05/28 \ No newline at end of file From 48b45f0e351efc8b1bb370874e879b56d91b08d8 Mon Sep 17 00:00:00 2001 From: Jason E Baldus Date: Thu, 29 May 2025 03:08:53 -0400 Subject: [PATCH 092/458] Fix stray space after named end breaking parsing #8976 (#9073) This commit fixes #8976, and adds tests for procedures, functions, and macro definitions with spaces after the end statements, both with and without names. --- .../parsers/wikiparser/rules/fnprocdef.js | 2 +- .../parsers/wikiparser/rules/macrodef.js | 2 +- .../tiddlers/tests/test-wikitext-parser.js | 48 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/core/modules/parsers/wikiparser/rules/fnprocdef.js b/core/modules/parsers/wikiparser/rules/fnprocdef.js index 8e675a3d1d..63ae8130f5 100644 --- a/core/modules/parsers/wikiparser/rules/fnprocdef.js +++ b/core/modules/parsers/wikiparser/rules/fnprocdef.js @@ -50,7 +50,7 @@ exports.parse = function() { var reEnd; if(this.match[5]) { // If so, it is a multiline definition and the end of the body is marked with \end - reEnd = new RegExp("((:?^|\\r?\\n)[^\\S\\n\\r]*\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[2]) + ")?(?:$|\\r?\\n))","mg"); + reEnd = new RegExp("((:?^|\\r?\\n)[^\\S\\n\\r]*\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[2]) + ")?\\s*?(?:$|\\r?\\n))","mg"); } else { // Otherwise, the end of the definition is marked by the end of the line reEnd = /($|\r?\n)/mg; diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index 342f5aacd2..24f0e12129 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -55,7 +55,7 @@ exports.parse = function() { var reEnd; if(this.match[3]) { // If so, it is a multiline definition and the end of the body is marked with \end - reEnd = new RegExp("((?:^|\\r?\\n)[^\\S\\n\\r]*\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[1]) + ")?(?:$|\\r?\\n))","mg"); + reEnd = new RegExp("((?:^|\\r?\\n)[^\\S\\n\\r]*\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[1]) + ")?\\s*?(?:$|\\r?\\n))","mg"); } else { // Otherwise, the end of the definition is marked by the end of the line reEnd = /($|\r?\n)/mg; diff --git a/editions/test/tiddlers/tests/test-wikitext-parser.js b/editions/test/tiddlers/tests/test-wikitext-parser.js index c35ad1dce7..7a8a132c72 100644 --- a/editions/test/tiddlers/tests/test-wikitext-parser.js +++ b/editions/test/tiddlers/tests/test-wikitext-parser.js @@ -116,6 +116,22 @@ describe("WikiText parser tests", function() { ); }); + it("should parse macro definitions with end statements followed by spaces", function() { + expect(parse("\\define myMacro()\nnothing\n\\end \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"isMacroDefinition":true,"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"start":0,"end":33,"rule":"macrodef"}] + + ); + }); + + it("should parse macro definitions with named end statements followed by spaces", function() { + expect(parse("\\define myMacro()\nnothing\n\\end myMacro \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"isMacroDefinition":true,"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"start":0,"end":40,"rule":"macrodef"}] + + ); + }); + it("should parse procedure definitions with no parameters", function() { expect(parse("\\procedure myMacro()\nnothing\n\\end\n")).toEqual( @@ -132,6 +148,22 @@ describe("WikiText parser tests", function() { ); }); + it("should parse procedure definitions with end statements followed by spaces", function() { + expect(parse("\\procedure myMacro()\nnothing\n\\end \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"isProcedureDefinition":true,"start":0,"end":36,"rule":"fnprocdef"}] + + ); + }); + + it("should parse procedure definitions with named end statements followed by spaces", function() { + expect(parse("\\procedure myMacro()\nnothing\n\\end myMacro \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"isProcedureDefinition":true,"start":0,"end":43,"rule":"fnprocdef"}] + + ); + }); + it("should parse procedure definitions with parameters", function() { expect(parse("\\procedure myMacro(one,two,three,four:elephant)\nnothing\n\\end\n")).toEqual( @@ -155,6 +187,22 @@ describe("WikiText parser tests", function() { ); }); + it("should parse function definitions with end statements followed by spaces", function() { + expect(parse("\\function myMacro()\nnothing\n\\end \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"isFunctionDefinition":true,"start":0,"end":35,"rule":"fnprocdef"}] + + ); + }); + + it("should parse function definitions with named end statements followed by spaces", function() { + expect(parse("\\function myMacro()\nnothing\n\\end myMacro \n")).toEqual( + + [{"type":"set","attributes":{"name":{"name":"name","type":"string","value":"myMacro"},"value":{"name":"value","type":"string","value":"nothing"}},"children":[],"params":[],"orderedAttributes":[{"name":"name","type":"string","value":"myMacro"},{"name":"value","type":"string","value":"nothing"}],"isFunctionDefinition":true,"start":0,"end":42,"rule":"fnprocdef"}] + + ); + }); + it("should parse single line function definitions with no parameters", function() { expect(parse("\\function myMacro() nothing\n")).toEqual( From 0b5ed7893f4e8b7fcb182c4a33075cae0ee0b6f2 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 29 May 2025 11:17:24 +0100 Subject: [PATCH 093/458] Force a rebuild --- editions/tw.org/tiddlers/TiddlyWiki.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw.org/tiddlers/TiddlyWiki.tid b/editions/tw.org/tiddlers/TiddlyWiki.tid index 76b8a7c9ae..af39950741 100644 --- a/editions/tw.org/tiddlers/TiddlyWiki.tid +++ b/editions/tw.org/tiddlers/TiddlyWiki.tid @@ -5,4 +5,4 @@ type: text/vnd.tiddlywiki TiddlyWiki is a rich, interactive tool for manipulating complex data with structure that doesn't easily fit into conventional tools like spreadsheets or wordprocessors. -See [[tiddlywiki.com|https://tiddlywiki.com]] for more details \ No newline at end of file +See [[tiddlywiki.com|https://tiddlywiki.com]] for more details. \ No newline at end of file From c117bfd2c5d31ac5c114b34c8f7bce75bb2e8ba3 Mon Sep 17 00:00:00 2001 From: IchijikuIchigo Date: Wed, 4 Jun 2025 01:28:55 +0900 Subject: [PATCH 094/458] [ja_JP] Japanese translation update - 'Filters' section of tiddlywiki.com (#9067) * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\concepts\Filters.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\concepts\Filters.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Syntax.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Expression.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Run.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Step.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\concepts\Selection Constructors.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Parameter.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Interchangeable Filter Run Prefixes.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Named Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\All Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\And Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Cascade Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Cascade Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Else Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Except Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Intersection Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Intersection Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Map Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Map Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Or Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\All Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Reduce Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Reduce Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Sort Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Sort Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\then Filter Run Prefix.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Then Filter Run Prefix (Examples).tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Shortcut Filter Run Prefixes.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Interchangeable Filter Run Prefixes.tid' * [ja-JP] Japanese translation of 'editions\tw5.com\tiddlers\filters\syntax\Filter Whitespace.tid' --- editions/ja-JP/tiddlers/concepts/Filters.tid | 30 +++++++++ .../concepts/Selection Constructors.tid | 19 ++++++ .../filters/syntax/All Filter Run Prefix.tid | 20 ++++++ .../filters/syntax/And Filter Run Prefix.tid | 20 ++++++ .../Cascade Filter Run Prefix (Examples).tid | 48 +++++++++++++++ .../syntax/Cascade Filter Run Prefix.tid | 27 ++++++++ .../filters/syntax/Else Filter Run Prefix.tid | 22 +++++++ .../syntax/Except Filter Run Prefix.tid | 20 ++++++ .../filters/syntax/Filter Expression.tid | 23 +++++++ .../Filter Filter Run Prefix (Examples).tid | 33 ++++++++++ .../syntax/Filter Filter Run Prefix.tid | 34 +++++++++++ .../filters/syntax/Filter Parameter.tid | 40 ++++++++++++ .../filters/syntax/Filter Run Prefix.tid | 21 +++++++ .../tiddlers/filters/syntax/Filter Run.tid | 29 +++++++++ .../tiddlers/filters/syntax/Filter Step.tid | 37 +++++++++++ .../tiddlers/filters/syntax/Filter Syntax.tid | 26 ++++++++ .../filters/syntax/Filter Whitespace.tid | 15 +++++ .../Interchangeable Filter Run Prefixes.tid | 47 ++++++++++++++ ...ersection Filter Run Prefix (Examples).tid | 38 ++++++++++++ .../syntax/Intersection Filter Run Prefix.tid | 22 +++++++ .../Map Filter Run Prefix (Examples).tid | 60 ++++++++++++++++++ .../filters/syntax/Map Filter Run Prefix.tid | 35 +++++++++++ .../syntax/Named Filter Run Prefix.tid | 38 ++++++++++++ .../filters/syntax/Or Filter Run Prefix.tid | 20 ++++++ .../Reduce Filter Run Prefix (Examples).tid | 29 +++++++++ .../syntax/Reduce Filter Run Prefix.tid | 49 +++++++++++++++ .../syntax/Shortcut Filter Run Prefixes.tid | 30 +++++++++ .../Sort Filter Run Prefix (Examples).tid | 35 +++++++++++ .../filters/syntax/Sort Filter Run Prefix.tid | 61 +++++++++++++++++++ .../Then Filter Run Prefix (Examples).tid | 53 ++++++++++++++++ .../filters/syntax/then Filter Run Prefix.tid | 41 +++++++++++++ 31 files changed, 1022 insertions(+) create mode 100644 editions/ja-JP/tiddlers/concepts/Filters.tid create mode 100644 editions/ja-JP/tiddlers/concepts/Selection Constructors.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/All Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/And Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Else Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Except Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Expression.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Parameter.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Run.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Step.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Syntax.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Filter Whitespace.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Interchangeable Filter Run Prefixes.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Named Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Or Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Shortcut Filter Run Prefixes.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix.tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/Then Filter Run Prefix (Examples).tid create mode 100644 editions/ja-JP/tiddlers/filters/syntax/then Filter Run Prefix.tid diff --git a/editions/ja-JP/tiddlers/concepts/Filters.tid b/editions/ja-JP/tiddlers/concepts/Filters.tid new file mode 100644 index 0000000000..0938f0dd55 --- /dev/null +++ b/editions/ja-JP/tiddlers/concepts/Filters.tid @@ -0,0 +1,30 @@ +created: 20130827080000000 +list: [[Introduction to filter notation]] [[Filter Syntax]] +modified: 20250218103107943 +original-modified: 20230710074511095 +tags: Reference Concepts TableOfContents +title: Filters +ja-title: フィルタ +type: text/vnd.tiddlywiki + +\define openAdvancedSearch() +<$action-setfield $tiddler="$:/state/tab--1498284803" text="$:/core/ui/AdvancedSearch/Filter"/> +<$action-setfield $tiddler="$:/temp/advancedsearch/input" text="[tag[Filters]]"/> +<$action-setfield $tiddler="$:/temp/advancedsearch" text="[tag[Filters]]"/> +\end + +TiddlyWikiは、レコードがTiddlerであるデータベースと考えることができます。データベースは通常、どのレコードが特定のパターンに一致するかを発見する方法を提供します。~TiddlyWikiでは、これはフィルタを使用して行われます + +<<.def フィルタ>>は、その<<.def "アウトプット">>として特定の[[Tiddlerセット|Title Selection]]を選択するための簡潔な表記法です。~TiddlyWikiはフィルタに遭遇するたびにアウトプットを計算します。その後、それらのTiddlerを使って、[[数を数え|CountWidget]]たり、[[リストし|ListWidget]]たりするなど、さらなる処理を行うことができます + +次の例では、フィルタを<<.mlink list-links>>マクロに渡します。<<.olink2 tag tag>> <<.word フィルタ>>であるTiddlerのリストを表示します: + +<>""" >> + +Wiki内でTiddlerが追加や削除されると、フィルタのアウトプットが変更される可能性があります。~TiddlyWikiは即再計算し、フィルタベースのカウントやリストも自動的に更新します + +''さらに詳細:'' + +* <$linkcatcher message="tm-navigate" actions=<> >[[高度な検索|$:/AdvancedSearch]] -- フィルタを簡単に試すことができる<<.advancedsearch-tab Filter>>タブがあります + +* [[WikiTextでのフィルタされたトランスクルージョン|Transclusion in WikiText]] -- テキスト内でフィルタ結果を使用したい場合 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/concepts/Selection Constructors.tid b/editions/ja-JP/tiddlers/concepts/Selection Constructors.tid new file mode 100644 index 0000000000..2e1682d553 --- /dev/null +++ b/editions/ja-JP/tiddlers/concepts/Selection Constructors.tid @@ -0,0 +1,19 @@ +created: 20150117204109000 +modified: 20250222112113766 +original-modified: 20240708201746542 +tags: Filters +title: Selection Constructors +ja-title: セレクションコンストラクタ +type: text/vnd.tiddlywiki + +[[フィルタステップ|Filter Step]]のアウトプットはその[[オペレータ|Filter Operators]]によって異なります: + +* ほとんどのオペレータは、インプットからアウトプットを派生します。たとえば、それらの多くはインプットのサブセットをアウトプットし、まさに<<.word フィルタ>>の名にふさわしく、含んでいる[[ラン|Filter Run]]の全体的なアウトプットを絞り込みます。これらのオペレータは<<.def "セレクションモディファイア">>と呼ばれます。 + +* いくつかのオペレータはインプットを無視し、代わりに独立したアウトプットを生成します。これらは<<.def "セレクションコンストラクタ">>と呼ばれ、完全に新しい[[セレクション|Title Selection]]を構築します。 + +コンストラクタの良い例は<<.olink title>>です。`[title[A]title[B]]`のアウトプットは<<.tid B>>です。しかし、<<.olink field>>オペレータはモディファイアなので、`[title[A]field:title[B]`は何もアウトプットしません。 + +次の[[フィルタオペレータ|filter Operator]]は<>でタグ付けされています: + +<]" class:"multi-columns">> diff --git a/editions/ja-JP/tiddlers/filters/syntax/All Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/All Filter Run Prefix.tid new file mode 100644 index 0000000000..fc13d06b5c --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/All Filter Run Prefix.tid @@ -0,0 +1,20 @@ +created: 20230316150731234 +from-version: 5.1.23 +modified: 20250303102704427 +original-modified: 20230711084644541 +rp-input: 前回のフィルタランからのすべてのタイトル +rp-output: アウトプットタイトルは、重複を排除せずに以前のフィルタランの出力に追加されます。 +rp-purpose: 重複を排除しない和集合 +tags: [[Named Filter Run Prefix]] +title: All Filter Run Prefix +ja-title: allフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":all" | - ) +[["ラン"|"Filter Run"]] +"""/> + +このプレフィックスにはオプションの[[ショートカット構文|Shortcut Filter Run Prefix]]であるシンボル`=run`があります \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/And Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/And Filter Run Prefix.tid new file mode 100644 index 0000000000..76c1389204 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/And Filter Run Prefix.tid @@ -0,0 +1,20 @@ +created: 20230318142752854 +from-version: 5.1.23 +modified: 20250303103244036 +original-modified: 20230711084712170 +rp-purpose: フィルタステップの蓄積 +rp-input: これまでのすべてのランのフィルタアウトプット +rp-output: アウトプットのタイトルは、以前のフィルターランのアウトプットを置換 +tags: [[Named Filter Run Prefix]] +title: And Filter Run Prefix +ja-title: andフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":and" | - ) +[["ラン"|"Filter Run"]] +"""/> + +このプレフィックスにはオプションの[[ショートカット構文|Shortcut Filter Run Prefix]]であるシンボル+runがあります \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..8d4afe5317 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix (Examples).tid @@ -0,0 +1,48 @@ +created: 20211130114857532 +filter1: [prefix[ca]then[ca]] +filter2: [suffix[at]then[at]] +filter3: other +modified: 20250310110107153 +original-modified: 20230305125250563 +tags: [[Cascade Filter Run Prefix]] +title: Cascade Filter Run Prefix (Examples) +ja-title: cascadeフィルタランプレフィックス (例) +type: text/vnd.tiddlywiki + +<<.op ":cascade">>フィルタランプレフィックスは、タグマクロによって生成されるタグピルで使用される各Tiddlerの配色を選択するために、~TiddlyWikiコアによって使用されます。 + +`:cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]]` + +上記の<<.op :cascade>>フィルタラン内のフィルタ式は、<>でタグ付けされたTiddlerのテキストフィールドからフィルタのリストを返します。以下を参照: + +
            +<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]]"> +
          • <$text text=<>/>
          • + +
          + +インプットタイトルごとに、これらのフィルタが順番に適用され、空でないリストを返す最初のフィルタが見つかるまで続きます。この空でないリストの最初の結果がそのインプットタイトルに置き換えられ、そのTiddlerの色として使用されます。 + +<<.operator-example 1 """[all[shadows+tiddlers]] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] +[!is[blank]limit[10]]""">> + +!! 拡張例 + +この例では、<<.op :cascade>>フィルタランがどのように機能するかを段階的に説明します。 + +アウトプットがフィルタのリストを返すフィルタ式が必要です。通常、このようなフィルタ式は、一連のTiddler内のいくつかのフィールドを照会して(おそらくタグ経由で)フィルタのリストを作成します。この例を自己完結型にするために、このTiddlerの//filter1//、//filter2//、//filter3//フィールドに、3つのフィルタが格納されます。[[テキスト参照|TextReference]]と[[appendオペレータ|append Operator]]のインスタンスを使用して、フィールドをフィルタのリストに結合します。 + +フィルター`[{!!filter1}append{!!filter2}append{!!filter3}]`は、次のフィルタリストを生成します: + +
            +<$list filter="[{!!filter1}append{!!filter2}append{!!filter3}]"> +
          • <$text text=<>/>
          • + +
          + +この例では、`cat can bat bug`がインプットタイトルとして使用されます。各インプットタイトルは、上記の各フィルタに対して順番に<<.op :cascade>>で評価されます。<<.op :cascade>>の内部で何が起こっているかを理解しやすくするために、次の表では、[[mapフィルタランプレフィックス|Map Filter Run Prefix]]を使用して、各フィルタの結果を示しています。 + +|^<<.operator-example c1.1 "cat can bat bug :map[prefix[ca]then[ca]]">>|^<<.operator-example c1.2 "cat can bat bug :map[suffix[at]then[at]]">>|^<<.operator-example c1.3 "cat can bat bug :map[[other]]">>| + +上記の3つの例で"Try it"をクリックします。<<.op :cascade>>を使用すると、各行の左から右に読み取られた最初の空白以外の値が返されます。最終結果を確認するには、下の"Try it"をクリックします。 + +<<.operator-example c1.4 "cat can bat bug :cascade[{!!filter1}append{!!filter2}append{!!filter3}]">> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid new file mode 100644 index 0000000000..aeaeca3265 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid @@ -0,0 +1,27 @@ +created: 20211130114043280 +from-version: 5.2.1 +modified: 20250305112707026 +original-modified: 20230710073343947 +rp-input: これまでのすべてのランのフィルタアウトプット +rp-output: このフィルタランによって返されるフィルタによって変更されたインプットタイトル +rp-purpose: フィルターのリストを順に評価し、最初の結果を適用してインプットタイトルを変更 +tags: [[Named Filter Run Prefix]] +title: Cascade Filter Run Prefix +ja-title: cascadeフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":cascade" | - ) +[["ラン"|"Filter Run"]] +"""/> + +この[[フィルタラン|Filter Run]]の[[フィルタ式|Filter Expression]]が評価され、フィルタのリストが返されます。次に、各インプットタイトルが各フィルタに対して順番に評価され、インプットタイトルは空でないリストを返す最初のフィルタの最初の結果に置き換えられます。どのフィルタもインプットタイトルの結果を返さない場合は、空の文字列に置き換えられます。 + +フィルタラン内では、次の変数を使用できます: + +* <<.var currentTiddler>> - インプットタイトル +* <<.var ..currentTiddler>> - フィルタラン外の変数<<.var currentTiddler>>の値。 + +[[cascadeフィルタランプレフィックス (例)|Cascade Filter Run Prefix (Examples)]] diff --git a/editions/ja-JP/tiddlers/filters/syntax/Else Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Else Filter Run Prefix.tid new file mode 100644 index 0000000000..1ea57814d9 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Else Filter Run Prefix.tid @@ -0,0 +1,22 @@ +created: 20230318142408662 +from-version: 5.1.23 +modified: 20250312102737003 +original-modified: 20230322140756821 +rp-input: 前のフィルタランからのすべてのタイトル +rp-output: これまでのフィルタアウトプットが空のリストの場合、ランのアウトプットタイトルがフィルタアウトプットに[[追加|Dominant Append]]されます
          これまでのフィルタアウトプットが空のリストでない場合、ランは無視されます +rp-purpose: フィルタランは、これまでのすべてのランのフィルタアウトプットが空のリストである場合にのみ評価されます +tags: [[Named Filter Run Prefix]] +title: Else Filter Run Prefix +ja-title: elseフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":else" | - ) +[[run|"Filter Run"]] +"""/> + +このプレフィックスには[[ショートカットフィルタランプレフィックス|Shortcut Filter Run Prefix]] シンボル`~run`があります + +参照: [[thenフィルタランプレフィックス|Then Filter Run Prefix]] | [[thenオペレータ|then Operator]] と [[elseオペレータ|else Operator]] diff --git a/editions/ja-JP/tiddlers/filters/syntax/Except Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Except Filter Run Prefix.tid new file mode 100644 index 0000000000..58a6bdda8c --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Except Filter Run Prefix.tid @@ -0,0 +1,20 @@ +created: 20230318142056008 +from-version: 5.1.23 +modified: 20250312104032308 +original-modified: 20230322140643066 +rp-input: 前のフィルタランからのすべてのタイトル +rp-output: アウトプットタイトルはフィルタのアウトプットから取り除かれます(そのようなTiddlerが存在する場合) +rp-purpose: このフィルタランのアウトプットタイトルが前のフィルタランのアウトプットに含まれている場合は取り除かれ、含まれていない場合は無視されます +tags: [[Named Filter Run Prefix]] +title: Except Filter Run Prefix +ja-title: exceptフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":except" | - ) +[[run|"Filter Run"]] +"""/> + +このプレフィックスには[[ショートカットフィルタランプレフィックス|Shortcut Filter Run Prefix]]シンボル`-run`があります \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Expression.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Expression.tid new file mode 100644 index 0000000000..8b2dbc7ffc --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Expression.tid @@ -0,0 +1,23 @@ +created: 20150124182421000 +modified: 20250219114110986 +original-modified: 20230710074507466 +tags: [[Filter Syntax]] +title: Filter Expression +ja-title: フィルタ式 +type: text/vnd.tiddlywiki + +<<.def "フィルタ式">>は、[[フィルタのシンタックス|Filter Syntax]]の最も外側のレベルです。これは、[[フィルタランプレフィックス|Filter Run Prefix]]を備えた [[フィルタラン|Filter Run]]で構成されます。複数のフィルタ実行は[[ホワイトスペース|Filter Whitespace]]で区切られます。 + +<$railroad text=""" +{ ( + - | + : [[<"プレフィックス">|"Filter Run Prefix"]] + ) + [["ラン"|"Filter Run"]] + + [["ホワイトスペース"|"Filter Whitespace"]] +} +"""/> + +<<.tip """上に示したように、図に開始線と終了線が1つある場合は、リンクされた上位レベルにさらに情報があることを意味します。パンくずリストはナビゲーションに使用できます""">> + +<<.tip """下位レベルで使用されているように、図に開始点と終了点がない場合は、読みやすさと単純さを高めるために、上位レベルのシンタックス要素が削除されていることを意味します。パンくずリストはナビゲーションに使用できます""">> diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..47d2129fda --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix (Examples).tid @@ -0,0 +1,33 @@ +created: 20211129022707404 +modified: 20250314105437481 +original-modified: 20230305125338118 +tags: [[Filter Filter Run Prefix]] +title: Filter Filter Run Prefix (Examples) +ja-title: filterフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[tag[HelloThere]] :filter[get[text]length[]compare:integer:gteq[1000]]">> +<<.operator-example 2 "[tag[HelloThere]] :filter[get[text]length[]compare:integer:lteq[2000]]">> +<<.operator-example 3 "[tag[HelloThere]] :filter[get[text]length[]compare:integer:gteq[1000]] :filter[get[text]length[]compare:integer:lteq[2000]]">> +<<.operator-example 4 "[tag[Features]] :filter[links[]!is[shadow]is[missing]]">> + +<<.operator-example 5 "A B C D E F :filter[remainder[2]compare:integer:eq[0]]" "インプットリストの要素を1つおきに返す">> + + +<<.operator-example 6 "[tag[shopping]] :filter[{!!quantity}compare:integer:gt[4]] :map[addprefix[ ]addprefix{!!quantity}]">> +<<.operator-example 7 "[tag[shopping]] :filter[{!!quantity}compare:integer:lteq[4]] :map[addprefix[ ]addprefix{!!quantity}]">> + +!! フィルタランプレフィックス`:filter`と`:and`/`+`の比較 + +<<.op :filter>>フィルタランプレフィックスの機能は、<<.op :and>>プレフィックス(エイリアス<<.op +>>)と一部重複しています。上記のフィルタ式にはすべて、次の2 つのプロパティがあることに注意してください: + +# フィルタ式の先頭では、インプットタイトル(つまり、`get[text]length[]`、`links[]`、`remainder[2]`、`{!!quantity}`)が変換されます。 +# フィルタ式の最後では、インプット項目が何らかの条件(つまり`compare`、`is`)を満たす場合にのみアウトプットに送信されます。 + +<<.op :filter>>プレフィックスの目的はプロパティ#1によってインプットタイトルが変換されるにもかかわらず、元のインプットタイトルを返すことです。こうすることで、"何らかの条件を満たす"チェックを元のインプット以外のものに対して実行できます。一部のフィルタ式でプロパティ#1が必要ない場合は、代わりに<<.op :and>>プレフィックスを使用できます。 + +| <<.op :filter>> | <<.op :and>> | +|^<<.operator-example c1.1 "[tag[HelloThere]] :filter[get[text]length[]compare:integer:gteq[1000]]">>|^<<.operator-example c1.2 "[tag[HelloThere]] :and[get[text]length[]compare:integer:gteq[1000]]">>| +|^<<.operator-example c2.1 "[tag[Features]] :filter[links[]!is[shadow]is[missing]]">>|^<<.operator-example c2.2 "[tag[Features]] :and[links[]!is[shadow]is[missing]]">>| +|!結果は同じ|<| +|^<<.operator-example c3.1 "cat can bat bug :filter[suffix[at]minlength[3]]">>|^<<.operator-example c3.2 "cat can bat bug :and[suffix[at]minlength[3]]">>| \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix.tid new file mode 100644 index 0000000000..b98e7b9d4e --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Filter Run Prefix.tid @@ -0,0 +1,34 @@ +created: 20211129022455873 +from-version: 5.1.23 +modified: 20250314105047035 +original-modified: 20230710073334078 +rp-input: これまでのすべてのランのフィルタアウトプット +rp-output: フィルタランが空でないインプットタイトル +rp-purpose: フィルタランアウトプットが空のリストであるすべてのインプットタイトルを除外 +tags: [[Named Filter Run Prefix]] +title: Filter Filter Run Prefix +ja-title: filterフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":filter" | - ) +[["ラン"|"Filter Run"]] +"""/> + +これまでのフィルタアウトプットをインプットとして受け取ります。次のランはインプットの各タイトルに対して評価され、アウトプットが空のリストであるすべてのインプットタイトルが除かれます。 + +フィルタラン内では、<<.var currentTiddler>>変数は処理中のTiddlerのタイトルに設定されていることに注意してください。これにより、`:filter[{!!price}multiply{!!cost}compare:integer:gteq[5]]`のようなフィルタランを計算に使用できるようになります。ラン外のcurrentTiddlerの値は、<<.var ..currentTiddler>>変数で使用できます。 + +フィルターラン内では、次の変数を使用できます: + +* <<.var currentTiddler>> - インプットタイトル +* <<.var ..currentTiddler>> - フィルタラン外の変数`currentTiddler`の値。 +* <<.var index>> - <<.from-version "5.2.1">> 現在のリスト項目の数値インデックス(リストの最初の項目はゼロです)。 +* <<.var revIndex>> - <<.from-version "5.2.1">> 現在のリスト項目の逆数値インデックス(リストの最後の項目はゼロです)。 +* <<.var length>> - <<.from-version "5.2.1">> インプットリストの長さの合計。 + +<<.tip "名前付きフィルタランプレフィックス`:filter`を、この演算子は、すべてのインプットタイトルにサブフィルタを適用し、サブフィルタから空の結果を返すタイトルを除外する[[filterオペレータ|filter Operator]]と比べてください。">> + +[[filterフィルタランプレフィックス(例)|Filter Filter Run Prefix (Examples)]] diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Parameter.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Parameter.tid new file mode 100644 index 0000000000..5b5bf953a7 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Parameter.tid @@ -0,0 +1,40 @@ +created: 20150220152540000 +modified: 20250223102930110 +original-modified: 20240708202234843 +tags: [[Filter Step]] +title: Filter Parameter +ja-title: フィルタパラメータ +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( "[" [: <-"ハード"-> /"]以外"/] "]" + | + "{" [: <-"間接"-> /"}以外"/] "}" + | + "<" [: <-"変数"-> /">以外"/] ">" +) +"""/> + +[[フィルタオペレータ|Filter Operators]]のパラメーターは次のようになります: + +;<<.def ハード>> +: `[パラメータ例]` +: パラメータは、角括弧内のテキストそのものです。 +;<<.def ソフト>> +: <<.def 間接>> +:: `{パラメータ例}` +:: パラメータは、中括弧内の名前の[[テキスト参照|TextReference]]によって示されるテキスト、つまり、指定されたTiddlerの[[フィールド|TiddlerFields]]、または指定された[[データTiddler|DataTiddlers]]のプロパティの値です。 +: <<.def 変数>> +:: `<パラメータ例>` +:: パラメータは、山括弧内の[[変数|Variables]]の現在値です。マクロパラメータは、v5.2.0まではサポートされて<<.em いません>>。 +::<<.from-version "5.2.0">> リテラルマクロパラメータがサポートされています。例: `[]`。 + +<<.note """すべての[[フィルタオペレータ|filter Operator]]の後にはパラメータ式が続く必要があります。[[パラメータの無いオペレータ|Operators without parameters]]の場合、その式は空になります(`[links[]]`のフィルタオペレータ<<.olink links>>と同様)。""">> + +--- + +<<.from-version "5.1.23">> [[フィルタステップ|Filter Step]]では、`,`文字で区切られた複数のパラメータがサポートされます。 + +例えば: `[param1],[param2]`や`,{param2}` diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Run Prefix.tid new file mode 100644 index 0000000000..54e79a2594 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Run Prefix.tid @@ -0,0 +1,21 @@ +created: 20230305130600148 +modified: 20250223105142349 +original-modified: 20230711090913687 +tags: [[Filter Expression]] +title: Filter Run Prefix +ja-title: フィルタランプレフィックス +type: text/vnd.tiddlywiki + +There are 2 types of filter run prefixes that are interchangeable; [[named prefixes|Named Filter Run Prefix]] and [[shortcut prefixes|Shortcut Filter Run Prefix]]. +交換可能なフィルタランプレフィックスには、[[名前付きプレフィックス|Named Filter Run Prefix]]と[[ショートカットプレフィックス|Shortcut Filter Run Prefix]]の2種類があります。 + +<$railroad text=""" +\start none +\end none +( + - | +: [[<":名前付きプレフィクス"> /"v5.1.23以降"/ |"Named Filter Run Prefix"]] | + [[<"ショートカットプレフィックス"> /"v5.1.23以前"/ |"Shortcut Filter Run Prefix"]] +) +[[<"ラン">|"Filter Run"]] +"""/> diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Run.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Run.tid new file mode 100644 index 0000000000..00470a5dcf --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Run.tid @@ -0,0 +1,29 @@ +created: 20150124182117000 +modified: 20250220111652831 +original-modified: 20230710074357002 +tags: [[Filter Expression]] +title: Filter Run +ja-title: フィルタラン +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( "[" { [[<"フィルタステップ">|"Filter Step"]] } "]" + | + [:{/"[ ]または空白以外の文字"/}] + | + '"' [:{/'"以外の文字'/}] '"' + | + "'" [:{/"'以外の文字"/}] "'" +) +"""/> + +<<.def ラン>>は[[ステップ|Filter Step]]で構成され、より大きな[[フィルタ式|Filter Expression]]に貢献する[[選択|Title Selection]]を出力します。 + +ステップは左から右に処理されます。最初のステップへのインプットはランへのインプットと同じです。後続の各ステップのインプットは、前のステップのアウトプットです。 + + +図の下の3つのオプションは`HelloThere`、`"HelloThere"`、`'HelloThere'`と`"Filter Operators"`の構文と一致します。これらは`[title[...]]`の短縮形です。 + +引用符で囲まれたオプションは、`"An [[[[Unusual]]]] Tiddler"`のように角括弧を含むタイトルをサポートするために存在します。 diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Step.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Step.tid new file mode 100644 index 0000000000..0c81c7c250 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Step.tid @@ -0,0 +1,37 @@ +created: 20150124182127000 +modified: 20250222110925130 +original-modified: 20230710074414361 +tags: [[Filter Run]] +title: Filter Step +ja-title: フィルタステップ +type: text/vnd.tiddlywiki + +<<.def "フィルタステップ">>は、<<.def "フィルタラン">>内の単一の操作を表します。 + +プログラミング用語では、ステップのインプットがパラメータとして渡される関数呼び出しに似ています。ステップのアウトプットは、[[フィルタラン|Filter Run]]、つまりそれを含む[[フィルタ式|Filter Expression]]全体に貢献する[[タイトルセレクション|Title Selection]]です。 + +<$railroad text=""" +\start none +\end none +[:"!"] +( / "省略の場合のデフォルト: title" /|: +( - | :[[<"オペレータ">|"Filter Operators"]] ) +{ [:":" [[<"サフィックス">|"Filter Operators"]] ] } ) +{ [[<"パラメータ">|"Filter Parameter"]] + "," } +"""/> + +ステップの<<.def オペレータ>>は、[[フィルタオペレータ|Filter Operators]]として知られている定義済みキーワードのリストです。 + +多くのステップでは、ステップの実行内容をさらに定義する明示的な<<.def パラメータ>>が必要です。 + +<<.def サフィックス>>は、特定のオペレータの意味を拡張する追加テキスト(多くの場合、[[フィールド|TiddlerFields]]名)です。 + +ステップの<<.def オペレータ>>と<<.def サフィックス>>がすべて省略されている場合は、デフォルトで[[title|title Operator]]オペレータが使用されます。 + +<<.from-version "5.1.23">> いくつかのステップでは、`,`文字で区切られた複数の<<.def パラメータ>>を受け入れます。 + +認識されないオペレータは、<<.olink field>>オペレータのサフィックスであるかのように扱われます。 + +フィルタオペレータはプラグインによって拡張できます。 + +{{Selection Constructors}} diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Syntax.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Syntax.tid new file mode 100644 index 0000000000..5d29f60130 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Syntax.tid @@ -0,0 +1,26 @@ +created: 20140210141217955 +list: [[Filter Expression]] [[Filter Run]] [[Filter Step]] [[Filter Parameter]] [[Filter Whitespace]] +modified: 20250219112710650 +original-modified: 20230710074340943 +tags: Filters +title: Filter Syntax +ja-title: フィルタのシンタックス +type: text/vnd.tiddlywiki + +<<.preamble """[[フィルタ|Filters]]は、正式な構文の説明が役立つと思われる人向けに、[[Railroadダイアグラム|Railroad Diagrams]]を使用して示されている文法に従います。ただし、このグループのTiddlerを理解していなくても、[[フィルタの書き方を学ぶ|Introduction to filter notation]]ことができます""">> + +<<.def フィルタ>>は、<<.def インプット>>を<<.def アウトプット>>に変換するためのパイプラインです。インプットとアウトプットはどちらも、Tiddlerとフィールドの[[タイトルの順序付き集合|Title Selection]]です + +フィルタは、''ラン''と呼ばれる小さな構成要素から構成される''式''であり、''ラン''は''ステップ''を使用して構築されます。それぞれがインプットをアウトプットに変換します + +フィルタは空のアウトプットから始まります。その実行は左から右に処理され、アウトプットが徐々に修正されます。 + +"フィルタのシンタックス"の記述は次で始まります: + +<$railroad text=""" +\start double +\end double +[[<"フィルタ式">|"Filter Expression"]] +"""/> + +<<.tip "上記のようなRailroadボックスを使用して移動できます。">> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Filter Whitespace.tid b/editions/ja-JP/tiddlers/filters/syntax/Filter Whitespace.tid new file mode 100644 index 0000000000..e478a19f3a --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Filter Whitespace.tid @@ -0,0 +1,15 @@ +created: 20150124182304000 +modified: 20250510104756224 +original-modified: 20230710074447240 +tags: [[Filter Expression]] +title: Filter Whitespace +ja-title: フィルタホワイトスペース +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +{( "スペース" | "タブ" | "ラインフィード" | "リターン" | "垂直タブ" | "改ページ" )} +"""/> + +[[フィルタ式|Filter Expression]]の各ランの間にはホワイトスペース文字が出現します。 \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Interchangeable Filter Run Prefixes.tid b/editions/ja-JP/tiddlers/filters/syntax/Interchangeable Filter Run Prefixes.tid new file mode 100644 index 0000000000..d1eda102ef --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Interchangeable Filter Run Prefixes.tid @@ -0,0 +1,47 @@ +created: 20230316151518640 +modified: 20250225113139787 +original-modified: 20230327130626715 +tags: [[Filter Run Prefix]] +title: Interchangeable Filter Run Prefixes +ja-title: 交換可能なフィルターランプレフィックス +type: text/vnd.tiddlywiki + +!! 交換可能なフィルターランプレフィックス + +技術的/論理的な用語で言えば: + +|!ラン |!同等の名前付きプレフィックス |!解釈 |!アウトプット | +|`[run]` |`:or[run]` |重複を排除した和集合 |... OR ラン | +|`+[run]` |`:and[run]` |フィルタステップの蓄積 |... AND ラン | +|`-[run]` |`:except[run]` |差集合 |... AND NOT ラン | +|`~[run]` |`:else[run]` |それ以外 |... ELSE ラン | +|`=[run]` |`:all[run]` |重複を排除しない和集合 |... OR ラン | + +ランのインプットは通常、Wiki内の[[隠し|ShadowTiddlers]]Tiddler以外のすべてのTiddlerタイトルのリストです(順不同)。
          ただし、`+`プレフィックスによってこれを変更できます: + +|プレフィックス|インプット|h +|`-`, `~`, `=`, `:intersection` あるいは、無し| 最初の[[フィルタオペレータ|Filter Operators]]によって特に指定されない限り、<$link to="all Operator">`[all[]]` Tiddlerのタイトル| +|`+`, `:filter`, `:map`, `:reduce`,`:sort` |これまでのすべてのランのフィルタアウトプット| + +インプットが変化するため、`-`と`+`の両方のプレフィックスが互いに逆の動作をしないことに注意してください。 + +たとえば、次の2つの例では、`$:/baz`は実際に存在する場合にのみ削除されます: + +* <$link to="is Operator"> `foo bar $:/baz -[is[system]]` +* <$link to="prefix Operator">`foo bar $:/baz -[prefix[$:/]]` + +理由を理解するには、両方の最後のランのインプットとその`-`プレフィックスを考慮してください。 + +存在するかどうかに関係なく、`$:/baz`を削除するには、[[否定のフィルタオペレータ|Filter Operators]]とともに`+`プレフィックスを使用するだけです: + +* <$link to="is Operator">`foo bar $:/baz +[!is[system]]` +* <$link to="prefix Operator">`foo bar $:/baz +[!prefix[$:/]]` + +!! +と和集合の違い + +`+`と`:intersection`の違いについては[[和集合フィルタランプレフィックス(例)|Intersection Filter Run Prefix (Examples)]]を参照してください。 + +!! 開発者向け + +新しいフィルタランプレフィックスを作成するには、`filterrunprefix`の[[モジュールタイプ|ModuleType]]で +[[Javascriptモジュール|Modules]]を作成します。 diff --git a/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..851d2ad2e4 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix (Examples).tid @@ -0,0 +1,38 @@ +created: 20211128212902292 +modified: 20250319104544220 +original-modified: 20230305125354209 +tags: [[Intersection Filter Run Prefix]] +title: Intersection Filter Run Prefix (Examples) +ja-title: intersectionフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "A B C D :intersection[enlist[C D E F]]">> + +<<.operator-example 2 "A B C D :intersection[enlist[A B C D]]">> + +<<.operator-example 3 "A B C D :intersection[enlist[E F G H]]">> + +<<.operator-example 4 ":intersection[enlist[A B C D]]" "最初のフィルタランでintersectionを使用することはあまり役に立ちません。結果は常に空になります。">> + +!! `+`と`:intersection`の違い + +プレフィックス`+`は、形式論理における"AND"として考えてください。たとえば、"条件A ''かつ'' 条件Bを満たすすべてのタイトルを取得する"などです。ただし、すべてのケースに適しているわけではありません。条件Bがインプットを置き換えるフィルタオペレータを使用する場合、プレフィックス`+`の使用は難しくなります。たとえば、2つのTiddlerに共通するタグを見つけたい場合は、次のようなフィルタ式を記述します: + +* <$link to="tags Operator">`[[field Operator]tags[]] +[[compare Operator]tags[]]` + +しかし、これは機能しません。2回目のフィルタランでインプットが破棄され、単一のtitle`[[compare Operator]]`で構成されるインプットに置き換えられるからです。そのため、このフィルタ式から得られる結果は、`compare Operator`Tiddlerのタグだけになります。 + +このような場合、必要なのは`:intersection`プレフィックスです。これまでのフィルタアウトプットを取得して、//保留し//、すべてのTiddlerタイトルをインプットとして次のフィルタランを開始します。その後、最新のフィルタランが完了すると、最新のアウトプットを取得して保留していたアウトプットと比較し、保留していたアウトプットと最新のアウトプットの両方に表示されたタイトルのみを含む新しいアウトプットを生成します。したがって、`field Operator`と`compare Operator`に共通するタグのみを取得するには、次のようなフィルタ式を記述します。 + +* <$link to="tags Operator">`[[field Operator]tags[]] :intersection[[compare Operator]tags[]]` + +次の例では、[[field Operator]]と[[compare Operator]]を使用して、Tiddlerとそれぞれのタグを比較します。 + +<<.operator-example 5 "[[field Operator]tags[]]">> +<<.operator-example 6 "[[compare Operator]tags[]]">> + +<<.operator-example 7 "[[field Operator]tags[]] +[[compare Operator]tags[]]" """"field Operator"Tiddlerのタグは失われるため、"compare Operator"Tiddlerのタグのみが返されます""">> + +<<.operator-example 8 "[[field Operator]tags[]] :intersection[[compare Operator]tags[]]" """両方のTiddlerに共通するタグを返します""">> + + diff --git a/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix.tid new file mode 100644 index 0000000000..61872df3c3 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Intersection Filter Run Prefix.tid @@ -0,0 +1,22 @@ +created: 20211128212902292 +from-version: 5.1.23 +modified: 20250317105829721 +original-modified: 20230710073322863 +rp-input: 前のフィルタランからのすべてのタイトル +rp-output: このフィルタランの結果と前のランのアウトプットの両方に存在するタイトル +rp-purpose: 前のランからのタイトルとこのフィルタのタイトルの共通部分を見つける +tags: [[Named Filter Run Prefix]] +title: Intersection Filter Run Prefix +ja-title: intersectionフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":intersection" | - ) +[["ラン"|"Filter Run"]] +"""/> + +前のランからのフィルタアウトプットは保留されます。`:intersection`フィルタランは、すべてのTiddlerタイトルをインプットとして開始されます。この最後のフィルタランが完了すると、最後のアウトプットが保留アウトプットと比較されます。保留アウトプットと最新アウトプットの両方に表われるタイトルのみを含む新しいアウトプットが生成されます。 + +[[intersectionフィルタランプレフィックス(例)|Intersection Filter Run Prefix (Examples)]] diff --git a/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..4132486df4 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid @@ -0,0 +1,60 @@ +created: 20210618134753828 +modified: 20250416110748088 +original-modified: 20230305125405422 +tags: [[Map Filter Run Prefix]] +title: Map Filter Run Prefix (Examples) +ja-title: mapフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + +インプットタイトルが存在する場合はキャプションフィールドで置き換え、存在しない場合はインプットタイトルを保持します: + +<<.operator-example 1 "[tag[Widgets]] :map[get[caption]else{!!title}]">> + +<<.tip "上記の例は`[tag[Widgets]] :map[{!!caption}!is[blank]else{!!title}]`と同等です。フィールドを`{!!caption}`のようにテキスト参照として参照する場合、存在しない、または空のキャプションフィールドに対しては空文字列が返されることに注意してください。したがって、`else`オペレータの前に`is[blank]`のチェックが必要です。">> + +買い物リストの各タイトルについて、各アイテムの購入にかかる合計コストを計算します: + +<<.operator-example 2 "[tag[shopping]] :map[get[quantity]else[0]multiply{!!price}]">> + +`Widget:`でタグ付けされたすべてのTiddlerのタグを取得します: + +<<.operator-example 3 "[tag[Widgets]] :map:flat[tagging[]] :and[!is[blank]unique[]]">> +<<.tip "`flat`サフィックスがない場合、`:map`フィルタランは各インプットタイトルの最初の結果のみを返します">> + +!! `:map`の`flat`サフィックスの有無の比較 + +`:map`フィルタランは、少なくともインプットと同じ数のアウトプットを返します。デフォルトでは、1つのインプット項目に対して1つのアウトプット項目が生成されます。フィルタランによってインプット項目が空の結果に変換された場合、その項目のアウトプットは空の文字列になります。フィルタランによってインプット項目が複数の項目に変換された場合、アウトプットには最初の項目のみが表われます。この動作は、`flat`サフィックスを指定することで上書きできます。`flat`サフィックスを指定すると、すべての項目がアウトプットに表れます。 + +| `:map` | `:map:flat` | +|^<<.operator-example m0.1 "[range[4]] :map[match[this matches nothing]]">>|^<<.operator-example m0.2 "[range[4]] :map:flat[match[this matches nothing]]">>| +|^<<.operator-example m1.1 "[range[4]] :map[range]">>|^<<.operator-example m1.2 "[range[4]] :map:flat[range]">>| +|^<<.operator-example m2.1 "[range[4]] :map[range]">>|^<<.operator-example m2.2 "[range[4]] :map:flat[rangefirst[]]">>| +|^<<.operator-example m3.1 "[range[4]] :map[rangesum[]]">>|^<<.operator-example m3.2 "[range[4]] :map:flat[rangesum[]]">>| +|^<<.operator-example m4.1 "[[1,2,3]] [[4,5]] :map[split[,]]">>|^<<.operator-example m4.2 "[[1,2,3]] [[4,5]] :map:flat[split[,]]">>| +|^<<.operator-example m5.1 "[[1,2,3]] [[4,5]] :map[split[,]]">>|^<<.operator-example m5.2 "[[1,2,3]] [[4,5]] :map:flat[split[,]first[]]">>| + + +!! `:map`と`:and`/`+`フィルタランプレフィックスの比較 + +`:map`フィルタランプレフィックスの機能は、`:and` プレフィックス(別名`+`)と一部重複しています。これらは同じ結果を返す場合もありますが、少なくとも以下の場合には結果が異なります: + +# `:and`フィルタランによってアイテム数が変更される(増加や減少)場合があります。`:map`フィルタランによってアイテム数が変更されることはありません。 +# `:and`フィルタランのアイテム数は、[[重複排除|Dominant Append]]により減少します。`:map`ランは[[重複排除|Dominant Append]]は行われません。 +# "currentTiddler"変数への明示的な参照は異なる動作をします +# TextReferenceを使用した"currentTiddler"への暗黙的な参照は異なる動作をします。 + +| `:map` | `:and` | +|!結果は同じ|<| +|^<<.operator-example 1.1 "[range[5]] :map[add[1]]">>|^<<.operator-example 1.2 "[range[5]] :and[add[1]]">>| +|^<<.operator-example 2.1 "[range[5]] :map[addsuffix[ hello]]">>|^<<.operator-example 2.2 "[range[5]] :and[addsuffix[ hello]]">>| +|^<<.operator-example 3.1 "[tag[shopping]] :map[get[quantity]]">>|^<<.operator-example 3.2 "[tag[shopping]] :and[get[quantity]]">>| +|!項目数が減少|<| +|^<<.operator-example 4.1 "[range[5]] :map[sum[]]">>|^<<.operator-example 4.2 "[range[5]] :and[sum[]]">>| +|^<<.operator-example 5.1 "[range[5]] :map[join[,]]">>|^<<.operator-example 5.2 "[range[5]] :and[join[,]]">>| +|!項目数が増加|<| +|^<<.operator-example 6.1 "[[1,2,3]] [[4,5]] :map[split[,]]">>|^<<.operator-example 6.2 "[[1,2,3]] [[4,5]] :and[split[,]]">>| +|!重複排除|<| +|^<<.operator-example 7.1 "[range[5]] :map[[hello]]">>|^<<.operator-example 7.2 "[range[5]] :and[[hello]]">>| +|!currentTiddler|<| +|^<<.operator-example 8.1 "[tag[shopping]] :map[]">>|^<<.operator-example 8.2 "[tag[shopping]] :and[]">>| +|^<<.operator-example 9.1 "[tag[shopping]] :map[{!!quantity}]">>|^<<.operator-example 9.2 "[tag[shopping]] :and[{!!quantity}]">>| diff --git a/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix.tid new file mode 100644 index 0000000000..401a13a89d --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Map Filter Run Prefix.tid @@ -0,0 +1,35 @@ +created: 20210618133745003 +from-version: 5.2.0 +modified: 20250319105451115 +original-modified: 20240312202834547 +rp-input: 前回までのすべてのランのフィルタアウトプット +rp-output: このフィルタランの結果によって変更されたインプットタイトル +rp-purpose: 各項目に対してこのフィルタを実行した結果に基づいてインプットタイトルを変更 +rp-suffix: <<.from-version "5.2.3">> フィルタランからすべての結果を返す場合は<<.value flat>>、最初の結果のみを返す場合は省略(デフォルト) +tags: [[Named Filter Run Prefix]] +title: Map Filter Run Prefix +ja-title: mapフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":map" (: ":flat" | - ) | - ) +[["ラン"|"Filter Run"]] +"""/> + +以前のランからの各インプットタイトルは、順番にこのランに渡されます。フィルタランはインプットタイトルを変換し、このランのアウトプットはインプットタイトルを置き換えます。たとえば、フィルタラン`[get[caption]else{!!title}]`は、タイトルが保持されるフィールドが存在しない場合以外、各インプットタイトルをそのキャプションフィールドに置き換えます。 + +フィルタラン内では、<<.var currentTiddler>>変数は処理中のTiddlerのタイトルに設定されていることに注意してください。これにより、`:map[{!!price}multiply{!!cost}]`のようなフィルタランが計算に使用できるようになります。 + +フィルタラン内では、次の変数を使用できます: + +* <<.var currentTiddler>> - インプットタイトル +* <<.var ..currentTiddler>> - フィルタランの外での変数`currentTiddler`の値。 +* <<.var index>> - <<.from-version "5.2.1">> 現在のリスト項目の数値インデックス(リストの最初の項目はゼロ)。 +* <<.var revIndex>> - <<.from-version "5.2.1">> 現在のリスト項目の逆数値インデックス(リストの最後の項目はゼロ)。 +* <<.var length>> - <<.from-version "5.2.1">> インプットリストの合計の長さ。 + +`:map`プレフィックス付きで使用されるフィルタランは、渡された項目と少なくとも同じ数の項目を返す必要があります。フィルタランがアウトプットを返さないインプットタイトルは、空の文字列に置き換えられます。特に、[[getオペレータ|get Operator]]を使用してフィールドの値を取得する場合は、[[elseオペレータ|else Operator]] を使用してフィールド値が欠落しないようにすると役立ちます。たとえば、`[get[myfield]else[default-value]...`のようにします。 + +[[mapフィルタランプレフィックス(例)|Map Filter Run Prefix (Examples)]] \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Named Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Named Filter Run Prefix.tid new file mode 100644 index 0000000000..bb856eee44 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Named Filter Run Prefix.tid @@ -0,0 +1,38 @@ +created: 20201214044413473 +modified: 20250227102948619 +original-modified: 20230711090833212 +tags: [[Filter Run Prefix]] +title: Named Filter Run Prefix +ja-title: 名前付きフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<<.from-version "5.1.23">>で、名前付きフィルタランプレフィックスが実装されました。図に示すように、`:cascade`、`:map`、`:sort`が後から追加されました。 + +名前付きフィルタランプレフィックスは、[[ショートカットランプレフィックス|Shortcut Filter Run Prefix]]の代わりに、[[フィルタ式|Filter Expression]]の[[ラン|Filter Run]]の前に置くことができます。 + +<$railroad text=""" +\start none +\end none +( +[[<":all"> |"All Filter Run Prefix"]] | +[[<":and"> |"And Filter Run Prefix"]] | +[[<":cascade"> /"v5.2.1"/ |"Cascade Filter Run Prefix"]] | +[[<":else"> |"Else Filter Run Prefix"]] | +[[<":except"> |"Except Filter Run Prefix"]] | +[[<":filter"> |"Filter Filter Run Prefix"]] | +[[<":intersection"> |"Intersection Filter Run Prefix"]] | +[[<":map"> /"v5.2.0"/ |"Map Filter Run Prefix"]] | +[[<":or"> |"Or Filter Run Prefix"]] | +[[<":reduce"> |"Reduce Filter Run Prefix"]] | +[[<":sort"> /"v5.2.0"/ |"Sort Filter Run Prefix"]] | +[[<":then"> /"v5.3.0"/ |"Then Filter Run Prefix"]]) [[run|"Filter Run"]] +"""/> + + +<<.tip "名前付きフィルタランプレフィックス`:filter`を、すべてのインプットタイトルにサブフィルタを適用し、サブフィルタから空の結果を返すタイトルを除外する[[filterオペレータ|filter Operator]]と比較します">> + +<<.tip "名前付きフィルタランプレフィックス`:reduce`を、サブフィルタを繰り返し適用してアイテムのリストを単一のアイテムに平坦化するために使用される[[reduceオペレータ|reduce Operator]]と比較します">> + +<<.tip """フィルタランプレフィックス`:reduce`、`:sort`、`:map`、`:filter`内では、変数<<.var currentTiddler>>は処理中のTiddlerのタイトルに設定されます。
          サブフィルタ外のcurrentTiddlerの値は、変数<<.var "..currentTiddler">>で使用できます <<.from-version "5.2.0">>""" >> + +参照: [[交換可能なフィルターランプレフィックス|Interchangeable Filter Run Prefixes]] diff --git a/editions/ja-JP/tiddlers/filters/syntax/Or Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Or Filter Run Prefix.tid new file mode 100644 index 0000000000..5bb7928dae --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Or Filter Run Prefix.tid @@ -0,0 +1,20 @@ +created: 20230318135743766 +from-version: 5.1.23 +modified: 20250417105150020 +original-modified: 20230322140708372 +rp-input: 前回のフィルタランからのすべてのタイトル +rp-output: アウトプットタイトルは主に、前回のフィルタランのアウトプットに[[重複排除して追加|Dominant Append]]されます。 +rp-purpose: Tiddlerセットの重複排除した結合 +tags: [[Named Filter Run Prefix]] +title: Or Filter Run Prefix +ja-title: orフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":or" | - ) +[["ラン"|"Filter Run Prefix"]] +"""/> + +:or プレフィックスはプレフィックスを全く使用しないのと同じです。[[フィルタランプレフィックスのショートカット|Shortcut Filter Run Prefix]]で`run`を参照してください diff --git a/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..2e006b52a9 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix (Examples).tid @@ -0,0 +1,29 @@ +created: 20211124151912931 +modified: 20250419111355942 +original-modified: 20230305125430544 +tags: [[Reduce Filter Run Prefix]] +title: Reduce Filter Run Prefix (Examples) +ja-title: reduceフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + +\define multiply-input() [multiply] + +次の例では、これらのデータTiddlerを使用します: + +
            +<$list filter="[tag[shopping]!has[draft.of]]"> +
          • +''<$link><$text text=<>/>'' quantity: <$text text={{!!quantity}}/>, price: <$text text={{!!price}}/> +
          • + +
          + +<<.operator-example 1 "[tag[shopping]] :reduce[get[quantity]add]">> +<<.operator-example 2 "[tag[shopping]] :reduce[get[price]multiply{!!quantity}add]">> +<<.operator-example 3 "[tag[shopping]] :reduce[compare:number:gt[0]thenaddsuffix[, ]addsuffixelse]" "最初の項目に対して他の項目とは異なる動作をさせるために``を使用します。これはあくまでもデモンストレーションです。このタスクを実行するには、[[joinオペレータ|join Operator]]を使うのがよいです">> +<<.operator-example 4 "[tag[non-existent]] :reduce[get[price]multiply{!!quantity}add]" "空のインプットは空のアウトプットを生成します">> +<<.operator-example 5 "[tag[non-existent]] :reduce[get[price]multiply{!!quantity}add] :else[[0]]" "インプットが空の場合に確実にアウトプットするために`:else`使用します">> + +<$macrocall $name=".tip" _="""[[reduceオペレータ|reduce Operator]]とは異なり、`:reduce`プレフィックスはaccumulatorの初期値を指定できないため、初期値は常に空(数学オペレータでは0として扱われます)になります。したがって`=1 =2 =3 :reduce[multiply]`は、6ではなく0が生成されます。accumulatorの初期値を指定する必要がある場合は、[[reduceオペレータ|reduce Operator]]を使用します。"""/> +<<.operator-example 6 "=1 =2 =3 :reduce[multiply]" "空の初期値は数学オペレータによって0として扱われます">> +<<.operator-example 7 "=1 =2 =3 +[reduce,[1]]" "正しい結果を得るためには初期値の設定が必要な場合があります">> \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix.tid new file mode 100644 index 0000000000..5d314b15bf --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Reduce Filter Run Prefix.tid @@ -0,0 +1,49 @@ +created: 20211124151912931 +from-version: 5.1.23 +modified: 20250417105804821 +original-modified: 20230710073305239 +rp-input: 前回のフィルタランからのすべてのフィルタアウトプット +rp-output: 累積された単一アイテム +rp-purpose: 各インプットタイトルにフィルタランを繰り返し適用して、前回までのすべてのフィルタアウトプットを単一の項目に置き換え +tags: [[Named Filter Run Prefix]] +title: Reduce Filter Run Prefix +ja-title: reduceフィルタランプレフィックス +type: text/vnd.tiddlywiki + + +<$railroad text=""" +\start none +\end none +( ":reduce" | - ) +[["ラン"|"Filter Run"]] +"""/> + + +前回のランからの各インプットタイトルは、順番にこのランに渡されます。このランへの以前の呼び出しの結果は、変数<<.var accumulator>>を介して次の呼び出しで使用できます。このランへの最後の呼び出しの結果がアウトプットとして返されます。典型的な使用法は、各インプットタイトルの特定のフィールドの値を合計することです。 + +上記のように、数式を各インプットタイトルに繰り返し適用して、これまでのすべてのフィルタアウトプットを1つの項目に置き換えます。 + +フィルタラン内では、次の変数を使用できます: + +* <<.var accumulator>> - 前回のフィルタランの結果 +* <<.var currentTiddler>> - インプットタイトル +* <<.var ..currentTiddler>> - フィルタラン外での変数`currentTiddler`の値。 <<.from-version "5.2.0">> +* <<.var index>> - 現在のリスト項目の数値インデックス(リストの最初の項目は0) +* <<.var revIndex>> - 現在のリスト項目の逆の数値インデックス(リストの最後の項目は0) +* <<.var length>> - インプットリストの長さの合計 + +<<.tip "名前付きフィルタランプレフィックス`:reduce`を、サブフィルタを繰り返し適用して項目リストを1つの項目に平坦化するために使用される[[reduceオペレータ|reduce Operator]]`:reduce`と比べてください。">> + +``` +[tag[shopping]] :reduce[get[quantity]add] +``` + +は以下と同等です: + +``` +\define num-items() [get[quantity]add] + +[tag[shopping]reduce] +``` + +[[reduceフィルタランプレフィックス(例)|Reduce Filter Run Prefix (Examples)]] \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Shortcut Filter Run Prefixes.tid b/editions/ja-JP/tiddlers/filters/syntax/Shortcut Filter Run Prefixes.tid new file mode 100644 index 0000000000..ca286b3e7b --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Shortcut Filter Run Prefixes.tid @@ -0,0 +1,30 @@ +created: 20230305131705188 +modified: 20250510102220175 +original-modified: 20230710074438655 +tags: [[Filter Run Prefix]] +title: Shortcut Filter Run Prefix +ja-title: ショートカットフィルタランプレフィックス +type: text/vnd.tiddlywiki + +ショートカットのプレフィックスはタイピングが速いため、上級ユーザーによく使用されますが、経験の浅いユーザーには読みにくいという欠点があります。そのため、より詳細な情報を持つ[[名前付きプレフィックス|Named Filter Run Prefix]]が作成されました。ショートカットと名前付きフィルタランプレフィックスは、以下の表に示すように互換性があります。 + +<$railroad text=""" +\start none +\end none +(-|:"+"|"-"|"~"|"=") +[["ラン"|"Filter Run"]] +"""/> + +ランに次の内容が含まれている場合: + +* プレフィックスが無い場合、アウトプットタイトルはフィルタのアウトプットに[[優先的に追加|Dominant Append]]されます + +* プレフィックス`+`は、前回までのフィルタアウトプットをインプットとして受け取り、そのアウトプットはこれまでのすべてのフィルタアウトプットを<<.em "置き換え">>、次のランのインプットを形成します + +* プレフィックス`-`は、アウトプットタイトルがフィルタのアウトプットから<<.em 取り除か>>れます(そのようなTiddlerが存在する場合) + +* プレフィックス`~`は、フィルタアウトプットが空リストの場合、ランの結果のタイトルがフィルタアウトプットに[[優先的に追加|Dominant Append]]されます。フィルタアウトプットが空リストでない場合、ランは無視されます。<<.from-version "5.1.18">> + +* プレフィックス`=`は、アウトプットタイトルが重複排除されずにフィルタのアウトプットに追加されます。<<.from-version "5.1.20">> + +{{Interchangeable Filter Run Prefixes}} \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..8df6adb1a6 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix (Examples).tid @@ -0,0 +1,35 @@ +created: 20210428074912172 +modified: 20250420104606860 +original-modified: 20230315165343329 +tags: [[Sort Filter Run Prefix]] +title: Sort Filter Run Prefix (Examples) +ja-title: sortフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + +タイトルの長さで並べ替え: + +<<.operator-example 1 "[all[tiddlers]] :sort:number[length[]] +[limit[10]]">> + +タイトルの長さを逆順に並べ替え: + +<<.operator-example 2 "[all[tiddlers]] :sort:number:reverse[length[]] +[limit[10]]">> + +テキストの長さで並べ替え: + +<<.operator-example 3 "[all[tiddlers]] :sort:number[get[text]length[]] +[limit[10]]">> + +修正日の新しい順に並べ替え: + +<<.operator-example 4 "[tag[Field Operators]] :sort:date[get[modified]else[19700101]] +[limit[10]]">> + +タイトルで並べ替え: +<<.operator-example 5 "[tag[Field Operators]] :sort:string:casesensitive[get[caption]] +[limit[10]]">> + +タイトルの逆順に並べ替え: +<<.operator-example 6 "[tag[Field Operators]] :sort:string:casesensitive,reverse[get[caption]] +[limit[10]]">> + +大文字と小文字を区別してテキストとして並べ替え: +<<.operator-example 7 "Apple Banana Orange Grapefruit guava DragonFruit Kiwi apple orange :sort:string:casesensitive[{!!title}]">> + +大文字と小文字を区別せずにテキストとして並べ替え: +<<.operator-example 8 "Apple Banana Orange Grapefruit guava DragonFruit Kiwi apple orange :sort:string:caseinsensitive[{!!title}]">> diff --git a/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix.tid new file mode 100644 index 0000000000..7dce33f71b --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Sort Filter Run Prefix.tid @@ -0,0 +1,61 @@ +created: 20210428083929749 +from-version: 5.2.0 +modified: 20250419111702297 +original-modified: 20240717120111427 +rp-input: 前回までのすべてのランのフィルタアウトプット +rp-output: アウトプットタイトルは、以前のフィルタランのアウトプットを置き換え +rp-purpose: 各項目に対して実行されたこのフィルタの評価結果によってインプットタイトルを並べ替え +rp-suffix: :sortフィルタランプレフィックスはリッチサフィックスを使用します。詳細については以下を参照 +rp-suffix-name: S +tags: [[Named Filter Run Prefix]] +title: Sort Filter Run Prefix +ja-title: sortフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +( ":sort" ) +( ":" ) +( : "string" | "alphanumeric" | "number" | "integer" | "version" | "date" ) +( ":" ) +{ + ( + ( + ( : "caseinsensitive" /"stringとalphanumericには必須"/ | "casesensitive" /"stringとalphanumericには必須"/) + | "reverse" /"オプション"/ + ) + ) + +"," +} +[["ラン"|"Filter Run"]] +"""/> + +前回のランからインプットされた各タイトルは、今回のランに順番に渡されます。フィルタランは、インプットタイトルをソートに必要な形式に変換します。例えば、フィルタラン`[length[]]`は各インプットタイトルをその長さを表す数値に変換し、インプットタイトルを長さに基づいてソートします。 + +フィルタラン内では、<<.var currentTiddler>>変数が処理中のTiddlerのタイトルに設定されていることに注意してください。これにより、`:sort:number[{!!value}divide{!!cost}]`のようなフィルタランを計算に使用できます。ラン外の<<.var currentTiddler>>の値は、<<.var "..currentTiddler">>変数で使用できます。 + +`:sort` <<.place S>>フィルタランプレフィックスでは、複数のサフィックスを許可する拡張構文が使用されます。その一部は必須です: + +``` +:sort::[...filter run...] + +``` + +* ''type'': 必須。項目の比較方法を決定し、''string''、''alphanumeric''、''number''、''integer''、''version''、''date''のいずれかになります。 + +* ''flaglist'': 次のフラグのコンマ区切りリスト: + +** ''casesensitive'' または ''caseinsensitive'' (typeが`string`や`alphanumeric`のとき必須)。 +*** フラグがない場合、デフォルトは: //caseinsensitive// です。 +*** 明確にするために、このパラメータは常に定義する必要があります。 + +** フィルター実行の順序を反転するには、''reverse''を使用します(オプション)。 + +<<.tip """`:sort`プレフィックス付きのフィルタランは、''渡された項目と同じ数の項目が返される''ことに注意してください。特に、[[getオペレータ|get Operator]]を使用してフィールドの値を取得する場合は、[[elseオペレータ|else Operator]]を使用してフィールド値が欠落するのを防ぐと便利です。例えば`...[get[myfield]else[default-value]]`。

          + +''missing''エントリは''ゼロ''または''空文字列''として扱われます。 + +参照: <<.olink sortsub>>オペレータ + +[[例|Sort Filter Run Prefix (Examples)]] \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/Then Filter Run Prefix (Examples).tid b/editions/ja-JP/tiddlers/filters/syntax/Then Filter Run Prefix (Examples).tid new file mode 100644 index 0000000000..5d08134638 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/Then Filter Run Prefix (Examples).tid @@ -0,0 +1,53 @@ +created: 20230617183745774 +modified: 20250504103912315 +original-modified: 20230617183745774 +tags: [[Then Filter Run Prefix]] +title: Then Filter Run Prefix (Examples) +ja-title: thenフィルタランプレフィックス(例) +type: text/vnd.tiddlywiki + + +!! 条件実行 + +<<.op :then>>フィルタランプレフィックスを使用すると、ネストした[[ListWidget]]や[[WikiText内のマクロ定義|Macro Definitions in WikiText]]の必要性を回避できます。 + +<$macrocall $name='wikitext-example-without-html' +src="""<$edit-text field="search" placeholder="Search title"/> + +<$let searchTerm={{!!search}}> +<$list filter="[minlength[3]] :then[!is[system]search:title]" template="$:/core/ui/ListItemTemplate"/> +"""/> + + +!! 条件(サブ)フィルタ + +<<.op :then>>フィルターランプレフィックスを<<.op :else>>プレフィックスと組み合わせて条件フィルタを作成できます。この例では、<<.var searchSubfilter>>内の検索に使用されるフィールドは[[$:/temp/searchFields]]の値に依存し、<<.var sortSubfilter>>による並べ替え順序は[[$:/temp/searchSort]]の値に依存します。これらのTiddlerの値を設定するには、チェックボックスを使用します。 + +<<.tip "サブフィルタ内の各フィルタランは、<<.olink subfilter>>オペレータのインプットをインプットとして受け取ることに注意してください">> + +<<.olink then>>と<<.olink else>>オペレータはサブフィルタを呼び出したり追加のフィルタステップを実行できないため、このようなアプリケーションには使用できません。 + +<$macrocall $name='wikitext-example-without-html' +src="""<$checkbox tiddler="$:/temp/searchSort" + field="text" + checked="chrono" unchecked="alpha" default="alpha"> + 時系列順に並べ替え(新しい順) +
          +<$checkbox tiddler="$:/temp/searchFields" + field="text" + checked="title" unchecked="default" default="title"> + <<.field title>>のみを検索 +

          +<$let searchSubfilter="[{$:/temp/searchFields}match[default]] :then[search[prefix]] :else[search:title[prefix]]" + sortSubfilter="[{$:/temp/searchSort}match[chrono]] :then[!nsort[modified]] :else[sort[title]]" + limit=10 > + <$list filter="[all[tiddlers]!is[system]subfiltersubfilterfirst]"> + <$link/> (<$text text={{{ [{!!modified}format:date[YYYY-0MM-0DD]] }}} />)
          + + <$list filter="[all[tiddlers]!is[system]subfilterrestcount[]]"> + ... and <> more. + +"""/> + +時系列順に並べ替える(新しい順) +検索titleのみ \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/filters/syntax/then Filter Run Prefix.tid b/editions/ja-JP/tiddlers/filters/syntax/then Filter Run Prefix.tid new file mode 100644 index 0000000000..4a483b2b75 --- /dev/null +++ b/editions/ja-JP/tiddlers/filters/syntax/then Filter Run Prefix.tid @@ -0,0 +1,41 @@ +created: 20210618133745003 +from-version: 5.3.0 +modified: 20250423104147235 +original-modified: 20230710074225410 +rp-input: <<.olink すべて>>のTiddlerタイトル +rp-output: フィルタランのアウトプットは、空のリストでない限り、前回までのランのアウトプットを置き換えます(以下を参照)。 +rp-purpose: フィルタランへのインプットをそのアウトプットで置き換え、インプットがある場合にのみランを評価 +search: +tags: [[Named Filter Run Prefix]] +title: Then Filter Run Prefix +ja-title: thenフィルタランプレフィックス +type: text/vnd.tiddlywiki + +<$railroad text=""" +\start none +\end none +":then" +[["ラン"|"Filter Run"]] +"""/> + +<<.op :then>>フィルターランプレフィックスは、前回までのすべてのフィルタランの結果をそのアウトプットに置き換えるために使用されます。 + +前回までのすべてのランの結果が空のリストの場合、<<.op :then>>プレフィックス付きフィルタランは評価されません。 + +<<.op :then>>プレフィックス付きフィルタランのアウトプット自体が空のリストである場合、前回までのすべてのフィルタランの結果は変更されずに渡されます。 + +<<.tip "空の文字列項目が1つ含まれるリストは空のリストではないことに注意してください。">> + +!! <<.op :then>>ランプレフィックスと<<.olink then>>オペレータの比較 + +<<.op then>>オペレータと<<.op :then>>プレフィックス付きフィルタランの主な違いは、オペレータはインプット[[タイトルリスト|Title List]]の//各項目//をそのパラメータで置き換えるのに対し、<<.op :then>>オペレータは//インプットリスト全体//をそのラン結果で置き換える点です。 + +|doc-op-comparison tc-center|k +| !<<.op :then>>フィルタランプレフィックス | !<<.op then>>オペレータ | +|^<<.operator-example m1-1 "[tag[WikiText]] :then[[true]]">>|^<<.operator-example m1-2 "[tag[WikiText]then[true]]">>

          これらを同等にするには、追加のフィルタステップを追加します:

          <<.operator-example m1-3 "[tag[WikiText]count[]compare:number:gt[0]then[true]]">>| + + +[[thenフィルタランプレフィックス(例)|Then Filter Run Prefix (Examples)]] + +参照: [[elseフィルタランプレフィックス|Else Filter Run Prefix]] | [[thenオペレータ|then Operator]] と [[elseオペレータ|else Operator]] + From 2871bd543b5b6914c8cf395b2771340cd9ff8c05 Mon Sep 17 00:00:00 2001 From: Mohammad Rahmani <830394+kookma@users.noreply.github.com> Date: Tue, 3 Jun 2025 19:59:42 +0330 Subject: [PATCH 095/458] Update WidgetMessage_ tm-close-window.tid (#9062) --- .../tiddlers/messages/WidgetMessage_ tm-close-window.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid index 07b69e5b94..954e05ca47 100644 --- a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid @@ -1,4 +1,4 @@ -caption: tm-open-window +caption: tm-close-window created: 20220228140417116 modified: 20230723220539648 tags: Messages From f1b33c02f7ef0839c63e0c10d14ca3ecd4737826 Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Tue, 3 Jun 2025 12:30:40 -0400 Subject: [PATCH 096/458] Fixed substitute attributes to allow more variables (#9059) --- core/modules/wiki.js | 2 +- .../tiddlers/tests/data/widgets/SubstitutedAttributes.tid | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 878b34eb25..fe7f115b95 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1173,7 +1173,7 @@ exports.getSubstitutedText = function(text,widget,options) { output = $tw.utils.replaceString(output,new RegExp("\\$" + $tw.utils.escapeRegExp(substitute.name) + "\\$","mg"),substitute.value); }); // Substitute any variable references with their values - return output.replace(/\$\(([^\)\$]+)\)\$/g, function(match,varname) { + return output.replace(/\$\((.+?)\)\$/g, function(match,varname) { return widget.getVariable(varname,{defaultValue: ""}) }); }; diff --git a/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid b/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid index 9d5538573e..cdaee17d18 100644 --- a/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid +++ b/editions/test/tiddlers/tests/data/widgets/SubstitutedAttributes.tid @@ -7,9 +7,9 @@ title: Output \whitespace trim <$set name="var with spaces" value="spaces"> -<$let project="TiddlyWiki" disabled="true" var-with-dashes="dashes"> +<$let project="TiddlyWiki" disabled="true" $tiddler="Getting Started" var-with-dashes="dashes">
          +${ [[Hello]addsuffix[There]] }$` attrib=`myvalue` otherattrib=`$(1)$` blankattrib=`` quoted="here" disabled=```$(disabled)$``` dollar=`p-$($tiddler)$-s` dashes=`$(var-with-dashes)$` spaces=`$(var with spaces)$`>
          @@ -18,4 +18,4 @@ ${ [[Hello]addsuffix[There]] }$` attrib=`myvalue` otherattrib=`$(1)$` blankattri title: ExpectedResult

          \ No newline at end of file +HelloThere" dashes="dashes" disabled="true" dollar="p-Getting Started-s" otherattrib="" quoted="here" spaces="spaces">

          \ No newline at end of file From ff9e92b1cc8a6769bc1df095a2cab09795518342 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Tue, 3 Jun 2025 18:31:38 +0200 Subject: [PATCH 097/458] fix duplicated code introduced with PR #7596 (#9057) --- core/modules/widgets/list.js | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index f86d2d5719..96ea44db16 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -519,36 +519,3 @@ ListJoinWidget.prototype.render = function() {} ListJoinWidget.prototype.refresh = function() { return false; } exports["list-join"] = ListJoinWidget; - -/* -Make <$list-template> and <$list-empty> widgets that do nothing -*/ -var ListTemplateWidget = function(parseTreeNode,options) { - // Main initialisation inherited from widget.js - this.initialise(parseTreeNode,options); -}; -ListTemplateWidget.prototype = new Widget(); -ListTemplateWidget.prototype.render = function() {} -ListTemplateWidget.prototype.refresh = function() { return false; } - -exports["list-template"] = ListTemplateWidget; - -var ListEmptyWidget = function(parseTreeNode,options) { - // Main initialisation inherited from widget.js - this.initialise(parseTreeNode,options); -}; -ListEmptyWidget.prototype = new Widget(); -ListEmptyWidget.prototype.render = function() {} -ListEmptyWidget.prototype.refresh = function() { return false; } - -exports["list-empty"] = ListEmptyWidget; - -var ListJoinWidget = function(parseTreeNode,options) { - // Main initialisation inherited from widget.js - this.initialise(parseTreeNode,options); -}; -ListJoinWidget.prototype = new Widget(); -ListJoinWidget.prototype.render = function() {} -ListJoinWidget.prototype.refresh = function() { return false; } - -exports["list-join"] = ListJoinWidget; From 05db1bcb2c7cc6a66f435ec493cc8fee7830f1ab Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Tue, 3 Jun 2025 18:32:06 +0200 Subject: [PATCH 098/458] fix type of preferGlobal parameter (#9056) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef67ee1cec..d6020df52a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tiddlywiki", - "preferGlobal": "true", + "preferGlobal": true, "version": "5.3.7-prerelease", "author": "Jeremy Ruston ", "description": "a non-linear personal web notebook", From 8837a0f4050328b60645cbfeae651d279ed220b0 Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Tue, 3 Jun 2025 12:33:34 -0400 Subject: [PATCH 099/458] Minor improvement to filter code (#9054) --- core/modules/filters.js | 4 ++-- editions/test/tiddlers/tests/test-filters.js | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/modules/filters.js b/core/modules/filters.js index 321f5a2114..213268b1a0 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -248,8 +248,7 @@ exports.compileFilter = function(filterString) { // Create a function for the chain of operators in the operation var operationSubFunction = function(source,widget) { var accumulator = source, - results = [], - currTiddlerTitle = widget && widget.getVariable("currentTiddler"); + results = []; $tw.utils.each(operation.operators,function(operator) { var operands = [], operatorFunction; @@ -265,6 +264,7 @@ exports.compileFilter = function(filterString) { } $tw.utils.each(operator.operands,function(operand) { if(operand.indirect) { + var currTiddlerTitle = widget && widget.getVariable("currentTiddler"); operand.value = self.getTextReference(operand.text,"",currTiddlerTitle); } else if(operand.variable) { var varTree = $tw.utils.parseFilterVariable(operand.text); diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 96100e2f7d..4ba8a849ed 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -1139,6 +1139,15 @@ Tests the filtering mechanism. // Non string properties should get toStringed. expect(wiki.filterTiddlers("[[$:/core/modules/commands/init.js]moduleproperty[info]]").join(" ")).toBe('{"name":"init","synchronous":true}'); }); + + it("should minimize unnecessary variable lookup", function() { + var widget = wiki.makeWidget(); + var getVar = spyOn(widget, "getVariableInfo").and.callThrough(); + expect(wiki.filterTiddlers("[all[]prefix[anything]]", widget).length).toBe(0); + // We didn't use any indirect operands or variables. + // No variable lookup should have occurred. + expect(getVar).not.toHaveBeenCalled(); + }); } }); From 0cb7f0ead069066c4a92485c4b6b14f023f32f66 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 3 Jun 2025 17:35:37 +0100 Subject: [PATCH 100/458] Limits PR size check to core modifications Cherry picked from #9051 --- .github/workflows/pr-check-build-size.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-check-build-size.yml b/.github/workflows/pr-check-build-size.yml index 77450a71f0..3f7cb7bf78 100644 --- a/.github/workflows/pr-check-build-size.yml +++ b/.github/workflows/pr-check-build-size.yml @@ -2,6 +2,11 @@ name: Calculate PR build size on: pull_request_target: types: [opened, reopened, synchronize] + paths: + - 'boot/**' + - 'core/**' + - 'themes/snowwhite/**' + - 'themes/vanilla/**' jobs: calculate-build-size: @@ -19,7 +24,7 @@ jobs: with: pr_number: ${{ github.event.pull_request.number }} repo: ${{ github.repository }} - base_ref: ${{ github.base_ref }} + base_ref: ${{ github.event.pull_request.base.ref }} github_token: ${{ secrets.GITHUB_TOKEN }} mode: size:calc From f724d1df4f58bdbc518d5dc011a96d666da64edd Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 6 Jun 2025 12:43:01 +0100 Subject: [PATCH 101/458] Update release note --- editions/prerelease/tiddlers/Release 5.3.7.tid | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.3.7.tid b/editions/prerelease/tiddlers/Release 5.3.7.tid index 1644c93000..89fd6c2e6d 100644 --- a/editions/prerelease/tiddlers/Release 5.3.7.tid +++ b/editions/prerelease/tiddlers/Release 5.3.7.tid @@ -13,6 +13,7 @@ description: Under development ! Translation improvements +* Chinese * French * German * Japanese @@ -65,14 +66,25 @@ description: Under development * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8959">> problem with missing expandable arrow in [[toc-selective-expandable|Table-of-Contents Macros]] * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/5930">> the default value does not working for the CheckboxWidget if it is bound to an index in a data tiddler * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8970">> [[median Operator]] to order values as numbers, not strings +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8958">> red screen of embarrassment error with moduleproperty filter operator +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8946">> red screen of embarrassment when using a [[startup action|StartupActions]] with the [[now Macro]] +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9026">> some download file types not being specified +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9032">> configuration filter in $:/AdvancedSearch "Standard" tab +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9025">> stringification of derived fields for [[tiddlywiki.files Files]] ! Node.js Improvements * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8789">> incorrect redirect when combining a custom [[path-prefix|WebServer Parameter: path-prefix]] with manual HTTP Basic Authentication via the [[/login-basic|WebServer API: Force Basic Authentication Login]] endpoint +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/55dbce10f461c41240d2c6ee5a49bd6ed0edc15b">> crash loading large files + +! Performance Improvements + +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8952">> plugin editions to use the external core ! Developer Improvements -* +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8978">> Widget.prototype.addEventListener not overwriting old listeners +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/7596">> configurations for [[dprint|https://dprint.dev/]] and [[eslint|https://eslint.org/]] (partially reverted in [[#8987|https://github.com/TiddlyWiki/TiddlyWiki5/pull/8987]]) ! Acknowledgements From e824f7259145540215a9c338ac212a6f33e014ac Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 6 Jun 2025 13:03:09 +0100 Subject: [PATCH 102/458] Update v5.3.7 contributor list --- editions/prerelease/tiddlers/Release 5.3.7.tid | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/editions/prerelease/tiddlers/Release 5.3.7.tid b/editions/prerelease/tiddlers/Release 5.3.7.tid index 89fd6c2e6d..02e42fc1f3 100644 --- a/editions/prerelease/tiddlers/Release 5.3.7.tid +++ b/editions/prerelease/tiddlers/Release 5.3.7.tid @@ -91,15 +91,20 @@ description: Under development [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: <<.contributors """ +bobjtls DesignThinkerer flibbles galenhuntington +hoelzro IchijikuIchigo +jbaldus jeremyredhead jrbntt jryans +kookma Leilei332 linonetwo +matthewsalmon michaeljmcd opn pmario @@ -107,4 +112,5 @@ Rhys-T saqimtiaz well-noted xcazin +yaisog """>> From f4979dcdfd64cacc469d064c8e5347150199d918 Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Sun, 8 Jun 2025 23:16:55 +0800 Subject: [PATCH 103/458] Update ViewWidget.tid (#9082) --- editions/tw5.com/tiddlers/widgets/ViewWidget.tid | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/editions/tw5.com/tiddlers/widgets/ViewWidget.tid b/editions/tw5.com/tiddlers/widgets/ViewWidget.tid index ca5231d83c..5821420c00 100644 --- a/editions/tw5.com/tiddlers/widgets/ViewWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ViewWidget.tid @@ -55,6 +55,15 @@ The following example will view the core version of the tiddler [[$:/DefaultTidd '>> +To transclude a subtiddler with codeblock visual style, wrap it with pre, and set the mode and format attributes: + +< +<$view tiddler="$:/core" subtiddler="$:/core/ui/ControlPanel/ViewTemplateTags" mode=block format=text/> + + +'>> + ! Examples Given this [[Saturday]] example tiddler: From 45a3889164a2e53c6c82f13987739d8b9ef06744 Mon Sep 17 00:00:00 2001 From: Leilei332 Date: Sun, 8 Jun 2025 23:28:28 +0800 Subject: [PATCH 104/458] Add table wrapper for import dialog (#9076) --- core/ui/ImportListing.tid | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/ui/ImportListing.tid b/core/ui/ImportListing.tid index 4db1d4757f..cb3d096ed4 100644 --- a/core/ui/ImportListing.tid +++ b/core/ui/ImportListing.tid @@ -51,6 +51,7 @@ title: $:/core/ui/ImportListing \end \whitespace trim +
          @@ -129,3 +130,4 @@ title: $:/core/ui/ImportListing
          +
          From bedf9eb56f3b4919ff01b2130b0b08d586723dae Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Sun, 8 Jun 2025 17:30:55 +0200 Subject: [PATCH 105/458] Fix tag-pill editor style assignment (#8739) --- core/ui/EditTemplate/tags.tid | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index c8d4131feb..bbd3d301eb 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -17,9 +17,7 @@ tags: $:/tags/EditTemplate <$let backgroundColor=<> > > - style.color=<> - style.fill=<> - style.background-color=<> + style=`color:$(foregroundColor)$; fill:$(foregroundColor)$; background-color:$(backgroundColor)$;` > <$transclude tiddler=<>/> <$view field="title" format="text"/> From 05e08cd63b29b557753e82c31165e515b7d509ed Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Sun, 8 Jun 2025 17:32:02 +0200 Subject: [PATCH 106/458] update vanilla palette with resolvable values using current tooling (#9007) --- core/palettes/Vanilla.tid | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/palettes/Vanilla.tid b/core/palettes/Vanilla.tid index d981a485ef..2228fddf13 100644 --- a/core/palettes/Vanilla.tid +++ b/core/palettes/Vanilla.tid @@ -69,7 +69,7 @@ select-tag-foreground: sidebar-button-foreground: <> sidebar-controls-foreground-hover: #000000 sidebar-controls-foreground: #aaaaaa -sidebar-foreground-shadow: rgba(255,255,255, 0.8) +sidebar-foreground-shadow: #ffffff sidebar-foreground: #acacac sidebar-muted-foreground-hover: #444444 sidebar-muted-foreground: #c0c0c0 @@ -83,7 +83,7 @@ sidebar-tab-foreground: <> sidebar-tiddler-link-foreground-hover: #444444 sidebar-tiddler-link-foreground: #999999 site-title-foreground: <> -stability-stable: #008000 +stability-stable: #00b700 stability-experimental: #c07c00 stability-deprecated: #ff0000 stability-legacy: #0000ff @@ -138,13 +138,13 @@ wikilist-title: #666666 wikilist-title-svg: <> wikilist-url: #aaaaaa wikilist-button-open: #4fb82b -wikilist-button-open-hover: green +wikilist-button-open-hover: #009300 wikilist-button-reveal: #5778d8 -wikilist-button-reveal-hover: blue +wikilist-button-reveal-hover: #0000ff wikilist-button-remove: #d85778 -wikilist-button-remove-hover: red +wikilist-button-remove-hover: #ff0000 wikilist-toolbar-background: #d3d3d3 wikilist-toolbar-foreground: #888888 -wikilist-droplink-dragover: rgba(255,192,192,0.5) +wikilist-droplink-dragover: #ffc0c0 wikilist-button-background: #acacac -wikilist-button-foreground: #000000 +wikilist-button-foreground: #000000 \ No newline at end of file From 2c5c9cf033e1d0f27b7431bd2ef17ac8d021b262 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Sun, 8 Jun 2025 17:34:31 +0200 Subject: [PATCH 107/458] Sidebar-Tools tab new syntax and fix vertical spacing in story river (#8078) * sidebar-tools tab new syntax, fix formatting in story river * use transclude widget new $parameter syntax --- core/ui/SideBar/Tools.tid | 45 +++++++++++++----------------- themes/tiddlywiki/vanilla/base.tid | 3 +- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/core/ui/SideBar/Tools.tid b/core/ui/SideBar/Tools.tid index 8a123b1c79..a285ade5ab 100644 --- a/core/ui/SideBar/Tools.tid +++ b/core/ui/SideBar/Tools.tid @@ -2,31 +2,26 @@ title: $:/core/ui/SideBar/Tools tags: $:/tags/SideBar caption: {{$:/language/SideBar/Tools/Caption}} -\define lingo-base() $:/language/ControlPanel/ -\define config-title() -$:/config/PageControlButtons/Visibility/$(listItem)$ -\end +\whitespace trim + +\procedure lingo-base() $:/language/ControlPanel/ +\function config-title() [[$:/config/PageControlButtons/Visibility/$(listItem)$]substitute[]] <> <> -<$set name="tv-config-toolbar-icons" value="yes"> - -<$set name="tv-config-toolbar-text" value="yes"> - -<$set name="tv-config-toolbar-class" value=""> - -<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem"> - -
          encodeuricomponent[]addprefix[tc-btn-]] }}}> - -<$checkbox tiddler=<> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<>/> <$transclude tiddler=<> field="description"/> - -
          - - - - - - - - +<$let tv-config-toolbar-icons="yes" + tv-config-toolbar-text="yes" + tv-config-toolbar-class="" +> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem"> +
          encodeuricomponent[]addprefix[tc-btn-]] tc-sidebar-tools-item +[join[ ]] }}} + data-title=<> + > + <$checkbox tiddler=<> field="text" checked="show" unchecked="hide" default="show" class="tc-tiny-gap-right"/> + <$transclude $tiddler=<>/> + + <$transclude $tiddler=<> $field="description"/> + +
          + + diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index c795ad362e..4b83be514c 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -935,7 +935,8 @@ button.tc-btn-invisible.tc-remove-tag-button { font-weight: normal; } -.tc-sidebar-header .tc-sidebar-lists p { +.tc-sidebar-header .tc-sidebar-lists p, +.tc-sidebar-tools-item { margin-top: 3px; margin-bottom: 3px; } From 867b129e0ef9405fabb066b14531a02fd93ca1fe Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Sun, 8 Jun 2025 11:35:05 -0400 Subject: [PATCH 108/458] Simple colors for all testcase-accent-level-1 (#9053) --- core/palettes/BrightMute.tid | 1 + core/palettes/ContrastDark.tid | 1 + core/palettes/CupertinoDark.tid | 1 + core/palettes/DesertSand.tid | 1 + core/palettes/GruvBoxDark.tid | 1 + core/palettes/Nord.tid | 1 + core/palettes/Rocker.tid | 1 + core/palettes/SolarFlare.tid | 1 + core/palettes/SolarizedDark.tid | 1 + core/palettes/SolarizedLight.tid | 1 + core/palettes/Twilight.tid | 1 + 11 files changed, 11 insertions(+) diff --git a/core/palettes/BrightMute.tid b/core/palettes/BrightMute.tid index 2762a995de..e763150a78 100644 --- a/core/palettes/BrightMute.tid +++ b/core/palettes/BrightMute.tid @@ -85,6 +85,7 @@ table-footer-background: #a8a8a8 table-header-background: #f0f0f0 tag-background: #d5ad34 tag-foreground: #ffffff +testcase-accent-level-1: #b1b3e3 tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #888888 diff --git a/core/palettes/ContrastDark.tid b/core/palettes/ContrastDark.tid index 67552b30ef..ad2c5dbad2 100644 --- a/core/palettes/ContrastDark.tid +++ b/core/palettes/ContrastDark.tid @@ -85,6 +85,7 @@ table-footer-background: #a8a8a8 table-header-background: #f0f0f0 tag-background: #fff tag-foreground: #000 +testcase-accent-level-1: #144a8c tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #ddd diff --git a/core/palettes/CupertinoDark.tid b/core/palettes/CupertinoDark.tid index f13fc1e16d..80cd876f24 100644 --- a/core/palettes/CupertinoDark.tid +++ b/core/palettes/CupertinoDark.tid @@ -85,6 +85,7 @@ table-footer-background: <> table-header-background: <> tag-background: #48484A tag-foreground: #323232 +testcase-accent-level-1: #345173 tiddler-background: <> tiddler-border: transparent tiddler-controls-foreground-hover: <> diff --git a/core/palettes/DesertSand.tid b/core/palettes/DesertSand.tid index 12b06c948a..6b8646d282 100644 --- a/core/palettes/DesertSand.tid +++ b/core/palettes/DesertSand.tid @@ -95,6 +95,7 @@ table-footer-background: #8A8885 table-header-background: #B0AA98 tag-background: #706A58 tag-foreground: #E3D7B7 +testcase-accent-level-1: #b3adc9 tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #9D947B diff --git a/core/palettes/GruvBoxDark.tid b/core/palettes/GruvBoxDark.tid index 16ac22d65d..1d60546d70 100644 --- a/core/palettes/GruvBoxDark.tid +++ b/core/palettes/GruvBoxDark.tid @@ -100,6 +100,7 @@ table-footer-background: #665c54 table-header-background: #504945 tag-background: #d3869b tag-foreground: #282828 +testcase-accent-level-1: #456d88 tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #7c6f64 diff --git a/core/palettes/Nord.tid b/core/palettes/Nord.tid index 87e9189270..8143d44f56 100644 --- a/core/palettes/Nord.tid +++ b/core/palettes/Nord.tid @@ -100,6 +100,7 @@ table-footer-background: #2e3440 table-header-background: #2e3440 tag-background: #A3BE8C tag-foreground: #4C566A +testcase-accent-level-1: #455e7d tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: diff --git a/core/palettes/Rocker.tid b/core/palettes/Rocker.tid index c6693eb523..b608b2998a 100644 --- a/core/palettes/Rocker.tid +++ b/core/palettes/Rocker.tid @@ -85,6 +85,7 @@ table-footer-background: #a8a8a8 table-header-background: #f0f0f0 tag-background: #ffbb99 tag-foreground: #000 +testcase-accent-level-1: #9e9eff tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #888888 diff --git a/core/palettes/SolarFlare.tid b/core/palettes/SolarFlare.tid index ff6ddcf1db..b795140aa6 100644 --- a/core/palettes/SolarFlare.tid +++ b/core/palettes/SolarFlare.tid @@ -166,6 +166,7 @@ tab-divider: #d8d8d8 sidebar-tab-divider: <> table-border: #dddddd table-footer-background: #a8a8a8 +testcase-accent-level-1: #bec8cc tiddler-controls-foreground-hover: #888888 tiddler-controls-foreground-selected: #444444 tiddler-editor-border-image: #ffffff diff --git a/core/palettes/SolarizedDark.tid b/core/palettes/SolarizedDark.tid index 9338998e9f..ce73b1746e 100644 --- a/core/palettes/SolarizedDark.tid +++ b/core/palettes/SolarizedDark.tid @@ -98,6 +98,7 @@ table-footer-background: #073642 table-header-background: #073642 tag-background: #b58900 tag-foreground: #002b36 +testcase-accent-level-1: #073642 tiddler-background: #002b36 tiddler-border: #586e75 tiddler-controls-foreground: inherit diff --git a/core/palettes/SolarizedLight.tid b/core/palettes/SolarizedLight.tid index c01ff88218..226b861f27 100644 --- a/core/palettes/SolarizedLight.tid +++ b/core/palettes/SolarizedLight.tid @@ -98,6 +98,7 @@ table-footer-background: #eee8d5 table-header-background: #eee8d5 tag-background: #b58900 tag-foreground: #fdf6e3 +testcase-accent-level-1: #afc2db tiddler-background: #fdf6e3 tiddler-border: #93a1a1 tiddler-controls-foreground: inherit diff --git a/core/palettes/Twilight.tid b/core/palettes/Twilight.tid index d6b54673ad..bbd077218f 100644 --- a/core/palettes/Twilight.tid +++ b/core/palettes/Twilight.tid @@ -94,6 +94,7 @@ table-footer-background: rgba(0,0,0,.4) table-header-background: rgba(0,0,0,.1) tag-background: rgb(255, 201, 102) tag-foreground: rgb(25, 25, 25) +testcase-accent-level-1: rgb(13, 52, 99) tiddler-background: rgb(38, 38, 38) tiddler-border: rgba(240, 196, 117, 0.7) tiddler-controls-foreground: rgb(128, 128, 128) From 7b9153122cbe983cc0344c7b834139a140921efa Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 9 Jun 2025 13:15:20 +0100 Subject: [PATCH 109/458] Remove unneeded plugins from prerelease --- editions/prerelease/tiddlywiki.info | 4 ---- 1 file changed, 4 deletions(-) diff --git a/editions/prerelease/tiddlywiki.info b/editions/prerelease/tiddlywiki.info index c469dcf996..9b37efef3f 100644 --- a/editions/prerelease/tiddlywiki.info +++ b/editions/prerelease/tiddlywiki.info @@ -3,20 +3,16 @@ "plugins": [ "tiddlywiki/browser-sniff", "tiddlywiki/help", - "tiddlywiki/stacked-view", "tiddlywiki/powered-by-tiddlywiki", "tiddlywiki/internals", "tiddlywiki/highlight", "tiddlywiki/bibtex", - "tiddlywiki/savetrail", - "tiddlywiki/external-attachments", "tiddlywiki/dynaview", "tiddlywiki/dynannotate", "tiddlywiki/codemirror", "tiddlywiki/menubar", "tiddlywiki/jszip", "tiddlywiki/confetti", - "tiddlywiki/dynannotate", "tiddlywiki/tour" ], "themes": [ From 29f0a91f4bad09b3f06dd93db34f10cbdac5e365 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 9 Jun 2025 15:12:16 +0200 Subject: [PATCH 110/458] solarized light palette, adjust stability badges, download button, (#9020) --- core/palettes/SolarizedLight.tid | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/palettes/SolarizedLight.tid b/core/palettes/SolarizedLight.tid index 226b861f27..ce2354fb04 100644 --- a/core/palettes/SolarizedLight.tid +++ b/core/palettes/SolarizedLight.tid @@ -27,7 +27,7 @@ diff-insert-foreground: #eee8d5 diff-invisible-background: #b58900 diff-invisible-foreground: #eee8d5 dirty-indicator: #dc322f -download-background: #859900 +download-background: #00910b download-foreground: #eee8d5 dragger-background: #eee8d5 dragger-foreground: #657b83 @@ -56,6 +56,7 @@ modal-footer-background: #eee8d5 modal-footer-border: #93a1a1 modal-header-border: #93a1a1 muted-foreground: #586e75 +network-activity-foreground: <> notification-background: #fdf6e3 notification-border: #93a1a1 page-background: #eee8d5 @@ -81,10 +82,10 @@ sidebar-tab-foreground-selected: #586e75 sidebar-tiddler-link-foreground: #2aa198 sidebar-tiddler-link-foreground-hover: #002b36 site-title-foreground: #d33682 -stability-deprecated: #dc322f -stability-experimental: #b58900 -stability-legacy: #268bd2 -stability-stable: #859900 +stability-deprecated: #d21a1a +stability-experimental: #771e00 +stability-legacy: #227abb +stability-stable: #576400 static-alert-foreground: #586e75 tab-background: #eee8d5 tab-background-selected: #fdf6e3 From c25df5ce50e469f20d506fd81d58ddc8fb5da9c2 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 9 Jun 2025 15:12:39 +0200 Subject: [PATCH 111/458] =?UTF-8?q?solarized-dark=20palette,=20adjust=20st?= =?UTF-8?q?ability=20badges,=20ext=20link=20on=20hover,=20d=E2=80=A6=20(#9?= =?UTF-8?q?019)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * solarized-dark palette, adjust stability badges, ext link on hover, download background contrast * solarized-dark palette, adjust stability badges, ext link on hover, download background contrast * revert download button colour change --- core/palettes/SolarizedDark.tid | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/palettes/SolarizedDark.tid b/core/palettes/SolarizedDark.tid index ce73b1746e..2069797f16 100644 --- a/core/palettes/SolarizedDark.tid +++ b/core/palettes/SolarizedDark.tid @@ -40,7 +40,7 @@ external-link-background: inherit external-link-background-hover: inherit external-link-background-visited: inherit external-link-foreground: #268bd2 -external-link-foreground-hover: +external-link-foreground-hover: #1d669c external-link-foreground-visited: #268bd2 footnote-target-background: #073642 foreground: #839496 @@ -56,6 +56,7 @@ modal-footer-background: #073642 modal-footer-border: #586e75 modal-header-border: #586e75 muted-foreground: #93a1a1 +network-activity-foreground: <> notification-background: #002b36 notification-border: #586e75 page-background: #073642 @@ -81,10 +82,10 @@ sidebar-tab-foreground-selected: #93a1a1 sidebar-tiddler-link-foreground: #2aa198 sidebar-tiddler-link-foreground-hover: #eee8d5 site-title-foreground: #d33682 -stability-deprecated: #dc322f -stability-experimental: #b58900 -stability-legacy: #268bd2 -stability-stable: #859900 +stability-deprecated: #aa1a9f +stability-experimental: #806000 +stability-legacy: #1d669c +stability-stable: #00df11 static-alert-foreground: #93a1a1 tab-background: #073642 tab-background-selected: #002b36 @@ -126,4 +127,4 @@ toolbar-new-button: #839496 toolbar-options-button: #839496 toolbar-save-button: inherit untagged-background: #586e75 -very-muted-foreground: #586e75 +very-muted-foreground: #586e75 \ No newline at end of file From a3b8c7c5868c7ff4e4e003a27ff430718de964db Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Mon, 9 Jun 2025 15:12:49 +0200 Subject: [PATCH 112/458] nord palette, improved accessibility contrast, make editor border visible (#9016) * nord palette, improved accessibility contrast, make editor border visible * revert download-background --- core/palettes/Nord.tid | 47 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/core/palettes/Nord.tid b/core/palettes/Nord.tid index 8143d44f56..b662c2bfad 100644 --- a/core/palettes/Nord.tid +++ b/core/palettes/Nord.tid @@ -7,15 +7,15 @@ type: application/x-tiddler-dictionary license: MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md alert-background: #D08770 -alert-border: #D08770 -alert-highlight: #B48EAD -alert-muted-foreground: #4C566A +alert-border: <> +alert-highlight: #a3436f +alert-muted-foreground: #495367 background: #3b4252 blockquote-bar: <> button-foreground: <> code-background: #2E3440 code-border: #2E3440 -code-foreground: #BF616A +code-foreground: #c7747c diff-delete-background: #BF616A diff-delete-foreground: <> diff-equal-background: @@ -48,31 +48,32 @@ menubar-background: #2E3440 menubar-foreground: #d8dee9 message-background: #2E3440 message-border: #2E3440 -message-foreground: #547599 -modal-backdrop: <> +message-foreground: #6485aa +modal-backdrop: #435678 modal-background: <> modal-border: #3b4252 modal-footer-background: #3b4252 modal-footer-border: #3b4252 modal-header-border: #3b4252 -muted-foreground: #4C566A +muted-foreground: #687693 +network-activity-foreground: <> notification-background: <> notification-border: #EBCB8B page-background: #2e3440 pre-background: #2E3440 pre-border: #2E3440 -primary: #5E81AC +primary: #7b98bb select-tag-background: #3b4252 select-tag-foreground: <> -selection-background: #5E81AC +selection-background: #52749e selection-foreground: <> sidebar-button-foreground: <> sidebar-controls-foreground-hover: #D8DEE9 -sidebar-controls-foreground: #4C566A +sidebar-controls-foreground: #5e6a84 sidebar-foreground-shadow: transparent sidebar-foreground: #D8DEE9 -sidebar-muted-foreground-hover: #4C566A -sidebar-muted-foreground: #4C566A +sidebar-muted-foreground-hover: #9fa8bb +sidebar-muted-foreground: #6c7b97 sidebar-tab-background-selected: #ECEFF4 sidebar-tab-background: #4C566A sidebar-tab-border-selected: <> @@ -83,17 +84,17 @@ sidebar-tab-foreground: <> sidebar-tiddler-link-foreground-hover: #A3BE8C sidebar-tiddler-link-foreground: #81A1C1 site-title-foreground: <> -stability-deprecated: #bf616a -stability-experimental: #d08770 -stability-legacy: #88c0d0 -stability-stable: #a3be8c +stability-deprecated: #ff595e +stability-experimental: #f29d00 +stability-legacy: #2ddbca +stability-stable: #04ff04 static-alert-foreground: #B48EAD tab-background-selected: #ECEFF4 tab-background: #4C566A tab-border-selected: #4C566A -tab-border: #4C566A +tab-border: #5c6883 tab-divider: #4C566A -tab-foreground-selected: #4C566A +tab-foreground-selected: #6c7a97 tab-foreground: #D8DEE9 table-border: #4C566A table-footer-background: #2e3440 @@ -105,18 +106,18 @@ tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: tiddler-controls-foreground-selected: #EBCB8B -tiddler-controls-foreground: #4C566A +tiddler-controls-foreground: #5e6a84 tiddler-editor-background: #2e3440 tiddler-editor-border-image: #2e3440 -tiddler-editor-border: #3b4252 +tiddler-editor-border: #232732 tiddler-editor-fields-even: #2e3440 -tiddler-editor-fields-odd: #2e3440 +tiddler-editor-fields-odd: #424a5b tiddler-info-background: #2e3440 tiddler-info-border: #2e3440 tiddler-info-tab-background: #2e3440 tiddler-link-background: <> tiddler-link-foreground: <> -tiddler-subtitle-foreground: #4C566A +tiddler-subtitle-foreground: #5c6881 tiddler-title-foreground: #81A1C1 toolbar-new-button: toolbar-options-button: @@ -139,4 +140,4 @@ wikilist-button-open-hover: #A3BE8C wikilist-button-reveal: #81A1C1 wikilist-button-reveal-hover: #81A1C1 wikilist-button-remove: #B48EAD -wikilist-button-remove-hover: #B48EAD +wikilist-button-remove-hover: #B48EAD \ No newline at end of file From dae6ae85ca84c029da9b5c52b643a2bb3035a2bf Mon Sep 17 00:00:00 2001 From: s793016 Date: Wed, 11 Jun 2025 04:43:23 +0800 Subject: [PATCH 113/458] Add CLA signature for s793016 (#9089) --- licenses/cla-individual.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 28ebe9d1f7..7e6f98a62a 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -616,4 +616,6 @@ Galen Huntington, @galenhuntington, 2025/01/19 Matthew Salmon, @matthewsalmon, 2025/04/24 -@jbaldus, 2025/05/28 \ No newline at end of file +@jbaldus, 2025/05/28 + +Wu Peiyuan, @s793016, 2025/06/10 From e1d6b4863cb57e53356a21c6458fe208ca00a101 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Tue, 10 Jun 2025 22:46:15 +0200 Subject: [PATCH 114/458] ContrastDark, values resolvable, general improved contrast (#9009) --- core/palettes/ContrastDark.tid | 59 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/core/palettes/ContrastDark.tid b/core/palettes/ContrastDark.tid index ad2c5dbad2..cb40e015b1 100644 --- a/core/palettes/ContrastDark.tid +++ b/core/palettes/ContrastDark.tid @@ -5,11 +5,11 @@ description: High contrast and unambiguous (dark version) tags: $:/tags/Palette type: application/x-tiddler-dictionary -alert-background: #f00 +alert-background: #ff0000 alert-border: <> alert-highlight: <> -alert-muted-foreground: #800 -background: #000 +alert-muted-foreground: #880000 +background: #000000 blockquote-bar: <> button-background: <> button-foreground: <> @@ -17,24 +17,24 @@ button-border: <> code-background: <> code-border: <> code-foreground: <> -dirty-indicator: #f00 -download-background: #080 +dirty-indicator: #ff0000 +download-background: #48ff48 download-foreground: <> dragger-background: <> dragger-foreground: <> dropdown-background: <> dropdown-border: <> -dropdown-tab-background-selected: <> -dropdown-tab-background: <> -dropzone-background: rgba(0,200,0,0.7) +dropdown-tab-background-selected: #868686 +dropdown-tab-background: #515151 +dropzone-background: #1aff1a external-link-background-hover: inherit external-link-background-visited: inherit external-link-background: inherit external-link-foreground-hover: inherit -external-link-foreground-visited: #00a -external-link-foreground: #00e +external-link-foreground-visited: #5353ff +external-link-foreground: #9595ff footnote-target-background: #4c4c4c -foreground: #fff +foreground: #ffffff highlight-background: #ffff00 highlight-foreground: #000000 message-background: <> @@ -52,11 +52,11 @@ notification-border: <> page-background: <> pre-background: <> pre-border: <> -primary: #00f +primary: #8a8aff select-tag-background: select-tag-foreground: sidebar-button-foreground: <> -sidebar-controls-foreground-hover: <> +sidebar-controls-foreground-hover: #ffff00 sidebar-controls-foreground: <> sidebar-foreground-shadow: rgba(0,0,0, 0) sidebar-foreground: <> @@ -72,6 +72,10 @@ sidebar-tab-foreground: <> sidebar-tiddler-link-foreground-hover: <> sidebar-tiddler-link-foreground: <> site-title-foreground: <> +stability-stable: #00f400 +stability-experimental: #ffaf1c +stability-deprecated: #ff2b2b +stability-legacy: #ceceff static-alert-foreground: #aaaaaa tab-background-selected: <> tab-background: <> @@ -81,15 +85,15 @@ tab-divider: <> tab-foreground-selected: <> tab-foreground: <> table-border: #dddddd -table-footer-background: #a8a8a8 -table-header-background: #f0f0f0 -tag-background: #fff -tag-foreground: #000 +table-footer-background: #444444 +table-header-background: #444444 +tag-background: #ffffff +tag-foreground: #000000 testcase-accent-level-1: #144a8c tiddler-background: <> tiddler-border: <> tiddler-controls-foreground-hover: #ddd -tiddler-controls-foreground-selected: #fdd +tiddler-controls-foreground-selected: #ae0000 tiddler-controls-foreground: <> tiddler-editor-background: <> tiddler-editor-border-image: <> @@ -103,14 +107,15 @@ tiddler-link-background: <> tiddler-link-foreground: <> tiddler-subtitle-foreground: <> tiddler-title-foreground: <> -toolbar-new-button: -toolbar-options-button: -toolbar-save-button: -toolbar-info-button: -toolbar-edit-button: -toolbar-close-button: -toolbar-delete-button: -toolbar-cancel-button: -toolbar-done-button: +toolbar-new-button: +toolbar-options-button: +toolbar-save-button: +toolbar-info-button: +toolbar-edit-button: +toolbar-close-button: +toolbar-delete-button: +toolbar-cancel-button: +toolbar-done-button: untagged-background: <> very-muted-foreground: #888888 +network-activity-foreground: <> \ No newline at end of file From 75e89a150d147438385ea0f8256d944bca1c6489 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 12 Jun 2025 09:52:10 +0100 Subject: [PATCH 115/458] New tagline for HelloThere See https://talk.tiddlywiki.org/t/lets-brainstorm-a-name-for-the-next-version-of-tiddlywiki/3378/211 --- .../tiddlers/hellothere/HelloThere.tid | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index bbbec39f0d..511b638184 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -6,7 +6,27 @@ tags: Welcome title: HelloThere type: text/vnd.tiddlywiki -!!.tc-hero-heading ''Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information'' +

          +Make More of Your Notes with ~TiddlyWiki +

          + +

          +''Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information'' +

          Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or novel|"TiddlyWiki for Scholars" by Alberto Molina]], or to organise your wedding. Record every thought that crosses your brain, or build a flexible and responsive website. From cc1a01c08f4ac76321475c4bb39a12eb0f475669 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Jun 2025 11:36:57 +0100 Subject: [PATCH 116/458] Update release note --- editions/prerelease/tiddlers/Release 5.3.7.tid | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.3.7.tid b/editions/prerelease/tiddlers/Release 5.3.7.tid index 02e42fc1f3..5a82d2a44e 100644 --- a/editions/prerelease/tiddlers/Release 5.3.7.tid +++ b/editions/prerelease/tiddlers/Release 5.3.7.tid @@ -23,7 +23,8 @@ description: Under development ! Widget Improvements -* +* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8816">> 'disabled' attribute to SelectWidget and BrowseWidget +* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8819">> 'tabindex' attribute to BrowseWidget, RangeWidget, CheckboxWidget and RadioWidget ! Filter Improvements @@ -32,19 +33,27 @@ description: Under development ! Usability Improvements * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8783"> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/commit/028c80782d105beb90f5d58a7f22e865c7e8c6f4">>) [[Hidden Setting: Default Type for Missing Tiddlers]] +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8837">> [[incorrect|https://localizejs.com/articles/why-using-flag-icons-can-confuse-your-users/]] use of national flags to represent languages +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8078">> vertical spacing of sidebar "Tools" tab when displayed in the story river, and add some utility CSS classes + +! Palette Improvements + * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8661">> DiffTextWidget colours to several core palettes * <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8807">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8911">>) Flexoki palette with additional colours -* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8837">> [[incorrect|https://localizejs.com/articles/why-using-flag-icons-can-confuse-your-users/]] use of national flags to represent languages +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9007">> Vanilla palette with resolvable #RRGGBB values +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9053">> test case palette entries to the remaining core palettes +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9020">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9020">>) ~SolarizedLight and ~SolarizedDark palettes to improve readability of stability badges and the download button +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9016">> Nord palette to improve accessibility and make the editor border visible +* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9009">> ~ContrastDark palette to improve accessibility ! Hackability Improvements * <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8768">> several macros such as [[colour-picker Macro]], [[dumpvariables Macro]], [[image-picker Macro]], [[translink Macro]], [[tree Macro]] and [[list-links-draggable Macro]] to use the newer syntax * <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8780">> rendered plain text template to support more languages -* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8816">> 'disabled' attribute to SelectWidget and BrowseWidget -* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8819">> 'tabindex' attribute to BrowseWidget, RangeWidget, CheckboxWidget and RadioWidget * <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8821">> the editor link dropdown to use newer syntax * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8911">> support for images in AVIF format * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8912">> support for custom MIME types to the [[WidgetMessage: tm-copy-to-clipboard]] +* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9076">> a CSS class to the import table ! Bug Fixes @@ -71,6 +80,7 @@ description: Under development * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9026">> some download file types not being specified * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9032">> configuration filter in $:/AdvancedSearch "Standard" tab * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/9025">> stringification of derived fields for [[tiddlywiki.files Files]] +* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8739">> broken tag pill styling in edit mode after v5.3.3 ! Node.js Improvements From ee55ab636b886f9d2a022118c12ccce0261e00ac Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 17 Jun 2025 09:56:59 +0100 Subject: [PATCH 117/458] Update HelloThere tagline --- editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index 511b638184..e290a90744 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -15,9 +15,9 @@ style=" text-align: center; border-radius: 0.5em; box-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5; - background-image: linear-gradient(90deg, rgb(224, 63, 34), rgb(255, 133, 133), rgb(224, 63, 34)); + background-image: linear-gradient(90deg, rgb(34, 132, 224), rgb(95, 174, 248), rgb(34, 132, 224)); "> -Make More of Your Notes with ~TiddlyWiki +Make Something of Your Notes

          -''Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information'' +Welcome to TiddlyWiki, a unique [[non-linear|Philosophy of Tiddlers]] notebook for [[capturing|Creating and editing tiddlers]], [[organising|Structuring TiddlyWiki]] and [[sharing|Sharing your tiddlers with others]] complex information

          Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or novel|"TiddlyWiki for Scholars" by Alberto Molina]], or to organise your wedding. Record every thought that crosses your brain, or build a flexible and responsive website. From 7a93126b1ef45fae08d5d7260fae385df719137b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 17 Jun 2025 16:00:59 +0100 Subject: [PATCH 118/458] Revert #8912 and #8916 See https://github.com/TiddlyWiki/TiddlyWiki5/issues/9081#issuecomment-2973372994 --- core/modules/startup/rootwidget.js | 5 ++--- core/modules/utils/dom/dom.js | 15 ++++----------- core/wiki/macros/copy-to-clipboard.tid | 18 ++++++++---------- .../macros/copy-to-clipboard Macro.tid | 6 +----- .../copy-to-clipboard Macro (Examples).tid | 10 ++-------- .../WidgetMessage_ tm-copy-to-clipboard.tid | 4 +--- 6 files changed, 18 insertions(+), 40 deletions(-) diff --git a/core/modules/startup/rootwidget.js b/core/modules/startup/rootwidget.js index b30e03e7b8..30a6c960c8 100644 --- a/core/modules/startup/rootwidget.js +++ b/core/modules/startup/rootwidget.js @@ -74,9 +74,8 @@ exports.startup = function() { $tw.rootWidget.addEventListener("tm-copy-to-clipboard",function(event) { $tw.utils.copyToClipboard(event.param,{ successNotification: event.paramObject && event.paramObject.successNotification, - failureNotification: event.paramObject && event.paramObject.failureNotification, - plainText: event.paramObject && event.paramObject.plainText - },event.paramObject && event.paramObject.type); + failureNotification: event.paramObject && event.paramObject.failureNotification + }); }); // Install the tm-focus-selector message $tw.rootWidget.addEventListener("tm-focus-selector",function(event) { diff --git a/core/modules/utils/dom/dom.js b/core/modules/utils/dom/dom.js index a5b14ff784..849c5a88b6 100644 --- a/core/modules/utils/dom/dom.js +++ b/core/modules/utils/dom/dom.js @@ -265,10 +265,9 @@ exports.copyStyles = function(srcDomNode,dstDomNode) { /* Copy plain text to the clipboard on browsers that support it */ -exports.copyToClipboard = function(text,options,type) { - var text = text || ""; - var options = options || {}; - var type = type || "text/plain"; +exports.copyToClipboard = function(text,options) { + options = options || {}; + text = text || ""; var textArea = document.createElement("textarea"); textArea.style.position = "fixed"; textArea.style.top = 0; @@ -281,16 +280,10 @@ exports.copyToClipboard = function(text,options,type) { textArea.style.outline = "none"; textArea.style.boxShadow = "none"; textArea.style.background = "transparent"; + textArea.value = text; document.body.appendChild(textArea); textArea.select(); textArea.setSelectionRange(0,text.length); - textArea.addEventListener("copy",function(event) { - event.preventDefault(); - if (options.plainText) { - event.clipboardData.setData("text/plain",options.plainText); - } - event.clipboardData.setData(type,text); - }); var succeeded = false; try { succeeded = document.execCommand("copy"); diff --git a/core/wiki/macros/copy-to-clipboard.tid b/core/wiki/macros/copy-to-clipboard.tid index f299cf955d..d05d014e2c 100644 --- a/core/wiki/macros/copy-to-clipboard.tid +++ b/core/wiki/macros/copy-to-clipboard.tid @@ -3,11 +3,9 @@ tags: $:/tags/Macro \whitespace trim -\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style,type:"text/plain",plain) -\procedure copy-to-clipboard-actions() -<$action-sendmessage $message="tm-copy-to-clipboard" $param=<> type=<> plainText=<>/> -\end copy-to-clipboard-actions -<$button actions=<> +\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style) +<$button message="tm-copy-to-clipboard" + param=<> class=<> style=< + + + + +tiddlyspace + + + + + +
          savetest
          +
          + + +
          +
          +
          +
          The tiddlyspace service uses cookies. By using the service, you are agreeing to the Cookie Policy. We have updated tiddlyspace Terms of Service, effective as of 05 December 2014. By using the service you're agreeing to the updated terms. OK, got it.
          +
          +
          + search +
          +
          + interview + a TiddlySpace +
          +
          +
          + + +
          +
          +
          + +
          + +
          + +
          HelloThere
          + + last modified on + 28 February 2011 + + +
          + + +
          +
          +
          +
          +
          Welcome to the great TiddlyWiki viral interview project.

          For many people that use it there is a distinct discovery moment when TiddlyWiki explodes in their brain. For others, it is a challenge to get their heads around TiddlyWiki at all.

          This project explores how people think about TiddlyWiki by collecting together responses to a set of questions about it.

          To Add Your Own Response

          • Sign up for TiddlySpace if you haven't done so already
          • Click the "Reply to this tiddler" link on a question you wish to answer
          • Your home space will open in a new window or tab with the appropriate question tiddler presented
          • Double click on the question tiddler and add your answer (make sure to make it public)



          +
          +
          +
          • no tags
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How did you first discover TiddlyWiki?
          +
          + last modified on + 16 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • webid4me on 24 September 2014
            in reply to How did you first discover TiddlyWiki?:

            After few months into my graduate studies in Brain Imaging I realized that my poor brain, by itself, won't suffice to keep all the information related to various projects organized. I started looking into various softwares like Evernote, OneNote, google docs etc etc. I quiickly realized that: (1) all these tools are proprietary solutions to attract people by visual cues and, ironically, do not work well in academic workflow like mine. (2) Most of them lacked native support for Linux OS. (3) Almost all of them lacked proper math typesetting support.

            I gave up and started using mix of plain text and latex (notes.txt, notes_math.txt). It kind of worked for about an year. Then I realized that I really need support for hypertext in my notes - That led me to start fiddling with markdown - but it was not covenient as I needed to convert to html each time I made changes. Some more surfing and searching brought me to Tiddlywiki (now called Classic TW).

            I was stunned by Tiddlywiki not only because it is a singlefile wiki application but also because it is a useful example of Quine :) I always understood that I need a 'wiki' for my note taking habbits but I could never imagine that a wiki software could be as portable as a single file.
          • aamaadmitw5 on 24 September 2014
            in reply to How did you first discover TiddlyWiki?:

            After trying evernote and extensively using Google docs , I was searching for some note taking software which dont have the restrictions like
            1. I was not happy with WYSIWYG editor because it breaks my flow.
            2. At the back of my mind , i knew google was moving towards a card design for displaying information , and i found the same concept in TW5.

            I found it through wikipedia
            http://en.wikipedia.org/wiki/Comparison_of_notetaking_software

          • gjrobert on 16 September 2013
            Around mid-2004, when I was searching for ideal wiki engines. I forgot actually how I find TW, either via Google or via some introduction on blog posts.
          • dickon on 18 March 2012
            I have known and loved Jeremy Ruston for many years, so it was word of (horse's) mouth.

            It is strange when you have known someone for many years; suddenly to discover how something so excellent has been going on in their work (that had always seemed so far away from your own) - and that it absolutely answers what you are after... kerrr-ching!

            I got curious about what this Tiddly stuff was about in conversation, and Jeremy sent me a link, which I started looking at in about 2005 I think. As a total non-techy I commend my own bravery in trying to get past the somewhat opaque documentation, but there was a fairly sudden "lights came on" moment when I saw massive potential in what was on offer, that I had seen nowhere else.
          • pmario on 6 April 2011
            I was looking for a browser notebook, with the possibility to work online and/or offline. And if possible with good syncing. I found http://lewcid.org/2009/02/03/a-busy-year-and-a-student-notebook/

            Some more reading lead to a very active TiddlyWiki user group, and some specs about an alpha TiddlyWeb (mother of all server sides.) So I thought, let's see how fast the development is going on. That's it.
          • poulstaugaard on 6 March 2011
            I am quite a veteran TW addict. The wiki idea first caught my fancy when I stumbled on FlexWiki in 2003. Initially I hung out at MeatBallWiki for inspiration while scanning the landscape and finding my direction. This is how i discovered TW while it was still a baby. Coming from the Microsoft/IT services world, with a wide interest in web technology, my first serious efford was a .NET (C# + SQL) based serverside that I called iewiki (spelled like that not to be misread as LeWiki). It was built on unmodified TW 2.0.6 client-side, and I used it myself on the web for a few years (as iewiki.net, now defunct). I was never quite happy with the end product though, and it never quite made it past beta status - partly due to the rather high cost of quality hosting for .NET. So when I found Google's App engine, I decided to start again from scratch, an efford which I have called giewiki for natural reasons. By this time (late 2008), I figured TW had reached a level of maturity (2.4.1) that made branching a good strategy for a hosted derivative.
          • smandoli on 24 December 2010
            I spent 2009 in a part-time and solitary obsession with knowledge-management tools, trying to figure out how to harness my chaotic, distracted, eclectic and adventurous thought life. This was encouraged by a re-read of the famous 1946 "Memex" proposal, discovery of the "TheBrain" online demo. and personally productive work in mind mapping. (More at http://themanthursday.com/wiki-first-taste/.) I would run google searches that returned nothing, but eventually I lined up the right keywords and landed at TiddlyWiki.
          • calmo on 16 December 2010
            In 2004 I was researching use of wikis for collaborative content development within IBM. I found tiddlywiki. But I really didn't "discover" it until I realized how it actually works - what makes it different from standard wikis.
          • climatechange3 on 1 December 2010
            I first heard about TW on a Moodle group in the fall of 2006, in the process of trying, without much success, to use the wiki feature in Moodle. I loved TW - and the TW Google Group - right away.
          • ubi on 29 November 2010
            I was searching the net for a personal wiki software and found WoaS and TiddlyWiki. I started with WoaS, because it's traditional website look-and-feel met my habits more than TW, still playing around with TiddlyWiki occasionally. After digging the core concepts and discovering the wealth of plugins, I switched to TW.
          • passingby on 27 November 2010
            It was a long time ago, while searching for free and open source softwares
          • rouilj on 27 November 2010
            I saw a mention of it while I was looking for a simple personel wiki.
            The single file and easy portability of it intrigued me.
          • yakov on 16 November 2010
            I write loads of things and some time ago I realized that hypertext is the only form that would be flexible enough for me. Next I get the idea that since there are quite limited tools for creating hypertext on my handheld it would be good to create one based on web-technologies since they are totally cross-platform and imply hypertext. Then I realized that JavaScript has far too limited access to the file system (usually no access at all), so I asked about this thing in google.quesions. Few answers contained mentioning of Java and flash and also there was one with "see TiddlyWiki". And so, that was it.
          • frankfurtkid on 16 November 2010
            i was looking for a simple wiki to use for note keeping, action tracking and the like - I think I was reading "Getting Things Done" at the time. I came across TiddlyWiki and decided to give it a try. I liked the idea of not needing to be online - which at the time was less frequent than now. I then discovered that the guys involved worked for the same company as I do - and that made me really interested in using it for work as well as private applications.

            Then server side became more important - ability to share info and access. I used cctiddly for a while and am now starting to use the BT green side implementation of TiddlySpace for work related projects - as well as the usual tiddlyspace.com.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          What was it about TiddlyWiki that captured your interest?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • webid4me on 24 September 2014
            in reply to What was it about TiddlyWiki that captured your interest?:

            1. Portable - single file application
            2. Flexible workflow (& plugins)
            3. Offline
            4. Open Source
            5. Searchable
            6. Active development

          • aamaadmitw5 on 24 September 2014
            in reply to What was it about TiddlyWiki that captured your interest?:

            1. Simplicity
            2. Tagging
            3. Default fonts and line spacing
            4. Unusual
            5. Single file

          • dickon on 18 March 2012
            It was the fact that it was a document, but that it had certain aspects that seemed extraordinarily "three-dimensional": pages (tiddlers) have depth insofar as each chunk of content that you write has what I think of as both centrifugal force (stimulating interest to go and explore links and tags that offered related material) balanced by centripetal force (the intrinsic interest of what is here on this page/tiddler, that holds my attention and delivers what I want/need.)

            But more than that, TiddlyWiki has EDGES; this is like other documents I know about (chiefly paper based), and is reassuring in relation to the scary 'anarchy of limitlessness' that, say, Wikipedia has. As a TW could be a thing - downloaded, uploaded - so it was a definable entity; there could be a balance of authorial control with the wiki-like sharing and co-construction.

            I was writing a large treatment manual at the time (with a great group of co-authors based around the Anna Freud Centre) at the time, and we were trying to integrate a whole range of "schools" of thinking and practising into a concentrated, integrated set of principles and practices that could 'steer' workers in the field towards more effective practice in doing therapy with some of the most vulnerable, complex, troubled youth around. The "eureka" moment (and it was something like that) was the recognition of a number of things almost simultaneously:

            'Integrative' format


            1. That the way to mount all this information was in a TiddlyWiki: this format could emphasise underlying links/commonalities/shared concepts between disparate schools (that had often, in my view, wasted precious energy on "turf wars"... this seemed to me to be a radically integrative format, insofar as any tiddler that I wrote automatically begged the questions: "How does my content fit in with the rest of what is written? How are you going to tag me? What links are you going to place in me, and to me?"

            Funkier than a book


            2. The format (with its promise of embedded video, downloadable documents, clickable links...) offered a much more tempting "front door" to what is conventionally a massively boring kind of book. (Research demonstrates that the "treatment manual" is frequently despised by therapists, who find them rigid, condescending, crushing of creativity and spontaneity, and often ill-fitting to their local setting and cultural context.) Most treatment manuals are not inviting to the casual browser!

            Open source works for therapy, too


            3. The whole "open source" ethos that Tiddlywiki abounds with, absolutely fitted with the slant on human behaviour/psychology that we were using as the "integrating principle" in our treatment approach, which is "Mentalization". The motto of open source programmers ("Release Early, Release Often") fits the mentalization-based therapist's assumption that "I only see with partial vision" and his or her willingness to mark their best guesses as just that - hypotheses, to be built on and improved...

            Multiple iterations around a developing shared core


            4. The final "Bingo!" moment was the realisation that with TiddlyWiki it was possible to conceive of multiple locally-adapted versions of a centrally-curated 'basic core' offering. Thus local teams (the "small trusted groups" that TiddlySpace refers to) can work out place- and population-specific iterations of "Practice-based Evidence" - that fit the more rarefied/less 'attuned' "Evidence-based Practice" into local settings, local populations. I think of it as being like adapting a basic car for use in different parts of the world - some places need air-con, others need 4 wheel drive and a good in-cabin heater, still others need an excellent paint job, etc... but all rely on a basic car that basically runs.

            With the development of TiddlyWeb and TiddlySpace this vision (no. 4 above) has become increasingly possible, so that now the ambit core manual is included in the local versions of just under 20 teams across the UK (see tiddlymanuals and follow the links for AMBIT), working with diverse populations, and in diverse ways, with "hard to reach" young people.

            These teams are beginning to build their own locally-attuned versions of a treatment manual, building on (and often improving on) the ambit 'core'. As time goes on, and evidence is gathered about what works for whom, we hope to bring excellent local adaptations that would have more general relevance into the core, so that they are automatically available to all other local teams including this core.
          • pmario on 6 April 2011
            • The extensibility

          • poulstaugaard on 12 March 2011
            The page architecture, which I have adopted, finding little reason to change anything just for the sake of difference, nor for any other reason. Everything, even the animations, serves a purpose and does it just right, including the omission of sidebar space for 'ads by Google'.

          • smandoli on 24 December 2010
            Portability. I didn't want to have to be on-line, and I wanted to shuttle between Linux at home and Windows at work. And I had recently become attached to my USB drive.
          • climatechange3 on 2 December 2010
            Its versatility, built-in macros, the wonderful & creative 3rd party plugins, a diversity of ways to present and organize content and layout and the responsiveness of the TW Google Group. In examining the structure of tiddlers, I became aware of the possibility of generating sets of tiddlers from the extensive body of information I have gathered in a set of DataPerfect databases.
          • passingby on 27 November 2010
            That it was:
            1. Single file software
            2. It opened in a browser
            3. It was kind of a closet, you could stash away things in it
            4. You could 'own' it, for free, have as many copies as you want
            5. It had a world of fascinating plugins

          • rouilj on 27 November 2010
            Saq's use in the education realm and the ease of transport/sharing.
          • mama on 20 November 2010
            I'm sure that it was the "tiddler-approach" which caught my attention... Other wikis I tried in the past, always made me a little uneasy because of the "one article one page" layout. I quickly understood that TiddlyWiki could be tweaked to my own liking - and when I eventually overcame my reluctance to enroll in a community, the googlegroup convinced me that even I, could create/modify a copy to my own liking, a total noob, with no education or knowledge whatsoever about html, css or javascript.
            As far as I remember, I tried to figure things out for myself for about six months untill I finally gave up - and posted a question on the usergroup. At that time I was trying to create a tiddlywikiapp to be used on a mobile phone for administration of students at my school. http://himmerlands-ungdomsskole.dk. I even purchased an old HTC (tytn II) to be able to test the thing....
          • yakov on 16 November 2010
            More I discovered TW, more I get exiced because my wishes got implemented one by one. TW happen to be extremly powerful, close to WYSIMYM-based and, well... the only thing I've got to do is to discover it carefully (although some things are now distinct to be not achieved yet the plugin system promises almost everything to be doable).
          • martinlindner on 16 November 2010
            initially: i think i was fascinated by the idea of having a "page" made of dynamic paragraphs, back then. i'm still interested in the (abandoned?) TW project of importing docs, transforming paragraphs to tiddlers, and back again.

            the other concept i have been obsessed with since 2004 is "microcontent": to play with small units of meaning, meme-like chunks. like the microweb that exploded after that, with twitter & any kind of 'microformatted' apps (for questions, for trips, for reviewas, for nearly anything).
          • frankfurtkid on 16 November 2010
            I could create simple notepad applications, very quickly and easily - but also the more I used it, the more I realized I could change the way it looked and worked. This has been both liberating, and frustrating.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          Which aspects of TiddlyWiki do you find most valuable?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • webid4me on 24 September 2014
            in reply to Which aspects of TiddlyWiki do you find most valuable?:

            1. Non-linear notebook
            2. Portable
          • aamaadmitw5 on 24 September 2014
            in reply to Which aspects of TiddlyWiki do you find most valuable?:

            1. Regular updates
            2. Simplicity
            3. Alternative ways to do things
            4 Tags / Tags / Tags
          • pmario on 6 April 2011
            • For most people its new. They haven't seen something like this. It's easy. It's usefull. It's a WOW.
            • It's flexibility
            • TagglyTagging

          • smandoli on 24 December 2010

            Easy and Quick

            • I can capture my thought or preserve a good quotation without a lot of hassle or time.
            • I don't have to decide if the idea is "important" or how it fits in with everything else. Paste, save, apply a tag if I can think of one that's it.

            Portable

            • In a strange library? Not sure what kind of computer is in front of me? Can't get the Internet to work? NO MATTER if it's got a USB port, I'm in.

            Non-linear association of ideas

            • It may not look like a mind map (yet), but it feels like one.
            • This is one of my few activities in life where it doesn't seem to matter if I'm in ADHD mode or not. Or putting it from another angle, managing a TW seems to put my ADHD to some sort of actual good use.

            Non-proprietary Text Format

            • Whatever the next step is in knowledge management, I can get there. Migrating my voluminous notes from word-processor documents to TW was tedious, but nothing will ever be that hard again.

            Sheer elegance

            • ... 'Nuff said.

          • alexhough on 8 December 2010
            Facilitating Group Work
            During the design stages of the OMM, TiddlyWiki was used to capture the requirements from the group. We projected the TW on the wall.
          • passingby on 27 November 2010
            1. Tiddler concept
            2. Tagging ability
            3. The Paradigm, every thing is a tiddler
            4. Plethora of plugins
            5. Versatility, programmable using inlinejavascript plugin and the other plugins
            6. Best software around for storing personal data

          • mama on 24 November 2010
            Ownership and a great amount of control. You can keep your work offline or go public, even the different publishing options are "hackable" - its "all inclusive" instead of "some exclusive".
            I think that TiddlyWiki is THE good example of what OpenSource is all about - The communiti(es) are full of great/generous people, you want to follow or help out in any way you can. I think this incitament (to do good...) comes from a deep feeling of gratitude toward those who helped you when you needed it, and the fact that TiddlyWiki is OpenSource software, maintained by great developers - who demonstrate accountability at all times, makes you feel safe, - and that TiddlyWiki is a serious project.

          • yakov on 16 November 2010
            • transclusion system
            • cross-platformity
            • extansibility
            • great community and many already implemented important things

          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How many TiddlyWikis have you created and do you use regularly?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • dickon on 18 March 2012
            At least 20

            Some I use all the time (the ambit manual is probably my peak!)

            My NHS team uses an offline TW (securely stored) to track and document all the clients we treat, documenting team discussion in the TW, and printing out these tiddlers for pasting into the conventional paper notes. The TW is projected and edited during every team meeting, and the act of typing into it has become part of our efforts towards "transparent practice"...

            I use TW's for major literature reviews - fantastic for cross referencing, tagging, ensuring that I have integrated a disparate body of literature.

            I use TW's in management meetings to make wikified minutes - people get intrigued and wnat to understand and that often deepens the discussion - what are the underlying themes (Tags) that we are REALLY trying to crack in this meeting?

            etc...


          • yakov on 21 February 2011
            My answer won't be very interesting since I'm only studying TW now. I've already created 3 TW for some science and one for making a deep TW tutorial (with many practical aspects).

            However, I'm going to make much more TWs for different purposes from questions aggregating to making a site.

            UPD: As for now, I use 9 tw-documents. 3 of them very often and others from time to time. I feel that an offline analogue of TiddlyWeb becomes more more desirable thing.
          • smandoli on 24 December 2010
            1. Summary of Materials Resource Planning (MRP) functions for my work place.
            2. Getting Things Done (GTD) organizer for personal and work use.
            3. Notes about my study of the Bible (topical as well as passage-specific).
            4. Computer information such as code snippets in a variety of languages.
            5. A personal information manager for everything else.

            If I can find the right tools to overcome a sense of content overload, I will combine #3 and #5.
          • colmbritton on 21 December 2010
            All in all I have created a fair few, however I have 3 main ones (or used to until Tiddlyspace came around). They are one for general notes, one for recording info and ideas about the projects I was working on and a third, which was a test TW that I used to try out new plugins and combinations of plugins.
            Now that I am on Tiddlyspace I have a lot!
          • andrewbarbour on 28 November 2010
            I created 15-20 different ones to try different configurations /concepts for organization. Once that was over with... I am down to three:

            In Use
            • Day-to-day note taking and task tracking
            • Project Notebook for storing all of my notes

            Active Development
            • Help file for business procedures and system documentation

          • passingby on 27 November 2010
            I have created many. I have a bad habit of starting a new Tiddlywiki whenever I get excited about a topic but I usually never complete a project 100%.
          • rouilj on 27 November 2010
            I use four on a regular basis:

            • tbGTD - for getting things done
            • twab - for an address book and I have extended it to allow tracking things like who gets christmas cards etc
            • coursebook - was created as a textbook/exercise-quiz/presentation tool/student notebook for a class I was teaching.
            • TiddlySnip - sadly this has been abandoned, but it is my primary mechanism for keeping bookmarks, research notes and how to's for the firefox browser.

          • mama on 24 November 2010
            I've made so many TiddlyWikis that I've lost track of them... Some of them are floating in cyberspace, others were lost in broken or erased harddisks and some has gone into hibernation in some dropbox directory. Seriously - I think I've created hundreds of them - all very different TiddlyWikis for different uses..
            TiddlySpace has helped me get a little more organized, as it provides an overview of created spaces.
            At the moment I use 4 dedicated TiddlyWikis (spaces) for everyday tasks. All jobrelated. Two of them I share with my students (read only, except for embedded/iframed typewith.me-documents) and one of them I share with my collegues (with writepermission, however I'm the only one contributing to it at the moment...). The last and most important one is working as my "controlcenter". Some of my tiddlers are loaded into the other spaces - so I don't have to edit them all directly to push content...
            At least once or twice a week I visit some (ca. 4 or 5) of my other TiddlyWikis, which are hosted at TiddlySpot or at one of my own TiddlyHome services (I've got two working/customized installations of Bidix's TiddlyHome service).
            The number of TiddlyWiki's I use (just for reference or edits) in one week is 8 - 10 or more... I also checkout other people's TiddlyWikis - so I'm not sure.
            Every year I prepare multiple TWs for exams (I have new students who graduate every summer). Some of those TWs contain notes for my students and other TWs contain or refer to material prepared for my censors. I print my TiddlyWikis to pdf-portefolios and mail links to online versions of both.
            3 years ago I would use notepad/OpenOffice or MsOffice to write/create this sort of material. Today I prefer to use a customized TiddlyWiki.
            When I occasionally use MsOffice programs at work, it's often just to be able to copy/paste material from a TW for printing - or work with tables in MsExcel - which I will often copy back into a TiddlyWiki :-)
            At every meeting I attend, I use TiddlyWiki as a note/write tool, as a portefolio and as a working database containing data, images and notes about all my students, collegues, calendar with notifications, workplans, ideas, iframed webmail etc ... I even use single local network TWs as Faq-documents which I prepare for my collegues. TW is my swiss armyknife at my job, and it certainly helps me to stay organized at all times... When I publish material for my students I use a TW. Sometimes I set it up as a presentation, which I use in education.
            When I'm at home, I have small projects which also involve TW to some extent. TWScrapbooks with bookmarks, iframes etc.. I create private or public tutorials, embed images, make small or big changes to the layout, add plugins or scripts from other TWs I've made etc...
            Today TiddlyWiki is my single most important tool for everything which involves using a computer.... and sometimes I think that all I need from an operating system is a browser, so I can use a TW....

          • frankfurtkid on 16 November 2010
            I have a main notepad for private use at work, a website which is a static file, one or two standalone files and a current project on the BT greenside implementation, plus a new project on songs.tiddlyspace.com for song writing, collaboration and publishing.
          • matt on 16 November 2010
            I've created a number of TiddlyWiki's – the first was stored locally and I used it for capturing notes, lists and actions. I've now imported this into my matt space where the majority of the content remains private.

            I plan to use mattlucht for capturing random thoughts that I'd like to make public. I've also used TiddlySpace to create a website for a music festival I organised, this I used the bring-your-own-domain function for http://brixtonoxjam.com
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          Do you keep adding new features to your existing TiddlyWiki(s)?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • amalfaro-wrk on 2 July 2013
            "Features" to me means plugins and I don't really change those up. I've really settled on one set at this point, but I tweak the way it looks or the way it shows me the information pretty regularly. I get bored with the same interface all the time ;) .
          • dickon on 18 March 2012
            To some extent, but I find that it is a "marker" of where the task (that underlies the reason for setting up the TW in the first place) has got to when I slow down on the modifications! I hasten to add I only do pretty simple modifications, and tend to use the same small number of plugins or techniques again and again.
          • pmario on 7 April 2011
            • If they are nice and small in size: yes.

          • climatechange3 on 1 December 2010
            Yes, the ability to reorganize the presentation of my content through using new plugins, or making fuller use of plugins I have used for a while, is one of the joys of TiddlyWiki for me. This does pose a challenge, however, in that I have yet to develop or use a consistent process for integrating the new features into the steadily growing number of TiddlyWiki pages/sites that I maintain.
          • passingby on 27 November 2010
            Since I do not use a tiddlywiki very regularly, most of the features are brought in in the first phase, when I am setting up a TW
          • rouilj on 27 November 2010
            With the esception of the Coursebook tiddlywiki, most of my TW's are static with a core set of plugins. I do update the plugins occasionally as well as the tw core but I don't need to add too many features.
          • mama on 24 November 2010
            Oh yes :-)
            I often create "forks" from my original TWs to see how far I can take it - or I reorganize all content with new tools and plugins - just to see if its better...
            Sometimes a new theme suggests a total rewrite or reorganization of content...
          • frankfurtkid on 16 November 2010
            My standalone Tiddlywikis are pretty static now, although I find the odd plugin from time to time. Tiddlyspace is completely different as its changing all the time - so its still very much a learning as I go along experience, and adding in new features as I discover them. I still need to really think about how I want to use TiddlySpace - not there yet. the songs.tiddlyspace.com project is more geared to multiple people accessing the same site - and I want to get that working in a more collaborative fashion - so following / sharing information etc is important.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          Who is the target audience for your TiddlyWiki(s)?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • webid4me on 24 September 2014
            in reply to Who is the target audience for your TiddlyWiki(s)?:

            Me, me and Me! :P
          • passingby on 27 November 2010
            Some of TWs are just meant for myself. Others I have put up on Tiddlyspot, I don't think anybody visits them :-)
          • rouilj on 27 November 2010
            For most of TW's I am the primary audience.

            The one TW I produced for others was a coursebook that was used to teach an event correlation tool to computer system administrators.

            I am also occasionally playing with using a TW as a blogging platform which would again be geared toward items of interest to system administrators and people who are interested in lean/six sigma and its use in computing environments.
          • mama on 24 November 2010
            My students, collegues (teachers and other staffmembers at my school http://himmerlands-ungdomsskole.dk/).
            Once a year I use TiddlyWiki's to publish material related to exams - for my students and censors.
          • frankfurtkid on 16 November 2010
            Me; work colleagues; song writers; anyone whole hits a website
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          What features of TiddlyWiki made it suitable for your target audience?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • pmario on 7 April 2011
            • A very minimalistic presentation mode is possible.
            • Which keeps the focus of the audience at the basics.
            • But powerfull editing can be activated, which creates a WOW

          • passingby on 27 November 2010
            Menus and lists and search abilities
          • mama on 24 November 2010
            TiddlyWiki can be shared online as a normal website, work from a shared networkfolder or attached to an email - all very different delivery methods allowing for different levels/degrees of security and different levels/degrees of technological sawyness.
            In my experience, people just see another webpage - One, if not the most, frequent complaint I get is: "Why can't I go back in my browserhistory - to find a recently opened page"..
            TiddlersBarPlugin, HistoryPlugin or breadcrumbsPlugin, helps...
            Features I use to enhance user experience are:
            • Dropdown menus (sometimes from vertical mainmenu).
            • Lists of different kinds
              • tagged tiddlers
              • fETs delivering some degree of preview (images, custom fields etc..)
            Search engines:
            Optional hiding/showing sidepanels or fullscreen display of tiddler content..
            Most of my jobrelated TiddlyWikis hide SideBarOptions when opened.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How have you found training novice users to use and understand TiddlyWiki?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • smandoli on 24 December 2010
            It's reminiscent of entering the Linux world as a home user. The information is there, but you may have to search. Advice is plenteous, but you must learn to sort through it for the bits that apply. Advisors are friendly, but you must be brave enough and interested enough to participate in a forum.

            Suggested Question (related): What is your experience introducing TiddlyWiki to other people?
            • The hard part is convincing them it's useful and they should take it on. I start by explaining "personal information management" and then I check the eyes for any spark of interest.
            • The obvious solution is to present not TiddlyWiki but rather a largish wiki of interesting information, and then make them aware of the vehicle.

          • passingby on 27 November 2010
            Uptil now I have found just one person in my circle who had a 'real need' for storing data. She was fellow teacher and was very new to computers so it was a bit difficult, but she succeeded in using it functionally and effectively.
          • rouilj on 27 November 2010
            The coursebook I created was well received by a couple of participants, but there were also three people who found it difficult to use and understand. They found it got in the way of learning the material compared to the pdf format that other teachers used for their classes.

            Plus I had a couple of people with old version of firefox (1.x) that made it unusable.

            If I could teach the course again, I think I would have to spend time teaching how to use tiddlywiki (and the coursebook) to even a technologically experienced audience.
          • mama on 25 November 2010
            The most difficult part is to explain TiddlyWiki to tech-sawy people.
            They tend to see TiddlyWiki as alfa-software, because it's so transparent and customizable.
            The fact that a user can delete a button is considered to be a serious bug.

            When I started using TiddlyWiki, I made different tools for my students and collegues, however crossbrowser problems stopped my work in this direction. Most of my students and collegues use IE. My experience is that IE is the worst possible (almost...) browser for javascriptapplications, rendering of css and images etc....
            I don't spend any time trying to make any of my students or collegues understand how TiddlyWiki works anymore.
            On the other hand collegues and students often ask me to create lists, imagegalleries and faqs for quick delivery - and I get positive feedback.
            Sometimes some of them have a glimpse over my shoulder, and I always get outbursts like - "Wauw, I'd like to be able to do that" ... however nobody really wants to invest time in learning how to do it themselves..
          • frankfurtkid on 16 November 2010
            More difficult than I would like
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How many tiddlers and how many megabytes in your largest TiddlyWiki?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • dickon on 18 March 2012
            The main ambit tiddlymanual (see tiddlymanuals) is over 2Mb now - still works fine!
          • passingby on 27 November 2010
            Not very large I am afraid. But wait! I have a 'contactsbook' which probably has around 137 tiddlers containing basically names, address and phone numbers of people I know. Not much in MBs I am afraid
          • rouilj on 27 November 2010
            The coursebook is 2.1 MB and 441 tiddlers.

            My Tiddlysnip tiddlywiki is 1.5MB and 661 tiddlers.

          • yakov on 16 November 2010
            No big one yet. Just somewhat about 1Mb. But this is an issue: I still don't know if TW has some "limit" (would it get slower if become too big?) and this is why I'm not sure if it's proper to make only one TW for everything or I have to split the things mindfully.
          • frankfurtkid on 16 November 2010
            2.6 MB - probably pretty modest I guess.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How has TiddlyWiki saved time for you as an information publisher?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • mama on 25 November 2010
            I'm not sure it has... I've found a new tool which let me explore things which were inaccesible (at least to me) untill now..
            Sometimes I use much more time preparing a TWsetup, than I would if I just used some office program, Notepad - or a piece of paper for that matter...
            However TW allows me to organize and reuse things in a way that no other software does - and It certainly helps me to fight a reoccuring writers block.
            On the other hand I setup simple TWwebpages for my students in no time, because I have readymade templates.
            Its an incredible fast cms - I update lists and appointments on the fly. My students update their browsers and all is well.
            When I want my pupils to focus on things, I give them links, iframes and popouts from a TW hosted on TiddlySpace, TiddlySpot or one of my own TiddlyHome installations.
            I really like to be able to deliver pages without any commercials and other distracting factors.
            I've even implemented a webversion of "DarkRoom" to help my students focus on their writing. A little pradox considering my personal stategy - I know, however my students like the seamless and simple integration of browserbased tools.
          • frankfurtkid on 16 November 2010
            For standalone websites - its quick and easy to put up content. In the corporate world its about document control and sharing of information
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How has TiddlyWiki saved time for your target audience?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • rouilj on 27 November 2010
            I'm not sure. For the people who used the coursebook and liked it during
            the class I think it saved them time. Also I have contacted one former student
            who found it useful when he was actually working at implementing particular
            corrleation patterns.
          • frankfurtkid on 16 November 2010
            Great in the BT environment for document / content collaboration - No LiveMeeting, no version control problems, less storage issues, fewer Word documents flying around all out of date. Notepad also saves me time and keeps things "together" in my world.


          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How has the TiddlyWiki community helped you?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • dickon on 18 March 2012
            Amazingly helpful and quick to respond - knowledgeably and creatively - via the Google Group.

            I worry that as TW gets bigger as a "movement" (?!) there could be a loss of capacity from the small group of utterly dedicated 'evangelists' for TW who do seem to have an extraordinary capacity to be massively helpful almost instantaneously, whenever I have posted with a confusion or glitch...
          • pmario on 7 April 2011
            • Because of fast responses, to questions.

            What I like: The friendly conversation in the forum, compared to other forums.
          • climatechange3 on 1 December 2010
            Countless ways. Whether in the responses to questions I have posed, or in offering insight and understanding through responses to questions from others in the community, the TW Google Group community has been consistently brilliant as a source of help.
          • andrewbarbour on 28 November 2010
            The TW community is incredible. I have never been exposed to a group of folks that have more passion and are so willing to give of their time and expertise.

            I was looking for a tool to pull back search results for individual lines in tiddlers so I posted on the google groups page.... I had a large number of direct responses with ideas as well as postings to the forum. The input invaluable - and the outcome entirely satisfactory - someone had already written the code (Thanks Eric!) and I was able to integrate it into my tiddlywiki within minutes.

            Everyone is incredibly friendly and helpful!
          • passingby on 27 November 2010
            Its the Best community. People help out each other like nowhere else. Infact Eric whips out code like magic.
          • rouilj on 27 November 2010
            The coursebook wouldn't have been possible without the help of a number of TW regulars including: Eric L. Shulman and Paulo Soares.

            They modified plugins to suit my needs and provided extensive debugging and other help.
          • mama on 26 November 2010
            I don't think I would use (or be able to use) TW today if it hadn't been for the TiddlyWiki googlegroup.
            People on the discussionboard, has always been very kind and helpfull - and sometimes I have learned a lesson or two about discipline as well :-)
            There's a lot to learn from the threads, and its great to ask a question and get (almost) immediate response.
            For a newbie it's a fantastic and inspiring experience to get help from a gifted programmer, who explains things in a way that is enligtening and thoughtprovoking... It's a joy, when someone steps into a thread with a snippet of code, which solves everything :-)
            It's communication at a level, I don't find many other places, and it's certainly an oasis, a sanctuary to find in a web which is mostly a marketplace where everyone is considered to be a potential customer...
            The generousity of really great programmers like Eric Shulmann (on the other hand, Eric MUST be one of a kind...), the Osmosoftteam and several/many individuals who invest their sparetime, helping other people to use TiddlyWiki, is an outstanding example of a meltingpot of ressources, that you simply NEED to follow, because it's unique, magic and active.
            You don't know for how long it will last - and I sometimes think that the community survives/thrives because different "teams" of really enthusiastic people choose to discuss matters that could be discussed in the privacy of their own mailboxes :-)
            That's ok - and certainly gives you a window to a world of things, you wouldn't know existed elsewise....
            If it wasn't for the community I don't think there would be a TiddlyWiki - on the other hand I'm not sure if TiddlyWiki would be considered to be a serious project if it wasn't for the Osmosoft Team - so congratulations to everybody :-)

            It's an inspiring meltingpot of users, programmers and enthusiasts - communicating and helping each other to achieve both practical and magic stuff with a onepage html/javascript application

          • frankfurtkid on 16 November 2010
            The Osmosoft guys have been very helpful in sorting out problems and questions. The Google group is a good place to find others sharing the same problems - and also getting answers.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How have you been able to contribute back to the TiddlyWiki community?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • smandoli on 25 December 2010
            I haven't yet. I am looking forward to answering questions from complete newbies ... after I'm not one myself. I am a communicator, and I'd like to develop tutorial pieces. I'm not a coder and I'm not very tech (my tutorial would not be a video). I wouldn't mind sending some money but I feel it's not appropriate with my finances.
          • rouilj on 27 November 2010
            I put up a copy of the coursebook at coursebook.tiddlyspot.com but it's not yet complete. Also I have answered a few questions in google groups.
          • yakov on 16 November 2010
            Just a tiny bit.. I know CSS to extent of 2d specification and other things like DOM so I'm capable to answer questions that are rather not about TW.. And so I did twice, perhaps)
          • frankfurtkid on 16 November 2010
            Not much to date - I still have loads of questions, rather than good answers, and I'm more of a user than a coder. But I am happy to share ideas and solutions.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How many other people have you introduced to TiddlyWiki?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • dickon on 18 March 2012
            I get about 4-500 hits a month to my Tiddlymanuals at present, which compared to how many people regularly read treatment manuals is, in my book, quite good going for a new project.

            There are about 17 teams starting to use and adapt their own local versions of a TiddlyManual around the UK, and these vary in size from about 4 or 5 up to about 25.
          • mama on 18 August 2011
            Directly or indirectly??

            Indirectly

            Indirectly I have presented jobrelated material in TWs for about 5 or 600 people over a period of three years.
            I have used TWs as container for all kinds of material for reference, when having mailcorrespondences. They are for the most part hosted by dropbox, sometimes attached..

            Direct introduction:

            One year ago the administrator of linux-abc.dk (Danish Linux community powered by MyBB) made me administrator of the forum TiddlyWiki (12 tutorials and a description) and a support forum...
            There has been some hits 2 - 300, however there's been no activity for a long time.
            I haven't bothered to fake questions/answers or setup fake members.
            I recon there are not that many danes using TiddlyWiki therefore no demand for support in Danish...
            Maybe my tutorials aren't good enough. Don't know really. Linux-abc's administrator has praised my work - though - even if he doesn't use TiddlyWiki himself.

            When I attend groupdiscussions i.e puppy linux forums, I setup online TiddlyWikis to serve as Faq, tutorials and projectdescription. I've recieved positive feedback from developer in charge of the Puppy Studio project - however I have no idea how many hits my TWs have had...
            Everytime I use a TW for this kind of work, I explain what TiddlyWiki is and that you can download it for personal use. I don't know if anyone has done that yet...

            I have setup a Danish FaceBook group (TiddlyWiki_da), a posterous blog (http://tiddlywiki-da.posterous.com) and a hootcourse (http://hootcourse.com/course/312/) No activity except some hits....

            A year ago a publisher of educational material ("Forlaget for ildsjæle" - "Imprint for Enthusiasts") encouraged me to create tutorials on how to use TiddlyWiki in a classroomsetting... Alas I haven't reached a point where I've got the time needed to pursue this request - and I'm very busy working as an IT-administrator, teaching undergraduate students on a boarding school (http://himmerlands-ungdomsskole.dk). 4 kids, a cat and two turtles need my full attention - so I guess I just have to wait untill I'm retired....
          • rouilj on 27 November 2010
            60 or so between teaching from the tiddlywiki as well as presenting on tiddlywiki.
          • yakov on 16 November 2010
            For the moment just one philosopher) See, ragged (no offence; I'm not sure this word has same tinge as in russian) tutorials and very few possibilities for those who want to get russian interface, russian help and tutorials and complicity of TW.. As for now this is a tool for those who need it, not a comfortable platform for everything (at least for my friends).
          • martinlindner on 16 November 2010
            hmm, 10 or so? (who got the idea, but i mentioned it more often.)
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          What is the most challenging thing about using TiddlyWiki?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • smandoli on 25 December 2010
            Figuring out what plug-ins may help and how to use them. You can read my blog entry about this.

            Suggest Other Question: What secondary software tool or application is most useful for you in working with TiddlyWiki? My answer is Notepad++ (for regex search-and-replace) and python (for converting a big notes document into a TW).
          • rouilj on 27 November 2010
            The horrible debugging environment. I have been trying to fix the Quiz plugin for a while but the debugging environment compared to other tools (perl, python, C) is primitive.
          • frankfurtkid on 16 November 2010
            (1) Trying to work out how to do something when you have no clue. (2) Trying to keep up with the changes in TiddlySpace
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          Which plugins do you rely on the most?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          What do you think of the name TiddlyWiki and the term "tiddler"?
          +
          + last modified on + 10 December 2010 +
          + +
          + + +
          +
          +
          +
          +
          • gjrobert on 16 September 2013
            "tiddler" was a whole new word to me at first (I'm no native English speaker). "TiddlyWiki" sounds impressive, bit funny and enjoyable.

            I like the idea to store ideas and knowledge (like dictionary entries) as small chunks in tiddlers, while preserving the ability to transclude and organize them together into a big knowledge base or long articles or even an e-book.
          • pmario on 7 April 2011
            TiddlyWiki for me is just a name for a wiki.
            The term tiddler, has to be explaind, whenever you use it. For me "The smallest part of content in a TiddlyWiki" works best.
          • kosmaton on 10 March 2011
            I think unfortunately the cons outweigh the pros.

            Pros:
            • non-stuffy
            • unique (rare/peculiar word: gives it more of a story)
            • rolls off the tongue easily
            Cons:
            • dealing with silly associations
            • yet another half-childish sounding Web2.0 name?

            Personally, I would love to use a "GrooveWiki" made up of a bunch of cool "grooves".

            Or go for something meaningful and nice-sounding in Indo-European or Lojban...

            I'd ultimately rather present this software saying "Folks, behold this GrooveWiki" than "Folks, behold this TiddlyWiki... yes... indeed... no... it's sticklebacks." First impressions, you know.


          • poulstaugaard on 6 March 2011
            I agree with Andrew but I haven't found a better term, except perhaps 'item' or 'entry'. I've hesitated to drop 'tiddler' though, choosing to stick with the virtual village parlance.
          • smandoli on 24 December 2010
            Those are good terms. I have nothing better. That said, I always introduce the terms with just a bit of anxiety! And i explain them with a big roll of the eyes and a chuckle. Once I'm past that, all is well. And it may be all for the good. Enough with haughty tech terms, with applications that impress the new user with fear before anything else.
          • mama on 2 December 2010
            I like those words. For some reason they remind me of Puppy Linux and the penguin Linux Logo.... and I'm a fan of those.
            I must admit that there a no Danish words that sounds like "TiddlyWiki" and "tiddler". They are very foreign words - and some times I just replace them with "Wiki" and "article" - however it depends on the context, and if the audience are people who already have a hunch of what a wiki is... If they don't I would most likely use grouping of words as "Instantly editable blog or homepage" and "editable posts".
            The use of the words "TiddlyWiki" and "tiddler" implies originality and an entrance into a new terminology, which is very much what TiddlyWiki demands from new users anyway - so please keep the words, they make sense after a while..
          • andrewbarbour on 28 November 2010
            "Tiddlywiki" - kind of 'folksy' and quaint. Has a bit of charm.

            "Tiddler" - is a bit of a barrier to adoption. I have tried to give overviews to a few people and used the term 'tiddler' - at least 50% of the time there are chuckles and references to 'diddlers'. I would suggest calling them 'items' or 'posting'.
          • yakov on 16 November 2010
            I use the term "tiddler" for communication in google.groups; I prefer a "tw-entry" ("tw-запись" in russian) since it looks closer to IT terms.. just more brief and exact. Yeap, I think this actually not important.

            TiddlyWiki sound just as Coca-Cola - you never think of what it means, so it's ok, I think. Keep in mind however that english is not my native language.
          • frankfurtkid on 16 November 2010
            I got used to it - but when introducing people to these terms for the first time, they have to get over the smiles. Usually the functionality wins over, but I've had feedback that it does not sound very professional - but hey what does Google or Twitter sound like ? Also sounds much better than Edit Conflict - which I just got saving this tiddler
          +
          +
          +
          • None.
          +
          +
          +
          • not tagging
          +
          +
          + +
          + +
          + +
          How might you use TiddlyWiki in the future?
          +
          + last modified on + 15 November 2010 +
          + +
          + + +
          +
          +
          +
          +
          +
          +
          +
          • pmario on 7 April 2011
            • As my main knowledge database (private)
            • and presentation plattform. (private / public)

          • mama on 16 December 2010
            I guess I'm waiting to implement some future version of TiddlySpace on our servers, for quick and easy delivery of personal spaces with preincluded plugins and theme tailored for intranetuse...
            All students and collegues already have a single loginname and password for network & wireless internetconnection, moodle, Zimbra (email), educational material services etc...
            If TiddlySpace should be implemented - I would need a way to setup users/spaces from a csv (or a shared database) and a way to add members to a new space template from a shared/known list of users.
            I would need two versions of TiddlySpace, one for collegues and another one for students, to run from our two seperate servers. ..
            If TiddlySpace could interact with Moodle - I think it would be a seamless integration..

          • yakov on 16 November 2010
            Aside those many writings including scientific ones, aggregation uses like GTD or question or news aggregation and possible use for site I'd like to mention the concept which TW allows to implement.

            The IT world is very conservative in one thing: tree-based file systems. This just limits the mind. For instance, I used to sort music in my mobile phone by making folders so that I can accent the value of different tracks and this helps me to introduce some harmony in searching music that's proper for the moment. But eventually this came to too branched tree and tracks that has value in more than one sences became binded with this separation.

            Such a thing happens sometimes with all other things: notes, books.. whatever. TW makes a breakthrough here and after some tweaking can reorganize things so that I can forget about the eclectic branched limits. I haven't dig in this direction yet but I know that there are already somewhat player plugins based on web-technologies.. So this may be of interest.

            Hi-hi. Perhaps TW also will be usefull for organizing code for programming but this sounds rather fansy (as for now).
          • martinlindner on 16 November 2010
            I'd love to have a fully working version of TiddlyDocs, all by myself, which would be able to import docs.
            And I can imagine a lot uf uses as soon as i would be able to read/write/edit tiddlers from a client, (something like a twitter client where i could search for a thread of tiddlers, or subscribe to a tag).
          +
          +
          +
          • not tagging
          +
          +
          + +
          +
          +
          +
          +
          +
          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
          +
          +
          +
          +
          <!--{{{-->
          +<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>>
          +
          +
          +
          +
          <<importTiddlers>>
          +
          +
          +
          +
          <!--{{{-->
          +<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
          +<!--}}}-->
          +
          +
          +
          +
          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]]
          +
          +
          +
          +
          <!--{{{-->
          +<div class='header' role='banner' 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' role='navigation' refresh='content' tiddler='MainMenu'></div>
          +<div id='sidebar'>
          +<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
          +<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
          +</div>
          +<div id='displayArea' role='main'>
          +<div id='messageArea'></div>
          +<div id='tiddlerDisplay'></div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          +
          /*{{{*/
          +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='toolbar' role='navigation' 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>
          +<!--}}}-->
          +
          +
          + +
          + +
          +
          /***
          +|''Name''|RefreshTiddlerCommand|
          +|''Version''|0.3.0|
          +***/
          +//{{{
          +(function($) {
          +
          +var cmd = config.commands.refreshTiddler = {
          +	text: "refresh",
          +	locale: {
          +		refreshing: "Refreshing tiddler..."
          +	},
          +	tooltip: "refresh this tiddler to be the one on the server",
          +	handler: function(ev, src, title) {
          +		var tiddler = store.getTiddler(title);
          +		if(!tiddler) {
          +			tiddler = new Tiddler(title);
          +			merge(tiddler.fields, config.defaultCustomFields);
          +		}
          +		$(story.getTiddler(title)).find(".viewer").
          +			empty().text(cmd.locale.refreshing);
          +		var dirtyStatus = store.isDirty();
          +		story.loadMissingTiddler(title, {
          +			"server.workspace": tiddler.fields["server.recipe"]  ? "recipes/" + tiddler.fields["server.recipe"] :
          +				tiddler.fields["server.workspace"] || "bags/"+tiddler.fields["server.bag"],
          +			"server.host": tiddler.fields["server.host"],
          +			"server.type": tiddler.fields["server.type"]
          +		}, function() {
          +			store.setDirty(dirtyStatus);
          +		});
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="72 648 70 70" 
          +width="30" height="30">
          +<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +	<g>
          +		<path d="M 77.59005 669.34003 C 71.532745 681.90424 73.714462 697.4441 84.135193 707.86475 
          +		C 97.315445 721.0451 118.684715 721.0451 131.8649 707.86475 
          +		C 145.04515 694.68457 145.04515 673.31537 131.8649 660.13513 
          +		C 121.4441 649.7141 105.90419 647.53253 93.339905 653.5899 L 102.047455 662.2976 
          +		C 109.58637 660.2373 117.987976 662.16803 123.90997 668.08997 
          +		C 132.69673 676.8767 132.69673 691.12317 123.90997 699.90985 
          +		C 115.12313 708.6966 100.87699 708.6966 92.09012 699.90985 
          +		C 86.168266 693.98804 84.23744 685.58643 86.297653 678.04755 Z M 72 648 L 72 668.25 L 78.75 661.49957 
          +		L 99.00019 681.7502 L 105.750175 675.00006 L 85.50013 654.75012 L 92.249985 648 Z" fill="black"
          +		class="glyph"/>
          +	</g>
          +</g>
          +</svg>
          +
          +
          +
          A [[SiteIcon|SiteIcon tiddler]]@glossary helps provide some identity to your space.  Ideally it'd be a square and a minimum of 48*48 pixels size.  You can upload your site icon using the uploader below.
          +
          +<<binaryUploadPublic title:SiteIcon>>
          +
          +
          +
          {{{
          +!Template
          +<<view modifier SiteIcon width:48 height:48 preserveAspectRatio:yes label:no>> <<view modifier spaceLink>> on <<view modified date>>
          +<<<
          +<<view text wikified>>
          +<<<
          +!EndTemplate
          +}}}
          +
          +
          +
          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
          +
          +
          +
          /***
          +|''Name''|TiddlyFileImporter|
          +|''Version''|0.3.8|
          +|''Author''|Ben Gillies|
          +|''Type''|plugin|
          +|''Description''|Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.|
          +!Usage
          +Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.
          +!Requires
          +tiddlyweb
          +tiddlywebplugins.reflector
          +!Code
          +***/
          +//{{{
          +(function($){
          +if(!version.extensions.TiddlyFileImporter)
          +{ //# ensure that the plugin is only installed once
          +	version.extensions.TiddlyFileImporter = { installed: true };
          +}
          +
          +config.macros.fileImport = {
          +	reflectorURI: '/reflector?csrf_token=%0',
          +	incorrectTypeError: 'Incorrect File Type. You must upload a TiddlyWiki',
          +	uploadLabel: 'Upload',
          +	uploadLabelPrompt: 'Import tiddlers from this TiddlyWiki',
          +	step1FileText: 'File:',
          +	step1PostText: 'In the next screen you will select the tiddlers to import.',
          +	step1Title: 'Step 1: Pick a TiddlyWiki to import',
          +	step1TypeChooser: 'Import From:',
          +	step3Html: ['<input type="hidden" name="markList" />',
          +		'<input type="hidden" checked="true" name="chkSync" />',
          +		'<input type="hidden" name="chkSave" />',
          +		'<input type="hidden" name="txtSaveTiddler" />'].join(),
          +
          +	handler: function(place, macroName, params, wikifier, paramString) {
          +		var wizard = new Wizard();
          +		wizard.createWizard(place, 'Import a TiddlyWiki');
          +		this.restart(wizard);
          +	},
          +
          +	restart: function(wizard) {
          +		var me = config.macros.fileImport;
          +		wizard.addStep(me.step1Title, ['<input type="hidden" ',
          +			'name="markList" />'].join(""));
          +		var markList = wizard.getElement('markList');
          +		var uploadWrapper = document.createElement('div');
          +		markList.parentNode.insertBefore(uploadWrapper, markList);
          +		uploadWrapper.setAttribute('refresh', 'macro');
          +		uploadWrapper.getAttribute('macroName', 'fileImport');
          +		var iframeName = 'reflectorImporter' + Math.random().toString();
          +		me.createForm(uploadWrapper, wizard, iframeName);
          +		$(uploadWrapper).append('<p>' + me.step1PostText + '</p>');
          +		wizard.setValue('serverType', 'tiddlyweb');
          +		wizard.setValue('adaptor', new config.adaptors.file());
          +		wizard.setValue('host', config.defaultCustomFields['server.host']);
          +		wizard.setValue('context', {});
          +		var iframe = $(['<iframe name="' + iframeName + '" ',
          +			'style="display: none" />'].join("")).appendTo(uploadWrapper);
          +		var onSubmit = function(ev) {
          +			var uploadType = $('select[name=uploadtype]', wizard.formElem).val();
          +			if (uploadType == "file") {
          +				// set an onload ready to hijack the form
          +				me.setOnLoad(uploadWrapper, wizard, iframe[0]);
          +				wizard.importType = 'file';
          +				wizard.formElem.submit();
          +			} else {
          +				var csrf_token = config.extensions.tiddlyspace.getCSRFToken();
          +				$.ajax({
          +					url: "%0/reflector?csrf_token=%1".format(
          +						config.defaultCustomFields["server.host"], csrf_token),
          +					type: "POST",
          +					dataType: "text",
          +					data: {
          +						uri: $("input", ".importFrom", wizard.formElem).val()
          +					},
          +					success: function(data, txtStatus, xhr) {
          +						wizard.POSTResponse = data;
          +						me.importTiddlers(uploadWrapper, wizard);
          +					},
          +					error: function(xhr, txtStatus, error) {
          +						displayMessage(["There was an error fetching the ",
          +							'url: ', txtStatus].join(""));
          +						me.restart(wizard);
          +					}
          +				});
          +				return false;
          +			}
          +		};
          +		wizard.setButtons([{
          +			caption: me.uploadLabel,
          +			tooltip: me.uploadLabelPrompt,
          +			onClick: onSubmit
          +		}]);
          +		$(wizard.formElem).submit(function(ev) {
          +			onSubmit(ev);
          +			ev.preventDefault();
          +		});
          +	},
          +
          +	createForm: function(place, wizard, iframeName) {
          +		var form = wizard.formElem;
          +		var me = config.macros.fileImport;
          +		form.action = me.reflectorURI.format(
          +			config.extensions.tiddlyspace.getCSRFToken());
          +		form.enctype = 'multipart/form-data';
          +		form.encoding = 'multipart/form-data';
          +		form.method = 'POST';
          +		form.target = iframeName;
          +		onSelectChange = function(e) {
          +			var changeTo = $(this).val();
          +			if (changeTo == "file") {
          +				$(".importFrom").html('%0 <input type="file" name="file" />'.
          +					format(me.step1FileText));
          +			} else {
          +				$(".importFrom").html('URL: <input type="text" name="uri" />'
          +					+ ' Do you want <a target="_blank" href="http://faq.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F">inclusion</a> instead?');
          +			}
          +		};
          +		$(place).append('<span>%0</span>'.format(me.step1TypeChooser)).
          +			append($(['<select name="uploadtype"><option value="file" selected="selected">file',
          +				'<option value="uri">url</select>'].join("")).change(onSelectChange)).
          +			append('<div class="importFrom">%0<input type="file" name="file" /></div>'.
          +					format(me.step1FileText));
          +	},
          +
          +	setOnLoad: function(place, wizard, iframe) {
          +		var me = config.macros.fileImport;
          +		var loadHandler = function() {
          +			me.importTiddlers.apply(this, [place, wizard, iframe]);
          +		};
          +		iframe.onload = loadHandler;
          +		completeReadyStateChanges = 0;
          +		iframe.onreadystatechange = function() {
          +			if (++(completeReadyStateChanges) == 5) {
          +				loadHandler();
          +			}
          +		};
          +	},
          +
          +	importTiddlers: function(place, wizard, iframe) {
          +		var tmpStore = new TiddlyWiki();
          +		var POSTedWiki = "";
          +		if (wizard.importType == "file") {
          +			try {
          +				POSTedWiki= iframe.contentWindow
          +					.document.documentElement.innerHTML;
          +			} catch(e) {
          +				displayMessage(config.macros.fileImport.incorrectTypeError);
          +				config.macros.fileImport.restart(wizard);
          +				return;
          +			}
          +			// now we are done, so remove the iframe
          +			$(iframe).remove();
          +		} else {
          +			POSTedWiki = wizard.POSTResponse;
          +		}
          +
          +		tmpStore.importTiddlyWiki(POSTedWiki);
          +		var newTiddlers = tmpStore.getTiddlers();
          +		var workspace = config.defaultCustomFields['server.workspace'];
          +		var context = {
          +			status: true,
          +			statusText: 'OK',
          +			httpStatus: 200,
          +			adaptor: wizard.getValue('adaptor'),
          +			tiddlers: newTiddlers
          +		};
          +		context.adaptor.store = tmpStore;
          +		wizard.setValue('context', context);
          +		wizard.setValue('workspace', workspace);
          +		wizard.setValue('inFileImport', true);
          +		config.macros.importTiddlers.onGetTiddlerList(context, wizard);
          +	}
          +};
          +
          +var _onGetTiddler = config.macros.importTiddlers.onGetTiddler;
          +config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
          +	if (wizard.getValue('inFileImport')) {
          +		var me = config.macros.importTiddlers;
          +		if(!context.status)
          +			displayMessage("Error in importTiddlers.onGetTiddler: " + context.statusText);
          +		var tiddler = context.tiddler;
          +		var fields = tiddler.fields;
          +		merge(fields, config.defaultCustomFields);
          +		fields["server.workspace"] = wizard.getValue('workspace');
          +		delete fields['server.permissions'];
          +		delete fields['server.bag'];
          +		fields['server.page.revision'] = 'false';
          +		delete fields['server.recipe'];
          +		fields.changecount = 1;
          +		store.suspendNotifications();
          +		store.saveTiddler(tiddler.title, tiddler.title, tiddler.text,
          +			tiddler.modifier, tiddler.modified, tiddler.tags, tiddler.fields,
          +			false, tiddler.created);
          +		store.resumeNotifications();
          +		var remainingImports = wizard.getValue("remainingImports")-1;
          +		wizard.setValue("remainingImports",remainingImports);
          +		if(remainingImports === 0) {
          +			if(context.isSynchronous) {
          +				store.notifyAll();
          +				refreshDisplay();
          +			}
          +			wizard.setButtons([
          +					{caption: me.doneLabel, tooltip: me.donePrompt, onClick: me.onClose}
          +				],me.statusDoneImport);
          +			autoSaveChanges();
          +		}
          +	} else {
          +		_onGetTiddler.apply(this, arguments);
          +	}
          +};
          +
          +var _onCancel = config.macros.importTiddlers.onCancel;
          +config.macros.importTiddlers.onCancel = function(e)
          +{
          +	var wizard = new Wizard(this);
          +	if (!wizard.getValue('inFileImport')) {
          +		return _onCancel.apply(this, arguments);
          +	}
          +	var place = wizard.clear();
          +	config.macros.fileImport.restart(wizard);
          +	return false;
          +};
          +
          +var _step3Html = config.macros.importTiddlers.step3Html;
          +var _onGetTiddlerList = config.macros.importTiddlers.onGetTiddlerList;
          +config.macros.importTiddlers.onGetTiddlerList = function(context, wizard) {
          +	var fileImport = config.macros.fileImport;
          +	var importTiddlers = config.macros.importTiddlers;
          +	if (wizard.getValue('inFileImport')) {
          +		importTiddlers.step3Html = fileImport.step3Html;
          +	} else {
          +		importTiddlers.step3Html = _step3Html;
          +	}
          +	_onGetTiddlerList.apply(this, arguments);
          +};
          +})(jQuery);
          +//}}}
          +
          +
          +
          <!DOCTYPE html>
          +<html lang="en">
          +<head>
          +	<meta charset="UTF-8">
          +	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
          +	<title>Reply</title>
          +	<link rel="stylesheet" href="//tiddlyspace.com/bags/benspa_public/tiddlers/bootvelcro.css">
          +	<style>
          +		html,
          +		body {
          +			overflow: hidden;
          +			background-color: transparent;
          +		}
          +
          +		#container {
          +			/* prevent a fouc if no images present */
          +			display: none;
          +		}
          +
          +		.modal-header {
          +			border-bottom: none;
          +			padding: 5px 0 0;
          +			position: absolute;
          +			width: 100%;
          +			background-color: #e0e0e0;
          +			-webkit-border-radius: 6px 6px 0 0;
          +			-moz-border-radius: 6px 6px 0 0;
          +			border-radius: 6px 6px 0 0;
          +			cursor: move;
          +		}
          +
          +		.form-actions {
          +			position: absolute;
          +			bottom: 0;
          +			box-sizing: border-box;
          +			-moz-box-sizing: border-box;
          +			width: 100%;
          +			margin: 0;
          +			border-radius: 0 0 6px 6px;
          +			background-color: #e0e0e0;
          +			border-top: 1px solid gray;
          +		}
          +
          +		.form-actions input.btn {
          +			width: auto;
          +			float: right;
          +			margin: 0 0.2em;
          +		}
          +
          +		.closeBtn {
          +			background-color: #DCE7F1 !important;
          +		}
          +
          +		.primary {
          +			background-color: #09F !important;
          +		}
          +
          +		h1 {
          +			margin-bottom: 9px;
          +			margin-top: 9px;
          +		}
          +
          +		body {
          +			width: 100%;
          +			height: 100%;
          +			position: absolute;
          +		}
          +
          +		.modal {
          +			margin: 10px;
          +			top: 0;
          +			left: 0;
          +			bottom: 0;
          +			width: 510px;
          +			position: absolute;
          +			box-shadow: #444 0px 0px 10px 2px;
          +			border-radius: 6px;
          +			background-color: white;
          +			border: 1px solid gray;
          +			background-color: #F0F4F8;
          +		}
          +
          +		label em {
          +			cursor: pointer;
          +		}
          +
          +		.modal-body {
          +			overflow: auto;
          +			position: absolute;
          +			top: 0;
          +			bottom: 0;
          +			left: 0;
          +			right: 0;
          +			margin: 65px 20px 67px;
          +			background-color: transparent;
          +		}
          +
          +		.nav-tabs {
          +			padding-left: 1%;
          +			margin: 0;
          +			width: 99%;
          +			border-color: gray;
          +		}
          +
          +		.nav-tabs > li {
          +			cursor: pointer;
          +		}
          +
          +		.nav-tabs > li > a {
          +			line-height: 2.4em;
          +			font-weight: bold;
          +			font-size: 100%;
          +		}
          +
          +		.nav-tabs > li.active > a{
          +			background-color: #F0F4F8;
          +			border-color: gray;
          +			border-bottom-color: #F0F4F8;
          +		}
          +
          +		.active {
          +			display: block;
          +		}
          +
          +		input,
          +		textarea,
          +		select,
          +		.uneditable-input {
          +			color: #606060;
          +		}
          +
          +		.imagePicker {
          +			-moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          +			-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          +			box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          +			border: 1px solid #CCC;
          +			height: 110px;
          +			overflow: auto;
          +			-webkit-border-radius: 3px;
          +			-moz-border-radius: 3px;
          +			border-radius: 3px;
          +			margin-left: 0;
          +		}
          +
          +		.imagePicker img {
          +			margin: 5px;
          +			border: 2px solid transparent;
          +		}
          +
          +		.imagePicker .current {
          +			border: 2px dotted #555;
          +		}
          +
          +		label {
          +			font-weight: bold;
          +		}
          +
          +		.form-actions label {
          +			float: left;
          +			margin-top: 0.75em;
          +		}
          +
          +		fieldset input,
          +		fieldset textarea {
          +			width: 90%;
          +			border-color: gray;
          +		}
          +
          +		@media all and (max-width: 550px) {
          +			.modal {
          +				width: 95%;
          +			}
          +		}
          +
          +		#help {
          +			position: absolute;
          +			border: 0;
          +			right: 4px;
          +			top: 5px;
          +			text-indent: -9999px;
          +			color: transparent;
          +			height: 16px;
          +			width: 16px;
          +			background: none;
          +			background-image: url(/bags/common/tiddlers/help.png);
          +			background-repeat: no-repeat;
          +			background-color: white;
          +			z-index: 2;
          +			border-radius: 10px;
          +		}
          +
          +		#help-info {
          +			padding: 0;
          +			border: 1px solid gray;
          +			width: 60%;
          +			height: 50px;
          +			color: #404040;
          +			background-color: white;
          +			position: absolute;
          +			top: 5px;
          +			right: 5px;
          +			z-index: 1;
          +			cursor: auto;
          +			border-radius: 5px;
          +
          +		}
          +
          +		#help-info p {
          +			padding: 10px 25px;
          +			margin-bottom: 0;
          +		}
          +	</style>
          +</head>
          +<body>
          +	<div id="container">
          +		<form action="#" class="modal">
          +			<div class="modal-header">
          +				<button id="help">help</button>
          +				<div id="help-info" style="display:none;"><p>
          +				Found something interesting? Write about it in your own space. <a href="//docs.tiddlyspace.com/Reply to this Tiddler" target="_blank">Find out more</a>
          +				</p></div>
          +				<ul class="nav nav-tabs" data-tabs="tabs">
          +					<li class="active" data-tab-name="post"><a href="#postForm">Reply</a></li>
          +				</ul>
          +			</div>
          +
          +
          +			<fieldset id="postForm" class="modal-body">
          +				<label>Title
          +					<input type="text" name="title">
          +				</label>
          +				<input type="hidden" name="url">
          +				<label>Post
          +					<textarea name="text" rows="8"></textarea>
          +				</label>
          +				<label>Tags
          +					<input type="text" name="tags" value="">
          +				</label>
          +			</fieldset>
          +
          +
          +			<div class="form-actions">
          +				<label class="checkbox">
          +					<input type="checkbox" name="private" val="private">
          +					keep private
          +				</label>
          +				<input type="submit" class="btn primary btn-large" value="Done">
          +				<input type="button" class="btn btn-large closeBtn" value="Cancel">
          +			</div>
          +		</form>
          +	</div>
          +
          +	<script type="text/javascript"
          +            src="/bags/common/tiddlers/jquery.js"></script>
          +	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/_reply.js"></script>
          +</body>
          +</html>
          +
          +
          +
          <!DOCTYPE html>
          +<html>
          +<head>
          +	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
          +	<title>Account</title>
          +	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
          +	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
          +	<link href="/bags/common/tiddlers/jquery-ui.custom.css" type='text/css' rel='stylesheet' >
          +</head>
          +<body>
          +
          +<div id="container">
          +	<div class="main section">
          +		<a class="app" href="/">home</a>
          +		<div class="left">
          +		<div id="siteiconArea">
          +		<h2>User Icon</h2>
          +		<div>
          +			<img id="siteicon" class="siteicon">
          +			<form id="upload" method="POST" enctype="multipart/form-data">
          +				<input type="hidden" name="title" value="SiteIcon" />
          +				<input type="hidden" name="tags" value="excludeLists">
          +				<input type="hidden" name="csrf_token" class="csrf" />
          +				<input type="file" name="file" accept="image/*" />
          +				<input type="submit" value="upload" />
          +			</form>
          +			<div id="dropzone">Drop file here
          +				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
          +			</div>
          +		</div>
          +		</div>
          +		<h2>Find Space</h2>
          +		<form class="spaceSearch">
          +			<input class="inputBox" type="text" placeholder="find space" />
          +			<a href="http://docs.tiddlyspace.com/What%20is%20a%20Space%3F" class="help"
          +				title="What is a space?">What is a space?</a>
          +			<button>view all</button>
          +		</form>
          +		<div class='list-container'>
          +			You are a member of the following spaces:
          +			<ul class='ts-space-search'>
          +			</ul>
          +		</div>
          +		<h2>Create New Space</h2>
          +		<form class="ts-spaces">
          +			<input class="inputBox" type="text" name="spacename" placeholder="space name"><span class="hostSuffix">.tiddlyspace.com</span>
          +			<input type="submit" value="Create Space" />
          +		</form>
          +		</div>
          +		<div class="right">
          +		<h2>Change Password</h2>
          +		<form class="ts-password">
          +			<input class="inputBox" placeholder="existing password" type="password" name="password">
          +			<input class="inputBox" placeholder="new password" type="password" name="new_password">
          +			<input class="inputBox" placeholder="new password"	type="password" name="new_password_confirm">
          +			<input type="submit" value="Change password">
          +		</form>
          +		<h2>OpenID</h2>
          +		<h3>Why OpenID?</h3>
          +		<a href="http://openid.net/"><img src="/bags/common/tiddlers/openid.png" alt="openid" ></a><br />
          +		Use just one username and password across hundreds of OpenID-enabled sites.<br />
          +		It's an open standard.<br />
          +		<a href="http://openid.net/what/">learn more</a>
          +		<ul class="ts-identities"></ul>
          +		<form class="ts-openid" target="_top">
          +			<div>
          +				Add an openid:
          +			</div>
          +			<input class="inputBox" type="text" name="openid" placeholder="your openid" />
          +			<input type="submit" value="Register" />
          +			<a href="http://openid.net/get-an-openid/" class="help"
          +			title="What is an open id?">What is an open id?</a>
          +		</form>
          +		</div>
          +		<div class="clear"></div>
          +	</div>
          +</div>
          +<script src="/bags/common/tiddlers/backstage.js"></script>
          +<script src='/bags/common/tiddlers/jquery.js'></script>
          +<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          +<script src='/bags/common/tiddlers/chrjs.space'></script>
          +<script src='/bags/common/tiddlers/chrjs.users'></script>
          +<script src='/bags/common/tiddlers/chrjs.identities'></script>
          +<script src="/bags/common/tiddlers/jquery-ui.custom.js"></script>
          +<script src='/bags/common/tiddlers/jquery-form.js'></script>
          +<script src="/bags/common/tiddlers/siteiconupload.js"></script>
          +<script src='/bags/common/tiddlers/ts.js'></script>
          +<script src="/status.js"></script>
          +<script type="text/javascript">
          +/*
          + * jQuery UI Autocomplete HTML Extension
          + *
          + * Copyright 2010, Scott González (http://scottgonzalez.com)
          + * Dual licensed under the MIT or GPL Version 2 licenses.
          + *
          + * http://github.com/scottgonzalez/jquery-ui-extensions
          + */
          +(function( $ ) {
          +
          +var proto = $.ui.autocomplete.prototype,
          +	initSource = proto._initSource;
          +
          +function filter( array, term ) {
          +	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
          +	return $.grep( array, function(value) {
          +		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
          +	});
          +}
          +
          +$.extend( proto, {
          +	_initSource: function() {
          +		if ( this.options.html && $.isArray(this.options.source) ) {
          +			this.source = function( request, response ) {
          +				response( filter( this.options.source, request.term ) );
          +			};
          +		} else {
          +			initSource.call( this );
          +		}
          +	},
          +
          +	_renderItem: function( ul, item) {
          +		return $( "<li></li>" )
          +			.data( "item.autocomplete", item )
          +			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
          +			.appendTo( ul );
          +	}
          +});
          +
          +})( jQuery );
          +
          +/***
          +_accounts application specific javascript
          +***/
          +var link;
          +ts.init(function(ts) {
          +	if(ts.user.anon) { // redirect to homepage when user not logged in
          +		window.location = ts.getHost();
          +	} else if(ts.user.name === ts.currentSpace){
          +		initSiteIconUpload(ts.user.name);
          +	} else {
          +		link = $("<a />").attr("href", ts.getHost(ts.user.name) + "/_account").text("Change User Icon");
          +		$("#siteiconArea div").empty().append(link);
          +	}
          +	$(".hostSuffix").text("." + ts.getHost("").split("//")[1]);
          +	ts.getSpaces(function(spaces) {
          +		$("<div class='info' />").text("You have " + spaces.length + " spaces.").insertBefore($(".spaceSearch")[0]);
          +		$("form.spaceSearch input").autocomplete({
          +			html: true,
          +			source: function(req, response) {
          +				ts.getSpaces(function(spaces) {
          +					var selected = [];
          +					for(var i = 0; i < spaces.length; i++) {
          +						var space = spaces[i];
          +						if(space.name.indexOf(req.term) > -1) {
          +							var host = ts.getHost(space.name) ;
          +							var img = host + "/SiteIcon";
          +							selected.push({
          +								value: space.name,
          +								label: '<a href="' + host + '" target="_parent" class="autocompleteLink"><img src="' + img + '" style="height:24px;width:auto;max-height:24px;max-width:24px;"/>' + space.name + '</a>'
          +							});
          +						}
          +					}
          +					response(selected);
          +				});
          +			},
          +			select: function(event, ui) {
          +				window.top.location = ts.getHost(ui.item.value);
          +			}
          +		});
          +
          +		var $ul = $('.ts-space-search');
          +		$.each(spaces, function(i, space) {
          +			$ul.append($('<li/>').html($('<a/>').attr('href', space.uri)
          +				.text(space.name)));
          +		});
          +
          +		$('form.spaceSearch button').click(function(ev) {
          +			$('.list-container').slideToggle('fast');
          +			ev.preventDefault();
          +			return false;
          +		});
          +	});
          +});
          +
          +if(window != window.top) {
          +	$("html").addClass("iframeMode");
          +	$("a").live("click",function(ev) {
          +		$(ev.target).attr("target", "_parent");
          +	});
          +}
          +</script>
          +<!--[if lt IE 8]>
          +<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
          +<![endif]-->
          +</body>
          +</html>
          +
          +
          +
          
          +
          +
          +
          !Upload an icon
          +<<tiddler spaceIcon>>
          +!Describe your space
          +If you haven't already done so, you should provide a brief decscription of yourself and what you're using this space for. To do this, just edit the [[SiteInfo]] tiddler (keeping the title the same of course).
          +
          +!Change the title
          +<<tiddler spaceTitle>>
          +!Change the theme
          +<<tiddler colorScheme>>
          +!Change the menu
          +If you'd like to change the menu items along the top, you can edit the [[MainMenu]] tiddler.
          +
          +!Change the default tiddlers
          +<<tiddler setDefaultTiddlers>>
          +!More Advanced customisations
          +If you know HTML and CSS, you can edit some or all of the following tiddlers to customise your space further:
          +* PageTemplate
          +* EditTemplate
          +* ViewTemplate
          +* StyleSheet
          +
          +
          +
          
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceConfig|
          +|''Version''|0.7.7|
          +|''Description''|TiddlySpace configuration|
          +|''Status''|stable|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceConfig.js|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlyWebConfig ServerSideSavingPlugin TiddlyFileImporter|
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tweb = config.extensions.tiddlyweb;
          +
          +var recipe = config.defaultCustomFields["server.workspace"].split("recipes/")[1];
          +var currentSpace; // assigned later
          +
          +var disabledTabs = [];
          +
          +var coreBags = ["system", "tiddlyspace"];
          +var systemSpaces = ["plugins", "info", "images", "theme"];
          +systemSpaces = $.map(systemSpaces, function(item, i) {
          +	return "system-%0_public".format(item);
          +});
          +
          +// hijack search macro to add custom attributes for mobile devices
          +var _search = config.macros.search.handler;
          +config.macros.search.handler = function(place, macroName, params) {
          +	_search.apply(this, arguments);
          +	$(".searchField:input", place).
          +		attr({ autocapitalize: "off", autocorrect: "off" });
          +};
          +
          +// arg is either a container name or a tiddler object
          +// if fuzzy is truthy, space may be inferred from workspace (for new tiddlers)
          +// returns space object or false
          +var determineSpace = function(arg, fuzzy) {
          +	if(typeof arg == "string") { // container name
          +		var space = split(arg, "_", "r");
          +		return ["public", "private"].contains(space.type) ? space : false;
          +	} else if(arg) { // tiddler
          +		var container = determineContainer(arg, fuzzy);
          +		return container ? determineSpace(container.name, fuzzy) : false;
          +	} else {
          +		return false;
          +	}
          +};
          +
          +// if fuzzy is truthy, container may be inferred from workspace for new tiddlers
          +// returns container object or false
          +var determineContainer = function(tiddler, fuzzy) { // TODO: expose?
          +	var bag = tiddler.fields["server.bag"];
          +	var recipe = tiddler.fields["server.recipe"]; // XXX: unused/irrelevant/redundant!?
          +	if(bag) {
          +		return { type: "bag", name: bag };
          +	} else if(recipe) {
          +		return { type: "recipe", name: recipe };
          +	} else if(fuzzy) { // new tiddler
          +		var workspace = tiddler.fields["server.workspace"];
          +		if(workspace) {
          +			var container = split(workspace, "/", "l");
          +			return ["bags", "recipes"].contains(container.type) ? container : false;
          +		} else {
          +			return false;
          +		}
          +	} else {
          +		return false;
          +	}
          +};
          +
          +// hijack removeTiddlerCallback to restore tiddler from recipe cascade -- TODO: move into TiddlyWebWiki?
          +var sssp = config.extensions.ServerSideSavingPlugin;
          +var _removeTiddlerCallback = sssp.removeTiddlerCallback;
          +sssp.removeTiddlerCallback = function(context, userParams) {
          +	var title = context.tiddler.title;
          +	var recipe = context.tiddler.fields["server.recipe"];
          +	_removeTiddlerCallback.apply(this, arguments);
          +	if(recipe) {
          +		context.workspace = "recipes/" + recipe;
          +		var callback = function(context, userParams) {
          +			if(context.status) {
          +				var dirty = store.isDirty();
          +				store.saveTiddler(context.tiddler).clearChangeCount();
          +				store.setDirty(dirty);
          +			} else {
          +				store.notify(title, true);
          +			}
          +		};
          +		context.adaptor.getTiddler(title, context, null, callback);
          +	}
          +};
          +
          +// splits a string once using delimiter
          +// mode "l" splits at the first, "r" at the last occurrence
          +// returns an object with members type and name
          +var split = function(str, sep, mode) {
          +	mode = mode == "r" ? "pop" : "shift"; // TODO: use +/-1 instead of "l"/"r"?
          +	var arr = str.split(sep);
          +	var type = arr.length > 1 ? arr[mode]() : null;
          +	return { type: type, name: arr.join(sep) };
          +};
          +
          +var plugin = config.extensions.tiddlyspace = {
          +	currentSpace: determineSpace(recipe),
          +	coreBags: coreBags.concat(systemSpaces),
          +
          +	determineSpace: determineSpace,
          +	isValidSpaceName: function(name) {
          +		return name.match(/^[a-z][0-9a-z\-]*[0-9a-z]$/) ? true : false;
          +	},
          +	getCurrentBag: function(type) {
          +		return "%0_%1".format(currentSpace, type);
          +	},
          +	getCurrentWorkspace: function(type) {
          +		return "bags/" + this.getCurrentBag(type);
          +	},
          +	// returns the URL for a space's avatar (SiteIcon) based on a server_host
          +	// object and an optional space name
          +	// optional nocors argument prevents cross-domain URLs from being generated
          +	getAvatar: function(host, space, nocors) {
          +		if(space && typeof space != "string") { // backwards compatibility -- XXX: deprecated
          +			space = space.name;
          +		}
          +		var subdomain = nocors ? currentSpace : space;
          +		host = host ? this.getHost(host, subdomain) : "";
          +		var bag = space ? "%0_public".format(space) : "tiddlyspace";
          +		return "%0/bags/%1/tiddlers/SiteIcon".format(host, bag);
          +	},
          +	// returns the URL based on a server_host object (scheme, host, port) and an
          +	// optional subdomain
          +	getHost: function(host, subdomain) {
          +		if(host === undefined) { // offline
          +			tweb.status.server_host = {}; // prevents exceptions further down the stack -- XXX: hacky workaround, breaks encapsulation
          +			return null;
          +		}
          +		subdomain = subdomain ? subdomain + "." : "";
          +		var url = "%0://%1%2".format(host.scheme, subdomain, host.host);
          +		var port = host.port;
          +		if(port && !["80", "443"].contains(port)) {
          +			url += ":" + port;
          +		}
          +		return url;
          +	},
          +	disableTab: function(tabTiddler) {
          +		if(typeof(tabTiddler) == "string") {
          +			disabledTabs.push(tabTiddler);
          +		} else {
          +			for(var i = 0; i < tabTiddler.length; i++) {
          +				plugin.disableTab(tabTiddler[i]);
          +			}
          +		}
          +	},
          +    checkSyncStatus: function(tiddler) {
          +		if(tiddler) {
          +			var title = typeof(tiddler) === "string" ? tiddler : tiddler.title;
          +			var el = story.getTiddler(title) || false;
          +			if(el) {
          +				refreshElements(el);
          +			}
          +		}
          +	},
          +	isDisabledTab: function(tabTitle) {
          +		var match = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])", "mg").exec(tabTitle);
          +		var tabIdentifier = match ? match[1] : tabTitle;
          +		return disabledTabs.contains(tabIdentifier);
          +	},
          +	getCSRFToken: window.getCSRFToken || null // this may not have been processed yet
          +};
          +
          +currentSpace = plugin.currentSpace.name;
          +
          +tweb.serverPrefix = tweb.host.split("/")[3] || ""; // XXX: assumes root handler
          +tweb.getStatus(function(status) {
          +	var url = plugin.getHost(status.server_host);
          +	tweb.status.server_host.url = url;
          +	config.messages.tsVersion = status.version;
          +});
          +
          +if(window.location.protocol == "file:") {
          +	// enable AutoSave by default
          +	config.options.chkAutoSave = config.options.chkAutoSave === undefined ?
          +		true : config.options.chkAutoSave;
          +} else {
          +	// set global read-only mode based on membership heuristics
          +	var indicator = store.getTiddler("SiteTitle") || tiddler;
          +	readOnly = !(recipe.split("_").pop() == "private" ||
          +		tweb.hasPermission("write", indicator));
          +	// replace TiddlyWiki's ImportTiddlers due to cross-domain restrictions
          +	if(config.macros.fileImport) {
          +		$.extend(config.macros.importTiddlers, config.macros.fileImport);
          +	}
          +}
          +
          +// hijack saveChanges to ensure SystemSettings is private by default
          +var _saveChanges = saveChanges;
          +saveChanges = function(onlyIfDirty, tiddlers) {
          +	if(tiddlers && tiddlers.length == 1 &&
          +			tiddlers[0] && tiddlers[0].title == "SystemSettings") {
          +		var fields = tiddlers[0].fields;
          +		delete fields["server.recipe"];
          +		fields["server.bag"] = plugin.getCurrentBag("private");
          +		fields["server.workspace"] = plugin.getCurrentWorkspace("private");
          +	}
          +	return _saveChanges.apply(this, arguments);
          +};
          +
          +// ensure backstage is always initialized
          +// required to circumvent TiddlyWiki's read-only based handling
          +config.macros.backstageInit = {
          +	init: function() {
          +		showBackstage = true;
          +	}
          +};
          +
          +// disable evaluated macro parameters for security reasons
          +config.evaluateMacroParameters = "none";
          +var _parseParams = String.prototype.parseParams;
          +String.prototype.parseParams = function(defaultName, defaultValue, allowEval,
          +		noNames, cascadeDefaults) {
          +	if(config.evaluateMacroParameters == "none") {
          +		arguments[2] = false;
          +	}
          +	return _parseParams.apply(this, arguments);
          +};
          +
          +var _tabsMacro = config.macros.tabs.handler;
          +config.macros.tabs.handler = function(place, macroName, params) {
          +	var newParams = [params[0]]; // keep cookie name
          +	for(var i = 1; i < params.length; i += 3) {
          +		var tabTitle = params[i + 2];
          +		if(!plugin.isDisabledTab(tabTitle)){
          +			newParams = newParams.concat(params[i], params[i + 1], tabTitle);
          +		}
          +	}
          +	_tabsMacro.apply(this, [place, macroName, newParams]);
          +};
          +
          +// disable ControlView for XHRs by default
          +$.ajaxSetup({
          +	beforeSend: function(xhr) {
          +		xhr.setRequestHeader("X-ControlView", "false");
          +	}
          +});
          +// TiddlyWeb adaptor currently still uses httpReq, which needs extra magic -- XXX: obsolete this!
          +var _httpReq = httpReq;
          +httpReq = function(type, url, callback, params, headers, data, contentType,
          +		username, password, allowCache) {
          +	headers = headers || {};
          +	headers["X-ControlView"] = "false";
          +	_httpReq.apply(this, arguments);
          +};
          +
          +// register style sheet for backstage separately (important)
          +store.addNotification("StyleSheetBackstage", refreshStyles);
          +
          +// option for default privacy setting
          +config.optionsDesc.chkPrivateMode = "Set your default privacy mode to private";
          +config.optionsSource.chkPrivateMode = "setting";
          +config.options.chkPrivateMode = config.options.chkPrivateMode || false;
          +saveSystemSetting("chkPrivateMode", true);
          +config.defaultCustomFields["server.workspace"] = plugin.
          +	getCurrentWorkspace(config.options.chkPrivateMode ? "private" : "public");
          +
          +config.paramifiers.follow = {
          +	onstart: function(v) {
          +		if(!readOnly) {
          +			var bag = "%0_public".format(currentSpace);
          +			story.displayTiddler(null, v, DEFAULT_EDIT_TEMPLATE, null, null,
          +				"server.bag:%0 server.workspace:bags/%0".format(bag));
          +			story.setTiddlerTag(v, "follow", 1);
          +			story.focusTiddler(v, "text");
          +		}
          +	}
          +};
          +
          +var fImport = config.macros.fileImport;
          +if(fImport) {
          +	fImport.uploadTo = "Upload to: ";
          +	var _createForm = config.macros.fileImport.createForm;
          +	config.macros.fileImport.createForm = function(place, wizard, iframeName) {
          +		var container = $("<div />").text(fImport.uploadTo).appendTo(place);
          +		var select = $('<select name="mode" />').appendTo(container)[0];
          +		$('<option value="private" selected>private</a>').appendTo(select);
          +		$('<option value="public">public</a>').appendTo(select);
          +		wizard.setValue("importmode", select);
          +		_createForm.apply(this, [place, wizard, iframeName]);
          +	};
          +
          +	var _onGet = config.macros.importTiddlers.onGetTiddler;
          +	config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
          +		var type = $(wizard.getValue("importmode")).val();
          +		var ws =  plugin.getCurrentWorkspace(type);
          +		wizard.setValue("workspace", ws);
          +		_onGet.apply(this, [context, wizard]);
          +	};
          +}
          +
          +config.extensions.ServerSideSavingPlugin.reportSuccess = function(msg, tiddler) {
          +	plugin.checkSyncStatus(tiddler);
          +	msg = config.extensions.ServerSideSavingPlugin.locale[msg];
          +	var link = "/" + encodeURIComponent(tiddler.title);
          +	displayMessage(msg.format([tiddler.title]), link);
          +};
          +
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|TiddlyWebAdaptor|
          +|''Description''|adaptor for interacting with TiddlyWeb|
          +|''Author:''|FND|
          +|''Contributors''|Chris Dent, Martin Budden|
          +|''Version''|1.4.10|
          +|''Status''|stable|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/association/adaptors/TiddlyWebAdaptor.js|
          +|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.5|
          +|''Keywords''|serverSide TiddlyWeb|
          +!Notes
          +This plugin includes [[jQuery JSON|http://code.google.com/p/jquery-json/]].
          +!To Do
          +* createWorkspace
          +* document custom/optional context attributes (e.g. filters, query, revision) and tiddler fields (e.g. server.title, origin)
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var adaptor = config.adaptors.tiddlyweb = function() {};
          +
          +adaptor.prototype = new AdaptorBase();
          +adaptor.serverType = "tiddlyweb";
          +adaptor.serverLabel = "TiddlyWeb";
          +adaptor.mimeType = "application/json";
          +
          +adaptor.parsingErrorMessage = "Error parsing result from server";
          +adaptor.noBagErrorMessage = "no bag specified for tiddler";
          +adaptor.locationIDErrorMessage = "no bag or recipe specified for tiddler"; // TODO: rename
          +
          +// retrieve current status (requires TiddlyWeb status plugin)
          +adaptor.prototype.getStatus = function(context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	var uriTemplate = "%0/status";
          +	var uri = uriTemplate.format([context.host]);
          +	var req = httpReq("GET", uri, adaptor.getStatusCallback, context,
          +		null, null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getStatusCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = responseText ? status : false;
          +	try {
          +		context.statusText = xhr.statusText;
          +	} catch(exc) { // offline (Firefox)
          +		context.status = false;
          +		context.statusText = null;
          +	}
          +	context.httpStatus = xhr.status;
          +	if(context.status) {
          +		context.serverStatus = $.evalJSON(responseText); // XXX: error handling!?
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// retrieve a list of workspaces
          +adaptor.prototype.getWorkspaceList = function(context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.workspaces = [];
          +	var uriTemplate = "%0/recipes"; // XXX: bags?
          +	var uri = uriTemplate.format([context.host]);
          +	var req = httpReq("GET", uri, adaptor.getWorkspaceListCallback,
          +		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getWorkspaceListCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(status) {
          +		try {
          +			var workspaces = $.evalJSON(responseText);
          +		} catch(ex) {
          +			context.status = false; // XXX: correct?
          +			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          +			if(context.callback) {
          +				context.callback(context, context.userParams);
          +			}
          +			return;
          +		}
          +		context.workspaces = workspaces.map(function(itm) { return { title: itm }; });
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// retrieve a list of tiddlers
          +adaptor.prototype.getTiddlerList = function(context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	var uriTemplate = "%0/%1/%2/tiddlers%3";
          +	var params = context.filters ? "?" + context.filters : "";
          +	if(context.format) {
          +		params = context.format + params;
          +	}
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([context.host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name), params]);
          +	var req = httpReq("GET", uri, adaptor.getTiddlerListCallback,
          +		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getTiddlerListCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(status) {
          +		context.tiddlers = [];
          +		try {
          +			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
          +		} catch(ex) {
          +			context.status = false; // XXX: correct?
          +			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          +			if(context.callback) {
          +				context.callback(context, context.userParams);
          +			}
          +			return;
          +		}
          +		for(var i = 0; i < tiddlers.length; i++) {
          +			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
          +			context.tiddlers.push(tiddler);
          +		}
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// perform global search
          +adaptor.prototype.getSearchResults = function(context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	var uriTemplate = "%0/search?q=%1%2";
          +	var filterString = context.filters ? ";" + context.filters : "";
          +	var uri = uriTemplate.format([context.host, context.query, filterString]); // XXX: parameters need escaping?
          +	var req = httpReq("GET", uri, adaptor.getSearchResultsCallback,
          +		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getSearchResultsCallback = function(status, context, responseText, uri, xhr) {
          +	adaptor.getTiddlerListCallback(status, context, responseText, uri, xhr); // XXX: use apply?
          +};
          +
          +// retrieve a particular tiddler's revisions
          +adaptor.prototype.getTiddlerRevisionList = function(title, limit, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([context.host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
          +	var req = httpReq("GET", uri, adaptor.getTiddlerRevisionListCallback,
          +		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getTiddlerRevisionListCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(status) {
          +		context.revisions = [];
          +		try {
          +			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
          +		} catch(ex) {
          +			context.status = false; // XXX: correct?
          +			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          +			if(context.callback) {
          +				context.callback(context, context.userParams);
          +			}
          +			return;
          +		}
          +		for(var i = 0; i < tiddlers.length; i++) {
          +			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
          +			context.revisions.push(tiddler);
          +		}
          +		var sortField = "server.page.revision";
          +		context.revisions.sort(function(a, b) {
          +			return a.fields[sortField] < b.fields[sortField] ? 1 :
          +				(a.fields[sortField] == b.fields[sortField] ? 0 : -1);
          +		});
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// retrieve an individual tiddler revision -- XXX: breaks with standard arguments list -- XXX: convenience function; simply use getTiddler?
          +adaptor.prototype.getTiddlerRevision = function(title, revision, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.revision = revision;
          +	return this.getTiddler(title, context, userParams, callback);
          +};
          +
          +// retrieve an individual tiddler
          +//# context is an object with members host and workspace
          +//# callback is passed the new context and userParams
          +adaptor.prototype.getTiddler = function(title, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = title;
          +	if(context.revision) {
          +		var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions/%4";
          +	} else {
          +		uriTemplate = "%0/%1/%2/tiddlers/%3";
          +	}
          +	if(!context.tiddler) {
          +		context.tiddler = new Tiddler(title);
          +	}
          +	context.tiddler.fields["server.type"] = adaptor.serverType;
          +	context.tiddler.fields["server.host"] = AdaptorBase.minHostName(context.host);
          +	context.tiddler.fields["server.workspace"] = context.workspace;
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([context.host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title),
          +		context.revision]);
          +	var req = httpReq("GET", uri, adaptor.getTiddlerCallback, context,
          +		merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getTiddlerCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(status) {
          +		try {
          +			var tid = $.evalJSON(responseText);
          +		} catch(ex) {
          +			context.status = false;
          +			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          +			if(context.callback) {
          +				context.callback(context, context.userParams);
          +			}
          +			return;
          +		}
          +		var tiddler = adaptor.toTiddler(tid, context.host);
          +		tiddler.title = context.tiddler.title;
          +		tiddler.fields["server.etag"] = xhr.getResponseHeader("Etag");
          +		// normally we'd assign context.tiddler = tiddler here - but we can't do
          +		// that because of IE, which triggers getTiddler in putTiddlerCallback,
          +		// and since ServerSideSavingPlugin foolishly relies on persistent
          +		// object references, we need to merge the data into the existing object
          +		$.extend(context.tiddler, tiddler);
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// retrieve tiddler chronicle (all revisions)
          +adaptor.prototype.getTiddlerChronicle = function(title, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = title;
          +	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions?fat=1";
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([context.host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
          +	var req = httpReq("GET", uri, adaptor.getTiddlerChronicleCallback,
          +		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(status) {
          +		context.responseText = responseText;
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// store an individual tiddler
          +adaptor.prototype.putTiddler = function(tiddler, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = tiddler.title;
          +	context.tiddler = tiddler;
          +	context.host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          +	var uriTemplate = "%0/%1/%2/tiddlers/%3";
          +	try {
          +		context.workspace = context.workspace || tiddler.fields["server.workspace"];
          +		var workspace = adaptor.resolveWorkspace(context.workspace);
          +	} catch(ex) {
          +		return adaptor.locationIDErrorMessage;
          +	}
          +	var uri = uriTemplate.format([context.host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name),
          +		adaptor.normalizeTitle(tiddler.title)]);
          +	var etag = adaptor.generateETag(workspace, tiddler);
          +	var headers = etag ? { "If-Match": etag } : null;
          +	var payload = {
          +		type: tiddler.fields["server.content-type"] || null,
          +		text: tiddler.text,
          +		tags: tiddler.tags,
          +		fields: $.extend({}, tiddler.fields)
          +	};
          +	delete payload.fields.changecount;
          +	$.each(payload.fields, function(key, value) {
          +		if(key.indexOf("server.") == 0) {
          +			delete payload.fields[key];
          +		}
          +	});
          +	payload = $.toJSON(payload);
          +	var req = httpReq("PUT", uri, adaptor.putTiddlerCallback,
          +		context, headers, payload, adaptor.mimeType, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.putTiddlerCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = [204, 1223].contains(xhr.status);
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(context.status) {
          +		var loc = xhr.getResponseHeader("Location");
          +		var etag = xhr.getResponseHeader("Etag");
          +		if(loc && etag) {
          +			var bag = loc.split("/bags/").pop().split("/")[0];
          +			context.tiddler.fields["server.bag"] = bag;
          +			context.tiddler.fields["server.workspace"] = "bags/" + bag;
          +			var rev = etag.split("/").pop().split(/;|:/)[0];
          +			context.tiddler.fields["server.page.revision"] = rev;
          +			context.tiddler.fields["server.etag"] = etag;
          +			if(context.callback) {
          +				context.callback(context, context.userParams);
          +			}
          +		} else { // IE
          +			context.adaptor.getTiddler(context.tiddler.title, context,
          +				context.userParams, context.callback);
          +		}
          +	} else if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// store a tiddler chronicle
          +adaptor.prototype.putTiddlerChronicle = function(revisions, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = revisions[0].title;
          +	var headers = null;
          +	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
          +	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name),
          +		adaptor.normalizeTitle(context.title)]);
          +	if(workspace.type == "bag") { // generate ETag
          +		var etag = [adaptor.normalizeTitle(workspace.name),
          +			adaptor.normalizeTitle(context.title), 0].join("/"); //# zero-revision prevents overwriting existing contents
          +		headers = { "If-Match": '"' + etag + '"' };
          +	}
          +	var payload = $.toJSON(revisions);
          +	var req = httpReq("POST", uri, adaptor.putTiddlerChronicleCallback,
          +		context, headers, payload, adaptor.mimeType, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.putTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = [204, 1223].contains(xhr.status);
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// store a collection of tiddlers (import TiddlyWiki HTML store)
          +adaptor.prototype.putTiddlerStore = function(store, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	var uriTemplate = "%0/%1/%2/tiddlers";
          +	var host = context.host;
          +	var workspace = adaptor.resolveWorkspace(context.workspace);
          +	var uri = uriTemplate.format([host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name)]);
          +	var req = httpReq("POST", uri, adaptor.putTiddlerStoreCallback,
          +		context, null, store, "text/x-tiddlywiki", null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.putTiddlerStoreCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = [204, 1223].contains(xhr.status);
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// rename an individual tiddler or move it to a different workspace -- TODO: make {from|to}.title optional
          +//# from and to are objects with members title and workspace (bag; optional),
          +//# representing source and target tiddler, respectively
          +adaptor.prototype.moveTiddler = function(from, to, context, userParams, callback) { // XXX: rename parameters (old/new)?
          +	var self = this;
          +	var newTiddler = store.getTiddler(from.title) || store.getTiddler(to.title); //# local rename might already have occurred
          +	var oldTiddler = $.extend(true, {}, newTiddler); //# required for eventual deletion
          +	oldTiddler.title = from.title; //# required for original tiddler's ETag
          +	var _getTiddlerChronicle = function(title, context, userParams, callback) {
          +		return self.getTiddlerChronicle(title, context, userParams, callback);
          +	};
          +	var _putTiddlerChronicle = function(context, userParams) {
          +		if(!context.status) {
          +			return callback(context, userParams);
          +		}
          +		var revisions = $.evalJSON(context.responseText); // XXX: error handling?
          +		// change current title while retaining previous location
          +		for(var i = 0; i < revisions.length; i++) {
          +			delete revisions[i].revision;
          +			if(!revisions[i].fields.origin) { // NB: origin = "<workspace>/<title>"
          +				revisions[i].fields.origin = ["bags", revisions[i].bag, revisions[i].title].join("/");
          +			}
          +			revisions[i].title = to.title;
          +		}
          +		// add new revision
          +		var rev = $.extend({}, revisions[0]);
          +		$.each(newTiddler, function(i, item) {
          +			if(!$.isFunction(item)) {
          +				rev[i] = item;
          +			}
          +		});
          +		rev.title = to.title;
          +		rev.created = rev.created.convertToYYYYMMDDHHMM();
          +		rev.modified = new Date().convertToYYYYMMDDHHMM();
          +		delete rev.fields.changecount;
          +		revisions.unshift(rev);
          +		if(to.workspace) {
          +			context.workspace = to.workspace;
          +		} else if(context.workspace.substring(0, 4) != "bags") { // NB: target workspace must be a bag
          +			context.workspace = "bags/" + rev.bag;
          +		}
          +		var subCallback = function(context, userParams) {
          +			if(!context.status) {
          +				return callback(context, userParams);
          +			}
          +			context.adaptor.getTiddler(newTiddler.title, context, userParams, _deleteTiddler);
          +		};
          +		return self.putTiddlerChronicle(revisions, context, context.userParams, subCallback);
          +	};
          +	var _deleteTiddler = function(context, userParams) {
          +		if(!context.status) {
          +			return callback(context, userParams);
          +		}
          +		$.extend(true, newTiddler, context.tiddler);
          +		context.callback = null;
          +		return self.deleteTiddler(oldTiddler, context, context.userParams, callback);
          +	};
          +	callback = callback || function() {};
          +	context = this.setContext(context, userParams);
          +	context.host = context.host || oldTiddler.fields["server.host"];
          +	context.workspace = from.workspace || oldTiddler.fields["server.workspace"];
          +	return _getTiddlerChronicle(from.title, context, userParams, _putTiddlerChronicle);
          +};
          +
          +// delete an individual tiddler
          +adaptor.prototype.deleteTiddler = function(tiddler, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = tiddler.title; // XXX: not required!?
          +	var uriTemplate = "%0/bags/%1/tiddlers/%2";
          +	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          +	var bag = tiddler.fields["server.bag"];
          +	if(!bag) {
          +		return adaptor.noBagErrorMessage;
          +	}
          +	var uri = uriTemplate.format([host, adaptor.normalizeTitle(bag),
          +		adaptor.normalizeTitle(tiddler.title)]);
          +	var etag = adaptor.generateETag({ type: "bag", name: bag }, tiddler);
          +	var headers = etag ? { "If-Match": etag } : null;
          +	var req = httpReq("DELETE", uri, adaptor.deleteTiddlerCallback, context, headers,
          +		null, null, null, null, true);
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.deleteTiddlerCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = [204, 1223].contains(xhr.status);
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// compare two revisions of a tiddler (requires TiddlyWeb differ plugin)
          +//# if context.rev1 is not specified, the latest revision will be used for comparison
          +//# if context.rev2 is not specified, the local revision will be sent for comparison
          +//# context.format is a string as determined by the TiddlyWeb differ plugin
          +adaptor.prototype.getTiddlerDiff = function(title, context, userParams, callback) {
          +	context = this.setContext(context, userParams, callback);
          +	context.title = title;
          +
          +	var tiddler = store.getTiddler(title);
          +	try {
          +		var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
          +	} catch(ex) {
          +		return adaptor.locationIDErrorMessage;
          +	}
          +	var tiddlerRef = [workspace.type + "s", workspace.name, tiddler.title].join("/");
          +
          +	var rev1 = context.rev1 ? [tiddlerRef, context.rev1].join("/") : tiddlerRef;
          +	var rev2 = context.rev2 ? [tiddlerRef, context.rev2].join("/") : null;
          +
          +	var uriTemplate = "%0/diff?rev1=%1";
          +	if(rev2) {
          +		uriTemplate += "&rev2=%2";
          +	}
          +	if(context.format) {
          +		uriTemplate += "&format=%3";
          +	}
          +	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          +	var uri = uriTemplate.format([host, adaptor.normalizeTitle(rev1),
          +		adaptor.normalizeTitle(rev2), context.format]);
          +
          +	if(rev2) {
          +		var req = httpReq("GET", uri, adaptor.getTiddlerDiffCallback, context, null,
          +			null, null, null, null, true);
          +	} else {
          +		var payload = {
          +			title: tiddler.title,
          +			text: tiddler.text,
          +			modifier: tiddler.modifier,
          +			tags: tiddler.tags,
          +			fields: $.extend({}, tiddler.fields)
          +		}; // XXX: missing attributes!?
          +		payload = $.toJSON(payload);
          +		req = httpReq("POST", uri, adaptor.getTiddlerDiffCallback, context,
          +			null, payload, adaptor.mimeType, null, null, true);
          +	}
          +	return typeof req == "string" ? req : true;
          +};
          +
          +adaptor.getTiddlerDiffCallback = function(status, context, responseText, uri, xhr) {
          +	context.status = status;
          +	context.statusText = xhr.statusText;
          +	context.httpStatus = xhr.status;
          +	context.uri = uri;
          +	if(status) {
          +		context.diff = responseText;
          +	}
          +	if(context.callback) {
          +		context.callback(context, context.userParams);
          +	}
          +};
          +
          +// generate tiddler information
          +adaptor.prototype.generateTiddlerInfo = function(tiddler) {
          +	var info = {};
          +	var uriTemplate = "%0/%1/%2/tiddlers/%3";
          +	var host = this.host || tiddler.fields["server.host"]; // XXX: this.host obsolete?
          +	host = this.fullHostName(host);
          +	var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
          +	info.uri = uriTemplate.format([host, workspace.type + "s",
          +		adaptor.normalizeTitle(workspace.name),
          +		adaptor.normalizeTitle(tiddler.title)]);
          +	return info;
          +};
          +
          +// create Tiddler instance from TiddlyWeb tiddler JSON
          +adaptor.toTiddler = function(json, host) {
          +	var created = Date.convertFromYYYYMMDDHHMM(json.created);
          +	var modified = Date.convertFromYYYYMMDDHHMM(json.modified);
          +	var fields = json.fields;
          +	fields["server.type"] = adaptor.serverType;
          +	fields["server.host"] = AdaptorBase.minHostName(host);
          +	fields["server.bag"] = json.bag;
          +	fields["server.title"] = json.title;
          +	if(json.recipe) {
          +		fields["server.recipe"] = json.recipe;
          +	}
          +	if(json.type && json.type != "None") {
          +		fields["server.content-type"] = json.type;
          +	}
          +	fields["server.permissions"] = json.permissions.join(", ");
          +	fields["server.page.revision"] = json.revision;
          +	fields["server.workspace"] = "bags/" + json.bag;
          +	var tiddler = new Tiddler(json.title);
          +	tiddler.assign(tiddler.title, json.text, json.modifier, modified, json.tags,
          +		created, json.fields, json.creator);
          +	return tiddler;
          +};
          +
          +adaptor.resolveWorkspace = function(workspace) {
          +	var components = workspace.split("/");
          +	return {
          +		type: components[0] == "bags" ? "bag" : "recipe",
          +		name: components[1] || components[0]
          +	};
          +};
          +
          +adaptor.generateETag = function(workspace, tiddler) {
          +	var revision = tiddler.fields["server.page.revision"];
          +	var etag = revision == "false" ? null : tiddler.fields["server.etag"];
          +	if(!etag && workspace.type == "bag") {
          +		if(typeof revision == "undefined") {
          +			revision = "0";
          +		} else if(revision == "false") {
          +			return null;
          +		}
          +		etag = [adaptor.normalizeTitle(workspace.name),
          +			adaptor.normalizeTitle(tiddler.title), revision].join("/");
          +		etag = '"' + etag + '"';
          +	}
          +	return etag;
          +};
          +
          +adaptor.normalizeTitle = function(title) {
          +	return encodeURIComponent(title);
          +};
          +
          +})(jQuery);
          +
          +
          +/*
          + * jQuery JSON Plugin
          + * version: 1.3
          + * source: http://code.google.com/p/jquery-json/
          + * license: MIT (http://www.opensource.org/licenses/mit-license.php)
          + */
          +(function($){function toIntegersAtLease(n)
          +{return n<10?'0'+n:n;}
          +Date.prototype.toJSON=function(date)
          +{return this.getUTCFullYear()+'-'+
          +toIntegersAtLease(this.getUTCMonth())+'-'+
          +toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
          +{if(escapeable.test(string))
          +{return'"'+string.replace(escapeable,function(a)
          +{var c=meta[a];if(typeof c==='string'){return c;}
          +c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
          +return'"'+string+'"';};$.toJSON=function(o,compact)
          +{var type=typeof(o);if(type=="undefined")
          +return"undefined";else if(type=="number"||type=="boolean")
          +return o+"";else if(o===null)
          +return"null";if(type=="string")
          +{return $.quoteString(o);}
          +if(type=="object"&&typeof o.toJSON=="function")
          +return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
          +{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
          +if(compact)
          +return"["+ret.join(",")+"]";else
          +return"["+ret.join(", ")+"]";}
          +if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
          +var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
          +name='"'+k+'"';else if(type=="string")
          +name=$.quoteString(k);else
          +continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
          +if(compact)
          +ret.push(name+":"+val);else
          +ret.push(name+": "+val);}
          +return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
          +{return $.toJSON(o,true);};$.evalJSON=function(src)
          +{return eval("("+src+")");};$.secureEvalJSON=function(src)
          +{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
          +return eval("("+src+")");else
          +throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);
          +//}}}
          +
          +
          +
          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
          +
          +
          +
          /*{{{*/
          +.tiddler .originButton div {
          +	display: inline-block;
          +}
          +
          +.tiddler .spaceSiteIcon .siteIcon {
          +	_display: inline; /* IE doesn't like inline-block */
          +}
          +
          +.tiddler .originButton {
          +	display: block;
          +}
          +
          +.selected .tagging,
          +.selected .tagging:hover {
          +	border: none;
          +	background: none;
          +}
          +
          +.tagging {
          +	float: none;
          +	background: none;
          +	border: none;
          +}
          +
          +.tagging li.listTitle {
          +	margin-left: 0px;
          +}
          +.tagging li {
          +	margin: 0 8px;
          +}
          +
          +.tagging .tiddlyLink {
          +	-webkit-border-radius: 3px;
          +	-moz-border-radius: 3px;
          +	-o-border-radius: 3px;
          +	border-radius: 3px;
          +	padding: 1px 2px;
          +	line-height: 1.2em;
          +}
          +
          +/* for following */
          +#popup .siteIcon {
          +	float: left;
          +	height: 25px;
          +}
          +
          +.content {
          +	width: 100%; /* IE */
          +	font-size: 0.9em;
          +}
          +
          +.editorHeading {
          +	height: 48px;
          +}
          +
          +.heading {
          +	left: 0;
          +	margin-bottom: 40px;
          +	position: relative;
          +	top: 32px;
          +}
          +
          +.followButton a {
          +	display: block;
          +	margin-top: -20px;
          +}
          +
          +.tiddler .followPlaceHolder {
          +	display: block;
          +	position: absolute;
          +	top: 16px;
          +	right: 64px;
          +	_right: 138px; // add width of modifierIcon
          +}
          +
          +.tiddler .followButton {
          +	position: relative;
          +	height: 24px;
          +	text-align: left;
          +	color: #fff;
          +	background: [[ColorPalette::PrimaryMid]];
          +	padding: 10px 0px 0px 10px;
          +	width: 38px;
          +	margin: -16px -8px 24px 0;
          +}
          +
          +/* creates the larger triangle */
          +.followButton:before {
          +	content: "\00a0";
          +	display: block; /* reduce the damage in FF3.0 */
          +	position: relative;
          +	bottom: -20px;
          +	right: 0;
          +	width: 0;
          +	height: 0;
          +	border-width: 0 0 20px 20px;
          +	border-style: solid;
          +	border-color: transparent [[ColorPalette::PrimaryMid]];
          +}
          +
          +.toolbar svg {
          +	height: 16px;
          +	width: 16px;
          +}
          +
          +.toolbar svg .glyph {
          +	fill: #ccc;
          +}
          +
          +.toolbar a:hover .glyph {
          +	fill: black;
          +}
          +
          +.toolbar a:active .glyph {
          +	fill: [[ColorPalette::Background]];
          +}
          +
          +.originButton,
          +.followPlaceHolder,
          +.tiddler .subtitle {
          +	cursor: pointer;
          +}
          +
          +.editSpaceSiteIcon .originButton {
          +	cursor: auto;
          +}
          +
          +.tiddler .subtitle:hover {
          +	font-weight: bold;
          +	background: none;
          +}
          +
          +.originButton img,
          +.originButton svg {
          +	margin-left: 0px;
          +}
          +
          +.modifierIcon {
          +	position: absolute;
          +	width: 74px;
          +	top: 0px;
          +	right: 0px;
          +	_right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
          +	text-align: right;
          +}
          +
          +.modifierIcon img,
          +.modifierIcon svg {
          +	margin-right: 8px;
          +}
          +
          +.tiddler .viewer {
          +	padding-bottom: 16px;
          +	margin: 0 0 0 56px;
          +	line-height: 1.4em;
          +}
          +
          +.viewer pre {
          +	margin-left: 0;
          +}
          +
          +.siteIcon .label {
          +	color: [[ColorPalette::TertiaryDark]];
          +}
          +
          +.tiddler .spaceSiteIcon {
          +	float: left;
          +	margin-right: 0;
          +	margin-top: 0;
          +	position: relative;
          +	display: block;
          +}
          +
          +.tiddler .titleBar {
          +	display: block;
          +	margin-right: 136px;
          +	margin-left: 56px;
          +}
          +
          +.followButton a {
          +	color: [[ColorPalette::Background]];
          +}
          +
          +.tiddler {
          +	position: relative;
          +	padding: 0;
          +	margin-bottom: 3em;
          +	border-top: 3px solid [[ColorPalette::PrimaryMid]];
          +	background: #fff;
          +}
          +
          +.tiddler .editor {
          +	padding: 0px 8px;
          +}
          +
          +.tiddler .heading .title {
          +	position: relative;
          +	display: block;
          +	word-wrap: break-word;
          +	font-size: 32px;
          +	line-height: 32px;
          +}
          +.tiddler .heading .editor.title {
          +	font-size: 1.7em;
          +	line-height: normal;
          +}
          +
          +.tiddler .headingClear {
          +	clear: both;
          +}
          +
          +.tiddler .subtitle {
          +	font-style: italic;
          +	font-size: 0.9em;
          +	color: #a6a59e;
          +	margin-top: 0;
          +}
          +
          +.toolbar {
          +	position: absolute;
          +	padding: 0;
          +	top: 8px;
          +	right: -8px;
          +}
          +
          +.toolbar .moreCommand.highlight {
          +	background: none;
          +}
          +
          +.tiddler .toolbar .button {
          +	border: none;
          +	display: inline;
          +	padding: 0px;
          +	margin-right: 16px;
          +}
          +
          +.tiddler .toolbar a:hover {
          +	background: none;
          +}
          +
          +.tiddler .tagged .listTitle {
          +	display: none;
          +}
          +
          +.revButton {
          +	float: right;
          +}
          +
          +/*! EditTemplate specific*/
          +.tiddler .privacySettings {
          +	text-align: center;
          +}
          +.tiddler .privacySettings .originButton {
          +	display: inline;
          +}
          +
          +.editSpaceSiteIcon, .privacyEdit {
          +	float: left;
          +}
          +
          +.editSpaceSiteIcon svg,
          +.editSpaceSiteIcon img,
          +.editSpaceSiteIcon .roundelLabel {
          +	float: left;
          +}
          +
          +.tagTitle {
          +	position: absolute;
          +	text-align: center;
          +	width: 48px;
          +	top: 0px;
          +	left: -56px;
          +}
          +
          +.editSpaceSiteIcon .originButton img,
          +.editSpaceSiteIcon .originButton svg {
          +	height: 16px;
          +	margin-left: 24px;
          +	margin-right: 32px;
          +	width: 16px;
          +}
          +
          +.tagAnnotation {
          +	margin-top: 8px;
          +	padding-bottom: 8px;
          +}
          +.annotationsBox {
          +	margin-top: 8px;
          +}
          +
          +.editorFooter {
          +	position: relative;
          +	padding: 0;
          +	margin-top: 16px;
          +	margin-left: 64px;
          +}
          +
          +.tiddler .editorFooter .editor {
          +	padding-left: 0px;
          +}
          +
          +.heading .editor input {
          +	width: 100%;
          +	font-size: 1.5em;
          +}
          +
          +.spaceSiteIcon .externalImage .image a:hover,
          +.modifierIcon .externalImage .image a:hover {
          +	background: none;
          +}
          +
          +div.toolbar {
          +	visibility:hidden;
          +	right:-16px;
          +}
          +
          +.selected div.toolbar {
          +	visibility: visible;
          +}
          +
          +.followButton a:hover {
          +	background: [[ColorPalette::PrimaryMid]];
          +	text-decoration: underline;
          +}
          +
          +a.image:hover {
          +	background: transparent;
          +}
          +
          +@media all and (max-device-width: 480px) {
          +	div.toolbar {
          +		visibility:visible;
          +	}
          +}
          +@media only screen and (device-width: 768px) {
          +	div.toolbar {
          +		visibility:visible;
          +	}
          +}
          +@media all and (max-width: 960px) {
          +	.tiddler .titleBar {
          +		margin-left: 36px;
          +		margin-right: 80px;
          +	}
          +
          +	.tiddler .heading {
          +		margin-bottom: 48px;
          +	}
          +
          +	.tiddler .heading .title {
          +		font-size: 32px;
          +		line-height: 32px;
          +	}
          +
          +	.tiddler .modifierIcon img,
          +	.tiddler .modifierIcon svg,
          +	.tiddler .spaceSiteIcon .originButton img,
          +	.originButton svg {
          +		width: 32px;
          +		height: 32px;
          +		margin-left: 0px;
          +		margin-right: 0px;
          +	}
          +
          +	.tiddler .followPlaceHolder {
          +		right: 48px;
          +	}
          +
          +	.tiddler .followButton {
          +		width: 24px;
          +	}
          +
          +	.tiddler .viewer {
          +		margin: 0px 0px 0px 36px;
          +		padding-top: 0;
          +	}
          +
          +	br {
          +		line-height: 0.5em;
          +	}
          +}
          +/*}}}*/
          +
          +
          +
          ColorPalette
          +StyleSheet
          +SiteSubtitle
          +GettingStarted
          +SiteTitle
          +MainMenu
          +SiteIcon
          +DefaultTiddlers
          +ViewTemplate
          +PageTemplate
          +SideBarOptions
          +EditTemplate
          +SiteInfo
          +SideBarTabs
          +ToolbarCommands
          +
          +
          +
          
          +
          +
          +
          The title and subtitle of your space are visible to visitors and are also displayed in your browser's tabs. Click on the SiteTitle and SiteSubtitle tiddler links below to make changes.
          +* [[SiteTitle]]
          +* [[SiteSubtitle]]
          +
          +
          +
          Added [[TaggedTemplatePlugin]] to your TiddlySpace to be able to apply a view/edit template based on a tag.
          +A tiddler tagged with foo will be passed through fooViewTemplate or fooEditTemplate if they exist rather than ViewTemplate / EditTemplate.
          +
          +
          +
          /***
          +|''Name:''|TaggedTemplatePlugin|
          +|''Description:''|Apply a view/edit template based on a tag |
          +|''Author:''|PaulDowney (psd (at) osmosoft (dot) com)|
          +|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/PaulDowney/plugins/TaggedTemplatePlugin |
          +|''Version:''|1.0|
          +|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          +|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          +|''~CoreVersion:''|2.4|
          +|''Overrides''|Story.prototype.chooseTemplateForTiddler() |
          +!!Documentation
          +This plugin enables the application of a view or edit template based on a tag name. 
          +
          +The priority of searching for duplicate templates has been designed to allow partially defined themes, in which missing templates are defaulted to ones defined as tiddlers.  Collation sequence is used to disambiguate collisions when a tiddler it tagged with more than one tag with an associated template. For example, tiddler tagged "Foo Bar" will result in a hunt for a template as follows:
          +# in the current theme by tag:
          +##[[CurrentTheme]]##barViewTemplate
          +##[[CurrentTheme]]##fooViewTemplate
          +# in a template for the tag:
          +##[[barViewTemplate]]
          +##[[fooViewTemplate]]
          +# global in the current theme
          +##[[CurrentTheme]]##ViewTemplate
          +# in the global tiddler
          +##[[ViewTemplate]]
          +This plugin is used by RippleRap, TiddlyResume and a number of other verticals which use nested themes was based on Eric Shulman's [[TaggedTemplateTweak|http://www.TiddlyTools.com/#TaggedTemplateTweak]] plugin which at the time didn't support themes and searches in a different order.
          +!!Code
          +***/
          +//{{{
          +/*jslint onevar: false nomen: false plusplus: false */
          +/*global Story, store, config */
          +if (!version.extensions.TaggedTemplatePlugin) {
          +    version.extensions.TaggedTemplatePlugin = {installed: true};
          +
          +    Story.prototype._chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler;
          +    Story.prototype.chooseTemplateForTiddler = function (title, n)
          +    {
          +        var slice, i, tags = [], tagTiddler;
          +        var tiddler = store.getTiddler(title);
          +
          +        // translate number into template name
          +        var template = ["ViewTemplate", "EditTemplate"][n ? n - 1 : 0];
          +
          +        // canonicalise tags
          +        if (tiddler) {
          +            for (i = 0; i < tiddler.tags.length; i++) {
          +                tags.push(tiddler.tags[i].toLowerCase());
          +            }
          +            tags.sort();
          +        }
          +
          +        // search theme for tagged template in the current theme
          +        if (tags.length && store.tiddlerExists(config.options.txtTheme)) {
          +            for (i = 0; i < tags.length; i++) {
          +                slice = config.options.txtTheme + '##' + tags[i] + template;
          +                if (store.getTiddlerText(slice)) {
          +                    return slice;
          +                }
          +            }
          +        }
          +
          +        // search theme for tagged template tiddler
          +        for (i = 0; i < tags.length; i++) {
          +            tagTiddler = tags[i] + template;
          +            if (store.tiddlerExists(tagTiddler)) {
          +                return tagTiddler;
          +            }
          +        }
          +
          +        // search theme for template
          +        if (store.tiddlerExists(config.options.txtTheme)) {
          +            slice = config.options.txtTheme + '##' + template;
          +            if (store.getTiddlerText(slice)) {
          +                return slice;
          +            }
          +        }
          +
          +        return this._chooseTemplateForTiddler.apply(this, arguments);
          +    };
          +}
          +//}}}
          +
          +
          +
          <!DOCTYPE HTML>
          +<html>
          +<body style="display:none">
          +topics: <ul id="topics"></ul>
          +<button id='addtopic'>add topic</button>
          +stream:
          +<ul id="stream"></ul>
          +<script type='text/javascript' src='/bags/common/tiddlers/jquery.js'></script>
          +<script type='text/javascript' src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          +<script src="/twikifier.js" type="text/javascript" charset="utf-8"></script>
          +<script type='text/javascript'>
          +	$.ajaxSetup({
          +		beforeSend: function(xhr) {
          +			xhr.setRequestHeader("X-ControlView", "false");
          +		}
          +	});
          +	function renderTopic(topic) {
          +		var item = $("<li />").appendTo("#topics");
          +		$("<button class='show' />").text(topic).appendTo(item);
          +		$("<button class='delete'>x</button>").appendTo(item);
          +		return item[0];
          +	}
          +	var host =  '/';
          +	var space = "jon";
          +	var active_topics = [];
          +	var current_topic, offset;
          +	function renderTopics() {
          +		var topics = active_topics;
          +		$("#topics").empty();
          +		for(var i = 0; i < topics.length; i++) {
          +			var topic = topics[i];
          +			if(topic) {
          +				renderTopic(topic);
          +			}
          +		}
          +		$("body").show();
          +	}
          +	// Array Remove - By John Resig (MIT Licensed)
          +	Array.prototype.remove = function(from, to) {
          +		var rest = this.slice((to || from) + 1 || this.length);
          +		this.length = from < 0 ? this.length + from : from;
          +		return this.push.apply(this, rest);
          +	};
          +
          +	var topicList = new tiddlyweb.Tiddler("Topics", new tiddlyweb.Bag(space + "_public", host));
          +	topicList.get(function(tid) {
          +			active_topics = tid.text.split("\n");
          +			renderTopics(active_topics);
          +			$("#topics .show:first").trigger("click");
          +		},
          +		function() {
          +			active_topics = ["tiddlyspace"];
          +			renderTopics(active_topics)
          +		}
          +	);
          +	$("#addtopic").click(function(ev) {
          +		var text = prompt("What topic would you like to watch?");
          +		if(active_topics.indexOf(text) === -1) {
          +			active_topics.push(text);
          +		}
          +		var el = renderTopic(text);
          +		topicList.text = active_topics.join("\n");
          +		topicList.put(function() {
          +			$("button.show", el).trigger("click");
          +		}, function() {
          +			alert("eek!")
          +		});
          +	});
          +	$("#topics .delete").live("click",function(ev) {
          +		var topic = $(".show", this.parentNode).text();
          +		active_topics.remove(active_topics.indexOf(topic));
          +		renderTopics();
          +		topicList.text = active_topics.join("\n");
          +		topicList.put(function() {}, function() {
          +			alert("eek!")
          +		});
          +	});
          +	w = createWikifier(window, jQuery, { host: host, container: "recipes/" + space + "_public" });
          +	$("#topics .show").live("click",function(ev) {
          +		var tag = $(this).text();
          +		current_topic = tag;
          +		offset = 0;
          +		$("#stream").empty();
          +		var search = new tiddlyweb.Search('tag:"' + tag + '" &fat=y', host);
          +		search.get(function(tiddlers) {
          +			for(var i = 0; i < tiddlers.length; i++) {
          +				var tiddler = tiddlers[i];
          +				var item = $("<li />").appendTo("#stream")[0];
          +				$("<h2 />").text(tiddler.title + ": ").appendTo(item);
          +				
          +				$("<div class='text' />").text(tiddler.text).appendTo(item);
          +				$("<div class='author' />").text(tiddler.modifier).appendTo(item);
          +			}
          +		}, function() {
          +			$("<li>no topics :-(</li>").appendTo("#stream");
          +		});
          +	});
          +	$(window).scroll(function(){
          +		if($(window).scrollTop() == $(document).height() - $(window).height()) {
          +			offset += 10;
          +			// find a way to get all tiddlers created before the ones above
          +			console.log("loadMore();");
          +		}
          +	});
          +</script>
          +</body>
          +</html>
          +
          +
          +
          HelloThere
          +[[How did you first discover TiddlyWiki?]]
          +[[What was it about TiddlyWiki that captured your interest?]]
          +[[Which aspects of TiddlyWiki do you find most valuable?]]
          +[[How many TiddlyWikis have you created and do you use regularly?]]
          +[[Do you keep adding new features to your existing TiddlyWiki(s)?]]
          +[[Who is the target audience for your TiddlyWiki(s)?]]
          +[[What features of TiddlyWiki made it suitable for your target audience?]]
          +[[How have you found training novice users to use and understand TiddlyWiki?]]
          +[[How many tiddlers and how many megabytes in your largest TiddlyWiki?]]
          +[[How has TiddlyWiki saved time for you as an information publisher?]]
          +[[How has TiddlyWiki saved time for your target audience?]]
          +[[How has the TiddlyWiki community helped you?]]
          +[[How have you been able to contribute back to the TiddlyWiki community?]]
          +[[How many other people have you introduced to TiddlyWiki?]]
          +[[What is the most challenging thing about using TiddlyWiki?]]
          +[[Which plugins do you rely on the most?]]
          +[[What do you think of the name TiddlyWiki and the term "tiddler"?]]
          +[[How might you use TiddlyWiki in the future?]]
          +
          +
          +
          +
          <!--{{{-->
          +<div macro='slideRevision'></div>
          +<div class='heading'>
          +	<span class="titleBar">
          +		<div class='title' macro='view title text'></div>
          +	</span>
          +	<span class='modifierIcon'
          +		macro='view modifier SiteIcon label:no height:48 width:48 preserveAspectRatio:yes'>
          +	</span>
          +	<div class='toolbar'
          +		macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes height:48 width:48 more:popup'>
          +	</div>
          +	<div class='tagClear'></div>
          +</div>
          +<div class='content'>
          +	<div class='viewer' macro='view text wikified'></div>
          +</div>
          +<div class='tagInfo'>
          +	<div class='tidTags' macro='tags'></div>
          +	<div class='tagging' macro='tagging'></div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          /%
          +
          +Hello,
          +
          +If you choose to change this GettingStarted tiddler, you may wish to add the following to your new content if you expect you space to be included:
          +
          +<<<
          +----
          +Hello,
          +''This ~GettingStarted tiddler has been customized.''
          +If you want to see the original system tiddler just click the following link: GettingStarted@system-info at system-info.
          +<<<
          +%/
          +
          +Welcome to your brand new [[TiddlySpace|http://docs.tiddlyspace.com/TiddlySpace]].
          +
          +You're almost ready to go, there are just a couple of things left to do.
          +
          +!Customise your space
          +Go to [[SpaceSettings]] to finish customising  your space. When you're done, come back here (just scroll up). Don't worry though, this will still be open when you've finished.
          +
          +!Further Customisation
          +
          +For advanced options, the [[ServerSettings]] tiddler is used to enable the following features:
          +
          +#index: The value is the name of a tiddler that will be presented when loading the space.  For example, when set to {{{Hello}}} for the space hello.tiddlyspace.com, navigating to that URL will present the Hello tiddler. If there is no {{{Hello}}} you will get an error.
          +#editor: The name of an [[editor application|http://docs.tiddlyspace.com/Example%20Tiddler%20Editors]] to edit tiddlers with.  Applications come from [[included spaces|http://docs.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F]]
          +
          +//If you do not need or understand these features there is no need to create a ServerSettings tiddler.//
          +
          +To edit these options: 
          +
          +* click [[here|ServerSettings]] to open the [[ServerSettings]] tiddler
          +* click on the edit button (the pencil icon)
          +* add the options you wish to set 
          +* click on the save button (the tick icon).
          +
          +An example [[ServerSettings]] tiddler:
          +{{{
          +index: HelloThere
          +editor: /edit#{tiddler}
          +}}}
          +
          +The additional text after /edit allows a tiddler to be opened in edit mode e.g:
          +{{{http://hello.tiddlyspace.com/edit#MyTiddler}}}
          +
          +!!See Also
          +
          +* [[ServerSettings shadow tiddler|http://docs.tiddlyspace.com/ServerSettings%20shadow%20tiddler]]
          +* [[Choosing a non-TiddlyWiki Default Application for your Space|http://docs.tiddlyspace.com/Choosing%20a%20non-TiddlyWiki%20Default%20Application%20for%20your%20Space]]
          +
          +!Finished customising?
          +You can [[Start writing]] some [[tiddlers|http://docs.tiddlyspace.com/Tiddler]].
          +If you're not done tweaking yet though, you can always [[Customise this space|SpaceSettings]] a bit more.
          +
          +You can also [[access and read other tiddlers in various ways|http://docs.tiddlyspace.com/Viewing%20Tiddlers]].
          +
          +!Administration
          +If you'd like to change your password or create another space, visit "Your Account" from the [[Universal Backstage|http://docs.tiddlyspace.com/UniversalBackstage]] (the blue dot in the upper right of the page). If you'd like to add a member or [[include a space|http://docs.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F]] visit "This Space" from the [[Universal Backstage|http://docs.tiddlyspace.com/UniversalBackstage]].
          +
          +You can have as many spaces as you like and each space can have as many members as you or your group need.
          +
          +!Stuck?
          +If you're stuck, and would like some help, please visit the [[help|http://help.tiddlyspace.com]] space, which can point you in the right direction.
          +
          +
          +
          /***
          +|''Name''|ActivityStreamPlugin|
          +|''Version''|0.5.4|
          +|''Description''|Provides a following macro|
          +|''Author''|Jon Robson|
          +|''Requires''|TiddlySpaceFollowingPlugin|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''Source''|https://github.com/jdlrobson/TiddlyWiki/raw/master/plugins/TiddlySpaceInstaller/ActivityStreamPlugin.js|
          +!Usage
          +{{{<<activity>>}}}
          +!!Supressing activity
          +You can supress notifications by  id:
          +"plugin", "shadow", "standard", "follow", "followYou", "siteInfo", "siteIcon", "ownSiteIcon", "notify", "reply"
          +e.g. {{{ <<activity supress:siteIcon>> }}} will hide siteIcon activity from you.
          +
          +!!Supressing people
          +{{{<<activity ignore:person}}} will ignore all activity where person is the subject of the activity. eg. person followed other-person will not appear in the feed.
          +!!Controlling displayed dates.
          +{{{<<activity timestampFormat:"<0hh o' clock>" headingFormat:"0DD/0MM" >>}}} will display date headings as date/month eg.
          +3rd of January would be displayed as 03/01. This particular timestamp example gives you the hour of the activity.
          +
          +!!Even more content
          +{{{<<activity limit:no>>}}} will show you all possible activity in the last X days where X is set at a macro level (advanced developers should see config.macros.activity.RECENTNESS).
          +!StyleSheet
          +
          +.activityStream .externalImage, .activityStream .image {
          +	display: inline;
          +}
          +
          +.feedItem .siteIcon {
          +	display: inline;
          +}
          +
          +.activityStream .error {
          +	background-color: red;
          +	color: white;
          +	font-weight: bold;
          +}
          +
          +.activityStream .feedItem {
          +list-style: none;
          +}
          +
          +.activityStream .notification {
          +	background-color: yellow;
          +	color: black;
          +}
          +
          +.activityStream .activityGroupTitle {
          +	font-weight: bold;
          +	margin-top: 8px;
          +}
          +.activityStream .feedItem {
          +	margin-left: 8px;
          +}
          +!Code
          +***/
          +//{{{
          +(function($) {
          +var name = "StyleSheetActivityStream";
          +config.shadowTiddlers[name] = store.getTiddlerText(tiddler.title +
          +     "##StyleSheet");
          +store.addNotification(name, refreshStyles);
          +
          +var followMacro = config.macros.followTiddlers;
          +var tweb = config.extensions.tiddlyweb;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var scanMacro = config.macros.tsScan;
          +
          +var modifierSpaceLink = "<<view modifier spaceLink>>";
          +var spaceTiddlyLink = "<<view server.bag spaceLink server.title>>";
          +var bagSpaceLink = "<<view server.bag spaceLink>>";
          +var bagSiteIcon = "<<view server.bag SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
          +var modifierSiteIcon = "<<view modifier SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
          +var timestamp = "[<<view modified date '0hh:0mm'>>]";
          +var replyLink = "<<view server.title replyLink>>";
          +config.shadowTiddlers.ActivityStreamTemplates = [
          +	"!notify\n%3 {{notification{%0 %1 has modified %2 in %0 %1 and flagged it for your attention!}}} %8\n",
          +	"!reply\n%3 {{notification{%0 %1 replied with %2 to your %4 %5 post.}}} %8\n",
          +	"!userSiteIcon\n%3 %6 %7 has a new ~SiteIcon.\n",
          +	"!spaceSiteIcon\n%3 %6 %7 updated the SiteIcon for the %0 %1 space.\n",
          +	"!image\n%3 %6 %7 drew the image %2 in the %1 space.\n",
          +	"!plugin\n%3 %6 %7 modified a plugin called %2 in the %0 %1 space.\n",
          +	"!shadow\n%3 %6 %7 modified a shadow tiddler %2 in the %0 %1 space.\n",
          +	"!geo\n%3 %6 %7 modified a geo tiddler called %2 in the %0 %1 space <<view title maplink 'view on map'>>. %8\n",
          +	"!followYou\n%3 %0 %1 is now following you.\n",
          +	"!follow\n%3 %0 %1 is now following %4 %5 <<view server.title link follow>>\n",
          +	"!siteInfo\n%3 %6 %7 <<view server.bag spaceLink server.title label:described>> the %0 %1 space.\n",
          +	"!video\n%3 %6 %7 modified a video entitled %2 in the %0 %1 space. %8\n",
          +	"!standard\n%3 %6 %7 modified %2 in the %0 %1 space. %8\n"
          +	].join("").format(bagSiteIcon, bagSpaceLink, spaceTiddlyLink, timestamp,
          +		"<<view server.title SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>", "<<view server.title spaceLink>>",
          +		modifierSiteIcon, modifierSpaceLink, replyLink);
          +story.refreshTiddler("ActivityStreamTemplates", null, true);
          +config.annotations.ActivityStreamTemplates = "This is a special tiddler used by the ActivityStreamPlugin. It is used for templating notifications. Templates at the top have preference over templates at the bottom.";
          +
          +var macro = config.macros.activity = {
          +	default_limit: 50,
          +	templates: [],
          +	init: function() {
          +		var templates = [];
          +		var regex = new RegExp(/^!(.*)\n/gm);
          +		var text = store.getTiddlerText("ActivityStreamTemplates");
          +		var match = regex.exec(text);
          +		while(match) {
          +			templates.push(match[1]);
          +			match = regex.exec(text);
          +		}
          +		macro.templates = templates;
          +	},
          +	// order matters - earlier templates override older ones
          +	RECENTNESS: 2, // in days
          +	TIMESTAMP_FORMAT: "<0hh:0mm>",
          +	info: {},
          +	locale: {
          +		pleaseWait: "please wait while we load your stream...",
          +		errorLoading: "The activity stream failed to load. Please make sure you have an internet connection and try again.",
          +		userHeading: "Below is the activity stream for spaces that this space follows with the follow tag. (%0/%1 spaces have been loaded)",
          +		emptyStream: "Activity stream currently empty. (%0/%1 loaded)"
          +	},
          +	getTimeStamp: function() {
          +		var today = new Date();
          +		macro._lastRun = today.getTime();
          +		var previous = new Date(today.setDate(today.getDate() - macro.RECENTNESS));
          +		return previous.convertToYYYYMMDDHHMM();
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var container = $("<div />").text(macro.locale.pleaseWait).appendTo(place).
          +			attr("refresh", "macro").attr("macroName", macroName).attr("paramString", paramString);
          +		var space = tiddlyspace.currentSpace.name;
          +		var options = macro.getOptions(paramString);
          +		$(container).attr("activity-limit", options.limit);
          +		macro._session = Math.random();
          +		var activityType;
          +		var sourceActivity = function(user) {
          +			macro.CURRENT_USER = user.name;
          +			macro.USER_AT_TAG = "@%0".format(user.name);
          +			followMacro.getFollowers(function(users) {
          +				macro.getActivity(container, users, activityType, options);
          +			}, macro.CURRENT_USER);
          +			container.attr("activity-type", activityType);
          +			macro._renderStream(container, activityType, options);
          +		};
          +
          +		if(options.user) {
          +			sourceActivity({name: options.user});
          +		} else {
          +			sourceActivity({ name: tiddlyspace.currentSpace.name });
          +		}
          +	},
          +	getOptions: function(paramString) {
          +		var options = {};
          +		var args = paramString.parseParams("name")[0];
          +		var toMap = ["timestampFormat", "headingFormat", "limit", "user"];
          +		var i;
          +		for(i = 0; i < toMap.length; i++) {
          +			var map = toMap[i];
          +			options[map] = args[map] ? args[map][0] : false;
          +		}
          +		var supress = args.supress || [];
          +		var templates = [];
          +		var show = args.show ? args.show : macro.templates;
          +		for(i = 0; i < show.length; i++) {
          +			var template = show[i];
          +			if(supress.indexOf(template) === -1) {
          +				templates.push(template);
          +			}
          +		}
          +		options.ignore = args.ignore || [];
          +		options.templates = templates;
          +		return options;
          +	},
          +	_getActivityQuery: function(user, timestamp) {
          +		timestamp = timestamp || macro.getTimeStamp();
          +		if(user) {
          +			return "/bags/%0_public/tiddlers?select=modified:>%1".format(user, timestamp);
          +		} else {
          +			return false;
          +		}
          +	},
          +	refresh: function(container) {
          +		var type = $(container).attr("activity-type");
          +		var limit = $(container).attr("activity-limit");
          +		var options = macro.getOptions($(container).attr("paramString"));
          +		options.limit = parseInt(limit, 10);
          +		macro.renderStream(container, type, options);
          +	},
          +	getActivity: function(place, users, type, options) {
          +		var i;
          +		var timestamp = macro.activityTimestamp;
          +		var firstRun =  timestamp ? false : true;
          +		macro.info.loaded = firstRun ? 0 : macro.info.loaded;
          +		var afterAjax = function(tiddlers) {
          +			if(firstRun) {
          +				macro.info.loaded += 1;
          +			}
          +			macro.updateStream(tiddlers, type, options);
          +			macro.renderStream(place, type, options);
          +		};
          +		var success = function(tiddlers) {
          +			afterAjax(tiddlers);
          +		};
          +		var error = function() {
          +			afterAjax([]);
          +		};
          +		if(macro._lastRun > new Date().getTime() - 300000) { // leave 5 minutes between calls
          +			afterAjax([]);
          +			return;
          +		}
          +		macro.info.queries = users.length;
          +		for(i = 0; i < users.length; i++) {
          +			var user = users[i];
          +			ajaxReq({
          +				url: macro._getActivityQuery(user, timestamp),
          +				dataType: "json", success: success, error: error
          +			});
          +		}
          +		macro.activityTimestamp = new Date().convertToYYYYMMDDHHMM();
          +	},
          +	reportError: function(place) {
          +		var error = $("<div />").addClass("error").text(locale.errorLoading);
          +		$(place).empty().append(error);
          +	},
          +	createFeedEntry: function(container, tiddler, options) {
          +		var item = $("<li />").addClass("feedItem");
          +		var content = $("<div />").appendTo(item);
          +		var wikifyPlace = $("<span />").appendTo(content)[0];
          +		var author = tiddler.modifier;
          +		if(author && !options.ignore.contains(author)) {
          +			$(container).append(item);
          +			config.macros.view.views.activityItem(null, wikifyPlace, null, null, null, tiddler);
          +			return item;
          +		}
          +		return false;
          +	},
          +	renderStream: function(place, type, options) {
          +		window.clearTimeout(macro._renderTimeout);
          +		macro._renderTimeout = window.setTimeout(function() {
          +			macro._renderStream(place, type, options);
          +		}, 100);
          +	},
          +	_renderStream: function(place, type, options) {
          +		$(place).empty();
          +		var limit = options.limit;
          +		var container = $("<ul />").addClass("activityStream").appendTo(place);
          +		var textHeading = macro.locale.userHeading.format(macro.info.loaded, macro.info.queries);
          +		$("<li />").addClass("listTitle").text(textHeading).appendTo(container);
          +		var tiddlers = store.sortTiddlers(store.filterTiddlers("[server.activity[true]]"), "-modified"); // TODO: sort headings instead if possible (conflicts with limit)
          +		var headings = [];
          +		var groups = {};
          +		var processed = 0, i, j;
          +		var atEndOfActivityFeed = true;
          +		for(i = 0; i < tiddlers.length; i++) {
          +			var tiddler = tiddlers[i];
          +			if(options.templates.contains(tiddler.fields["server.activity.type"])) {
          +				if(!limit || processed < limit) {
          +					var modified = tiddler.modified;
          +					if(modified) {
          +						// format date.
          +						var modifiedString = modified.formatString(options.headingFormat || config.macros.timeline.dateFormat);
          +						if(headings.contains(modifiedString)) {
          +							groups[modifiedString].push(tiddler);
          +						} else {
          +							headings.push(modifiedString);
          +							groups[modifiedString] = [ tiddler ];
          +						}
          +					}
          +					processed += 1;
          +				} else {
          +					atEndOfActivityFeed = false;
          +				}
          +			}
          +		}
          +		var somethingRendered;
          +		for(i = 0; i < headings.length; i++) {
          +			var heading = headings[i];
          +			var _tiddlers = store.sortTiddlers(groups[heading], "-modified");
          +			var headingEl;
          +			if(_tiddlers.length > 0) {
          +				headingEl = $("<li />").addClass("listTitle activityGroupTitle").text(heading).appendTo(container);
          +			}
          +			var rendered = [];
          +			for(j = 0; j < _tiddlers.length; j++) {
          +				var item = macro.createFeedEntry(container, _tiddlers[j], options);
          +				if(item) {
          +					rendered.push(item);
          +				}
          +			}
          +			if(rendered.length === 0) {
          +				headingEl.remove();
          +			} else {
          +				somethingRendered = true;
          +			}
          +		}
          +		if(!somethingRendered) {
          +			var msg;
          +			if(macro.gotActivity) { // it has been run before
          +				msg = macro.locale.emptyStream.format(macro.info.loaded, macro.info.queries);
          +			} else {
          +				msg = macro.locale.pleaseWait;
          +			}
          +			$(container).text(msg);
          +		}
          +		if(!atEndOfActivityFeed) { // show more button
          +			$("<input />").attr("type", "button").val("more").click(function(ev) {
          +				var currentLimit = $(place).attr("activity-limit");
          +				var newLimit = parseInt(currentLimit, 10) + 50;
          +				macro.default_limit = newLimit;
          +				$(place).attr("activity-limit", newLimit);
          +				macro.refresh(place);
          +			}).appendTo(place);
          +		}
          +		this.gotActivity = true;
          +	},
          +	updateStream: function(jstiddlers, type, options) {
          +		// assume already sorted.
          +		var tiddlers = scanMacro._tiddlerfy(jstiddlers, options);
          +		var _dirty = store.isDirty();
          +		$.each(tiddlers, function(i, tid) {
          +			var info = config.macros.view.activity.getActivityInfo(tid, options);
          +			tid.fields["server.activity.type"] = info.type;
          +			tid.fields["server.activity"] = "true";
          +			if(!tid.tags.contains("excludeLists")) {
          +				tid.title = tiddlyspace.getLocalTitle(tid.title, tid.fields["server.workspace"]);
          +				tid.tags = tid.tags.concat(["excludeLists", "excludeMissing", "excludeSearch"]);
          +				tid.fields.doNotSave = "true";
          +				store.addTiddler(tid); // save caused unsaved changes alert and slowdown
          +			}
          +		});
          +		store.setDirty(_dirty);
          +	}
          +};
          +
          +config.macros.view.views.activityItem = function(value, place, params, wikifier,
          +	paramString, tiddler) {
          +	var info = config.macros.view.activity.getActivityInfo(tiddler, {});
          +	wikify(info.template, place, null, tiddler);
          +};
          +
          +var helper = config.macros.view.activity = {
          +	_isNotification: function(tiddler) {
          +		return tiddler.tags.contains(macro.USER_AT_TAG) || tiddler.tags.contains("@all");
          +	},
          +	_repliesOn: function() {
          +		return tiddlyspace.currentSpace.name === macro.CURRENT_USER;
          +	},
          +	types: {
          +		video: function(tiddler) {
          +			return tiddler.tags.contains("video");
          +		},
          +		geo: function(tiddler) {
          +			return tiddler.fields["geo.lat"] && tiddler.fields["geo.long"];
          +		},
          +		siteInfo: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			return title === "SiteInfo";
          +		},
          +		userSiteIcon: function(tiddler) {
          +			var modifierBag = "%0_public".format(tiddler.modifier);
          +			var title = tiddler.fields["server.title"];
          +			return title === "SiteIcon" && modifierBag === tiddler.fields["server.bag"];
          +		},
          +		spaceSiteIcon: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			return title === "SiteIcon"; // note userSiteIcon above does the bag check
          +		},
          +		shadow: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			return title in config.shadowTiddlers;
          +		},
          +		plugin: function(tiddler) {
          +			return tiddler.tags.contains("systemConfig");
          +		},
          +		followYou: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			title = title.indexOf("@") === 0 ? title.substr(1) : title;
          +			return tiddler.tags.contains("follow") && title === macro.USER_AT_TAG;
          +		},
          +		follow: function(tiddler) {
          +			return tiddler.tags.contains("follow");
          +		},
          +		reply: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			var myTiddler = store.getTiddler(tiddler.title);
          +			var myTiddlerIsOlder = myTiddler && myTiddler.modified < tiddler.modified;
          +			return store.tiddlerExists(title) && myTiddlerIsOlder && helper._repliesOn(tiddler);
          +		},
          +		notify: function(tiddler) {
          +			var title = tiddler.fields["server.title"];
          +			var myTiddler = store.getTiddler(title);
          +			var myTiddlerIsNewer = myTiddler && myTiddler.modified > tiddler.modified;
          +			return helper._isNotification(tiddler) && helper._repliesOn(tiddler) && !myTiddlerIsNewer;
          +		},
          +		standard: function(tiddler) {
          +			return true;
          +		},
          +		image: function(tiddler) {
          +			return config.macros.image.isImageTiddler(tiddler);
          +		}
          +	},
          +	// each type should point to a slice in ActivityStreamTemplates tiddler
          +	getActivityInfo: function(tiddler, options) {
          +		var repliesOn = tiddlyspace.currentSpace.name === macro.CURRENT_USER;
          +		var activityType, i;
          +		if(tiddler) {
          +			for(i = 0; i < macro.templates.length; i++) {
          +				var type = macro.templates[i];
          +				if(!activityType && helper.types[type]) {
          +					if(helper.types[type](tiddler)) {
          +						activityType = type;
          +					}
          +				}
          +			}
          +		}
          +		template = store.getTiddlerText("ActivityStreamTemplates##" + activityType) || locale.standardTemplate;
          +		return activityType ? { template: template, type: activityType } : false;
          +	}
          +};
          +
          +config.macros.view.views.link = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +		var el = createTiddlyLink(place,value,true);
          +		if(params[2]) {
          +			$(el).text(params[2]);
          +		}
          +};
          +
          +config.macros.view.views.maplink = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +		var lat = tiddler.fields["geo.lat"];
          +		var lng = tiddler.fields["geo.long"];
          +		var label  = params[2] || value;
          +		if(lat && lng) {
          +			$("<a />").attr("href", "http://maps.google.com/maps?saddr=%0,%1".format(lat, lng)).text(label).appendTo(place);
          +		}
          +};
          +
          +var _displayS = tiddlyspace.displayServerTiddler;
          +tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
          +	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
          +	var localTiddler = store.getTiddler(localTitle);
          +
          +	var _callback = function(src, tiddler) {
          +		if(callback) {
          +			callback(src, tiddler);
          +		}
          +		if(localTiddler) {
          +			tiddler.fields["server.activity"] = "true";
          +			tiddler.fields["server.activity.type"] = localTiddler.fields["server.activity.type"];
          +		}
          +	};
          +	return _displayS.apply(this, [ src, title, workspace, _callback ]);
          +};
          +}(jQuery));
          +//}}}
          +
          +
          +
          /***
          +|''Name''|TiddlySpacePublishingCommands|
          +|''Version''|0.8.5|
          +|''Status''|@@beta@@|
          +|''Description''|toolbar commands for drafting and publishing|
          +|''Author''|Jon Robson|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpacePublishingCommands.js|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
          +!Usage
          +Provides changeToPrivate, changeToPublic and saveDraft commands
          +Provides TiddlySpacePublisher macro.
          +{{{<<TiddlySpacePublisher type:private>>}}} make lots of private tiddlers public.
          +{{{<<TiddlySpacePublisher type:public>>}}} make lots of public tiddlers public.
          +!TODO
          +* add public argument?
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var originMacro = config.macros.tiddlerOrigin;
          +
          +tiddlyspace.getTiddlerStatusType = function(tiddler) {
          +	var isShadow = store.isShadowTiddler(tiddler.title);
          +	var exists = store.tiddlerExists(tiddler.title);
          +	if(isShadow && !exists) {
          +		return "shadow";
          +	} else if(!exists) {
          +		return "missing";
          +	} else {
          +		var types = ["private", "public"];
          +		var type = "external";
          +		for(var i = 0; i < types.length; i++) {
          +			var t = types[i];
          +			type = config.filterHelpers.is[t](tiddler) ? t : type;
          +		}
          +		if(config.filterHelpers.is.unsynced(tiddler)) {
          +			type = type == "private" ? "unsyncedPrivate" : "unsyncedPublic";
          +		}
          +		return type;
          +	}
          +};
          +
          +var cmd = config.commands.publishTiddler = {
          +	text: "make public",
          +	tooltip: "Change this private tiddler into a public tiddler",
          +	errorMsg: "Error publishing %0: %1",
          +
          +	isEnabled: function(tiddler) {
          +		return !readOnly && config.filterHelpers.is["private"](tiddler);
          +	},
          +	handler: function(ev, src, title) {
          +		var tiddler = store.getTiddler(title);
          +		if(tiddler) {
          +			var newBag = cmd.toggleBag(tiddler.fields["server.bag"]);
          +			this.moveTiddler(tiddler, {
          +				title: tiddler.fields["publish.name"] || tiddler.title,
          +				fields: { "server.bag": newBag }
          +			});
          +		}
          +	},
          +	toggleBag: function(bag, to) {
          +		var newBag;
          +		if(typeof bag != typeof "") {
          +			var tiddler = bag;
          +			bag = tiddler.fields["server.bag"];
          +		}
          +		if(bag.indexOf("_private") > -1) { // should make use of endsWith
          +			to = to ? to : "public";
          +			newBag = bag.replace("_private", "_" + to);
          +		} else {
          +			to = to ? to : "private";
          +			newBag = bag.replace("_public", "_" + to);
          +		}
          +		return newBag;
          +	},
          +	copyTiddler: function(title, newTitle, newBag, callback) {
          +		var original = store.getTiddler(title);
          +		newTitle = newTitle ? newTitle : title;
          +		var adaptor = original.getAdaptor();
          +		var publish = function(original, callback) {
          +			var tiddler = $.extend(new Tiddler(newTitle), original);
          +			tiddler.fields = $.extend({}, original.fields, {
          +				"server.bag": newBag,
          +				"server.workspace": "bags/%0".format(newBag),
          +				"server.page.revision": "false"
          +			});
          +			delete tiddler.fields["server.title"];
          +			tiddler.title = newTitle;
          +			adaptor.putTiddler(tiddler, null, null, callback);
          +		};
          +		publish(original, callback);
          +	},
          +	moveTiddler: function(tiddler, newTiddler, callback) {
          +			var info = {
          +			copyContext: {},
          +			deleteContext: {}
          +		};
          +		var _dirty = store.isDirty();
          +		var adaptor = tiddler.getAdaptor();
          +		var newTitle = newTiddler.title;
          +		var oldTitle = tiddler.title;
          +		delete tiddler.fields["server.workspace"];
          +		var oldBag = tiddler.fields["server.bag"];
          +		var newBag = newTiddler.fields["server.bag"];
          +		var newWorkspace = "bags/%0".format(newBag);
          +		cmd.copyTiddler(oldTitle, newTitle, newBag, function(ctx) {
          +				info.copyContext = ctx;
          +				var context = {
          +					tiddler: tiddler,
          +					workspace: newWorkspace
          +				};
          +				store.addTiddler(ctx.tiddler);
          +				tiddler.title = oldTitle; // for cases where a rename occurs
          +				if(ctx.status) { // only do if a success
          +					if(oldBag != newBag) {
          +						adaptor.deleteTiddler(tiddler, context, {}, function(ctx) {
          +							info.deleteContext = ctx;
          +							var el;
          +							if(tiddler) {
          +								tiddler.fields["server.workspace"] = newWorkspace;
          +								tiddler.fields["server.bag"] = newBag;
          +							}
          +							el = el ? el : story.refreshTiddler(oldTitle, null, true);
          +							if(oldTitle != newTitle) {
          +								store.deleteTiddler(oldTitle);
          +								store.notify(oldTitle, true);
          +							}
          +							if(el) {
          +								story.displayTiddler(el, newTitle);
          +							}
          +							if(oldTitle != newTitle) {
          +								story.closeTiddler(oldTitle);
          +							}
          +							if(callback) {
          +								callback(info);
          +							}
          +							store.setDirty(_dirty);
          +						});
          +					} else {
          +						if(callback) {
          +							callback(info);
          +						}
          +					}
          +					refreshDisplay();
          +				}
          +		});
          +	}
          +};
          +
          +var changeToPrivate = config.commands.changeToPrivate = {
          +	text: "make private",
          +	tooltip: "turn this public tiddler into a private tiddler",
          +	isEnabled: function(tiddler) {
          +		return !readOnly && config.filterHelpers.is["public"](tiddler);
          +	},
          +	handler: function(event, src, title) {
          +		var tiddler = store.getTiddler(title);
          +		var newBag = cmd.toggleBag(tiddler, "private");
          +		var newTiddler = { title: title, fields: { "server.bag": newBag }};
          +		cmd.moveTiddler(tiddler, newTiddler);
          +	}
          +};
          +config.commands.changeToPublic = cmd;
          +
          +/* Save as draft command */
          +var saveDraftCmd = config.commands.saveDraft = {
          +	text: "save draft",
          +	tooltip: "Save as a private draft",
          +	isEnabled: function(tiddler) {
          +		return changeToPrivate.isEnabled(tiddler);
          +	},
          +	getDraftTitle: function(title) {
          +		var draftTitle;
          +		var draftNum = "";
          +		while(!draftTitle) {
          +			var suggestedTitle = "%0 [draft%1]".format(title, draftNum);
          +			if(store.getTiddler(suggestedTitle)) {
          +				draftNum = !draftNum ? 2 : draftNum + 1;
          +			} else {
          +				draftTitle = suggestedTitle;
          +			}
          +		}
          +		return draftTitle;
          +	},
          +	createDraftTiddler: function(title, gatheredFields) {
          +		var tiddler = store.getTiddler(title);
          +		var draftTitle = saveDraftCmd.getDraftTitle(title);
          +		var draftTiddler = new Tiddler(draftTitle);
          +		if(tiddler) {
          +			$.extend(true, draftTiddler, tiddler);
          +		} else {
          +			$.extend(draftTiddler.fields, config.defaultCustomFields);
          +		}
          +		for(var fieldName in gatheredFields) {
          +			if(TiddlyWiki.isStandardField(fieldName)) {
          +				draftTiddler[fieldName] = gatheredFields[fieldName];
          +			} else {
          +				draftTiddler.fields[fieldName] = gatheredFields[fieldName];
          +			}
          +		}
          +		var privateBag = tiddlyspace.getCurrentBag("private");
          +		var privateWorkspace = tiddlyspace.getCurrentWorkspace("private");
          +		draftTiddler.title = draftTitle;
          +		draftTiddler.fields["publish.name"] = title;
          +		draftTiddler.fields["server.workspace"] = privateWorkspace;
          +		draftTiddler.fields["server.bag"] = privateBag;
          +		draftTiddler.fields["server.title"] = draftTitle;
          +		draftTiddler.fields["server.page.revision"] = "false";
          +		delete draftTiddler.fields["server.etag"];
          +		return draftTiddler;
          +	},
          +	handler: function(ev, src, title) {
          +		var tiddler = store.getTiddler(title); // original tiddler
          +		var tidEl = story.getTiddler(title);
          +		var uiFields = {};
          +		story.gatherSaveFields(tidEl, uiFields);
          +		var tid = saveDraftCmd.createDraftTiddler(title, uiFields);
          +		tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier,
          +			new Date(), tid.tags, tid.fields);
          +		autoSaveChanges(null, [tid]);
          +		story.closeTiddler(title);
          +		story.displayTiddler(src, title);
          +		story.displayTiddler(src, tid.title);
          +	}
          +};
          +
          +var macro = config.macros.TiddlySpacePublisher = {
          +	locale: {
          +		title: "Batch Publisher",
          +		changeStatusLabel: "Make %0",
          +		noTiddlersText: "No tiddlers to publish",
          +		changeStatusPrompt: "Make all the selected tiddlers %0.",
          +		description: "Change tiddlers from %0 to %1 in this space"
          +	},
          +
          +	listViewTemplate: {
          +		columns: [
          +			{ name: "Selected", field: "Selected", rowName: "title", type: "Selector" },
          +			{ name: "Tiddler", field: "tiddler", title: "Tiddler", type: "Tiddler" },
          +			{ name: "Status", field: "status", title: "Status", type: "WikiText" }
          +		],
          +		rowClasses: []
          +	},
          +
          +	changeStatus: function(tiddlers, status, callback) { // this is what is called when you click the publish button
          +		var publicBag;
          +		for(var i = 0; i < tiddlers.length; i++) {
          +			var tiddler = tiddlers[i];
          +			var newTiddler = {
          +				title: tiddler.title,
          +				fields: { "server.bag": cmd.toggleBag(tiddler, status) }
          +			};
          +			cmd.moveTiddler(tiddler, newTiddler, callback);
          +		}
          +	},
          +	getMode: function(paramString) {
          +		var params = paramString.parseParams("anon")[0];
          +		var status = params.type ?
          +			(["public", "private"].contains(params.type[0]) ? params.type[0] : "private") :
          +			"private";
          +		var newStatus = status == "public" ? "private" : "public";
          +		return [status, newStatus];
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var wizard = new Wizard();
          +		var locale = macro.locale;
          +		var status = macro.getMode(paramString);
          +		wizard.createWizard(place, locale.title);
          +		wizard.addStep(macro.locale.description.format(status[0], status[1]),
          +			'<input type="hidden" name="markList" />');
          +		var markList = wizard.getElement("markList");
          +		var listWrapper = $("<div />").addClass("batchPublisher").
          +			attr("refresh", "macro").attr("macroName", macroName).
          +			attr("params", paramString)[0];
          +		markList.parentNode.insertBefore(listWrapper, markList);
          +		$.data(listWrapper, "wizard", wizard);
          +		macro.refresh(listWrapper);
          +	},
          +	getCheckedTiddlers: function(listWrapper, titlesOnly) {
          +		var tiddlers = [];
          +		$(".chkOptionInput[rowName]:checked", listWrapper).each(function(i, el) {
          +			var title = $(el).attr("rowName");
          +			if(titlesOnly) {
          +				tiddlers.push(title);
          +			} else {
          +				tiddlers.push(store.getTiddler(title));
          +			}
          +		});
          +		return tiddlers;
          +	},
          +	refresh: function(listWrapper) {
          +		var checked = macro.getCheckedTiddlers(listWrapper, true);
          +		var paramString = $(listWrapper).empty().attr("params");
          +		var wizard = $.data(listWrapper, "wizard");
          +		var locale = macro.locale;
          +		var params = paramString.parseParams("anon")[0];
          +		var publishCandidates = [];
          +		var status = macro.getMode(paramString);
          +		var pubType = status[0];
          +		var newPubType = status[1];
          +		var tiddlers = params.filter ? store.filterTiddlers(params.filter[0]) :
          +			store.filterTiddlers("[is[%0]]".format(pubType));
          +		var enabled = [];
          +		for(var i = 0; i < tiddlers.length; i++) {
          +			var tiddler = tiddlers[i];
          +			var title = tiddler.title;
          +			if(!tiddler.tags.contains("excludePublisher") && title !== "SystemSettings") {
          +				publishCandidates.push({ title: title, tiddler: tiddler, status: pubType});
          +			}
          +			if(checked.contains(title)) {
          +				enabled.push("[rowname=%0]".format(title));
          +			}
          +		}
          +
          +		if(publishCandidates.length === 0) {
          +			createTiddlyElement(listWrapper, "em", null, null, locale.noTiddlersText);
          +		} else {
          +			var listView = ListView.create(listWrapper, publishCandidates, macro.listViewTemplate);
          +			wizard.setValue("listView", listView);
          +			var btnHandler = function(ev) {
          +				var tiddlers = macro.getCheckedTiddlers(listWrapper);
          +				var callback = function(status) {
          +					$(".batchPublisher").each(function(i, el) {
          +						macro.refresh(el);
          +					});
          +				};
          +				macro.changeStatus(tiddlers, newPubType, callback);
          +			};
          +			wizard.setButtons([{
          +				caption: locale.changeStatusLabel.format(newPubType),
          +				tooltip: locale.changeStatusPrompt.format(newPubType),
          +				onClick: btnHandler
          +			}]);
          +			$(enabled.join(",")).attr("checked", true); // retain what was checked before
          +		}
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          !Spaces
          +<<groupBy server.bag>>
          +
          +!Private
          +<<list filter [is[private]]>>
          +
          +!Public
          +<<list filter [is[public]]>>
          +
          +!Drafts
          +<<list filter [is[draft]]>>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceBackstage|
          +|''Version''|0.8.0|
          +|''Description''|Provides a TiddlySpace version of the backstage and a homeLink macro|
          +|''Status''|@@beta@@|
          +|''Contributors''|Jon Lister, Jon Robson, Colm Britton|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceBackstage.js|
          +|''Requires''|TiddlySpaceConfig ImageMacroPlugin TiddlySpaceViewTypes|
          +!StyleSheet
          +.tiddler .error.annotation .button{
          +	display: inline-block;
          +}
          +
          +#backstageArea {
          +	z-index: 49;
          +	color: white;
          +	background-color: black;
          +	background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
          +	background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
          +	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
          +	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)";
          +	height: 25px;
          +	padding: 0;
          +}
          +
          +#backstageButton {
          +	overflow: hidden;
          +}
          +
          +#backstageButton #backstageShow,
          +#backstageButton #backstageHide {
          +	margin: 0px;
          +	padding: 0px;
          +}
          +
          +#backstageButton #backstageShow:hover,
          +#backstageButton #backstageHide:hover {
          +	background: none;
          +	color: none;
          +}
          +
          +#backstageButton img,
          +#backstageButton svg {
          +	width: 24px;
          +	height: 24px;
          +}
          +
          +#messageArea {
          +	top: 50px;
          +}
          +
          +#backstageToolbar {
          +	position: relative;
          +}
          +
          +#backstageArea a {
          +	padding: 0px;
          +	margin-left: 0px;
          +	color: white;
          +	background: none;
          +}
          +
          +#backstageArea a:hover {
          +	background-color: white;
          +}
          +
          +#backstage ol,
          +#backstage ul {
          +	padding: auto;
          +}
          +
          +#backstageButton a {
          +	margin: 0;
          +}
          +
          +.backstagePanelBody ul {
          +	padding: 5px;
          +	margin: 5px;
          +}
          +
          +#backstage #backstagePanel {
          +	margin-left: 5%;
          +	padding: 0em;
          +	margin-right: 5%;
          +}
          +
          +#backstageToolbar a {
          +	position: relative;
          +}
          +
          +#backstageArea a.backstageSelTab,
          +#backstageToolbar .backstageTask {
          +	line-height: 25px;
          +	color: #767676;
          +}
          +
          +.backstageTask .externalImage,
          +.backstageTask .image {
          +	display: inline;
          +}
          +
          +#backstageToolbar a span {
          +	z-index: 2;
          +}
          +
          +a.backstageTask {
          +	display: inline;
          +        margin-left: 1em !important;
          +}
          +
          +.backstagePanelBody .button {
          +	display: inline-block;
          +	margin-right: 10px;
          +}
          +
          +.backstagePanelBody {
          +	margin: 0 0 0 0.6em;
          +	padding: 0.4em 0.5em 1px 0.5em;
          +}
          +
          +#backstage table {
          +	margin: auto;
          +}
          +
          +#backstage .wizard table {
          +	border: 0px;
          +	margin: 0;
          +}
          +
          +#backstage div  li.listLink {
          +	border: 0px;
          +	width: 78%;
          +	font-size: 0.7em;
          +}
          +
          +#backstage div li.listTitle {
          +	font-weight: bold;
          +	text-decoration: underline;
          +	font-size: 1em;
          +	background: #ccc;
          +	width: 100%;
          +}
          +
          +#backstage fieldset {
          +	border: solid 1px [[ColorPalette::Background]];
          +}
          +
          +#backstage .viewer table,#backstage table.twtable {
          +	border: 0px;
          +}
          +
          +#backstageToolbar img {
          +	padding: 0;
          +}
          +
          +#backstage .wizard,
          +#backstage .wizardFooter {
          +	background: none;
          +}
          +
          +.viewer td, .viewer tr, .twtable td, .twtable tr {
          +	border: 1px solid #eee;
          +}
          +
          +#backstage .inlineList ul li {
          +	background-color: [[ColorPalette::Background]];
          +	border: solid 1px [[ColorPalette::TertiaryMid]];
          +	display: block;
          +	float: left;
          +	list-style: none;
          +	margin-right: 1em;
          +	padding: 0.5em;
          +}
          +
          +.backstageClear, .inlineList form {
          +	clear: both;
          +	display: block;
          +	margin-top: 3em;
          +}
          +
          +.tiddlyspaceMenu {
          +	text-align: center;
          +}
          +
          +span.chunkyButton {
          +	display: inline-block;
          +	padding: 0;
          +	margin: 0;
          +	border: solid 2px #000;
          +	background-color: #04b;
          +}
          +
          +span.chunkyButton a.button, span.chunkyButton a:active.button {
          +	white-space: nowrap;
          +	font-weight: bold;
          +	font-size: 1.8em;
          +	color: #fff;
          +	text-align: center;
          +	padding: 0.5em 0.5em;
          +	margin: 0;
          +	border-style: none;
          +	display: block;
          +}
          +
          +span.chunkyButton:hover {
          +	background-color: #014;
          +}
          +
          +span.chunkyButton a.button:hover {
          +	border-style: none;
          +	background: none;
          +	color: #fff;
          +}
          +
          +#backstage .unpluggedSpaceTab .wizard,
          +.unpluggedSpaceTab .wizard {
          +	background: white;
          +	border: 2px solid #CCC;
          +	padding: 5px;
          +}
          +
          +.syncKey .keyItem {
          +	border: 1px solid black;
          +	display: inline-block;
          +	margin: 0.2em;
          +	padding: 0.1em 0.1em 0.1em 0.1em;
          +}
          +
          +.keyHeading {
          +	font-size: 2em;
          +	font-weight: bold;
          +	margin: 0.4em 0em -0.2em;
          +}
          +
          +.unpluggedSpaceTab .putToServer,
          +.unpluggedSpaceTab .notChanged {
          +	display: none;
          +}
          +
          +.tiddlyspaceMenu ul {
          +	margin: 0;
          +	padding: 0;
          +}
          +
          +.tiddlyspaceMenu ul li {
          +	list-style: none;
          +}
          +
          +.unsyncedChanges .unsyncedList {
          +	display: block;
          +}
          +
          +.unsyncedList {
          +	display: none;
          +}
          +!Code
          +***/
          +//{{{
          +(function ($) {
          +    var name = "StyleSheet" + tiddler.title;
          +    config.shadowTiddlers[name] = "/*{{{*/\n%0\n/*}}}*/".
          +        format(store.getTiddlerText(tiddler.title + "##StyleSheet")); // this accesses the StyleSheet section of the current tiddler (the plugin that contains it)
          +    store.addNotification(name, refreshStyles);
          +
          +    if (!config.extensions.tiddlyweb.status.tiddlyspace_version) { // unplugged
          +        config.extensions.tiddlyweb.status.tiddlyspace_version = "<unknown>";
          +        config.extensions.tiddlyweb.status.server_host = {
          +            url:config.extensions.tiddlyweb.host }; // TiddlySpaceLinkPlugin expects this
          +    }
          +    var disabled_tasks_for_nonmembers = ["tiddlers", "plugins", "batch", "sync"];
          +
          +    var tweb = config.extensions.tiddlyweb;
          +    var tiddlyspace = config.extensions.tiddlyspace;
          +    var currentSpace = tiddlyspace.currentSpace.name;
          +    var imageMacro = config.macros.image;
          +
          +    if (config.options.chkBackstage === undefined) {
          +        config.options.chkBackstage = false;
          +    }
          +
          +// Set up Backstage
          +    config.tasks = {};
          +    config.tasks.status = {
          +        text:"status",
          +        tooltip:"TiddlySpace Info",
          +        content:"<<tiddler Backstage##Menu>>"
          +    };
          +    config.tasks.tiddlers = {
          +        text:"tiddlers",
          +        tooltip:"tiddlers control panel",
          +        content:"<<tiddler Backstage##BackstageTiddlers>>"
          +    };
          +    config.tasks.plugins = {
          +        text:"plugins",
          +        tooltip:"Manage installed plugins",
          +        content:"<<tiddler Backstage##Plugins>>"
          +    };
          +    config.tasks.batch = {
          +        text:"batch",
          +        tooltip:"Batch manage public/private tiddlers",
          +        content:"<<tiddler Backstage##BatchOps>>"
          +    };
          +    config.tasks.tweaks = {
          +        text:"tweaks",
          +        tooltip:"Tweak TiddlyWiki behaviors",
          +        content:"<<tiddler Backstage##Tweaks>>"
          +    };
          +    config.tasks.exportTiddlers = {
          +        text:"import/export",
          +        tooltip:"Import/export tiddlers from/to a TiddlyWiki",
          +        content:"<<tiddler Backstage##ImportExport>>"
          +    };
          +    config.tasks.sync = {
          +        text:"sync",
          +        tooltip:"Check Sync status",
          +        content:"<<tiddler Backstage##SpaceUnplugged>>"
          +    };
          +
          +    if (window.location.protocol === "file:") {
          +        config.unplugged = true;
          +    }
          +
          +    config.backstageTasks = ["status", "tiddlers", "plugins",
          +        "batch", "tweaks", "exportTiddlers", "sync"];
          +
          +    config.messages.backstage.prompt = "";
          +// initialize state
          +    var _show = backstage.show;
          +    backstage.show = function () {
          +        // selectively hide backstage tasks and tabs based on user status
          +        var tasks = $("#backstageToolbar .backstageTask").show();
          +        var bs = backstage.tiddlyspace;
          +        if (!config.unplugged) {
          +            tweb.getUserInfo(function (user) {
          +                if (user.anon) {
          +                    jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
          +                        var taskIndex = config.backstageTasks.indexOf(task);
          +                        if (taskIndex !== -1) {
          +                            config.backstageTasks.splice(taskIndex, 1);
          +                        }
          +                    });
          +                    config.messages.memberStatus = bs.locale.loggedout;
          +                } else {
          +                    config.messages.memberStatus = readOnly ?
          +                        bs.locale.nonmember : bs.locale.member;
          +                }
          +            });
          +        } else {
          +            config.messages.memberStatus = bs.locale.unplugged;
          +        }
          +
          +        // display backstage
          +        return _show.apply(this, arguments);
          +    };
          +    if (readOnly) {
          +        jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
          +            var taskIndex = config.backstageTasks.indexOf(task);
          +            if (taskIndex !== -1) {
          +                config.backstageTasks.splice(taskIndex, 1);
          +            }
          +        });
          +    }
          +
          +    var tasks = config.tasks;
          +    var commonUrl = "/bags/common/tiddlers/%0";
          +
          +    backstage.tiddlyspace = {
          +        locale:{
          +            member:"You are a member of this space.",
          +            nonmember:"You are not a member of this space.",
          +            loggedout:"You are currently logged out of TiddlySpace.",
          +            unplugged:"You are unplugged."
          +        },
          +        showButton:function () {
          +            var showBtn = $("#backstageShow")[0];
          +            var altText = $(showBtn).text();
          +            $(showBtn).empty();
          +            imageMacro.renderImage(showBtn, "backstage.svg",
          +                { altImage:commonUrl.format("backstage.png"), alt:altText});
          +        },
          +        hideButton:function () {
          +            var hideBtn = $("#backstageHide")[0];
          +            var altText = $(hideBtn).text();
          +            $(hideBtn).empty();
          +            imageMacro.renderImage(hideBtn, "close.svg",
          +                { altImage:commonUrl.format("close.png"), alt:altText, width:24, height:24 });
          +        }
          +    };
          +
          +    var _init = backstage.init;
          +    backstage.init = function () {
          +        _init.apply(this, arguments);
          +        var init = function (user) {
          +            var bs = backstage.tiddlyspace;
          +            bs.showButton();
          +            bs.hideButton();
          +        };
          +        tweb.getUserInfo(init);
          +    };
          +
          +    var home = config.macros.homeLink = {
          +        locale:{
          +            linkText:"your home space"
          +        },
          +        handler:function (place) {
          +            var container = $("<span />").appendTo(place)[0];
          +            tweb.getUserInfo(function (user) {
          +                if (!user.anon && user.name !== currentSpace) {
          +                    createSpaceLink(container, user.name, null, home.locale.linkText);
          +                }
          +            });
          +        }
          +    };
          +
          +    config.macros.exportSpace = {
          +        handler:function (place, macroName, params) {
          +            var filename = params[0] ||
          +                "/tiddlers.wiki?download=%0.html".format(currentSpace);
          +            $('<a class="button">download</a>').// XXX: i18n
          +                attr("href", filename).appendTo(place);
          +        }
          +    };
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          /***
          +|''Name''|RevisionsCommandPlugin|
          +|''Description''|provides access to tiddler revisions|
          +|''Author''|FND|
          +|''Contributors''|Martin Budden|
          +|''Version''|0.3.3|
          +|''Status''|@@beta@@|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
          +|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.6.0|
          +|''Keywords''|serverSide|
          +!Usage
          +Extend [[ToolbarCommands]] with {{{revisions}}}.
          +!Revision History
          +!!v0.1 (2009-07-23)
          +* initial release (renamed from experimental ServerCommandsPlugin)
          +!!v0.2 (2010-03-04)
          +* suppressed wikification in diff view
          +!!v0.3 (2010-04-07)
          +* restored wikification in diff view
          +* added link to side-by-side diff view
          +!To Do
          +* strip server.* fields from revision tiddlers
          +* resolve naming conflicts
          +* i18n, l10n
          +* code sanitizing
          +* documentation
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +jQuery.twStylesheet(".diff { white-space: pre, font-family: monospace }",
          +	{ id: "diff" });
          +
          +var cmd = config.commands.revisions = {
          +	type: "popup",
          +	hideShadow: true,
          +	text: "revisions",
          +	tooltip: "display tiddler revisions",
          +	revTooltip: "", // TODO: populate dynamically?
          +	loadLabel: "loading...",
          +	loadTooltip: "loading revision list",
          +	selectLabel: "select",
          +	selectTooltip: "select revision for comparison",
          +	selectedLabel: "selected",
          +	compareLabel: "compare",
          +	linkLabel: "side-by-side view",
          +	revSuffix: " [rev. #%0]",
          +	diffSuffix: " [diff: #%0 #%1]",
          +	dateFormat: "YYYY-0MM-0DD 0hh:0mm",
          +	listError: "revisions could not be retrieved",
          +
          +	handlePopup: function(popup, title) {
          +		title = this.stripSuffix("rev", title);
          +		title = this.stripSuffix("diff", title);
          +		var tiddler = store.getTiddler(title);
          +		var type = _getField("server.type", tiddler);
          +		var adaptor = new config.adaptors[type]();
          +		var limit = null; // TODO: customizable
          +		var context = {
          +			host: _getField("server.host", tiddler),
          +			workspace: _getField("server.workspace", tiddler)
          +		};
          +		var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
          +		var params = { popup: popup, loading: loading, origin: title };
          +		adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
          +	},
          +
          +	displayRevisions: function(context, userParams) {
          +		removeNode(userParams.loading);
          +		if(context.status) {
          +			var callback = function(ev) {
          +				var e = ev || window.event;
          +				var revision = resolveTarget(e).getAttribute("revision");
          +				context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
          +					userParams, cmd.displayTiddlerRevision);
          +			};
          +			var table = createTiddlyElement(userParams.popup, "table");
          +			for(var i = 0; i < context.revisions.length; i++) {
          +				var tiddler = context.revisions[i];
          +				var row = createTiddlyElement(table, "tr");
          +				var timestamp = tiddler.modified.formatString(cmd.dateFormat);
          +				var revision = tiddler.fields["server.page.revision"];
          +				var cell = createTiddlyElement(row, "td");
          +				createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
          +					null, null, { revision: revision });
          +				cell = createTiddlyElement(row, "td", null, null, tiddler.modifier);
          +				cell = createTiddlyElement(row, "td");
          +				createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
          +					cmd.revisionSelected, null, null, null,
          +					{ index:i, revision: revision, col: 2 });
          +				cmd.context = context; // XXX: unsafe (singleton)!?
          +			}
          +		} else {
          +			$("<li />").text(cmd.listError).appendTo(userParams.popup);
          +		}
          +	},
          +
          +	revisionSelected: function(ev) {
          +		var e = ev || window.event;
          +		e.cancelBubble = true;
          +		if(e.stopPropagation) {
          +			e.stopPropagation();
          +		}
          +		var n = resolveTarget(e);
          +		var index = n.getAttribute("index");
          +		var col = n.getAttribute("col");
          +		while(!index || !col) {
          +			n = n.parentNode;
          +			index = n.getAttribute("index");
          +			col = n.getAttribute("col");
          +		}
          +		cmd.revision = n.getAttribute("revision");
          +		var table = n.parentNode.parentNode.parentNode;
          +		var rows = table.childNodes;
          +		for(var i = 0; i < rows.length; i++) {
          +			var c = rows[i].childNodes[col].firstChild;
          +			if(i == index) {
          +				if(c.textContent) {
          +					c.textContent = cmd.selectedLabel;
          +				} else {
          +					c.text = cmd.selectedLabel;
          +				}
          +			} else {
          +				if(c.textContent) {
          +					c.textContent = cmd.compareLabel;
          +				} else {
          +					c.text = cmd.compareLabel;
          +				}
          +				c.onclick = cmd.compareSelected;
          +			}
          +		}
          +	},
          +
          +	compareSelected: function(ev) {
          +		var e = ev || window.event;
          +		var n = resolveTarget(e);
          +		var context = cmd.context;
          +		context.rev1 = n.getAttribute("revision");
          +		context.rev2 = cmd.revision;
          +		context.tiddler = context.revisions[n.getAttribute("index")];
          +		context.format = "unified";
          +		context.adaptor.getTiddlerDiff(context.tiddler.title, context,
          +			context.userParams, cmd.displayTiddlerDiffs);
          +	},
          +
          +	displayTiddlerDiffs: function(context, userParams) {
          +		var tiddler = context.tiddler;
          +		tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
          +		tiddler.text = "{{diff{\n" + context.diff + "\n}}}";
          +		tiddler.tags = ["diff"];
          +		tiddler.fields.doNotSave = "true"; // XXX: correct?
          +		if(!store.getTiddler(tiddler.title)) {
          +			store.addTiddler(tiddler);
          +		}
          +		var src = story.getTiddler(userParams.origin);
          +		var tiddlerEl = story.displayTiddler(src, tiddler);
          +		var uri = context.uri.replace("format=unified", "format=horizontal");
          +		var link = $('<a target="_blank" />').attr("href", uri).text(cmd.linkLabel);
          +		$(".viewer", tiddlerEl).prepend(link);
          +	},
          +
          +	displayTiddlerRevision: function(context, userParams) {
          +		var tiddler = context.tiddler;
          +		tiddler.title += cmd.revSuffix.format([tiddler.fields["server.page.revision"]]);
          +		tiddler.fields.doNotSave = "true"; // XXX: correct?
          +		if(!store.getTiddler(tiddler.title)) {
          +			store.addTiddler(tiddler);
          +		}
          +		var src = story.getTiddler(userParams.origin);
          +		story.displayTiddler(src, tiddler);
          +	},
          +
          +	stripSuffix: function(type, title) {
          +		var str = cmd[type + "Suffix"];
          +		var i = str.indexOf("%0");
          +		i = title.indexOf(str.substr(0, i));
          +		if(i != -1) {
          +			title = title.substr(0, i);
          +		}
          +		return title;
          +	}
          +};
          +
          +var _getField = function(name, tiddler) {
          +	return tiddler.fields[name] || config.defaultCustomFields[name];
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Description''|Sanitisation for dynamically pulling tiddlers into your space and displaying them|
          +!Notes
          +Works both inside and outside TiddlyWiki. Uses the HTML Sanitizer provided by the Google Caja project
          +(see http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer for more on this), which is licensed under
          +an Apache License (see http://www.apache.org/licenses/LICENSE-2.0).
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var cleanURL = function(url) {
          +	var regexp = /^(?:http|https|mailto|ftp|irc|news):\/\//;
          +	return (regexp.test(url)) ? url : null;
          +};
          +
          +$.sanitize = function(html) {
          +	return html_sanitize(html, cleanURL);
          +};
          +
          +/*
          + * HTML Sanitizer, provided by Google Caja
          + */
          +
          +/* Copyright Google Inc.
          + * Licensed under the Apache Licence Version 2.0
          + * Autogenerated at Tue May 17 17:39:24 BST 2011
          + * @provides html4
          + */var html4={};html4.atype={NONE:0,URI:1,URI_FRAGMENT:11,SCRIPT:2,STYLE:3,ID:4,IDREF:5,IDREFS:6,GLOBAL_NAME:7,LOCAL_NAME:8,CLASSES:9,FRAME_TARGET:10},html4.ATTRIBS={"*::class":9,"*::dir":0,"*::id":4,"*::lang":0,"*::onclick":2,"*::ondblclick":2,"*::onkeydown":2,"*::onkeypress":2,"*::onkeyup":2,"*::onload":2,"*::onmousedown":2,"*::onmousemove":2,"*::onmouseout":2,"*::onmouseover":2,"*::onmouseup":2,"*::style":3,"*::title":0,"a::accesskey":0,"a::coords":0,"a::href":1,"a::hreflang":0,"a::name":7,"a::onblur":2,"a::onfocus":2,"a::rel":0,"a::rev":0,"a::shape":0,"a::tabindex":0,"a::target":10,"a::type":0,"area::accesskey":0,"area::alt":0,"area::coords":0,"area::href":1,"area::nohref":0,"area::onblur":2,"area::onfocus":2,"area::shape":0,"area::tabindex":0,"area::target":10,"bdo::dir":0,"blockquote::cite":1,"br::clear":0,"button::accesskey":0,"button::disabled":0,"button::name":8,"button::onblur":2,"button::onfocus":2,"button::tabindex":0,"button::type":0,"button::value":0,"canvas::height":0,"canvas::width":0,"caption::align":0,"col::align":0,"col::char":0,"col::charoff":0,"col::span":0,"col::valign":0,"col::width":0,"colgroup::align":0,"colgroup::char":0,"colgroup::charoff":0,"colgroup::span":0,"colgroup::valign":0,"colgroup::width":0,"del::cite":1,"del::datetime":0,"dir::compact":0,"div::align":0,"dl::compact":0,"font::color":0,"font::face":0,"font::size":0,"form::accept":0,"form::action":1,"form::autocomplete":0,"form::enctype":0,"form::method":0,"form::name":7,"form::onreset":2,"form::onsubmit":2,"form::target":10,"h1::align":0,"h2::align":0,"h3::align":0,"h4::align":0,"h5::align":0,"h6::align":0,"hr::align":0,"hr::noshade":0,"hr::size":0,"hr::width":0,"iframe::align":0,"iframe::frameborder":0,"iframe::height":0,"iframe::marginheight":0,"iframe::marginwidth":0,"iframe::width":0,"img::align":0,"img::alt":0,"img::border":0,"img::height":0,"img::hspace":0,"img::ismap":0,"img::name":7,"img::src":1,"img::usemap":11,"img::vspace":0,"img::width":0,"input::accept":0,"input::accesskey":0,"input::align":0,"input::alt":0,"input::autocomplete":0,"input::checked":0,"input::disabled":0,"input::ismap":0,"input::maxlength":0,"input::name":8,"input::onblur":2,"input::onchange":2,"input::onfocus":2,"input::onselect":2,"input::readonly":0,"input::size":0,"input::src":1,"input::tabindex":0,"input::type":0,"input::usemap":11,"input::value":0,"ins::cite":1,"ins::datetime":0,"label::accesskey":0,"label::for":5,"label::onblur":2,"label::onfocus":2,"legend::accesskey":0,"legend::align":0,"li::type":0,"li::value":0,"map::name":7,"menu::compact":0,"ol::compact":0,"ol::start":0,"ol::type":0,"optgroup::disabled":0,"optgroup::label":0,"option::disabled":0,"option::label":0,"option::selected":0,"option::value":0,"p::align":0,"pre::width":0,"q::cite":1,"select::disabled":0,"select::multiple":0,"select::name":8,"select::onblur":2,"select::onchange":2,"select::onfocus":2,"select::size":0,"select::tabindex":0,"table::align":0,"table::bgcolor":0,"table::border":0,"table::cellpadding":0,"table::cellspacing":0,"table::frame":0,"table::rules":0,"table::summary":0,"table::width":0,"tbody::align":0,"tbody::char":0,"tbody::charoff":0,"tbody::valign":0,"td::abbr":0,"td::align":0,"td::axis":0,"td::bgcolor":0,"td::char":0,"td::charoff":0,"td::colspan":0,"td::headers":6,"td::height":0,"td::nowrap":0,"td::rowspan":0,"td::scope":0,"td::valign":0,"td::width":0,"textarea::accesskey":0,"textarea::cols":0,"textarea::disabled":0,"textarea::name":8,"textarea::onblur":2,"textarea::onchange":2,"textarea::onfocus":2,"textarea::onselect":2,"textarea::readonly":0,"textarea::rows":0,"textarea::tabindex":0,"tfoot::align":0,"tfoot::char":0,"tfoot::charoff":0,"tfoot::valign":0,"th::abbr":0,"th::align":0,"th::axis":0,"th::bgcolor":0,"th::char":0,"th::charoff":0,"th::colspan":0,"th::headers":6,"th::height":0,"th::nowrap":0,"th::rowspan":0,"th::scope":0,"th::valign":0,"th::width":0,"thead::align":0,"thead::char":0,"thead::charoff":0,"thead::valign":0,"tr::align":0,"tr::bgcolor":0,"tr::char":0,"tr::charoff":0,"tr::valign":0,"ul::compact":0,"ul::type":0},html4.eflags={OPTIONAL_ENDTAG:1,EMPTY:2,CDATA:4,RCDATA:8,UNSAFE:16,FOLDABLE:32,SCRIPT:64,STYLE:128},html4.ELEMENTS={a:0,abbr:0,acronym:0,address:0,applet:16,area:2,b:0,base:18,basefont:18,bdo:0,big:0,blockquote:0,body:49,br:2,button:0,canvas:0,caption:0,center:0,cite:0,code:0,col:2,colgroup:1,dd:1,del:0,dfn:0,dir:0,div:0,dl:0,dt:1,em:0,fieldset:0,font:0,form:0,frame:18,frameset:16,h1:0,h2:0,h3:0,h4:0,h5:0,h6:0,head:49,hr:2,html:49,i:0,iframe:4,img:2,input:2,ins:0,isindex:18,kbd:0,label:0,legend:0,li:1,link:18,map:0,menu:0,meta:18,nobr:0,noframes:20,noscript:20,object:16,ol:0,optgroup:0,option:1,p:1,param:18,pre:0,q:0,s:0,samp:0,script:84,select:0,small:0,span:0,strike:0,strong:0,style:148,sub:0,sup:0,table:0,tbody:1,td:1,textarea:8,tfoot:1,th:1,thead:1,title:24,tr:1,tt:0,u:0,ul:0,"var":0},html4.ueffects={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2},html4.URIEFFECTS={"a::href":2,"area::href":2,"blockquote::cite":0,"body::background":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0},html4.ltypes={UNSANDBOXED:2,SANDBOXED:1,DATA:0},html4.LOADERTYPES={"a::href":2,"area::href":2,"blockquote::cite":2,"body::background":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2};var html=function(a){function x(b,c,d){var e=[];w(function(b,e){for(var f=0;f<e.length;f+=2){var g=e[f],h=e[f+1],i=null,j;if((j=b+"::"+g,a.ATTRIBS.hasOwnProperty(j))||(j="*::"+g,a.ATTRIBS.hasOwnProperty(j)))i=a.ATTRIBS[j];if(i!==null)switch(i){case a.atype.NONE:break;case a.atype.SCRIPT:case a.atype.STYLE:h=null;break;case a.atype.ID:case a.atype.IDREF:case a.atype.IDREFS:case a.atype.GLOBAL_NAME:case a.atype.LOCAL_NAME:case a.atype.CLASSES:h=d?d(h):h;break;case a.atype.URI:h=c&&c(h);break;case a.atype.URI_FRAGMENT:h&&"#"===h.charAt(0)?(h=d?d(h):h,h&&(h="#"+h)):h=null;break;default:h=null}else h=null;e[f+1]=h}return e})(b,e);return e.join("")}function w(b){var c,d;return v({startDoc:function(a){c=[],d=!1},startTag:function(e,f,g){if(!d){if(!a.ELEMENTS.hasOwnProperty(e))return;var h=a.ELEMENTS[e];if(h&a.eflags.FOLDABLE)return;if(h&a.eflags.UNSAFE){d=!(h&a.eflags.EMPTY);return}f=b(e,f);if(f){h&a.eflags.EMPTY||c.push(e),g.push("<",e);for(var i=0,j=f.length;i<j;i+=2){var k=f[i],l=f[i+1];l!==null&&l!==void 0&&g.push(" ",k,'="',r(l),'"')}g.push(">")}}},endTag:function(b,e){if(d)d=!1;else{if(!a.ELEMENTS.hasOwnProperty(b))return;var f=a.ELEMENTS[b];if(!(f&(a.eflags.UNSAFE|a.eflags.EMPTY|a.eflags.FOLDABLE))){var g;if(f&a.eflags.OPTIONAL_ENDTAG)for(g=c.length;--g>=0;){var h=c[g];if(h===b)break;if(!(a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG))return}else for(g=c.length;--g>=0;)if(c[g]===b)break;if(g<0)return;for(var i=c.length;--i>g;){var h=c[i];a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG||e.push("</",h,">")}c.length=g,e.push("</",b,">")}}},pcdata:function(a,b){d||b.push(a)},rcdata:function(a,b){d||b.push(a)},cdata:function(a,b){d||b.push(a)},endDoc:function(a){for(var b=c.length;--b>=0;)a.push("</",c[b],">");c.length=0}})}function v(c){return function(d,e){d=String(d);var f=null,g=!1,h=[],j=void 0,l=void 0,m=void 0;c.startDoc&&c.startDoc(e);while(d){var n=d.match(g?t:u);d=d.substring(n[0].length);if(g){if(n[1]){var o=b(n[1]),p;if(n[2]){var q=n[3];switch(q.charCodeAt(0)){case 34:case 39:q=q.substring(1,q.length-1)}p=k(i(q))}else p=o;h.push(o,p)}else if(n[4]){l!==void 0&&(m?c.startTag&&c.startTag(j,h,e):c.endTag&&c.endTag(j,e));if(m&&l&(a.eflags.CDATA|a.eflags.RCDATA)){f===null?f=b(d):f=f.substring(f.length-d.length);var r=f.indexOf("</"+j);r<0&&(r=d.length),l&a.eflags.CDATA?c.cdata&&c.cdata(d.substring(0,r),e):c.rcdata&&c.rcdata(s(d.substring(0,r)),e),d=d.substring(r)}j=l=m=void 0,h.length=0,g=!1}}else if(n[1])c.pcdata&&c.pcdata(n[0],e);else if(n[3])m=!n[2],g=!0,j=b(n[3]),l=a.ELEMENTS.hasOwnProperty(j)?a.ELEMENTS[j]:void 0;else if(n[4])c.pcdata&&c.pcdata(n[4],e);else if(n[5]&&c.pcdata)switch(n[5]){case"<":c.pcdata("&lt;",e);break;case">":c.pcdata("&gt;",e);break;default:c.pcdata("&amp;",e)}}c.endDoc&&c.endDoc(e)}}function s(a){return a.replace(m,"&amp;$1").replace(n,"&lt;").replace(o,"&gt;")}function r(a){return a.replace(l,"&amp;").replace(n,"&lt;").replace(o,"&gt;").replace(p,"&#34;").replace(q,"&#61;")}function k(a){return a.replace(j,g)}function i(a){return a.replace(h,"")}function g(a,b){return f(b)}function f(a){a=b(a);if(c.hasOwnProperty(a))return c[a];var f=a.match(d);if(f)return String.fromCharCode(parseInt(f[1],10));if(!!(f=a.match(e)))return String.fromCharCode(parseInt(f[1],16));return""}var b;"script"==="SCRIPT".toLowerCase()?b=function(a){return a.toLowerCase()}:b=function(a){return a.replace(/[A-Z]/g,function(a){return String.fromCharCode(a.charCodeAt(0)|32)})};var c={lt:"<",gt:">",amp:"&",nbsp:"240",quot:'"',apos:"'"},d=/^#(\d+)$/,e=/^#x([0-9A-Fa-f]+)$/,h=/\0/g,j=/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g,l=/&/g,m=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,n=/</g,o=/>/g,p=/\"/g,q=/\=/g,t=new RegExp("^\\s*(?:(?:([a-z][a-z-]*)(\\s*=\\s*(\"[^\"]*\"|'[^']*'|(?=[a-z][a-z-]*\\s*=)|[^>\"'\\s]*))?)|(/?>)|[\\s\\S][^a-z\\s>]*)","i"),u=new RegExp("^(?:&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);|<!--[\\s\\S]*?-->|<!\\w[^>]*>|<\\?[^>*]*>|<(/)?([a-z][a-z0-9]*)|([^<&>]+)|([<&>]))","i");return{escapeAttrib:r,makeHtmlSanitizer:w,makeSaxParser:v,normalizeRCData:s,sanitize:x,unescapeEntities:k}}(html4),html_sanitize=html.sanitize
          +
          +// stop here if we're not in TiddlyWiki
          +// XXX: is this the correct way of checking for TiddlyWiki?
          +if (!window.TiddlyWiki || !window.store || !store instanceof TiddlyWiki) {
          +	return;
          +}
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +
          +var _subWikify = Wikifier.prototype.subWikify;
          +
          +var cleanedTitle = 'This section has been cleaned of any potentially harmful code';
          +
          +var replaceFunctions = {
          +	html: function(w) {
          +		var sanitizedHTML, spanEl;
          +		this.lookaheadRegExp.lastIndex = w.matchStart;
          +		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          +		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
          +			sanitizedHTML = $.sanitize(lookaheadMatch[1]);
          +			spanEl = createTiddlyElement(w.output, 'span', null, 'sanitized');
          +			spanEl.innerHTML = sanitizedHTML;
          +			spanEl.setAttribute('title', cleanedTitle);
          +			w.nextMatch = this.lookaheadRegExp.lastIndex;
          +		}
          +	},
          +	customFormat: function(w) {
          +		switch(w.matchText) {
          +			case '@@':
          +				var e = createTiddlyElement(w.output, 'span');
          +				var styles = config.formatterHelpers.inlineCssHelper(w);
          +				if (styles.length === 0) {
          +					e.className = 'marked';
          +				}
          +				w.subWikifyTerm(e, /(@@)/mg);
          +				break;
          +			case '{{':
          +				var lookaheadRegExp = /\{\{[\s]*([\w]+[\s\w]*)[\s]*\{(\n?)/mg;
          +				lookaheadRegExp.lastIndex = w.matchStart;
          +				var lookaheadMatch = lookaheadRegExp.exec(w.source);
          +				if(lookaheadMatch) {
          +					w.nextMatch = lookaheadRegExp.lastIndex;
          +					e = createTiddlyElement(w.output,lookaheadMatch[2] == "\n" ? "div" : "span",null,lookaheadMatch[1]);
          +					w.subWikifyTerm(e,/(\}\}\})/mg);
          +				}
          +				break;
          +		}
          +	}
          +};
          +
          +Wikifier.prototype.subWikify = function(output, terminator) {
          +	var tid = this.tiddler,
          +		spaceName = tiddlyspace.currentSpace.name,
          +		tidSpace, recipeName, stripped;
          +	try {
          +		recipeName = tid.fields['server.recipe'] ||
          +			tid.fields['server.workspace'];
          +		tidSpace = tiddlyspace.resolveSpaceName(recipeName);
          +		if (tidSpace !== spaceName) {
          +			// external tiddler, so replace dangerous formatters
          +			stripped = stripHTML(tid, this.formatter);
          +		}
          +	} catch(e) {
          +		// do nothing. There's no tiddler, so assume it's safe (?!?!?)
          +	}
          +
          +	_subWikify.apply(this, arguments);
          +
          +	if (stripped) {
          +		// change back to the original function
          +		unstripHTML(stripped, this.formatter);
          +	}
          +};
          +
          +// replace potentially unsafe formatters with versions that strip bad HTML/CSS
          +var stripHTML = function(tid, formatter) {
          +	var popped = {}, _handler;
          +	for (var i = 0; i < formatter.formatters.length; i++) {
          +		var f = formatter.formatters[i];
          +		if (replaceFunctions[f.name]) {
          +			_handler = f.handler;
          +			popped[f.name] = _handler;
          +			f.handler = replaceFunctions[f.name];
          +		}
          +	};
          +
          +	return popped;
          +};
          +
          +// put the original formatters back where they belong
          +var unstripHTML = function(stripped, formatter) {
          +	for (var i = 0; i < formatter.formatters.length; i++) {
          +		var f = formatter.formatters[i];
          +		if (stripped[f.name]) {
          +			f.handler = stripped[f.name];
          +		}
          +	};
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          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
          +
          +
          +
          <!--{{{-->
          +<link rel="shortcut icon" href="/recipes/interview_public/tiddlers/favicon.ico" />
          +<link href="/bags/interview_public/tiddlers.atom" rel="alternate"
          +	type="application/atom+xml" title="interview's public feed" />
          +<!--}}}-->
          +
          +
          +
          iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABGdBTUEAALGPC/xhBQAACkNpQ0NQSUNDIFByb2ZpbGUAAHgBnZZ3VFNZE8Dvey+90BJCkRJ6DU1KAJESepFeRSUkAUIJGBKwV0QFVxQVaYoiiyIuuLoUWSuiWFgUFLAvyCKgrIuriIplX/QcZf/Y/b6z88ec35s7c+/cmbnnPAAovoFCUSasAECGSCIO8/FgxsTGMfHdAAZEgAPWAHB52VlB4d4RABU/Lw4zG3WSsUygz/p1/xe4xfINYTI/m/5/pcjLEkvQnULQkLl8QTYP5TyU03MlWTL7JMr0xDQZwxgZi9EEUVaVcfIXNv/s84XdZMzPEPFRH1nOWfwMvow7UN6SIxWgjASinJ8jFOSifBtl/XRphhDlNyjTMwTcbAAwFJldIuCloGyFMkUcEcZBeR4ABEryLE6cxRLBMjRPADiZWcvFwuQUCdOYZ8K0dnRkM30FuekCiYQVwuWlccV8JiczI4srWg7AlzvLooCSrLZMtMj21o729iwbC7T8X+VfF796/TvIevvF42Xo555BjK5vtm+x32yZ1QCwp9Da7PhmSywDoGUTAKr3vtn0DwAgnwdA841Z92HI5iVFIslysrTMzc21EAp4FrKCfpX/6fDV859h1nkWsvO+1o7pKUjiStMlTFlReZnpmVIxMzuLyxMwWX8bYnTr/xw4K61ZeZiHCZIEYoEIPSoKnTKhKBltt4gvlAgzRUyh6J86/B/DZuUgwy9zjQKt5iOgL7EACjfoAPm9C2BoZIDE70dXoK99CyRGAdnLi9Ye/TL3KKPrn/XfFFyEfsLZwmSmzMwJi2DypOIcGaNvQqawgATkAR2oAS2gB4wBC9gAB+AM3IAX8AfBIALEgsWAB1JABhCDXLAKrAf5oBDsAHtAOagCNaAONIAToAWcBhfAZXAd3AR94D4YBCPgGZgEr8EMBEF4iArRIDVIGzKAzCAbiA3Nh7ygQCgMioUSoGRIBEmhVdBGqBAqhsqhg1Ad9CN0CroAXYV6oLvQEDQO/Qm9gxGYAtNhTdgQtoTZsDscAEfAi+BkeCm8As6Dt8OlcDV8DG6GL8DX4T54EH4GTyEAISMMRAdhIWyEgwQjcUgSIkbWIAVICVKNNCBtSCdyCxlEJpC3GByGhmFiWBhnjC8mEsPDLMWswWzDlGOOYJoxHZhbmCHMJOYjlorVwJphnbB+2BhsMjYXm48twdZim7CXsH3YEexrHA7HwBnhHHC+uFhcKm4lbhtuH64Rdx7XgxvGTeHxeDW8Gd4FH4zn4iX4fHwZ/hj+HL4XP4J/QyATtAk2BG9CHEFE2EAoIRwlnCX0EkYJM0QFogHRiRhM5BOXE4uINcQ24g3iCHGGpEgyIrmQIkippPWkUlID6RLpAeklmUzWJTuSQ8lC8jpyKfk4+Qp5iPyWokQxpXAo8RQpZTvlMOU85S7lJZVKNaS6UeOoEup2ah31IvUR9Y0cTc5Czk+OL7dWrkKuWa5X7rk8Ud5A3l1+sfwK+RL5k/I35CcUiAqGChwFrsIahQqFUwoDClOKNEVrxWDFDMVtikcVryqOKeGVDJW8lPhKeUqHlC4qDdMQmh6NQ+PRNtJqaJdoI3Qc3YjuR0+lF9J/oHfTJ5WVlG2Vo5SXKVcon1EeZCAMQ4YfI51RxDjB6Ge8U9FUcVcRqGxVaVDpVZlWnaPqpipQLVBtVO1TfafGVPNSS1Pbqdai9lAdo26qHqqeq75f/ZL6xBz6HOc5vDkFc07MuacBa5hqhGms1Dik0aUxpaml6aOZpVmmeVFzQouh5aaVqrVb66zWuDZNe762UHu39jntp0xlpjsznVnK7GBO6mjo+OpIdQ7qdOvM6BrpRupu0G3UfahH0mPrJent1mvXm9TX1g/SX6Vfr3/PgGjANkgx2GvQaTBtaGQYbbjZsMVwzEjVyM9ohVG90QNjqrGr8VLjauPbJjgTtkmayT6Tm6awqZ1pimmF6Q0z2MzeTGi2z6zHHGvuaC4yrzYfYFFY7qwcVj1ryIJhEWixwaLF4rmlvmWc5U7LTsuPVnZW6VY1Vvetlaz9rTdYt1n/aWNqw7OpsLk9lzrXe+7aua1zX9ia2Qps99vesaPZBdlttmu3+2DvYC+2b7Afd9B3SHCodBhg09kh7G3sK45YRw/HtY6nHd862TtJnE44/eHMck5zPuo8Ns9onmBezbxhF10XrstBl8H5zPkJ8w/MH3TVceW6Vrs+dtNz47vVuo26m7inuh9zf+5h5SH2aPKY5jhxVnPOeyKePp4Fnt1eSl6RXuVej7x1vZO9670nfex8Vvqc98X6Bvju9B3w0/Tj+dX5Tfo7+K/27wigBIQHlAc8DjQNFAe2BcFB/kG7gh4sMFggWtASDIL9gncFPwwxClka8nMoLjQktCL0SZh12KqwznBa+JLwo+GvIzwiiiLuRxpHSiPbo+Sj4qPqoqajPaOLowdjLGNWx1yPVY8VxrbG4eOi4mrjphZ6LdyzcCTeLj4/vn+R0aJli64uVl+cvvjMEvkl3CUnE7AJ0QlHE95zg7nV3KlEv8TKxEkeh7eX94zvxt/NHxe4CIoFo0kuScVJY8kuybuSx1NcU0pSJoQcYbnwRapvalXqdFpw2uG0T+nR6Y0ZhIyEjFMiJVGaqCNTK3NZZk+WWVZ+1uBSp6V7lk6KA8S12VD2ouxWCR39meqSGks3SYdy5udU5LzJjco9uUxxmWhZ13LT5VuXj67wXvH9SsxK3sr2VTqr1q8aWu2++uAaaE3imva1emvz1o6s81l3ZD1pfdr6XzZYbSje8Gpj9Ma2PM28dXnDm3w21efL5YvzBzY7b67agtki3NK9de7Wsq0fC/gF1wqtCksK32/jbbv2nfV3pd992p60vbvIvmj/DtwO0Y7+na47jxQrFq8oHt4VtKt5N3N3we5Xe5bsuVpiW1K1l7RXunewNLC0tUy/bEfZ+/KU8r4Kj4rGSo3KrZXT+/j7eve77W+o0qwqrHp3QHjgzkGfg83VhtUlh3CHcg49qYmq6fye/X1drXptYe2Hw6LDg0fCjnTUOdTVHdU4WlQP10vrx4/FH7v5g+cPrQ2shoONjMbC4+C49PjTHxN+7D8RcKL9JPtkw08GP1U20ZoKmqHm5c2TLSktg62xrT2n/E+1tzm3Nf1s8fPh0zqnK84onyk6Szqbd/bTuRXnps5nnZ+4kHxhuH1J+/2LMRdvd4R2dF8KuHTlsvfli53uneeuuFw5fdXp6qlr7Gst1+2vN3fZdTX9YvdLU7d9d/MNhxutNx1vtvXM6znb69p74Zbnrcu3/W5f71vQ19Mf2X9nIH5g8A7/ztjd9Lsv7uXcm7m/7gH2QcFDhYcljzQeVf9q8mvjoP3gmSHPoa7H4Y/vD/OGn/2W/dv7kbwn1Cclo9qjdWM2Y6fHvcdvPl34dORZ1rOZifzfFX+vfG78/Kc/3P7omoyZHHkhfvHpz20v1V4efmX7qn0qZOrR64zXM9MFb9TeHHnLftv5Lvrd6Ezue/z70g8mH9o+Bnx88Cnj06e/AAOb8/zszueKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIeUlEQVRYCe1Zb2xb1RU/9/k9O26TJqVpSByn+UNC3JZuQMukaWirBR9BGtJAIAqlEkgg+ABCsLVFWhAU0DRp8IlNYkIskSYhPvKBDxRvKIwVSin9Q9MmTRziJG7aQtrYcWw/v7tzrn1v3nOe/eIC+cKOZN97zz3n3J/vO+/cc48B/k9rswPs+y5z8B+xXZxZd6GdfuDsZmDQhf06m91L2E9wYMMA1iQ3tfde2xeN2+Zr7l4T6IG3Y01Z3XqUAduLK0bwo9e48jD+wL/7O2BoIBo1a9TFfamBBt6N1edz8HvO+dOoVu9QZYw3bWiAYF2A+f0B0A0f5HJ5sKwCLKQWIZ1ehEKh4FQBSALnLxod2lu1gF816BcGY7stxt8GLh6/WFzXdau1pVlrb2uFhoZ68Pl8DlD2Af5QmJ+/ComZGZi9cBGxcjWNID7IM/bYn/ZEE4pZpbMq0PuHDv+BcfYS2hFuQGB7ezq1jvYQaJpWxbz7VDabg6npGRiPf6PAI5Aks9hDL++Nfuiutcz1BH1gKPYmWn5cqoTbQ1akr0ertqtS1qtdSKXg5Omz6D4pJcoZu/fVPdH3FMOlUxW0HTDTNL5jW4S1Xb/Zxcy1s8hNRs9PwMTklDRiIvB7EPj7klHeVgR9YPDwAAD7IymQO+z8+U1aU1Njuf4PNp6cSsDIufPSXgqjyy9feTh6SjLsrSvoYuzln6Kg7tN81q5bdvyogCWgsfE4nJ+YLA45jPjr2G0D90WXfackuOItorDGgQ8SYJLZvq1/TQDTWr09XaDcj0Ekm4VXiV9OK0Bnc9ZTGL3pwICOcGjZSLnmjzTe2t8HgYBfWGfAn6KnXr6U4ySjXc5l+ZMk5DN03t/b4+o+5UbEuGCBPpkEfWoOtMtXgeHBAj4NrOs2gBneDGZPCLjhWM7VjGEYELmxD746ebo0b9F7dbdd2AHq4NDhpzlnfyGBvt5u6OncYpet2DfOTELgszNFoBWkuN+A7G0RyG/rqiDhZB/54jgeRleIidvBIq89FB2TEg73QMAP0gQGYd4ZbpcylVuLQ/DwF1A3fMIBWNN9YAT9QK0k2vm6T06i/FEBQ/IrtX3dXXLKpzF4Vg6oVTv9/FAsrHM+gTw9HGqF7Vv77XKufQKsj8+IOcYYNIY2QRO6grG+DmhMlF/Mwvz0JZhHt5FHt9nTBpnoTtwdtbyQLf/65MhRSKXSxL7sD7AuGUnUThvc+i1OCqcLtbaW668Yk0vYAYdv6YWWyBbw1wcVYFIy1gVgc187hHfeCKyUm+jjs2CMTK6wWc5obVEH2SY8+XfLeQXa4toNxKTjubGxQc67t+hl5MNEtKPhW/sguLG6TrBxPdAP00q7G/h8xOFSbguFWq9XbI3Db+RAgcbM8nZirgsGPZMgfWJGLdjY3gzBJmeWKo2XtwS8Mdwi2OTj+sRsuYhjHAzW0WkseBZwFfoUaJzpotmG+nXUVCUdfVRSE4KuhezyeuKip2pDw3ohg94flsJ20GL1QCAg5yq2FIeJRJTAl64WIh+XUUX7tminmv463O0SdciOHbTgaXggeJE4OFDIh7cTGSW8dOzzpCcI3w0v8hvF0xHl1G6uQGitwhAdFESFfEGFMcFY5RfpCVrFBrltoh30EhnKYpbiRdamDULEMguQTws1LxU1T3Gb9IjoiPcit01cBs0hTgbSGW8Qpu3lo4OjFrLLU07iRTm8SZdoXnYUaAy3cWIuLKTwBl3d18xuTH5KLnIFQWfmU9Je1TZzJQ1XEnNChvTN7raq8jRJN/kSxWVHgcY3CpMCfGQIOL2oBKWcs0VfzP5iq+DR0Zw4NuoJnAAnvhxD+1zoUfIkf7jT+PKIbFPpgahY7CnOKdCsAP8usgAuzHk/8vzWTpFuCoMl4HNnpyCXdr4T+UwOLo5Ow/Sxc8BLdQ/KPfKRTrlcxfbq1QVbrcRS575KcHULhvMaJHEfWmeTc+IWUdFaaSITvRWCuAeUS9CuzONhQR+KwxTWKErIl07aIsBLv77ZM1ki+SmskUjCi7UqLaidHtgXXeKMf0BCi5kMXLr8nZSv3GIekbljFyz9aofjUYuogjtsB0yuQHKU3a3mMmCaJj7xy3Lt4688GD0uB2qnBYNpb+CWPUL9sYk4NG/aKNheX5TY5/u3YC4xA8bURWDfLRRzE3lzCTWDecPyy+tlj+anZ5NAwIkwL3pHdEpfeKQ7af/gRzFk7ibuz27atuZ3RFqXwH78n88gn8crG8C832Td6AkrQx7NEmmcPYeN+Ilnzo7iYaPipJhfi6/R83EJGLAc91c7YFpf+bQEc+jh6FEs4b5OY/qlI+dG5dSatHOXvhV1vtJiY0YdHCpfeAVoEjDCsB+bU9RPYvijIspaENX0Tpz6WuUzuMv75BXLvr4raFEr5uwBFBQBm6o+tlqbXf8H69PN+/NjJ1RcxuzxZXzqw24LuIImQaqjaZYALs7oc2PjQB95OXUzdq08qlcfPX5S+TGef0NGO7xYyd6K6FEuuH8o9jvG+T+RL8JjQ3097Njejzec+nLRmsf0z8DpM2dFkX1Zmb/lD2tPVPtnwBM0GXvhndidlob/ApSuPJT4d20JAxXV6R5XK9HTmp69gO/KhCM6YTx+5tCeO0QQqGZzVaDJANVFDMt6E2vHdymDuEpbSzMLtbXBdRsbPS/EVMNIzCTx5Z5zghX/vbB7K/mwWq/UWTVoqXhgMPYoBs+D9v9eaI6qUuuDQUYXY7pn0o2DEnjKh9OLS0DJj0vKa2KE+DOFNbcoIdcsb2sGTQYGYjE9Nw33Y0l4L+NwZ7lRrzEumsTDeQjvL3+z1+i89OT8NYGWytQKt8HqFBV70FtuR1YXfsTNHluiJXwqcbpk4I88ooH2L92E/1KCVpz+iXz/D36BLy8VVzwEAAAAAElFTkSuQmCC
          +
          +
          +
          /***
          +|''Name''|BinaryTiddlersPlugin|
          +|''Description''|renders base64-encoded binary tiddlers as images or links|
          +|''Author''|FND|
          +|''Version''|0.3.2|
          +|''Status''|@@beta@@|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/BinaryTiddlersPlugin.js|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.5|
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +"use strict";
          +
          +var ctfield = "server.content-type";
          +
          +var plugin = config.extensions.BinaryTiddlersPlugin = {
          +	isWikiText: function(tiddler) {
          +		var ctype = tiddler.fields[ctfield];
          +		if(ctype) {
          +			if (ctype === 'text/x-tiddlywiki') {
          +				return true;
          +			}
          +			return !this.isBinary(tiddler) && !this.isTextual(ctype);
          +		} else {
          +			return true;
          +		}
          +	},
          +	// NB: pseudo-binaries are considered non-binary here
          +	isBinary: function(tiddler) {
          +		var ctype = tiddler.fields[ctfield];
          +		return ctype ? !this.isTextual(ctype) : false;
          +	},
          +	isTextual: function(ctype) {
          +		return ctype.indexOf("text/") === 0
          +			|| this.endsWith(ctype, "+xml")
          +			|| ctype === 'application/json'
          +			|| ctype === 'application/javascript';
          +	},
          +	endsWith: function(str, suffix) {
          +		return str.length >= suffix.length &&
          +			str.substr(str.length - suffix.length) === suffix;
          +	},
          +	isLink: function(tiddler) {
          +		return this.isBinary(tiddler) && tiddler.text.indexOf("<html>") !== -1;
          +	}
          +};
          +
          +// Disable edit for linked tiddlers (for now)
          +// This will be changed to a GET then PUT
          +config.commands.editTiddler.isEnabled = function(tiddler) {
          +    var existingTest = config.commands.editTiddler.isEnabled;
          +    if (existingTest) {
          +        return existingTest && !plugin.isLink(tiddler);
          +    } else {
          +        return !plugin.isLink(tiddler);
          +    }
          +};
          +
          +// hijack text viewer to add special handling for binary tiddlers
          +var _view = config.macros.view.views.wikified;
          +config.macros.view.views.wikified = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +	var ctype = tiddler.fields["server.content-type"];
          +	if(params[0] === "text" && ctype && ctype !== 'text/x-tiddlywiki' &&
          +			!tiddler.tags.contains("systemConfig") && !plugin.isLink(tiddler)) {
          +		var el;
          +		if(plugin.isBinary(tiddler)) {
          +			var uri = "data:%0;base64,%1".format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
          +			if(ctype.indexOf("image/") === 0) {
          +				el = $("<img />").attr("alt", tiddler.title).attr("src", uri);
          +			} else {
          +				el = $("<a />").attr("href", uri).text(tiddler.title);
          +			}
          +		} else {
          +			el = $("<pre />").text(tiddler.text);
          +		}
          +		el.appendTo(place);
          +	} else {
          +		_view.apply(this, arguments);
          +	}
          +};
          +
          +// hijack edit macro to disable editing of binary tiddlers' body
          +var _editHandler = config.macros.edit.handler;
          +config.macros.edit.handler = function(place, macroName, params, wikifier,
          +		paramString, tiddler) {
          +	if(params[0] === "text" && plugin.isBinary(tiddler)) {
          +		return false;
          +	} else {
          +		_editHandler.apply(this, arguments);
          +	}
          +};
          +
          +// hijack autoLinkWikiWords to ignore binary tiddlers
          +var _autoLink = Tiddler.prototype.autoLinkWikiWords;
          +Tiddler.prototype.autoLinkWikiWords = function() {
          +	return plugin.isWikiText(this) ? _autoLink.apply(this, arguments) : false;
          +};
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          /***
          +|''Name''|ImageMacroPlugin|
          +|''Version''|0.9.4|
          +|''Description''|Allows the rendering of svg images in a TiddlyWiki|
          +|''Author''|Osmosoft|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''Notes''|Currently only works in modern browsers (not IE)|
          +|''Requires''|BinaryTiddlersPlugin|
          +!Usage
          +{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
          +!!Parameters
          +width/height: specify width/height parameters
          +link: make the image link to a given location
          +tiddlyLink: link to a tiddler
          +
          +!Notes
          +Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
          +eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
          +{{{<<view fieldname image>>}}}
          +will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
          +{{{<<image SiteIcon>>}}}
          +will create an image tag where the tiddler has content type beginning image and not ending +xml
          +will attempt to create svg object in other scenarios
          +{{{<<image /photos/x.jpg>>}}}
          +will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in 
          +which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
          +tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var macro = config.macros.image = {
          +	shim: "/bags/common/tiddlers/shim",
          +	ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
          +	svgns: "http://www.w3.org/2000/svg",
          +	xlinkns: "http://www.w3.org/1999/xlink", 
          +	svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
          +	_fixPrefix: 1,
          +	_external_cache: {},
          +	_image_tag_cache: {},
          +	_image_dimensions: {},
          +	locale: {
          +		badImage: "This image cannot be displayed."
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler){
          +		var imageSource = params[0];
          +		// collect named arguments
          +		var args = macro.getArguments(paramString, params);
          +		this.renderImage(place, imageSource, args);
          +	},
          +	init: function() {
          +		var startupImages = store.getTaggedTiddlers("systemImage");
          +		var place = $("<div />").attr("id", "systemImageArea").appendTo("body").hide()[0];
          +		for(var i = 0; i < startupImages.length; i++) {
          +			var image = startupImages[i];
          +			macro.renderImage(place, image.title, { idPrefix: "" });
          +		}
          +		var data = new Image();
          +		data.onload = function() {
          +			// note ie 8 only supports data uris up to 32k so cannot be relied on
          +			macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
          +			macro.supportsDataUris = macro.ieVersion && macro.ieVersion < 9 ? false : macro.supportsDataUris;
          +		};
          +		data.onerror = data.onload;
          +		data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
          +	},
          +	refreshImage: function(src) {
          +		var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
          +		if(macro._image_dimensions[src]) {
          +			macro._image_dimensions[src] = false;
          +		}
          +		for(var i = 0; i < elements.length; i++) {
          +			var el = $(elements[i]);
          +			var newSrc = "%0?nocache=%1".format(src, Math.random());
          +			el.attr("src", newSrc); // force reload
          +		}
          +	},
          +	isBinaryImageType: function(contentType) {
          +		return (contentType && contentType.indexOf("image") === 0 &&
          +			contentType.indexOf("+xml") != contentType.length - 4) ? true : false;
          +	},
          +	isImageTiddler: function(tiddler) {
          +		return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
          +	},
          +	isSVGTiddler: function(tiddler) {
          +		var type = tiddler ? tiddler.fields['server.content-type'] : false;
          +		return type == "image/svg+xml";
          +	},
          +	isBinaryImageTiddler: function(tiddler) {
          +		return macro.isBinaryImageType(tiddler.fields['server.content-type']);
          +	},
          +	renderImage: function(place, imageSource, options) {
          +		var imageTiddler = store.getTiddler(imageSource);
          +		var container;
          +		var classes = ["image"];
          +		if(options.link) {
          +			classes = classes.concat(["imageLink", "externalLink"]);
          +			container = $("<a />").attr("href", options.link).appendTo(place)[0];
          +		} else if(options.tiddlyLink) {
          +			classes.push("imageLink");
          +			container = createTiddlyLink(place, options.tiddlyLink, false);
          +		} else {
          +			container = $("<span />").appendTo(place)[0];
          +		}
          +		$(container).addClass(classes.join(" "));
          +
          +		options = options ? options : {};
          +		if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
          +			return macro._renderBinaryImageTiddler(container, imageTiddler, options);
          +		} else if(imageTiddler){ // handle the case where we have a tiddler
          +			return macro._renderSVGTiddler(container, imageTiddler, options);
          +		} else { // we have a string representing a url
          +			return macro._renderBinaryImageUrl(container, imageSource, options);
          +		}
          +	},
          +	_renderAlternateText: function(container, options) {
          +		var img;
          +		var src = options.src || "";
          +		if(options.width && options.height) {
          +			img = $("<img />").attr("src", src).addClass("svgImageText").attr("width", options.width).
          +				attr("height", options.height).appendTo(container);
          +		}
          +		var alt = options.alt;
          +		if(img && alt) {
          +			img.attr("alt", alt).attr("title", alt);
          +		} else if(alt) {
          +			$(container).addClass("svgImageText").text(alt);
          +		}
          +		macro._image_tag_cache[src] = img;
          +	},
          +	_renderSVGTiddler: function(place, tiddler, options) {
          +		if(!options) {
          +			options = {};
          +		}
          +		merge(options, { tiddler: tiddler, fix: true});
          +
          +		if(macro.svgAvailable) {
          +			this._importSVG(place, options); // display the svg
          +		} else if(options.altImage) {
          +			var image = options.altImage;
          +			delete options.altImage;
          +			this._renderBinaryImageUrl(place, image, options);
          +		} else {
          +			this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
          +		}
          +	},
          +	_renderBinaryImageTiddler: function(place, tiddler, options) {
          +		var resourceURI;
          +		var fields = tiddler.fields;
          +		if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource
          +			resourceURI = "%0/%1/tiddlers/%2".format(config.defaultCustomFields["server.host"],
          +				fields["server.workspace"], encodeURI(fields["server.title"]));
          +		} else { // guess the url for the resource
          +			resourceURI = tiddler.title;
          +		}
          +		var ctype = fields["server.content-type"] || tiddler.type;
          +		var text = tiddler.text;
          +		if(macro.supportsDataUris && ctype && text.indexOf("<html") == -1) {
          +			var uri = "data:%0;base64,%1".format(ctype, text);
          +			options.src = resourceURI;
          +			return macro._renderBinaryImageUrl(place, uri, options);
          +		} else if(options.src) {
          +			return macro._renderBinaryImageUrl(place, options.src, options);
          +		} else {
          +			return macro._renderBinaryImageUrl(place, resourceURI, options);
          +		}
          +	},
          +	_renderImageTag: function(container, src, width, height, options) {
          +		var img;
          +		img = $("<img />").appendTo(container);
          +		if(height) {
          +			img.attr("height", height);
          +		}
          +		if(width) {
          +			img.attr("width", width);
          +		}
          +		if(macro.ieVersion && macro.ieVersion < 7 && macro.shim && options.ie6png) {
          +			$(img).css({width: userW, height: userH,
          +					filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')".format(src)
          +				}).attr("src", macro.shim);
          +		} else {
          +			img.attr("src", src);
          +		}
          +		if(!macro._image_tag_cache[options.srcUrl]) {
          +			macro._image_tag_cache[options.srcUrl] = [];
          +		}
          +		img = $(img).addClass(options.imageClass)[0];
          +		macro._image_tag_cache[options.srcUrl].push(img);
          +		return img;
          +	},
          +	_getDimensions: function(realDimensions, reqDimensions, preserve) {
          +		var w = realDimensions.width;
          +		var h = realDimensions.height;
          +		var reqh = reqDimensions.height;
          +		var reqw = reqDimensions.width;
          +		var finalw = w, finalh = h;
          +		var ratiow = reqw / w, ratioh = reqh / h;
          +		var scaledw = ratioh * w;
          +		var scaledh = ratiow * h;
          +		if(!reqw && reqh) {
          +			finalw = scaledw;
          +			finalh = reqh;
          +		} else if(reqw && !reqh) {
          +			finalw = reqw;
          +			finalh = scaledh;
          +		} else if(reqh && reqw) {
          +			var preserveWidth = w > h ? true : false;
          +			if(preserve) {
          +				if(preserveWidth && scaledh < reqh) {
          +					finalh = scaledh;
          +					finalw = reqw;
          +				} else {
          +					finalh = reqh;
          +					finalw = scaledw;
          +				}
          +			} else {
          +				finalw = reqw;
          +				finalh = reqh;
          +			}
          +		}
          +		return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
          +	},
          +	_renderBinaryImageUrl: function(container, src, options) {
          +		var srcUrl = options.src ? options.src : src;
          +		srcUrl = srcUrl.indexOf("/") === -1 ? "/%0".format(srcUrl) : srcUrl; // for IE. 
          +		var image_dimensions = macro._image_dimensions[srcUrl];
          +		var image = new Image(); // due to weird scaling issues where you use just a width or just a height
          +		var createImageTag = function(dimensions, error) {
          +			if(error) {
          +				var altImage = options.altImage;
          +				if(altImage) {
          +					delete options.altImage;
          +					macro._renderBinaryImageUrl(container, altImage, options);
          +				} else {
          +					options.src = src;
          +					macro._renderAlternateText(container, options);
          +				}
          +			} else {
          +				var dim = macro._getDimensions(dimensions, { 
          +					width: options.width, height: options.height }, options.preserveAspectRatio);
          +				options.srcUrl = srcUrl;
          +				macro._renderImageTag(container, src, dim.width, dim.height, options);
          +			}
          +		};
          +
          +		if(!image_dimensions) {
          +			image.onload = function() {
          +				var dimensions = { width: image.width, height: image.height};
          +				macro._image_dimensions[srcUrl] = dimensions;
          +				createImageTag(dimensions);
          +			};
          +			image.onerror = function() {
          +				createImageTag(null, true);
          +			};
          +			image.src = src;
          +		} else {
          +			createImageTag(image_dimensions);
          +		}
          +	},
          +	_generateIdPrefix: function(){
          +		return "twsvgfix_" + (this._fixPrefix++).toString() + "_";
          +	},
          +	_fixSVG: function(childNodes, idPrefix) {
          +		var urlPattern = /url\(\#([^\)]*)\)*/ig;
          +		var fixes = [
          +		{ attr: "id", pattern: /^(.*)$/ig },
          +		{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
          +		];
          +		var url_fixes = ["filter", "fill", "mask", "stroke", "style"];
          +		for(var i = 0; i < url_fixes.length; i++) {
          +			fixes.push({ attr: url_fixes[i], pattern: urlPattern });
          +		}
          +		for(var t = 0; t < childNodes.length; t++) {
          +			var node = childNodes[t];
          +			for(var a = 0; a < fixes.length; a++) {
          +				var fix = fixes[a];
          +				var attr = fix.attr;
          +				var ns = fix.namespace || "";
          +				if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
          +					var v = node.getAttributeNS(ns, attr);
          +					fix.pattern.lastIndex = 0;
          +					var match = fix.pattern.exec(v);
          +					if(match) {
          +						// Make sure replacement string doesn't contain any single dollar signs
          +						var toReplace = match[1];
          +						if(toReplace.indexOf(idPrefix) !== 0 && toReplace.indexOf("twglobal_") !== 0) {
          +							var replacement = (idPrefix + toReplace).replace("$", "$$$$"); 
          +							v = v.replace(match[1], replacement);
          +						}
          +						node.setAttributeNS(ns, attr,v);
          +					}
          +				}
          +			}
          +			var children = node.childNodes;
          +			if(children.length > 0) {
          +				this._fixSVG(children, idPrefix);
          +			}
          +		}
          +	},
          +	_importSVG: function(place, options){
          +		options = options ? options : {};
          +		var svgDoc, tiddlerText = options.tiddler.text;
          +		if (window.DOMParser) {
          +			svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
          +			var idPrefix = options.idPrefix || this._generateIdPrefix();
          +			this._fixSVG([svgDoc], idPrefix);
          +			var el = document.importNode(svgDoc, true);
          +			var svgHolder = document.createElementNS(macro.svgns,"svg");
          +			var width = options.width;
          +			var height = options.height;
          +			if(width || height) {
          +				if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
          +					var viewBox = el.getAttribute("viewBox");
          +					var topLeft = "0 0";
          +					if(viewBox) {
          +						topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
          +					}
          +					svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format(width, height));
          +				} else {
          +					if(!width) {
          +						width = el.getAttribute("width");
          +					}
          +					if(!height) {
          +						height = el.getAttribute("height");
          +					}
          +				}
          +				svgHolder.setAttribute("width", width);
          +				svgHolder.setAttribute("height", height);
          +
          +				el.setAttribute("width", "100%");
          +				el.setAttribute("height", "100%");
          +				svgHolder.setAttribute("class", "svgImage svgIcon %0".format(options.imageClass || ""));
          +				svgHolder.appendChild(el);
          +				place.appendChild(svgHolder);
          +			}
          +			else {
          +				var existing = el.className ? el.className.baseVal : "";
          +				el.setAttribute("class","svgImage %0".format(existing));
          +				place.appendChild(el);
          +			}
          +			// if a tiddler attribute is set this is read as a link
          +			$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
          +				var tiddler = $(ev.target).attr("tiddlyLink");
          +				if(tiddler) {
          +					story.displayTiddler(ev.target, tiddler);
          +				}
          +			});
          +		}
          +	},
          +	getArguments: function(paramString, params) {
          +		var args = paramString.parseParams("name", null, true, false, true)[0];
          +		var options = {};
          +		for(var id in args) {
          +			if(true) {
          +				var p = args[id];
          +				if(id == "def") {
          +					options[id] = p;
          +				} else {
          +					options[id] = p[0];
          +				}
          +			}
          +		}
          +		var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
          +		var height = isNaN(params[2]) ? false : parseInt(params[2], 10);
          +
          +		options.width = macro.lookupArgument(options, "width", width);
          +		options.height = macro.lookupArgument(options, "height", height);
          +		options.preserveAspectRatio = args.preserveAspectRatio && 
          +			args.preserveAspectRatio[0] == "yes" ? true : false;
          +		options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
          +		options.link = macro.lookupArgument(options, "link", false);
          +		return options;
          +	},
          +	lookupArgument: function(args, id, ifEmpty) {
          +		return args[id] ? args[id] : ifEmpty;
          +	}
          +};
          +
          +// update views
          +var _oldwikifiedview = config.macros.view.views.wikified;
          +// update wikifier to check tiddler type before rendering
          +merge(config.macros.view.views, {
          +	wikified: function(value, place, params, wikifier, paramString, tiddler) {
          +		if(macro.isImageTiddler(tiddler) && params[0] == "text") {
          +			var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
          +			macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
          +		} else {
          +			_oldwikifiedview.apply(this, arguments);
          +		}
          +	},
          +	image: function(value, place, params, wikifier, paramString, tiddler) {
          +		// a field can point to another tiddler whereas text is the current tiddler.
          +		var title = params[0] == "text" ? tiddler.title : value;
          +		var args = macro.getArguments(paramString, params);
          +		macro.renderImage(place, title, args);
          +	}
          +});
          +config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
          +	".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
          +	"span.svgImageText { display: inline-block; overflow: hidden; }"
          +].join("");
          +store.addNotification("StyleSheetImageMacro", refreshStyles);
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /*{{{*/
          +Background: #e1e5f4
          +Foreground: #0a0f1d
          +PrimaryPale: #7d8fcf
          +PrimaryLight: #445db9
          +PrimaryMid: #2e407f
          +PrimaryDark: #04050b
          +SecondaryPale: #aecf7d
          +SecondaryLight: #8ab944
          +SecondaryMid: #5f7f2e
          +SecondaryDark: #080b04
          +TertiaryPale: #cf8a7d
          +TertiaryLight: #b95744
          +TertiaryMid: #7f3c2e
          +TertiaryDark: #0b0504
          +Error: #f88
          +ColorPaletteParameters: HSL([227|37], [0.46274978783912957],[0.03051278553903103|0.652059527579695])
          +/*}}}*/
          +
          +
          +
          Unless you're delighted with the default theme you can make some quick changes by generating a new random color palette, hit this button to cycle through some alternatives.
          +
          +<<RandomColorPaletteButton saturation_pale:0.67 saturation_light:0.53
          +saturation_mid:0.43 saturation_dark:0.06 pale:0.99 light:0.85 mid:0.5 dark:0.31>>
          +
          +You can also change the look and feel completely by installing a new theme. To do this, find one you like in the @themes space, note down the name, and include it in this space by going to the space menu. You can reach the space menu by clicking on the blue and pink circle at the top-right of the page and chooshing "THIS SPACE". Here are a few to check out:
          +* @pip
          +* @caspian-ii
          +* @basalt
          +* @simplicity
          +* @cheesecake
          +* @jelly-doughnut
          +
          +(//Note that if you are using a custom TiddlySpace install, these themes may not be present.//)
          +
          +
          +
          <?xml version="1.0" encoding="UTF-8" standalone="no"?>
          +<!-- Created with Inkscape (http://www.inkscape.org/) -->
          +
          +<svg
          +   xmlns:dc="http://purl.org/dc/elements/1.1/"
          +   xmlns:cc="http://creativecommons.org/ns#"
          +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          +   xmlns:svg="http://www.w3.org/2000/svg"
          +   xmlns="http://www.w3.org/2000/svg"
          +   xmlns:xlink="http://www.w3.org/1999/xlink"
          +   version="1.1"
          +   width="14pt"
          +   height="14pt"
          +   viewBox="918 510 14 14"
          +   id="svg3070">
          +  <metadata
          +     id="metadata3089">
          +    <rdf:RDF>
          +      <cc:Work
          +         rdf:about="">
          +        <dc:format>image/svg+xml</dc:format>
          +        <dc:type
          +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
          +        <dc:title></dc:title>
          +      </cc:Work>
          +    </rdf:RDF>
          +  </metadata>
          +  <defs
          +     id="defs3072">
          +    <radialGradient
          +       cx="0"
          +       cy="0"
          +       r="1"
          +       id="Gradient"
          +       gradientUnits="userSpaceOnUse">
          +      <stop
          +         id="stop3075"
          +         style="stop-color:#ffffff;stop-opacity:1"
          +         offset="0" />
          +      <stop
          +         id="stop3077"
          +         style="stop-color:#2b2b2b;stop-opacity:1"
          +         offset="1" />
          +    </radialGradient>
          +    <radialGradient
          +       id="Obj_Gradient"
          +       xlink:href="#Gradient"
          +       gradientTransform="matrix(11.473944,0,0,11.473944,922.3752,513.7837)" />
          +  </defs>
          +  <g
          +     id="g3080"
          +     style="fill:none;stroke:none">
          +    <g
          +       id="g3082">
          +      <path
          +         d="m 929.6952,512.9018 c -2.5384,-2.53843 -6.654,-2.53843 -9.1924,0 -2.5384,2.5384 -2.5384,6.654 0,9.19238 2.5384,2.53839 6.654,2.53839 9.1924,0 2.5384,-2.53838 2.5384,-6.65398 0,-9.19238 m -4.5962,2.8407 2.07733,-2.07734 1.75547,1.75549 -2.0773,2.07735 2.0773,2.07732 -1.75547,1.75548 -2.07733,-2.07732 -2.07733,2.07732 -1.75547,-1.75548 2.0773,-2.07732 -2.0773,-2.07735 1.75547,-1.75549 z"
          +         id="path3084"
          +         style="fill:url(#Obj_Gradient)" />
          +      <path
          +         d="m 927.61447,515.38354 a 4.51205,4.2590378 0 1 1 -9.0241,0 4.51205,4.2590378 0 1 1 9.0241,0 z"
          +         transform="matrix(1.0218069,0,0,1.0462046,-18.063694,-21.648443)"
          +         id="path2394"
          +         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
          +    </g>
          +  </g>
          +</svg>
          +
          +
          +
          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
          +
          +
          +
          <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="100%" width="100%" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs><linearGradient id="lG3826" x1="7.0996" gradientUnits="userSpaceOnUse" y1="18.829" gradientTransform="matrix(1.5858347,0,0,1.8078238,1098.1851,351.13716)" x2="1.5461" y2="-0.95166"><stop stop-color="#000" offset="0"/><stop stop-color="#9c9b99" offset="1"/></linearGradient><linearGradient id="lG3828" y2="372.44" gradientUnits="userSpaceOnUse" y1="375.7" x2="1111.7" x1="1097.7"><stop style="stop-color:#ac9393;" offset="0"/><stop style="stop-color:#c8b7b7;" offset="1"/></linearGradient></defs><g transform="translate(-1080.9375,-357.3329)"><path style="stroke-width:0;stroke-miterlimit:4;fill:url(#lG3826);" d="m1080.9,357.32,39.996-0.0426-0.01,40.008c-15.507-25.519-15.36-25.95-39.988-39.965z"/><path style="stroke-dashoffset:0;stroke:#7aa3be;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.49999988;fill:#c1e6fd;" d="m1091.9,363.55c6.5716-6.4925,16.576-7.3925,23.147-0.90003,6.5717,6.4925,6.5717,17.019,0,23.511-4.4424-8.6113-12.288-15.713-23.147-22.611z"/><path style="stroke-dashoffset:0;stroke:#ce81b0;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.5;fill:#f4c4e2;" d="m1110.2,367.62c3.217,3.2168,3.217,8.4323,0,11.649-3.8194-4.2357-8.3307-8.1824-11.649-11.649,3.217-3.2168,8.4325-3.2168,11.649-0.00002z"/><path style="stroke-linejoin:bevel;stroke:#000000;stroke-linecap:round;stroke-dasharray:none;stroke-miterlimit:4;stroke-width:0.80000001;fill:url(#lG3828);" d="m1081,357.34c18.79,6.4752,32.53,16.56,39.894,39.892-11.19-17.028-14.878-19.19-27.352-14.96,6.2984-12.098,3.9371-13.19-12.542-24.932z"/></g></svg>
          +
          +
          +
          
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="506 234 68 36" width="30" height="30"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-09-16 14:51Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><rect width="1118" height="783"/><g><path d="M 538.68195 244.31807 C 540.43927 246.07547 540.43927 248.9247 538.68195 250.68204 C 536.92456 252.4394 534.07532 252.4394 532.318 250.68204 C 530.5606 248.9247 530.5606 246.07547 532.318 244.31807 C 534.07532 242.56075 536.92456 242.56075 538.68195 244.31807 M 511.12607 257.99356 C 511.26108 258.13019 511.39728 258.26608 511.53473 258.40121 C 527.2556 273.86606 552.74414 273.86606 568.46515 258.40121 C 568.60248 258.26617 568.73853 258.13037 568.87354 257.9938 C 568.8736 257.99374 568.8736 257.99371 568.8736 257.99362 C 568.87366 257.99371 568.87366 257.9938 568.87372 257.9939 C 570.72504 256.12051 572.35046 254.11153 573.74994 252 C 573.74994 251.99997 573.74994 251.99994 573.74994 251.99992 C 572.35046 249.8884 570.72504 247.87938 568.87372 246.00606 C 568.87366 246.00613 568.87366 246.00621 568.8736 246.00627 C 568.73865 245.86966 568.60254 245.73383 568.46515 245.5987 C 552.74414 230.13387 527.2556 230.13387 511.53473 245.5987 C 511.39728 245.73383 511.26108 245.86974 511.12613 246.00635 C 511.126 246.00624 511.126 246.00616 511.12595 246.00606 C 509.2748 247.87938 507.64954 249.88837 506.24994 251.9998 L 506.24994 251.99983 C 506.24994 251.9999 506.25 251.99992 506.25 251.99997 C 506.25 252 506.24994 252.00005 506.24994 252.00009 L 506.24994 252.00012 C 507.64954 254.11157 509.2748 256.12051 511.12595 257.9939 C 511.126 257.99377 511.126 257.99365 511.12607 257.99359 Z M 515.44916 252 C 515.8548 251.55469 516.27502 251.11778 516.71014 250.68985 C 522.16632 245.32257 529.06055 242.23206 536.17273 241.41824 C 534.6662 241.96199 533.2525 242.83762 532.04498 244.04512 C 527.65155 248.43852 527.65155 255.56163 532.04498 259.95502 C 533.2522 261.16226 534.6656 262.03778 536.17175 262.58154 C 529.05988 261.76761 522.16608 258.6771 516.71014 253.31009 C 516.2751 252.88219 515.85486 252.44528 515.44922 252 Z M 564.55054 251.99995 C 564.14502 252.44525 563.7248 252.88217 563.28973 253.31009 C 557.83368 258.67712 550.93988 261.76764 543.828 262.58157 C 545.33423 262.03781 546.74756 261.1623 547.9549 259.95502 C 552.34833 255.56163 552.34833 248.43852 547.9549 244.04512 C 546.74744 242.83765 545.33374 241.96202 543.82715 241.41824 C 550.9394 242.23206 557.83356 245.3226 563.28973 250.68985 C 563.7248 251.11775 564.14502 251.55467 564.55054 251.99995 Z M 568.8736 257.99362 C 570.7249 256.12033 572.35028 254.11139 573.74988 252.00002" fill="black" class="glyph"/></g></g></svg>
          +
          +
          +
          There are a lot of interesting people using ~TiddlySpace that you might like to keep track of and interact with. There are a number of ways of doing this.
          +
          +If you see a number in the speech bubble in one of your tiddlers, it means that someone is writing about the same thing as you. You can find out what they're saying by clicking on it. Likewise, if you see something interesting in someone else's space, you can respond to it and write up your own thoughts on the subject by clicking "Reply to this tiddler".
          +
          +Additionally, if you find anyone interesting, or you find an interesting looking space and you'd like to know when it's changed, you can "follow" that space. To do this, simply create a tiddler with the title: {{{@space-name}}} and tag it {{{follow}}}. If you want, you can store some notes about that space in the body of the tiddler.
          +
          +If you then want to know what happening, simply [[include|How do I include/exclude spaces?]]@docs the @tivity space and then visit your activity stream at [[/activity|/activity]], or just visit the @tapas space directly.
          +
          +!Not sure who to follow?
          +Here's a few suggestions:
          +* @fnd
          +* @cdent
          +* @pmario
          +* @bengillies
          +* @dickon
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceFollowingPlugin|
          +|''Version''|0.7.1|
          +|''Description''|Provides a following macro|
          +|''Author''|Jon Robson|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceTiddlerIconsPlugin ErrorHandler|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +!Usage
          +Tag a tiddler with "follow" to express a list of followers.
          +Using the {{{<<followTiddlers X>>}}}
          +will reveal the number of tiddlers with name X in the set of spaces the *current* user viewing your space follows.
          +{{{<<following jon>>}}} will list all the users following Jon.
          +{{{<<followers jon>>}}} will list all the followers of jon.
          +{{{<linkedTiddlers>>}}} will list all tiddlers across TiddlySpace linked to the current tiddler
          +{{{<linkedTiddlers follow:yes>>}}} will list all tiddlers across TiddlySpace that come from your list of followers
          +adds spaceLink view type {{{<<view server.bag spaceLink>>}}} creates a link to the space described in server.bag
          +{{{<<view server.bag spaceLink title>>}}} makes a link to the tiddler with title expressed in the field title in space server.bag
          +If no name is given eg. {{{<<following>>}}} or {{{<<follow>>}}} it will default the current user.
          +!StyleSheet
          +.followTiddlersList li {
          +	list-style:none;
          +}
          +
          +.followButton {
          +	width: 2em;
          +}
          +
          +.followTiddlersList li .siteIcon {
          +	height:48px;
          +	width: 48px;
          +}
          +
          +#sidebarTabs .followers li a,
          +.followers .siteIcon,
          +.followers .siteIcon div {
          +	display: inline;
          +}
          +
          +.followTiddlersList li .externalImage, .followTiddlersList li .image {
          +	display: inline;
          +}
          +
          +.scanResults li {
          +	list-style: none;
          +}
          +!Code
          +***/
          +//{{{
          +(function($) {
          +var LIMIT_FOLLOWING = 100;
          +
          +var tweb = config.extensions.tiddlyweb;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var currentSpace = tiddlyspace.currentSpace.name;
          +
          +var shadows = config.shadowTiddlers;
          +config.annotations.ScanTemplate = "This tiddler is the default template used in the display of tiddlers founding using the tsScan macro. To access attributes use the view macro e.g. {{{<<view title text>>}}}";
          +shadows.ScanTemplate = "<<view modifier SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title link>>";
          +shadows.FollowersTemplate = "<<view server.bag SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view server.bag spaceLink>>";
          +shadows.FollowingTemplate = "<<view title SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title spaceLink>>";
          +shadows.FollowTiddlersBlackList = "";
          +shadows.FollowTiddlersHeading = "There are tiddlers in spaces you follow using the follow tag which use the title <<view title text>>";
          +shadows.FollowTiddlersTemplate = ["* <<view server.space SiteIcon width:24 height:24 spaceLink:yes label:no>> ",
          +	"<<view server.space spaceLink title external:no>> modified by <<view modifier spaceLink>> ",
          +	"in the <<view server.space spaceLink>> space (<<view modified date>> @ <<view modified date 0hh:0mm>>).\n"].join("");
          +
          +var name = "StyleSheetFollowing";
          +shadows[name] = "/*{{{*/\n%0\n/*}}}*/".
          +	format(store.getTiddlerText(tiddler.title + "##StyleSheet"));
          +store.addNotification(name, refreshStyles);
          +
          +// provide support for sucking in tiddlers from the server
          +tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
          +	var adaptor = store.getTiddlers()[0].getAdaptor();
          +	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
          +	var tiddler = new Tiddler(localTitle);
          +	tiddler.text = "Please wait while this tiddler is retrieved...";
          +	tiddler.fields.doNotSave = "true";
          +	store.addTiddler(tiddler);
          +	src = story.displayTiddler(src || null, tiddler.title);
          +	tweb.getStatus(function(status) {
          +		var context = {
          +			host: tweb.host, // TODO: inherit from source tiddler?
          +			workspace: workspace,
          +			headers: { "X-ControlView": "false" }
          +		};
          +		var getCallback = function(context, userParams) {
          +			var tiddler = context.tiddler;
          +			tiddler.title = localTitle;
          +			store.addTiddler(tiddler);
          +			story.refreshTiddler(localTitle, null, true); // overriding existing allows updating
          +			if(callback) {
          +				callback(src, tiddler);
          +			}
          +		};
          +		adaptor.getTiddler(title, context, null, getCallback);
          +	});
          +};
          +
          +tiddlyspace.scroller = {
          +	runHandler: function(title, top, bottom, height) {
          +		var i;
          +		var handlers = tiddlyspace.scroller.handlers;
          +		var tidEl = story.getTiddler(title);
          +		if(tidEl) {
          +			var topEl = $(tidEl).offset().top + 20;
          +			if(top === false || (topEl > top && topEl < bottom)) {
          +				var h = handlers[title];
          +				for(i = 0; i < h.length; i++) {
          +					h[i]();
          +				}
          +				tiddlyspace.scroller.clearHandlers(title);
          +			}
          +		} else {
          +			tiddlyspace.scroller.clearHandlers(title);
          +		}
          +	},
          +	clearHandlers: function(title) {
          +		tiddlyspace.scroller.handlers[title] = [];
          +	},
          +	registerIsVisibleEvent: function(title, handler) {
          +		tiddlyspace.scroller.handlers[title] = tiddlyspace.scroller.handlers[title] || [];
          +		tiddlyspace.scroller.handlers[title].push(handler);
          +	},
          +	init: function() {
          +		this.handlers = {};
          +		this.interval = window.setInterval(function() {
          +			var top = $(window).scrollTop();
          +			var height = $(window).height();
          +			var bottom = top + height;
          +			var title;
          +			for(title in tiddlyspace.scroller.handlers) {
          +				if(title) {
          +					tiddlyspace.scroller.runHandler(title, top, bottom, height);
          +				}
          +			}
          +		}, 2000); // every 2 seconds check scroll position
          +	}
          +};
          +tiddlyspace.scroller.init();
          +
          +var followMacro = config.macros.followTiddlers = {
          +	locale: {
          +		followListHeader: "Here are tiddlers from spaces you follow using the follow tag which use this title.",
          +		noTiddlersFromFollowers: "None of the spaces you follow contain a tiddler with this name.",
          +		errorMessage: "There was a problem retrieving tiddlers from the server. Please try again later."
          +	},
          +	init: function() {
          +		followMacro.lookup = {};
          +	},
          +	followTag: "follow",
          +	getHosts: function(callback) {
          +		tweb.getStatus(function(status) {
          +			callback(tweb.host, tiddlyspace.getHost(status.server_host, "%0"));
          +		});
          +	},
          +	getBlacklist: function() {
          +		return store.getTiddlerText("FollowTiddlersBlackList").split("\n");
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var args = paramString.parseParams("anon")[0];
          +		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
          +		var title = (args.anon && args.anon[0]) || tiddler.fields["server.title"] || tiddler.title;
          +		var tid = store.getTiddler(title);
          +		var user = params[1] || false;
          +		if(tid) {
          +			followMacro.makeButton(place, {
          +				url: "/search?q=title:%22" + encodeURIComponent(title) + "%22",
          +				containingTiddler: containingTiddler,
          +				blacklisted: followMacro.getBlacklist(), title: title, user: user,
          +				consultFollowRelationship: (args.follow &&
          +					args.follow[0] === 'false') ? false : true });
          +		}
          +	},
          +	makeButton: function(place, options) { // this is essentially the same code in TiddlySpaceFollowingPlugin
          +		var title = options.title;
          +		var blacklisted = options.blacklisted;
          +		var tiddler = store.getTiddler(title);
          +		var btn = $('<div class="followButton" />').addClass("notLoaded").appendTo(place)[0];
          +		if(blacklisted.contains(title)) {
          +			$(btn).remove();
          +			return;
          +		} else {
          +			var user = options.user;
          +			window.setTimeout(function() { // prevent multiple calls due to refresh
          +				tiddlyspace.scroller.registerIsVisibleEvent(options.containingTiddler, function() {
          +					var mkButton = function(followers, ignore) {
          +						if(!followers && !ignore) {
          +							$(btn).remove();
          +						} else {
          +							$("<a />").appendTo(btn);
          +							var scanOptions = { url: options.url,
          +								spaceField: options.spaceField || "bag", template: null, sort: "-modified",
          +								callback: function(tiddlers) {
          +									$(btn).removeClass("notLoaded");
          +									followMacro.constructInterface(btn, tiddlers);
          +								}
          +							};
          +							if(!ignore) {
          +								scanOptions.showBags = followMacro._getFollowerBags(followers);
          +							}
          +							scanOptions.hideBags = [tiddler.fields["server.bag"]];
          +							scanMacro.scan(null, scanOptions, user);
          +						}
          +					};
          +					if(options.consultFollowRelationship) {
          +						followMacro.getFollowers(mkButton);
          +					} else {
          +						mkButton([], true);
          +					}
          +				});
          +			}, 1000);
          +		}
          +	},
          +	constructInterface: function(container, tiddlers) {
          +		var txt = tiddlers.length;
          +		var className = txt > 0 ? "hasReplies" : "noReplies";
          +		var el = $(story.findContainingTiddler(container));
          +		$(container).empty().addClass(className);
          +		var btn = $("<a />").addClass("followedTiddlers").text(txt).
          +			click(function(ev) {
          +				followMacro.followingOnClick(ev);
          +			}).appendTo('<div class="followedTiddlers" />').appendTo(container)[0];
          +		$.data(btn, "tiddlers", tiddlers);
          +	},
          +	followingOnClick: function(ev) {
          +		var target = ev.target;
          +		var locale = followMacro.locale;
          +		var el = $('<div class="followTiddlersList" />')[0];
          +		var popup = Popup.create(target,"div");
          +		$(popup).addClass("taggedTiddlerList followList").click(function(ev) { // make it so only clicking on the document outside the popup removes the popup
          +			if(ev.target.parentNode != document) {
          +				ev.stopPropagation();
          +			}
          +		}).append(el);
          +		var tiddlers = $.data(target, "tiddlers") || [];
          +		scanMacro.template(el, tiddlers.slice(0,1), "FollowTiddlersHeading");
          +		scanMacro.template(el, tiddlers, "FollowTiddlersTemplate");
          +		if(tiddlers.length === 0) {
          +			$("<li />").text(locale.noTiddlersFromFollowers).appendTo(el);
          +		}
          +		Popup.show();
          +		ev.stopPropagation();
          +		return popup;
          +	},
          +	_getFollowerBags: function(followers) { // XXX: private or not?
          +		return $.map(followers, function(name, i) {
          +			return name != currentSpace ? "%0_public".format(name) : null;
          +		});
          +	},
          +	getFollowers: function(callback, username) {
          +		// returns a list of spaces being followed by the existing space
          +		var followersCallback = function(user) {
          +			if(!user.anon) {
          +				scanMacro.scan(null, { 
          +					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          +					spaceField: "title", template: null, cache: true,
          +					callback: function(tiddlers) {
          +						var followers = [];
          +						for(var i = 0; i < tiddlers.length; i++) {
          +							followers.push(tiddlyspace.resolveSpaceName(tiddlers[i].title));
          +						}
          +						callback(followers);
          +					}
          +				});
          +			} else {
          +				callback(false);
          +			}
          +		};
          +		return !username ? tweb.getUserInfo(followersCallback) : followersCallback({ name: username });
          +	}
          +};
          +
          +var scanMacro = config.macros.tsScan = {
          +	init: function () {
          +		this.scanned = {};
          +	},
          +	_tiddlerfy: function(jsontiddlers, options) {
          +		var tiddlers = [];
          +		var spaceField = options.spaceField || "bag"; // TODO: phase out use view types instead
          +		$.each(jsontiddlers, function(i, t) {
          +			var use = false;
          +			if(!options.showBags || (options.showBags && options.showBags.contains(t.bag))) {
          +				use = true;
          +			}
          +			if(options.hideBags && options.hideBags.contains(t.bag)) {
          +				use = false;
          +			}
          +			if(use) {
          +				var spaceName = t[spaceField];
          +				var tiddler = config.adaptors.tiddlyweb.toTiddler(t, tweb.host);
          +				tiddler.fields["server.space"] = tiddlyspace.resolveSpaceName(spaceName);
          +				tiddlers.push(tiddler);
          +			}
          +		});
          +		return tiddlers;
          +	},
          +	_scanCallback: function(place, jsontiddlers, options) {
          +		var locale = followersMacro.locale;
          +		var tiddlers = scanMacro._tiddlerfy(jsontiddlers, options);
          +		
          +		if(options.sort) {
          +			tiddlers = store.sortTiddlers(tiddlers, options.sort);
          +		}
          +		if(options.filter) {
          +			var _store = new TiddlyWiki();
          +			config.lastStore = _store;
          +			for(var i = 0; i < tiddlers.length; i++) {
          +				var clone = tiddlers[i];
          +				clone.title = tiddlyspace.getLocalTitle(clone.title, clone.fields['server.workspace']);
          +				_store.addTiddler(clone);
          +			}
          +			tiddlers = _store.filterTiddlers(options.filter);
          +		}
          +		if(place) {
          +			$(place).empty();
          +			var list = $("<ul />").appendTo(place)[0];
          +			scanMacro.template(list, tiddlers, options.template);
          +			if(tiddlers.length === 0) {
          +				$("<li />").text(options.emptyMessage || locale.noone).appendTo(list);
          +				$(list).addClass("emptyList");
          +			}
          +		}
          +		if(options.callback) {
          +			options.callback(tiddlers);
          +		}
          +	},
          +	constructSearchUrl: function(host, options) {
          +		if(options.url) {
          +			return options.url;
          +		}
          +		var inputs = options.searchValues;
          +		var tag = options.tag;
          +		var searchField = options.searchField || "title";
          +		var searchQuery = [];
          +		for(var i = 0; i < inputs.length; i++) {
          +			searchQuery.push('%0:"%1"'.format(searchField, inputs[i]));
          +		}
          +		var query = searchQuery.join(" OR ");
          +		query = tag ? "(%0) AND tag:%1".format(query, tag) : query;
          +		query = options.query ? "%0;%1;".format(query, options.query) : query;
          +		query = options.fat ? "%0&fat=1".format(query) : query;
          +		return '%0/search?q=%1'.format(host, query);
          +	},
          +	scan: function(place, options) { // TODO: make use of list macro with url filter
          +		var locale = followersMacro.locale;
          +		options.template = options.template ? options.template : "ScanTemplate";
          +		followMacro.getHosts(function(host, tsHost) {
          +			$(place).text(followersMacro.locale.pleaseWait);
          +			options = options ? options: {};
          +			var url = scanMacro.constructSearchUrl(host, options);
          +			if(options.cache && scanMacro.scanned[url]) {
          +				var tiddlers = scanMacro.scanned[url].tiddlers;
          +				var run = function(tiddlers) {
          +					scanMacro._scanCallback(place, tiddlers, options);
          +				};
          +				if(tiddlers) {
          +					run(tiddlers);
          +				} else {
          +					scanMacro.scanned[url].callbacks.push(run);
          +				}
          +			} else {
          +				var callback = function(tiddlers) {
          +					scanMacro._scanCallback(place, tiddlers, options);
          +				};
          +				if(scanMacro.scanned[url] && scanMacro.scanned[url].callbacks) {
          +					scanMacro.scanned[url].callbacks.push(callback);
          +				} else {
          +					scanMacro.scanned[url] = {
          +						callbacks: [callback]
          +					};
          +				}
          +				ajaxReq({
          +					url: url,
          +					dataType: "json",
          +					success: function(tiddlers) {
          +						scanMacro.scanned[url].tiddlers = tiddlers;
          +						var callbacks = scanMacro.scanned[url].callbacks;
          +						while(callbacks.length > 0) {
          +							callbacks.pop()(tiddlers);
          +						}
          +					},
          +					error: function(xhr) {
          +						$(place).empty();
          +						$("<span />").addClass("annotation error").text(locale.error.format(xhr.status)).appendTo(place);
          +					}
          +				});
          +			}
          +		});
          +	},
          +	template: function(place, tiddlers, template) { // TODO: make use of list macro.
          +		for(var i = 0; i < tiddlers.length; i++) {
          +			var tiddler = tiddlers[i];
          +			var item = $('<li class="spaceName" />').appendTo(place)[0];
          +			var spaceName = tiddler.fields["server.space"] || "";
          +			var templateText = store.getTiddlerText(template).replace(/\$1/mg, spaceName);
          +			wikify(templateText, item, null, tiddler);
          +		}
          +	},
          +	getOptions: function(paramString, tiddler) {
          +		var args = paramString.parseParams("name", null, true, false, true)[0];
          +		var options = { query: false, sort: false, tag: false, template: false, showBags: args.show || false,
          +			hideBags: args.hide || false, filter: false, spaceField: "bag", searchField: "title", fat: false,
          +			emptyMessage: false };
          +		for(var name in args) {
          +			if(name != "name") {
          +				if(name == "fat") {
          +					options[name] = true;
          +				} else {
          +					options[name] = args[name][0];
          +				}
          +			}
          +		}
          +		// if user has set searchField to modifier, then use the modifiers value if available otherwise use searchValues.
          +		var searchField = options.searchField;
          +		var searchValues = args[searchField] ? args[searchField] : args.searchValues;
          +		// if neither of those were used use the first parameter
          +		var defaultValues = tiddler ? [ tiddler.title ] : [];
          +		options.searchValues = searchValues ? searchValues : ( args.name ? [args.name[0]] : defaultValues);
          +		return options;
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var container = $("<div />").addClass("scanResults resultsArea").appendTo(place)[0];
          +		var options = scanMacro.getOptions(paramString, tiddler);
          +		scanMacro.scan(container, options);
          +	}
          +};
          +
          +var followersMacro = config.macros.followers = {
          +	locale: {
          +		loggedOut: "Please login to see the list of followers",
          +		noSupport: "We were unable to retrieve followers as your browser does not support following.",
          +		pleaseWait: "Please wait while we look this up...",
          +		error: "Error %0 occurred whilst retrieving data from server",
          +		noone: "None."
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var locale = followersMacro.locale;
          +		var args = paramString.parseParams("name", null, true, false, true)[0];
          +		var username = args.name ? args.name[0] : false;
          +		var container = $('<div class="followers" />').text(locale.pleaseWait).
          +			appendTo(place)[0];
          +		var followersCallback = function(user) {
          +			if(user.anon) {
          +				$("<span />").text(locale.loggedOut).appendTo(container);
          +			} else {
          +				var options = scanMacro.getOptions(paramString);
          +				$.extend(options, {
          +					url: "/search?q=title:@%0 OR title:%0 tag:%1 _limit:%2".
          +						format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          +					spaceField: "bag",
          +					template: options.template ? options.template : "FollowersTemplate"
          +				});
          +				scanMacro.scan(container, options);
          +			}
          +		};
          +		return !username ? followersCallback({ name: currentSpace }) : followersCallback({ name: username });
          +	}
          +};
          +
          +var followingMacro = config.macros.following = {
          +	locale: {
          +		pleaseWait: followersMacro.locale.pleaseWait,
          +		loggedOut: "Please login to see who you are following",
          +		noSupport: followersMacro.locale.noSupport,
          +		error: followersMacro.locale.error,
          +		noone: followersMacro.locale.noone
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var locale = followingMacro.locale;
          +		var args = paramString.parseParams("name", null, true, false, true)[0];
          +		var fat = args.fat ? true : false;
          +		var username = args.name ? args.name[0] : false;
          +		var container = $('<div class="following" />').text(locale.pleaseWait).
          +			appendTo(place)[0];
          +		var followingCallback = function(user) {
          +			if(user.anon) {
          +				$("<span />").text(locale.loggedOut).appendTo(container);
          +			} else {
          +				var options = scanMacro.getOptions(paramString);
          +				$.extend(options, {
          +					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          +					spaceField: "title",
          +					template: options.template ? options.template : "FollowingTemplate"
          +				});
          +				scanMacro.scan(container, options);
          +			}
          +		};
          +		return !username ? followingCallback({ name: currentSpace }) : followingCallback({ name: username });
          +	}
          +};
          +
          +var linkedMacro = config.macros.linkedTiddlers = {
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var args = paramString.parseParams("anon")[0];
          +		var title = params[0] || tiddler.fields["server.title"] || tiddler.title;
          +		var tid = store.getTiddler(title);
          +		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
          +		if(tid) {
          +			followMacro.makeButton(place, {
          +				spaceField: "recipe",
          +				url: "/bags/%0/tiddlers/%1/backlinks".format(tid.fields['server.bag'],
          +					encodeURIComponent(tid.title)),
          +				blacklisted: followMacro.getBlacklist(),
          +				title: title,
          +				containingTiddler: containingTiddler,
          +				user: params[1] || false,
          +				consultFollowRelationship: args.follow ? true : false });
          +		}
          +	}
          +};
          +
          +if(config.options.chkFollowTiddlersIsLinkedTiddlers) {
          +	merge(config.macros.followTiddlers, config.macros.linkedTiddlers);
          +	config.shadowTiddlers.FollowTiddlersHeading = "These are the other tiddlers that link to this tiddler.";
          +}
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          chkPrivateMode: false
          +
          +
          +
          ''Welcome to the great TiddlyWiki viral interview project.''
          +
          +For many people that use it there is a distinct [[discovery moment|http://tiddlywiki.com/#Raves]] when TiddlyWiki explodes in their brain. For others, it is a challenge to get their heads around TiddlyWiki at all. 
          +
          +This project explores how people think about TiddlyWiki by collecting together responses to a set of questions about it.
          +
          +!To Add Your Own Response
          +* Sign up for TiddlySpace if you haven't done so already
          +* Click the "Reply to this tiddler" link on a question you wish to answer
          +* Your home space will open in a new window or tab with the appropriate question tiddler presented
          +* Double click on the question tiddler and add your answer (make sure to make it public)
          +
          +
          +
          +
          +
          +
          +
          /*{{{*/
          +body {
          +	font-size: 1em;
          +	font-family: helvetica, arial, sans-serif;
          +	background-color: #fff;
          +	color: [[ColorPalette::Foreground]];
          +}
          +
          +body ul { margin: 0; }
          +
          +#popup {
          +	background-color: [[ColorPalette::TertiaryPale]];
          +}
          +
          +#popup.confirmationPopup, .followList {
          +	font-size: 0.8em;
          +	padding: 1em;
          +	border: solid 1px [[ColorPalette::SecondaryMid]];
          +	background-color: [[ColorPalette::SecondaryPale]];
          +}
          +
          +.followList .listTitle {
          +	text-decoration: underline;
          +}
          +
          +#popup .followTiddlersList a {
          +	display: inline;
          +	padding: 0;
          +}
          +
          +#popup li a {
          +	color: [[ColorPalette::PrimaryMid]];
          +	font-weight: bold;
          +}
          +
          +#popup li a:hover {
          +	color: [[ColorPalette::PrimaryPale]];
          +	background: [[ColorPalette::PrimaryMid]];
          +}
          +
          +#popup li.listTitle {
          +	border-bottom: 1px solid #000;
          +	font-weight: bold;
          +	margin-bottom: 10px;
          +}
          +
          +#popup.followList {
          +	margin-left: 50px;
          +	margin-top: -30px;
          +}
          +
          +.followTiddlersList .label {
          +	display: block;
          +	left: 10px;
          +	top: 0px;
          +	line-height: 16px;
          +	position: relative;
          +}
          +
          +#popup .followTiddlersList .siteIcon{
          +	height: auto;
          +}
          +
          +#popup .followTiddlersList li{
          +	clear: both;
          +	display: block;
          +	height: 48px;
          +	margin-bottom: 8px;
          +	position: relative;
          +}
          +
          +#popup .followTiddlersList a{
          +	display: inline;
          +}
          +
          +#displayArea {
          +	margin: 0;
          +	top: 0px;
          +	left: 0px;
          +	width: 100%;
          +	position: relative;
          +}
          +
          +.revisionCloak {
          +	position: absolute;
          +	position: fixed !important;
          +	height: 100%;
          +	width: 100%;
          +	top: 0;
          +	left: 0;
          +	border: 0;
          +	margin: 0;
          +	padding: 0;
          +	opacity: 0.5;
          +	filter: alpha(opacity=50);
          +	background-color: #000;
          +}
          +
          +/* *** Header *** */
          +.header {
          +	position: relative;
          +	background-color: [[ColorPalette::PrimaryMid]];
          +	_width: 100%; /* ie 6 demands */
          +}
          +
          +.headerForeground {
          +	background-color: [[ColorPalette::PrimaryMid]];
          +	float: left;
          +	margin: 24px 16px 0px 72px;
          +	padding: 0;
          +	position: relative;
          +	top: 0;
          +	_width: 70%; /*ie6: needed for the background to actually be transparent*/
          +	_background-color: transparent; /*ie6: needed to show the search box*/
          +}
          +
          +.clearFloat {
          +	clear: both;
          +}
          +
          +#contentWrapper {
          +	position: relative;
          +	padding-top: 1px;
          +	top: -1px;
          +}
          +
          +#tiddlerDisplay {
          +	_position: relative; /* ie 6*/
          +}
          +
          +.siteTitle {
          +	clear: both;
          +	display: block;
          +	font-size: 32px;
          +	font-weight: bold;
          +	line-height: 32px;
          +}
          +
          +.siteSubtitle {
          +	display: block;
          +	font-size: 14px;
          +	height: 16px;
          +	margin-bottom: 8px;
          +}
          +
          +#sidebarSearch {
          +	padding: 0;
          +	position: absolute;
          +	right: 80px;
          +	top: 8px;
          +	width: 176px;
          +}
          +
          +#sidebarSearch .txtOptionInput {
          +	width: 100%;
          +	margin-top: 5px;
          +	_color: #bbb; /* ie6 danger */
          +}
          +
          +#sidebarSearch .txtOptionInput:focus {
          +	color: #000;
          +}
          +
          +#sidebarSearch .searchButton {
          +	display: none;
          +}
          +
          +/* *** Menu Bar *** */
          +
          +#mainMenu {
          +	position: static;
          +	text-align: left;
          +	margin-left: 72px;
          +	float: left;
          +	width: auto;
          +	padding: 0;
          +	font-size: 1em;
          +	line-height: normal;
          +}
          +
          +#mainMenu a {
          +	color: #fff;
          +	padding: 8px;
          +	font-size: 0.9em;
          +	margin-right: 16px;
          +}
          +
          +#mainMenu a:hover {
          +	background-color: [[ColorPalette::PrimaryMid]];
          +	color: [[ColorPalette::Background]]
          +}
          +
          +#sidebarOptions {
          +	margin-right: 72px;
          +	float: right;
          +	font-size: 1.1em;
          +	line-height: 1.6em;
          +	min-height: 1em;
          +	padding-top: 0;
          +}
          +
          +#sidebarOptions a {
          +	margin-right: 8px;
          +}
          +
          +.confirmationPopup .button,
          +#sidebarOptions .button {
          +	cursor: pointer;
          +	line-height: 1.4em;
          +	text-align: center;
          +	margin-right: 8px;
          +	margin-left:-2px;
          +}
          +
          +.confirmationPopup .button {
          +	font-size: 0.9em;
          +	padding: 2px;
          +}
          +
          +#sidebarOptions .button {
          +	font-size: 0.7em;
          +	float: left;
          +	width: 80px;
          +	padding: 0px;
          +        color: #fff;
          +}
          +
          +.confirmationPopup a.button,
          +#sidebarOptions a {
          +	border: none;
          +	margin: 0 0.2em;
          +	padding: 0.6em 0.25em;
          +	display: inline;
          +	color: #666;
          +}
          +
          +.confirmationPopup a.button:hover,
          +#sidebarOptions a:hover {
          +	color: #000;
          +}
          +
          +.confirmationPopup a.button:active,
          +#sidebarOptions a:active {
          +	border: solid 1px [[ColorPalette::PrimaryMid]];
          +	background-color: #fff;
          +	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
          +	background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
          +}
          +/* *** Sidebar *** */
          +
          +#sidebar .wizard table {
          +	margin: 0px;
          +}
          +
          +.tabContents .listTitle:first-child {
          +	margin-top: 0px;
          +}
          +
          +#menuBar {
          +	background: [[ColorPalette::PrimaryLight]];
          +	left: 0;
          +	right: 0;
          +	position: relative;
          +	margin: 0;
          +	padding: 0.5em 0 0.5em 0;
          +	min-height: 1em;
          +	overflow: hidden;
          +	_width: 100%; /* for ie 6 */
          +}
          +
          +#sidebarOptions a.button:hover {
          +	color: [[ColorPalette::PrimaryPale]];
          +    background: [[ColorPalette::PrimaryMid]];
          +}
          +
          +#tiddlerDisplay, #searchResults {
          +	margin: 16px 448px 0 72px;
          +}
          +
          +#sidebarTabs {
          +	position: absolute;
          +	right: 72px;
          +	width: 352px;
          +	top: 0;
          +}
          +
          +#sidebarTabs .tabsetWrapper .tabset {
          +	width: 87px;
          +	border-top: 1px solid [[ColorPalette::PrimaryPale]];
          +	border-left: 1px solid [[ColorPalette::PrimaryPale]];
          +	border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
          +	height: auto;
          +	float: left;
          +	word-wrap: break-word;
          +	top: 0;
          +	padding: 0;
          +}
          +
          +#sidebarTabs .tabsetWrapper .tabContents {
          +	background-color: [[ColorPalette::PrimaryPale]];
          +	border: 3px solid [[ColorPalette::PrimaryMid]];
          +	width: 242px;
          +	_width: 238px;
          +	left: -3px;
          +	_left: -5px;
          +	position: relative;
          +	min-height: 34em;
          +	padding: 8px;
          +	font-size: 0.8em;
          +}
          +
          +/* ---- Side style --- */
          +
          +#sidebarTabs .tabsetWrapper .tabset .tab {
          +	font-size: 0.9em;
          +	padding: 0.7em 8px 0.5em;
          +	color: #fff;
          +	background: [[ColorPalette::PrimaryLight]];
          +	border: none;
          +	line-height: 16px;
          +	position: relative;
          +	display: block;
          +	margin: 0;
          +}
          +
          +#sidebarTabs .tabsetWrapper .tabset .tabSelected {
          +	color: [[ColorPalette::PrimaryMid]];
          +	background: [[ColorPalette::PrimaryPale]];
          +	border-top: 3px solid [[ColorPalette::PrimaryMid]];
          +	border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
          +	border-left: 3px solid [[ColorPalette::PrimaryMid]];
          +	z-index: 10;
          +	margin-top: -1px;
          +	font-weight: bold;
          +}
          +
          +#sidebarTabs .tabContents li {
          +	border: none;
          +	margin-left: 0;
          +	word-wrap: break-word;
          +}
          +
          +.tabContents .timeline {
          +	background: [[ColorPalette::PrimaryPale]];
          +	margin-bottom: 8px;
          +}
          +
          +#sidebarTabs .timeline li.listTitle {
          +	color: #132E43;
          +	margin-left: 8px 0;
          +	padding: 0.3em 0.11em;
          +	font-size: 1em;
          +	border-bottom: none;
          +}
          +
          +#sidebarTabs .tabContents li a {
          +	display: block;
          +	text-align: left;
          +	margin: 0 0 1px 0;
          +	padding: 0.3em 1em;
          +	background: [[ColorPalette::PrimaryPale]];
          +}
          +
          +#sidebarTabs .tabsetWrapper .tabset a:hover,
          +#sidebarTabs .tabContents li a:hover {
          +	color: [[ColorPalette::PrimaryPale]];
          +	background: [[ColorPalette::PrimaryMid]];
          +}
          +
          +/* Activity Stream */
          +#sidebarTabs .tabContents .activityStream .feedItem a {
          +	display: inline-block;
          +	padding: 0;
          +	background: none;
          +}
          +
          +/* ---- Tagging box --- */
          +.tagInfo {
          +	border: 1px solid #cccccc;
          +	padding: 10px 15px;
          +	-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
          +	box-shadow: 0 2px 2px rgba(0,0,0,0.2);
          +	color: [[ColorPalette::TertiaryMid]];
          +	background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
          +	background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
          +	margin-top: 1em;
          +	font-size: 13px;
          +	margin: 0 0 0 56px;
          +}
          +
          +.tagInfo ul {
          +	list-style: none;
          +	padding-left: 2.2em;
          +}
          +
          +.tagInfo ul li {
          +	display: inline;
          +}
          +
          +.tagInfo ul li.listTitle,
          +.tagInfo .tagging ul li.listTitle {
          +	color: [[ColorPalette::PrimaryMid]];
          +	font-size: 13px;
          +}
          +
          +.tagInfo ul li a {
          +	border: none;
          +}
          +
          +.tagInfo .tagging ul li {
          +	float: none;
          +	display: inline-block;
          +}
          +
          +.tagInfo .tagging {
          +	padding: 0;
          +}
          +
          +.viewRevision .toolbar {
          +	right: 48px;
          +	top: 8px;
          +}
          +
          +.viewRevision .modifierIcon img,
          +.viewRevision .modifierIcon svg {
          +	margin-right: 8px;
          +}
          +
          +.viewRevision .toolbar svg {
          +	width: 32px;
          +	height: 32px;
          +}
          +
          +/* --- IE hacks from lattice --- */
          +
          +/* ie hacks */
          +* html #menuBar {
          +	margin-bottom: 8px;
          +}
          +.toolbar .svgIconText {
          +	*display: inline;
          +}
          +
          +div.tiddler .toolbar a {
          +	cursor: pointer;
          +	float: left\9;
          +	display: inline\9;
          +}
          +
          +* html .toolbar {
          +	right: 8px;
          +}
          +* html .followButton a {
          +	margin-top: 0px;
          +	margin-right: 8px;
          +}
          +* html #tiddlerDisplay {
          +	margin-top: 0px;
          +}
          +
          +/* for printing purposes */
          +@media print {
          +	#mainMenu,
          +	#sidebar,
          +	#messageArea,
          +	.toolbar,
          +	.followPlaceHolder,
          +	#backstageButton,
          +	#backstageArea,
          +	#sidebarTabs,
          +	#sidebarSearch .txtOptionInput,
          +	#sidebarOptions {
          +		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 */
          +	}
          +	#tiddlerDisplay {
          +		margin: 16px 16px;
          +	}
          +}
          +
          +@media all and (max-width: 960px){
          +	#tiddlerDisplay,
          +	#searchResults {
          +		margin: 16px 366px 0 16px;
          +	}
          +
          +	#mainMenu {
          +		margin-left: 16px;
          +	}
          +
          +	.headerForeground {
          +		margin-left: 16px;
          +	}
          +
          +	#sidebarSearch {
          +		right: 16px;
          +	}
          +
          +	#sidebarOptions {
          +		margin-right: 16px;
          +	}
          +
          +	#sidebarTabs {
          +		right: 16px;
          +		width: 326px;
          +	}
          +
          +	#sidebarTabs .tabsetWrapper .tabset {
          +		font-size: 0.9em;
          +		width: 77px;
          +	}
          +
          +	#sidebarTabs .tabsetWrapper .tabContents {
          +		width: 226px;
          +		_width: 222px;
          +	}
          +
          +	#sidebarTabs .tabContents li a {
          +		font-size: 0.9em;
          +	}
          +}
          +/*}}}*/
          +[[StyleSheetTiddler]]
          +
          +
          +
          <<tsScan "Do you use TiddlyWiki more for personal things*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          +
          +
          +
          
          +
          +
          +
          (function() {
          +var getCSRFToken = function(window) {
          +	// XXX: should not use RegEx - cf.
          +	// http://www.quirksmode.org/js/cookies.html
          +	// https://github.com/TiddlySpace/tiddlyspace/commit/5f4adbe009ed4bda3ce39058a3fb07de1420358d
          +	var regex = /^(?:.*; )?csrf_token=([^(;|$)]*)(?:;|$)/;
          +	var match = regex.exec(document.cookie);
          +	var csrf_token = null;
          +	if (match && (match.length === 2)) {
          +		csrf_token = match[1];
          +	}
          +
          +	return csrf_token;
          +};
          +
          +if (typeof config !== 'undefined' && config.extensions &&
          +		config.extensions.tiddlyspace &&
          +		config.extensions.tiddlyspace.getCSRFToken === null) {
          +	config.extensions.tiddlyspace.getCSRFToken = getCSRFToken;
          +} else {
          +	window.getCSRFToken = getCSRFToken;
          +}
          +})(window);
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="434 218 68 68"
          +width="30" height="30">
          +<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +	<g>
          +		<path d="M 478.39694 232.53705 L 478.39694 232.53705 
          +		C 477.1145 231.85132 475.77875 231.30147 474.41058 230.88734 L 474.41058 218.24994 L 461.58942 218.24994 
          +		L 461.58942 230.88734 C 460.22125 231.30147 458.8855 231.85132 457.60306 232.53705 L 448.66824 223.60214 
          +		L 439.6022 232.66814 L 448.53717 241.60304 C 447.8515 242.8854 447.30157 244.22116 446.88745 245.58936 
          +		L 434.25 245.58936 L 434.25 258.41052 L 446.88745 258.41052 
          +		C 447.30157 259.77869 447.8515 261.11447 448.53717 262.39688 L 439.6022 271.33173 L 448.66824 280.3978 
          +		L 457.60306 271.46283 C 458.8855 272.14862 460.22125 272.69846 461.58942 273.11252 L 461.58942 285.74988 
          +		L 474.41058 285.74988 L 474.41058 273.11252 C 475.77875 272.69846 477.1145 272.14862 478.39694 271.46283 
          +		L 487.33176 280.3978 L 496.39767 271.33173 L 487.46286 262.39688 
          +		C 488.14853 261.11447 488.69836 259.77869 489.11255 258.41052 L 501.74988 258.41052 L 501.74988 245.58936 
          +		L 489.11255 245.58936 C 488.69836 244.22116 488.14853 242.8854 487.46286 241.60304 L 496.39767 232.66814 
          +		L 487.33176 223.60214 Z M 475.3328 244.66714 C 479.3825 248.71698 479.3825 255.2829 475.3328 259.33273 
          +		C 471.28296 263.3826 464.71704 263.3826 460.66724 259.33273 
          +		C 456.61737 255.2829 456.61737 248.71698 460.66724 244.66714 
          +		C 464.71704 240.61734 471.28296 240.61734 475.3328 244.66714" fill="#111"
          +		class="glyph"/>
          +	</g>
          +</g>
          +</svg>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceFollowingWizard|
          +|''Version''|0.7.0|
          +|''Description''|Provides a following wizard macro and deleteButton view type|
          +|''Author''|Jon Robson|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceFollowingPlugin TiddlySpaceTiddlerIconsPlugin|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +!Usage
          +{{{ <<followWizard>> }}}
          +!StyleSheet
          +.followWizard ul,
          +.followWizard li .siteIcon,
          +.followWizard li {
          +	list-style: none;
          +	display: inline-block;
          +}
          +
          +.followWizard li {
          +	margin-right: 8px;
          +	background-color: #eee;
          +	-moz-border-radius: 5px;
          +	-webkit-border-radius: 5px;
          +	padding: 4px;
          +}
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tweb = config.extensions.tiddlyweb;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var currentSpace = tiddlyspace.currentSpace.name;
          +
          +var shadows = config.shadowTiddlers;
          +shadows.FollowersTemplate = "<<view server.bag SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view server.bag spaceLink>>";
          +shadows.FollowingTemplate = "<<view title SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title spaceLink>> <<view title deleteButton>>";
          +
          +var name = "StyleSheetFollowingWizard";
          +shadows[name] = "/*{{{*/\n%0\n/*}}}*/".
          +	format(store.getTiddlerText(tiddler.title + "##StyleSheet"));
          +store.addNotification(name, refreshStyles);
          +
          +var wizard = config.macros.followWizard = {
          +	locale: {
          +		mission: "Which user or space would you like to follow?",
          +		badpermissions: "Only members of the space can maintain followers.",
          +		follow: "follow"
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var locale = wizard.locale;
          +		var container = $("<div />").addClass("followWizard").appendTo(place)[0];
          +		if(!readOnly) {
          +			var form = $("<form />").addClass("followForm").appendTo(container)[0];
          +			$("<span />").text(locale.mission).appendTo(form);
          +			var input = $("<input />").attr("name", "space").attr("type", "text").appendTo(form);
          +			$("<input />").attr("type", "submit").val(locale.follow).appendTo(form).click(function(ev) {
          +				wizard.addFollowing(ev, input.val());
          +				ev.preventDefault();
          +			});
          +		} else {
          +			$(container).addClass("annotation").text(locale.badpermissions);
          +		}
          +	},
          +	addFollowing: function(ev, space) {
          +		var name = tiddlyspace.resolveSpaceName(space);
          +		if(!name) {
          +			alert("That doesn't appear to be a valid space name. Please check and try again.");
          +			return;
          +		}
          +		var title = "@" + name;
          +		var tiddler = store.getTiddler(title);
          +		if(tiddler) {
          +			tiddler.tags.push("follow");
          +		} else {
          +			tiddler = new Tiddler(title);
          +			tiddler.tags.push("follow");
          +			merge(tiddler.fields, config.defaultCustomFields);
          +		}
          +		store.saveTiddler(tiddler);
          +		autoSaveChanges();
          +	}
          +};
          +
          +config.macros.view.views.deleteButton = function(value,place,params,wikifier,paramString,tiddler) {
          +	var tid = store.getTiddler(value)
          +	if(tid && config.commands.deleteTiddler.isEnabled(tid)) {
          +		var handler = function(ev) {
          +			config.commands.deleteTiddler.handler(ev,ev.target,value);
          +		};
          +		createTiddlyButton(place, "X", "delete this tiddler", handler);
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          +
          
          +
          +
          +
          !Followers
          +<<followers>>
          +!Activity
          +[[Replies and Notifications]]
          +
          +<<activity>>
          +!Following
          +All spaces tagged follow
          +<<list filter [tag[follow]][sort[title]]>>
          +
          +<<followSuggestions>>
          +
          +
          +
          The activity feed is best for sharing opinions on something. To make best use of it create a tiddler and tag it with a username you would like to share thought with on this subject.
          +
          +For instance I might create a tiddler called [[Animal I'd least like to be stuck in a cage with]]. I might say 
          +<<<
          +I would least like to be stuck in a cage with a lion as it could tear me apart amongst other reasons.
          +<<<
          +I then tag it @matias to get @matias's attention to see what he think. This flags it in @matias's activity feed and tells him that I am interested in his thoughts. Of course @matias can ignore it, and if he is not using the activity feed feature he may not even know about the message. If he wants to respond all @matias then has to do is create his own tiddler [[Animal I'd least like to be stuck in a cage with]]. Matias might say
          +<<<
          +A lion would be not as bad as a great white shark... not only would you be stuck in a cage with it but you would  be underwater with a likelihood of drowning to increase suffering.
          +<<<
          +It's not over yet.. now I can refine my original post with the thoughts of Matias. I might think mm, @matias has got a point there with the water, but I think a crocodile would more likely eat me then a great white shark and I fancy my chances with the great white.
          +
          +I then update my tiddler to say 
          +<<<
          +I would least like to be stuck in a cage with a crocodile as it could tear me apart amongst other reasons. A lion would also be scary however I'm not a good swimmer so would be less likely to be able to make an escape. A crocodile is worse than a shark as shark attacks on humans are rare, so I'd fancy my chances.
          +<<<
          +
          +We continue replying this way revising our tiddlers till the process finishes and I have a tiddler which clearly explains the [[Animal I'd least like to be stuck in a cage with]] with very detailed reasoning.
          +
          +
          +
          
          +
          +
          +
          /***
          +|''Name:''|TiddlySpaceIntraSpaceInclusion|
          +|''Description:''|Provides support for {{{<<tiddler Foo@bar>>}}} and {{{<<tiddler [[Foo]]@bar>>}}}|
          +|''Author:''|Jon Robson|
          +|''Source:''|https://github.com/jdlrobson/TiddlyWikiPlugins/raw/master/plugins/TiddlySpaceIntraSpaceInclusion/TiddlySpaceIntraSpaceInclusion.js|
          +|''Version:''|0.3.8a|
          +|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          +|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          +|''~CoreVersion:''|2.4|
          +***/
          +//{{{
          +(function() {
          +	var _tidtext = TiddlyWiki.prototype.getTiddlerText;
          +	var cache = {};
          +
          +	// allmost the same regExp as in TiddlySpaceLinkPlugin but .. no "mg" parameter, because it didn't work for this usecase.
          +	config.textPrimitives.spacenameLinkRegExp = new RegExp(config.textPrimitives.unWikiLink + 
          +													 "?(" + config.textPrimitives.bareTiddlerLetter + "*)@(" + config.textPrimitives.spaceName + ")", "");
          +	config.textPrimitives.tiddlyLinkSpacenameLinkRegExp = new RegExp("\\[\\[(.*?)(?:\\|(.*?))?\\]\\]@(" + config.textPrimitives.spaceName + ")", "");
          +	
          +	TiddlyWiki.prototype.getTiddlerText = function(title, defaultText) {
          +		var ct = config.textPrimitives;
          +		var match = ct.spacenameLinkRegExp.exec(title);	// foo@bar
          +		var match2 = ct.tiddlyLinkSpacenameLinkRegExp.exec(title); 	// [[foo]]@bar
          +		
          +		if(match || match2) {
          +		//	console.log('inner: ', 'spacename: ', match, 'tiddlyLink: ', match2, 'place: ');
          +			var tidtitle, space;
          +			if(match[1] && match.length === 3) {
          +				tidtitle = match[1];
          +				space = match[2];
          +			} else if(match2 && match2.length === 4) {
          +				tidtitle = match2[1];
          +				space = match2[3];
          +			}
          +			var newtitle = tidtitle + "@" + space;
          +			if(tidtitle && space) {
          +				title = newtitle;
          +			}
          +			if(tidtitle && space && !store.getTiddler(newtitle)) {
          +				var tiddler = new Tiddler(title);
          +				// get the tiddler, where the macro is rendered. //XXX will need more testing
          +				var el = story.findContainingTiddler(place);
          +				var refreshTitle = (el) ? el.getAttribute('tiddler') : null;
          +
          +				tiddler.text = "//retrieving from server//";
          +				tiddler.fields.doNotSave = "true";
          +				tiddler.tags = ["excludeLists", "excludeSearch", "excludeMissing"];
          +				merge(tiddler.fields, config.defaultCustomFields);
          +				tiddler.fields["server.bag"] = space + "_public";
          +				tiddler = store.addTiddler(tiddler);
          +				ajaxReq({ url: "/bags/" + space + "_public/tiddlers/" + tidtitle,
          +					dataType: "json",
          +					success: function(tid) {
          +						var tiddler = store.getTiddler(title);
          +						tiddler.text = tid.text;
          +						store.addTiddler(tiddler);
          +						// store.notify(title,true);
          +						story.refreshTiddler(refreshTitle,null,true);
          +						// story.refreshAllTiddlers(); // hacky but above link doesn't always seem to work!
          +					},
          +					error: function() {
          +						var tiddler = store.getTiddler(title);
          +						tiddler.text = "//error retrieving tiddler {{{" + title + "}}} from space @" + space + "//";
          +						store.addTiddler(tiddler);
          +						// store.notify(title,true);
          +						story.refreshTiddler(refreshTitle,null,true);
          +						// story.refreshAllTiddlers(); // hacky but above link doesn't always seem to work!
          +					}
          +				});
          +			}
          +		}
          +		return _tidtext.apply(this, [title, defaultText]);
          +	}
          +})();
          +//}}}
          +
          +
          +
          @@Please do not modify this tiddler; it was created automatically upon space creation.@@
          +
          +
          +
          
          +
          +
          +
          <!--{{{-->
          +<div class='toolbar'
          +	macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
          +</div>
          +<div class='heading'>
          +	<span class='spaceSiteIcon'
          +		macro='tiddlerOrigin label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          +	</span>
          +	<span class="titleBar">
          +		<div class='title' macro='view title text'></div>
          +		<div class="subtitle" macro='viewRevisions page:5'>
          +			last modified on
          +			<span macro="view modified date"></span>
          +		</div>
          +		<div macro="view title replyLink"></div>
          +	</span>
          +	<span class='followPlaceHolder' macro='followTiddlers'></span>
          +	<span class='modifierIcon'
          +		macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          +	</span>
          +	<div class='tagClear'></div>
          +</div>
          +<div class='content'>
          +	<div class='viewer' macro='view text wikified'></div>
          +</div>
          +<div class='answers' macro='tsScan fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified'>
          +</div>
          +<div class='tagInfo'>
          +	<div class='tidTags' macro='tags'></div>
          +	<div class='tagging' macro='tagging'></div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          <<activity show:reply show:notify>>
          +
          +
          +
          <<closeAll>><<permaview>><<newTiddler>>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceFollowingSuggestions|
          +|''Version''|0.2.5dev|
          +|''Description''|Provides a following macro|
          +|''Author''|Jon Robson|
          +|''Requires''|TiddlySpaceFollowingPlugin|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +!Usage
          +
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tweb = config.extensions.tiddlyweb;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var followMacro = config.macros.followTiddlers;
          +
          +var followSuggestions = config.macros.followSuggestions = {
          +	cache: {},
          +	handler: function(place, macroName, params) {
          +		// to do - limit results
          +		place = $('<div class="suggestions" />').appendTo(place)[0];
          +		var currentSpace = tiddlyspace.currentSpace.name;
          +		var user = params[0] || currentSpace;
          +		var pleaseWait = $("<div class='loading' />").text("please wait..").appendTo(place);
          +		tweb.getUserInfo(function(activeUser) {
          +			if(activeUser.name != tiddlyspace.currentSpace.name) {
          +				pleaseWait.hide();
          +				return;
          +			}
          +			followMacro.getFollowers(function(users) {
          +				// suggestions are followers of people that you follow that you don't follow
          +				var bags = followMacro._getFollowerBags(users);
          +				var _bags = [];
          +				for(var i = 0; i < bags.length; i++) {
          +					_bags.push("bag:%0".format([bags[i]]));
          +				}
          +				var bagString = _bags.join(" OR ");
          +				ajaxReq({
          +					beforeSend: followMacro.beforeSend,
          +					url: "/search?q=(%0)&select=title:!%1&select=title:!@%1".format([bagString, activeUser.name]),
          +					dataType: "json",
          +					success: function(tiddlers) {
          +						pleaseWait.hide();
          +						var suggestions = [];
          +						for(var i = 0; i < tiddlers.length; i++) {
          +							var tiddler = tiddlers[i];
          +							if(tiddler.tags.contains("follow")) {
          +								var title = tiddler.title;
          +								if(title.indexOf("@") === 0) {
          +									title = title.substr(1);
          +								}
          +								if(!users.contains(title)) {
          +									suggestions.pushUnique(title);
          +								}
          +							}
          +						}
          +						$(place).append("<div>suggestions:</div>");
          +						var suggestionArea = $("<div class='suggestionArea' />").appendTo(place)[0];
          +						var id = "more_%0".format([Math.random()]);
          +						var more = $("<div class='moreButton' />").text("more...").appendTo(place).attr("id", id);
          +						followSuggestions.cache[id] = suggestions;
          +						var limit = suggestions.length;
          +						more.click(function(ev) {
          +							var suggestions = config.macros.followSuggestions.cache[id];
          +							var newSuggestions = followSuggestions.suggest(place, suggestions, limit);
          +							config.macros.followSuggestions.cache[id] = newSuggestions;
          +						});
          +						followSuggestions.suggest(place, suggestions, limit);
          +					
          +					}
          +				});
          +			
          +			}, user);
          +		});
          +	},
          +	randomize: function(a, b) {
          +		if(Math.random() < Math.random()) {
          +			return -1;
          +		} else {
          +			return 1;
          +		}
          +	},
          +	suggest: function(place, suggestions, limit) {
          +		var currentSpace = tiddlyspace.currentSpace.name;
          +		suggestions = suggestions.sort(followSuggestions.randomize);
          +		var suggestionsArea = $(".suggestionArea", place)[0];
          +		if(suggestions.length === 0) {
          +			$("<span />").text("no suggestions..").appendTo(suggestionsArea);
          +			return;
          +		}
          +		limit = limit < suggestions.length ? limit : suggestions.length;
          +		for(var j = 0; j < limit; j++) {
          +			var link = $("<span />").appendTo(suggestionsArea)[0];
          +			var title = suggestions[j];
          +			var newTiddler = '@%0 <<newTiddler title:"@%0" fields:"server.workspace:bags/%1_public" tag:follow label:"follow">>\n'.format([title, currentSpace]);
          +			wikify(newTiddler, link);
          +		}
          +		var newSuggestions = suggestions.slice(limit, suggestions.length);
          +		var more = $(".moreButton", place);
          +		if(newSuggestions.length == 0) {
          +			more.remove();
          +		}
          +		return newSuggestions;
          +	}
          +};
          +})(jQuery);
          +//}}}
          +
          +
          +
          iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKGmlDQ1BJQ0MgUHJvZmlsZQAAeAHVlmdUFMkWx6t7ciLNkNOQc84gOSfJUVSGAYY4wpAxIbK4AooiIgLKEpao4KoEWQMiigERUEBF3UEWAWVdDIiKyuuBd9w977z99r6826eqfn3r9q3quvXhDwDpIyMpKQEWACCRncrxdbajB4eE0nGTAAIUgAe6wJDBTEmy9fb2AP9oH8aRaMTua/Fy/WPYf58QjIxKYQIAeSPTEZEpzESEzyNsyEzipCI8h/BwRmoSwnA3wjQOskGEB3nMWmcujyPW+f1ajL+vPQAoPAB4MoPBYQFAoiF+ejqTheQhGSKsy46MZSMcibAVM4aBjKR6hDUTE7fxeBhh1Yi/5WH9jRmMiO85GQzWd17/F+RLZGGH2JSkBEbW2sv/sktMSEPOa814p06OYgf4IaMY0qSAA3AEHshDB/rABKmeCQgCTsA7NSoT+W8A7LclZXFiWTGpdFukUlGadFc2U1uTrq+rp8eb/r8x3h1d3+y7e2t3DxLjlf/fvmRtAMwakPr3/uULfw5A510ARPr/8ineAID/AADdTcw0Tvp6PjRvwAAi4Ac0IA5kgAJQBVrIaRoDC2CDnK4b8AL+IARsAUwQAxIBB2SAHWAPyAeF4BA4CipANagDTeA0OAu6wEVwFdwAd8AwGAOTgAtmwCuwCD6AFQiCcBAFokLikCykBGlA+pApZAU5Qh6QLxQChUMsiA2lQTugvVAhVAJVQDVQM/QLdAG6Ct2CRqBH0BQ0D72FPsMomAzTYGlYGdaBTWFb2B32hzfDLDgZzobz4INwOVwLn4I74avwHXgM5sKv4CUUQJFQIig5lBbKFGWP8kKFoqJRHNQuVAGqDFWLakP1oAZQ91Fc1ALqExqLpqLpaC20BdoFHYBmopPRu9BF6Ap0E7oT3Y++j55CL6K/YSgYKYwGxhzjignGsDAZmHxMGaYB04G5jhnDzGA+YLFYEawK1gTrgg3BxmG3Y4uwJ7Dt2F7sCHYau4TD4cRxGjhLnBeOgUvF5eOO407hruBGcTO4j3gSXhavj3fCh+LZ+Fx8Gb4Ffxk/ip/FrxAECEoEc4IXIZKQRSgm1BN6CPcIM4QVoiBRhWhJ9CfGEfcQy4ltxOvEJ8R3JBJJnmRG8iHFknJI5aQzpJukKdInshBZnWxPDiOnkQ+SG8m95EfkdxQKRZliQwmlpFIOUpop1yjPKB/5qHzafK58kXy7+Sr5OvlG+V7zE/iV+G35t/Bn85fxn+O/x78gQBBQFrAXYAjsEqgUuCAwIbAkSBXUE/QSTBQsEmwRvCU4J4QTUhZyFIoUyhOqE7omNE1FURWo9lQmdS+1nnqdOkPD0lRorrQ4WiHtNG2ItigsJGwoHCicKVwpfEmYK4ISURZxFUkQKRY5KzIu8llUWtRWNEp0v2ib6KjospikmI1YlFiBWLvYmNhncbq4o3i8+GHxLvGnEmgJdQkfiQyJkxLXJRYkaZIWkkzJAsmzko+lYCl1KV+p7VJ1UoNSS9Iy0s7SSdLHpa9JL8iIyNjIxMmUylyWmZelylrJxsqWyl6RfUkXptvSE+jl9H76opyUnItcmlyN3JDciryKfIB8rny7/FMFooKpQrRCqUKfwqKirKKn4g7FVsXHSgQlU6UYpWNKA0rLyirKQcr7lLuU51TEVFxVslVaVZ6oUlStVZNVa1UfqGHVTNXi1U6oDavD6kbqMeqV6vc0YA1jjViNExojmhhNM022Zq3mhBZZy1YrXatVa0pbRNtDO1e7S/u1jqJOqM5hnQGdb7pGugm69bqTekJ6bnq5ej16b/XV9Zn6lfoPDCgGTga7DboN3hhqGEYZnjR8aEQ18jTaZ9Rn9NXYxJhj3GY8b6JoEm5SZTJhSjP1Ni0yvWmGMbMz22120eyTubF5qvlZ8z8ttCziLVos5jaobIjaUL9h2lLekmFZY8m1oluFW/1kxbWWs2ZY11o/t1GwibRpsJm1VbONsz1l+9pO145j12G3bG9uv9O+1wHl4OxQ4DDkKOQY4Fjh+MxJ3onl1Oq06GzkvN251wXj4u5y2GXCVdqV6drsuuhm4rbTrd+d7O7nXuH+3EPdg+PR4wl7unke8XyyUWkje2OXF/By9Tri9dRbxTvZ+1cfrI+3T6XPC1893x2+A35Uv61+LX4f/O38i/0nA1QD0gL6AvkDwwKbA5eDHIJKgrjBOsE7g++ESITEhnSH4kIDQxtClzY5bjq6aSbMKCw/bHyzyubMzbe2SGxJ2HJpK/9WxtZz4ZjwoPCW8C8ML0YtYynCNaIqYpFpzzzGfBVpE1kaOR9lGVUSNRttGV0SPceyZB1hzcdYx5TFLMTax1bEvolziauOW473im+MX00ISmhPxCeGJ15gC7Hj2f3bZLZlbhtJ0kjKT+ImmycfTV7kuHMaUqCUzSndqTREDAymqab9kDaVbpVemf4xIzDjXKZgJjtzMEs9a3/WbLZT9s/b0duZ2/t2yO3Ys2Nqp+3Oml3QrohdfbsVduftnslxzmnaQ9wTv+durm5uSe77vUF7e/Kk83Lypn9w/qE1ny+fkz+xz2Jf9Y/oH2N/HNpvsP/4/m8FkQW3C3ULywq/FDGLbh/QO1B+YPVg9MGhYuPik4ewh9iHxg9bH24qESzJLpk+4nmks5ReWlD6/ujWo7fKDMuqjxGPpR3jlnuUdx9XPH7o+JeKmIqxSrvK9iqpqv1VyyciT4yetDnZVi1dXVj9+afYnx7WONd01irXltVh69LrXtQH1g/8bPpzc4NEQ2HD10Z2I7fJt6m/2aS5uUWqpbgVbk1rnT8Vdmr4tMPp7jattpp2kfbCM+BM2pmXv4T/Mn7W/WzfOdNzbeeVzld1UDsKOqHOrM7FrpgubndI98gFtwt9PRY9Hb9q/9p4Ue5i5SXhS8WXiZfzLq9eyb6y1JvUu3CVdXW6b2vf5LXgaw/6ffqHrrtfv3nD6ca1AduBKzctb168ZX7rwm3T2113jO90DhoNdtw1utsxZDzUec/kXvew2XDPyIaRy6PWo1fvO9y/8cD1wZ2xjWMj4wHjDyfCJrgPIx/OPUp49OZx+uOVyZwnmCcFTwWelj2Telb7m9pv7Vxj7qUph6nB537PJ6eZ069+T/n9y0zeC8qLslnZ2eY5/bmL807zwy83vZx5lfRqZSH/D8E/ql6rvj7/p82fg4vBizNvOG9W3xa9E3/X+N7wfd+S99KzD4kfVpYLPop/bPpk+mngc9Dn2ZWML7gv5V/VvvZ8c//2ZDVxdTWJwWGsaQEU0sPR0QC8bQSAEgIAFdGExN51DbkWAa3rXoR5SozXePYfvK4z12aMAajrBcDfBgAPZKzMAUAZYX6k8eSvP7KegcH3hnh4lhJtoL8GEFkCkSa9q6tvVwHAhQPwdWh1daV8dfVrGaJ13gNwZeO6duVFC5xCZDPVUE/Xry/9cA7P83f7FxpgvJtcDRvaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKMklEQVRoBdVZaXBb1RX+3tNq7ZI32bEdR3FIQjaaFhgS6AAFynSmU8oPOqWdtvRHmSlTlyVOyQBxVUhLwSwJ5UfaHykdIEynna50oCFkoDGQpKHB2ZyEeF9kS7YlW09P0tt67gsWsiQvskVmODMa6d137jnfd++559x7xWmahs+z8J9n8Ay7sdQEOJJnn9pxPc+bHjOZDL/6cfPOQ3P5eObJHVfbrLato7GB37a27k3MpVvoHVeKEJoGbTCavwtV+5bZYuKqKj32gYGwJKSlhh07fhku5DwYvM9R7q465/O5fOPjU0fOd0W+umfPnlQh3dnaFj0D2aB3t+3UQfurvPbKSrfBVmbR/UkkI+HoI/RwfyEAFe7ql1csr/Fdv3WT9a1Dx64hnTebm5uLIlHUDASDHO+y7diaPdK5oLOBplISjh4/JwopaXnuLOxua73X6Sx75s5v3Gg3Gg1QVQ1EQhwaHjtazEzMS2AGaA13mc1GvhBolswmZQuikhUp1QBJ5WHkVcSjUSk+GXs9xge+3fqDG5OMYFvbIxutRvP73/z6l21utyPDeTEkChJYKGjmWVY59IluDCWdkDQDDAYeFrMZJqMRiqIglZYgyTJTTWia+sf0ZOhpZ/jEgRu2bKpZGVjGsRfZUiyJPAIvPB+8hebzTyaziSs00tnORlJ2nI/7oHIm1FRVoNLnhcthB62PbDUICRFjE1EMjIxCSktquTaq3nldtTFHLdOnGBJ5BHY//dizbq/j3k3rA7aMxZwfLFy6El595KvKfQg01NGom3K08h8VRUX/cAi9g8No8AA3rwLMhnw91rJQEnmFLJoYfXRyMiELgh6uBa13Jzw6eAZ8bdOKBYFnhlh4NdbVYsPqJgxOGfDWeQI6y0aA5zncctPVZbU15ddcEahg2elSastBlEeAFRNNxRPdvSEhR1d/HE3Z0Ct6EKhfhvqa6kIq87b5PG6sWxXAQAw42je7+kJI5BFg5qJC6MWJaFzJnQVF4yjmy/VYr6/1z+6ZvaHFizn2WV63Sx+EjmFgfI76y0jcevPVZY0N/i+tbap8JddpQQKzzUK/6IJMuw8WOoWESyRh+eA0bP9sh/0f7bD9/TCs754APz5ZSB11NINWi2XOWWAdWVIwGHmDqql5YZSpxM899dg9GqclphKDf2tt3Zdks8Dx/kfZLNjtVh0AS5X+ynJyas4DZBiKwHLsLIwU544qD0xUjRUqZMLYJPhDH0JatwLSmuUz+jFgDTST57t7kUgDtnyzun5X95B2sWtoIpFO3D3DAD1kZsDMc2d4jn/Nba+f+s3zP/+Lo6zqNlXFk109w/pamEjyVKCMqPBS+sgRTkzB8t9O2Fw21G5aCU9dJezlLrhqy+Ff30jPFTCd7gY/OpHTExl7fdG8V3pDbFLAO4dPJEUp9bXt2389lauVIXDftl8c4Tmu2Wg0Ssvrq+/wuGwvUfjtjMaEsg+OdaodFyf1fOFxOXNt6OCMlPorVtaCpxnIFjbKnvoqlLntsJy4kP1K/20yGeGw2xDKgwa9EL751hFB0dSWlpZdJ/I6U8MMb80PBV9QFeVnfQPhxJVrGlzXXrPGunJFDS9JCl9V6ebMJhN4fkYX3aZhLAYbjThPe5rZxFHtBT9Fq5Ut7hyxUuUOjQl5CfW9I6eSopg8dP+DwRdzumQe89AwEoqsPPzhRxcTKhUeysNYRSMb+bgDvFRgmCjTcHFRj/mM1QI/TNZLAc6Tbq7QrCMuKjj+v3PK9LvpuBdS+XE/rcO+8wiwxmwSyWQafho9RkI+fxBTkSGm8qlQiGi0yGXSm0um36ufJIRsXVmRqSIr3KkzXToJFvfvts8e99l987YS2S/3PNP6E6qeezZf1QQrjWBoZAIXuoaw8fYfwlnxaSq1HD0DKy3QGlrAuWtg2t5oZz+EtAzx9munmzLfH57qhBbrhlc8j1AoqrBJpQr9ZwrnwxmlT35w4CzgID/Q8vhzrGlOAkzh+badmsViwlUbAjNIbLjtHriq6pkKOEFE2YFjcPicKA/UgqPVny2Tw2OY6BlBcst6KDUV2a8gywra/3MQlkgHOPnS9mVFIyUDjsvsZVRiJIopLjQypqXTspXs/+6nDwZ/xAxl6sAMqzkP9csqceJkl06ChROTk2/uw/rbvg939XIKoTKkNl8BHD+HdDwJh98LM9UBWa8DMVBRgbSqbgZ4For9He9ACPfCLEtobKyhMK1Hjb9cL1ySJFt7+4fVs+f6xsOjEw5KHv+iney+zq7wG3v37s1kggURWEb5nAkj8YWNK/U1wZ5P/fslrLv1e/D4G6E0+CF6nFA/+hjp3lGKARUsrah0YJG2boTi9yE+HiLQ7yIR6UEqmUR9XRU2b9mAumVV+kZPpT59/SNga2FkdFykFNyuSPLvZT71120PPF1wb7YgAgzsNImPTnVh7eqGDInTB/6AK7/yHXhrV0Jz2ZG8YRPbC1NYJaHZLBAmI+g/+TbE97oh0rnAX12O9ZtXYzkRZjWAXSoMhyI409mDgcEwjEYeyaQEUZLr6Rg6xnzPJQsmwIxcIqGRsz7dZmWFG4EVfpw5+ArW3nQ3fHVNersQi2DwTDvEcBcSQgI+rwsb1wUQoDCxWi9tZ8KRKE6f7UJf3wgtIsBO+wh/tYsIGNDTG8FCwDNnRRFgHZbVVuifKcrn4UiMRi1CrRpOH3xZXw9cOqqDttusWN1UBzo2UqUtY10xFU/g+PsdBHCYjpkK7bHMqKh0wEwzsVhZdE+nowzsE2j0EzCR4rYHsZHeDI40Vdxjx8/qn+lGtjW22y3weMrAMlspZNEEsp0zImzHarUo8Pns2a8+898FK/FiveZtZhZrqIh+JSUws3wVgWIJqiUlQNnksk9CaQmU4qa4yNkoKYHLPvxEtqQEihy8kqgvhECMndBK4u0zMDIvgZgw1UiXXGO9/aMF/6T4DDAVZXJeAq2tz0XTSmpLb9+o0N0zMu/mqijvJVCelwDzQdcZA2lVvK5vMDxxsXt4vAR+S2ZiQQSYt5aWp0JKXLhucGgsdOHiUP4FzxIh0c0HorGENDAwEaNjdv7Jfxb7CybA+j/U2hYRpfT1w6Hx/s4LA9Glpn0GeiJKoAfHo0PD0SgR2JdMyXfcv+3xBW+o5j0TFyIeDDa7PA7v23QeaFpzRZ2bXV510M2bLMtquc8x56DQURFx+utSiKcSiqqw0vEaddsfT+463NpK9+JFyqIIMB9tbS12E2c74PM5169b0+A8Sdvp2QikCbSQAa0qdAx7TVbU/dse3tVOs7ik+rdoAoxEMHiP1etseMPrdn5RherIJkC3B/TXUkqKCymRBlom0K/SPzT7H3p41/tLBc18T8uSCDAjweBdZq/jytcNBu5Gi9XE07cSjyeTBJrddL2iqOr+B7c/8cG0w1J/L5kAAxQM3mR022+gwy18dNO0W1O0Vx/Y/sTRUoMtZK8kBAoZvlxtc2aMywViKX7+D10+ywDx0s0HAAAAAElFTkSuQmCC
          +
          +
          +
          <!--{{{-->
          +<div class='toolbar'
          +	macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
          +</div>
          +<div class='heading'>
          +	<span class='spaceSiteIcon'
          +		macro='tiddlerOrigin label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          +	</span>
          +	<span class="titleBar">
          +		<div class='title' macro='view title text'></div>
          +		<span class="subtitle" macro='viewRevisions page:5'>
          +			last modified on
          +			<span macro="view modified date"></span>
          +		</span>
          +		<div macro="view title replyLink"></div>
          +	</span>
          +	<span class='followPlaceHolder' macro='followTiddlers'></span>
          +	<span class='modifierIcon'
          +		macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          +	</span>
          +	<div class='tagClear'></div>
          +</div>
          +<div class='content'>
          +	<div class='viewer' macro='view text wikified'></div>
          +</div>
          +<div class='tagInfo'>
          +	<div class='tidTags' macro='tags'></div>
          +	<div class='tagging' macro='tagging'></div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          I refer to TiddlyWiki in these questions, but they should be taken as applying to TiddlyWeb and TiddlySpace, too.
          +
          +
          +
          
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
          +width="30" height="30">
          +<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +	<g>
          +		<path d="M 333.00003 234 L 306 258.75003 L 301.5 270 L 312.75 265.50003 L 339.75 240.74998 Z M 337.5 229.50002 
          +		L 335.24988 231.75008 L 341.99997 238.50003 L 344.24997 236.24995 Z M 342 225.00003 L 339.74988 227.25009 
          +		L 346.5 234.00005 L 348.75 231.75003 Z M 301.5 273.9719 C 301.5 273.9719 309.59888 277.99927 317.70013 273.97183 
          +		C 325.80066 269.94437 341.99997 276.65686 341.99997 276.65686 L 341.99997 273.97195 
          +		C 341.99997 273.97195 325.80014 267.2594 317.70013 271.28687 C 309.6 275.31451 301.5 271.28683 301.5 271.28683 Z" 
          +		fill="#101010" class="glyph"/>
          +	</g>
          +</g>
          +</svg>
          +
          +
          +
          /***
          +|''Name''|LoadMissingExternalTiddler|
          +|''Version''|0.1.0|
          +|''Author''|Jon Robson|
          +***/
          +//{{{
          +var _loadMissing = Story.prototype.loadMissingTiddler;
          +Story.prototype.loadMissingTiddler = function(title,fields,callback) {
          +	var matches = title.match(/([^\*]*) \*\(@([^\)]*)\)\*/);
          +	if(matches && matches.length > 0) {
          +		var sTitle = matches[1];
          +		var space = matches[2];		config.extensions.tiddlyspace.displayServerTiddler(story.getTiddler(title),
          +			sTitle, "bags/%0_public".format(space));
          +	} else {
          +	_loadMissing.apply(this, arguments)
          +	}
          +};
          +//}}}
          +
          +
          +
          +
          /***
          +https://raw.github.com/tiddlyweb/chrjs/master/main.js
          +***/
          +//{{{
          +// TiddlyWeb adaptor
          +// v0.14.3
          +
          +/*jslint vars: true, unparam: true, nomen: true, white: true */
          +/*global jQuery */
          +
          +var tiddlyweb = (function($) {
          +
          +"use strict";
          +
          +var tw = {
          +	routes: {
          +		// host is the TiddlyWeb instance's URI (including server_prefix)
          +		// placeholders "_type" & "name" refer to the respective bag/recipe
          +		root     : "{host}/",
          +		bags     : "{host}/bags",
          +		bag      : "{host}/bags/{name}",
          +		recipes  : "{host}/recipes",
          +		recipe   : "{host}/recipes/{name}",
          +		tiddlers : "{host}/{_type}s/{name}/tiddlers",
          +		tiddler  : "{host}/{_type}s/{name}/tiddlers/{title}",
          +		revisions: "{host}/{_type}s/{name}/tiddlers/{title}/revisions",
          +		revision : "{host}/{_type}s/{name}/tiddlers/{title}/revisions/{revision}",
          +		search   : "{host}/search?q={query}"
          +	}
          +};
          +
          +var convertTimestamp, supplant;
          +
          +// host (optional) is the URI of the originating TiddlyWeb instance
          +tw.Resource = function(type, host) {
          +	if(arguments.length) { // initialization
          +		this._type = type;
          +		if(host !== false) {
          +			this.host = host !== undefined ? host.replace(/\/$/, "") : null;
          +		}
          +	}
          +};
          +$.extend(tw.Resource.prototype, {
          +	// retrieves resource from server
          +	// callback is passed resource, status, XHR (cf. jQuery.ajax success)
          +	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          +	// filters is an optional filter string (e.g. "select=tag:foo;limit=5")
          +	get: function(callback, errback, filters) {
          +		var uri = this.route();
          +		if(filters) {
          +			var separator = uri.indexOf("?") === -1 ? "?" : ";";
          +			uri += separator + filters;
          +		}
          +		var self = this;
          +		return $.ajax({
          +			url: uri,
          +			type: "GET",
          +			dataType: "json",
          +			success: function(data, status, xhr) {
          +				var resource = self.parse(data);
          +				resource.etag = xhr.getResponseHeader("Etag");
          +				callback(resource, status, xhr);
          +			},
          +			error: function(xhr, error, exc) {
          +				errback(xhr, error, exc, self);
          +			}
          +		});
          +	},
          +	// sends resource to server
          +	// callback is passed data, status, XHR (cf. jQuery.ajax success)
          +	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          +	put: function(callback, errback) {
          +		var self = this;
          +		var options = {
          +			url: this.route(),
          +			type: "PUT",
          +			contentType: "application/json",
          +			data: JSON.stringify(this.baseData()),
          +			success: function(data, status, xhr) {
          +				callback(self, status, xhr);
          +			},
          +			error: function(xhr, error, exc) {
          +				errback(xhr, error, exc, self);
          +			}
          +		};
          +		if(this.ajaxSetup) {
          +			this.ajaxSetup(options);
          +		}
          +		return $.ajax(options);
          +	},
          +	// deletes resource on server
          +	// callback is passed data, status, XHR (cf. jQuery.ajax success)
          +	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          +	"delete": function(callback, errback) {
          +		var self = this;
          +		var options = {
          +			url: this.route(),
          +			type: "DELETE",
          +			success: function(data, status, xhr) {
          +				callback(self, status, xhr);
          +			},
          +			error: function(xhr, error, exc) {
          +				errback(xhr, error, exc, self);
          +			}
          +		};
          +		if(this.ajaxSetup) {
          +			this.ajaxSetup(options);
          +		}
          +		return $.ajax(options);
          +	},
          +	// returns an object carrying only the essential information of the resource
          +	baseData: function() {
          +		var data = {},
          +			self = this;
          +		$.each(this.data, function(i, item) {
          +			var value = self[item];
          +			if(value !== undefined) {
          +				data[item] = value;
          +			}
          +		});
          +		return data;
          +	},
          +	// returns corresponding instance from a raw object (if applicable)
          +	parse: function(data) {
          +		return data;
          +	},
          +	// list of accepted keys in serialization
          +	data: [],
          +	// returns resource's URI
          +	route: function() {
          +		return supplant(tw.routes[this._type], this);
          +	}
          +});
          +
          +var Container = function(type, name, host) {
          +	if(arguments.length) { // initialization
          +		tw.Resource.apply(this, [type, host]);
          +		this.name = name;
          +		this.desc = "";
          +		this.policy = new tw.Policy({});
          +	}
          +};
          +Container.prototype = new tw.Resource();
          +$.extend(Container.prototype, {
          +	tiddlers: function() {
          +		return new tw.TiddlerCollection(this);
          +	},
          +	parse: function(data) {
          +		var type = tw._capitalize(this._type),
          +			container = new tw[type](this.name, this.host);
          +		data.policy = new tw.Policy(data.policy);
          +		return $.extend(container, data);
          +	},
          +	data: ["desc", "policy"]
          +});
          +
          +// attribs is an object whose members are merged into the instance (e.g. query)
          +tw.Collection = function(type, host, attribs) {
          +	if(arguments.length) { // initialization
          +		tw.Resource.apply(this, [type, host]);
          +		$.extend(this, attribs);
          +	}
          +};
          +tw.Collection.prototype = new tw.Resource();
          +
          +tw.TiddlerCollection = function(container, tiddler) {
          +	if(arguments.length) { // initialization
          +		tw.Collection.apply(this, [tiddler ? "revisions" : "tiddlers"]);
          +		this.container = container || null;
          +		this.tiddler = tiddler || null;
          +	}
          +};
          +tw.TiddlerCollection.prototype = new tw.Collection();
          +$.extend(tw.TiddlerCollection.prototype, {
          +	parse: function(data) {
          +		var container = this.container;
          +		return $.map(data, function(item, i) {
          +			var tiddler = new tw.Tiddler(item.title, container),
          +				bag = item.bag;
          +			tiddler = tw.Tiddler.prototype.parse.apply(tiddler, [item]);
          +			if(!tiddler.bag && bag) { // XXX: bag always present!?
          +				tiddler.bag = new tw.Bag(bag, container.host);
          +			}
          +			if(!tiddler.recipe && item.recipe) {
          +				tiddler.recipe = new tw.Recipe(item.recipe, container.host);
          +			}
          +			delete item.recipe;
          +			return $.extend(tiddler, item);
          +		});
          +	},
          +	route: function() {
          +		var params = this.container;
          +		if(this.tiddler) {
          +			var container = this.tiddler.bag || this.tiddler.recipe;
          +			params = {
          +				_type: container._type,
          +				host: container.host,
          +				name: container.name,
          +				title: this.tiddler.title
          +			};
          +		}
          +		return supplant(tw.routes[this._type], params);
          +	}
          +});
          +
          +tw.Search = function(query, host) {
          +	tw.Collection.apply(this, ["search", host]);
          +	this.query = query;
          +};
          +tw.Search.prototype = new tw.Collection();
          +$.extend(tw.Search.prototype, {
          +	parse: function(data) {
          +		this.container = { // XXX: hacky
          +			_type: "bag",
          +			host: this.host
          +		};
          +		var tiddlers = tw.TiddlerCollection.prototype.parse.apply(this, arguments);
          +		delete this.container;
          +		return tiddlers;
          +	}
          +});
          +
          +// title is the name of the tiddler
          +// container (optional) is an instance of either Bag or Recipe
          +// optionally accepts a single object representing tiddler attributes
          +tw.Tiddler = function(title, container) {
          +	tw.Resource.apply(this, ["tiddler", false]);
          +	this.title = title;
          +	this.bag = container && container._type === "bag" ? container : null;
          +	this.recipe = container && container._type === "recipe" ? container : null;
          +	var self = this;
          +	$.each(this.data, function(i, item) {
          +		self[item] = undefined; // exposes list of standard attributes for inspectability
          +	});
          +	if(title && title.title) { // title is an object of tiddler attributes
          +		$.extend(this, title);
          +	}
          +};
          +tw.Tiddler.prototype = new tw.Resource();
          +$.extend(tw.Tiddler.prototype, {
          +	revisions: function() {
          +		return new tw.TiddlerCollection(this.bag || this.recipe, this);
          +	},
          +	route: function() {
          +		var container = this.bag || this.recipe;
          +		var params = $.extend({}, this, {
          +			host: container ? container.host : null,
          +			_type: this.bag ? "bag" : (this.recipe ? "recipe" : null),
          +			name: container ? container.name : null
          +		});
          +		return supplant(tw.routes[this._type], params);
          +	},
          +	parse: function(data) {
          +		var tiddler = new tw.Tiddler(this.title),
          +			container = this.bag || this.recipe;
          +		if(data.bag) {
          +			tiddler.bag = new tw.Bag(data.bag, container.host);
          +			delete data.bag;
          +		}
          +		delete data.recipe;
          +		tiddler.created = data.created ? convertTimestamp(data.created) : new Date();
          +		delete data.created;
          +		tiddler.modified = data.modified ? convertTimestamp(data.modified) : new Date();
          +		delete data.modified;
          +		if(this.recipe) {
          +			tiddler.recipe = this.recipe;
          +		}
          +		return $.extend(tiddler, data);
          +	},
          +	data: ["created", "creator", "modifier", "modified", "tags", "type", "text",
          +			"fields"],
          +	ajaxSetup: function(options) {
          +		var self = this;
          +		if(this.etag && (options.type === "PUT" || options.type === "DELETE")) {
          +			options.beforeSend = function(xhr) {
          +				xhr.setRequestHeader("If-Match", self.etag);
          +			};
          +		}
          +		if(options.type === "PUT") {
          +			var callback = options.success;
          +			options.success = function(data, status, xhr) {
          +				var loc = xhr.getResponseHeader("Location"),
          +					etag = xhr.getResponseHeader("Etag");
          +				if(loc && etag) {
          +					self.etag = etag;
          +					if(!self.bag) {
          +						var bag = loc.split("/bags/").pop().split("/")[0];
          +						self.bag = new tw.Bag(bag, self.recipe.host);
          +					}
          +					callback(self, status, xhr);
          +				} else { // IE
          +					self.get(callback, options.error);
          +				}
          +			};
          +		}
          +	}
          +});
          +
          +tw.Revision = function(id, tiddler) {
          +	var container = tiddler.bag || tiddler.recipe;
          +	tw.Tiddler.apply(this, [tiddler.title, container]);
          +	this._type = "revision";
          +	this.revision = id;
          +};
          +tw.Revision.prototype = new tw.Tiddler();
          +$.extend(tw.Revision.prototype, {
          +	revisions: false,
          +	data: false,
          +	put: false,
          +	"delete": false
          +});
          +
          +tw.Bag = function(name, host) {
          +	Container.apply(this, ["bag", name, host]);
          +};
          +tw.Bag.prototype = new Container();
          +
          +tw.Recipe = function(name, host) {
          +	Container.apply(this, ["recipe", name, host]);
          +	this.recipe = [];
          +};
          +tw.Recipe.prototype = new Container();
          +$.extend(tw.Recipe.prototype, {
          +	data: ["recipe"].concat(Container.prototype.data)
          +});
          +
          +tw.Policy = function(constraints) { // TODO: validation?
          +	var self = this;
          +	$.each(this.constraints, function(i, item) {
          +		self[item] = constraints[item];
          +	});
          +};
          +tw.Policy.prototype.constraints = ["read", "write", "create", "delete",
          +	"manage", "accept", "owner"];
          +
          +/*
          + * utilities
          + */
          +
          +tw._capitalize = function(str) {
          +	return str.charAt(0).toUpperCase() + str.slice(1);
          +};
          +
          +// convert YYYYMMDDhhmmss timestamp to Date instance
          +convertTimestamp = function(t) {
          +	if (t.match(/^\d{12,17}$/)) {
          +		return new Date(Date.UTC(
          +			parseInt(t.substr(0, 4), 10),
          +			parseInt(t.substr(4, 2), 10) - 1,
          +			parseInt(t.substr(6, 2), 10),
          +			parseInt(t.substr(8, 2), 10),
          +			parseInt(t.substr(10, 2), 10),
          +			parseInt(t.substr(12, 2) || "0", 10),
          +			parseInt(t.substr(14, 3) || "0", 10)
          +		));
          +	} else {
          +		return new Date(Date.parse(t));
          +	}
          +};
          +
          +// adapted from Crockford (http://javascript.crockford.com/remedial.html)
          +supplant = function(str, obj) {
          +	return str.replace(/{([^{}]*)}/g, function (a, b) {
          +		var r = obj[b];
          +		r = typeof r === "string" || typeof r === "number" ? r : a;
          +		return $.inArray(b, ["host", "query"]) !== -1 ? r : encodeURIComponent(r); // XXX: special-casing
          +	});
          +};
          +
          +return tw;
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          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AP8zZgAAAGYA//8zAADMMwD/mTMAAGYzAP8zMwAAADMAzP8AAADMAADMmQAAAGYAAMwzAAAAAADuzAAA3QAAALvMAACqAAAAiMwAAHcAAABVmQAARAAAACKZAAARAADuAJkA3QAAALsAmQCqAAAAiACZAHcAAABVAJkARAAAACIAZgARAADuAABm3QAAALsAAGaqAAAAiAAAZncAAABVAABmRAAAACIAAGYRAAAA7u7uM93d3QC7u7szqqqqAIiIiDN3d3cAVVVVM0RERAAiIiIzERERAAAAADMBAQEBAQEBAQEBpXl5eXl5eXl5eXmlAQEBAQEBAQEBAQEBAQEBAQEBgHl5eXl5eXl5eXl5eXl5gAEBAQEBAQEBAQEBAQEB/Xp5eXlVT04qKioqTk9VeXl5ev0BAQEBAQEBAQEBAaV5eXlPKioqKioqKioqKioqT3l5eaUBAQEBAQEBAQGAeXlVTioqKioqKioqKioqKioqTlV5eYABAQEBAQEBgHl5VSoqKioqKioqKioqKioqKioqKlV5eYABAQEBAaV5eVUqKioqKioqKioqKioqKioqKioqKlV5eaUBAQEBeXlVKioqKioqKioqKioqKioqKioqKioqKlV5eQEBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBeXlPKioqKioqKjEyMjIyMjIyMjEqKioqKioqT3l5AXp5eSoqKioqKioxMjIxBwcHBzEyMjEqKioqKioqeXl6eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl5eU8qKioqKioyMgcHBwcHBwcHBwcyMioqKioqKk95eXl5TioqKioqMTIxBwcHBwcHBwcHBzEyMSoqKioqTnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eSoqKioqKjEyBwcHBwcHBwcHBwcHMjEqKioqKip5eXl5KioqKioqMTIHBwcHBwcHBwcHBwcyMSoqKioqKnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eU4qKioqKjEyMQcHBwcHBwcHBwcxMjEqKioqKk55eXl5TyoqKioqKjIyBwcHBwcHBwcHBzIyKioqKioqT3l5eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl6eXkqKioqKioqMTIyMQcHBwcxMjIxKioqKioqKnl5egF5eU8qKioqKioqMTIyMjIyMjIyMSoqKioqKipPeXkBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBAXl5VSoqKioqKioqKioqKioqKioqKioqKipVeXkBAQEB+nl5VSoqKioqKioqKioqKioqKioqKioqVXl5+gEBAQEBenl5VSoqKioqKioqKioqKioqKioqKlV5eXoBAQEBAQEBeXl5VU4qKioqKioqKioqKioqKk5VeXl5AQEBAQEBAQEBenl5eU8qKioqKioqKioqKipPeXl5egEBAQEBAQEBAQEB+nl5eXlVT04qKioqTk9VeXl5efoBAQEBAQEBAQEBAQEBAXl5eXl5eXl5eXl5eXl5eXkBAQEBAQEBAQEBAQEBAQEBAQF6eXl5eXl5eXl5eXoBAQEBAQEBAQEB/+AH//+AAf/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAHAAAADwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB///gB/8oAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAwAAAAMAAAADAAAABG1bSA61m3JXuqB4mbuhd8m9o3jqvaF4+b2hePm9o3jqu6F3ybqgeJm1m3JXbVtIDgAAAAQAAAADAAAAAwAAAAMAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAUAAAAGAAAACI98Wye0nXWavKF4876kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev+8oXjztJ11mo98WycAAAAIAAAABgAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAHAAAAChwcHBKulnGJvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+K6WcYkcHBwSAAAACgAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAADAAAABwAAAAtuYkUst552z76kev++pHr+1LuS//Latf/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/8tq1/9S7kv++pHr+vqR6/7eeds9uYkUsAAAACwAAAAcAAAADAAAAAQAAAAAAAAABAAAAAgAAAAQAAAAIi3hbNbqgd+a+pHr/xayD/+3Vr//85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr//FrIP/vqR6/7qgd+aJdVg0AAAACAAAAAQAAAACAAAAAQAAAAEAAAACAAAABIl8WSW8oXjlvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7yheOWJfFklAAAABAAAAAIAAAABAAAAAAAAAAFfXz8Iu6F4zL6kev/Msor/+uK+//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//rivv/Msor/vqR6/7uheMxfXz8IAAAAAQAAAAAAAAAAAAAAAbqid4K+pHr/xayD//ngvP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//fgvP/FrIP/vqR6/7qid4IAAAABAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAALuheJa+pHr/1LuS//zlwP/85cD//OXA//zlwP/85cD//OXA//riwP/Pq8f/r4HM/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HN/6+BzP/Pq8f/+uLA//zlwP/85cD//OXA//zlwP/85cD//OXA/9S5kv++pHr/u6F4lgAAAACii3MLvKF4876kev/y2rX//OXA//zlwP/85cD//OXA//zlwP/64sD/w5vJ/6+Bzf+vg83/w5vc/9W06v/dwPD/3cDw/9W06v/Dm9z/r4PN/6+Bzf/Dm8n/+uLA//zlwP/85cD//OXA//zlwP/85cD/8tq1/76kev+8oXjzootzC72feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVvaF4mL6kev/fxZ7//OXA//zlwP/85cD//OXA//zlwP/v08L/r4HM/6+Dzf/Wtev/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/r4PN/6+BzP/v08L//OXA//zlwP/85cD//OXA//zlwP/fxZ7/vqR6/72heJi8oXfIvqR6/+zUrv/85cD//OXA//zlwP/85cD//OXA/9Crx/+vgc3/w5vc/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Dm9z/r4HN/9Crx//85cD//OXA//zlwP/85cD//OXA/+zUrv++pHr/vKF3yL2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvaF4+b6kev/64r7//OXA//zlwP/85cD//OXA//zlwP+zhsz/r4HN/93A8P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/3cDw/6+Bzf+zhsz//OXA//zlwP/85cD//OXA//zlwP/64r7/vqR6/72hePm9oXj5vqR6//rivv/85cD//OXA//zlwP/85cD//OXA/7OGzP+vgc3/3cDw/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//dwPD/r4HN/7OGzP/85cD//OXA//zlwP/85cD//OXA//rivv++pHr/vaF4+b2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvKF3yL6kev/s1K7//OXA//zlwP/85cD//OXA//zlwP/Qq8f/r4HN/8Ob3P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/w5vc/6+Bzf/Qq8f//OXA//zlwP/85cD//OXA//zlwP/s1K7/vqR6/7yhd8i9oXiYvqR6/9/Fnv/85cD//OXA//zlwP/85cD//OXA/+/Twv+vgcz/r4PN/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9a16/+vg83/r4HM/+/Twv/85cD//OXA//zlwP/85cD//OXA/9/Fnv++pHr/vaF4mL2feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVootzC7yhePO+pHr/8tq1//zlwP/85cD//OXA//zlwP/85cD/+uLA/8Obyf+vgc3/r4PN/8Ob3P/VtOr/3cDw/93A8P/VtOr/w5vc/6+Dzf+vgc3/w5vJ//riwP/85cD//OXA//zlwP/85cD//OXA//Latf++pHr/vKF486KLcwsAAAAAu6N3l76kev/Uu5L//OXA//zlwP/85cD//OXA//zlwP/85cD/+uLA/8+rx/+vgcz/r4HN/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HM/8+rx//64sD//OXA//zlwP/85cD//OXA//zlwP/85cD/1LmS/76kev+7oXiWAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAAAAAAAC6oneCvqR6/8Wsg//54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/34Lz/xayD/76kev+6oneCAAAAAAAAAAAAAAAAAAAAAH9/VQa8oHjLvqR6/8yyiv/64r7//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/+uK+/8yyiv++pHr/vKB4y39/VQYAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh67o3nkvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7ujeeSyoW4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALqbdim7o3nkvqR6/8Wsg//t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/t1a//xayD/76kev+7o3nkupt2KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh68oHjLvqR6/76kev7Uu5L/8tq1//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/y2rX/1LmS/76kev6+pHr/vKB4y7Khbh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/VQa6oneCvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+Lqid4J/f1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3l28gu6F4lryhePO+pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vKF487uheJa3l28gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAootzC72feFW9oXiYvKF3yL2jeOq9oXj5vaF4+b2jeOq8oXfIvaF4mL2feFWii3MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gB///gAH//gAAf/wAAD/4AAAf8AAAD+AAAAfAAAADwAAAA4AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af/
          +
          +
          +
          /***
          +|''Name''|BinaryUploadPlugin|
          +|''Version''|0.3.16|
          +|''Author''|Ben Gillies and Jon Robson|
          +|''Type''|plugin|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/BinaryUploadPlugin.js|
          +|''Description''|Upload a binary file to TiddlyWeb|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlySpaceConfig TiddlyWebConfig|
          +!Usage
          +{{{
          +<<binaryUpload bag:<name> edit:tags edit:title tags:<default tags> title:<title> >>
          +}}}
          +* {{{bag:<name>}}}: optional; if left out, the file will be saved to the current workspace
          +* {{{edit:tags}}}: specifies that you want to tag the file being uploaded
          +* {{{edit:title}}}: specifies that you want to set the title to something other than the filename
          +* {{{tags:<default tags>}}}: specifies a default set of tags to apply to the file (requires {{{edit:tags}}} to be set)
          +* {{{title:<title>}}}: predefines the title of the binary tiddler
          +!Requires
          +TiddlyWeb
          +tiddlywebplugins.form
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +
          +var macro = config.macros.binaryUpload = {
          +	locale: {
          +		titleDefaultValue: "Please enter a title...",
          +		tagsDefaultValue: "Please enter some tags...",
          +		titlePrefix: "title: ",
          +		tagsPrefix: "tags: ",
          +		loadSuccess: 'Tiddler %0 successfully uploaded',
          +		loadError: "An error occurred when uploading the tiddler %0",
          +		uploadInProgress: "Please wait while the file is uploaded...",
          +		membersOnly: "Only members can upload."
          +	},
          +	renderInputFields: function(container, options) {
          +		var locale = macro.locale;
          +		var editableFields = options.edit;
          +		var includeFields = {
          +			tags:  editableFields && editableFields.contains("tags") ? true : false,
          +			title: editableFields && editableFields.contains("title") ? true : false
          +		};
          +		var fields = ["title", "tags"];
          +		for(var i = 0; i < fields.length; i++) {
          +			var fieldName = fields[i];
          +			var userDefault = options[fieldName];
          +			var defaultValue = userDefault ? userDefault[0] : false;
          +			if(includeFields[fieldName] || defaultValue) {
          +				var localeDefault = locale["%0DefaultValue".format(fieldName)];
          +				var className = defaultValue ? "userInput" : "userInput notEdited";
          +				var inputEl;
          +				var val = defaultValue || localeDefault || "";
          +				var iContainer = $("<div />").addClass("binaryUpload%0".format(fieldName)).
          +					appendTo(container);
          +				if(defaultValue && !includeFields[fieldName]) {
          +					var label = locale["%0Prefix".format(fieldName)];
          +					$("<span />").text(label).appendTo(iContainer);
          +					$("<span />").addClass("disabledInput").text(val).appendTo(iContainer);
          +					inputEl = $("<input />").attr("type", "hidden");
          +				} else {
          +					inputEl = $("<input />").attr("type", "text");
          +				}
          +				inputEl.attr("name", fieldName).
          +					addClass("%0Edit".format(fieldName)).
          +					val(val).addClass(className).appendTo(iContainer);
          +			}
          +		}
          +	},
          +	getTiddlerName: function(fileName) {
          +		var fStart = fileName.lastIndexOf("\\");
          +		var fStart2 = fileName.lastIndexOf("/");
          +		fStart = fStart < fStart2 ? fStart2 : fStart;
          +		fileName = fileName.substr(fStart+1);
          +		return fileName;
          +	},
          +	errorHandler: function(fileName) {
          +		displayMessage("upload of file %0 failed".format(fileName));
          +	},
          +	uploadFile: function(place, baseURL, workspace, options) {
          +		var pleaseWait = $(".uploadProgress", place);
          +		var iframeName = options.target;
          +		var form = $("form", place);
          +		var existingVal = $("input[name=title]", form).val();
          +		var fileName = existingVal || $('input:file', form).val();
          +		if(!fileName) {
          +			return false; // the user hasn't selected a file yet
          +		}
          +		fileName = macro.getTiddlerName(fileName);
          +		$("input[name=title]", place).val(fileName);
          +		// we need to go somewhere afterwards to ensure the onload event triggers
          +		var redirectTo = "/%0/tiddlers.txt?select=title:%1".
          +			format(workspace, fileName);
          +		var token = tiddlyspace ? tiddlyspace.getCSRFToken() : "";
          +		var action = "%0?csrf_token=%1&redirect=%2"
          +			.format(baseURL, token, redirectTo);
          +		form[0].action = action; // dont use jquery to work with ie
          +		form[0].target = iframeName;
          +		// do not refactor following line... won't work in IE6 otherwise
          +		$(place).append($('<iframe name="' + iframeName + '" id="' + iframeName + '"/>').css('display','none'));
          +		macro.iFrameLoader(iframeName, function() {
          +			var content = document.getElementById(iframeName).contentWindow.document.documentElement;
          +			if($(content).text().indexOf(fileName) > -1) {
          +				options.callback(place, fileName, workspace, baseURL);
          +			} else {
          +				macro.errorHandler(fileName);
          +			}
          +			form.show(1000);
          +			pleaseWait.hide(1000);
          +		});
          +		form.hide(1000);
          +		pleaseWait.show(1000);
          +		return true;
          +	},
          +	createUploadForm: function(place, options) {
          +		var locale = macro.locale;
          +		if(readOnly) {
          +			$('<div class="annotation" />').text(locale.membersOnly).
          +				appendTo(place);
          +			return;
          +		}
          +		var bag = options.bag;
          +		options.callback = options.callback ? options.callback :
          +			function(place, fileName, workspace, baseurl) {
          +				macro.displayFile(place, fileName, workspace);
          +				displayMessage(locale.loadSuccess.format(fileName));
          +				$("input[type=text]", place).val("");
          +			};
          +		var defaults = config.defaultCustomFields;
          +		place = $("<div />").addClass("container").appendTo(place)[0];
          +		var workspace = bag ? "bags/%0".format(bag) : config.defaultCustomFields["server.workspace"];
          +		var baseURL = defaults["server.host"];
          +		baseURL += (baseURL[baseURL.length - 1] !== "/") ? "/" : "";
          +		baseURL = "%0%1/tiddlers".format(baseURL, workspace);
          +		//create the upload form, complete with invisible iframe
          +		var iframeName = "binaryUploadiframe%0".format(Math.random());
          +		// do not refactor following line of code to work in IE6.
          +		var form = $('<form action="%0" method="POST" enctype="multipart/form-data" />'.
          +					format(baseURL)).addClass("binaryUploadForm").
          +			appendTo(place)[0];
          +		macro.renderInputFields(form, options);
          +		$(form).
          +			append('<div class="binaryUploadFile"><input type="file" name="file" /></div>').
          +			append('<div class="binaryUploadSubmit"><input type="submit" value="Upload" disabled /></div>').
          +			submit(function(ev) {
          +				this.target = iframeName;
          +				options.target = iframeName;
          +				macro.uploadFile(place, baseURL, workspace, options);
          +			})
          +			.find('[type="file"]').bind('change', function() {
          +				$(form).find('[type="submit"]').prop('disabled', false);
          +			}).end();
          +		$('<div />').addClass("uploadProgress").text(locale.uploadInProgress).hide().appendTo(place);
          +		$("input[name=file]", place).change(function(ev) {
          +			var target = $(ev.target);
          +			var fileName = target.val();
          +			var title = $("input[type=text][name=title]", place);
          +			if(!title.val()) {
          +				title.val(fileName);
          +			}
          +		});
          +	},
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		params = paramString.parseParams(null, null, true);
          +		macro.createUploadForm(place, params[0]);
          +	},
          +	iFrameLoader: function(iframeName, callback) {
          +		var iframe = document.getElementById(iframeName); //jQuery doesn't seem to want to do this!?
          +		var locale = macro.locale;
          +		$(".userInput").addClass("notEdited"); // reset editing
          +		var finishedLoading = function() {
          +			callback();
          +		};
          +		var iFrameLoadHandler = function() {
          +			finishedLoading.apply();
          +			return;
          +		};
          +
          +		iframe.onload = iFrameLoadHandler;
          +		//IE
          +		completeReadyStateChanges = 0;
          +		iframe.onreadystatechange = function() {
          +			if (++(completeReadyStateChanges) == 3) {
          +				iFrameLoadHandler();
          +			}
          +		};
          +	},
          +	displayFile: function(place, title, workspace) {
          +		var adaptor = store.getTiddlers()[0].getAdaptor();
          +		var context = {
          +			workspace: workspace,
          +			host: config.defaultCustomFields['server.host']
          +		};
          +		adaptor.getTiddler(title, context, null, function(context) {
          +			if(context.status) {
          +				store.addTiddler(context.tiddler);
          +				story.displayTiddler(place, title);
          +				var image = config.macros.image;
          +				if(image && image.refreshImage) {
          +					image.refreshImage("/%0/tiddlers/%1".format(workspace, title));
          +					image.refreshImage(title);
          +					image.refreshImage("/%0".format(title));
          +					image.refreshImage("%0/%1/tiddlers/%2".format(config.extensions.tiddlyweb.host, workspace, title));
          +				}
          +			} else {
          +				displayMessage(macro.locale.loadError.format(title));
          +			}
          +		});
          +	}
          +};
          +
          +if(tiddlyspace) {
          +	config.macros.binaryUploadPublic = {
          +		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +			var options = paramString.parseParams(null, null, true)[0];
          +			var bag = tiddlyspace.getCurrentBag("public");
          +			options.bag = bag;
          +			macro.createUploadForm(place, options);
          +		}
          +	};
          +	config.messages.privacySetting = config.options.chkPrivateMode ?
          +		"private" : "public";
          +	config.macros.binaryUpload.defaultWorkspace = tiddlyspace.
          +		getCurrentWorkspace(config.messages.privacySetting);
          +}
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          <!DOCTYPE html>
          +<html lang="en">
          +<head>
          +	<meta charset="utf-8"/>
          +	<title>TiddlySpace Apps</title>
          +	<link rel="stylesheet" href="/bags/common/tiddlers/reset.css" />
          +	<link rel="stylesheet" href="/bags/common/tiddlers/appspage.css" />
          +	<!--[if lt IE 7 ]>
          +	<link rel="stylesheet" href="/bags/common/tiddlers/appspageie6.css" />
          +	<![endif]-->
          +</head>
          +<body>
          +	
          +	<div id="wrapper">
          +		<div id="TSbar"></div>
          +		<div id="main-content">
          +			<div id="space-details">
          +				<a href="/_space"><img class="siteicon"></a>
          +				<div id="title-subtitle">
          +					<h1 class="spaceaddress">
          +						<span class="spaceName"></span><span class="hostName"></span>
          +					</h1>
          +					<p class="tagline"><span class="subTitle"></span><a class="managespaces" href="/_space">manage space</a></p>
          +				</div>
          +			</div>
          +			<div id="holder">
          +				<div id="appswitcher-wrapper">
          +					<div id="appswitcher">
          +						<h2>Your Apps</h2>
          +						<ul id="app-list">
          +							<li class="htmlserialisation">
          +								<a href="/tiddlers.html?select=tag:!excludeLists;sort=-modified">
          +									<img src="/bags/common/tiddlers/browse_read_blue.png" alt="Icon for the HTML Serialisation" class="app-img" />
          +									BROWSE
          +								</a>
          +							</li>
          +							<li class="tiddlywiki">
          +								<a href="/tiddlers.wiki">
          +									<img src="/bags/common/tiddlers/tiddlywiki2_blue.png" alt="Icon for TiddlyWiki" class="app-img" />
          +									TIDDLYWIKI
          +								</a>
          +							</li>
          +						</ul>
          +						<div id="addapp">
          +							<button class="inactive">Add More!</button>
          +						</div>
          +					</div>
          +					<div id="app-desc">
          +						<ul>
          +							<li class="htmlserialisationdesc"><p>an easy to understand HTML representation of your content.</p></li>
          +							<li class="tiddlywikidesc"><p>use TiddlyWiki to create, edit and organise your content.</p></li>
          +						</ul>
          +					</div>
          +					<div style="clear: both;"></div>
          +				</div>
          +			</div>
          +		</div>
          +		<div id="footer"><!-- ie doesn't support footer tag -->
          +			<div id="footer-content">
          +				<div class="links">
          +					<a href="http://blog.tiddlyspace.com">blog</a>
          +					<a href="http://featured.tiddlyspace.com">featured</a>
          +					<a href="http://docs.tiddlyspace.com">documentation</a>
          +					<a href="https://github.com/TiddlySpace/tiddlyspace">source</a>
          +				</div>
          +				<p>TiddlySpace 2011, created by <a href="http://osmosoft.com">Osmosoft</a></p>
          +			</div>
          +		</div>
          +	</div>
          +	
          +	<script type="text/javascript" src="/bags/common/tiddlers/backstage.js"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/jquery.js"></script>
          +	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/chrjs-store.js"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/jquery-json.js"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/appspage.js"></script>
          +</body>
          +</html>
          +
          +
          +
          <!--{{{-->
          +<div class='header'>
          +	<div id='sidebarSearch'>
          +		<span macro='search'></span>
          +	</div>
          +	<div class='headerForeground'>
          +		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
          +		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
          +	</div>
          +	<div class='clearFloat'></div>
          +</div>
          +
          +<div id='menuBar'>
          +	<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
          +	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
          +</div>
          +<div id='displayArea'>
          +	<div id='messageArea'></div>
          +	<div id='tiddlerDisplay'></div>
          +	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceInitialization|
          +|''Version''|0.7.3|
          +|''Description''|Initializes new TiddlySpaces the first time they are created|
          +|''Status''|@@beta@@|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/blob/master/src/plugins/TiddlySpaceInit.js|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlySpaceConfig RandomColorPalettePlugin chrjs ImageMacroPlugin|
          +!TODO
          +* robust error notification and recovery
          +!MarkupPreHead
          +<!--{{{-->
          +<link href="/bags/%0_public/tiddlers.atom" rel="alternate"
          +	type="application/atom+xml" title="%0's public feed" />
          +<link rel="canonical" href="%1/" />
          +<!--}}}-->
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var versionField = "tiddlyspaceinit_version";
          +var markupPreHead = store.getTiddlerText(tiddler.title + "##MarkupPreHead", "");
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var currentSpace = tiddlyspace.currentSpace;
          +var tweb = config.extensions.tiddlyweb;
          +
          +var plugin = config.extensions.TiddlySpaceInit = {
          +	version: "0.6",
          +	SiteTitle: "%0",
          +	SiteSubtitle: "a TiddlySpace",
          +	flagTitle: "%0SetupFlag",
          +	flagWarning: "Please do not modify this tiddler; it was created " +
          +		"automatically upon space creation.",
          +
          +	dispatch: function(ev) {
          +		var title = plugin.flagTitle.format([currentSpace.name]);
          +		config.annotations[title] = plugin.flagWarning;
          +		if(currentSpace.type != "private") {
          +			return;
          +		}
          +		var tiddlers = [];
          +		var tid = store.getTiddler(title);
          +		if(tid) {
          +			curVersion = parseFloat(tid.fields[versionField]);
          +			reqVersion = parseFloat(plugin.version);
          +			if(curVersion < reqVersion) {
          +				plugin.update(curVersion, tid);
          +				tid.fields[versionField] = plugin.version;
          +				tid.incChangeCount();
          +				tid = store.saveTiddler(tid);
          +				tiddlers.push(tid);
          +			}
          +		} else { // first run
          +			tid = new Tiddler(title);
          +			tid.tags = ["excludeLists", "excludeSearch", "excludePublisher"];
          +			tid.fields = $.extend({}, config.defaultCustomFields);
          +			tid.fields[versionField] = plugin.version;
          +			tid.text = "@@%0@@".format([plugin.flagWarning]);
          +			tid = store.saveTiddler(tid);
          +			tiddlers = tiddlers.concat(plugin.firstRun(), tid);
          +		}
          +		autoSaveChanges(null, tiddlers);
          +	},
          +	update: function(curVersion, flagTiddler) {
          +		if(curVersion < 0.2) {
          +			this.createAvatar();
          +		}
          +		if(curVersion < 0.3) {
          +			flagTiddler.tags.pushUnique("excludePublisher"); // XXX: never persisted
          +		}
          +		if(curVersion < 0.5) { // v0.4 was faulty
          +			this.setupMarkupPreHead();
          +		}
          +		if(curVersion < 0.6) {
          +			this.purgeSystemSettings();
          +		}
          +	},
          +	pubTid: {
          +		tags: ["excludeLists", "excludeSearch"],
          +		fields: $.extend({}, config.defaultCustomFields, {
          +			"server.workspace": tiddlyspace.getCurrentWorkspace("public")
          +		})
          +	},
          +	makeTiddlerIfNot: function(tiddler) {
          +		if (!store.tiddlerExists(tiddler.title)) {
          +			$.extend(true, tiddler, plugin.pubTid);
          +			return [store.saveTiddler(tiddler)];
          +		} else {
          +			return [];
          +		}
          +	},
          +	firstRun: function() {
          +		var tiddlers = [];
          +		// generate Site*itle
          +		$.each(["SiteTitle", "SiteSubtitle"], function(i, item) {
          +			var tid = new Tiddler(item);
          +			tid.text = plugin[item].format([currentSpace.name]);
          +			tiddlers.push.apply(tiddlers,
          +				plugin.makeTiddlerIfNot(tid));
          +		});
          +		// generate public ColorPalette
          +		var tid = new Tiddler("ColorPalette");
          +		tid.text = config.macros.RandomColorPalette.generatePalette({
          +			saturation_pale: 0.67, saturation_light: 0.53,
          +			saturation_mid: 0.43, saturation_dark: 0.06,
          +			pale: 0.99, light: 0.85, mid: 0.5, dark: 0.31
          +		},
          +			false);
          +		tiddlers.push.apply(tiddlers, plugin.makeTiddlerIfNot(tid));
          +		this.createAvatar();
          +		this.setupMarkupPreHead();
          +		return tiddlers;
          +	},
          +	// remove _cookie slices (TiddlyWiki 2.6.2 beta 6 remnants)
          +	purgeSystemSettings: function() {
          +		var ss = store.getTiddler("SystemSettings");
          +		if(ss) {
          +			var lines = ss.text.split("\n");
          +			var persistentOptions = $.grep(lines, function(line, i) {
          +				return line.indexOf("_cookie:") == -1;
          +			});
          +			ss.text = persistentOptions.join("\n");
          +			ss = store.saveTiddler(ss);
          +			autoSaveChanges(null, [ss]);
          +		}
          +	},
          +	createAvatar: function() {
          +		var avatar = "SiteIcon";
          +		var host = tweb.host;
          +		var notify = function(xhr, error, exc) {
          +			displayMessage("ERROR: could not create avatar - " + // TODO: i18n
          +				"%0: %1".format([xhr.statusText, xhr.responseText]));
          +			// TODO: resolve!?
          +		};
          +
          +		var pubBag = tiddlyspace.getCurrentBag("public");
          +		var tid = new tiddlyweb.Tiddler(avatar);
          +		tid.bag = new tiddlyweb.Bag(pubBag, host);
          +
          +		var callback = function(data, status, xhr) {}; // avatar already exists; do nothing
          +		var errback = function(xhr, error, exc) {
          +			if(xhr.status != 404) {
          +				return;
          +			}
          +			// copy default avatar
          +			var _notify = function(tid, status, xhr) {
          +				displayMessage("created avatar"); // TODO: i18n
          +				var image = config.macros.image;
          +				if(image && image.refreshImage) {
          +					var uri = "/%0/tiddlers/SiteIcon".
          +						format(tiddlyspace.getCurrentWorkspace("public"));
          +					image.refreshImage(uri);
          +					image.refreshImage("SiteIcon");
          +				}
          +			};
          +			var _callback = function(tid, status, xhr) {
          +				tid.title = avatar;
          +				tid.bag.name = pubBag;
          +				delete tid.etag;
          +				tid.put(_notify, notify); // TODO: add to current session document (via adaptor?)
          +			};
          +			tweb.getUserInfo(function(user) {
          +				var avatarTitle = currentSpace.name == user.name ?
          +					"defaultUserIcon" : "defaultSiteIcon";
          +				var tid = new tiddlyweb.Tiddler(avatarTitle);
          +				tid.bag = new tiddlyweb.Bag("common", host);
          +				tid.get(_callback, notify);
          +			});
          +		};
          +		tid.get(callback, errback);
          +	},
          +	savePublicTiddlerText: function(title, text, pubWorkspace) {
          +		var tid = new Tiddler(title);
          +		tid.text = text;
          +		tid.tags = ["excludeLists"];
          +		tid.fields = $.extend({}, config.defaultCustomFields);
          +		tid.fields["server.workspace"] = pubWorkspace;
          +		tid.fields["server.page.revision"] = "false";
          +		tid = store.saveTiddler(tid);
          +		autoSaveChanges(null, [tid]);
          +	},
          +	setupMarkupPreHead: function() {
          +		var pubWorkspace = tiddlyspace.getCurrentWorkspace("public");
          +		var existing = store.getTiddler("MarkupPreHead");
          +		if(!existing || existing.fields["server.workspace"] != pubWorkspace) {
          +			var context = this;
          +			tweb.getStatus(function(status) {
          +				var text = markupPreHead.format(currentSpace.name,
          +					tiddlyspace.getHost(status.server_host, currentSpace.name));
          +				context.savePublicTiddlerText("MarkupPreHead", text,
          +					pubWorkspace);
          +			});
          +		}
          +		// also set up DefaultTiddlers
          +		var title = "DefaultTiddlers";
          +		existing = store.getTiddler(title) || new Tiddler(title);
          +		if(existing.fields["server.workspace"] != pubWorkspace) {
          +			var text = existing.text || store.getShadowTiddlerText(title);
          +			this.savePublicTiddlerText(title, text, pubWorkspace);
          +		}
          +	}
          +};
          +
          +$(document).bind("startup", plugin.dispatch);
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          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
          +
          +
          +
          
          +
          +
          +
          /***
          +|''Name:''|TiddlySpaceLinkPlugin|
          +|''Description:''|Formatter to reference other spaces from wikitext |
          +|''Author:''|PaulDowney (psd (at) osmosoft (dot) com) |
          +|''Source:''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceLinkPlugin.js|
          +|''Version:''|1.4.2|
          +|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          +|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          +|''~CoreVersion:''|2.4|
          +!!Documentation
          +This plugin provides wikitext formatters for referencing another [[space|Space]] on the same TiddlySpace server, as in the following examples:
          +<<<
          +  {{{@space}}} -- @space 
          +  {{{~@space}}} -- ~@space 
          +  {{{Tiddler@space}}} -- Tiddler@space
          +  {{{[[Tiddler Title]]@space}}} -- [[Tiddler Title]]@space 
          +  {{{[[Link text|Tiddler Title]]@space}}} -- [[Link text|Tiddler Title]]@space
          +<<<
          +Links to tiddlers with a title begining with an "@" remain as tiddlyLinks:
          +<<<
          +  {{{[[@tiddler]]}}} -- [[@tiddler]]
          +<<<
          +and these may be changed into a space link using {{{@@}}}:
          +<<<
          +  {{{[[@@space]]}}} -- [[@@space]]
          +  {{{[[Link to an another space|@@space]]}}} -- [[Link to another space|@@space]]
          +  {{{[[@space|@@space]]}}} -- [[@space|@@space]]
          +<<<
          +TiddlySpace includes the [[TiddlySpaceLinkPlugin]] which provides WikiText markup for linking to other spaces on the same server. For example @glossary is a link to the {{{glossary}}} space and [[Small Trusted Group]]@glossary a link to an individual tiddler in the @glossary space. Prefixing the link with a tilde escapes the link, for example {{{~@space}}}.
          +Email addresses, for example joe.bloggs@example.com and mary@had.a.little.lamb.org should be unaffected.
          +!!Features
          +The plugin provides external links decorated so that other plugins may be included to add features such as the ability to dynamically pull externally linked tiddlers into the current TiddlyWiki.
          +Wikitext linking to a space on another server, for example from a tiddler in a space on tiddlyspace.com to a tiddler or a space on example.com, isn't currently supported. 
          +!!Code
          +***/
          +//{{{
          +/*jslint onevar: false nomen: false plusplus: false */
          +/*global jQuery config createTiddlyText createExternalLink createTiddlyLink */
          +
          +function createSpaceLink(place, spaceName, title, alt, isBag) {
          +	var link, a, currentSpaceName, label;
          +	try {
          +		if (spaceName === config.extensions.tiddlyspace.currentSpace.name) {
          +			title = title || spaceName;
          +			a = createTiddlyLink(place, title, false);
          +			jQuery(a).text(alt || title);
          +			return a;
          +		}
          +	} catch (ex1) {
          +		currentSpaceName = false;
          +	}
          +
          +	a = jQuery("<a />").addClass('tiddlySpaceLink externalLink').appendTo(place)[0];
          +	if(title) {
          +		jQuery(a).attr('tiddler', title);
          +	}
          +	if(isBag) {
          +		jQuery(a).attr('bag', spaceName);
          +	} else {
          +		jQuery(a).attr('tiddlyspace', spaceName);
          +	}
          +
          +	config.extensions.tiddlyweb.getStatus(function(status) {
          +		link = status.server_host.url;
          +		if (title) {
          +			label = alt || title;
          +			link = link + "/" + encodeURIComponent(title);
          +		} else {
          +			label = alt || spaceName;
          +		}
          +		// assumes a http URI without user:pass@ prefix
          +		if(!isBag) {
          +			link = link.replace("http://", "http://" + spaceName.toLowerCase() + ".");
          +		} else {
          +			link += "/bags/" + spaceName + "/tiddlers.wiki";
          +		}
          +		jQuery(a).attr("href", link).text(label);
          +	});
          +	return a;
          +}
          +
          +(function ($) {
          +
          +	config.textPrimitives.spaceName = "[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]";
          +	config.textPrimitives.spaceNameStrict = "[a-z][a-z0-9-]*";
          +	config.textPrimitives.bareTiddlerLetter = config.textPrimitives.anyLetterStrict;
          +
          +	config.formatters.splice(0, 0, {
          +		name: "spacenameLink",
          +		match: config.textPrimitives.unWikiLink + "?" + config.textPrimitives.bareTiddlerLetter + "*@" + config.textPrimitives.spaceName + "\\.?.?",
          +		lookaheadRegExp: new RegExp(config.textPrimitives.unWikiLink + "?(" + config.textPrimitives.bareTiddlerLetter + "*)@(" + config.textPrimitives.spaceName + ")", "mg"),
          +		handler: function (w) {
          +			if (w.matchText.substr(w.matchText.length - 2, 1) === '.' && w.matchText.substr(w.matchText.length - 1, 1).match(/[a-zA-Z]/)) {
          +				w.outputText(w.output, w.matchStart, w.nextMatch);
          +				return;
          +			}
          +			if (w.matchText.substr(0, 1) === config.textPrimitives.unWikiLink) {
          +				w.outputText(w.output, w.matchStart + 1, w.nextMatch);
          +				return;
          +			}
          +			this.lookaheadRegExp.lastIndex = w.matchStart;
          +			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          +			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          +				createSpaceLink(w.output, lookaheadMatch[2], lookaheadMatch[1]);
          +				w.nextMatch = this.lookaheadRegExp.lastIndex;
          +			}
          +		}
          +	},
          +	{
          +		name: "tiddlySpaceLink",
          +		match: "\\[\\[[^\\|\\]]*\\|*@@" + config.textPrimitives.spaceName + "\\]",
          +		lookaheadRegExp: new RegExp("\\[\\[(.*?)(?:\\|@@(.*?))?\\]\\]", "mg"),
          +		handler: function (w) {
          +			this.lookaheadRegExp.lastIndex = w.matchStart;
          +			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          +			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          +				var alt = lookaheadMatch[2] ? lookaheadMatch[1] : lookaheadMatch[1].replace(/^@@/, "");
          +				var space = lookaheadMatch[2] || alt;
          +				createSpaceLink(w.output, space, "", alt);
          +				w.nextMatch = this.lookaheadRegExp.lastIndex;
          +			}
          +		}
          +	},
          +	{
          +		name: "tiddlyLinkSpacenameLink",
          +		match: "\\[\\[[^\\[]*\\]\\]@",
          +		lookaheadRegExp: new RegExp("\\[\\[(.*?)(?:\\|(.*?))?\\]\\]@(" + config.textPrimitives.spaceName + ")", "mg"),
          +		handler: function (w) {
          +			this.lookaheadRegExp.lastIndex = w.matchStart;
          +			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          +			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          +				var title = lookaheadMatch[2] || lookaheadMatch[1];
          +				var alt = lookaheadMatch[1] || lookaheadMatch[2];
          +				createSpaceLink(w.output, lookaheadMatch[3], title, alt);
          +				w.nextMatch = this.lookaheadRegExp.lastIndex;
          +			}
          +		}
          +	});
          +
          +	// ensure space links don't appear as missing links
          +	config.textPrimitives.brackettedLink = "\\[\\[([^\\]][^@\\]][^\\]]*)\\]\\](?=[^@])";
          +	config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\](?=[^@])";
          +
          +	// reevaluate derrived expressions ..
          +	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" + config.textPrimitives.titledBrackettedLink + ")|(?:" +
          +		config.textPrimitives.brackettedLink + ")|(?:" +
          +		config.textPrimitives.urlPattern + ")","mg");
          +	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+ config.textPrimitives.wikiLink + ")|(?:" +
          +		config.textPrimitives.titledBrackettedLink + ")|(?:" +
          +		config.textPrimitives.brackettedLink + ")|(?:" +
          +		config.textPrimitives.urlPattern + ")","mg");
          +
          +	// treat space links in titledBracketedLink as external links
          +	var missingTiddlySpaceLink = new RegExp("^@@" + config.textPrimitives.spaceName + "$", "");
          +	var isExternalLink = config.formatterHelpers.isExternalLink;
          +	config.formatterHelpers.isExternalLink = function(link) {
          +		return missingTiddlySpaceLink.test(link) || isExternalLink(link);
          +	};
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          
          +
          +
          +
          <<tsScan "How important to you are TiddlyWiki's offline capabilities*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          +
          +
          +
          
          +
          +
          +
          |~ViewToolbar|+editTiddler +cloneTiddler > fields refreshTiddler changeToPublic changeToPrivate revisions syncing permalink references jump closeOthers < closeTiddler|
          +|~EditToolbar|+saveTiddler saveDraft -cancelTiddler deleteTiddler|
          +|~RevisionToolbar|> fields revert|
          +
          +
          +
          
          +
          +
          +
          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
          +
          +
          +
          a TiddlySpace
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceRevisionView|
          +|''Description''|Show tiddler revisions in a stack of cards view|
          +|''Author''|BenGillies|
          +|''Version''|0.2.0|
          +|''Status''|beta|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace|
          +|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.6.0|
          +|''Requires''|TiddlyWebAdaptor|
          +!Usage
          +The viewRevisions macro can be attached to any element, which should be passed
          +in as a parameter.
          +
          +For example:
          +
          +&lt;&lt;viewRevisions page:10 link:"<<view modified date>>"&gt;&gt;
          +
          +would show the revisions "stack of cards" view, 10 at a time, when the modified
          +date is clicked.
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var me = config.macros.viewRevisions = {
          +	revisionTemplate: "RevisionTemplate",
          +	revSuffix: " [rev. #%0]", // text to append to each tiddler title
          +	defaultPageSize: 5, // default number of revisions to show
          +	defaultLinkText: "View Revisions", // when there's nothing else to use
          +	offsetTop: 30, // in px
          +	offsetLeft: 10, // in px
          +	shiftDownDelay: 50, // in ms
          +	visibleSlideAmount: 20, // amount of revisions to show on left hand edge after sliding
          +	zIndex: 100, // default z-index
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		params = paramString.parseParams(null, null, true)[0];
          +		var tiddlerElem = story.findContainingTiddler(place);
          +
          +		var revButton;
          +		var pageSize = parseInt(params.page[0], 10) || me.defaultPageSize;
          +		var linkObj = params.link ? params.link[0] || me.defaultLinkText : false;
          +		if(linkObj) {
          +			revButton = $('<span class="button openRevisions" />')
          +				.appendTo(place);
          +			wikify(linkObj, revButton[0], null, tiddler);
          +		} else {
          +			revButton = place;
          +		}
          +
          +		$(revButton).click(function() {
          +			if (!$(tiddlerElem).hasClass("revisions")) {
          +				me.showRevisions(tiddlerElem, tiddler, pageSize);
          +			} else {
          +				me.closeRevisions(tiddlerElem);
          +			}
          +		});
          +	},
          +
          +	// initialisation for revision view
          +	showRevisions: function(tiddlerElem, tiddler, pageSize) {
          +		var context = {
          +			host: tiddler.fields["server.host"],
          +			workspace: tiddler.fields["server.workspace"]
          +		};
          +		$(tiddlerElem).addClass("revisions").attr("revName", tiddler.title);
          +		// ensure toolbar commands deactivate RevisionsView
          +		$("a", ".toolbar", tiddlerElem).each(function(index, btn) {
          +			var _onclick = btn.onclick;
          +			btn.onclick = function(e) {
          +				me.closeRevisions(tiddlerElem);
          +				_onclick.apply(this, arguments);
          +			};
          +		});
          +		// ensure default action deactivates RevisionsView
          +		var _ondblclick = tiddlerElem.ondblclick;
          +		tiddlerElem.ondblclick = function(e) {
          +			me.closeRevisions(tiddlerElem);
          +			_ondblclick.apply(this, arguments);
          +		};
          +		var type = tiddler.fields["server.type"];
          +		var adaptor = new config.adaptors[type]();
          +		var userParams = {
          +			tiddlerElem: tiddlerElem,
          +			pageSize: pageSize,
          +			title: tiddler.title
          +		};
          +		me.createCloak(tiddlerElem);
          +		adaptor.getTiddlerRevisionList(tiddler.title, null, context, userParams,
          +				function(context, userParams) {
          +					// strip the current revision
          +					context.revisions.shift();
          +					me.expandStack(context, userParams);
          +				});
          +	},
          +
          +	// fetch the actual revision and put it in the tiddler div
          +	showRevision: function(place, revision, callback) {
          +		var context = {
          +			host: revision.fields["server.host"],
          +			workspace: revision.fields["server.workspace"]
          +		};
          +		var userParams = {
          +			revElem: place
          +		};
          +		var type = revision.fields["server.type"];
          +		var adaptor = new config.adaptors[type]();
          +		var revNo = revision.fields["server.page.revision"];
          +		adaptor.getTiddlerRevision(revision.title, revNo, context, userParams,
          +			function(context, userParams) {
          +				var tiddler = context.tiddler;
          +				tiddler.title += me.revSuffix
          +					.format([$(place).attr("revision")]);
          +				tiddler.fields.doNotSave = true;
          +				if (store.getTiddler(tiddler.title)) {
          +					store.deleteTiddler(tiddler.title);
          +				}
          +				store.addTiddler(tiddler);
          +
          +				//now, populate the existing div
          +				var revElem = userParams.revElem;
          +				$(revElem).attr("id", story.tiddlerId(tiddler.title));
          +				$(revElem).attr("refresh", "tiddler");
          +				var getTemplate = function() {
          +					var themeName = config.options.txtTheme;
          +					if (themeName) {
          +						return store.getTiddlerSlice(themeName,
          +							me.revisionTemplate) || me.revisionTemplate ||
          +							"ViewTemplate";
          +					} else {
          +						return (store.getTiddler(me.revisionTemplate)) ?
          +							me.revisionTemplate : "ViewTemplate";
          +					}
          +				};
          +				var template = getTemplate();
          +				story.refreshTiddler(tiddler.title, template, true);
          +				callback(tiddler);
          +			});
          +	},
          +
          +	createCloak: function(promoteElem) {
          +		var el = $(promoteElem);
          +		// cache styles for resetting later
          +		el.data({
          +			top: el.css("top"),
          +			left: el.css("left"),
          +			zIndex: el.css("z-index")
          +		});
          +
          +		$('<div class="revisionCloak" />').css("z-index", me.zIndex)
          +			.click(function() {
          +				me.closeRevisions(promoteElem);
          +			})
          +			.appendTo(document.body);
          +
          +		el.css("z-index", me.zIndex + 1);
          +	},
          +
          +	// clean up, removing all evidence of revision view
          +	closeRevisions: function(promoteElem) {
          +		var el = $(promoteElem);
          +		// revert the original tiddler back to its previous state
          +		el.removeAttr("revName").removeClass("revisions").css({
          +			top: el.data("top"),
          +			left: el.data("left"),
          +			zIndex: el.data("zIndex")
          +		});
          +
          +		// remove any revisions still in the store
          +		var revisions = $(".revisions");
          +		revisions.each(function(index, revision) {
          +			var revAttributes = revision.attributes;
          +			if ((revAttributes.revname) &&
          +					(revAttributes.revision)) {
          +				var revName = revAttributes.revname.value;
          +				var revNo = revAttributes.revision.value;
          +				var title = revName + me.revSuffix.format([revNo]);
          +
          +				if (store.getTiddler(title)) {
          +					store.deleteTiddler(title);
          +				}
          +			}
          +		});
          +
          +		// delete the previous revisions
          +		revisions.remove();
          +
          +		// remove the cloak
          +		$(".revisionCloak").remove();
          +	},
          +
          +	// calback from getting list of revisions
          +	expandStack: function(context, userParams) {
          +		var pageSize = userParams.pageSize;
          +
          +		var from = userParams.from || 0;
          +		var tiddlerElem = userParams.tiddlerElem;
          +
          +		userParams.defaultHeight = $(tiddlerElem).height();
          +		userParams.defaultWidth = $(tiddlerElem).width();
          +		if (from < context.revisions.length) {
          +			me.displayNextRevision(tiddlerElem, userParams, context, from,
          +				from + pageSize - 1);
          +		}
          +	},
          +
          +	// place the next div above and behind the previous one
          +	displayNextRevision: function(tiddlerElem, userParams, context, from, to) {
          +		var revision = context.revisions[from];
          +		var callback = function() {
          +			var revText = revBtn.getRevisionText(tiddlerElem, revision);
          +			tiddlerElem = me.createRevisionObject(tiddlerElem, context,
          +				userParams, revText);
          +			$(tiddlerElem)
          +				.attr("revision", (context.revisions.length - from));
          +			if ((from < to) && ((from + 1) < context.revisions.length)){
          +				me.displayNextRevision(tiddlerElem, userParams, context,
          +					from + 1, to);
          +			} else if ((context.revisions.length - 1) > to) {
          +				me.showMoreButton(tiddlerElem, context, userParams, to + 1);
          +			}
          +		};
          +		me.shiftVisibleDown(userParams.title, callback);
          +	},
          +
          +	createRevisionObject: function(tiddlerElem, context, userParams, text) {
          +		var newPosition = me.calculatePosition(tiddlerElem, context);
          +		return $('<div class="revisions tiddler" />')
          +			.css({
          +				position: "absolute",
          +				top: newPosition.top,
          +				left: newPosition.left,
          +				"z-index": me.zIndex + 1,
          +				height: userParams.defaultHeight,
          +				width: userParams.defaultWidth
          +			})
          +			.attr("revName", userParams.title)
          +			.append(text)
          +			.insertBefore(tiddlerElem);
          +	},
          +
          +	// move the already present revisions down by 1 to fit the next one in
          +	shiftVisibleDown: function(title, callback) {
          +		var revisions = $("[revName='%0'].revisions".format([title]));
          +		var revisionCount = revisions.length;
          +
          +		$(revisions).animate({top: "+=" + me.offsetTop},
          +				me.shiftDownDelay, function() {
          +					revisionCount -= 1;
          +					if ((callback) && (!revisionCount)) {
          +						callback();
          +					}
          +				});
          +	},
          +
          +	// where we put the new revision
          +	calculatePosition: function(elem, context) {
          +		var offset = $(elem).offset();
          +		var currentPosition = $(elem).position();
          +		var newPosition = {
          +			top: currentPosition.top - me.offsetTop
          +		};
          +		if ((context.restrictLeft) ||
          +				((offset.left - me.offsetLeft) <
          +				$("#contentWrapper").offset().left)) {
          +			newPosition.left = $(elem).position().left;
          +			context.restrictLeft = true;
          +		} else {
          +			newPosition.left = currentPosition.left - me.offsetLeft;
          +		}
          +		return newPosition;
          +	},
          +
          +	// equivalent of displayNextRevision, but for the more button
          +	showMoreButton: function(tiddlerElem, context, userParams, moreIndex) {
          +		userParams.from = moreIndex + 1;
          +		me.shiftVisibleDown(userParams.title, function() {
          +			var btn = me.createRevisionObject(tiddlerElem, context, userParams,
          +				"");
          +
          +			var more = createTiddlyButton(btn[0], "more...", "show more revisions",
          +				function() {
          +					if ($(".viewRevision").length) {
          +						return;
          +					}
          +					userParams.tiddlerElem = btn[0];
          +					$(btn).text("")
          +						.append(revBtn
          +							.getRevisionText(btn[0], context.revisions[moreIndex]))
          +						.attr("revision", context.revisions.length - moreIndex);
          +					me.expandStack(context, userParams);
          +				});
          +			$(more).css("float", "right");
          +		});
          +	},
          +
          +	stripRevFromTitle: function(revisionTitle) {
          +		return revisionTitle.split(/ ?\[rev\. #[0-9]+\]$/)[0];
          +	},
          +
          +	onClickRevision: function(revElem, revision, callback) {
          +		// don't do anything if we are still loading
          +		if ($(".revisions").hasClass("loading")) {
          +			return null;
          +		}
          +
          +		var origTitle = me.stripRevFromTitle(revision.title);
          +		if ($(revElem).hasClass("viewRevision")) {
          +			$(".revisions").addClass("loading");
          +			me.slideIn(revElem, revision, origTitle, function() {
          +				store.deleteTiddler(revision.title);
          +				revision.title = origTitle;
          +				$(revElem).text("").append(revBtn.getRevisionText(revElem,
          +						revision))
          +					.removeAttr("tags").removeAttr("tiddler")
          +					.removeAttr("refresh").removeAttr("template")
          +					.removeAttr("id");
          +				$(".revisions").removeClass("loading");
          +				if (callback) {
          +					callback();
          +				}
          +			});
          +			$(revElem).removeAttr("prevPos").removeClass("viewRevision");
          +		} else {
          +			var viewRevision = function() {
          +				var prevPos = $(revElem).position().left;
          +				$(revElem).addClass("viewRevision").attr("prevPos", prevPos);
          +				$(".revisions").addClass("loading");
          +				me.showRevision(revElem, revision, function(rev) {
          +					me.slideOut(revElem, rev, origTitle, function() {
          +						$(".revisions").removeClass("loading");
          +					});
          +				});
          +			};
          +			// make sure another revision isn't already out
          +			if ($(".viewRevision").length) {
          +				var newRevElem = $(".viewRevision")[0];
          +				var newRevision = store.getTiddler($(newRevElem)
          +					.attr("tiddler"));
          +				me.onClickRevision(newRevElem, newRevision, viewRevision);
          +			} else {
          +				viewRevision();
          +			}
          +		}
          +	},
          +
          +	slideOut: function(revElem, revision, title, callback) {
          +		var leftMostPos = $("[revName='%0'].revisions".format([title]))
          +			.offset().left;
          +		var width = $(revElem).width();
          +		var originalLeftPos = $(story.getTiddler(title))
          +			.position().left;
          +
          +		var slideAmount = leftMostPos + width - me.visibleSlideAmount;
          +		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
          +			.animate({left: "-=" + slideAmount}, 1000);
          +		$(revElem)
          +			.attr("baseHeight", $(revElem).css("height"))
          +			.css("height", "auto")
          +			.animate({left: originalLeftPos}, 1000, callback);
          +	},
          +
          +	slideIn: function(revElem, revision, title, callback) {
          +		var slideAmount = $(revElem).offset().left -
          +			$(story.getTiddler(title)).offset().left;
          +		var origRevPos = $(revElem).attr("prevPos");
          +
          +		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
          +			.animate({left: "+=" + slideAmount}, 1000);
          +		$(revElem).animate({left: origRevPos}, 1000, function() {
          +			$(revElem)
          +				.css("height", $(revElem).attr("baseHeight"))
          +				.removeAttr("baseHeight");
          +			callback();
          +		});
          +	}
          +};
          +
          +var revBtn;
          +config.macros.slideRevision = revBtn = {
          +	btnText: "created by %0 at %1 on %2",
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		var btn = revBtn.getRevisionText(place, tiddler);
          +		$(place).append(btn);
          +	},
          +
          +	getRevisionText: function(place, revision) {
          +		var text = revBtn.btnText.format([revision.modifier,
          +			revision.modified.formatString("0hh:0mm"),
          +			revision.modified.formatString("0DD MMM YYYY")]);
          +		var btn = $('<a href="javascript:;" class="button revButton" />')
          +			.text(text)
          +			.click(function() {
          +				var revElem = story.findContainingTiddler(this);
          +				me.onClickRevision(revElem, revision);
          +			});
          +		return btn;
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          
          +
          +
          +
          [[StyleSheetTiddlySpace]]
          +
          +
          +
          interview
          +
          +
          +
          /***
          +|''Name''|tsScanCountPlugin|
          +|''Description''|Provides ability to count tiddlers at a given tiddlyspace url and display a button that when clicked lists them. Also upgrades tsScan to replace any options containing with $1 with the current space|
          +|''Version''|0.2.0|
          +***/
          +//{{{
          +(function($) {
          +
          +var tsScan = config.macros.tsScan;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +
          +var macro = config.macros.tsScanCount = {
          +	cache: true,
          +	countCache: {},
          +	handler: function(place, macroName, params, w, paramString, tiddler) {
          +		var container = $("<a href='#' class='button' />").attr("refresh", "macro").attr("macroName", macroName).appendTo(place)[0];
          +		$(container).data("params", paramString);
          +		macro.refresh(container);
          +	},
          +	refresh: function(container) {
          +		var paramString = $(container).data("params");
          +		var options = tsScan.getOptions(paramString, tiddler);
          +		var url = options.url;
          +		options.cache = macro.cache;
          +		options.callback = function(tiddlers) {
          +				options.cache = true;
          +				macro.cache = true;
          +				var count = tiddlers[0] ? tiddlers[0].fields['server.page.revision'] : 0;
          +				var lastCount = macro.countCache[url] || 0;
          +				if(lastCount != count) {
          +					var interval, step = 0;
          +					interval = window.setInterval(function() {
          +						var last = step;
          +						step += 1;
          +						$(container).removeClass("step" + last);
          +						if(step > 10) {
          +							macro.countCache[url] = count;
          +							window.clearInterval(interval);
          +						} else {
          +							$(container).addClass("step" + step);
          +						}
          +					}, 500)
          +				}
          +				$(container).empty().addClass("enabled").text(tiddlers.length).click(function(ev) {
          +				$(ev.target).addClass("active");
          +				var target = options.popupSelector ? $(options.popupSelector)[0] : ev.target;
          +				var p = Popup.create(target, "div");
          +				var container;
          +				if(options.heading) {
          +					container = $("<div />").addClass("heading").appendTo(p)[0];
          +					wikify(store.getTiddlerText(options.heading) || "", container);
          +				}
          +				container = $("<div />").addClass("followTiddlersList").appendTo(p)[0];
          +				tsScan.scan(container, options);
          +				Popup.show();
          +				ev.stopPropagation();
          +				return false;
          +			});
          +		};
          +		tsScan.scan(container, options);
          +	}
          +}
          +
          +var _getOptions = tsScan.getOptions;
          +config.macros.tsScan.getOptions = function(paramString, tiddler) {
          +	var options = _getOptions.apply(this, arguments);
          +	var optionsClone = {};
          +	for(var i in options) {
          +		if(typeof(options[i]) == "string") {
          +			optionsClone[i] = options[i].format(tiddlyspace.currentSpace.name);
          +		} else {
          +			optionsClone[i] = options[i];
          +		}
          +	}
          +	return optionsClone;
          +}
          +
          +// every 5 minutes make tsScan update.
          +window.setInterval(function() {
          +	macro.cache = false;
          +	$("[macroName=tsScanCount]").each(function(i, el) {
          +		macro.refresh(el);
          +	});
          +}, 1000 * 60 * 5);
          +})(jQuery);
          +//}}}
          +
          +
          +
          <<tsScan "What do you think of the name TiddlyWiki and the term*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceToolbar|
          +|''Description''|augments tiddler toolbar commands with SVG icons|
          +|''Author''|Osmosoft|
          +|''Version''|0.6.6|
          +|''Status''|@@beta@@|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceToolbar.js|
          +|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.5.0|
          +|''Requires''|ImageMacroPlugin|
          +|''Keywords''|toolbar icons SVG|
          +!Description
          +replaces tiddler toolbar commands with SVG icons if available
          +!Notes
          +requires [[ImageMacroPlugin|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/ImageMacroPlugin/plugins/ImageMacroPlugin.tid]]
          +
          +SVG icons are drawn from tiddlers titled {{{<command>.svg}}}
          +In readonly mode a tiddler called {{{<command>ReadOnly.svg}}} will be used if it exists.
          +!TODO
          +* rename (IconToolbarPlugin?)
          +* support more than one more popup menu in the toolbar.
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +if(!config.macros.image) {
          +	throw "Missing dependency: ImageMacroPlugin";
          +}
          +
          +var macro = config.macros.toolbar;
          +
          +macro.icons = {
          +	cloneTiddler: "editTiddler"
          +};
          +
          +var _handler = macro.handler;
          +macro.handler = function(place, macroName, params, wikifier,
          +		paramString, tiddler) {
          +	var toolbar = $(place);
          +	toolbar.attr({
          +		refresh: "macro",
          +		macroName: macroName
          +	}).data("args", arguments);
          +	var status = _handler.apply(this, arguments);
          +	if(tiddler.isReadOnly()) {
          +		toolbar.addClass("toolbarReadOnly");
          +	} else {
          +		toolbar.removeClass("toolbarReadOnly");
          +	}
          +	var parsedParams = paramString.parseParams("name")[0];
          +	if(parsedParams.icons && parsedParams.icons == "yes") {
          +		this.augmentCommandButtons(place);
          +	}
          +	if(parsedParams.more && parsedParams.more == "popup") {
          +		// note we must override the onclick event like in createTiddlyButton
          +		// otherwise the click event is the popup AND the slider
          +		$(".moreCommand", place).each(function(i, el) {
          +			el.onclick = macro.onClickMorePopUp;
          +		});
          +		// buttons that are after a less command should not be in more menu.
          +		$(".lessCommand ~ .button", place).appendTo(place);
          +		$(".lessCommand", place).remove();
          +	}
          +	return status;
          +};
          +
          +macro.refresh = function(place, params) {
          +	var args = $(place).empty().data("args");
          +	this.handler.apply(this, args);
          +};
          +
          +var imageMacro = config.macros.image;
          +macro.augmentCommandButtons = function(toolbar) {
          +	$(".button", toolbar).each(function(i, el) {
          +		var cmd = $(el).attr("commandname");
          +		cmd = cmd ? cmd : "moreCommand"; // XXX: special-casing of moreCommand due to ticket #1234
          +		var icon = store.tiddlerExists(cmd) ? cmd : macro.icons[cmd];
          +		var text = $(el).text();
          +		if(readOnly) {
          +			var readOnlyAlternative = "%0ReadOnly".format([icon]);
          +			if(store.tiddlerExists(readOnlyAlternative)) {
          +				icon = readOnlyAlternative;
          +			}
          +		}
          +		if(store.tiddlerExists(icon)) {
          +			$(el).css({display: "inline-block"}).empty();
          +			imageMacro.renderImage(el, icon, { alt: text });
          +		}
          +	});
          +};
          +
          +// provide onClickMore to provide extra commands in a popup
          +macro.onClickMorePopUp = function(ev) {
          +	ev = ev || window.event;
          +	var sibling = this.nextSibling;
          +	if(sibling) {
          +		var commands = sibling.childNodes;
          +		var popup = Popup.create(this);
          +		$(popup).addClass("taggedTiddlerList");
          +		for(var i = 0; i < commands.length; i++) {
          +			var li = createTiddlyElement(popup, "li", null);
          +			var oldCommand = commands[i];
          +			var command = oldCommand.cloneNode(true);
          +			command.onclick = oldCommand.onclick;
          +			li.appendChild(command);
          +		}
          +		Popup.show();
          +	}
          +	ev.cancelBubble = true;
          +	if(ev.stopPropagation) {
          +		ev.stopPropagation();
          +	}
          +	return false;
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceSearcher|
          +|''Version''|0.2.5|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceFollowingPlugin|
          +***/
          +//{{{
          +(function($) {
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var tsScan = config.macros.tsScan;
          +
          +config.shadowTiddlers.SearchTemplate = "<<view server.bag SiteIcon label:no width:24 height:24 preserveAspectRatio:yes>> <<view server.bag spaceLink title external:no>> in space <<view server.bag spaceLink>>";
          +config.shadowTiddlers.StyleSheetSearch = [".resultsArea .siteIcon { display: inline; }",
          +	".searchForm {text-align: left;}"].join("\n");
          +store.addNotification("StyleSheetSearch", refreshStyles);
          +
          +var search = config.macros.tsSearch = {
          +	locale: {
          +		advanced: "Advanced Options",
          +		header: "Search",
          +		resultsHeader: "Results (%0)",
          +		find: "find",
          +		noResults: "No tiddlers matched your search query",
          +		query: "QUERY: ",
          +		error: "please provide a search query or a tag, modifier or title!",
          +		titleAdvanced: "where the title is",
          +		modifierAdvanced: "where the last modifier is",
          +		spaceAdvanced: "only in the space: ",
          +		notspaceAdvanced: "but not in the spaces: ",
          +		tagsAdvanced: "with the tags: "
          +	},
          +	andConstructor: function(container, label, fieldname, negationMode) {
          +		var tags = $("<div />").appendTo(container);
          +		$('<span />').text(label).appendTo(tags);
          +		var id = "area" + Math.random();
          +		container = $("<span />").attr("id", id).appendTo(tags)[0];
          +		function add(container) {
          +			var el = $('<input type="text" />').attr("field", fieldname).appendTo(container);
          +			if(negationMode) {
          +				el.attr("negation", "true");
          +			}
          +		}
          +		add(container);
          +		var el = $("<button />").text("AND").click(function(ev) {
          +			add($(ev.target).data("container"));
          +			ev.preventDefault();
          +		}).appendTo(tags);
          +		$(el).data("container", container);
          +	},
          +	fieldConstructor: function(container, label, field) {
          +		container = $("<div />").appendTo(container)[0];
          +		$("<span />").text(label).appendTo(container);
          +		$("<input />").attr("text", "input").attr("field", field).appendTo(container);
          +	},
          +	advancedOptions: function(form) {
          +		var locale = search.locale;
          +		var container = $("<div />").addClass("tsAdvancedOptions").appendTo(form)[0];
          +		$("<h2/ >").text(search.locale.advanced).appendTo(container);
          +		$("<div />").addClass("separator").appendTo(container);
          +		search.fieldConstructor(container, locale.titleAdvanced, "title");
          +		search.fieldConstructor(container, locale.modifierAdvanced, "modifier");
          +		search.fieldConstructor(container, locale.spaceAdvanced, "space");
          +		search.andConstructor(container, locale.notspaceAdvanced, "space", true);
          +		search.andConstructor(container, locale.tagsAdvanced, "tag");
          +	},
          +	constructSearchQuery: function(form) {
          +		var data = [], select = [];
          +		var query = $("[name=q]", form).val();
          +		if(query) {
          +			data.push("q=%0".format(query));
          +		}
          +
          +		// add tags, fields etc..
          +		$("[field]", form).each(function(i, el) {
          +			var val = $(el).val();
          +			var name = $(el).attr("field");
          +			var negate = $(el).attr("negation") == "true";
          +			if(val && name) {
          +				val = encodeURIComponent(val);
          +				val = negate ? "!" + val : val;
          +				if(name == "space") {
          +					val += "_public";
          +					name = "bag";
          +				}
          +				if(negate) {
          +					select.push("select=%0:%1".format(name,val));
          +				} else {
          +					var prefix = data.length === 0 ? "q=" : "";
          +					data.push('%0%1:"%2"'.format(prefix, name, val));
          +				}
          +			}
          +		});
          +		var dataString = data.join(" ");
          +		if(dataString.length === 0 && !query) {
          +			return false;
          +		}
          +		var selectStatement = select.join("&");
          +		if(dataString.length > 0 && selectStatement.length > 0) {
          +			dataString += "&";
          +		}
          +		dataString += selectStatement;
          +		return "/search?%0".format(dataString);
          +	},
          +	constructForm: function(place) {
          +		var locale = search.locale;
          +		$("<h1 />").text(locale.header).appendTo(place);
          +		var form = $("<form />").appendTo(place)[0];
          +		$('<input type="text" name="q" />').appendTo(form);
          +		$('<input type="submit" />').val(locale.find).appendTo(form);
          +		search.advancedOptions(form);
          +		var query = $('<h2 class="query"/>').appendTo(place)[0];
          +		var results = $("<div />").appendTo(place).addClass("resultsArea")[0];
          +		var lookup = function(url) {
          +			if(!url) {
          +				results.empty().addClass("error").text(locale.error);
          +				return;
          +			}
          +			config.extensions.tiddlyweb.getStatus(function(status) {
          +				$(query).text(locale.query);
          +				var href = status.server_host.url + url;
          +				$("<a />").attr("href", href).text(href).appendTo(query);
          +				tsScan.scan(results, { url: url, emptyMessage: search.locale.noResults, cache: true,
          +					template: "SearchTemplate", sort: "title", callback: function(tiddlers) {
          +						$("<h2 />").text(locale.resultsHeader.format(tiddlers.length)).prependTo(results);
          +					}
          +				});
          +			});
          +		};
          +		$(form).submit(function(ev) {
          +			ev.preventDefault();
          +			var url = search.constructSearchQuery(form);
          +			config.macros.tsSearch.lastSearch = url;
          +			lookup(url);
          +		});
          +		if(search.lastSearch) {
          +			lookup(search.lastSearch);
          +		}
          +		return form;
          +	},
          +	handler: function(place) {
          +		var container = $("<div />").addClass("searchForm").appendTo(place)[0];
          +		search.constructForm(container);
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          
          +
          +
          +
          Click the "new tiddler" button towards the top right of the screen to write something in your space. You'll need to give it a title, some content and, optionally, some tags that will help you identify it later.
          +
          +!Stuck for ideas?
          +Not sure what to write about? Not sure what to keep in your space? Other people use ~TiddlySpace for almost anything. How about some of the following:
          +
          +* [[Save interesting sites|http://bookmarks.tiddlyspace.com]], images or articles from around the web so that you can refer back to them.
          +* [[Record your family tree|http://familytree.tiddlyspace.com]], store notes on long lost relatives or ancestors and map their relationship to you.
          +* [[Make up a pocketbook|http://pocketbook.tiddlyspace.com]] to store some useful information in, then print it out, [[fold it up|http://www.pocketmod.com/]], and take it with you.
          +* [[Plan your holiday|http://the-web-is-your-oyster.tiddlyspace.com/]], record where you're planning to go, note down places of interest and refer back to it later.
          +* [[Create a mindmap|http://mindmaps.tiddlyspace.com/]] to visualise your inner thoughts and see how they relate to each other.
          +* [[Set up a questionnaire|http://questionnaire.tiddlyspace.com/]] and get all your friends to answer it.
          +
          +If you don't like any of those ideas, you can still use this space directly to keep notes and link them together, make a todo list and keep track of everything you're doing, or any one of a hundred million other things.
          +
          +Still stuck? Check out the @featured space for more suggestions.
          +
          +You can also [[socialise with others|How to socialise]].
          +
          +
          +
          <!--{{{-->
          +<div class='toolbar'
          +	macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
          +</div>
          +<div class='heading editorHeading'>
          +	<div class='editor title' macro='edit title'></div>
          +	<div class='tagClear'></div>
          +</div>
          +<div class='annotationsBox' macro='annotations'>
          +	<div class='editSpaceSiteIcon'
          +		macro='tiddlerOrigin height:16 width:16 label:no interactive:no'>
          +	</div>
          +	<div class="privacyEdit" macro='setPrivacy label:no interactive:no'></div>
          +	<div class='tagClear'></div>
          +</div>
          +<div class='editor' macro='edit text'></div>
          +<div class='editorFooter'>
          +	<div class='tagTitle'>tags</div>
          +	<div class='editor' macro='edit tags'></div>
          +	<div class='tagAnnotation'>
          +		<span macro='message views.editor.tagPrompt'></span>
          +		<span macro='tagChooser excludeLists'></span>
          +	</div>
          +</div>
          +<!--}}}-->
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceFilters|
          +|''Description''|provide TiddlySpace-specific filter extensions|
          +|''Author''|Jon Robson|
          +|''Version''|0.6.1|
          +|''Status''|@@beta@@|
          +|''CoreVersion''|2.6.2|
          +|''Requires''|TiddlySpaceConfig|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +!Usage
          +{{{
          +<<tsList Private>>
          +<<tsList Public>>
          +<<tsList Draft>>
          +}}}
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var privateBag = tiddlyspace.getCurrentBag("private");
          +var publicBag = tiddlyspace.getCurrentBag("public");
          +
          +config.filterHelpers = {
          +	is: {
          +		"private": function(tiddler) {
          +			var bag = tiddler.fields["server.bag"];
          +			return bag == privateBag;
          +		},
          +		"public": function(tiddler) {
          +			var bag = tiddler.fields["server.bag"];
          +			return bag == publicBag;
          +		},
          +		draft: function(tiddler) {
          +			var fields = tiddler.fields;
          +			var bag = fields["server.bag"];
          +			return (privateBag == bag && fields["publish.name"]) ? true : false;
          +		},
          +		local: function(tiddler) {
          +			return config.filterHelpers.is["public"](tiddler) ||
          +				config.filterHelpers.is["private"](tiddler);
          +		},
          +		unsynced: function(tiddler) {
          +			return tiddler ? tiddler.isTouched() : false;
          +		}
          +	}
          +};
          +
          +config.filters.is = function(results, match) {
          +	var candidates = store.getTiddlers("title");
          +	var type = match[3];
          +	for (var i = 0; i < candidates.length; i++) {
          +		var tiddler = candidates[i];
          +		var helper = config.filterHelpers.is[type];
          +		if(helper && helper(tiddler)) {
          +			results.pushUnique(tiddler);
          +		}
          +	}
          +	return results;
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="450 366 38 57"
          +width="30" height="30">
          +	<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +		<g>
          +			<path d="M 452.1094 421.2422 L 450 421.2422 L 450 423 L 487.9688 423 L 487.9688 421.2422 L 485.8595 421.2422 
          +			L 485.8595 377.29688 L 487.9688 377.29688 L 487.9688 375.53906 L 485.8595 375.53906 
          +			C 485.8595 375.53906 481.12463 371.59341 473.02023 370.52802 C 472.6824 368.9689 471.72098 366.75 468.9844 366.75 
          +			C 466.24783 366.75 465.28638 368.9689 464.94864 370.52802 
          +			C 456.84418 371.59341 452.1094 375.53906 452.1094 375.53906 L 450 375.53906 L 450 377.29688 L 452.1094 377.29688 
          +			Z M 467.12247 370.32086 L 467.12247 370.32086 C 467.3805 369.42395 467.90762 368.50781 468.9844 368.50781 
          +			C 470.0612 368.50781 470.5883 369.42395 470.84634 370.32086 
          +			C 470.24136 370.2848 469.62054 370.26562 468.9844 370.26562 
          +			C 468.34827 370.26562 467.72748 370.2848 467.12247 370.32086 Z M 454.21875 420.92804 L 454.21875 420.92804 
          +			C 455.46762 420.42087 456.32816 419.35281 456.32816 418.11716 L 456.32816 377.29688 L 458.4375 377.29688 
          +			L 458.4375 421.2422 L 454.21875 421.2422 Z M 460.5469 420.92804 L 460.5469 420.92804 
          +			C 461.79578 420.42087 462.65625 419.35281 462.65625 418.11716 L 462.65625 377.29688 L 464.76566 377.29688 
          +			L 464.76566 421.2422 L 460.5469 421.2422 Z M 466.87503 420.92804 L 466.87503 420.92804 
          +			C 468.1239 420.42087 468.9844 419.35281 468.9844 418.11716 L 468.9844 377.29688 L 471.09378 377.29688 
          +			L 471.09378 421.2422 L 466.87503 421.2422 Z M 473.2032 420.92804 L 473.2032 420.92804 
          +			C 474.45203 420.42087 475.31256 419.35281 475.31256 418.11716 L 475.31256 377.29688 L 477.4219 377.29688 
          +			L 477.4219 421.2422 L 473.2032 421.2422 Z M 479.5313 420.92804 L 479.5313 420.92804 
          +			C 480.78018 420.42087 481.64066 419.35281 481.64066 418.11716 L 481.64066 377.29688 L 483.75006 377.29688 
          +			L 483.75006 421.2422 L 479.5313 421.2422 Z" fill="black" class="glyph"/>
          +		</g>
          +	</g>
          +</svg>
          +
          +
          +
          /***
          +|''Name''|RandomColorPalettePlugin|
          +|''Description''|Adds a random color palette to TiddlyWiki|
          +|''Author''|Jon Robson|
          +|''Version''|1.4.0|
          +|''Status''|stable|
          +|''Source''|https://github.com/jdlrobson/TiddlyWikiPlugins/raw/master/plugins/RandomColorPalettePlugin/RandomColorPalettePlugin.js|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +!Usage
          +{{{
          +<<RandomColorPalette>>
          +}}}
          +Sets and saves a random color palette on execution
          +
          +{{{
          +<<RandomColorPaletteButton>>
          +}}}
          +Creates a button, which when clicked will change the color palette
          +More information at http://macros.tiddlyspace.com/#%5B%5BRandomColorPaletteButton%20macro%5D%5D
          +!Code
          +***/
          +//{{{
          +RGB.prototype.toRGBString = function() {
          +	return "rgb(%0,%1,%2)".format(parseInt(this.r * 255, 10),
          +		parseInt(this.g * 255, 10), parseInt(this.b * 255, 10))
          +}
          +function HSL_TO_RGB(h, s, l) { // h (hue) between 0 and 360, s (saturation) & l (lightness) between 0 and 1
          +	var c = l <= 0.5 ? 2 * l * s : ( 2 - (2 * l)) * s;
          +	var h1 = h / 60;
          +	var x = c * (1 - Math.abs((h1 % 2) - 1)); 
          +	var r, g, b;
          +	if(typeof(h) == 'undefined') {
          +		r = 0;
          +		g = 0;
          +		b = 0;
          +	} else if(0 <= h1 && h1 < 1) {
          +		r = c;
          +		g = x;
          +		b = 0;
          +	} else if(1 <= h1 && h1 < 2) {
          +		r = x;
          +		g = c;
          +		b = 0;
          +	} else if(2 <= h1 && h1 < 3) {
          +		r = 0;
          +		g = c;
          +		b = x;
          +	} else if(3 <= h1 && h1 < 4) {
          +		r = 0;
          +		g = x;
          +		b = c;
          +	} else if(4 <= h1 && h1 < 5) {
          +		r = x;
          +		g = 0;
          +		b = c;
          +	} else if(5 <= h1 && h1 < 6) {
          +		r = c;
          +		g = 0;
          +		b = x;
          +	}
          +	m = l - (0.5 * c);
          +	return new RGB(r + m, g + m, b + m);
          +}
          +
          +(function($){
          +	var macro = config.macros.RandomColorPalette = {
          +		messagesOn: false, 
          +		changedPaletteText: "We have assigned you a random theme by adjusting the [[ColorPalette]] tiddler.\nDon't like it? Click <<RandomColorPalette>> for another one.", 
          +		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +			paramString = paramString || "";
          +			var options = macro.getOptions(paramString);
          +			macro.generatePalette(options, true);
          +		},
          +		optionTypes: {
          +			floats: ["hue", "saturation", "darkest", "lightness", "huevariance", "dark", "pale", "light", "mid",
          +				"saturation_light", "saturation_pale", "saturation_mid", "saturation_dark"
          +			]
          +		},
          +		getOptions: function(paramString) {
          +			var args = paramString.parseParams("name", null, true, false, true)[0];
          +			var options = {};
          +			var numbers = macro.optionTypes.floats;
          +			for(var i in args) {
          +				options[i] = numbers.indexOf(i) > -1 ? parseFloat(args[i][0], 10) : args[i][0];
          +			}
          +			return options;
          +		},
          +		generateRandomNumber: function(min, max, info) {
          +			var num = (Math.random() * 1);
          +			info = !info ? { attempts:0 } : info;
          +			info.attempts += 1;
          +			var good = true;
          +			if(min == max) {
          +				return max;
          +			}
          +			if(min && num < min) {
          +				good = false;
          +			} else if(max && num > max) {
          +				good = false;
          +			}
          +			if(!good) {
          +				if(info.attempts < 5) {
          +					return macro.generateRandomNumber(min, max, info);
          +				} else {
          +					if(max) {
          +						return max;
          +					} else if(min) {
          +						return min;
          +					} else {
          +						return 1;
          +					}
          +				}
          +			}
          +			return num;
          +		},
          +		getExistingPalette: function(asJSON) {
          +			var title = "ColorPalette";
          +			var tiddlerText;
          +			if(store.tiddlerExists(title)) {
          +				tiddlerText = store.getTiddlerText(title);
          +			} else if(store.isShadowTiddler(title)){
          +				tiddlerText = config.shadowTiddlers[title];
          +			}
          +			if(asJSON) {
          +				var json = {};
          +				if(tiddlerText) {
          +					var lines = tiddlerText.split("\n");
          +					for(var i = 0; i < lines.length; i++) {
          +						var definition = lines[i].split(":");
          +						if(definition.length == 2) {
          +							var name = definition[0].trim();
          +							var value = definition[1].trim();
          +							json[name] = value;
          +						}
          +					}
          +				}
          +				return json;
          +			} else {
          +				return tiddlerText;
          +			}
          +		},
          +		generatePalette: function(options, save) {
          +			var outputRGB = options.rgb;
          +			var palette = macro.getExistingPalette(true);
          +			var hue = options.hue || Math.floor(Math.random() * 359);
          +			var saturation = options.saturation || macro.generateRandomNumber(0.3, 0.7);
          +			var dark = options.dark || options.darkest || macro.generateRandomNumber(0, 0.10);
          +			var pale = options.pale || options.lightness || macro.generateRandomNumber(0.90, 1);
          +			var delta = ( ( pale - dark ) / 3 );
          +			var mid = options.mid || dark + delta;
          +			var light = options.light || dark + (delta * 2);
          +			var lightness_values = {Dark: dark, Mid: mid, Light: light, Pale: pale};
          +			var saturation_values = {};
          +			for(i in lightness_values) {
          +				if(true) {
          +					saturation_values[i] = options["saturation_" + i.toLowerCase()] || saturation;
          +				}
          +			}
          +
          +			var opposite_hue = (hue + 180) % 360;
          +			var seed = options.huevariance || Math.floor((85 * Math.random()) + 5); // we want it to be at least 5 degrees
          +			var huetwo = (opposite_hue + seed) % 360;
          +			var huethree = (opposite_hue - seed) % 360;
          +			if(huetwo < 0) {
          +				huetwo = 360 + huetwo;
          +			}
          +			if(huethree < 0) {
          +				huethree = 360 + huethree;
          +			}
          +			for(var j in lightness_values) {
          +				if(true) {
          +					var saturation = saturation_values[j];
          +					palette["Primary" + j] = HSL_TO_RGB(hue, saturation, lightness_values[j]);
          +					palette["Secondary" + j] = HSL_TO_RGB(huetwo, saturation, lightness_values[j]);
          +					palette["Tertiary" + j] = HSL_TO_RGB(huethree, saturation, lightness_values[j]);
          +				}
          +			}
          +			palette.Background = HSL_TO_RGB(hue, saturation, 0.92);
          +			palette.Foreground = HSL_TO_RGB(hue, saturation, 0.08);
          +			palette.ColorPaletteParameters = ["HSL([", hue, "|", seed, "], [", saturation_values.Pale, "|",
          +				saturation_values.Light, "|", saturation_values.Mid, "|", saturation_values.Dark, "],",
          +				"[", dark, "|", mid, "|", light, "|", pale, "])"].join("");
          +			// construct new ColorPalette
          +			var text = ["/*{{{*/\n"];
          +			var colorcode;
          +			for(var id in palette) {
          +				if(true) {
          +					var color = palette[id];
          +					colorcode = outputRGB ? color.toRGBString() : color.toString();
          +					text.push("%0: %1\n".format(id, colorcode));
          +				}
          +			}
          +			text.push("/*}}}*/");
          +			text = text.join("");
          +			if(save) {
          +				macro.saveColorPalette(text);
          +			}
          +			return text;
          +		},
          +		saveColorPalette: function(text) {
          +			var tid = store.getTiddler("ColorPalette");
          +			if(!tid) {
          +				tid = new Tiddler("ColorPalette");
          +				tid.fields = merge({}, config.defaultCustomFields);
          +			} // TODO: detect that the ColorPalette in the space comes from outside recipe
          +			tid.fields["server.page.revision"] = "false"; // edit conflicts dont matter
          +
          +			// save the color palette in tid
          +			tid = store.saveTiddler(tid.title, tid.title, text, tid.modifier, tid.modified,
          +				tid.tags, tid.fields, false, tid.created, tid.creator);
          +			// an interval is used to cope with users clicking on the palette button quickly.
          +			if(macro._nextSave) {
          +				window.clearTimeout(macro._nextSave);
          +			}
          +			macro._nextSave = window.setTimeout(function() {
          +					autoSaveChanges(null, [tid]);
          +				}, 2000);
          +			// temporary workaround for IE.
          +			$.twStylesheet.remove({ id: "StyleSheetColors" });
          +			$.twStylesheet.remove({ id: "StyleSheet" });
          +			refreshAll();
          +			macro.reportChange();
          +			return tid;
          +		},
          +		reportChange: function() {
          +			if(macro.messagesOn) { // only display message once..
          +				var msgPlace = getMessageDiv();
          +				if(!$(".changedPalette", msgPlace)[0]) {
          +					var tempPlace = document.createElement("div");
          +					wikify("{{changedPalette{" + macro.changedPaletteText + "}}}", tempPlace);
          +					msgPlace.appendChild(tempPlace);
          +				}
          +			}
          +		}
          +	};
          +	var btnMacro = config.macros.RandomColorPaletteButton = {
          +			text: "New ColorPalette",
          +			tooltip: "Generate a random colour scheme for your TiddlyWiki",
          +			makeButton: function(place, options) {
          +				var btnHandler = function(ev) {
          +					var t = $(ev.target);
          +					var options = t.data("options");
          +					macro.generatePalette(options, true);
          +					ev.preventDefault();
          +					return false;
          +				};
          +				var btn = createTiddlyButton(place, this.text, this.tooltip, btnHandler);
          +				$(btn).data("options", options);
          +				return btn;
          +			},
          +			handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +				var options = macro.getOptions(paramString);
          +				btnMacro.makeButton(place, options);
          +			}
          +	};
          +})(jQuery);
          +//}}}
          +
          +
          +
          
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="78 222 60 60" 
          +width="30" height="30">
          +<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +	<g>
          +		<path d="M 107.92718 244.14815 L 86.651474 222.89253 L 78.85206 230.69925 L 100.120415 251.9476 L 78.774 273.27396 
          +		L 86.57342 281.08075 L 107.927216 259.74707 L 129.39981 281.19946 L 137.19922 273.39267 L 115.73397 251.94763 
          +		L 137.121155 230.58054 L 129.32175 222.77374 Z" fill="black" class="glyph"/>
          +	</g>
          +</g>
          +</svg>
          +
          +
          +
          /***
          +|''Name''|TiddlyWebConfig|
          +|''Description''|configuration settings for TiddlyWebWiki|
          +|''Author''|FND|
          +|''Version''|1.3.2|
          +|''Status''|stable|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/TiddlyWebConfig.js|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''Requires''|TiddlyWebAdaptor ServerSideSavingPlugin|
          +|''Keywords''|serverSide TiddlyWeb|
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +if(!config.extensions.ServerSideSavingPlugin) {
          +	throw "Missing dependency: ServerSideSavingPlugin";
          +}
          +if(!config.adaptors.tiddlyweb) {
          +	throw "Missing dependency: TiddlyWebAdaptor";
          +}
          +
          +if(window.location.protocol != "file:") {
          +	config.options.chkAutoSave = true;
          +}
          +
          +var adaptor = tiddler.getAdaptor();
          +var recipe = tiddler.fields["server.recipe"];
          +var workspace = recipe ? "recipes/" + recipe : "bags/common";
          +
          +var plugin = config.extensions.tiddlyweb = {
          +	host: tiddler.fields["server.host"].replace(/\/$/, ""),
          +	username: null,
          +	status: {},
          +
          +	getStatus: null, // assigned later
          +	getUserInfo: function(callback) {
          +		this.getStatus(function(status) {
          +			callback({
          +				name: plugin.username,
          +				anon: plugin.username ? plugin.username == "GUEST" : true
          +			});
          +		});
          +	},
          +	hasPermission: function(type, tiddler) {
          +		var perms = tiddler.fields["server.permissions"];
          +		if(perms) {
          +			return perms.split(", ").contains(type);
          +		} else {
          +			return true;
          +		}
          +	}
          +};
          +
          +config.defaultCustomFields = {
          +	"server.type": tiddler.getServerType(),
          +	"server.host": plugin.host,
          +	"server.workspace": workspace
          +};
          +
          +// modify toolbar commands
          +
          +config.shadowTiddlers.ToolbarCommands = config.shadowTiddlers.ToolbarCommands.
          +	replace("syncing ", "revisions syncing ");
          +
          +config.commands.saveTiddler.isEnabled = function(tiddler) {
          +	return plugin.hasPermission("write", tiddler) && !tiddler.isReadOnly();
          +};
          +
          +config.commands.deleteTiddler.isEnabled = function(tiddler) {
          +	return !readOnly && plugin.hasPermission("delete", tiddler);
          +};
          +
          +// hijack option macro to disable username editing
          +var _optionMacro = config.macros.option.handler;
          +config.macros.option.handler = function(place, macroName, params, wikifier,
          +		paramString) {
          +	if(params[0] == "txtUserName") {
          +		params[0] = "options." + params[0];
          +		var self = this;
          +		var args = arguments;
          +		args[0] = $("<span />").appendTo(place)[0];
          +		plugin.getUserInfo(function(user) {
          +			config.macros.message.handler.apply(self, args);
          +		});
          +	} else {
          +		_optionMacro.apply(this, arguments);
          +	}
          +};
          +
          +// hijack isReadOnly to take into account permissions and content type
          +var _isReadOnly = Tiddler.prototype.isReadOnly;
          +Tiddler.prototype.isReadOnly = function() {
          +	return _isReadOnly.apply(this, arguments) ||
          +		!plugin.hasPermission("write", this);
          +};
          +
          +var getStatus = function(callback) {
          +	if(plugin.status.version) {
          +		callback(plugin.status);
          +	} else {
          +		var self = getStatus;
          +		if(self.pending) {
          +			if(callback) {
          +				self.queue.push(callback);
          +			}
          +		} else {
          +			self.pending = true;
          +			self.queue = callback ? [callback] : [];
          +			var _callback = function(context, userParams) {
          +				var status = context.serverStatus || {};
          +				for(var key in status) {
          +					if(key == "username") {
          +						plugin.username = status[key];
          +						config.macros.option.propagateOption("txtUserName",
          +							"value", plugin.username, "input");
          +					} else {
          +						plugin.status[key] = status[key];
          +					}
          +				}
          +				for(var i = 0; i < self.queue.length; i++) {
          +					self.queue[i](plugin.status);
          +				}
          +				delete self.queue;
          +				delete self.pending;
          +			};
          +			adaptor.getStatus({ host: plugin.host }, null, _callback);
          +		}
          +	}
          +};
          +(plugin.getStatus = getStatus)(); // XXX: hacky (arcane combo of assignment plus execution)
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|ToggleTiddlerPrivacyPlugin|
          +|''Version''|0.7.1|
          +|''Status''|@@beta@@|
          +|''Description''|Allows you to set the privacy of new tiddlers and external tiddlers within an EditTemplate, and allows you to set a default privacy setting|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlySpaceConfig|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/ToggleTiddlerPrivacyPlugin.js|
          +!Notes
          +When used in conjunction with TiddlySpaceTiddlerIconsPlugin changing the privacy setting will also interact with any privacy icons.
          +
          +Currently use of
          +{{{<<setPrivacy defaultValue:public>>}}} is in conflict with {{{<<newTiddler fields:"server.workspace:x_private">>}}}
          +
          +There is an option, found in the tweak tab of the backstage, called txtPrivacyMode. Set this to either ''public'' or ''private'' depending on your security preference. If you choose not to set it then it will default to ''public''.
          +!Params
          +defaultValue:[private|public]
          +Allows you to set the default privacy value (Default is private)
          +
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +	var tiddlyspace = config.extensions.tiddlyspace,
          +		macro;
          +	macro = config.macros.setPrivacy = {
          +		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +			if(readOnly) {
          +				return;
          +			}
          +			var el = $(story.findContainingTiddler(place)),
          +				args = paramString.parseParams("name",
          +					null, true, false, true)[0],
          +				container = $("<div />").
          +					addClass("privacySettings").
          +					appendTo(place)[0],
          +				currentSpace = tiddlyspace.currentSpace.name,
          +				currentBag = tiddler ? tiddler.fields["server.bag"] : false,
          +				// XXX: is the following reliable?
          +				isNewTiddler = el.hasClass("missing") || !currentBag,
          +				tiddlerStatus = tiddlyspace.getTiddlerStatusType(tiddler),
          +				customFields = el.attr("tiddlyfields"),
          +				defaultValue = "public",
          +				options = config.macros.tiddlerOrigin ?
          +						config.macros.tiddlerOrigin.getOptions(paramString) :
          +						{};
          +			customFields = customFields ? customFields.decodeHashMap() : {};
          +			if(isNewTiddler || !["public", "private", "unsyncedPrivate",
          +					"unsyncedPublic"].contains(tiddlerStatus)) {
          +				if(args.defaultValue) {
          +					defaultValue = args.defaultValue[0].toLowerCase();
          +				} else {
          +					defaultValue = config.options.chkPrivateMode ?
          +							"private" : "public";
          +				}
          +				defaultValue = defaultValue ?
          +						"%0_%1".format(currentSpace, defaultValue) :
          +						customFields["server.bag"];
          +				this.createRoundel(container, tiddler, currentSpace,
          +						defaultValue, options);
          +			}
          +		},
          +		updateEditFields: function(tiddlerEl, bag) {
          +			var saveBagField = $('[edit="server.bag"]', tiddlerEl),
          +				saveWorkspaceField = $('[edit="server.workspace"]', tiddlerEl),
          +				input = $("<input />").attr("type", "hidden"),
          +				workspace = "bags/" + bag;
          +			if(saveBagField.length === 0) {
          +				input.clone().attr("edit", "server.bag").val(bag).
          +					appendTo(tiddlerEl);
          +			} else {
          +				saveBagField.val(bag);
          +			}
          +			// reset to prevent side effects
          +			$(tiddlerEl).attr("tiddlyFields", "");
          +			if(saveWorkspaceField.length === 0) {
          +				input.clone().attr("edit", "server.workspace").
          +					val(workspace).appendTo(tiddlerEl);
          +			} else {
          +				saveWorkspaceField.val(workspace);
          +			}
          +		},
          +		setBag: function(tiddlerEl, newBag, options) {
          +			var bagStatus,
          +				title = $(tiddlerEl).attr("tiddler"),
          +				tiddler = store.getTiddler(title),
          +				originButton = $(".originButton", tiddlerEl)[0],
          +				refreshIcon,
          +				newWorkspace = "bags/" + newBag,
          +				rPrivate = $("input[type=radio].isPrivate", tiddlerEl),
          +				rPublic = $("input[type=radio].isPublic", tiddlerEl);
          +			refreshIcon = function(type) {
          +				var originMacro = config.macros.tiddlerOrigin;
          +				if(originButton && originMacro) {
          +					options.noclick = true;
          +					originMacro.showPrivacyRoundel(tiddler, type,
          +							originButton, options);
          +				}
          +			};
          +			macro.updateEditFields(tiddlerEl, newBag);
          +			if(tiddler) {
          +				tiddler.fields["server.bag"] = newBag;
          +				// for external tiddlers
          +				tiddler.fields["server.workspace"] = newWorkspace;
          +			}
          +			if(newBag.indexOf("_public") > -1) {
          +				rPrivate.attr("checked", false);
          +				rPublic.attr("checked", true);
          +				bagStatus = "public";
          +			} else {
          +				rPublic.attr("checked", false); // explicitly do this for ie
          +				rPrivate.attr("checked", true);
          +				bagStatus = "private";
          +			}
          +			refreshIcon(bagStatus);
          +		},
          +		createRoundel: function(container, tiddler, currentSpace,
          +							   defaultValue, options) {
          +			var privateBag = "%0_private".format(currentSpace),
          +				publicBag = "%0_public".format(currentSpace),
          +				rbtn = $("<input />").attr("type", "radio").
          +					attr("name", tiddler.title),
          +				el = story.findContainingTiddler(container);
          +			rbtn.clone().val("private").addClass("isPrivate").
          +				appendTo(container);
          +			$("<label />").text("private").appendTo(container); // TODO: i18n
          +			rbtn.clone().val("public").addClass("isPublic")
          +				.appendTo(container);
          +			$("<label />").text("public").appendTo(container); // TODO: i18n
          +			$("[type=radio]", container).click(function(ev) {
          +				var btn = $(ev.target);
          +				tiddler.fields["server.page.revision"] = "false";
          +				if(btn.hasClass("isPrivate")) { // private button clicked.
          +					$(el).addClass("isPrivate").removeClass("isPublic");
          +					macro.setBag(el, privateBag, options);
          +				} else {
          +					$(el).addClass("isPublic").removeClass("isPrivate");
          +					macro.setBag(el, publicBag, options);
          +				}
          +			});
          +			window.setTimeout(function() {
          +				macro.setBag(el, defaultValue, options);
          +			}, 100);
          +			// annoyingly this is needed as customFields are added to end of EditTemplate so are not present yet
          +			// and don't seem to respect any existing customFields.
          +		}
          +	};
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          !SpaceUnplugged
          +{{unpluggedSpaceTab{
          +{{wizard{
          +<<image unsyncedIcon width:48>> Sync is currently unavailable in ~TiddlyWiki due to security constraints in modern browsers. Research is being done to build a suitable alternative. In the meantime if you have changed content in an offline ~TiddlyWiki, you can get your content back into ~TiddlySpace by using the ''import'' functionality from the backstage of the online wiki.
          +}}}
          +}}}
          +
          +!Menu
          +<<message messages.memberStatus>> <<homeLink>>
          +{{unsyncedList{<<message messages.syncListHeading>> <<list filter [is[unsynced]]>>}}}
          +
          +running TiddlySpace@glossary version <<message extensions.tiddlyweb.status.tiddlyspace_version>>
          +{{autotable{
          +<<tiddler Backstage##Resources>>
          +}}}
          +
          +!Resources
          +[[blog|@@blog]] [[documentation|@@docs]] [[featured spaces|@@featured]] 
          +
          +!ImportExport
          +<<fileImport>>
          +You can download this TiddlySpace as an offline TiddlyWiki:
          +
          +{{chunkyButton{<<exportSpace>>}}}
          +
          +!BackstageTiddlers
          +|upload a <<message messages.privacySetting>> file: <<binaryUpload>>|<<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>>|
          +|>|<<search>>|
          +|>|<<tiddler Backstage##Tiddlers>>|
          +
          +!Tiddlers
          +<<tabs
          +	txtMainTab
          +	"Recent" "Recently edited tiddlers" TabTimeline
          +	"All" "All tiddlers" TabAll
          +	"Public" "All public tiddlers" [[TiddlySpaceTabs##Public]]
          +	"Private" "All private tiddlers" [[TiddlySpaceTabs##Private]]
          +	"Tags" "All tags" TabTags
          +	"Spaces" "Tiddlers grouped by space" [[TiddlySpaceTabs##Spaces]]
          +	"Missing" "Missing tiddlers" TabMoreMissing
          +	"Orphans" "Orphaned tiddlers" TabMoreOrphans
          +	"Shadows" "Shadowed tiddlers" TabMoreShadowed
          +>>
          +
          +!BatchOps
          +<<tabs
          +	txtPublisherTab
          +	"Private" "Move tiddlers from private to public" Backstage##BatchPrivate
          +	"Public" "Move tiddlers from public to private" Backstage##BatchPublic
          +>>
          +
          +!BatchPrivate
          +<<TiddlySpacePublisher type:private>>
          +
          +!BatchPublic
          +<<TiddlySpacePublisher type:public>>
          +
          +!Plugins
          +''Note:'' Many of these plugins are core TiddlySpace plugins and cannot be changed unless first cloned.
          +
          +<<tiddler PluginManager>>
          +
          +!Tweaks
          +These options change behavior in TiddlyWiki //only// and may be ineffective in TiddlySpace.
          +
          +<<tiddler AdvancedOptions>>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceRevertRevision|
          +|''Description''|Revert to a previous revision|
          +|''Author''|BenGillies|
          +|''Version''|0.1|
          +|''Status''|unstable|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace|
          +|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.6.0|
          +|''Requires''|TiddlyWebAdaptor TiddlySpaceRevisionView|
          +!Usage
          +Add a control button to revert to a particular revision.
          +
          +The button must be called from within a revision, as generated by TiddlySpaceRevisionView
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +config.commands.revert = {
          +	text: "revert",
          +	tooltip: "make this revision the current one",
          +	handler: function(ev, src, title) {
          +		var revElem = story.getTiddler(title);
          +		var tidToRevert = store.getTiddler($(revElem).attr("revName"));
          +
          +		var revision = store.getTiddler(title);
          +		if ((revision) && (tidToRevert)) {
          +			tidToRevert.text = revision.text;
          +			var newFields = merge({}, revision.fields);
          +			for (var fieldName in newFields) {
          +				if (fieldName.substr(0, 7) === "server.") {
          +					delete newFields[fieldName];
          +				}
          +			}
          +			merge(tidToRevert.fields, newFields);
          +			tidToRevert.tags = merge([], revision.tags);
          +			tidToRevert.fields.changecount = 1;
          +			delete tidToRevert.fields.doNotSave;
          +
          +			store.saveTiddler(tidToRevert.title, tidToRevert.title,
          +				tidToRevert.text, null, null, tidToRevert.tags,
          +				tidToRevert.fields, false, tidToRevert.created, tidToRevert.creator);
          +
          +			autoSaveChanges(true);
          +		}
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="2 724 68 55" 
          +width="30" height="30">
          +<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          +	<g>
          +		<path d="M 2.25 756 L 11.25 747 L 24.75 760.4994 L 60.750004 724.4994 L 69.75 733.49902 
          +		L 24.749977 778.49976 Z" fill="#101010" class="glyph"/>
          +	</g>
          +</g>
          +</svg>
          +
          +
          +
          /***
          +|''Name''|ImportExternalLinksPlugin|
          +|''Author''|Jon Robson|
          +|''Version''|0.3.0|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceLinkPlugin TiddlySpaceCloneCommand|
          +|''Description''|Turns space links into ajax links so you don't have to leave the comfort of your own TiddlyWiki|
          +!Notes
          +This maybe should hides the editTiddler, cloneTiddler commands. Ideally the toolbar commands should hide themselves but we need a strong concept of "this is a sucked in tiddler" to do that.
          +***/
          +//{{{
          +(function($){
          +var tiddlyspace = config.extensions.tiddlyspace;
          +_createSpaceLink = createSpaceLink;
          +if(_createSpaceLink) {
          +	createSpaceLink = function(place, spaceName, title, alt, isBag) {
          +		var tooltip = "Click to open in current document. Right click to open in original space.";
          +		_createSpaceLink(place, spaceName, title, alt, isBag);
          +		var workspace;
          +		if(isBag) {
          +			workspace = "bags/%0".format(spaceName);
          +		} else {
          +			workspace = "bags/%0_public".format(spaceName);
          +		}
          +		if(title && spaceName != tiddlyspace.currentSpace.name) {
          +			var link = $("a:last", place);
          +			var newlink = $("<a />").text("[link]").after(link[0]);
          +			// very hacky
          +			var updateInterval = setInterval(function() {
          +				var href = link.attr("href");
          +				if(href) {
          +					$(newlink).attr("href", href);
          +					clearInterval(updateInterval);
          +				}
          +			}, 200);
          +			
          +			if(link.parent(".replyLink").length == 0) { // don't suck in a reply link.
          +				link.attr("title", tooltip).addClass("importLink").click(function(ev) {
          +					if(config.floorboards) {
          +						config.floorboards.pushUnique("%0_public".format(spaceName));
          +					}
          +					tiddlyspace.displayServerTiddler(ev.target, title, workspace, function(el) {
          +						// TODO: the commands should disable themselves based on the meta information.
          +						//$("[commandname=editTiddler], [commandname=cloneTiddler]", el).hide(); 
          +					});
          +					ev.preventDefault();
          +				});
          +			}
          +		}
          +	};
          +}
          +
          +var _cloneHandler = config.commands.cloneTiddler.handler;
          +config.commands.cloneTiddler.handler = function(event, src, title) {
          +	var _tiddler = store.getTiddler(title);
          +	var source = _tiddler ? _tiddler.fields["server.bag"] : false;
          +	var imported = _tiddler ? _tiddler.fields["tiddler.source"] : false;
          +	var realTitle = _tiddler ? _tiddler.fields["server.title"] : title;
          +	_cloneHandler.apply(this, [event, src, title]);
          +	var tidEl = story.getTiddler(title);
          +	$(story.getTiddlerField(title, "title")).val(realTitle);
          +	if(source) {
          +		$("<input />").attr("type", "hidden").attr("edit", "tiddler.source").val(source).appendTo(tidEl);
          +		$("<input />").attr("type", "hidden").attr("edit", "server.activity").appendTo(tidEl);
          +	}
          +}
          +})(jQuery);
          +//}}}
          +
          +
          +
          var user, userbag;
          +var friends = [];
          +var host = "http://tiddlyspace.com";
          +
          +$.ajaxSetup({
          +	beforeSend: function(xhr) {
          +		xhr.setRequestHeader("X-ControlView", "false");
          +	}
          +});
          +
          +function printMessage(txt) {
          +	alert(txt);
          +}
          +
          +function printError(txt) {
          +	alert(txt);
          +}
          +
          +var simpleDate = (function() {
          +
          +	var measures = {
          +		second: 1,
          +		minute: 60,
          +		hour: 3600,
          +		day: 86400,
          +		week: 604800,
          +		month: 2592000,
          +		year: 31536000
          +	};
          +
          +	var chkMultiple = function(amount, type) {
          +		return (amount > 1) ? amount + " " + type + "s":"a " + type;
          +	};
          +
          +	return function(thedate) {
          +
          +		var dateStr, amount,
          +			current = new Date().getTime(),
          +			diff = (current - thedate.getTime()) / 1000; // work with seconds
          +
          +		if(diff > measures.year) {
          +			amount = Math.round(diff/measures.year);
          +			dateStr = "about " + chkMultiple(amount, "year") + " ago";
          +		} else if(diff > measures.month) {
          +			amount = Math.round(diff/measures.month);
          +			//if(typeof amount == "")
          +			dateStr = "about " + chkMultiple(amount, "month") + " ago";
          +		} else if(diff > measures.week) {
          +			amount = Math.round(diff/measures.week);
          +			dateStr = "about " + chkMultiple(amount, "week") + " ago";
          +		} else if(diff > measures.day) {
          +			amount = Math.round(diff/measures.day);
          +			dateStr = "about " + chkMultiple(amount, "day") + " ago";
          +		} else if(diff > measures.hour) {
          +			amount = Math.round(diff/measures.hour);
          +			dateStr = "about " + chkMultiple(amount, "hour") + " ago";
          +		} else if(diff > measures.minute) {
          +			amount = Math.round(diff/measures.minute);
          +			dateStr = "about " + chkMultiple(amount, "minute") + " ago";
          +		} else {
          +			dateStr = "a few seconds ago";
          +		}
          +
          +		return dateStr;
          +
          +	};
          +})();
          +
          +function prettyDate(t) {
          +	var date = new Date(Date.UTC(
          +		parseInt(t.substr(0, 4), 10),
          +		parseInt(t.substr(4, 2), 10) - 1,
          +		parseInt(t.substr(6, 2), 10),
          +		parseInt(t.substr(8, 2), 10),
          +		parseInt(t.substr(10, 2), 10),
          +		parseInt(t.substr(12, 2) || "0", 10),
          +		parseInt(t.substr(14, 3) || "0", 10)
          +	));
          +	return simpleDate(date);
          +}
          +
          +function endsWith(str, suffix) {
          +	return str.indexOf(suffix) == str.length - suffix.length;
          +}
          +
          +function isShadow(tid) {
          +	var shadows = ["MarkupPreHead", "DefaultTiddlers", "PageTemplate", "SideBarTabs",
          +		"GettingStarted", "MainMenu", "SiteTitle", "SiteSubtitle", "ColorPalette",
          +		"SiteIcon", "ViewTemplate", "EditTemplate", "ServerSettings", "MarkupPostHead",
          +		"MarkupPostBody", "MarkupPreBody"];
          +	return tid.title.indexOf("StyleSheet") === 0 ||
          +		tid.title.indexOf("SideBar") === 0 ||
          +		shadows.indexOf(tid.title) > -1 || endsWith(tid.title, "SetupFlag") ? true : false;
          +}
          +
          +function isPlugin(tid) {
          +	return tid.tags.indexOf("systemConfig") > -1 ? true : false;
          +}
          +
          +function isArtifact(tid) {
          +	var follow = tid.tags.indexOf("follow") > -1;
          +	var type = tid.type;
          +	if(follow || type) {
          +		return true;
          +	} else {
          +		return false;
          +	}
          +}
          +
          +function chooseTiddlers(tiddlers) {
          +	var _tiddlers = [];
          +	for(var i = 0; i < tiddlers.length; i++) {
          +		var tid = tiddlers[i];
          +		if(!isPlugin(tid) && !isShadow(tid) && !isArtifact(tid)) {
          +			_tiddlers.push(tid);
          +		}
          +	}
          +	return _tiddlers;
          +}
          +
          +function bubbleDown() {
          +	var friends = $(".friend");
          +	friends.css({ position: "relative" });
          +	var target;
          +	friends.each(function(i, el) {
          +		if(!target && $(el).hasClass("silentFriend") &&
          +			$(el).next(".friend").hasClass("noisyFriend")) {
          +			target = el;
          +		}
          +	});
          +	if(target) {
          +		var other = $(target).next(".friend");
          +		// we want to move target above the prev element
          +		// target is an element which has the class noisy and the previous node is quiet
          +		var swapDuration = 50;
          +		var otherHeight = other.height();
          +		var thisHeight = $(target).height();
          +		$(target).animate({ top: + otherHeight }, { duration: swapDuration });
          +		$(other).animate({ top:  - thisHeight }, { duration: swapDuration,
          +				complete: function() {
          +					var newTarget = $(target).clone(true).insertAfter(other)[0];
          +					$(target).remove();
          +					$(other).css({ top: 0 });
          +					$(newTarget).css({ top: 0 });
          +					bubbleDown();
          +				}
          +		});
          +	}
          +}
          +
          +function renderTiddlerList(container,friend) {
          +	var tidList = $("<ul />").appendTo(container)[0];
          +	$("<li />").text("loading").appendTo(tidList);
          +	var oncompletion = function() {
          +		if($(".errorFriend,.silentFriend,.noisyFriend").length === $(".friend").length) {
          +			bubbleDown();
          +		}
          +	}
          +	$.ajax({ dataType: "json",
          +		url: "/search?q=modifier:" + friend + "&select=modified:>3d&sort=-modified",
          +		error: function() {
          +			$(container).addClass("errorFriend");
          +			oncompletion();
          +		},
          +		success: function(tiddlers) {
          +			$(tidList).empty();
          +			tiddlers = chooseTiddlers(tiddlers);
          +			if(tiddlers.length === 0) {
          +				$(container).addClass("silentFriend");
          +				$("<li />").text("No recent activity.").appendTo(tidList);
          +				oncompletion();
          +				return;
          +			} else {
          +				$(container).addClass("noisyFriend").removeClass("inactiveFriend");
          +				oncompletion();
          +			}
          +			for(var i=0; i < tiddlers.length; i++) {
          +				var tiddler = tiddlers[i];
          +				var item = $("<li />").appendTo(tidList)[0];
          +				var win;
          +				var space = tiddler.bag.split("_")[0];
          +				var spaceUrl = "http://" + space + ".tiddlyspace.com";
          +				var path = "/bags/" + tiddler.bag + "/tiddlers/" + encodeURIComponent(tiddler.title);
          +				var link = $("<a />").text(tiddler.title).
          +					attr("href", spaceUrl + path).
          +					data("path", path).
          +					click(function(ev) {
          +						var win = $(ev.target).data("win");
          +						if($(ev.target).hasClass("active")) {
          +							$(win).toggle(1000);
          +						} else {
          +							$(ev.target).addClass("active");
          +							$(".text", win).text("loading...");
          +							$(win).show();
          +							$.ajax({
          +								url: $(ev.target).data("path"),
          +								data: {
          +									render: "y"
          +								},
          +								dataType: "json",
          +								success: function(tiddler) {
          +									$(".text",win).html(tiddler.render);
          +									$(win).show(1000);
          +								},
          +								error: function() {
          +									$(".text", win).text("error loading that tiddler");
          +								}
          +							});
          +						}
          +						ev.preventDefault();
          +					}).
          +					appendTo(item)[0];
          +				var space = tiddler.bag.split("_")[0];
          +				$("<span />").text(" in ").appendTo(item);
          +				$("<a />").attr("href", spaceUrl).text(space).appendTo(item);
          +				$("<span />").text(" (" + prettyDate(tiddler.modified) + ")").appendTo(item);
          +				win = $("<div />").addClass("tiddler").appendTo(item)[0];
          +				$("<div />").addClass("text").appendTo(win);
          +				var toolbar = $("<div />").addClass("toolbar").appendTo(win)[0];
          +				var extra = $("<div />").addClass("extra").appendTo(win)[0];
          +				$("<button />").data("bag", tiddler.bag).data("title", tiddler.title).text("give feedback").
          +					data("revision", tiddler.revision).click(function(ev) {
          +					var title = $(ev.target).data("title");
          +					var revision = $(ev.target).data("revision");
          +					var bag = $(ev.target).data("bag");
          +					var revisionURL = host + "/bags/" + bag + "/tiddlers/" + encodeURIComponent(title) + "/revisions/" + revision;
          +					var space = bag.split("_")[0];
          +					var area = $(ev.target).parents(".tiddler").children(".extra")[0];
          +					$(area).hide();
          +					$("<textarea />").appendTo(area);
          +					$("<button />").text("save feedback").click(function(ev) {
          +						var tid = new tiddlyweb.Tiddler("Feedback for " + title, userbag);
          +						tid.tags = ["feedback", "@" + space];
          +						tid.text = ["In reply to [[", title, "]]@", space,
          +							" (revision [[", revision, "|", revisionURL, "]])\n\n"].join("") + $("textarea", area).val();
          +						tid.put(function(tiddler) {
          +							$(area).empty();
          +							$("<span />").text("your comment: ").appendTo(area);
          +							$("<a />").attr("href", "/" + encodeURIComponent(tiddler.title)).text(tiddler.title).appendTo(area);
          +						}, function() {
          +							printError("error commenting!");
          +						});
          +					}).appendTo(area);
          +					$(area).show(1000);
          +					ev.preventDefault();
          +					$(ev.target).remove();
          +					return false;
          +				}).appendTo(toolbar);
          +
          +				$(win).hide();
          +				$(link).data("win", win);
          +			}
          +		}
          +	})
          +}
          +
          +function removeFriend(friend) {
          +	var tiddler = new tiddlyweb.Tiddler("@" + friend, userbag);
          +	var success = function() {
          +		printMessage("User removed from friends");
          +		var newFriends = [];
          +		for(var i = 0; i < friends.length; i++) {
          +			var f = friends[i];
          +			if(f !== friend) {
          +				newFriends.push(f);
          +			}
          +		}
          +		friends = newFriends;
          +		$("#friend-" + friend).hide(2000);
          +	};
          +	tiddler["delete"](success, function() {
          +		var old = new tiddlyweb.Tiddler(friend, userbag);
          +		old["delete"](success, function() {
          +			printError("Unable to remove friend " + friend);
          +		})
          +	})
          +}
          +
          +function renderFriend(list, friend) {
          +	var bag = friend + "_public";
          +	var item = $("<li />").addClass("friend").attr("id", "friend-" + friend).addClass("inactiveFriend").appendTo(list)[0];
          +	$("<img />").attr("alt", friend).attr("title", friend).
          +		attr("src", host + "/bags/" + bag + "/tiddlers/SiteIcon").css({ width: 48, height: 48 }).appendTo(item);
          +	var heading = $("<h2>").appendTo(item)[0];
          +	$("<a />").attr("href", "#friend-" + friend).attr("name", "friend-" + friend).text(friend).appendTo(heading);
          +	$("<button />").data("who", friend).text("remove from friends").
          +		click(function(ev) {
          +			if(confirm("Are you sure you want to remove " + friend + " as a friend?")) {
          +				removeFriend($(ev.target).data("who"));
          +			}
          +		}).appendTo(item)[0];
          +	renderTiddlerList(item,friend);
          +}
          +
          +function renderFriends() {
          +	var list = $("<ul />").appendTo("#friends")[0];
          +	$("<li />").text("Activity of your friends will appear below when available").appendTo(list);
          +	for(var i = 0; i < friends.length; i++) {
          +		var friend = friends[i];
          +		renderFriend(list, friend);
          +	}
          +}
          +
          +function followWidget() {
          +	$("#friends").empty();
          +	var container = $("<div />").addClass("addfriends").appendTo("#friends")[0];
          +	$("<input />").attr("name", "friend").appendTo(container);
          +	$("<button />").text("add friend").click(function(ev) {
          +		var friend = $(ev.target).parent().children("[name='friend']").val();
          +		if(friends.indexOf(friend) > -1) {
          +			return printError("You already follow " + friend + "!");
          +		}
          +
          +		var title;
          +		if(friend.indexOf("@") !== 0) {
          +			title = "@" + friend;
          +		} else {
          +			title = friend;
          +		}
          +
          +		$.ajax({ dataType: "text", url: "/users/" + friend,
          +			success: function() {
          +				var tid = new tiddlyweb.Tiddler(title, userbag);
          +				tid.tags = ["follow", "excludeLists"];
          +				tid.put(function(tiddler) {
          +					printMessage("Added friend " + friend);
          +					renderFriend($("#friends ul")[0], friend);
          +					window.location.hash = "#friend-" + friend;
          +				}, function() {
          +					printError("Failed to add friend " + friend);
          +				})
          +			},
          +			error: function() {
          +				printError("No one with name " + friend + " exists!");
          +			}
          +		});
          +	}).appendTo(container);
          +	renderFriends();
          +}
          +$.ajax({
          +	url: "/status",
          +	dataType: "json",
          +	success: function(status) {
          +		user = status.username;
          +		userbag = new tiddlyweb.Bag(user + "_public", "/");
          +		$.ajax({ url: "/bags/" + user + "_public/tiddlers?select=tag:follow", dataType: "json", success: function(tiddlers) {
          +				for(var i = 0; i < tiddlers.length; i++) {
          +					var title = tiddlers[i].title;
          +					if(title.indexOf("@") === 0) {
          +						title = title.substr(1, title.length);
          +					}
          +					friends.push(title);
          +				}
          +				friends.sort();
          +				followWidget();
          +			}
          +		});
          +	}
          +})
          +
          +
          +
          Once you have some content then you may choose to determine a tiddler, or set of tiddlers to display each time you load ~TiddlySpace. This is determined by the [[DefaultTiddlers]].
          +
          +
          +
          <!DOCTYPE html>
          +<html>
          +<head>
          +	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
          +	<title>This Space</title>
          +	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
          +	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
          +	<!--[if lte IE 8]>
          +	<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
          +	<script type="text/javascript" src="/bags/common/tiddlers/es5-shim.min.js"></script>
          +	<![endif]-->
          +</head>
          +<body>
          +<div id="container">
          +	<div id="text-html" class="main section">
          +		<a class="app" href="/">home</a>
          +		<div class="left">
          +		<h2>About this space <button class='toggleNext'></button></h2>
          +		<div id="siteinfo"></div>
          +		<h2>Site Icon</h2>
          +		<div>
          +			<img id="siteicon" class="siteicon">
          +			<form id="upload" method="POST" enctype="multipart/form-data">
          +				<input type="hidden" name="title" value="SiteIcon" />
          +				<input type="hidden" name="tags" value="excludeLists">
          +				<input type="hidden" name="csrf_token" class="csrf" />
          +				<input type="file" name="file" accept="image/*" />
          +				<input class="btn" type="submit" value="upload" />
          +			</form>
          +			<div id="dropzone">Drop file here
          +				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
          +			</div>
          +		</div>
          +		<h2>Vital Statistics</h2>
          +		<div id="info">please wait while information is loaded about this space...</div>
          +		<button class="spacereset">Reset Space</button>
          +		<div class="reset-confirm-wrap messageArea">
          +			<button class="close-btn" title="cancel reset">×</button>
          +			<p>Are you sure you want to reset the space? You can't go back! This will remove all the content from the space!</p>
          +			<form class="cf">
          +				<label for="reset-confirm">Enter the space name to confirm.</label>
          +				<input type="text" name="reset-confirm" class="reset-confirm-input inputBox" />
          +				<button type="submit">Reset Now</button>
          +			</form>
          +			<div class="reset-message-area">
          +				<p class="performing">Resetting...</p>
          +				<p class="finished">Reset Done!</p>
          +				<p class="recipe-error-msg">Error removing includes. Please remove manually.</p>
          +			</div>
          +		</div>
          +		</div>
          +		<div class="right">
          +		<div class="ts-membership">
          +			<h2>
          +				Add Member
          +				<a href="http://docs.tiddlyspace.com/What%20is%20a%20member%3F" title="What is a Member?" class="help">What is a Member?</a>
          +			</h2>
          +			<div>
          +				<p>Add a new member to your space by entering their name below. Enter a space name instead and prefix with @ to add everyone who is already a member of that space.</p>
          +				<form class="ts-members">
          +					<input class="inputBox" type="text" name="username">
          +					<input type="submit" value="Add Member" class="btn" />
          +				</form>
          +			</div>
          +			<h2>
          +				Existing Members <button class='toggleNext'></button>
          +			</h2>
          +			<div>
          +				Your space currently has the following members: 
          +				<ul class="ts-members"></ul>
          +			</div>
          +			<h2>
          +				Include Space
          +				<a class="help" href="http://docs.tiddlyspace.com/What%20is%20space%20inclusion%3F" title="What is inclusion?">What is Inclusion?</a>
          +			</h2>
          +			<form class="ts-includes">
          +				<input class="inputBox" type="text" name="spacename">
          +				<input type="submit" value="Include Space" class="btn" />
          +			</form>
          +		</div>
          +		<div>
          +			<h2>Included Spaces <button class='toggleNext'></button></h2>
          +			<div>
          +			This space includes the following spaces:
          +			<ul class="ts-includes"></ul>
          +			</div>
          +		</div>
          +		</div>
          +		<div class="clear"></div>
          +	</div>
          +</div>
          +<script src='/bags/common/tiddlers/backstage.js'></script>
          +<script src='/bags/common/tiddlers/jquery.js'></script>
          +<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          +<script src='/bags/common/tiddlers/chrjs.space'></script>
          +<script src='/bags/common/tiddlers/chrjs.users'></script>
          +<script src='/bags/common/tiddlers/chrjs.identities'></script>
          +<script src='/bags/tiddlyspace/tiddlers/TiddlySpaceCSRF'></script>
          +<script src='/bags/common/tiddlers/jquery-form.js'></script>
          +<script src="/bags/common/tiddlers/siteiconupload.js"></script>
          +<script src="/bags/common/tiddlers/ts.js"></script>
          +<script src="/status.js"></script>
          +<script src="/bags/common/tiddlers/space.js"></script>
          +</body>
          +</html>
          +
          +
          +
          User-agent: *
          +Disallow: /bags
          +Disallow: /recipes
          +
          +
          +
          /***
          +|''Name''|ErrorHandlerPlugin|
          +|''Version''|0.4.3|
          +|''Author''|Jon Robson|
          +|''Description''|Localised tiddler save errors including edit conflict resolution.|
          +|''CoreVersion''|2.6.1|
          +|''Requires''|TiddlySpaceConfig|
          +***/
          +//{{{
          +(function($) {
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var currentSpace = tiddlyspace.currentSpace.name;
          +tiddlyspace.getLocalTitle = function(title, workspace, suffix) {
          +	var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          +	if(!suffix) {
          +		var isPublic = endsWith(workspace, "_public");
          +		suffix = tiddlyspace.resolveSpaceName(workspace);
          +		if(currentSpace == suffix) {
          +			suffix = isPublic ? "public" : "private";
          +		} else {
          +			suffix = "@%0".format(suffix);
          +		}
          +	}
          +	return "%0 *(%1)*".format(title, suffix);
          +};
          +
          +var sssp = config.extensions.ServerSideSavingPlugin;
          +
          +var msgs = config.messages.editConflict = {
          +	loading: "Loading..",
          +	resolve: "[[Edit Conflict]]@glossary: this tiddler may have been changed by someone else.",
          +	reviewDiff: "review (recommended)",
          +	reviewDiffTooltip: "review changes made to this tiddler",
          +	reviewDiffError: "error retrieving revision.",
          +	save: "overwrite",
          +	saveTooltip: "make this revision the top revision of this tiddler",
          +	discard: "cancel",
          +	discardTooltip: "undo changes to this tiddler and get most recent version",
          +	diffTitle: "%0",
          +	diffFieldTitle: "%0 - fields",
          +	diffTextTitle: "%0 - text",
          +	updating: "updating your version...",
          +	diffHeader: ["Review the changes that have been made whilst you were editing this tiddler. ",
          +		"Fold relevant changes back into your version.\n",
          +		"{{removed{Red}}} highlight shows content removed. ",
          +		"{{added{Green}}} highlight shows content added.\n"].join(""),
          +	diffTextHeader: "View changes in text",
          +	diffFieldsHeader: "View changes in fields"
          +};
          +
          +var plugin = config.extensions.errorHandler = {
          +	diffTags: ["excludeLists", "excludeMissing", "excludeSearch"],
          +	displayMessage: function(message, tiddler, context) {
          +		var desc = context && context.httpStatus ? context.statusText :
          +			sssp.locale.connectionError;
          +		var reportArea = plugin.reportError(tiddler.title);
          +		var msg = $("<div />").appendTo(reportArea);
          +		if(message == "saveConflict") {
          +			wikify(msgs.resolve, msg[0]);
          +			var choiceArea = $("<div />").appendTo(reportArea)[0];
          +			plugin.editConflictHandler(choiceArea, tiddler);
          +		} else {
          +			msg.text(sssp.locale[message].format(tiddler.title, desc));
          +		}
          +	},
          +	editConflictHandler: function(container, tiddler) {
          +		var title = tiddler.title;
          +		var myrev = tiddler.fields["server.page.revision"];
          +		// note user now needs to edit, fix problem and save. 
          +		// TODO: make sure this gets reset in save callback
          +		store.getTiddler(title).fields["server.page.revision"] = "false";
          +
          +		var diffBtn = createTiddlyButton(container, msgs.reviewDiff, msgs.reviewDiffTooltip, function(ev) {
          +			var title = $(ev.target).data("title");
          +			plugin.displayDiff(ev.target, store.getTiddler(title), myrev);
          +		});
          +		var saveBtn = createTiddlyButton(container, msgs.save, msgs.saveTooltip, function(ev) {
          +				var title = $(ev.target).data("title");
          +				var tid = store.saveTiddler(store.getTiddler(title));
          +				autoSaveChanges(null, [tid]);
          +			});
          +		var ignoreBtn = createTiddlyButton(container, msgs.discard, msgs.discardTooltip, function(ev) {
          +			var title = $(ev.target).text(msgs.updating).data("title");
          +			plugin.resetToServerVersion(store.getTiddler(title));
          +		});
          +		$([diffBtn, ignoreBtn, saveBtn]).data("title", title);
          +	},
          +	getDiffTiddlerTexts: function(diffText) {
          +		var chunks = diffText.split("\n  \n");
          +		if(chunks.length < 2) {
          +			return [chunks[0], ""];
          +		} else {
          +			var diffFieldsText = "{{diff{\n%0\n}}}".format(chunks[0]);
          +			diffText = '{{diff{\n%0\n}}}'.format(chunks.splice(1, chunks.length).join("\n"));
          +			return [diffText, diffFieldsText];
          +		}
          +	},
          +	makeDiffTiddler: function(title, diff) {
          +		var newTiddler = new Tiddler(title);
          +		var tags = plugin.diffTags;
          +		newTiddler.text = msgs.loading;
          +		newTiddler.fields.doNotSave = true;
          +		newTiddler.tags = diff ? tags.concat(["diff"]) : tags;
          +		newTiddler = store.saveTiddler(newTiddler);
          +		$.extend(store.getTiddler(title).fields,
          +			config.defaultCustomFields); // allow option to save it
          +		return newTiddler;
          +	},
          +	displayDiff: function(src, tiddler, latestRevision) {
          +		var adaptor = tiddler.getAdaptor();
          +		var title = tiddler.title;
          +		var ts = new Date().formatString("0hh:0mm:0ss");
          +		var suffix = "edit conflict %0".format(ts);
          +		var diffTitle = tiddlyspace.getLocalTitle(msgs.diffTitle.format(title), "", suffix);
          +		var diffTextTitle = tiddlyspace.getLocalTitle(msgs.diffTextTitle.format(title), "", suffix);
          +		var diffFieldsTitle = tiddlyspace.getLocalTitle(msgs.diffFieldTitle.format(title), "", suffix);
          +		plugin.makeDiffTiddler(diffTextTitle, true);
          +		plugin.makeDiffTiddler(diffFieldsTitle, true);
          +		var newTiddler = plugin.makeDiffTiddler(diffTitle, false);
          +		newTiddler.text = ['%0\n<<slider chkViewDiffText "%1" "%2">>\n',
          +			'<<slider chkViewDiffField "%3" "%4">>'].join("").
          +			format(msgs.diffHeader, diffTextTitle, msgs.diffTextHeader,
          +				diffFieldsTitle, msgs.diffFieldsHeader);
          +		store.saveTiddler(newTiddler);
          +
          +		var callback = function(r) {
          +			var text = plugin.getDiffTiddlerTexts(r);
          +			store.getTiddler(diffTextTitle).text = text[0];
          +			store.getTiddler(diffFieldsTitle).text = text[1];
          +			story.refreshTiddler(diffTitle, null, true);
          +		};
          +		var workspace = "bags/%0".format(tiddler.fields["server.bag"]);
          +		ajaxReq({
          +			type: "get",
          +			dataType: "text",
          +			url: "/diff?format=unified&rev1=%0/%1/%2&rev2=%0/%1".format(workspace, title, latestRevision),
          +			success: callback,
          +			error: function() {
          +				displayMessage(msgs.reviewDiffError);
          +			}
          +		});
          +		story.displayTiddler(src, diffTitle);
          +	},
          +	resetToServerVersion: function(tiddler) {
          +		var adaptor = tiddler.getAdaptor();
          +		var ctx = { 
          +			host: tiddler.fields["server.host"],
          +			workspace: "bags/" + tiddler.fields["server.bag"]
          +		};
          +		adaptor.getTiddler(tiddler.title, ctx, null, function(context) {
          +			store.saveTiddler(context.tiddler);
          +			story.refreshTiddler(tiddler.title);
          +			store.setDirty(false);
          +		});
          +	},
          +	reportError: function(title) {
          +		var el = story.getTiddler(title);
          +		if(!el) {
          +			el = story.displayTiddler(null, title);
          +		}
          +		return $("<div />").addClass("error annotation").prependTo(el)[0];
          +	}
          +};
          +
          +sssp.reportFailure = function(message, tiddler, context) {
          +	config.options.chkViewDiffText = config.options.chkViewDiffText === undefined ?
          +		true : config.options.chkViewDiffText;
          +	config.options.chkViewDiffFields = config.options.chkViewDiffFields || false;
          +	plugin.displayMessage(message, tiddler, context);
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          [[Replies and Notifications]]
          +
          +<<activity>>
          +
          +
          +
          <html>
          +<head>
          +	<title>Friends</title>
          +	<style type='text/css'>
          +		ul {
          +			list-style: none;
          +		}
          +		ul .friend {
          +			border-bottom: solid 1px black;
          +		}
          +		ul .friend .tiddler {
          +			margin-left: 10px;
          +			margin-bottom: 30px;
          +			padding: 10px;
          +			border: dotted 2px #CCC;
          +			color: #006100;
          +		}
          +		textarea {
          +			width: 100%;
          +			height: 150px;
          +		}
          +		.friend h2 {
          +			display: inline-block;
          +		}
          +		button {
          +			display: inline-block;
          +		}
          +		.inactiveFriend {
          +			background-color: #ccc;
          +			opacity: 0.1;
          +		}
          +	</style>
          +	<link rel="stylesheet" href="/HtmlCss" type="text/css">
          +</head>
          +<body>
          +<div id="container">
          +<div id="header">
          +<h1>Your friends</h1>
          +</div>
          +<noscript>
          +	javascript is required to see friend's activity
          +</noscript>
          +<div id='friends' class="section">loading...</div>
          +</div>
          +<script src="/bags/common/tiddlers/jquery.js" type="text/javascript" charset="utf-8"></script>
          +<script src="/bags/common/tiddlers/jquery-json.js" type="text/javascript" charset="utf-8"></script>
          +<script src="/bags/tiddlyspace/tiddlers/chrjs" type="text/javascript" charset="utf-8"></script>
          +<script type='text/javascript' src='/friendjs'></script>
          +</body>
          +</html>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceTiddlerIconsPlugin|
          +|''Version''|0.8.10|
          +|''Status''|@@beta@@|
          +|''Author''|Jon Robson|
          +|''Description''|Provides ability to render SiteIcons and icons that correspond to the home location of given tiddlers|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceTiddlerIconsPlugin.js|
          +|''Requires''|TiddlySpaceConfig BinaryTiddlersPlugin ImageMacroPlugin TiddlySpacePublishingCommands|
          +!Notes
          +{{{<<tiddlerOrigin>>}}} shows the origin of the tiddler it is being run on.
          +In TiddlySpace terms this means it will determine whether the tiddler is external, public or private.
          +Where private it will analyse whether a public version exists and distinguish between the different scenarios.
          +If a tiddler is external, the SiteIcon of that external space will be shown
          +
          +!Parameters
          +width / height : define a width or height of the outputted icon
          +label: if label parameter is set to yes, a label will accompany the icon.
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +if(!config.macros.image) {
          +	throw "Missing dependency: ImageMacroPlugin";
          +}
          +
          +var imageMacro = config.macros.image;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var tweb = config.extensions.tiddlyweb;
          +var cmds = config.commands;
          +var cmd = cmds.publishTiddler;
          +tiddlyspace.resolveSpaceName = function(value) {
          +	var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          +	if(value) {
          +		value = value.indexOf("bags/") === 0 ? value.substr(5) : value;
          +		value = value.indexOf("recipes/") === 0 ? value.substr(8) : value;
          +		if(value.indexOf("@") === 0) {
          +			value = value.substr(1);
          +		}
          +		if(endsWith(value, "_public")) {
          +			value = value.substr(0, value.length - 7);
          +		} else if(endsWith(value, "_private")) {
          +			value = value.substr(0, value.length - 8);
          +		}
          +		value = value.toLowerCase();
          +	}
          +	return value;
          +};
          +
          +tiddlyspace.renderAvatar = function(place, value, options) {
          +	options = options ? options : {};
          +	options.labelOptions = options.labelOptions ? options.labelOptions : { include: false, height: 48, width: 48 };
          +	options.imageOptions = options.imageOptions ? options.imageOptions : {};
          +	options.imageOptions.altImage = "/bags/common/tiddlers/defaultUserIcon";
          +	var container = $('<div class="siteIcon" />').appendTo(place);
          +	value = tiddlyspace.resolveSpaceName(value);
          +
          +	tweb.getStatus(function(status) {
          +		var link, noLabel;
          +		if(!value || value == config.views.wikified.defaultModifier ||
          +			value == config.views.wikified.shadowModifier) {
          +			var icon = config.views.wikified.shadowModifier == value ? "shadowIcon" : "missingIcon";
          +			if(store.tiddlerExists(icon)) {
          +				imageMacro.renderImage(container, icon, options.imageOptions);
          +			} else {
          +				noLabel = true;
          +			}
          +		} else {
          +			var spaceURI;
          +			if(value != tiddlyspace.currentSpace.name) {
          +				spaceURI = options.notSpace ? tiddlyspace.getHost(status.server_host) :
          +					tiddlyspace.getHost(status.server_host, value);
          +			}
          +			link = spaceURI ? $("<a />").attr("href", spaceURI) : $("<span />");
          +			link.text(value);
          +
          +			var imageOptions = options.imageOptions;
          +			if(options.spaceLink && !imageOptions.link) {
          +				imageOptions.link = spaceURI;
          +			}
          +			var avatar = options.notSpace ? false : value;
          +			var uri = tiddlyspace.getAvatar(status.server_host, avatar);
          +			imageMacro.renderImage(container, uri, options.imageOptions);
          +			if(!value) {
          +				value = "tiddlyspace";
          +			}
          +		}
          +		if(!noLabel && options.labelOptions.include) {
          +			var prefix = $("<span />").text(options.labelOptions.prefix || "")[0];
          +			var suffix = $("<span />").text(options.labelOptions.suffix || "")[0];
          +			$('<div class="label" />').append(prefix).append(link).
          +				append(suffix).appendTo(container);
          +		}
          +	});
          +	if(value) {
          +		var prefix = options.labelOptions.prefix || "";
          +		var suffix = options.labelOptions.suffix || "";
          +		var label = "%0%1%2".format(prefix, value, suffix);
          +		$(container).attr("title", label);
          +	}
          +};
          +
          +var originMacro = config.macros.tiddlerOrigin = {
          +	locale: {
          +		"shadow": "shadow tiddler",
          +		"missing": "missing tiddler",
          +		"private": "private",
          +		"unknown": "unknown state",
          +		"public": "public",
          +		"unsyncedPrivate": "unsynced and private",
          +		"unsyncedPublic": "unsynced and public",
          +		externalPrefix: "from ",
          +		externalBagSuffix: " bag",
          +		externalSuffix: " space",
          +		publishPrivateDeletePrivate: "Are you sure you want to make this tiddler public?",
          +		moveToPrivate: "Are you sure you want to make this tiddler private? Only members will be able to see it.",
          +		pleaseWait: "please wait..",
          +		keepPublic: "keep public",
          +		cannotPublishDirtyTiddler: "The current tiddler is unsaved so cannot be published. Please save the tiddler first.",
          +		keepPrivate: "keep private",
          +		makePublic: "make public",
          +		makePrivate: "make private"
          +	},
          +	handler: function(place, macroName, params,wikifier, paramString, tiddler){
          +		var adaptor = tiddler.getAdaptor();
          +		var btn = $("<div />").addClass("originButton").attr("params", paramString).
          +			attr("refresh", "macro").attr("macroName", macroName).appendTo(place)[0];
          +		$(btn).data("tiddler", tiddler);
          +		originMacro.refresh(btn);
          +	},
          +	refresh: function(btn) {
          +		$(btn).empty();
          +		var paramString = $(btn).attr("params");
          +		var tiddler = $(btn).data("tiddler");
          +		var options = originMacro.getOptions(paramString);
          +		var type = tiddlyspace.getTiddlerStatusType(tiddler);
          +		originMacro.renderIcon(tiddler, type, btn, options);
          +	},
          +	getOptions: function(paramString) {
          +		paramString = "%0 label:no width:48 height:48 spaceLink:yes preserveAspectRatio:yes".format(paramString);
          +		var parsedParams = paramString.parseParams("name");
          +		var params = parsedParams[0].name;
          +		var options = {
          +			labelOptions: originMacro._getLabelOptions(parsedParams),
          +			imageOptions: imageMacro.getArguments(paramString, []),
          +			noclick: parsedParams[0].interactive &&
          +				parsedParams[0].interactive[0] == "no" ? true : false
          +		};
          +		if(!options.noclick) {
          +			var spaceLink = parsedParams[0].spaceLink;
          +			options.spaceLink = spaceLink && spaceLink[0] == "no" ? false : true;
          +		} else {
          +			options.spaceLink = false;
          +		}
          +		return options;
          +	},
          +	_getLabelOptions: function(parsedParams) {
          +		parsedParams = parsedParams[0];
          +		var includeLabel = !parsedParams.label || ( parsedParams.label && parsedParams.label[0] == "yes" );
          +		var prefix = parsedParams.labelPrefix ? parsedParams.labelPrefix[0] : false;
          +		var suffix = parsedParams.labelSuffix ? parsedParams.labelSuffix[0] : false;
          +		return { include: includeLabel, suffix: suffix, prefix: prefix };
          +	},
          +	_isSpace: function(value) {
          +		value = value ? value : "";
          +		var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          +		if(endsWith(value, "_private") || endsWith(value, "_public")) {
          +			return true;
          +		} else {
          +			return false;
          +		}
          +	},
          +	renderIcon: function(tiddler, type, button, options) {
          +		var locale = originMacro.locale;
          +		originMacro.annotateTiddler(button, type);
          +		if(type != "external") {
          +			originMacro.showPrivacyRoundel(tiddler, type, button,
          +				options);
          +		} else {
          +			var prefix = options.labelOptions.prefix, suffix = options.labelOptions.suffix;
          +			var space = tiddler.fields["server.bag"];
          +			options.notSpace = !originMacro._isSpace(space);
          +			options.labelOptions.prefix = prefix ? prefix : locale.externalPrefix;
          +			options.labelOptions.suffix = suffix ? suffix : (options.notSpace ? locale.externalBagSuffix : locale.externalSuffix);
          +
          +			tiddlyspace.renderAvatar(button, space, options);
          +		}
          +	},
          +	showPrivacyRoundel: function(thisTiddler, privacyType, button, options) {
          +		// there is a public tiddler as well as the current tiddler!
          +		// TODO: not this is not enough.. we also need to check if the public tiddler is the same as..
          +		// .. the private tiddler to determine whether this is a draft
          +		// use of hashes would be useful here.
          +		$(button).empty();
          +		var icon = "%0Icon".format(privacyType);
          +		if(privacyType.indexOf("unsynced") === 0 && !store.tiddlerExists(icon)) {
          +			icon = "unsyncedIcon";
          +		}
          +		if(privacyType == "shadow") {
          +			if(!store.tiddlerExists(icon)) {
          +				icon = "bags/tiddlyspace/tiddlers/SiteIcon";
          +			}
          +		}
          +		if(privacyType == "missing" && !store.tiddlerExists(icon)) {
          +			return; // the user is not making use of the missingIcon
          +		} else {
          +			imageMacro.renderImage(button, icon, options.imageOptions);
          +			originMacro.showLabel(button, privacyType, options.labelOptions);
          +			var cmd = originMacro.iconCommands[privacyType];
          +			if(cmd && thisTiddler && !options.noclick) {
          +				$(button).click(function(ev) {
          +					cmd(ev, thisTiddler);
          +				});
          +			}
          +		}
          +	},
          +	annotateTiddler: function(place, type) {
          +		var tidEl = $(story.findContainingTiddler(place));
          +		tidEl.
          +			removeClass("private public external privateAndPublic privateNotPublic shadow").
          +			addClass(type);
          +	},
          +	showLabel: function(button, type, options) {
          +		var locale = originMacro.locale;
          +		var label = options.label ? options.label : locale[type];
          +		label = label ? label : locale.unknown;
          +		if(options && options.include) {
          +			$('<div class="roundelLabel" />').html(label).appendTo(button);
          +		}
          +		$(button).attr("title", label);
          +	},
          +	confirm: function(ev, msg, onYes, options) {
          +		options = options ? options : {};
          +		onYes = onYes ? onYes : function(ev) {};
          +		var btn = $(".originButton", $(ev.target).parents())[0];
          +		var popup = Popup.create(btn);
          +		$(popup).addClass("confirmationPopup");
          +		$("<div />").addClass("message").text(msg).appendTo(popup);
          +		$("<button />").addClass("button").text(options.yesLabel || "yes").appendTo(popup).click(onYes);
          +		$("<button />").addClass("button").text(options.noLabel || "no").click(function(ev) {
          +			Popup.remove();
          +		}).appendTo(popup);
          +		Popup.show();
          +		ev.stopPropagation();
          +		return false;
          +	},
          +	alert: function(ev, msg) {
          +		var popup = Popup.create(ev.target);
          +		$(popup).addClass("confirmationPopup alert");
          +		$("<div />").addClass("message").text(msg).appendTo(popup);
          +		Popup.show();
          +		ev.stopPropagation();
          +	},
          +	reportDirty: function(el) {
          +		originMacro.alert(el, originMacro.locale.cannotPublishDirtyTiddler);
          +	},
          +	iconCommands: {
          +		"public": function(ev, tiddler) {
          +			if(!readOnly) {
          +				var locale = originMacro.locale;
          +				var msg = locale.moveToPrivate;
          +				if(story.isDirty(tiddler.title)) {
          +					originMacro.reportDirty(ev);
          +				} else {
          +					originMacro.confirm(ev, msg, function(ev) {
          +						var target = $(ev.target);
          +						var onComplete = function(info) {};
          +						var privateBag = cmd.toggleBag(tiddler, "private");
          +						cmd.moveTiddler(tiddler, {
          +							title: tiddler.title,
          +							fields: { "server.bag": privateBag }
          +						}, onComplete);
          +					}, { yesLabel: locale.makePrivate, noLabel: locale.keepPublic });
          +				}
          +			}
          +		},
          +		"private": function(ev, tiddler) {
          +			if(!readOnly) {
          +				var locale = originMacro.locale;
          +				var adaptor = tiddler.getAdaptor();
          +				var publishTo = tiddler.fields["publish.name"] || tiddler.title;
          +				var workspace = "bags/%0".format(tiddler.fields["server.bag"]);
          +				tiddler.fields["server.workspace"] = workspace;
          +				var publicBag = cmd.toggleBag(tiddler, "public");
          +				var msg;
          +				msg = locale.publishPrivateDeletePrivate;
          +				var title = tiddler.title;
          +				var newTitle = publishTo || tiddler.title;
          +				tiddler.fields["server.page.revision"] = "false";
          +				store.addTiddler(tiddler);
          +				if(story.isDirty(tiddler.title)) {
          +					originMacro.reportDirty(ev);
          +				} else {
          +					originMacro.confirm(ev, msg, function(ev) {
          +						var onComplete = function(info) {};
          +						cmd.moveTiddler(tiddler, {
          +							title: newTitle,
          +							fields: { "server.bag": publicBag }
          +						}, onComplete);
          +					}, { yesLabel: locale.makePublic, noLabel: locale.keepPrivate });
          +				}
          +			}
          +		}
          +	}
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|ServerSideSavingPlugin|
          +|''Description''|server-side saving|
          +|''Author''|FND|
          +|''Version''|0.6.5|
          +|''Status''|stable|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/ServerSideSavingPlugin.js|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''CoreVersion''|2.5.3|
          +|''Keywords''|serverSide|
          +!Notes
          +This plugin relies on a dedicated adaptor to be present.
          +The specific nature of this plugin depends on the respective server.
          +!Revision History
          +!!v0.1 (2008-11-24)
          +* initial release
          +!!v0.2 (2008-12-01)
          +* added support for local saving
          +!!v0.3 (2008-12-03)
          +* added Save to Web macro for manual synchronization
          +!!v0.4 (2009-01-15)
          +* removed ServerConfig dependency by detecting server type from the respective tiddlers
          +!!v0.5 (2009-08-25)
          +* raised CoreVersion to 2.5.3 to take advantage of core fixes
          +!!v0.6 (2010-04-21)
          +* added notification about cross-domain restrictions to ImportTiddlers
          +!To Do
          +* conflict detection/resolution
          +* rename to ServerLinkPlugin?
          +* document deletion/renaming convention
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +readOnly = false; //# enable editing over HTTP
          +
          +var plugin = config.extensions.ServerSideSavingPlugin = {};
          +
          +plugin.locale = {
          +	saved: "%0 saved successfully",
          +	saveError: "Error saving %0: %1",
          +	saveConflict: "Error saving %0: edit conflict",
          +	deleted: "Removed %0",
          +	deleteError: "Error removing %0: %1",
          +	deleteLocalError: "Error removing %0 locally",
          +	removedNotice: "This tiddler has been deleted.",
          +	connectionError: "connection could not be established",
          +	hostError: "Unable to import from this location due to cross-domain restrictions."
          +};
          +
          +plugin.sync = function(tiddlers) {
          +	tiddlers = tiddlers && tiddlers[0] ? tiddlers : store.getTiddlers();
          +	$.each(tiddlers, function(i, tiddler) {
          +		var changecount = parseInt(tiddler.fields.changecount, 10);
          +		if(tiddler.fields.deleted === "true" && changecount === 1) {
          +			plugin.removeTiddler(tiddler);
          +		} else if(tiddler.isTouched() && !tiddler.doNotSave() &&
          +				tiddler.getServerType() && tiddler.fields["server.host"]) { // XXX: server.host could be empty string
          +			delete tiddler.fields.deleted;
          +			plugin.saveTiddler(tiddler);
          +		}
          +	});
          +};
          +
          +plugin.saveTiddler = function(tiddler) {
          +	try {
          +		var adaptor = this.getTiddlerServerAdaptor(tiddler);
          +	} catch(ex) {
          +		return false;
          +	}
          +	var context = {
          +		tiddler: tiddler,
          +		changecount: tiddler.fields.changecount,
          +		workspace: tiddler.fields["server.workspace"]
          +	};
          +	var serverTitle = tiddler.fields["server.title"]; // indicates renames
          +	if(!serverTitle) {
          +		tiddler.fields["server.title"] = tiddler.title;
          +	} else if(tiddler.title != serverTitle) {
          +		return adaptor.moveTiddler({ title: serverTitle },
          +			{ title: tiddler.title }, context, null, this.saveTiddlerCallback);
          +	}
          +	var req = adaptor.putTiddler(tiddler, context, {}, this.saveTiddlerCallback);
          +	return req ? tiddler : false;
          +};
          +
          +plugin.saveTiddlerCallback = function(context, userParams) {
          +	var tiddler = context.tiddler;
          +	if(context.status) {
          +		if(tiddler.fields.changecount == context.changecount) { //# check for changes since save was triggered
          +			tiddler.clearChangeCount();
          +		} else if(tiddler.fields.changecount > 0) {
          +			tiddler.fields.changecount -= context.changecount;
          +		}
          +		plugin.reportSuccess("saved", tiddler);
          +		store.setDirty(false);
          +	} else {
          +		if(context.httpStatus == 412) {
          +			plugin.reportFailure("saveConflict", tiddler);
          +		} else {
          +			plugin.reportFailure("saveError", tiddler, context);
          +		}
          +	}
          +};
          +
          +plugin.removeTiddler = function(tiddler) {
          +	try {
          +		var adaptor = this.getTiddlerServerAdaptor(tiddler);
          +	} catch(ex) {
          +		return false;
          +	}
          +	var context = {
          +		host: tiddler.fields["server.host"],
          +		workspace: tiddler.fields["server.workspace"],
          +		tiddler: tiddler
          +	};
          +	var req = adaptor.deleteTiddler(tiddler, context, {}, this.removeTiddlerCallback);
          +	return req ? tiddler : false;
          +};
          +
          +plugin.removeTiddlerCallback = function(context, userParams) {
          +	var tiddler = context.tiddler;
          +	if(context.status) {
          +		if(tiddler.fields.deleted === "true") {
          +			store.deleteTiddler(tiddler.title);
          +		} else {
          +			plugin.reportFailure("deleteLocalError", tiddler);
          +		}
          +		plugin.reportSuccess("deleted", tiddler);
          +		store.setDirty(false);
          +	} else {
          +		plugin.reportFailure("deleteError", tiddler, context);
          +	}
          +};
          +
          +plugin.getTiddlerServerAdaptor = function(tiddler) { // XXX: rename?
          +	var type = tiddler.fields["server.type"] || config.defaultCustomFields["server.type"];
          +	return new config.adaptors[type]();
          +};
          +
          +plugin.reportSuccess = function(msg, tiddler) {
          +	displayMessage(plugin.locale[msg].format([tiddler.title]));
          +};
          +
          +plugin.reportFailure = function(msg, tiddler, context) {
          +	var desc = (context && context.httpStatus) ? context.statusText :
          +		plugin.locale.connectionError;
          +	displayMessage(plugin.locale[msg].format([tiddler.title, desc]));
          +};
          +
          +config.macros.saveToWeb = { // XXX: hijack existing sync macro?
          +	locale: { // TODO: merge with plugin.locale?
          +		btnLabel: "save to web",
          +		btnTooltip: "synchronize changes",
          +		btnAccessKey: null
          +	},
          +
          +	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          +		createTiddlyButton(place, this.locale.btnLabel, this.locale.btnTooltip,
          +			plugin.sync, null, null, this.locale.btnAccessKey);
          +	}
          +};
          +
          +// hijack saveChanges to trigger remote saving
          +var _saveChanges = saveChanges;
          +saveChanges = function(onlyIfDirty, tiddlers) {
          +	if(window.location.protocol == "file:") {
          +		_saveChanges.apply(this, arguments);
          +	} else {
          +		plugin.sync(tiddlers);
          +	}
          +};
          +
          +// override removeTiddler to flag tiddler as deleted -- XXX: use hijack to preserve compatibility?
          +TiddlyWiki.prototype.removeTiddler = function(title) { // XXX: should override deleteTiddler instance method?
          +	var tiddler = this.fetchTiddler(title);
          +	if(tiddler) {
          +		tiddler.tags = ["excludeLists", "excludeSearch", "excludeMissing"];
          +		tiddler.text = plugin.locale.removedNotice;
          +		tiddler.fields.deleted = "true"; // XXX: rename to removed/tiddlerRemoved?
          +		tiddler.fields.changecount = "1";
          +		this.notify(title, true);
          +		this.setDirty(true);
          +	}
          +};
          +
          +// hijack ImportTiddlers wizard to handle cross-domain restrictions
          +var _onOpen = config.macros.importTiddlers.onOpen;
          +config.macros.importTiddlers.onOpen = function(ev) {
          +	var btn = $(resolveTarget(ev));
          +	var url = btn.closest(".wizard").find("input[name=txtPath]").val();
          +	if(window.location.protocol != "file:" && url.indexOf("://") != -1) {
          +		var host = url.split("/")[2];
          +		var macro = config.macros.importTiddlers;
          +		if(host != window.location.host) {
          +			btn.text(macro.cancelLabel).attr("title", macro.cancelPrompt);
          +			btn[0].onclick = macro.onCancel;
          +			$('<span class="status" />').text(plugin.locale.hostError).insertAfter(btn);
          +			return false;
          +		}
          +	}
          +	return _onOpen.apply(this, arguments);
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|GroupByPlugin|
          +|''Description''|Mimics allTags macro to provide ways of creating lists grouping tiddlers by any field|
          +|''Version''|0.6.1|
          +|''Author''|Jon Robson|
          +|''Status''|beta|
          +!Usage
          +{{{<<groupBy tags>>}}}
          +mimics allTags macro
          +
          +{{{<<groupBy server.bag>>}}}
          +groups by the server.bag field (this version contains TiddlySpace specific code for turning a bag into a space name)
          +
          +{{{groupBy modified dateFormat:"YYYY"}}}
          +group tiddlers by year.
          +
          +{{{<<groupBy tags exclude:excludeLists exclude:systemConfig>>}}}
          +group tiddlers by tag but exclude the tags with values excludeLists and systemConfig
          +
          +Within that group you can also exclude things by filter
          +{{{groupBy modifier filter:[tag[film]]}}}
          +will group tiddlers tagged with film by modifier.
          +***/
          +//{{{
          +(function($) {
          +var taglocale = config.views.wikified.tag;
          +var macro = config.macros.groupBy = {
          +	locale: {
          +		tooltip: "all tiddlers in group %0",
          +		noTiddlers: "no tiddlers",
          +		openAllText: taglocale.openAllText,
          +		openAllTooltip: taglocale.openAllTooltip,
          +		openTiddler: "open tiddler with title %0"
          +	},
          +	morpher: {
          +		// TODO: note currently the following 2 morphers are TiddlySpace specific and probably should be in separate plugin
          +		"server.workspace": function(value, options) {
          +			return macro.morpher["server.bag"](value.replace("bags/", "").replace("recipes/", ""));
          +		},
          +		"server.bag": function(value, options) {
          +			if(typeof(value) !== "string") {
          +				return false;
          +			} else if(value.indexOf("_public") === -1 && value.indexOf("_private") === -1) {
          +				value = "*%0".format(value); // add star for non-space bags.
          +			}
          +			return value.replace("_public", "").replace("_private", "");
          +		},
          +		created: function(value, options) {
          +			return value.formatString(options.dateFormat || "DD MMM YYYY");
          +		},
          +		modified: function(value, options) {
          +			return macro.morpher.created(value, options);
          +		}
          +	},
          +
          +	handler: function(place, macroName, params, wikifier, paramString) {
          +		var field = params[0] || "server.workspace";
          +		var dateFormat = params[1] || "DD MMM YYYY";
          +		var container = $("<div />").attr("macroName", macroName).addClass("groupBy").
          +			attr("refresh", "macro").attr("fieldName", field).
          +			attr("paramString", paramString).
          +			attr("dateFormat", dateFormat).appendTo(place)[0];
          +		macro.refresh(container);
          +	},
          +	isTypeArray: function(value) {
          +		var valueType = typeof value;
          +		if(valueType === "object" && typeof value.length === "number" &&
          +			!(value.propertyIsEnumerable("length")) &&
          +			typeof value.splice === "function") { //is Array
          +			return true;
          +		} else {
          +			return false;
          +		}
          +	},
          +	_onClickGroup: function(ev, options) {
          +		var i, target = ev.target, locale = macro.locale;
          +		var tiddlers = $(target).closest(".templateContainer").data("tiddlers");
          +		var popup = $(Popup.create(target)).addClass("taggedTiddlerList")[0];
          +		var value = $(target).attr("value");
          +		var openAll = createTiddlyButton($("<li />").appendTo(popup)[0],
          +			locale.openAllText.format(value), locale.openAllTooltip);
          +		$(openAll).click(function(ev) {
          +			story.displayTiddlers(ev.target, tiddlers);
          +			return false;
          +		});
          +		var listBreak = $("<li />").addClass("listBreak").html("<div />").appendTo(popup);
          +		for(i = 0; i < tiddlers.length; i++) {
          +			var item = $("<li />").appendTo(popup)[0];
          +			var template = store.getTiddlerText(options.template) || macro.template;
          +			wikify(template, item, null, tiddlers[i]);
          +		}
          +		listBreak.clone().appendTo(popup);
          +		$(createTiddlyLink($("<li />").appendTo(popup)[0], value, false)).
          +			text(locale.openTiddler.format(value));
          +		Popup.show();
          +		ev.stopPropagation();
          +		return false;
          +	},
          +	_refresh: function(container, tiddlers, options) {
          +		var totalGroups = 0, locale = macro.locale, i, j;
          +		var excludeValues = options.exclude;
          +		var values = {}, value_ids = [];
          +		var field = options.field;
          +		var morpher = macro.morpher[field] || function(value) {
          +			return value;
          +		};
          +		for(i = 0; i < tiddlers.length; i++) {
          +			var tiddler = tiddlers[i];
          +			var value = tiddler[field] || tiddler.fields[field];
          +			value = macro.isTypeArray(value) ? value : [ value ];
          +			for(j = 0; j < value.length; j++) {
          +				var v = morpher(value[j], options);
          +				if(v && $.inArray(v, excludeValues) === -1) {
          +					totalGroups += 1;
          +					if(!values[v]) {
          +						values[v] = [];
          +					}
          +					values[v].push(tiddler);
          +					value_ids.pushUnique(v);
          +				}
          +			}
          +		}
          +		var ul = $("<ul />").appendTo(container)[0];
          +		if(totalGroups === 0) {
          +			$("<li />").addClass("listTitle").text(locale.noTiddlers);
          +		}
          +		value_ids = value_ids.sort();
          +		var groupTemplate = store.getTiddlerText(options.groupTemplate);
          +		var onClick = function(ev) {
          +			macro._onClickGroup(ev, options);
          +		};
          +		for(i = 0; i < value_ids.length; i++) {
          +			var title = value_ids[i];
          +			var info = getTiddlyLinkInfo(title);
          +			tiddlers = values[title];
          +			var btn = createTiddlyButton($("<li />").appendTo(ul)[0],
          +				"%0 (%1)".format(title, tiddlers.length), locale.tooltip.format(title), null, info.classes);
          +			if(groupTemplate) {
          +				$(btn).empty();
          +				wikify(groupTemplate, btn, null, tiddlers[0]);
          +			}
          +			$(btn).click(onClick).attr("value", title).attr("refresh", "link").attr("tiddlyLink", title);
          +			$(btn).addClass("templateContainer").data("tiddlers", tiddlers);
          +		}
          +	},
          +	refresh: function(container) {
          +		container = $(container).empty();
          +		var paramString = container.attr("paramString");
          +		var args = paramString.parseParams("name", null, true, false, true)[0];
          +		var options = { field: container.attr("fieldName"), dateFormat: container.attr("dateFormat"), exclude: args.exclude || [],
          +			template: args.template ? args.template[0] : false, groupTemplate: args.groupTemplate ? args.groupTemplate[0] : "" };
          +		var tiddlers = args.filter ? store.filterTiddlers(args.filter[0]) : store.getTiddlers("title");
          +		macro._refresh(container, tiddlers, options);
          +	},
          +	template: "<<view title link>>"
          +};
          +
          +}(jQuery));
          +//}}}
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceViewTypes|
          +|''Version''|0.6.0|
          +|''Status''|@@beta@@|
          +|''Description''|Provides TiddlySpace specific view types|
          +|''Author''|Jon Robson|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceViewTypes.js|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceTiddlerIconsPlugin|
          +!Usage
          +Provides replyLink, spaceLink and SiteIcon view types.
          +!!SiteIcon view parameters
          +* labelPrefix / labelSuffix : prefix or suffix the label with additional text. eg. labelPrefix:'modified by '
          +* spaceLink: if set to "yes" will make any avatars link to the corresponding space. {{{<<originMacro spaceLink:yes>>}}}
          +
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var tiddlyspace = config.extensions.tiddlyspace;
          +var originMacro = config.macros.tiddlerOrigin;
          +var tweb = config.extensions.tiddlyweb;
          +
          +config.macros.view.replyLink = {
          +	locale: {
          +		label: "Reply to this tiddler"
          +	}
          +};
          +
          +var _replyButtons = [];
          +var _replyInitialised, _replyScriptLoaded;
          +config.macros.view.views.replyLink = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +	var valueField = params[0];
          +	var imported;
          +	if(valueField == "title") { // special casing for imported tiddlers
          +		var localTitle = tiddler.title;
          +		var serverTitle = tiddler.fields["server.title"];
          +		if(serverTitle && localTitle != serverTitle) {
          +			value = serverTitle ? serverTitle : localTitle;
          +			imported = true;
          +		}
          +	} else {
          +		title = tiddler[valueField] ? tiddler[valueField] : tiddler.fields[valueField];
          +	}
          +	var args = paramString.parseParams("anon")[0];
          +	var label = (args.label) ? args.label : config.macros.view.replyLink.locale.label;
          +	var space;
          +	if(tiddler) {
          +		var bag = tiddler.fields["server.bag"];
          +		space = tiddlyspace.resolveSpaceName(bag);
          +	}
          +	var container = $('<span class="replyLink" />').appendTo(place)[0];
          +
          +	tweb.getUserInfo(function(user) {
          +		if ((!user.anon) && ((space && user.name != space &&
          +				user.name != tiddlyspace.currentSpace.name) || imported)) {
          +			var link = $("<a />")
          +				.text(config.macros.view.replyLink.locale.label)
          +				.appendTo(container)[0];
          +
          +			if(typeof(createReplyButton) === "undefined") {
          +				_replyButtons.push(link);
          +			}
          +			if(_replyInitialised) {
          +				createReplyButton(link);
          +			} else if(!_replyScriptLoaded) {
          +				_replyScriptLoaded = true;
          +				$.getScript("/bags/common/tiddlers/_reply-button.js",
          +					function() {
          +						_replyInitialised = true;
          +						for(var i = 0; i < _replyButtons.length; i++) {
          +							createReplyButton(_replyButtons[i]);
          +						}
          +						_replyButtons = [];
          +					});
          +			}
          +		}
          +	});
          +
          +};
          +
          +config.macros.view.views.spaceLink = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +		var spaceName = tiddlyspace.resolveSpaceName(value);
          +		var isBag = params[0] == "server.bag" && value === spaceName ? true : false;
          +		var args = paramString.parseParams("anon")[0];
          +		var titleField = args.anon[2];
          +		var labelField = args.labelField ? args.labelField[0] : false;
          +		var label;
          +		if(labelField) {
          +			label = tiddler[labelField] ? tiddler[labelField] : tiddler.fields[labelField];
          +		} else {
          +			label = args.label ? args.label[0] : false;
          +		}
          +		var title = tiddler[titleField] ? tiddler[titleField] : tiddler.fields[titleField];
          +
          +		var link = createSpaceLink(place, spaceName, title, label, isBag);
          +		if(args.external && args.external[0] == "no") {
          +			$(link).click(function(ev) {
          +				var el = $(ev.target);
          +				var title = el.attr("tiddler");
          +				var bag = el.attr("bag");
          +				var space = el.attr("tiddlyspace");
          +				bag = space ? space + "_public" : bag;
          +				if(title && bag) {
          +					ev.preventDefault();
          +					tiddlyspace.displayServerTiddler(el[0], title,
          +						"bags/" + bag);
          +				}
          +				return false;
          +			});
          +		}
          +};
          +
          +config.macros.view.views.SiteIcon = function(value, place, params, wikifier,
          +		paramString, tiddler) {
          +	var options = originMacro.getOptions(paramString);
          +	if(!tiddler || value == "None") { // some core tiddlers lack modifier
          +		value = false;
          +	}
          +	var field = params[0];
          +	if(field == "server.bag") {
          +		options.notSpace = !originMacro._isSpace(value);
          +	}
          +	tiddlyspace.renderAvatar(place, value, options);
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          /***
          +|''Name''|DiffFormatter|
          +|''Description''|highlighting of text comparisons|
          +|''Author''|FND|
          +|''Version''|0.9.0|
          +|''Status''|beta|
          +|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/FND/formatters/DiffFormatter.js|
          +|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
          +|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          +|''Keywords''|formatting|
          +!Description
          +Highlights changes in a unified [[diff|http://en.wikipedia.org/wiki/Diff#Unified_format]].
          +!Notes
          +Based on Martin Budden's [[DiffFormatterPlugin|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/DiffFormatterPlugin.js]].
          +!Usage
          +The formatter is applied to blocks wrapped in <html><code>{{{diff{..}}}</code></html> within tiddlers tagged with "diff".
          +!Revision History
          +!!v0.9 (2010-04-07)
          +* initial release; fork of DiffFormatterPlugin
          +!StyleSheet
          +.diff { white-space: pre; font-family: monospace; }
          +.diff ins, .diff del { display: block; text-decoration: none; }
          +.diff ins { background-color: #dfd; }
          +.diff del { background-color: #fdd; }
          +.diff .highlight { background-color: [[ColorPalette::SecondaryPale]]; }
          +!Code
          +***/
          +//{{{
          +(function() {
          +
          +config.shadowTiddlers.StyleSheetDiffFormatter = store.getTiddlerText(tiddler.title + "##StyleSheet");
          +store.addNotification("StyleSheetDiffFormatter", refreshStyles);
          +
          +var formatters = [{
          +		name: "diffWrapper",
          +		match: "^\\{\\{diff\\{\n", // XXX: suboptimal
          +		termRegExp: /(.*\}\}\})$/mg,
          +		handler: function(w) {
          +			var el = createTiddlyElement(w.output, "div", null, "diff");
          +			w.subWikifyTerm(el, this.termRegExp);
          +		}
          +	}, {
          +		name: "diffRange",
          +		match: "^(?:@@|[+\\-]{3}) ",
          +		lookaheadRegExp: /^(?:@@|[+\-]{3}) .*\n/mg,
          +		handler: function(w) {
          +			createTiddlyElement(w.output, "div", null, "highlight").
          +				innerHTML = "&#8230;";
          +			this.lookaheadRegExp.lastIndex = w.matchStart;
          +			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          +			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
          +				w.nextMatch = this.lookaheadRegExp.lastIndex;
          +			}
          +		}
          +	}, {
          +		name: "diffAdded",
          +		match: "^\\+",
          +		termRegExp: /(\n)/mg,
          +		handler: function(w) {
          +			var el = createTiddlyElement(w.output, "ins", null, "added");
          +			w.subWikifyTerm(el, this.termRegExp);
          +		}
          +	}, {
          +		name: "diffRemoved",
          +		match: "^-",
          +		termRegExp: /(\n)/mg,
          +		handler: function(w) {
          +			var el = createTiddlyElement(w.output, "del", null, "removed");
          +			w.subWikifyTerm(el, this.termRegExp);
          +		}
          +	}
          +];
          +
          +config.parsers.diffFormatter = new Formatter(formatters);
          +config.parsers.diffFormatter.format = "diff";
          +config.parsers.diffFormatter.formatTag = "diff";
          +
          +})();
          +//}}}
          +
          +
          +
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="364 157 64 51" width="30" height="30"><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><g><path class="glyph" d="M 364.50006 184.50061 L 386.99985 207.00037 L 396 198.00002 L 373.50003 175.50066 Z M 403.02295 181.97704 C 400.38693 179.34099 396.11307 179.34099 393.47702 181.97704 C 390.841 184.61307 390.841 188.88695 393.47702 191.52298 C 396.11307 194.15903 400.38693 194.15903 403.02295 191.52298 C 405.65906 188.88695 405.65906 184.61307 403.02295 181.97704 M 414.27298 170.72704 C 411.63693 168.091 407.36307 168.091 404.72702 170.72704 C 402.091 173.36308 402.091 177.63693 404.72702 180.27296 C 407.36307 182.90901 411.63693 182.90901 414.27298 180.27296 C 416.90903 177.63693 416.90903 173.36308 414.27298 170.72704 M 425.523 159.47705 C 422.88696 156.841 418.6131 156.841 415.97705 159.47705 C 413.341 162.11308 413.341 166.38695 415.97705 169.02295 C 418.6131 171.65903 422.88696 171.65903 425.523 169.02295 C 428.15906 166.38695 428.15906 162.11308 425.523 159.47705" fill="#020202"/></g></g></svg>
          +
          +
          +
          /***
          +|''Name''|TiddlySpaceCloneCommand|
          +|''Version''|0.5.8|
          +|''Description''|provides a toolbar command for cloning external tiddlers|
          +|''Status''|stable|
          +|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceCloneCommand.js|
          +|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
          +!Code
          +***/
          +//{{{
          +(function($) {
          +
          +var cmd = config.commands;
          +var tiddlyspace = config.extensions.tiddlyspace;
          +
          +var fieldsCache = {};
          +
          +cmd.cloneTiddler = {
          +	text: cmd.editTiddler.text,
          +	tooltip: "Create a copy of this tiddler in the current space",
          +	errorMsg: "Error publishing %0: %1",
          +
          +	isEnabled: function(tiddler) {
          +		return !config.filterHelpers.is.local(tiddler) && !readOnly;
          +	},
          +	handler: function(ev, src, title) {
          +		var tiddler = store.getTiddler(title);
          +		if(tiddler) {
          +			fieldsCache[title] = $.extend({}, tiddler.fields);
          +			tiddler.fields["server.workspace"] = tiddlyspace.getCurrentWorkspace(config.options.chkPrivateMode ?
          +		"private" : "public");
          +			tiddler.fields["server.permissions"] = "read, write, create"; // no delete
          +			delete tiddler.fields["server.page.revision"];
          +			delete tiddler.fields["server.title"];
          +			delete tiddler.fields["server.etag"];
          +			// special handling for pseudo-shadow tiddlers
          +			if(tiddlyspace.coreBags.contains(tiddler.fields["server.bag"])) {
          +				tiddler.tags.remove("excludeLists");
          +			}
          +		} else { // ensure workspace is the current space
          +			var el = story.findContainingTiddler(src);
          +			el = $(el);
          +			var fields = el.attr("tiddlyfields");
          +			if(fields) { // inherited via TiddlyLink
          +				fields = fields.decodeHashMap();
          +				fields["server.workspace"] = config.
          +					defaultCustomFields["server.workspace"];
          +			} else {
          +				fields = config.defaultCustomFields;
          +			}
          +			fields = String.encodeHashMap(fields);
          +			el.attr("tiddlyfields", fields);
          +		}
          +		cmd.editTiddler.handler.apply(this, arguments);
          +		if(tiddler) {
          +			tiddler.fields["server.permissions"] += ", delete";
          +		}
          +		return false;
          +	}
          +};
          +
          +cmd.editTiddler.isEnabled = function(tiddler) {
          +	return !cmd.cloneTiddler.isEnabled.apply(this, arguments);
          +};
          +
          +// hijack cancelTiddler to restore original fields
          +var _cancelHandler = cmd.cancelTiddler.handler;
          +cmd.cancelTiddler.handler = function(ev, src, title) {
          +	var tiddler = store.getTiddler(title);
          +	if(tiddler) {
          +		tiddler.fields = fieldsCache[title] || tiddler.fields;
          +		delete fieldsCache[title];
          +	}
          +	return _cancelHandler.apply(this, arguments);
          +};
          +
          +// hijack saveTiddler to clear unused fields stash
          +var _saveHandler = cmd.saveTiddler.handler;
          +cmd.saveTiddler.handler =  function(ev, src, title) {
          +	delete fieldsCache[title];
          +	return _saveHandler.apply(this, arguments);
          +};
          +
          +})(jQuery);
          +//}}}
          +
          +
          +
          
          +
          +
          +
          <<tabs 
          +	txtMainTab 
          +	"Recent" "Recently edited tiddlers" TabTimeline
          +	"All" "All tiddlers" TabAll
          +	"Public" "All public tiddlers" [[TiddlySpaceTabs##Public]]
          +	"Private" "All private tiddlers" [[TiddlySpaceTabs##Private]]
          +	"Drafts" "All draft tiddlers" [[TiddlySpaceTabs##Drafts]]
          +	"Tags" "All tags" TabTags
          +	"Spaces" "Tiddlers grouped by space" [[TiddlySpaceTabs##Spaces]]
          +	"Activity" "What people you are following are up to" TabFollowing##Activity
          +        "Following" "People you are following" TabFollowing##Following
          +        "Followers" "People who are following you" TabFollowing##Followers
          +	"Missing" "Missing tiddlers" TabMoreMissing
          +	"Orphans" "Orphaned tiddlers" TabMoreOrphans
          +	"Shadows" "Shadowed tiddlers" TabMoreShadowed
          +>>
          +
          +
          + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon new file mode 100644 index 0000000000000000000000000000000000000000..18cb921facf8ca6f09ec799a276afa50d4e02bf9 GIT binary patch literal 25107 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 PCWyOix#Tsy@c%afg;rA= literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(1) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(1) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(10) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(10) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(11) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(11) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(12) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(12) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(13) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(13) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(14) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(14) new file mode 100644 index 0000000000000000000000000000000000000000..31f2358e00e76ddfad54962ce21fb129aab30132 GIT binary patch literal 10498 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(15) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(15) new file mode 100644 index 0000000000000000000000000000000000000000..d496150b377da4d160e5c6916df3b547b1e7564d GIT binary patch literal 61729 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%0D)Vi(>|y=A-Zp`zRbx6HJEJX6ceE=Tdd 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(17) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(17) new file mode 100644 index 0000000000000000000000000000000000000000..b8295e6d70ea5a9202dac2329f07a0f01aa263c0 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7V36csV_;y=)_xbuz`(#+;1OBOz@U){!i>Au z{-|bPV0z=};uzw=yEe>o-7NNUR9j8`^kSEv{)x|z&VKa_6q)6> z++KvOPJ60Xr6PW^Zz#Blya*>1smr=NZ*Z;f2{_WSPxNgEg3&2zV#|9+;-e)0F; zf8U+T|9xdh*P(|7_l&y|C8SK4_C)9e8OA`y7k&?Q`TljJ|;``jTG<*~$0cKex&x$aAo8 zRIa|7WhOXL`7(2}`cFvw{N|Um}ms!DN}hMG>>lwzVo8u_=&mS~%gmW8+!ouZFy^VwNZ@_%Xb zLH7KljS|Nv$t~!5AjFYpAKb9L-=l^(VQNI zmN2Om9uB#aSAOO7*BplVwhNa0{byg#B@)J1{f&3;rcHmW588F-Of+`y?)z_j|HiMA lVs`7;qW^a{e0^EG0h*g_tt+3 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(19) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(19) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(2) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(2) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(20) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(20) new file mode 100644 index 0000000000000000000000000000000000000000..b93f1fd9f575649bc960d016961f4926a6197cb2 GIT binary patch literal 16019 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 F695aG@0I`n literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(21) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(21) new file mode 100644 index 0000000000000000000000000000000000000000..80f60cf5524eeec18b3bd1926cb430174ae2789e GIT binary patch literal 18774 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 C9I!0_ literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(22) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(22) new file mode 100644 index 0000000000000000000000000000000000000000..3103eef83438126a4367499557a69bcea0b551aa GIT binary patch literal 51818 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(23) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(23) new file mode 100644 index 0000000000000000000000000000000000000000..c7ee1035b4352f08b16e4aa5c4bb4ffe6ddd0635 GIT binary patch literal 1707 zcmex=59-L^6Q@3p0phWnp1vVPj=u17mhh z4mNg9b~ZK+ZVpZ^5Mblr=Hcez0dYWvFoN_jF|jf;vvRSsv4d2QhW{U65aeJmU@%~2 zRAOKfWMmd({C|W&nt_3tfr*&`0od3%SU8zjx&9wvFcn~6Vq|7!W@cn#<^-!?WMXDv z6=Y)As$yY@1DcTd}mT^yEkw8-lq-6eg|)^@eJ`y|@;J$JHA73Tiu_pb;qLBJ09Ge|LW0Vaohh4S?@O7)>dgd z86PdbV#UV*$CG;%3=Xg*?3uaAX5z<54C+hFORH~srY#KL`ZiVc>7rFpQK!wn9qV1X z=#R!HZymLW!wXJ6@G~;7>a-S|v6Y2eTF$;F(96}RSU&Es!5u>xrfuH_Jz*nosfe`wy?{+cxQ;r)Vj!PqDK};=@_$JnNRE7%1Nnytc)f@3M9K z;&oNso_D{-+TM14rSYGk@9j@fyM;^qQnNCzP7!$|x%iYepPsx%%Y>Z1+gn>}X9xOj z`}*#@XHb7&u1@{IiSFu-|E5XiUub@R`eTX?$FzLNDuj@O@#%mF)UMoN6DV>;d{FR>ZktaR<8Xl#;rdB0C zGwO>=5Z5T2-BI)1{?55;nYHV>bF{KvsBXQhoBsaubvegJsWv-Tem>HF^z=s|HV)aW z>^*(&tZQ%TE?;pgwsrHZOPd}VAI;nv{Ww0(QzeOcN&wT!H1*F(o;IDI&-;Fx|E=fy z-{M`m=Zm&1>)m=QZ}aUet<|rxvSgQad?@V|(qBI5i`{dHC@UR!B=XG5Pj=R*h*3JI~f z(C6?Y-^cAR`+>yEV*9-uvl(~D2PIyq$nRYxwEba!0_)?8eqVD}=dsQDn%lMLb^cRT zX7m2w<5vak88;Yy;E+{%GpnyEa^9q^ahi+rgq@8(rX;>wBA;Zn@)zG7--#EiJ1uvG zT|Vhv_(=RmuO!zy_6-GY@^Uwo6>7dF2q{^Lw;r2&Rpg4-v8l>_KIaY!@cG?)Q~1e$ z=g(Irzr)R??t1RL#S$$hsrTjD?3Sw&r~aBX<*c7l@GtSmk3S3Z&wR~{sm{Ern7=T`=wbzgPU?u4|mocGjkT*V6>m9BR8`r5bLEqrUX^zIr3 ke*K$(?rBQ^7}+VRYc+Q;?Q#h1P@KmUId038b4#Q*>R literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(24) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(24) new file mode 100644 index 0000000000000000000000000000000000000000..26be2e573023a6d7aa386f4ec00e3ce668453590 GIT binary patch literal 6535 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 VXqnHO;|vT844$rjF6*2UngEt{bvyt7 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(3) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(3) new file mode 100644 index 0000000000000000000000000000000000000000..d6db8278add716dcc7cd153ba1f6127adb2074ce GIT binary patch literal 25719 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 IrT@PP0P+V=)Bpeg literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(5) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(5) new file mode 100644 index 0000000000000000000000000000000000000000..ab515ee0384ebfd71a5c1182325ba3c72c17d19b GIT binary patch literal 2077 zcmex=$<%PwSRFvdYWaQ-K{vTlA=3ww)NMU3Y zWcYuCL56{WnSmK(2LlYSvN5x;GjcHfKf+)tz`)4N%*@2h#>&hJmS<#QW?^6zWD`=e|;a z(=L=SPj2mL{x11DxC$)QrLk!F*W~O!ZpVISMTy*b(&X@5%kJ6Veg?)R*LS!H`7b=g z$7tJrY4gi-E5zUB9GWh(qkXQogM!dwFHQBVeHO>-=a#a~@m{<1h=$0D6amNo45F{D zOi@^y#pxlbGKWFaq&Ix|;{Oc0OA>9;uWu`ycXws#yPxU1y0ZoJboM=3Zn8mWPo?8$ z`Hib?X{?{2|F`Dq#`l+X%5|lGs2GQxzFWx|IN(Vx9i1>Usdm| zo*g;%d<#dizvuQ{x4Yus-Z7f8p#HYp)|7P%zFgfm_3*^HYhtezCmjmgA$BOfa?u(g zZda{Ho9~*(ukF29{;&B}HD}(P_H@-qiOH--y%^-HIsH4ge0#J~r&i@NC_s6LqFZR6W%*1S-H*5c~yN#+|njdb@nf##7_QB@+ z`AhR&t~E~bJ^M6btFSqDOW{t(rwfle)n{!yD1W!>WrwCFtBPPBUvb<;@AuQJO+RTZ zx|bV}r=yXuUCS!g|E9zBb9*x{PrGZlR>$nL>(p)=>myf;-t2HuibPud8_>^ z*5_GdT_?7re)V$Vzw;Yeqw{o>gWA^S^2JC?uW(S*rxPc?s4j-L%BPy zZMb?^Xz_|v@4~Cgr}Mel$-dqYG2_a#)4Rns%Lc1j=ErZnH)X-Junh&buH5)Oy}$j~ zj^$sy*Zf+z)T%Y5H|a__N6-Fzr$rm3q`ZyPSQ9-}mb{lZscE}sPcTQ7|F4GrrIT0A zdX*FT;#;aujOE8ujn+kF|Kc3pHy9q%be$ZQ6>)2=)Xb+|`&{=$JvOIEZ*RykGj11KSN{E7=G9gAmx`|0 za`v#ROXwbZ)$=mOQz|;VtNR?EsQ|{YK@2PDkgdFZThTXr#&Khyz*^0HdW*vxh-50V@ z^4kIDwca_~n0}nNvvA9tKb%JcHc0X|9mrAmWR}eS{Al)_cV)MuS$|LYvEequq~&ut zB;=zyYQ^R)$&$`~yY~8VJJ@F{C_!zJ7&`Vxr`K2{m()u@NzHUidZ1B97?OvN?X?anhU9JxwPm&DpdoI5qonN9Gpsk$D1`P!1mw`ZO5oZqW%yKv*9=#(X@ ziWVM!mHVz7>(Y*WVJO@4B-P-4(*s2hPHDgDIc4Y1O|M`2Ms@0z)x{|mHqTW=&AaUWx|Eww zwGZ|dPk7R?>h7f0F>yXhL@zCwc zwm;4n@k=~ke$iDV&@(Md;%r=CR+jZ8S>5SkThuk&M1;4@zvKBJcuMu+Qx3Nbzs8&e@!@koYmLI4Cdk^wX(jyXP)E>K9U0qnT^r7`&3}M8uEPlQMPh zdv7hQDm~`1viI&Bt&sBR>ZhgEW%oXCUm>~n<@V>f+qwhiy}ciJ##xi$Kz6pje$^zA zMGGvC*=_AQEA;h>c8~VfQ^j(gE)NNG6$$HoB`lnj0Nu`knM&%J;|1%g@#IEAQnWYrKmD+HUZ@Wn^YQGeu+m%xCL! z-m11QGq@R$%k6h?ez^wAyvF#i8d0CdU5c>n+a literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(6) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(6) new file mode 100644 index 0000000000000000000000000000000000000000..7787a2ffe075738cfda8f970fd7df117b990a85f GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0y~yU@!+^4mJh`h84FjxiK&>uoOFahH!9jaMW<5bTBY5 z{_u2h49RGGJJY)8kb#KndZUF4lG$g3TBv#_u;(1i%dALay~!BKw}xrAkGuOs$^9ZX zIPL2l#5YLDK07P%WMavejVj3@p&u9RvE9w|{mAK^UDJz2^`C3SoeSL)qkTz4>Uco% zKjpqglcl1Crl%4%U$p5mk>@dC?^EsyF_-o-ynbk6w4Nz{Q}ITnlATLLigo8C&P@G! zSpT%f(U|V~1tvx^OpXEb|FKvUJvKC$$0^v4DUGCbd? z^(ZLn?BB|H(bqeTbc9tVY&F>QD>+f@T4hO@W`fDItuevtJvA-_EUdD0VO_+uW<&qv zJ-HhuWe5L|`5g9AsLMB0FX?V^&%E%vETvQ@9AU0nNm;*uXBxewQfm%bKWD8_zu74ys9_RzqM>%>#f zZQSmwlff_Yt#97N1QW}&_Zy|Uetlbg%N>35 Y=f(DuUQ2Z_FfcH9y85}Sb4q9e0Iksex&QzG literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(7) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(7) new file mode 100644 index 0000000000000000000000000000000000000000..010ada03d0422ecf2305b83a5828ceeacc67a040 GIT binary patch literal 41243 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 a8G8S?d~{;@Cd0tMz~JfX=d#Wzp$PziGhurG literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(8) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(8) new file mode 100644 index 0000000000000000000000000000000000000000..3d3299f304cbd43e05b396b134214ed30b00d69c GIT binary patch literal 5707 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 literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(9) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(9) new file mode 100644 index 0000000000000000000000000000000000000000..c76b7e1a14ed393c52cd0556b0b0c482bca2a4ac GIT binary patch literal 9518 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 K&t;ucLK6Vif4Twy literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css new file mode 100644 index 0000000000..5600e0e993 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css @@ -0,0 +1,191 @@ +body { + font-size: 62.5%; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +a { + color: #BC4378; +} + +.ts-loggedin .ts-openidlogin, +.ts-loggedin .ts-login { + display: none; +} + +form input { + width: 90px; + border: solid 1px #CCC; + height: 24px; +} + +.ts-login input, +.ts-logout input { + font-size: 11px; +} + +form input[type=text], +form input[type=password] { + border-radius: 2px; + padding: 0.1em 0.5em; +} + +form input[type=submit] { + width: auto; +} + +.ts-logout, +.ts-logout form { + font-size: 1.6em; + text-align: center; +} + +.ts-logout form { + display: inline; +} + +#app-list { + background: #F0F4F8; + list-style: none; + padding: 0; margin: 0; +} + +#app-list li { + height: 4.5em; + line-height: 4.5em; + background: url(/bags/common/tiddlers/double_angle_lightblue_42x42.png) no-repeat 90% #F0F4F8; + background-size: 24px 24px; +} + +#app-list li:hover { + cursor: pointer; + background: url(/bags/common/tiddlers/double_angle_lightblue_42x42.png) no-repeat 90% #0082AF; + background-size: 24px 24px; +} + +#app-list li form, +#app-list li a { + display: block; + height: 100%; + font-size: 2em; + text-decoration: none; + color: #8C9DA7; + width: 100%; + font-weight: normal; +} + +#app-list li input { + width: 50%; +} + +#app-list li:hover a { + color: #E56AA0; +} + +.tsbackstage #app-list li:hover a { + color: #fff; +} + +#app-list .app-img { + position: relative; + top: 0.2125em; + margin: 0 1.25em 0 1em; + height: 1.25em; + width: 1.25em; +} + +#app-list .search .app-img { + margin-right: 10px; +} + +.ts-loggedin .login-method:target, +.login-method { + display: none; +} + +.login-method { + display: block; +} +.login-method-hide { + display: none; +} +.login-method p { + padding-bottom: 5px; +} + +.tsbackstage .message { + color: #4C4A54; + display: block; + text-align: center; +} + +.tsbackstage .message a { + text-decoration: none; +} + +.btn { + border-radius: 2px; +} + +.btn-action { + background: #0082AF; + color: #fff; + border: none; +} + +.btn-action:hover { + box-shadow: 0 0 3px rgba(0,0,0,.5); +} + +form input.btn-system { + background: #F8F9F9; + color: #4C4A54; + border: 1px solid rgba(0,0,0,.2); +} + +.btn-system:hover { + color: #000; + cursor: pointer; + box-shadow: 0 0 3px rgba(0,0,0,.25); +} + +.search form { + height: 4.5em; +} + +.search input { + font-size: 1em; + border: none; + outline: none; + padding: 0.2em 0.5em; + background: transparent; + border-radius: 2px; +} + +.search:hover input { + color: #fff; +} + +.search input:focus { + -webkit-box-shadow: inset 0 0 8px rgba(140,157,167,0.75); + -moz-box-shadow: inset 0 0 8px rgba(140,157,167,0.75); + box-shadow: inset 0 0 8px rgba(140,157,167,0.75); +} + +.search:hover input:focus { + -webkit-box-shadow: inset 0 0 8px rgba(255,255,255,0.5); + -moz-box-shadow: inset 0 0 8px rgba(255,255,255,0.5); + box-shadow: inset 0 0 8px rgba(255,255,255,0.5); +} + +.logindetails { + background: #fff; + padding: 1em 1em 2em; + box-shadow: 0 0 6px 0px rgba(0, 0, 0, 0.25); + z-index: 1; + position: relative; + text-align: center; +} + +.logindetails p { + margin: 0; +} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html new file mode 100644 index 0000000000..9cbd6dc670 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js new file mode 100644 index 0000000000..21a26f5c42 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js @@ -0,0 +1,360 @@ +/*** +Adds the app switcher to a TiddlySpace app. + +Makes use of tw.Stylesheet +Triple licensed under the BSD, MIT and GPL licenses: + http://www.opensource.org/licenses/bsd-license.php + http://www.opensource.org/licenses/mit-license.php + http://www.gnu.org/licenses/gpl.html +***/ +(function() { + +// Add or replace a style sheet +// css argument is a string of CSS rule sets +// options.id is an optional name identifying the style sheet +// options.doc is an optional document reference +// N.B.: Uses DOM methods instead of jQuery to ensure cross-browser comaptibility. +var twStylesheet = function(css, options) { + options = options || {}; + var id = options.id || "backstageStyleSheet"; + var doc = options.doc || document; + var el = doc.getElementById(id); + if(doc.createStyleSheet) { // IE-specific handling + if(el) { + el.parentNode.removeChild(el); + } + doc.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd", + ' '); // fails without   + } else { // modern browsers + if(el) { + el.replaceChild(doc.createTextNode(css), el.firstChild); + } else { + el = doc.createElement("style"); + el.type = "text/css"; + el.id = id; + el.appendChild(doc.createTextNode(css)); + doc.getElementsByTagName("head")[0].appendChild(el); + } + } +}; + +// detect background-size support +// in ', + '', + '
          ', + '
          ', + '
          + + +
          Welcome back jermolene! +
          + + +
          +
          +
          '].join(""); + var bubble = document.createElement("div"); + bubble.setAttribute("id", "bs-popup"); + bubble.style.cssText = "visibility:hidden;"; + bubble.className = "bs-popup"; + bubble.innerHTML = html; + body.insertBefore(bubble, link); + + //Terms and Conditions + if (document.getElementById("backstageButton")) { + //backstage area is displayed, so also check for terms acceptance; + var acceptedTermsVersion, + latestTermsVersion = 'v1.0-dec2014', + privacyPolicyOpen = false, + cookiePolicyOpen = false; + + acceptedTermsVersion = getCookie('termsAccepted'); + + if (acceptedTermsVersion !== latestTermsVersion) { + html = 'The tiddlyspace service uses cookies. By using the service, you are agreeing to the Cookie Policy. We have updated tiddlyspace Terms of Service, effective as of 05 December 2014. By using the service you\'re agreeing to the updated terms. OK, got it.'; + var terms = document.createElement('div'); + terms.setAttribute('id', 'bs-terms'); + terms.className = 'ts-terms'; + terms.innerHTML = html; + contentWrapper = document.getElementById('contentWrapper'); + body.insertBefore(terms, contentWrapper); + + addEventListener(document.getElementById("acceptTermsId"), "click", function(ev) { + setCookie('termsAccepted', latestTermsVersion, 365); + terms.style.cssText = "display:none;"; + }); + } + + //Add Service Update Message + html = 'Service Update: ***Please read this important Tiddlyspace service announcement December 5th 2016 ***'; + var serviceUpdate = document.createElement('div'); + serviceUpdate.setAttribute('id', 'bs-serviceUpdate'); + serviceUpdate.className = 'ts-service-update'; + serviceUpdate.innerHTML = html; + contentWrapper = document.getElementById('contentWrapper'); + body.insertBefore(serviceUpdate, contentWrapper); + //End of Service Update Message + + } + //End of Terms and Conditions + + twStylesheet(stylesheet); + + var bubbleFadeInterval; + function fade(el, fadeIn) { + var opacity = fadeIn ? 0 : 1; + if(bubbleFadeInterval) { + clearInterval(bubbleFadeInterval); + } + bubbleFadeInterval = setInterval(function() { + // TODO: IE does not support opacity + el.style.cssText = "opacity:" + opacity; + opacity = fadeIn ? opacity + 0.1 : opacity - 0.1; + if(opacity < 0 || opacity > 1) { + clearInterval(bubbleFadeInterval); + el.style.cssText = fadeIn ? "" : "visibility:hidden;"; + } + }, 25); + } + + addEventListener(link, "mousedown", function(ev) { + ev.preventDefault(); + }, false); + + var bubbleOpen = false; + var toggleBubble = function(ev) { + if(ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = false; + } + if(bubbleOpen) { + fade(bubble, false); + } else { + fade(bubble, true); + } + bubbleOpen = !bubbleOpen; + }; + + addEventListener(link, "click", toggleBubble); + + addEventListener(window.document.body, "click", + function(ev) { + var targ, + ev = ev || window.event; + + if (ev.target) targ = ev.target; + else if (ev.srcElement) targ = ev.srcElement; + if(targ == link) { + return; + } + if(bubbleOpen) { + toggleBubble(ev); + } + }, true); + + addEventListener(bubble, "click", function(ev) { + if(ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = false; + } + }); +}; + +if(window.top == window) { // only add the backstage when NOT in an iframe (top window) + addEventListener(window, "load", loadEvent); + // check if postMessage is supported + // best test: https://github.com/ternarylabs/porthole/pull/10 + if(!!window.postMessage) { + addEventListener(window, "message", function(e) { + var iframe = document.getElementById('tsbackstage'); + if(e.data) { + iframe.style.height = e.data + "px"; + } + }); + } +} + +})(); \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs new file mode 100644 index 0000000000..3baf3917fb --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs @@ -0,0 +1,373 @@ +/*** +https://raw.github.com/tiddlyweb/chrjs/master/main.js +***/ +//{{{ +// TiddlyWeb adaptor +// v0.14.3 + +/*jslint vars: true, unparam: true, nomen: true, white: true */ +/*global jQuery */ + +var tiddlyweb = (function($) { + +"use strict"; + +var tw = { + routes: { + // host is the TiddlyWeb instance's URI (including server_prefix) + // placeholders "_type" & "name" refer to the respective bag/recipe + root : "{host}/", + bags : "{host}/bags", + bag : "{host}/bags/{name}", + recipes : "{host}/recipes", + recipe : "{host}/recipes/{name}", + tiddlers : "{host}/{_type}s/{name}/tiddlers", + tiddler : "{host}/{_type}s/{name}/tiddlers/{title}", + revisions: "{host}/{_type}s/{name}/tiddlers/{title}/revisions", + revision : "{host}/{_type}s/{name}/tiddlers/{title}/revisions/{revision}", + search : "{host}/search?q={query}" + } +}; + +var convertTimestamp, supplant; + +// host (optional) is the URI of the originating TiddlyWeb instance +tw.Resource = function(type, host) { + if(arguments.length) { // initialization + this._type = type; + if(host !== false) { + this.host = host !== undefined ? host.replace(/\/$/, "") : null; + } + } +}; +$.extend(tw.Resource.prototype, { + // retrieves resource from server + // callback is passed resource, status, XHR (cf. jQuery.ajax success) + // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) + // filters is an optional filter string (e.g. "select=tag:foo;limit=5") + get: function(callback, errback, filters) { + var uri = this.route(); + if(filters) { + var separator = uri.indexOf("?") === -1 ? "?" : ";"; + uri += separator + filters; + } + var self = this; + return $.ajax({ + url: uri, + type: "GET", + dataType: "json", + success: function(data, status, xhr) { + var resource = self.parse(data); + resource.etag = xhr.getResponseHeader("Etag"); + callback(resource, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }); + }, + // sends resource to server + // callback is passed data, status, XHR (cf. jQuery.ajax success) + // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) + put: function(callback, errback) { + var self = this; + var options = { + url: this.route(), + type: "PUT", + contentType: "application/json", + data: JSON.stringify(this.baseData()), + success: function(data, status, xhr) { + callback(self, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }; + if(this.ajaxSetup) { + this.ajaxSetup(options); + } + return $.ajax(options); + }, + // deletes resource on server + // callback is passed data, status, XHR (cf. jQuery.ajax success) + // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) + "delete": function(callback, errback) { + var self = this; + var options = { + url: this.route(), + type: "DELETE", + success: function(data, status, xhr) { + callback(self, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }; + if(this.ajaxSetup) { + this.ajaxSetup(options); + } + return $.ajax(options); + }, + // returns an object carrying only the essential information of the resource + baseData: function() { + var data = {}, + self = this; + $.each(this.data, function(i, item) { + var value = self[item]; + if(value !== undefined) { + data[item] = value; + } + }); + return data; + }, + // returns corresponding instance from a raw object (if applicable) + parse: function(data) { + return data; + }, + // list of accepted keys in serialization + data: [], + // returns resource's URI + route: function() { + return supplant(tw.routes[this._type], this); + } +}); + +var Container = function(type, name, host) { + if(arguments.length) { // initialization + tw.Resource.apply(this, [type, host]); + this.name = name; + this.desc = ""; + this.policy = new tw.Policy({}); + } +}; +Container.prototype = new tw.Resource(); +$.extend(Container.prototype, { + tiddlers: function() { + return new tw.TiddlerCollection(this); + }, + parse: function(data) { + var type = tw._capitalize(this._type), + container = new tw[type](this.name, this.host); + data.policy = new tw.Policy(data.policy); + return $.extend(container, data); + }, + data: ["desc", "policy"] +}); + +// attribs is an object whose members are merged into the instance (e.g. query) +tw.Collection = function(type, host, attribs) { + if(arguments.length) { // initialization + tw.Resource.apply(this, [type, host]); + $.extend(this, attribs); + } +}; +tw.Collection.prototype = new tw.Resource(); + +tw.TiddlerCollection = function(container, tiddler) { + if(arguments.length) { // initialization + tw.Collection.apply(this, [tiddler ? "revisions" : "tiddlers"]); + this.container = container || null; + this.tiddler = tiddler || null; + } +}; +tw.TiddlerCollection.prototype = new tw.Collection(); +$.extend(tw.TiddlerCollection.prototype, { + parse: function(data) { + var container = this.container; + return $.map(data, function(item, i) { + var tiddler = new tw.Tiddler(item.title, container), + bag = item.bag; + tiddler = tw.Tiddler.prototype.parse.apply(tiddler, [item]); + if(!tiddler.bag && bag) { // XXX: bag always present!? + tiddler.bag = new tw.Bag(bag, container.host); + } + if(!tiddler.recipe && item.recipe) { + tiddler.recipe = new tw.Recipe(item.recipe, container.host); + } + delete item.recipe; + return $.extend(tiddler, item); + }); + }, + route: function() { + var params = this.container; + if(this.tiddler) { + var container = this.tiddler.bag || this.tiddler.recipe; + params = { + _type: container._type, + host: container.host, + name: container.name, + title: this.tiddler.title + }; + } + return supplant(tw.routes[this._type], params); + } +}); + +tw.Search = function(query, host) { + tw.Collection.apply(this, ["search", host]); + this.query = query; +}; +tw.Search.prototype = new tw.Collection(); +$.extend(tw.Search.prototype, { + parse: function(data) { + this.container = { // XXX: hacky + _type: "bag", + host: this.host + }; + var tiddlers = tw.TiddlerCollection.prototype.parse.apply(this, arguments); + delete this.container; + return tiddlers; + } +}); + +// title is the name of the tiddler +// container (optional) is an instance of either Bag or Recipe +// optionally accepts a single object representing tiddler attributes +tw.Tiddler = function(title, container) { + tw.Resource.apply(this, ["tiddler", false]); + this.title = title; + this.bag = container && container._type === "bag" ? container : null; + this.recipe = container && container._type === "recipe" ? container : null; + var self = this; + $.each(this.data, function(i, item) { + self[item] = undefined; // exposes list of standard attributes for inspectability + }); + if(title && title.title) { // title is an object of tiddler attributes + $.extend(this, title); + } +}; +tw.Tiddler.prototype = new tw.Resource(); +$.extend(tw.Tiddler.prototype, { + revisions: function() { + return new tw.TiddlerCollection(this.bag || this.recipe, this); + }, + route: function() { + var container = this.bag || this.recipe; + var params = $.extend({}, this, { + host: container ? container.host : null, + _type: this.bag ? "bag" : (this.recipe ? "recipe" : null), + name: container ? container.name : null + }); + return supplant(tw.routes[this._type], params); + }, + parse: function(data) { + var tiddler = new tw.Tiddler(this.title), + container = this.bag || this.recipe; + if(data.bag) { + tiddler.bag = new tw.Bag(data.bag, container.host); + delete data.bag; + } + delete data.recipe; + tiddler.created = data.created ? convertTimestamp(data.created) : new Date(); + delete data.created; + tiddler.modified = data.modified ? convertTimestamp(data.modified) : new Date(); + delete data.modified; + if(this.recipe) { + tiddler.recipe = this.recipe; + } + return $.extend(tiddler, data); + }, + data: ["created", "creator", "modifier", "modified", "tags", "type", "text", + "fields"], + ajaxSetup: function(options) { + var self = this; + if(this.etag && (options.type === "PUT" || options.type === "DELETE")) { + options.beforeSend = function(xhr) { + xhr.setRequestHeader("If-Match", self.etag); + }; + } + if(options.type === "PUT") { + var callback = options.success; + options.success = function(data, status, xhr) { + var loc = xhr.getResponseHeader("Location"), + etag = xhr.getResponseHeader("Etag"); + if(loc && etag) { + self.etag = etag; + if(!self.bag) { + var bag = loc.split("/bags/").pop().split("/")[0]; + self.bag = new tw.Bag(bag, self.recipe.host); + } + callback(self, status, xhr); + } else { // IE + self.get(callback, options.error); + } + }; + } + } +}); + +tw.Revision = function(id, tiddler) { + var container = tiddler.bag || tiddler.recipe; + tw.Tiddler.apply(this, [tiddler.title, container]); + this._type = "revision"; + this.revision = id; +}; +tw.Revision.prototype = new tw.Tiddler(); +$.extend(tw.Revision.prototype, { + revisions: false, + data: false, + put: false, + "delete": false +}); + +tw.Bag = function(name, host) { + Container.apply(this, ["bag", name, host]); +}; +tw.Bag.prototype = new Container(); + +tw.Recipe = function(name, host) { + Container.apply(this, ["recipe", name, host]); + this.recipe = []; +}; +tw.Recipe.prototype = new Container(); +$.extend(tw.Recipe.prototype, { + data: ["recipe"].concat(Container.prototype.data) +}); + +tw.Policy = function(constraints) { // TODO: validation? + var self = this; + $.each(this.constraints, function(i, item) { + self[item] = constraints[item]; + }); +}; +tw.Policy.prototype.constraints = ["read", "write", "create", "delete", + "manage", "accept", "owner"]; + +/* + * utilities + */ + +tw._capitalize = function(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +}; + +// convert YYYYMMDDhhmmss timestamp to Date instance +convertTimestamp = function(t) { + if (t.match(/^\d{12,17}$/)) { + return new Date(Date.UTC( + parseInt(t.substr(0, 4), 10), + parseInt(t.substr(4, 2), 10) - 1, + parseInt(t.substr(6, 2), 10), + parseInt(t.substr(8, 2), 10), + parseInt(t.substr(10, 2), 10), + parseInt(t.substr(12, 2) || "0", 10), + parseInt(t.substr(14, 3) || "0", 10) + )); + } else { + return new Date(Date.parse(t)); + } +}; + +// adapted from Crockford (http://javascript.crockford.com/remedial.html) +supplant = function(str, obj) { + return str.replace(/{([^{}]*)}/g, function (a, b) { + var r = obj[b]; + r = typeof r === "string" || typeof r === "number" ? r : a; + return $.inArray(b, ["host", "query"]) !== -1 ? r : encodeURIComponent(r); // XXX: special-casing + }); +}; + +return tw; + +}(jQuery)); +//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities new file mode 100644 index 0000000000..248fa01035 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities @@ -0,0 +1,42 @@ +/*** +TiddlySpace extensions for [[chrjs]] +|''Requires''|chrjs.users| +***/ +//{{{ +(function($) { + +tiddlyweb.routes.identities = "{host}/users/{username}/identities"; +var IdentitiesCollection = function(user) { + tiddlyweb.Collection.apply(this, ["identities", user.host, { + username: user.username + }]); +}; +IdentitiesCollection.prototype = new tiddlyweb.Collection(); +jQuery.extend(IdentitiesCollection.prototype, { + add: function(identity, callback, errback) { + var tiddler = new tiddlyweb.Tiddler(identity); + tiddler.bag = new tiddlyweb.Bag("MAPUSER", this.host); + tiddler.put(callback, errback); + }, + get: function(callback, errback) { + var uri = this.route(); + $.ajax({ + type: "get", + dataType: "json", + url: uri, + success: function(uris, status, xhr) { + callback(uris, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }); + } +}); + +tiddlyweb.User.prototype.identities = function() { + return new IdentitiesCollection(this); +}; + +})(jQuery); +//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space new file mode 100644 index 0000000000..ef41af5102 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space @@ -0,0 +1,108 @@ +/*** +TiddlySpace extensions for [[chrjs]] +***/ +//{{{ +(function($) { + +tiddlyweb.routes.spaces = "{host}/spaces"; +tiddlyweb.routes.space = "{host}/spaces/{name}"; +tiddlyweb.routes.members = "{host}/spaces/{name}/members"; +tiddlyweb.routes.member = "{host}/spaces/{name}/members/{username}"; + +tiddlyweb.Space = function(name, host) { + tiddlyweb.Resource.apply(this, ["space", host]); + this.name = name; +}; +tiddlyweb.Space.prototype = new tiddlyweb.Resource(); +$.extend(tiddlyweb.Space.prototype, { + create: function(callback, errback) { // API wrapper + this.put.apply(this, arguments); + }, + members: function() { + return new MemberCollection(this); + }, + includes: function() { + return new IncludesCollection(this); + } +}); + +var Member = function(username, space) { + tiddlyweb.Resource.apply(this, ["member", space.host]); + this.name = space.name; + this.username = username; +}; +Member.prototype = new tiddlyweb.Resource(); + +var MemberCollection = function(space) { + tiddlyweb.Collection.apply(this, ["members", space.host, { + name: space.name + }]); +}; +MemberCollection.prototype = new tiddlyweb.Collection(); +$.extend(MemberCollection.prototype, { + add: function(username, callback, errback) { + var member = new Member(username, this); + member.put(callback, errback); + }, + remove: function(username, callback, errback) { + var member = new Member(username, this); + member["delete"](callback, errback); + } +}); + +var IncludesCollection = function(space) { + tiddlyweb.Collection.apply(this, ["space", space.host, { + name: space.name + }]); +}; +IncludesCollection.prototype = new tiddlyweb.Collection(); +$.extend(IncludesCollection.prototype, { + get: function(callback, errback) { + var self = this; + var recipe = new tiddlyweb.Recipe(this.name + "_public", this.host); + recipe.get(function(recipe, status, xhr) { + var inclusions = $.map(recipe.recipe, function(item, i) { + var arr = item[0].split("_public"); + return (arr[0] != self.name && arr[1] === "") ? arr[0] : null; + }); + callback(inclusions, status, xhr); + }, function(xhr, error, exc) { + errback(xhr, error, exc, self); + }); + }, + add: function(name, callback, errback) { + var self = this; + var names = typeof(name) === "string" ? [ name ] : name; + $.ajax({ + type: "post", + url: this.route(), + contentType: "json", + data: JSON.stringify({ "subscriptions": names }), + success: function(response, status, xhr) { + callback(self, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }); + }, + remove: function(name, callback, errback) { + var self = this; + var names = typeof(name) === "string" ? [ name ] : name; + $.ajax({ + type: "post", + contentType: "json", + url: this.route(), + data: JSON.stringify({ "unsubscriptions": names }), + success: function(response, status, xhr) { + callback(self, status, xhr); + }, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }); + } +}); + +})(jQuery); +//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users new file mode 100644 index 0000000000..6f82e082f8 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users @@ -0,0 +1,57 @@ +/*** +https://raw.github.com/tiddlyweb/chrjs/master/users.js +***/ +//{{{ +// chrjs users extension +// v0.5.0 +// +// requires tiddlywebplugins.socialusers +// http://pypi.python.org/pypi/tiddlywebplugins.socialusers + +/*jslint vars: true */ +/*global jQuery, tiddlyweb */ + +(function($, tw) { + +"use strict"; + +tw.routes.users = "{host}/users"; +tw.routes.user = "{host}/users/{username}"; + +tw.User = function(username, password, host) { + tw.Resource.apply(this, ["user", host]); + this.username = username; + this.password = password; +}; +tw.User.prototype = new tw.Resource(); +$.extend(tw.User.prototype, { + create: function(callback, errback) { + var uri = this.route().split("/"); // XXX: hacky!? + uri.pop(); + uri = uri.join("/"); + var data = { + username: this.username, + password: this.password + }; + var self = this; + return $.ajax({ + url: uri, + type: "POST", + contentType: "application/json", + data: JSON.stringify(data), + success: callback, + error: function(xhr, error, exc) { + errback(xhr, error, exc, self); + } + }); + }, + setPassword: function(newPass, callback, errback) { + this.old_password = this.password; // XXX: should not use underscore (consistency) + this.password = newPass; + return this.put(callback, errback); + }, + data: ["password", "old_password"] +}); + +}(jQuery, tiddlyweb)); +//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/help.png b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/help.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9578e35bc77b340bba046414b5647bd67b68ef GIT binary patch literal 1277 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to-eo#F2Y5O=D+Cnfr)B1( zGB8vywuYR~7IqZ*XO_3}f)YnmHs7X-2}+)kt211$nEe$@%I3K(zs+?*im~UlJhRvD z)V40|c=G6?);-s^3)%lS$W?tv(f4YNa@DxES|e$pxbDZZc|O~gzB+KO?(;qK_qF+D z_ZfJLE}497V0prOJZO<%W=@S$)}IcBzD1mlCaR&g-}tGpIW`yntbTr@ioY>B>~Qt( z@=fJyXI9_Q&tT?!pU)%Ob zq*9H8sqVRY-yOkcRWCa)>$2>bd1=Q^2<-Krux$64cdL^Y&hh)k zH(~GGFLi#K@7WzvJj5-z*4}ML@4T-)SM47qK3wwbNSm#Ugz1+b38LGjR{k(OBoZ&+ ztG+0t@TMN`#~JJXhJEsCDwtq#DkZU@ILgESx=-GZUG1#3YS)F=KPnFkd|25poPO`h z-S@7ynARKc$?{0?%;NP35O8HloUtLmq0L6h&}37Qz4B@{>B-ebr7BswOOjkRI#!$A zvE3fH4W+^<&RaPq{c-%Kwf?04)5@QxV>a9f`#xpu>{+`$J+MCdbmmSex$Bot zJTCT)tC@PGY;w5!v^AAgduF|nvVRjk-SAnHY5$Sp4ZlC?#!o#nU9(5z=;P4Oue@7I zqYTaO&(Ep1wtb{`UT^EQ;YVJn~xyL!?PHoe?lsoa4%GHE~S$n?f$J$3%>~*W>`5HJy^30`> z&hPbyv{Fpw?&Qn=)qnf=AMq#OyPnV2VA9WdaAM}J+~C6Z0t-`@<`u7F65oHZ_QSTk z?8S8!e^?@HR*S6-GM%rmhf$`iy-Mzd=8VhJrk%A6YS)=RdDqKRNkL}Mgc;W@ysOvKuom%jU@}v~>D@WVu)BD470s9&iMP-F6;LPX}M!j`9BP^&Y9eKXO@u{ zzIj>Y1iQoT0ZT5&xlKA(Rbrd?JfK7Ui@@pZ3hqjec;0x1>baU}@1s-;z32TDbaguM z`N8FOCHY>t>eZRLVt2k(7aY9*gUzP5IH1w!hrsnW8_jHGua8;P%({bnr)$=( sj}HI*%&Pjpyyk7JbsPS#`)q%P_r?DSd>7am7#J8lUHx3vIVCg!04|7Qx&QzG literal 0 HcmV?d00001 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js new file mode 100644 index 0000000000..b74bebb408 --- /dev/null +++ b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js @@ -0,0 +1,11 @@ +/*** +http://code.jquery.com/jquery.min.js +***/ +//{{{ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
          ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
          a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
          t
          ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
          ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
          ","
          "],area:[1,"",""],param:[1,"",""],thead:[1,"","
          "],tr:[2,"","
          "],col:[2,"","
          "],td:[3,"","
          "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
          ","
          "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("
          tiddlyspace - - - - - -
          savetest
          -
          - - -
          -
          -
          -
          The tiddlyspace service uses cookies. By using the service, you are agreeing to the Cookie Policy. We have updated tiddlyspace Terms of Service, effective as of 05 December 2014. By using the service you're agreeing to the updated terms. OK, got it.
          -
          -
          - search -
          -
          - interview - a TiddlySpace -
          -
          -
          - - -
          -
          -
          - -
          - -
          - -
          HelloThere
          - - last modified on - 28 February 2011 - - -
          - - -
          -
          -
          -
          -
          Welcome to the great TiddlyWiki viral interview project.

          For many people that use it there is a distinct discovery moment when TiddlyWiki explodes in their brain. For others, it is a challenge to get their heads around TiddlyWiki at all.

          This project explores how people think about TiddlyWiki by collecting together responses to a set of questions about it.

          To Add Your Own Response

          • Sign up for TiddlySpace if you haven't done so already
          • Click the "Reply to this tiddler" link on a question you wish to answer
          • Your home space will open in a new window or tab with the appropriate question tiddler presented
          • Double click on the question tiddler and add your answer (make sure to make it public)



          -
          -
          -
          • no tags
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How did you first discover TiddlyWiki?
          -
          - last modified on - 16 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • webid4me on 24 September 2014
            in reply to How did you first discover TiddlyWiki?:

            After few months into my graduate studies in Brain Imaging I realized that my poor brain, by itself, won't suffice to keep all the information related to various projects organized. I started looking into various softwares like Evernote, OneNote, google docs etc etc. I quiickly realized that: (1) all these tools are proprietary solutions to attract people by visual cues and, ironically, do not work well in academic workflow like mine. (2) Most of them lacked native support for Linux OS. (3) Almost all of them lacked proper math typesetting support.

            I gave up and started using mix of plain text and latex (notes.txt, notes_math.txt). It kind of worked for about an year. Then I realized that I really need support for hypertext in my notes - That led me to start fiddling with markdown - but it was not covenient as I needed to convert to html each time I made changes. Some more surfing and searching brought me to Tiddlywiki (now called Classic TW).

            I was stunned by Tiddlywiki not only because it is a singlefile wiki application but also because it is a useful example of Quine :) I always understood that I need a 'wiki' for my note taking habbits but I could never imagine that a wiki software could be as portable as a single file.
          • aamaadmitw5 on 24 September 2014
            in reply to How did you first discover TiddlyWiki?:

            After trying evernote and extensively using Google docs , I was searching for some note taking software which dont have the restrictions like
            1. I was not happy with WYSIWYG editor because it breaks my flow.
            2. At the back of my mind , i knew google was moving towards a card design for displaying information , and i found the same concept in TW5.

            I found it through wikipedia
            http://en.wikipedia.org/wiki/Comparison_of_notetaking_software

          • gjrobert on 16 September 2013
            Around mid-2004, when I was searching for ideal wiki engines. I forgot actually how I find TW, either via Google or via some introduction on blog posts.
          • dickon on 18 March 2012
            I have known and loved Jeremy Ruston for many years, so it was word of (horse's) mouth.

            It is strange when you have known someone for many years; suddenly to discover how something so excellent has been going on in their work (that had always seemed so far away from your own) - and that it absolutely answers what you are after... kerrr-ching!

            I got curious about what this Tiddly stuff was about in conversation, and Jeremy sent me a link, which I started looking at in about 2005 I think. As a total non-techy I commend my own bravery in trying to get past the somewhat opaque documentation, but there was a fairly sudden "lights came on" moment when I saw massive potential in what was on offer, that I had seen nowhere else.
          • pmario on 6 April 2011
            I was looking for a browser notebook, with the possibility to work online and/or offline. And if possible with good syncing. I found http://lewcid.org/2009/02/03/a-busy-year-and-a-student-notebook/

            Some more reading lead to a very active TiddlyWiki user group, and some specs about an alpha TiddlyWeb (mother of all server sides.) So I thought, let's see how fast the development is going on. That's it.
          • poulstaugaard on 6 March 2011
            I am quite a veteran TW addict. The wiki idea first caught my fancy when I stumbled on FlexWiki in 2003. Initially I hung out at MeatBallWiki for inspiration while scanning the landscape and finding my direction. This is how i discovered TW while it was still a baby. Coming from the Microsoft/IT services world, with a wide interest in web technology, my first serious efford was a .NET (C# + SQL) based serverside that I called iewiki (spelled like that not to be misread as LeWiki). It was built on unmodified TW 2.0.6 client-side, and I used it myself on the web for a few years (as iewiki.net, now defunct). I was never quite happy with the end product though, and it never quite made it past beta status - partly due to the rather high cost of quality hosting for .NET. So when I found Google's App engine, I decided to start again from scratch, an efford which I have called giewiki for natural reasons. By this time (late 2008), I figured TW had reached a level of maturity (2.4.1) that made branching a good strategy for a hosted derivative.
          • smandoli on 24 December 2010
            I spent 2009 in a part-time and solitary obsession with knowledge-management tools, trying to figure out how to harness my chaotic, distracted, eclectic and adventurous thought life. This was encouraged by a re-read of the famous 1946 "Memex" proposal, discovery of the "TheBrain" online demo. and personally productive work in mind mapping. (More at http://themanthursday.com/wiki-first-taste/.) I would run google searches that returned nothing, but eventually I lined up the right keywords and landed at TiddlyWiki.
          • calmo on 16 December 2010
            In 2004 I was researching use of wikis for collaborative content development within IBM. I found tiddlywiki. But I really didn't "discover" it until I realized how it actually works - what makes it different from standard wikis.
          • climatechange3 on 1 December 2010
            I first heard about TW on a Moodle group in the fall of 2006, in the process of trying, without much success, to use the wiki feature in Moodle. I loved TW - and the TW Google Group - right away.
          • ubi on 29 November 2010
            I was searching the net for a personal wiki software and found WoaS and TiddlyWiki. I started with WoaS, because it's traditional website look-and-feel met my habits more than TW, still playing around with TiddlyWiki occasionally. After digging the core concepts and discovering the wealth of plugins, I switched to TW.
          • passingby on 27 November 2010
            It was a long time ago, while searching for free and open source softwares
          • rouilj on 27 November 2010
            I saw a mention of it while I was looking for a simple personel wiki.
            The single file and easy portability of it intrigued me.
          • yakov on 16 November 2010
            I write loads of things and some time ago I realized that hypertext is the only form that would be flexible enough for me. Next I get the idea that since there are quite limited tools for creating hypertext on my handheld it would be good to create one based on web-technologies since they are totally cross-platform and imply hypertext. Then I realized that JavaScript has far too limited access to the file system (usually no access at all), so I asked about this thing in google.quesions. Few answers contained mentioning of Java and flash and also there was one with "see TiddlyWiki". And so, that was it.
          • frankfurtkid on 16 November 2010
            i was looking for a simple wiki to use for note keeping, action tracking and the like - I think I was reading "Getting Things Done" at the time. I came across TiddlyWiki and decided to give it a try. I liked the idea of not needing to be online - which at the time was less frequent than now. I then discovered that the guys involved worked for the same company as I do - and that made me really interested in using it for work as well as private applications.

            Then server side became more important - ability to share info and access. I used cctiddly for a while and am now starting to use the BT green side implementation of TiddlySpace for work related projects - as well as the usual tiddlyspace.com.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          What was it about TiddlyWiki that captured your interest?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • webid4me on 24 September 2014
            in reply to What was it about TiddlyWiki that captured your interest?:

            1. Portable - single file application
            2. Flexible workflow (& plugins)
            3. Offline
            4. Open Source
            5. Searchable
            6. Active development

          • aamaadmitw5 on 24 September 2014
            in reply to What was it about TiddlyWiki that captured your interest?:

            1. Simplicity
            2. Tagging
            3. Default fonts and line spacing
            4. Unusual
            5. Single file

          • dickon on 18 March 2012
            It was the fact that it was a document, but that it had certain aspects that seemed extraordinarily "three-dimensional": pages (tiddlers) have depth insofar as each chunk of content that you write has what I think of as both centrifugal force (stimulating interest to go and explore links and tags that offered related material) balanced by centripetal force (the intrinsic interest of what is here on this page/tiddler, that holds my attention and delivers what I want/need.)

            But more than that, TiddlyWiki has EDGES; this is like other documents I know about (chiefly paper based), and is reassuring in relation to the scary 'anarchy of limitlessness' that, say, Wikipedia has. As a TW could be a thing - downloaded, uploaded - so it was a definable entity; there could be a balance of authorial control with the wiki-like sharing and co-construction.

            I was writing a large treatment manual at the time (with a great group of co-authors based around the Anna Freud Centre) at the time, and we were trying to integrate a whole range of "schools" of thinking and practising into a concentrated, integrated set of principles and practices that could 'steer' workers in the field towards more effective practice in doing therapy with some of the most vulnerable, complex, troubled youth around. The "eureka" moment (and it was something like that) was the recognition of a number of things almost simultaneously:

            'Integrative' format


            1. That the way to mount all this information was in a TiddlyWiki: this format could emphasise underlying links/commonalities/shared concepts between disparate schools (that had often, in my view, wasted precious energy on "turf wars"... this seemed to me to be a radically integrative format, insofar as any tiddler that I wrote automatically begged the questions: "How does my content fit in with the rest of what is written? How are you going to tag me? What links are you going to place in me, and to me?"

            Funkier than a book


            2. The format (with its promise of embedded video, downloadable documents, clickable links...) offered a much more tempting "front door" to what is conventionally a massively boring kind of book. (Research demonstrates that the "treatment manual" is frequently despised by therapists, who find them rigid, condescending, crushing of creativity and spontaneity, and often ill-fitting to their local setting and cultural context.) Most treatment manuals are not inviting to the casual browser!

            Open source works for therapy, too


            3. The whole "open source" ethos that Tiddlywiki abounds with, absolutely fitted with the slant on human behaviour/psychology that we were using as the "integrating principle" in our treatment approach, which is "Mentalization". The motto of open source programmers ("Release Early, Release Often") fits the mentalization-based therapist's assumption that "I only see with partial vision" and his or her willingness to mark their best guesses as just that - hypotheses, to be built on and improved...

            Multiple iterations around a developing shared core


            4. The final "Bingo!" moment was the realisation that with TiddlyWiki it was possible to conceive of multiple locally-adapted versions of a centrally-curated 'basic core' offering. Thus local teams (the "small trusted groups" that TiddlySpace refers to) can work out place- and population-specific iterations of "Practice-based Evidence" - that fit the more rarefied/less 'attuned' "Evidence-based Practice" into local settings, local populations. I think of it as being like adapting a basic car for use in different parts of the world - some places need air-con, others need 4 wheel drive and a good in-cabin heater, still others need an excellent paint job, etc... but all rely on a basic car that basically runs.

            With the development of TiddlyWeb and TiddlySpace this vision (no. 4 above) has become increasingly possible, so that now the ambit core manual is included in the local versions of just under 20 teams across the UK (see tiddlymanuals and follow the links for AMBIT), working with diverse populations, and in diverse ways, with "hard to reach" young people.

            These teams are beginning to build their own locally-attuned versions of a treatment manual, building on (and often improving on) the ambit 'core'. As time goes on, and evidence is gathered about what works for whom, we hope to bring excellent local adaptations that would have more general relevance into the core, so that they are automatically available to all other local teams including this core.
          • pmario on 6 April 2011
            • The extensibility

          • poulstaugaard on 12 March 2011
            The page architecture, which I have adopted, finding little reason to change anything just for the sake of difference, nor for any other reason. Everything, even the animations, serves a purpose and does it just right, including the omission of sidebar space for 'ads by Google'.

          • smandoli on 24 December 2010
            Portability. I didn't want to have to be on-line, and I wanted to shuttle between Linux at home and Windows at work. And I had recently become attached to my USB drive.
          • climatechange3 on 2 December 2010
            Its versatility, built-in macros, the wonderful & creative 3rd party plugins, a diversity of ways to present and organize content and layout and the responsiveness of the TW Google Group. In examining the structure of tiddlers, I became aware of the possibility of generating sets of tiddlers from the extensive body of information I have gathered in a set of DataPerfect databases.
          • passingby on 27 November 2010
            That it was:
            1. Single file software
            2. It opened in a browser
            3. It was kind of a closet, you could stash away things in it
            4. You could 'own' it, for free, have as many copies as you want
            5. It had a world of fascinating plugins

          • rouilj on 27 November 2010
            Saq's use in the education realm and the ease of transport/sharing.
          • mama on 20 November 2010
            I'm sure that it was the "tiddler-approach" which caught my attention... Other wikis I tried in the past, always made me a little uneasy because of the "one article one page" layout. I quickly understood that TiddlyWiki could be tweaked to my own liking - and when I eventually overcame my reluctance to enroll in a community, the googlegroup convinced me that even I, could create/modify a copy to my own liking, a total noob, with no education or knowledge whatsoever about html, css or javascript.
            As far as I remember, I tried to figure things out for myself for about six months untill I finally gave up - and posted a question on the usergroup. At that time I was trying to create a tiddlywikiapp to be used on a mobile phone for administration of students at my school. http://himmerlands-ungdomsskole.dk. I even purchased an old HTC (tytn II) to be able to test the thing....
          • yakov on 16 November 2010
            More I discovered TW, more I get exiced because my wishes got implemented one by one. TW happen to be extremly powerful, close to WYSIMYM-based and, well... the only thing I've got to do is to discover it carefully (although some things are now distinct to be not achieved yet the plugin system promises almost everything to be doable).
          • martinlindner on 16 November 2010
            initially: i think i was fascinated by the idea of having a "page" made of dynamic paragraphs, back then. i'm still interested in the (abandoned?) TW project of importing docs, transforming paragraphs to tiddlers, and back again.

            the other concept i have been obsessed with since 2004 is "microcontent": to play with small units of meaning, meme-like chunks. like the microweb that exploded after that, with twitter & any kind of 'microformatted' apps (for questions, for trips, for reviewas, for nearly anything).
          • frankfurtkid on 16 November 2010
            I could create simple notepad applications, very quickly and easily - but also the more I used it, the more I realized I could change the way it looked and worked. This has been both liberating, and frustrating.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          Which aspects of TiddlyWiki do you find most valuable?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • webid4me on 24 September 2014
            in reply to Which aspects of TiddlyWiki do you find most valuable?:

            1. Non-linear notebook
            2. Portable
          • aamaadmitw5 on 24 September 2014
            in reply to Which aspects of TiddlyWiki do you find most valuable?:

            1. Regular updates
            2. Simplicity
            3. Alternative ways to do things
            4 Tags / Tags / Tags
          • pmario on 6 April 2011
            • For most people its new. They haven't seen something like this. It's easy. It's usefull. It's a WOW.
            • It's flexibility
            • TagglyTagging

          • smandoli on 24 December 2010

            Easy and Quick

            • I can capture my thought or preserve a good quotation without a lot of hassle or time.
            • I don't have to decide if the idea is "important" or how it fits in with everything else. Paste, save, apply a tag if I can think of one that's it.

            Portable

            • In a strange library? Not sure what kind of computer is in front of me? Can't get the Internet to work? NO MATTER if it's got a USB port, I'm in.

            Non-linear association of ideas

            • It may not look like a mind map (yet), but it feels like one.
            • This is one of my few activities in life where it doesn't seem to matter if I'm in ADHD mode or not. Or putting it from another angle, managing a TW seems to put my ADHD to some sort of actual good use.

            Non-proprietary Text Format

            • Whatever the next step is in knowledge management, I can get there. Migrating my voluminous notes from word-processor documents to TW was tedious, but nothing will ever be that hard again.

            Sheer elegance

            • ... 'Nuff said.

          • alexhough on 8 December 2010
            Facilitating Group Work
            During the design stages of the OMM, TiddlyWiki was used to capture the requirements from the group. We projected the TW on the wall.
          • passingby on 27 November 2010
            1. Tiddler concept
            2. Tagging ability
            3. The Paradigm, every thing is a tiddler
            4. Plethora of plugins
            5. Versatility, programmable using inlinejavascript plugin and the other plugins
            6. Best software around for storing personal data

          • mama on 24 November 2010
            Ownership and a great amount of control. You can keep your work offline or go public, even the different publishing options are "hackable" - its "all inclusive" instead of "some exclusive".
            I think that TiddlyWiki is THE good example of what OpenSource is all about - The communiti(es) are full of great/generous people, you want to follow or help out in any way you can. I think this incitament (to do good...) comes from a deep feeling of gratitude toward those who helped you when you needed it, and the fact that TiddlyWiki is OpenSource software, maintained by great developers - who demonstrate accountability at all times, makes you feel safe, - and that TiddlyWiki is a serious project.

          • yakov on 16 November 2010
            • transclusion system
            • cross-platformity
            • extansibility
            • great community and many already implemented important things

          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How many TiddlyWikis have you created and do you use regularly?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • dickon on 18 March 2012
            At least 20

            Some I use all the time (the ambit manual is probably my peak!)

            My NHS team uses an offline TW (securely stored) to track and document all the clients we treat, documenting team discussion in the TW, and printing out these tiddlers for pasting into the conventional paper notes. The TW is projected and edited during every team meeting, and the act of typing into it has become part of our efforts towards "transparent practice"...

            I use TW's for major literature reviews - fantastic for cross referencing, tagging, ensuring that I have integrated a disparate body of literature.

            I use TW's in management meetings to make wikified minutes - people get intrigued and wnat to understand and that often deepens the discussion - what are the underlying themes (Tags) that we are REALLY trying to crack in this meeting?

            etc...


          • yakov on 21 February 2011
            My answer won't be very interesting since I'm only studying TW now. I've already created 3 TW for some science and one for making a deep TW tutorial (with many practical aspects).

            However, I'm going to make much more TWs for different purposes from questions aggregating to making a site.

            UPD: As for now, I use 9 tw-documents. 3 of them very often and others from time to time. I feel that an offline analogue of TiddlyWeb becomes more more desirable thing.
          • smandoli on 24 December 2010
            1. Summary of Materials Resource Planning (MRP) functions for my work place.
            2. Getting Things Done (GTD) organizer for personal and work use.
            3. Notes about my study of the Bible (topical as well as passage-specific).
            4. Computer information such as code snippets in a variety of languages.
            5. A personal information manager for everything else.

            If I can find the right tools to overcome a sense of content overload, I will combine #3 and #5.
          • colmbritton on 21 December 2010
            All in all I have created a fair few, however I have 3 main ones (or used to until Tiddlyspace came around). They are one for general notes, one for recording info and ideas about the projects I was working on and a third, which was a test TW that I used to try out new plugins and combinations of plugins.
            Now that I am on Tiddlyspace I have a lot!
          • andrewbarbour on 28 November 2010
            I created 15-20 different ones to try different configurations /concepts for organization. Once that was over with... I am down to three:

            In Use
            • Day-to-day note taking and task tracking
            • Project Notebook for storing all of my notes

            Active Development
            • Help file for business procedures and system documentation

          • passingby on 27 November 2010
            I have created many. I have a bad habit of starting a new Tiddlywiki whenever I get excited about a topic but I usually never complete a project 100%.
          • rouilj on 27 November 2010
            I use four on a regular basis:

            • tbGTD - for getting things done
            • twab - for an address book and I have extended it to allow tracking things like who gets christmas cards etc
            • coursebook - was created as a textbook/exercise-quiz/presentation tool/student notebook for a class I was teaching.
            • TiddlySnip - sadly this has been abandoned, but it is my primary mechanism for keeping bookmarks, research notes and how to's for the firefox browser.

          • mama on 24 November 2010
            I've made so many TiddlyWikis that I've lost track of them... Some of them are floating in cyberspace, others were lost in broken or erased harddisks and some has gone into hibernation in some dropbox directory. Seriously - I think I've created hundreds of them - all very different TiddlyWikis for different uses..
            TiddlySpace has helped me get a little more organized, as it provides an overview of created spaces.
            At the moment I use 4 dedicated TiddlyWikis (spaces) for everyday tasks. All jobrelated. Two of them I share with my students (read only, except for embedded/iframed typewith.me-documents) and one of them I share with my collegues (with writepermission, however I'm the only one contributing to it at the moment...). The last and most important one is working as my "controlcenter". Some of my tiddlers are loaded into the other spaces - so I don't have to edit them all directly to push content...
            At least once or twice a week I visit some (ca. 4 or 5) of my other TiddlyWikis, which are hosted at TiddlySpot or at one of my own TiddlyHome services (I've got two working/customized installations of Bidix's TiddlyHome service).
            The number of TiddlyWiki's I use (just for reference or edits) in one week is 8 - 10 or more... I also checkout other people's TiddlyWikis - so I'm not sure.
            Every year I prepare multiple TWs for exams (I have new students who graduate every summer). Some of those TWs contain notes for my students and other TWs contain or refer to material prepared for my censors. I print my TiddlyWikis to pdf-portefolios and mail links to online versions of both.
            3 years ago I would use notepad/OpenOffice or MsOffice to write/create this sort of material. Today I prefer to use a customized TiddlyWiki.
            When I occasionally use MsOffice programs at work, it's often just to be able to copy/paste material from a TW for printing - or work with tables in MsExcel - which I will often copy back into a TiddlyWiki :-)
            At every meeting I attend, I use TiddlyWiki as a note/write tool, as a portefolio and as a working database containing data, images and notes about all my students, collegues, calendar with notifications, workplans, ideas, iframed webmail etc ... I even use single local network TWs as Faq-documents which I prepare for my collegues. TW is my swiss armyknife at my job, and it certainly helps me to stay organized at all times... When I publish material for my students I use a TW. Sometimes I set it up as a presentation, which I use in education.
            When I'm at home, I have small projects which also involve TW to some extent. TWScrapbooks with bookmarks, iframes etc.. I create private or public tutorials, embed images, make small or big changes to the layout, add plugins or scripts from other TWs I've made etc...
            Today TiddlyWiki is my single most important tool for everything which involves using a computer.... and sometimes I think that all I need from an operating system is a browser, so I can use a TW....

          • frankfurtkid on 16 November 2010
            I have a main notepad for private use at work, a website which is a static file, one or two standalone files and a current project on the BT greenside implementation, plus a new project on songs.tiddlyspace.com for song writing, collaboration and publishing.
          • matt on 16 November 2010
            I've created a number of TiddlyWiki's – the first was stored locally and I used it for capturing notes, lists and actions. I've now imported this into my matt space where the majority of the content remains private.

            I plan to use mattlucht for capturing random thoughts that I'd like to make public. I've also used TiddlySpace to create a website for a music festival I organised, this I used the bring-your-own-domain function for http://brixtonoxjam.com
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          Do you keep adding new features to your existing TiddlyWiki(s)?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • amalfaro-wrk on 2 July 2013
            "Features" to me means plugins and I don't really change those up. I've really settled on one set at this point, but I tweak the way it looks or the way it shows me the information pretty regularly. I get bored with the same interface all the time ;) .
          • dickon on 18 March 2012
            To some extent, but I find that it is a "marker" of where the task (that underlies the reason for setting up the TW in the first place) has got to when I slow down on the modifications! I hasten to add I only do pretty simple modifications, and tend to use the same small number of plugins or techniques again and again.
          • pmario on 7 April 2011
            • If they are nice and small in size: yes.

          • climatechange3 on 1 December 2010
            Yes, the ability to reorganize the presentation of my content through using new plugins, or making fuller use of plugins I have used for a while, is one of the joys of TiddlyWiki for me. This does pose a challenge, however, in that I have yet to develop or use a consistent process for integrating the new features into the steadily growing number of TiddlyWiki pages/sites that I maintain.
          • passingby on 27 November 2010
            Since I do not use a tiddlywiki very regularly, most of the features are brought in in the first phase, when I am setting up a TW
          • rouilj on 27 November 2010
            With the esception of the Coursebook tiddlywiki, most of my TW's are static with a core set of plugins. I do update the plugins occasionally as well as the tw core but I don't need to add too many features.
          • mama on 24 November 2010
            Oh yes :-)
            I often create "forks" from my original TWs to see how far I can take it - or I reorganize all content with new tools and plugins - just to see if its better...
            Sometimes a new theme suggests a total rewrite or reorganization of content...
          • frankfurtkid on 16 November 2010
            My standalone Tiddlywikis are pretty static now, although I find the odd plugin from time to time. Tiddlyspace is completely different as its changing all the time - so its still very much a learning as I go along experience, and adding in new features as I discover them. I still need to really think about how I want to use TiddlySpace - not there yet. the songs.tiddlyspace.com project is more geared to multiple people accessing the same site - and I want to get that working in a more collaborative fashion - so following / sharing information etc is important.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          Who is the target audience for your TiddlyWiki(s)?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • webid4me on 24 September 2014
            in reply to Who is the target audience for your TiddlyWiki(s)?:

            Me, me and Me! :P
          • passingby on 27 November 2010
            Some of TWs are just meant for myself. Others I have put up on Tiddlyspot, I don't think anybody visits them :-)
          • rouilj on 27 November 2010
            For most of TW's I am the primary audience.

            The one TW I produced for others was a coursebook that was used to teach an event correlation tool to computer system administrators.

            I am also occasionally playing with using a TW as a blogging platform which would again be geared toward items of interest to system administrators and people who are interested in lean/six sigma and its use in computing environments.
          • mama on 24 November 2010
            My students, collegues (teachers and other staffmembers at my school http://himmerlands-ungdomsskole.dk/).
            Once a year I use TiddlyWiki's to publish material related to exams - for my students and censors.
          • frankfurtkid on 16 November 2010
            Me; work colleagues; song writers; anyone whole hits a website
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          What features of TiddlyWiki made it suitable for your target audience?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • pmario on 7 April 2011
            • A very minimalistic presentation mode is possible.
            • Which keeps the focus of the audience at the basics.
            • But powerfull editing can be activated, which creates a WOW

          • passingby on 27 November 2010
            Menus and lists and search abilities
          • mama on 24 November 2010
            TiddlyWiki can be shared online as a normal website, work from a shared networkfolder or attached to an email - all very different delivery methods allowing for different levels/degrees of security and different levels/degrees of technological sawyness.
            In my experience, people just see another webpage - One, if not the most, frequent complaint I get is: "Why can't I go back in my browserhistory - to find a recently opened page"..
            TiddlersBarPlugin, HistoryPlugin or breadcrumbsPlugin, helps...
            Features I use to enhance user experience are:
            • Dropdown menus (sometimes from vertical mainmenu).
            • Lists of different kinds
              • tagged tiddlers
              • fETs delivering some degree of preview (images, custom fields etc..)
            Search engines:
            Optional hiding/showing sidepanels or fullscreen display of tiddler content..
            Most of my jobrelated TiddlyWikis hide SideBarOptions when opened.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How have you found training novice users to use and understand TiddlyWiki?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • smandoli on 24 December 2010
            It's reminiscent of entering the Linux world as a home user. The information is there, but you may have to search. Advice is plenteous, but you must learn to sort through it for the bits that apply. Advisors are friendly, but you must be brave enough and interested enough to participate in a forum.

            Suggested Question (related): What is your experience introducing TiddlyWiki to other people?
            • The hard part is convincing them it's useful and they should take it on. I start by explaining "personal information management" and then I check the eyes for any spark of interest.
            • The obvious solution is to present not TiddlyWiki but rather a largish wiki of interesting information, and then make them aware of the vehicle.

          • passingby on 27 November 2010
            Uptil now I have found just one person in my circle who had a 'real need' for storing data. She was fellow teacher and was very new to computers so it was a bit difficult, but she succeeded in using it functionally and effectively.
          • rouilj on 27 November 2010
            The coursebook I created was well received by a couple of participants, but there were also three people who found it difficult to use and understand. They found it got in the way of learning the material compared to the pdf format that other teachers used for their classes.

            Plus I had a couple of people with old version of firefox (1.x) that made it unusable.

            If I could teach the course again, I think I would have to spend time teaching how to use tiddlywiki (and the coursebook) to even a technologically experienced audience.
          • mama on 25 November 2010
            The most difficult part is to explain TiddlyWiki to tech-sawy people.
            They tend to see TiddlyWiki as alfa-software, because it's so transparent and customizable.
            The fact that a user can delete a button is considered to be a serious bug.

            When I started using TiddlyWiki, I made different tools for my students and collegues, however crossbrowser problems stopped my work in this direction. Most of my students and collegues use IE. My experience is that IE is the worst possible (almost...) browser for javascriptapplications, rendering of css and images etc....
            I don't spend any time trying to make any of my students or collegues understand how TiddlyWiki works anymore.
            On the other hand collegues and students often ask me to create lists, imagegalleries and faqs for quick delivery - and I get positive feedback.
            Sometimes some of them have a glimpse over my shoulder, and I always get outbursts like - "Wauw, I'd like to be able to do that" ... however nobody really wants to invest time in learning how to do it themselves..
          • frankfurtkid on 16 November 2010
            More difficult than I would like
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How many tiddlers and how many megabytes in your largest TiddlyWiki?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • dickon on 18 March 2012
            The main ambit tiddlymanual (see tiddlymanuals) is over 2Mb now - still works fine!
          • passingby on 27 November 2010
            Not very large I am afraid. But wait! I have a 'contactsbook' which probably has around 137 tiddlers containing basically names, address and phone numbers of people I know. Not much in MBs I am afraid
          • rouilj on 27 November 2010
            The coursebook is 2.1 MB and 441 tiddlers.

            My Tiddlysnip tiddlywiki is 1.5MB and 661 tiddlers.

          • yakov on 16 November 2010
            No big one yet. Just somewhat about 1Mb. But this is an issue: I still don't know if TW has some "limit" (would it get slower if become too big?) and this is why I'm not sure if it's proper to make only one TW for everything or I have to split the things mindfully.
          • frankfurtkid on 16 November 2010
            2.6 MB - probably pretty modest I guess.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How has TiddlyWiki saved time for you as an information publisher?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • mama on 25 November 2010
            I'm not sure it has... I've found a new tool which let me explore things which were inaccesible (at least to me) untill now..
            Sometimes I use much more time preparing a TWsetup, than I would if I just used some office program, Notepad - or a piece of paper for that matter...
            However TW allows me to organize and reuse things in a way that no other software does - and It certainly helps me to fight a reoccuring writers block.
            On the other hand I setup simple TWwebpages for my students in no time, because I have readymade templates.
            Its an incredible fast cms - I update lists and appointments on the fly. My students update their browsers and all is well.
            When I want my pupils to focus on things, I give them links, iframes and popouts from a TW hosted on TiddlySpace, TiddlySpot or one of my own TiddlyHome installations.
            I really like to be able to deliver pages without any commercials and other distracting factors.
            I've even implemented a webversion of "DarkRoom" to help my students focus on their writing. A little pradox considering my personal stategy - I know, however my students like the seamless and simple integration of browserbased tools.
          • frankfurtkid on 16 November 2010
            For standalone websites - its quick and easy to put up content. In the corporate world its about document control and sharing of information
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How has TiddlyWiki saved time for your target audience?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • rouilj on 27 November 2010
            I'm not sure. For the people who used the coursebook and liked it during
            the class I think it saved them time. Also I have contacted one former student
            who found it useful when he was actually working at implementing particular
            corrleation patterns.
          • frankfurtkid on 16 November 2010
            Great in the BT environment for document / content collaboration - No LiveMeeting, no version control problems, less storage issues, fewer Word documents flying around all out of date. Notepad also saves me time and keeps things "together" in my world.


          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How has the TiddlyWiki community helped you?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • dickon on 18 March 2012
            Amazingly helpful and quick to respond - knowledgeably and creatively - via the Google Group.

            I worry that as TW gets bigger as a "movement" (?!) there could be a loss of capacity from the small group of utterly dedicated 'evangelists' for TW who do seem to have an extraordinary capacity to be massively helpful almost instantaneously, whenever I have posted with a confusion or glitch...
          • pmario on 7 April 2011
            • Because of fast responses, to questions.

            What I like: The friendly conversation in the forum, compared to other forums.
          • climatechange3 on 1 December 2010
            Countless ways. Whether in the responses to questions I have posed, or in offering insight and understanding through responses to questions from others in the community, the TW Google Group community has been consistently brilliant as a source of help.
          • andrewbarbour on 28 November 2010
            The TW community is incredible. I have never been exposed to a group of folks that have more passion and are so willing to give of their time and expertise.

            I was looking for a tool to pull back search results for individual lines in tiddlers so I posted on the google groups page.... I had a large number of direct responses with ideas as well as postings to the forum. The input invaluable - and the outcome entirely satisfactory - someone had already written the code (Thanks Eric!) and I was able to integrate it into my tiddlywiki within minutes.

            Everyone is incredibly friendly and helpful!
          • passingby on 27 November 2010
            Its the Best community. People help out each other like nowhere else. Infact Eric whips out code like magic.
          • rouilj on 27 November 2010
            The coursebook wouldn't have been possible without the help of a number of TW regulars including: Eric L. Shulman and Paulo Soares.

            They modified plugins to suit my needs and provided extensive debugging and other help.
          • mama on 26 November 2010
            I don't think I would use (or be able to use) TW today if it hadn't been for the TiddlyWiki googlegroup.
            People on the discussionboard, has always been very kind and helpfull - and sometimes I have learned a lesson or two about discipline as well :-)
            There's a lot to learn from the threads, and its great to ask a question and get (almost) immediate response.
            For a newbie it's a fantastic and inspiring experience to get help from a gifted programmer, who explains things in a way that is enligtening and thoughtprovoking... It's a joy, when someone steps into a thread with a snippet of code, which solves everything :-)
            It's communication at a level, I don't find many other places, and it's certainly an oasis, a sanctuary to find in a web which is mostly a marketplace where everyone is considered to be a potential customer...
            The generousity of really great programmers like Eric Shulmann (on the other hand, Eric MUST be one of a kind...), the Osmosoftteam and several/many individuals who invest their sparetime, helping other people to use TiddlyWiki, is an outstanding example of a meltingpot of ressources, that you simply NEED to follow, because it's unique, magic and active.
            You don't know for how long it will last - and I sometimes think that the community survives/thrives because different "teams" of really enthusiastic people choose to discuss matters that could be discussed in the privacy of their own mailboxes :-)
            That's ok - and certainly gives you a window to a world of things, you wouldn't know existed elsewise....
            If it wasn't for the community I don't think there would be a TiddlyWiki - on the other hand I'm not sure if TiddlyWiki would be considered to be a serious project if it wasn't for the Osmosoft Team - so congratulations to everybody :-)

            It's an inspiring meltingpot of users, programmers and enthusiasts - communicating and helping each other to achieve both practical and magic stuff with a onepage html/javascript application

          • frankfurtkid on 16 November 2010
            The Osmosoft guys have been very helpful in sorting out problems and questions. The Google group is a good place to find others sharing the same problems - and also getting answers.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How have you been able to contribute back to the TiddlyWiki community?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • smandoli on 25 December 2010
            I haven't yet. I am looking forward to answering questions from complete newbies ... after I'm not one myself. I am a communicator, and I'd like to develop tutorial pieces. I'm not a coder and I'm not very tech (my tutorial would not be a video). I wouldn't mind sending some money but I feel it's not appropriate with my finances.
          • rouilj on 27 November 2010
            I put up a copy of the coursebook at coursebook.tiddlyspot.com but it's not yet complete. Also I have answered a few questions in google groups.
          • yakov on 16 November 2010
            Just a tiny bit.. I know CSS to extent of 2d specification and other things like DOM so I'm capable to answer questions that are rather not about TW.. And so I did twice, perhaps)
          • frankfurtkid on 16 November 2010
            Not much to date - I still have loads of questions, rather than good answers, and I'm more of a user than a coder. But I am happy to share ideas and solutions.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How many other people have you introduced to TiddlyWiki?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • dickon on 18 March 2012
            I get about 4-500 hits a month to my Tiddlymanuals at present, which compared to how many people regularly read treatment manuals is, in my book, quite good going for a new project.

            There are about 17 teams starting to use and adapt their own local versions of a TiddlyManual around the UK, and these vary in size from about 4 or 5 up to about 25.
          • mama on 18 August 2011
            Directly or indirectly??

            Indirectly

            Indirectly I have presented jobrelated material in TWs for about 5 or 600 people over a period of three years.
            I have used TWs as container for all kinds of material for reference, when having mailcorrespondences. They are for the most part hosted by dropbox, sometimes attached..

            Direct introduction:

            One year ago the administrator of linux-abc.dk (Danish Linux community powered by MyBB) made me administrator of the forum TiddlyWiki (12 tutorials and a description) and a support forum...
            There has been some hits 2 - 300, however there's been no activity for a long time.
            I haven't bothered to fake questions/answers or setup fake members.
            I recon there are not that many danes using TiddlyWiki therefore no demand for support in Danish...
            Maybe my tutorials aren't good enough. Don't know really. Linux-abc's administrator has praised my work - though - even if he doesn't use TiddlyWiki himself.

            When I attend groupdiscussions i.e puppy linux forums, I setup online TiddlyWikis to serve as Faq, tutorials and projectdescription. I've recieved positive feedback from developer in charge of the Puppy Studio project - however I have no idea how many hits my TWs have had...
            Everytime I use a TW for this kind of work, I explain what TiddlyWiki is and that you can download it for personal use. I don't know if anyone has done that yet...

            I have setup a Danish FaceBook group (TiddlyWiki_da), a posterous blog (http://tiddlywiki-da.posterous.com) and a hootcourse (http://hootcourse.com/course/312/) No activity except some hits....

            A year ago a publisher of educational material ("Forlaget for ildsjæle" - "Imprint for Enthusiasts") encouraged me to create tutorials on how to use TiddlyWiki in a classroomsetting... Alas I haven't reached a point where I've got the time needed to pursue this request - and I'm very busy working as an IT-administrator, teaching undergraduate students on a boarding school (http://himmerlands-ungdomsskole.dk). 4 kids, a cat and two turtles need my full attention - so I guess I just have to wait untill I'm retired....
          • rouilj on 27 November 2010
            60 or so between teaching from the tiddlywiki as well as presenting on tiddlywiki.
          • yakov on 16 November 2010
            For the moment just one philosopher) See, ragged (no offence; I'm not sure this word has same tinge as in russian) tutorials and very few possibilities for those who want to get russian interface, russian help and tutorials and complicity of TW.. As for now this is a tool for those who need it, not a comfortable platform for everything (at least for my friends).
          • martinlindner on 16 November 2010
            hmm, 10 or so? (who got the idea, but i mentioned it more often.)
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          What is the most challenging thing about using TiddlyWiki?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • smandoli on 25 December 2010
            Figuring out what plug-ins may help and how to use them. You can read my blog entry about this.

            Suggest Other Question: What secondary software tool or application is most useful for you in working with TiddlyWiki? My answer is Notepad++ (for regex search-and-replace) and python (for converting a big notes document into a TW).
          • rouilj on 27 November 2010
            The horrible debugging environment. I have been trying to fix the Quiz plugin for a while but the debugging environment compared to other tools (perl, python, C) is primitive.
          • frankfurtkid on 16 November 2010
            (1) Trying to work out how to do something when you have no clue. (2) Trying to keep up with the changes in TiddlySpace
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          Which plugins do you rely on the most?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          What do you think of the name TiddlyWiki and the term "tiddler"?
          -
          - last modified on - 10 December 2010 -
          - -
          - - -
          -
          -
          -
          -
          • gjrobert on 16 September 2013
            "tiddler" was a whole new word to me at first (I'm no native English speaker). "TiddlyWiki" sounds impressive, bit funny and enjoyable.

            I like the idea to store ideas and knowledge (like dictionary entries) as small chunks in tiddlers, while preserving the ability to transclude and organize them together into a big knowledge base or long articles or even an e-book.
          • pmario on 7 April 2011
            TiddlyWiki for me is just a name for a wiki.
            The term tiddler, has to be explaind, whenever you use it. For me "The smallest part of content in a TiddlyWiki" works best.
          • kosmaton on 10 March 2011
            I think unfortunately the cons outweigh the pros.

            Pros:
            • non-stuffy
            • unique (rare/peculiar word: gives it more of a story)
            • rolls off the tongue easily
            Cons:
            • dealing with silly associations
            • yet another half-childish sounding Web2.0 name?

            Personally, I would love to use a "GrooveWiki" made up of a bunch of cool "grooves".

            Or go for something meaningful and nice-sounding in Indo-European or Lojban...

            I'd ultimately rather present this software saying "Folks, behold this GrooveWiki" than "Folks, behold this TiddlyWiki... yes... indeed... no... it's sticklebacks." First impressions, you know.


          • poulstaugaard on 6 March 2011
            I agree with Andrew but I haven't found a better term, except perhaps 'item' or 'entry'. I've hesitated to drop 'tiddler' though, choosing to stick with the virtual village parlance.
          • smandoli on 24 December 2010
            Those are good terms. I have nothing better. That said, I always introduce the terms with just a bit of anxiety! And i explain them with a big roll of the eyes and a chuckle. Once I'm past that, all is well. And it may be all for the good. Enough with haughty tech terms, with applications that impress the new user with fear before anything else.
          • mama on 2 December 2010
            I like those words. For some reason they remind me of Puppy Linux and the penguin Linux Logo.... and I'm a fan of those.
            I must admit that there a no Danish words that sounds like "TiddlyWiki" and "tiddler". They are very foreign words - and some times I just replace them with "Wiki" and "article" - however it depends on the context, and if the audience are people who already have a hunch of what a wiki is... If they don't I would most likely use grouping of words as "Instantly editable blog or homepage" and "editable posts".
            The use of the words "TiddlyWiki" and "tiddler" implies originality and an entrance into a new terminology, which is very much what TiddlyWiki demands from new users anyway - so please keep the words, they make sense after a while..
          • andrewbarbour on 28 November 2010
            "Tiddlywiki" - kind of 'folksy' and quaint. Has a bit of charm.

            "Tiddler" - is a bit of a barrier to adoption. I have tried to give overviews to a few people and used the term 'tiddler' - at least 50% of the time there are chuckles and references to 'diddlers'. I would suggest calling them 'items' or 'posting'.
          • yakov on 16 November 2010
            I use the term "tiddler" for communication in google.groups; I prefer a "tw-entry" ("tw-запись" in russian) since it looks closer to IT terms.. just more brief and exact. Yeap, I think this actually not important.

            TiddlyWiki sound just as Coca-Cola - you never think of what it means, so it's ok, I think. Keep in mind however that english is not my native language.
          • frankfurtkid on 16 November 2010
            I got used to it - but when introducing people to these terms for the first time, they have to get over the smiles. Usually the functionality wins over, but I've had feedback that it does not sound very professional - but hey what does Google or Twitter sound like ? Also sounds much better than Edit Conflict - which I just got saving this tiddler
          -
          -
          -
          • None.
          -
          -
          -
          • not tagging
          -
          -
          - -
          - -
          - -
          How might you use TiddlyWiki in the future?
          -
          - last modified on - 15 November 2010 -
          - -
          - - -
          -
          -
          -
          -
          -
          -
          -
          • pmario on 7 April 2011
            • As my main knowledge database (private)
            • and presentation plattform. (private / public)

          • mama on 16 December 2010
            I guess I'm waiting to implement some future version of TiddlySpace on our servers, for quick and easy delivery of personal spaces with preincluded plugins and theme tailored for intranetuse...
            All students and collegues already have a single loginname and password for network & wireless internetconnection, moodle, Zimbra (email), educational material services etc...
            If TiddlySpace should be implemented - I would need a way to setup users/spaces from a csv (or a shared database) and a way to add members to a new space template from a shared/known list of users.
            I would need two versions of TiddlySpace, one for collegues and another one for students, to run from our two seperate servers. ..
            If TiddlySpace could interact with Moodle - I think it would be a seamless integration..

          • yakov on 16 November 2010
            Aside those many writings including scientific ones, aggregation uses like GTD or question or news aggregation and possible use for site I'd like to mention the concept which TW allows to implement.

            The IT world is very conservative in one thing: tree-based file systems. This just limits the mind. For instance, I used to sort music in my mobile phone by making folders so that I can accent the value of different tracks and this helps me to introduce some harmony in searching music that's proper for the moment. But eventually this came to too branched tree and tracks that has value in more than one sences became binded with this separation.

            Such a thing happens sometimes with all other things: notes, books.. whatever. TW makes a breakthrough here and after some tweaking can reorganize things so that I can forget about the eclectic branched limits. I haven't dig in this direction yet but I know that there are already somewhat player plugins based on web-technologies.. So this may be of interest.

            Hi-hi. Perhaps TW also will be usefull for organizing code for programming but this sounds rather fansy (as for now).
          • martinlindner on 16 November 2010
            I'd love to have a fully working version of TiddlyDocs, all by myself, which would be able to import docs.
            And I can imagine a lot uf uses as soon as i would be able to read/write/edit tiddlers from a client, (something like a twitter client where i could search for a thread of tiddlers, or subscribe to a tag).
          -
          -
          -
          • not tagging
          -
          -
          - -
          -
          -
          -
          -
          -
          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
          -
          -
          -
          -
          <!--{{{-->
          -<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>>
          -
          -
          -
          -
          <<importTiddlers>>
          -
          -
          -
          -
          <!--{{{-->
          -<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
          -<!--}}}-->
          -
          -
          -
          -
          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]]
          -
          -
          -
          -
          <!--{{{-->
          -<div class='header' role='banner' 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' role='navigation' refresh='content' tiddler='MainMenu'></div>
          -<div id='sidebar'>
          -<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
          -<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
          -</div>
          -<div id='displayArea' role='main'>
          -<div id='messageArea'></div>
          -<div id='tiddlerDisplay'></div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          -
          /*{{{*/
          -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='toolbar' role='navigation' 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>
          -<!--}}}-->
          -
          -
          - -
          - -
          -
          /***
          -|''Name''|RefreshTiddlerCommand|
          -|''Version''|0.3.0|
          -***/
          -//{{{
          -(function($) {
          -
          -var cmd = config.commands.refreshTiddler = {
          -	text: "refresh",
          -	locale: {
          -		refreshing: "Refreshing tiddler..."
          -	},
          -	tooltip: "refresh this tiddler to be the one on the server",
          -	handler: function(ev, src, title) {
          -		var tiddler = store.getTiddler(title);
          -		if(!tiddler) {
          -			tiddler = new Tiddler(title);
          -			merge(tiddler.fields, config.defaultCustomFields);
          -		}
          -		$(story.getTiddler(title)).find(".viewer").
          -			empty().text(cmd.locale.refreshing);
          -		var dirtyStatus = store.isDirty();
          -		story.loadMissingTiddler(title, {
          -			"server.workspace": tiddler.fields["server.recipe"]  ? "recipes/" + tiddler.fields["server.recipe"] :
          -				tiddler.fields["server.workspace"] || "bags/"+tiddler.fields["server.bag"],
          -			"server.host": tiddler.fields["server.host"],
          -			"server.type": tiddler.fields["server.type"]
          -		}, function() {
          -			store.setDirty(dirtyStatus);
          -		});
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="72 648 70 70" 
          -width="30" height="30">
          -<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -	<g>
          -		<path d="M 77.59005 669.34003 C 71.532745 681.90424 73.714462 697.4441 84.135193 707.86475 
          -		C 97.315445 721.0451 118.684715 721.0451 131.8649 707.86475 
          -		C 145.04515 694.68457 145.04515 673.31537 131.8649 660.13513 
          -		C 121.4441 649.7141 105.90419 647.53253 93.339905 653.5899 L 102.047455 662.2976 
          -		C 109.58637 660.2373 117.987976 662.16803 123.90997 668.08997 
          -		C 132.69673 676.8767 132.69673 691.12317 123.90997 699.90985 
          -		C 115.12313 708.6966 100.87699 708.6966 92.09012 699.90985 
          -		C 86.168266 693.98804 84.23744 685.58643 86.297653 678.04755 Z M 72 648 L 72 668.25 L 78.75 661.49957 
          -		L 99.00019 681.7502 L 105.750175 675.00006 L 85.50013 654.75012 L 92.249985 648 Z" fill="black"
          -		class="glyph"/>
          -	</g>
          -</g>
          -</svg>
          -
          -
          -
          A [[SiteIcon|SiteIcon tiddler]]@glossary helps provide some identity to your space.  Ideally it'd be a square and a minimum of 48*48 pixels size.  You can upload your site icon using the uploader below.
          -
          -<<binaryUploadPublic title:SiteIcon>>
          -
          -
          -
          {{{
          -!Template
          -<<view modifier SiteIcon width:48 height:48 preserveAspectRatio:yes label:no>> <<view modifier spaceLink>> on <<view modified date>>
          -<<<
          -<<view text wikified>>
          -<<<
          -!EndTemplate
          -}}}
          -
          -
          -
          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
          -
          -
          -
          /***
          -|''Name''|TiddlyFileImporter|
          -|''Version''|0.3.8|
          -|''Author''|Ben Gillies|
          -|''Type''|plugin|
          -|''Description''|Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.|
          -!Usage
          -Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.
          -!Requires
          -tiddlyweb
          -tiddlywebplugins.reflector
          -!Code
          -***/
          -//{{{
          -(function($){
          -if(!version.extensions.TiddlyFileImporter)
          -{ //# ensure that the plugin is only installed once
          -	version.extensions.TiddlyFileImporter = { installed: true };
          -}
          -
          -config.macros.fileImport = {
          -	reflectorURI: '/reflector?csrf_token=%0',
          -	incorrectTypeError: 'Incorrect File Type. You must upload a TiddlyWiki',
          -	uploadLabel: 'Upload',
          -	uploadLabelPrompt: 'Import tiddlers from this TiddlyWiki',
          -	step1FileText: 'File:',
          -	step1PostText: 'In the next screen you will select the tiddlers to import.',
          -	step1Title: 'Step 1: Pick a TiddlyWiki to import',
          -	step1TypeChooser: 'Import From:',
          -	step3Html: ['<input type="hidden" name="markList" />',
          -		'<input type="hidden" checked="true" name="chkSync" />',
          -		'<input type="hidden" name="chkSave" />',
          -		'<input type="hidden" name="txtSaveTiddler" />'].join(),
          -
          -	handler: function(place, macroName, params, wikifier, paramString) {
          -		var wizard = new Wizard();
          -		wizard.createWizard(place, 'Import a TiddlyWiki');
          -		this.restart(wizard);
          -	},
          -
          -	restart: function(wizard) {
          -		var me = config.macros.fileImport;
          -		wizard.addStep(me.step1Title, ['<input type="hidden" ',
          -			'name="markList" />'].join(""));
          -		var markList = wizard.getElement('markList');
          -		var uploadWrapper = document.createElement('div');
          -		markList.parentNode.insertBefore(uploadWrapper, markList);
          -		uploadWrapper.setAttribute('refresh', 'macro');
          -		uploadWrapper.getAttribute('macroName', 'fileImport');
          -		var iframeName = 'reflectorImporter' + Math.random().toString();
          -		me.createForm(uploadWrapper, wizard, iframeName);
          -		$(uploadWrapper).append('<p>' + me.step1PostText + '</p>');
          -		wizard.setValue('serverType', 'tiddlyweb');
          -		wizard.setValue('adaptor', new config.adaptors.file());
          -		wizard.setValue('host', config.defaultCustomFields['server.host']);
          -		wizard.setValue('context', {});
          -		var iframe = $(['<iframe name="' + iframeName + '" ',
          -			'style="display: none" />'].join("")).appendTo(uploadWrapper);
          -		var onSubmit = function(ev) {
          -			var uploadType = $('select[name=uploadtype]', wizard.formElem).val();
          -			if (uploadType == "file") {
          -				// set an onload ready to hijack the form
          -				me.setOnLoad(uploadWrapper, wizard, iframe[0]);
          -				wizard.importType = 'file';
          -				wizard.formElem.submit();
          -			} else {
          -				var csrf_token = config.extensions.tiddlyspace.getCSRFToken();
          -				$.ajax({
          -					url: "%0/reflector?csrf_token=%1".format(
          -						config.defaultCustomFields["server.host"], csrf_token),
          -					type: "POST",
          -					dataType: "text",
          -					data: {
          -						uri: $("input", ".importFrom", wizard.formElem).val()
          -					},
          -					success: function(data, txtStatus, xhr) {
          -						wizard.POSTResponse = data;
          -						me.importTiddlers(uploadWrapper, wizard);
          -					},
          -					error: function(xhr, txtStatus, error) {
          -						displayMessage(["There was an error fetching the ",
          -							'url: ', txtStatus].join(""));
          -						me.restart(wizard);
          -					}
          -				});
          -				return false;
          -			}
          -		};
          -		wizard.setButtons([{
          -			caption: me.uploadLabel,
          -			tooltip: me.uploadLabelPrompt,
          -			onClick: onSubmit
          -		}]);
          -		$(wizard.formElem).submit(function(ev) {
          -			onSubmit(ev);
          -			ev.preventDefault();
          -		});
          -	},
          -
          -	createForm: function(place, wizard, iframeName) {
          -		var form = wizard.formElem;
          -		var me = config.macros.fileImport;
          -		form.action = me.reflectorURI.format(
          -			config.extensions.tiddlyspace.getCSRFToken());
          -		form.enctype = 'multipart/form-data';
          -		form.encoding = 'multipart/form-data';
          -		form.method = 'POST';
          -		form.target = iframeName;
          -		onSelectChange = function(e) {
          -			var changeTo = $(this).val();
          -			if (changeTo == "file") {
          -				$(".importFrom").html('%0 <input type="file" name="file" />'.
          -					format(me.step1FileText));
          -			} else {
          -				$(".importFrom").html('URL: <input type="text" name="uri" />'
          -					+ ' Do you want <a target="_blank" href="http://faq.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F">inclusion</a> instead?');
          -			}
          -		};
          -		$(place).append('<span>%0</span>'.format(me.step1TypeChooser)).
          -			append($(['<select name="uploadtype"><option value="file" selected="selected">file',
          -				'<option value="uri">url</select>'].join("")).change(onSelectChange)).
          -			append('<div class="importFrom">%0<input type="file" name="file" /></div>'.
          -					format(me.step1FileText));
          -	},
          -
          -	setOnLoad: function(place, wizard, iframe) {
          -		var me = config.macros.fileImport;
          -		var loadHandler = function() {
          -			me.importTiddlers.apply(this, [place, wizard, iframe]);
          -		};
          -		iframe.onload = loadHandler;
          -		completeReadyStateChanges = 0;
          -		iframe.onreadystatechange = function() {
          -			if (++(completeReadyStateChanges) == 5) {
          -				loadHandler();
          -			}
          -		};
          -	},
          -
          -	importTiddlers: function(place, wizard, iframe) {
          -		var tmpStore = new TiddlyWiki();
          -		var POSTedWiki = "";
          -		if (wizard.importType == "file") {
          -			try {
          -				POSTedWiki= iframe.contentWindow
          -					.document.documentElement.innerHTML;
          -			} catch(e) {
          -				displayMessage(config.macros.fileImport.incorrectTypeError);
          -				config.macros.fileImport.restart(wizard);
          -				return;
          -			}
          -			// now we are done, so remove the iframe
          -			$(iframe).remove();
          -		} else {
          -			POSTedWiki = wizard.POSTResponse;
          -		}
          -
          -		tmpStore.importTiddlyWiki(POSTedWiki);
          -		var newTiddlers = tmpStore.getTiddlers();
          -		var workspace = config.defaultCustomFields['server.workspace'];
          -		var context = {
          -			status: true,
          -			statusText: 'OK',
          -			httpStatus: 200,
          -			adaptor: wizard.getValue('adaptor'),
          -			tiddlers: newTiddlers
          -		};
          -		context.adaptor.store = tmpStore;
          -		wizard.setValue('context', context);
          -		wizard.setValue('workspace', workspace);
          -		wizard.setValue('inFileImport', true);
          -		config.macros.importTiddlers.onGetTiddlerList(context, wizard);
          -	}
          -};
          -
          -var _onGetTiddler = config.macros.importTiddlers.onGetTiddler;
          -config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
          -	if (wizard.getValue('inFileImport')) {
          -		var me = config.macros.importTiddlers;
          -		if(!context.status)
          -			displayMessage("Error in importTiddlers.onGetTiddler: " + context.statusText);
          -		var tiddler = context.tiddler;
          -		var fields = tiddler.fields;
          -		merge(fields, config.defaultCustomFields);
          -		fields["server.workspace"] = wizard.getValue('workspace');
          -		delete fields['server.permissions'];
          -		delete fields['server.bag'];
          -		fields['server.page.revision'] = 'false';
          -		delete fields['server.recipe'];
          -		fields.changecount = 1;
          -		store.suspendNotifications();
          -		store.saveTiddler(tiddler.title, tiddler.title, tiddler.text,
          -			tiddler.modifier, tiddler.modified, tiddler.tags, tiddler.fields,
          -			false, tiddler.created);
          -		store.resumeNotifications();
          -		var remainingImports = wizard.getValue("remainingImports")-1;
          -		wizard.setValue("remainingImports",remainingImports);
          -		if(remainingImports === 0) {
          -			if(context.isSynchronous) {
          -				store.notifyAll();
          -				refreshDisplay();
          -			}
          -			wizard.setButtons([
          -					{caption: me.doneLabel, tooltip: me.donePrompt, onClick: me.onClose}
          -				],me.statusDoneImport);
          -			autoSaveChanges();
          -		}
          -	} else {
          -		_onGetTiddler.apply(this, arguments);
          -	}
          -};
          -
          -var _onCancel = config.macros.importTiddlers.onCancel;
          -config.macros.importTiddlers.onCancel = function(e)
          -{
          -	var wizard = new Wizard(this);
          -	if (!wizard.getValue('inFileImport')) {
          -		return _onCancel.apply(this, arguments);
          -	}
          -	var place = wizard.clear();
          -	config.macros.fileImport.restart(wizard);
          -	return false;
          -};
          -
          -var _step3Html = config.macros.importTiddlers.step3Html;
          -var _onGetTiddlerList = config.macros.importTiddlers.onGetTiddlerList;
          -config.macros.importTiddlers.onGetTiddlerList = function(context, wizard) {
          -	var fileImport = config.macros.fileImport;
          -	var importTiddlers = config.macros.importTiddlers;
          -	if (wizard.getValue('inFileImport')) {
          -		importTiddlers.step3Html = fileImport.step3Html;
          -	} else {
          -		importTiddlers.step3Html = _step3Html;
          -	}
          -	_onGetTiddlerList.apply(this, arguments);
          -};
          -})(jQuery);
          -//}}}
          -
          -
          -
          <!DOCTYPE html>
          -<html lang="en">
          -<head>
          -	<meta charset="UTF-8">
          -	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
          -	<title>Reply</title>
          -	<link rel="stylesheet" href="//tiddlyspace.com/bags/benspa_public/tiddlers/bootvelcro.css">
          -	<style>
          -		html,
          -		body {
          -			overflow: hidden;
          -			background-color: transparent;
          -		}
          -
          -		#container {
          -			/* prevent a fouc if no images present */
          -			display: none;
          -		}
          -
          -		.modal-header {
          -			border-bottom: none;
          -			padding: 5px 0 0;
          -			position: absolute;
          -			width: 100%;
          -			background-color: #e0e0e0;
          -			-webkit-border-radius: 6px 6px 0 0;
          -			-moz-border-radius: 6px 6px 0 0;
          -			border-radius: 6px 6px 0 0;
          -			cursor: move;
          -		}
          -
          -		.form-actions {
          -			position: absolute;
          -			bottom: 0;
          -			box-sizing: border-box;
          -			-moz-box-sizing: border-box;
          -			width: 100%;
          -			margin: 0;
          -			border-radius: 0 0 6px 6px;
          -			background-color: #e0e0e0;
          -			border-top: 1px solid gray;
          -		}
          -
          -		.form-actions input.btn {
          -			width: auto;
          -			float: right;
          -			margin: 0 0.2em;
          -		}
          -
          -		.closeBtn {
          -			background-color: #DCE7F1 !important;
          -		}
          -
          -		.primary {
          -			background-color: #09F !important;
          -		}
          -
          -		h1 {
          -			margin-bottom: 9px;
          -			margin-top: 9px;
          -		}
          -
          -		body {
          -			width: 100%;
          -			height: 100%;
          -			position: absolute;
          -		}
          -
          -		.modal {
          -			margin: 10px;
          -			top: 0;
          -			left: 0;
          -			bottom: 0;
          -			width: 510px;
          -			position: absolute;
          -			box-shadow: #444 0px 0px 10px 2px;
          -			border-radius: 6px;
          -			background-color: white;
          -			border: 1px solid gray;
          -			background-color: #F0F4F8;
          -		}
          -
          -		label em {
          -			cursor: pointer;
          -		}
          -
          -		.modal-body {
          -			overflow: auto;
          -			position: absolute;
          -			top: 0;
          -			bottom: 0;
          -			left: 0;
          -			right: 0;
          -			margin: 65px 20px 67px;
          -			background-color: transparent;
          -		}
          -
          -		.nav-tabs {
          -			padding-left: 1%;
          -			margin: 0;
          -			width: 99%;
          -			border-color: gray;
          -		}
          -
          -		.nav-tabs > li {
          -			cursor: pointer;
          -		}
          -
          -		.nav-tabs > li > a {
          -			line-height: 2.4em;
          -			font-weight: bold;
          -			font-size: 100%;
          -		}
          -
          -		.nav-tabs > li.active > a{
          -			background-color: #F0F4F8;
          -			border-color: gray;
          -			border-bottom-color: #F0F4F8;
          -		}
          -
          -		.active {
          -			display: block;
          -		}
          -
          -		input,
          -		textarea,
          -		select,
          -		.uneditable-input {
          -			color: #606060;
          -		}
          -
          -		.imagePicker {
          -			-moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          -			-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          -			box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
          -			border: 1px solid #CCC;
          -			height: 110px;
          -			overflow: auto;
          -			-webkit-border-radius: 3px;
          -			-moz-border-radius: 3px;
          -			border-radius: 3px;
          -			margin-left: 0;
          -		}
          -
          -		.imagePicker img {
          -			margin: 5px;
          -			border: 2px solid transparent;
          -		}
          -
          -		.imagePicker .current {
          -			border: 2px dotted #555;
          -		}
          -
          -		label {
          -			font-weight: bold;
          -		}
          -
          -		.form-actions label {
          -			float: left;
          -			margin-top: 0.75em;
          -		}
          -
          -		fieldset input,
          -		fieldset textarea {
          -			width: 90%;
          -			border-color: gray;
          -		}
          -
          -		@media all and (max-width: 550px) {
          -			.modal {
          -				width: 95%;
          -			}
          -		}
          -
          -		#help {
          -			position: absolute;
          -			border: 0;
          -			right: 4px;
          -			top: 5px;
          -			text-indent: -9999px;
          -			color: transparent;
          -			height: 16px;
          -			width: 16px;
          -			background: none;
          -			background-image: url(/bags/common/tiddlers/help.png);
          -			background-repeat: no-repeat;
          -			background-color: white;
          -			z-index: 2;
          -			border-radius: 10px;
          -		}
          -
          -		#help-info {
          -			padding: 0;
          -			border: 1px solid gray;
          -			width: 60%;
          -			height: 50px;
          -			color: #404040;
          -			background-color: white;
          -			position: absolute;
          -			top: 5px;
          -			right: 5px;
          -			z-index: 1;
          -			cursor: auto;
          -			border-radius: 5px;
          -
          -		}
          -
          -		#help-info p {
          -			padding: 10px 25px;
          -			margin-bottom: 0;
          -		}
          -	</style>
          -</head>
          -<body>
          -	<div id="container">
          -		<form action="#" class="modal">
          -			<div class="modal-header">
          -				<button id="help">help</button>
          -				<div id="help-info" style="display:none;"><p>
          -				Found something interesting? Write about it in your own space. <a href="//docs.tiddlyspace.com/Reply to this Tiddler" target="_blank">Find out more</a>
          -				</p></div>
          -				<ul class="nav nav-tabs" data-tabs="tabs">
          -					<li class="active" data-tab-name="post"><a href="#postForm">Reply</a></li>
          -				</ul>
          -			</div>
          -
          -
          -			<fieldset id="postForm" class="modal-body">
          -				<label>Title
          -					<input type="text" name="title">
          -				</label>
          -				<input type="hidden" name="url">
          -				<label>Post
          -					<textarea name="text" rows="8"></textarea>
          -				</label>
          -				<label>Tags
          -					<input type="text" name="tags" value="">
          -				</label>
          -			</fieldset>
          -
          -
          -			<div class="form-actions">
          -				<label class="checkbox">
          -					<input type="checkbox" name="private" val="private">
          -					keep private
          -				</label>
          -				<input type="submit" class="btn primary btn-large" value="Done">
          -				<input type="button" class="btn btn-large closeBtn" value="Cancel">
          -			</div>
          -		</form>
          -	</div>
          -
          -	<script type="text/javascript"
          -            src="/bags/common/tiddlers/jquery.js"></script>
          -	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/_reply.js"></script>
          -</body>
          -</html>
          -
          -
          -
          <!DOCTYPE html>
          -<html>
          -<head>
          -	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
          -	<title>Account</title>
          -	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
          -	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
          -	<link href="/bags/common/tiddlers/jquery-ui.custom.css" type='text/css' rel='stylesheet' >
          -</head>
          -<body>
          -
          -<div id="container">
          -	<div class="main section">
          -		<a class="app" href="/">home</a>
          -		<div class="left">
          -		<div id="siteiconArea">
          -		<h2>User Icon</h2>
          -		<div>
          -			<img id="siteicon" class="siteicon">
          -			<form id="upload" method="POST" enctype="multipart/form-data">
          -				<input type="hidden" name="title" value="SiteIcon" />
          -				<input type="hidden" name="tags" value="excludeLists">
          -				<input type="hidden" name="csrf_token" class="csrf" />
          -				<input type="file" name="file" accept="image/*" />
          -				<input type="submit" value="upload" />
          -			</form>
          -			<div id="dropzone">Drop file here
          -				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
          -			</div>
          -		</div>
          -		</div>
          -		<h2>Find Space</h2>
          -		<form class="spaceSearch">
          -			<input class="inputBox" type="text" placeholder="find space" />
          -			<a href="http://docs.tiddlyspace.com/What%20is%20a%20Space%3F" class="help"
          -				title="What is a space?">What is a space?</a>
          -			<button>view all</button>
          -		</form>
          -		<div class='list-container'>
          -			You are a member of the following spaces:
          -			<ul class='ts-space-search'>
          -			</ul>
          -		</div>
          -		<h2>Create New Space</h2>
          -		<form class="ts-spaces">
          -			<input class="inputBox" type="text" name="spacename" placeholder="space name"><span class="hostSuffix">.tiddlyspace.com</span>
          -			<input type="submit" value="Create Space" />
          -		</form>
          -		</div>
          -		<div class="right">
          -		<h2>Change Password</h2>
          -		<form class="ts-password">
          -			<input class="inputBox" placeholder="existing password" type="password" name="password">
          -			<input class="inputBox" placeholder="new password" type="password" name="new_password">
          -			<input class="inputBox" placeholder="new password"	type="password" name="new_password_confirm">
          -			<input type="submit" value="Change password">
          -		</form>
          -		<h2>OpenID</h2>
          -		<h3>Why OpenID?</h3>
          -		<a href="http://openid.net/"><img src="/bags/common/tiddlers/openid.png" alt="openid" ></a><br />
          -		Use just one username and password across hundreds of OpenID-enabled sites.<br />
          -		It's an open standard.<br />
          -		<a href="http://openid.net/what/">learn more</a>
          -		<ul class="ts-identities"></ul>
          -		<form class="ts-openid" target="_top">
          -			<div>
          -				Add an openid:
          -			</div>
          -			<input class="inputBox" type="text" name="openid" placeholder="your openid" />
          -			<input type="submit" value="Register" />
          -			<a href="http://openid.net/get-an-openid/" class="help"
          -			title="What is an open id?">What is an open id?</a>
          -		</form>
          -		</div>
          -		<div class="clear"></div>
          -	</div>
          -</div>
          -<script src="/bags/common/tiddlers/backstage.js"></script>
          -<script src='/bags/common/tiddlers/jquery.js'></script>
          -<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          -<script src='/bags/common/tiddlers/chrjs.space'></script>
          -<script src='/bags/common/tiddlers/chrjs.users'></script>
          -<script src='/bags/common/tiddlers/chrjs.identities'></script>
          -<script src="/bags/common/tiddlers/jquery-ui.custom.js"></script>
          -<script src='/bags/common/tiddlers/jquery-form.js'></script>
          -<script src="/bags/common/tiddlers/siteiconupload.js"></script>
          -<script src='/bags/common/tiddlers/ts.js'></script>
          -<script src="/status.js"></script>
          -<script type="text/javascript">
          -/*
          - * jQuery UI Autocomplete HTML Extension
          - *
          - * Copyright 2010, Scott González (http://scottgonzalez.com)
          - * Dual licensed under the MIT or GPL Version 2 licenses.
          - *
          - * http://github.com/scottgonzalez/jquery-ui-extensions
          - */
          -(function( $ ) {
          -
          -var proto = $.ui.autocomplete.prototype,
          -	initSource = proto._initSource;
          -
          -function filter( array, term ) {
          -	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
          -	return $.grep( array, function(value) {
          -		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
          -	});
          -}
          -
          -$.extend( proto, {
          -	_initSource: function() {
          -		if ( this.options.html && $.isArray(this.options.source) ) {
          -			this.source = function( request, response ) {
          -				response( filter( this.options.source, request.term ) );
          -			};
          -		} else {
          -			initSource.call( this );
          -		}
          -	},
          -
          -	_renderItem: function( ul, item) {
          -		return $( "<li></li>" )
          -			.data( "item.autocomplete", item )
          -			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
          -			.appendTo( ul );
          -	}
          -});
          -
          -})( jQuery );
          -
          -/***
          -_accounts application specific javascript
          -***/
          -var link;
          -ts.init(function(ts) {
          -	if(ts.user.anon) { // redirect to homepage when user not logged in
          -		window.location = ts.getHost();
          -	} else if(ts.user.name === ts.currentSpace){
          -		initSiteIconUpload(ts.user.name);
          -	} else {
          -		link = $("<a />").attr("href", ts.getHost(ts.user.name) + "/_account").text("Change User Icon");
          -		$("#siteiconArea div").empty().append(link);
          -	}
          -	$(".hostSuffix").text("." + ts.getHost("").split("//")[1]);
          -	ts.getSpaces(function(spaces) {
          -		$("<div class='info' />").text("You have " + spaces.length + " spaces.").insertBefore($(".spaceSearch")[0]);
          -		$("form.spaceSearch input").autocomplete({
          -			html: true,
          -			source: function(req, response) {
          -				ts.getSpaces(function(spaces) {
          -					var selected = [];
          -					for(var i = 0; i < spaces.length; i++) {
          -						var space = spaces[i];
          -						if(space.name.indexOf(req.term) > -1) {
          -							var host = ts.getHost(space.name) ;
          -							var img = host + "/SiteIcon";
          -							selected.push({
          -								value: space.name,
          -								label: '<a href="' + host + '" target="_parent" class="autocompleteLink"><img src="' + img + '" style="height:24px;width:auto;max-height:24px;max-width:24px;"/>' + space.name + '</a>'
          -							});
          -						}
          -					}
          -					response(selected);
          -				});
          -			},
          -			select: function(event, ui) {
          -				window.top.location = ts.getHost(ui.item.value);
          -			}
          -		});
          -
          -		var $ul = $('.ts-space-search');
          -		$.each(spaces, function(i, space) {
          -			$ul.append($('<li/>').html($('<a/>').attr('href', space.uri)
          -				.text(space.name)));
          -		});
          -
          -		$('form.spaceSearch button').click(function(ev) {
          -			$('.list-container').slideToggle('fast');
          -			ev.preventDefault();
          -			return false;
          -		});
          -	});
          -});
          -
          -if(window != window.top) {
          -	$("html").addClass("iframeMode");
          -	$("a").live("click",function(ev) {
          -		$(ev.target).attr("target", "_parent");
          -	});
          -}
          -</script>
          -<!--[if lt IE 8]>
          -<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
          -<![endif]-->
          -</body>
          -</html>
          -
          -
          -
          
          -
          -
          -
          !Upload an icon
          -<<tiddler spaceIcon>>
          -!Describe your space
          -If you haven't already done so, you should provide a brief decscription of yourself and what you're using this space for. To do this, just edit the [[SiteInfo]] tiddler (keeping the title the same of course).
          -
          -!Change the title
          -<<tiddler spaceTitle>>
          -!Change the theme
          -<<tiddler colorScheme>>
          -!Change the menu
          -If you'd like to change the menu items along the top, you can edit the [[MainMenu]] tiddler.
          -
          -!Change the default tiddlers
          -<<tiddler setDefaultTiddlers>>
          -!More Advanced customisations
          -If you know HTML and CSS, you can edit some or all of the following tiddlers to customise your space further:
          -* PageTemplate
          -* EditTemplate
          -* ViewTemplate
          -* StyleSheet
          -
          -
          -
          
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceConfig|
          -|''Version''|0.7.7|
          -|''Description''|TiddlySpace configuration|
          -|''Status''|stable|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceConfig.js|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlyWebConfig ServerSideSavingPlugin TiddlyFileImporter|
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tweb = config.extensions.tiddlyweb;
          -
          -var recipe = config.defaultCustomFields["server.workspace"].split("recipes/")[1];
          -var currentSpace; // assigned later
          -
          -var disabledTabs = [];
          -
          -var coreBags = ["system", "tiddlyspace"];
          -var systemSpaces = ["plugins", "info", "images", "theme"];
          -systemSpaces = $.map(systemSpaces, function(item, i) {
          -	return "system-%0_public".format(item);
          -});
          -
          -// hijack search macro to add custom attributes for mobile devices
          -var _search = config.macros.search.handler;
          -config.macros.search.handler = function(place, macroName, params) {
          -	_search.apply(this, arguments);
          -	$(".searchField:input", place).
          -		attr({ autocapitalize: "off", autocorrect: "off" });
          -};
          -
          -// arg is either a container name or a tiddler object
          -// if fuzzy is truthy, space may be inferred from workspace (for new tiddlers)
          -// returns space object or false
          -var determineSpace = function(arg, fuzzy) {
          -	if(typeof arg == "string") { // container name
          -		var space = split(arg, "_", "r");
          -		return ["public", "private"].contains(space.type) ? space : false;
          -	} else if(arg) { // tiddler
          -		var container = determineContainer(arg, fuzzy);
          -		return container ? determineSpace(container.name, fuzzy) : false;
          -	} else {
          -		return false;
          -	}
          -};
          -
          -// if fuzzy is truthy, container may be inferred from workspace for new tiddlers
          -// returns container object or false
          -var determineContainer = function(tiddler, fuzzy) { // TODO: expose?
          -	var bag = tiddler.fields["server.bag"];
          -	var recipe = tiddler.fields["server.recipe"]; // XXX: unused/irrelevant/redundant!?
          -	if(bag) {
          -		return { type: "bag", name: bag };
          -	} else if(recipe) {
          -		return { type: "recipe", name: recipe };
          -	} else if(fuzzy) { // new tiddler
          -		var workspace = tiddler.fields["server.workspace"];
          -		if(workspace) {
          -			var container = split(workspace, "/", "l");
          -			return ["bags", "recipes"].contains(container.type) ? container : false;
          -		} else {
          -			return false;
          -		}
          -	} else {
          -		return false;
          -	}
          -};
          -
          -// hijack removeTiddlerCallback to restore tiddler from recipe cascade -- TODO: move into TiddlyWebWiki?
          -var sssp = config.extensions.ServerSideSavingPlugin;
          -var _removeTiddlerCallback = sssp.removeTiddlerCallback;
          -sssp.removeTiddlerCallback = function(context, userParams) {
          -	var title = context.tiddler.title;
          -	var recipe = context.tiddler.fields["server.recipe"];
          -	_removeTiddlerCallback.apply(this, arguments);
          -	if(recipe) {
          -		context.workspace = "recipes/" + recipe;
          -		var callback = function(context, userParams) {
          -			if(context.status) {
          -				var dirty = store.isDirty();
          -				store.saveTiddler(context.tiddler).clearChangeCount();
          -				store.setDirty(dirty);
          -			} else {
          -				store.notify(title, true);
          -			}
          -		};
          -		context.adaptor.getTiddler(title, context, null, callback);
          -	}
          -};
          -
          -// splits a string once using delimiter
          -// mode "l" splits at the first, "r" at the last occurrence
          -// returns an object with members type and name
          -var split = function(str, sep, mode) {
          -	mode = mode == "r" ? "pop" : "shift"; // TODO: use +/-1 instead of "l"/"r"?
          -	var arr = str.split(sep);
          -	var type = arr.length > 1 ? arr[mode]() : null;
          -	return { type: type, name: arr.join(sep) };
          -};
          -
          -var plugin = config.extensions.tiddlyspace = {
          -	currentSpace: determineSpace(recipe),
          -	coreBags: coreBags.concat(systemSpaces),
          -
          -	determineSpace: determineSpace,
          -	isValidSpaceName: function(name) {
          -		return name.match(/^[a-z][0-9a-z\-]*[0-9a-z]$/) ? true : false;
          -	},
          -	getCurrentBag: function(type) {
          -		return "%0_%1".format(currentSpace, type);
          -	},
          -	getCurrentWorkspace: function(type) {
          -		return "bags/" + this.getCurrentBag(type);
          -	},
          -	// returns the URL for a space's avatar (SiteIcon) based on a server_host
          -	// object and an optional space name
          -	// optional nocors argument prevents cross-domain URLs from being generated
          -	getAvatar: function(host, space, nocors) {
          -		if(space && typeof space != "string") { // backwards compatibility -- XXX: deprecated
          -			space = space.name;
          -		}
          -		var subdomain = nocors ? currentSpace : space;
          -		host = host ? this.getHost(host, subdomain) : "";
          -		var bag = space ? "%0_public".format(space) : "tiddlyspace";
          -		return "%0/bags/%1/tiddlers/SiteIcon".format(host, bag);
          -	},
          -	// returns the URL based on a server_host object (scheme, host, port) and an
          -	// optional subdomain
          -	getHost: function(host, subdomain) {
          -		if(host === undefined) { // offline
          -			tweb.status.server_host = {}; // prevents exceptions further down the stack -- XXX: hacky workaround, breaks encapsulation
          -			return null;
          -		}
          -		subdomain = subdomain ? subdomain + "." : "";
          -		var url = "%0://%1%2".format(host.scheme, subdomain, host.host);
          -		var port = host.port;
          -		if(port && !["80", "443"].contains(port)) {
          -			url += ":" + port;
          -		}
          -		return url;
          -	},
          -	disableTab: function(tabTiddler) {
          -		if(typeof(tabTiddler) == "string") {
          -			disabledTabs.push(tabTiddler);
          -		} else {
          -			for(var i = 0; i < tabTiddler.length; i++) {
          -				plugin.disableTab(tabTiddler[i]);
          -			}
          -		}
          -	},
          -    checkSyncStatus: function(tiddler) {
          -		if(tiddler) {
          -			var title = typeof(tiddler) === "string" ? tiddler : tiddler.title;
          -			var el = story.getTiddler(title) || false;
          -			if(el) {
          -				refreshElements(el);
          -			}
          -		}
          -	},
          -	isDisabledTab: function(tabTitle) {
          -		var match = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])", "mg").exec(tabTitle);
          -		var tabIdentifier = match ? match[1] : tabTitle;
          -		return disabledTabs.contains(tabIdentifier);
          -	},
          -	getCSRFToken: window.getCSRFToken || null // this may not have been processed yet
          -};
          -
          -currentSpace = plugin.currentSpace.name;
          -
          -tweb.serverPrefix = tweb.host.split("/")[3] || ""; // XXX: assumes root handler
          -tweb.getStatus(function(status) {
          -	var url = plugin.getHost(status.server_host);
          -	tweb.status.server_host.url = url;
          -	config.messages.tsVersion = status.version;
          -});
          -
          -if(window.location.protocol == "file:") {
          -	// enable AutoSave by default
          -	config.options.chkAutoSave = config.options.chkAutoSave === undefined ?
          -		true : config.options.chkAutoSave;
          -} else {
          -	// set global read-only mode based on membership heuristics
          -	var indicator = store.getTiddler("SiteTitle") || tiddler;
          -	readOnly = !(recipe.split("_").pop() == "private" ||
          -		tweb.hasPermission("write", indicator));
          -	// replace TiddlyWiki's ImportTiddlers due to cross-domain restrictions
          -	if(config.macros.fileImport) {
          -		$.extend(config.macros.importTiddlers, config.macros.fileImport);
          -	}
          -}
          -
          -// hijack saveChanges to ensure SystemSettings is private by default
          -var _saveChanges = saveChanges;
          -saveChanges = function(onlyIfDirty, tiddlers) {
          -	if(tiddlers && tiddlers.length == 1 &&
          -			tiddlers[0] && tiddlers[0].title == "SystemSettings") {
          -		var fields = tiddlers[0].fields;
          -		delete fields["server.recipe"];
          -		fields["server.bag"] = plugin.getCurrentBag("private");
          -		fields["server.workspace"] = plugin.getCurrentWorkspace("private");
          -	}
          -	return _saveChanges.apply(this, arguments);
          -};
          -
          -// ensure backstage is always initialized
          -// required to circumvent TiddlyWiki's read-only based handling
          -config.macros.backstageInit = {
          -	init: function() {
          -		showBackstage = true;
          -	}
          -};
          -
          -// disable evaluated macro parameters for security reasons
          -config.evaluateMacroParameters = "none";
          -var _parseParams = String.prototype.parseParams;
          -String.prototype.parseParams = function(defaultName, defaultValue, allowEval,
          -		noNames, cascadeDefaults) {
          -	if(config.evaluateMacroParameters == "none") {
          -		arguments[2] = false;
          -	}
          -	return _parseParams.apply(this, arguments);
          -};
          -
          -var _tabsMacro = config.macros.tabs.handler;
          -config.macros.tabs.handler = function(place, macroName, params) {
          -	var newParams = [params[0]]; // keep cookie name
          -	for(var i = 1; i < params.length; i += 3) {
          -		var tabTitle = params[i + 2];
          -		if(!plugin.isDisabledTab(tabTitle)){
          -			newParams = newParams.concat(params[i], params[i + 1], tabTitle);
          -		}
          -	}
          -	_tabsMacro.apply(this, [place, macroName, newParams]);
          -};
          -
          -// disable ControlView for XHRs by default
          -$.ajaxSetup({
          -	beforeSend: function(xhr) {
          -		xhr.setRequestHeader("X-ControlView", "false");
          -	}
          -});
          -// TiddlyWeb adaptor currently still uses httpReq, which needs extra magic -- XXX: obsolete this!
          -var _httpReq = httpReq;
          -httpReq = function(type, url, callback, params, headers, data, contentType,
          -		username, password, allowCache) {
          -	headers = headers || {};
          -	headers["X-ControlView"] = "false";
          -	_httpReq.apply(this, arguments);
          -};
          -
          -// register style sheet for backstage separately (important)
          -store.addNotification("StyleSheetBackstage", refreshStyles);
          -
          -// option for default privacy setting
          -config.optionsDesc.chkPrivateMode = "Set your default privacy mode to private";
          -config.optionsSource.chkPrivateMode = "setting";
          -config.options.chkPrivateMode = config.options.chkPrivateMode || false;
          -saveSystemSetting("chkPrivateMode", true);
          -config.defaultCustomFields["server.workspace"] = plugin.
          -	getCurrentWorkspace(config.options.chkPrivateMode ? "private" : "public");
          -
          -config.paramifiers.follow = {
          -	onstart: function(v) {
          -		if(!readOnly) {
          -			var bag = "%0_public".format(currentSpace);
          -			story.displayTiddler(null, v, DEFAULT_EDIT_TEMPLATE, null, null,
          -				"server.bag:%0 server.workspace:bags/%0".format(bag));
          -			story.setTiddlerTag(v, "follow", 1);
          -			story.focusTiddler(v, "text");
          -		}
          -	}
          -};
          -
          -var fImport = config.macros.fileImport;
          -if(fImport) {
          -	fImport.uploadTo = "Upload to: ";
          -	var _createForm = config.macros.fileImport.createForm;
          -	config.macros.fileImport.createForm = function(place, wizard, iframeName) {
          -		var container = $("<div />").text(fImport.uploadTo).appendTo(place);
          -		var select = $('<select name="mode" />').appendTo(container)[0];
          -		$('<option value="private" selected>private</a>').appendTo(select);
          -		$('<option value="public">public</a>').appendTo(select);
          -		wizard.setValue("importmode", select);
          -		_createForm.apply(this, [place, wizard, iframeName]);
          -	};
          -
          -	var _onGet = config.macros.importTiddlers.onGetTiddler;
          -	config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
          -		var type = $(wizard.getValue("importmode")).val();
          -		var ws =  plugin.getCurrentWorkspace(type);
          -		wizard.setValue("workspace", ws);
          -		_onGet.apply(this, [context, wizard]);
          -	};
          -}
          -
          -config.extensions.ServerSideSavingPlugin.reportSuccess = function(msg, tiddler) {
          -	plugin.checkSyncStatus(tiddler);
          -	msg = config.extensions.ServerSideSavingPlugin.locale[msg];
          -	var link = "/" + encodeURIComponent(tiddler.title);
          -	displayMessage(msg.format([tiddler.title]), link);
          -};
          -
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|TiddlyWebAdaptor|
          -|''Description''|adaptor for interacting with TiddlyWeb|
          -|''Author:''|FND|
          -|''Contributors''|Chris Dent, Martin Budden|
          -|''Version''|1.4.10|
          -|''Status''|stable|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/association/adaptors/TiddlyWebAdaptor.js|
          -|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.5|
          -|''Keywords''|serverSide TiddlyWeb|
          -!Notes
          -This plugin includes [[jQuery JSON|http://code.google.com/p/jquery-json/]].
          -!To Do
          -* createWorkspace
          -* document custom/optional context attributes (e.g. filters, query, revision) and tiddler fields (e.g. server.title, origin)
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var adaptor = config.adaptors.tiddlyweb = function() {};
          -
          -adaptor.prototype = new AdaptorBase();
          -adaptor.serverType = "tiddlyweb";
          -adaptor.serverLabel = "TiddlyWeb";
          -adaptor.mimeType = "application/json";
          -
          -adaptor.parsingErrorMessage = "Error parsing result from server";
          -adaptor.noBagErrorMessage = "no bag specified for tiddler";
          -adaptor.locationIDErrorMessage = "no bag or recipe specified for tiddler"; // TODO: rename
          -
          -// retrieve current status (requires TiddlyWeb status plugin)
          -adaptor.prototype.getStatus = function(context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	var uriTemplate = "%0/status";
          -	var uri = uriTemplate.format([context.host]);
          -	var req = httpReq("GET", uri, adaptor.getStatusCallback, context,
          -		null, null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getStatusCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = responseText ? status : false;
          -	try {
          -		context.statusText = xhr.statusText;
          -	} catch(exc) { // offline (Firefox)
          -		context.status = false;
          -		context.statusText = null;
          -	}
          -	context.httpStatus = xhr.status;
          -	if(context.status) {
          -		context.serverStatus = $.evalJSON(responseText); // XXX: error handling!?
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// retrieve a list of workspaces
          -adaptor.prototype.getWorkspaceList = function(context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.workspaces = [];
          -	var uriTemplate = "%0/recipes"; // XXX: bags?
          -	var uri = uriTemplate.format([context.host]);
          -	var req = httpReq("GET", uri, adaptor.getWorkspaceListCallback,
          -		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getWorkspaceListCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(status) {
          -		try {
          -			var workspaces = $.evalJSON(responseText);
          -		} catch(ex) {
          -			context.status = false; // XXX: correct?
          -			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          -			if(context.callback) {
          -				context.callback(context, context.userParams);
          -			}
          -			return;
          -		}
          -		context.workspaces = workspaces.map(function(itm) { return { title: itm }; });
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// retrieve a list of tiddlers
          -adaptor.prototype.getTiddlerList = function(context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	var uriTemplate = "%0/%1/%2/tiddlers%3";
          -	var params = context.filters ? "?" + context.filters : "";
          -	if(context.format) {
          -		params = context.format + params;
          -	}
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([context.host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name), params]);
          -	var req = httpReq("GET", uri, adaptor.getTiddlerListCallback,
          -		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getTiddlerListCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(status) {
          -		context.tiddlers = [];
          -		try {
          -			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
          -		} catch(ex) {
          -			context.status = false; // XXX: correct?
          -			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          -			if(context.callback) {
          -				context.callback(context, context.userParams);
          -			}
          -			return;
          -		}
          -		for(var i = 0; i < tiddlers.length; i++) {
          -			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
          -			context.tiddlers.push(tiddler);
          -		}
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// perform global search
          -adaptor.prototype.getSearchResults = function(context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	var uriTemplate = "%0/search?q=%1%2";
          -	var filterString = context.filters ? ";" + context.filters : "";
          -	var uri = uriTemplate.format([context.host, context.query, filterString]); // XXX: parameters need escaping?
          -	var req = httpReq("GET", uri, adaptor.getSearchResultsCallback,
          -		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getSearchResultsCallback = function(status, context, responseText, uri, xhr) {
          -	adaptor.getTiddlerListCallback(status, context, responseText, uri, xhr); // XXX: use apply?
          -};
          -
          -// retrieve a particular tiddler's revisions
          -adaptor.prototype.getTiddlerRevisionList = function(title, limit, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([context.host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
          -	var req = httpReq("GET", uri, adaptor.getTiddlerRevisionListCallback,
          -		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getTiddlerRevisionListCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(status) {
          -		context.revisions = [];
          -		try {
          -			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
          -		} catch(ex) {
          -			context.status = false; // XXX: correct?
          -			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          -			if(context.callback) {
          -				context.callback(context, context.userParams);
          -			}
          -			return;
          -		}
          -		for(var i = 0; i < tiddlers.length; i++) {
          -			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
          -			context.revisions.push(tiddler);
          -		}
          -		var sortField = "server.page.revision";
          -		context.revisions.sort(function(a, b) {
          -			return a.fields[sortField] < b.fields[sortField] ? 1 :
          -				(a.fields[sortField] == b.fields[sortField] ? 0 : -1);
          -		});
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// retrieve an individual tiddler revision -- XXX: breaks with standard arguments list -- XXX: convenience function; simply use getTiddler?
          -adaptor.prototype.getTiddlerRevision = function(title, revision, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.revision = revision;
          -	return this.getTiddler(title, context, userParams, callback);
          -};
          -
          -// retrieve an individual tiddler
          -//# context is an object with members host and workspace
          -//# callback is passed the new context and userParams
          -adaptor.prototype.getTiddler = function(title, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = title;
          -	if(context.revision) {
          -		var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions/%4";
          -	} else {
          -		uriTemplate = "%0/%1/%2/tiddlers/%3";
          -	}
          -	if(!context.tiddler) {
          -		context.tiddler = new Tiddler(title);
          -	}
          -	context.tiddler.fields["server.type"] = adaptor.serverType;
          -	context.tiddler.fields["server.host"] = AdaptorBase.minHostName(context.host);
          -	context.tiddler.fields["server.workspace"] = context.workspace;
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([context.host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title),
          -		context.revision]);
          -	var req = httpReq("GET", uri, adaptor.getTiddlerCallback, context,
          -		merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getTiddlerCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(status) {
          -		try {
          -			var tid = $.evalJSON(responseText);
          -		} catch(ex) {
          -			context.status = false;
          -			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
          -			if(context.callback) {
          -				context.callback(context, context.userParams);
          -			}
          -			return;
          -		}
          -		var tiddler = adaptor.toTiddler(tid, context.host);
          -		tiddler.title = context.tiddler.title;
          -		tiddler.fields["server.etag"] = xhr.getResponseHeader("Etag");
          -		// normally we'd assign context.tiddler = tiddler here - but we can't do
          -		// that because of IE, which triggers getTiddler in putTiddlerCallback,
          -		// and since ServerSideSavingPlugin foolishly relies on persistent
          -		// object references, we need to merge the data into the existing object
          -		$.extend(context.tiddler, tiddler);
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// retrieve tiddler chronicle (all revisions)
          -adaptor.prototype.getTiddlerChronicle = function(title, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = title;
          -	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions?fat=1";
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([context.host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
          -	var req = httpReq("GET", uri, adaptor.getTiddlerChronicleCallback,
          -		context, { accept: adaptor.mimeType }, null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(status) {
          -		context.responseText = responseText;
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// store an individual tiddler
          -adaptor.prototype.putTiddler = function(tiddler, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = tiddler.title;
          -	context.tiddler = tiddler;
          -	context.host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          -	var uriTemplate = "%0/%1/%2/tiddlers/%3";
          -	try {
          -		context.workspace = context.workspace || tiddler.fields["server.workspace"];
          -		var workspace = adaptor.resolveWorkspace(context.workspace);
          -	} catch(ex) {
          -		return adaptor.locationIDErrorMessage;
          -	}
          -	var uri = uriTemplate.format([context.host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name),
          -		adaptor.normalizeTitle(tiddler.title)]);
          -	var etag = adaptor.generateETag(workspace, tiddler);
          -	var headers = etag ? { "If-Match": etag } : null;
          -	var payload = {
          -		type: tiddler.fields["server.content-type"] || null,
          -		text: tiddler.text,
          -		tags: tiddler.tags,
          -		fields: $.extend({}, tiddler.fields)
          -	};
          -	delete payload.fields.changecount;
          -	$.each(payload.fields, function(key, value) {
          -		if(key.indexOf("server.") == 0) {
          -			delete payload.fields[key];
          -		}
          -	});
          -	payload = $.toJSON(payload);
          -	var req = httpReq("PUT", uri, adaptor.putTiddlerCallback,
          -		context, headers, payload, adaptor.mimeType, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.putTiddlerCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = [204, 1223].contains(xhr.status);
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(context.status) {
          -		var loc = xhr.getResponseHeader("Location");
          -		var etag = xhr.getResponseHeader("Etag");
          -		if(loc && etag) {
          -			var bag = loc.split("/bags/").pop().split("/")[0];
          -			context.tiddler.fields["server.bag"] = bag;
          -			context.tiddler.fields["server.workspace"] = "bags/" + bag;
          -			var rev = etag.split("/").pop().split(/;|:/)[0];
          -			context.tiddler.fields["server.page.revision"] = rev;
          -			context.tiddler.fields["server.etag"] = etag;
          -			if(context.callback) {
          -				context.callback(context, context.userParams);
          -			}
          -		} else { // IE
          -			context.adaptor.getTiddler(context.tiddler.title, context,
          -				context.userParams, context.callback);
          -		}
          -	} else if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// store a tiddler chronicle
          -adaptor.prototype.putTiddlerChronicle = function(revisions, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = revisions[0].title;
          -	var headers = null;
          -	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
          -	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name),
          -		adaptor.normalizeTitle(context.title)]);
          -	if(workspace.type == "bag") { // generate ETag
          -		var etag = [adaptor.normalizeTitle(workspace.name),
          -			adaptor.normalizeTitle(context.title), 0].join("/"); //# zero-revision prevents overwriting existing contents
          -		headers = { "If-Match": '"' + etag + '"' };
          -	}
          -	var payload = $.toJSON(revisions);
          -	var req = httpReq("POST", uri, adaptor.putTiddlerChronicleCallback,
          -		context, headers, payload, adaptor.mimeType, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.putTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = [204, 1223].contains(xhr.status);
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// store a collection of tiddlers (import TiddlyWiki HTML store)
          -adaptor.prototype.putTiddlerStore = function(store, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	var uriTemplate = "%0/%1/%2/tiddlers";
          -	var host = context.host;
          -	var workspace = adaptor.resolveWorkspace(context.workspace);
          -	var uri = uriTemplate.format([host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name)]);
          -	var req = httpReq("POST", uri, adaptor.putTiddlerStoreCallback,
          -		context, null, store, "text/x-tiddlywiki", null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.putTiddlerStoreCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = [204, 1223].contains(xhr.status);
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// rename an individual tiddler or move it to a different workspace -- TODO: make {from|to}.title optional
          -//# from and to are objects with members title and workspace (bag; optional),
          -//# representing source and target tiddler, respectively
          -adaptor.prototype.moveTiddler = function(from, to, context, userParams, callback) { // XXX: rename parameters (old/new)?
          -	var self = this;
          -	var newTiddler = store.getTiddler(from.title) || store.getTiddler(to.title); //# local rename might already have occurred
          -	var oldTiddler = $.extend(true, {}, newTiddler); //# required for eventual deletion
          -	oldTiddler.title = from.title; //# required for original tiddler's ETag
          -	var _getTiddlerChronicle = function(title, context, userParams, callback) {
          -		return self.getTiddlerChronicle(title, context, userParams, callback);
          -	};
          -	var _putTiddlerChronicle = function(context, userParams) {
          -		if(!context.status) {
          -			return callback(context, userParams);
          -		}
          -		var revisions = $.evalJSON(context.responseText); // XXX: error handling?
          -		// change current title while retaining previous location
          -		for(var i = 0; i < revisions.length; i++) {
          -			delete revisions[i].revision;
          -			if(!revisions[i].fields.origin) { // NB: origin = "<workspace>/<title>"
          -				revisions[i].fields.origin = ["bags", revisions[i].bag, revisions[i].title].join("/");
          -			}
          -			revisions[i].title = to.title;
          -		}
          -		// add new revision
          -		var rev = $.extend({}, revisions[0]);
          -		$.each(newTiddler, function(i, item) {
          -			if(!$.isFunction(item)) {
          -				rev[i] = item;
          -			}
          -		});
          -		rev.title = to.title;
          -		rev.created = rev.created.convertToYYYYMMDDHHMM();
          -		rev.modified = new Date().convertToYYYYMMDDHHMM();
          -		delete rev.fields.changecount;
          -		revisions.unshift(rev);
          -		if(to.workspace) {
          -			context.workspace = to.workspace;
          -		} else if(context.workspace.substring(0, 4) != "bags") { // NB: target workspace must be a bag
          -			context.workspace = "bags/" + rev.bag;
          -		}
          -		var subCallback = function(context, userParams) {
          -			if(!context.status) {
          -				return callback(context, userParams);
          -			}
          -			context.adaptor.getTiddler(newTiddler.title, context, userParams, _deleteTiddler);
          -		};
          -		return self.putTiddlerChronicle(revisions, context, context.userParams, subCallback);
          -	};
          -	var _deleteTiddler = function(context, userParams) {
          -		if(!context.status) {
          -			return callback(context, userParams);
          -		}
          -		$.extend(true, newTiddler, context.tiddler);
          -		context.callback = null;
          -		return self.deleteTiddler(oldTiddler, context, context.userParams, callback);
          -	};
          -	callback = callback || function() {};
          -	context = this.setContext(context, userParams);
          -	context.host = context.host || oldTiddler.fields["server.host"];
          -	context.workspace = from.workspace || oldTiddler.fields["server.workspace"];
          -	return _getTiddlerChronicle(from.title, context, userParams, _putTiddlerChronicle);
          -};
          -
          -// delete an individual tiddler
          -adaptor.prototype.deleteTiddler = function(tiddler, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = tiddler.title; // XXX: not required!?
          -	var uriTemplate = "%0/bags/%1/tiddlers/%2";
          -	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          -	var bag = tiddler.fields["server.bag"];
          -	if(!bag) {
          -		return adaptor.noBagErrorMessage;
          -	}
          -	var uri = uriTemplate.format([host, adaptor.normalizeTitle(bag),
          -		adaptor.normalizeTitle(tiddler.title)]);
          -	var etag = adaptor.generateETag({ type: "bag", name: bag }, tiddler);
          -	var headers = etag ? { "If-Match": etag } : null;
          -	var req = httpReq("DELETE", uri, adaptor.deleteTiddlerCallback, context, headers,
          -		null, null, null, null, true);
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.deleteTiddlerCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = [204, 1223].contains(xhr.status);
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// compare two revisions of a tiddler (requires TiddlyWeb differ plugin)
          -//# if context.rev1 is not specified, the latest revision will be used for comparison
          -//# if context.rev2 is not specified, the local revision will be sent for comparison
          -//# context.format is a string as determined by the TiddlyWeb differ plugin
          -adaptor.prototype.getTiddlerDiff = function(title, context, userParams, callback) {
          -	context = this.setContext(context, userParams, callback);
          -	context.title = title;
          -
          -	var tiddler = store.getTiddler(title);
          -	try {
          -		var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
          -	} catch(ex) {
          -		return adaptor.locationIDErrorMessage;
          -	}
          -	var tiddlerRef = [workspace.type + "s", workspace.name, tiddler.title].join("/");
          -
          -	var rev1 = context.rev1 ? [tiddlerRef, context.rev1].join("/") : tiddlerRef;
          -	var rev2 = context.rev2 ? [tiddlerRef, context.rev2].join("/") : null;
          -
          -	var uriTemplate = "%0/diff?rev1=%1";
          -	if(rev2) {
          -		uriTemplate += "&rev2=%2";
          -	}
          -	if(context.format) {
          -		uriTemplate += "&format=%3";
          -	}
          -	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
          -	var uri = uriTemplate.format([host, adaptor.normalizeTitle(rev1),
          -		adaptor.normalizeTitle(rev2), context.format]);
          -
          -	if(rev2) {
          -		var req = httpReq("GET", uri, adaptor.getTiddlerDiffCallback, context, null,
          -			null, null, null, null, true);
          -	} else {
          -		var payload = {
          -			title: tiddler.title,
          -			text: tiddler.text,
          -			modifier: tiddler.modifier,
          -			tags: tiddler.tags,
          -			fields: $.extend({}, tiddler.fields)
          -		}; // XXX: missing attributes!?
          -		payload = $.toJSON(payload);
          -		req = httpReq("POST", uri, adaptor.getTiddlerDiffCallback, context,
          -			null, payload, adaptor.mimeType, null, null, true);
          -	}
          -	return typeof req == "string" ? req : true;
          -};
          -
          -adaptor.getTiddlerDiffCallback = function(status, context, responseText, uri, xhr) {
          -	context.status = status;
          -	context.statusText = xhr.statusText;
          -	context.httpStatus = xhr.status;
          -	context.uri = uri;
          -	if(status) {
          -		context.diff = responseText;
          -	}
          -	if(context.callback) {
          -		context.callback(context, context.userParams);
          -	}
          -};
          -
          -// generate tiddler information
          -adaptor.prototype.generateTiddlerInfo = function(tiddler) {
          -	var info = {};
          -	var uriTemplate = "%0/%1/%2/tiddlers/%3";
          -	var host = this.host || tiddler.fields["server.host"]; // XXX: this.host obsolete?
          -	host = this.fullHostName(host);
          -	var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
          -	info.uri = uriTemplate.format([host, workspace.type + "s",
          -		adaptor.normalizeTitle(workspace.name),
          -		adaptor.normalizeTitle(tiddler.title)]);
          -	return info;
          -};
          -
          -// create Tiddler instance from TiddlyWeb tiddler JSON
          -adaptor.toTiddler = function(json, host) {
          -	var created = Date.convertFromYYYYMMDDHHMM(json.created);
          -	var modified = Date.convertFromYYYYMMDDHHMM(json.modified);
          -	var fields = json.fields;
          -	fields["server.type"] = adaptor.serverType;
          -	fields["server.host"] = AdaptorBase.minHostName(host);
          -	fields["server.bag"] = json.bag;
          -	fields["server.title"] = json.title;
          -	if(json.recipe) {
          -		fields["server.recipe"] = json.recipe;
          -	}
          -	if(json.type && json.type != "None") {
          -		fields["server.content-type"] = json.type;
          -	}
          -	fields["server.permissions"] = json.permissions.join(", ");
          -	fields["server.page.revision"] = json.revision;
          -	fields["server.workspace"] = "bags/" + json.bag;
          -	var tiddler = new Tiddler(json.title);
          -	tiddler.assign(tiddler.title, json.text, json.modifier, modified, json.tags,
          -		created, json.fields, json.creator);
          -	return tiddler;
          -};
          -
          -adaptor.resolveWorkspace = function(workspace) {
          -	var components = workspace.split("/");
          -	return {
          -		type: components[0] == "bags" ? "bag" : "recipe",
          -		name: components[1] || components[0]
          -	};
          -};
          -
          -adaptor.generateETag = function(workspace, tiddler) {
          -	var revision = tiddler.fields["server.page.revision"];
          -	var etag = revision == "false" ? null : tiddler.fields["server.etag"];
          -	if(!etag && workspace.type == "bag") {
          -		if(typeof revision == "undefined") {
          -			revision = "0";
          -		} else if(revision == "false") {
          -			return null;
          -		}
          -		etag = [adaptor.normalizeTitle(workspace.name),
          -			adaptor.normalizeTitle(tiddler.title), revision].join("/");
          -		etag = '"' + etag + '"';
          -	}
          -	return etag;
          -};
          -
          -adaptor.normalizeTitle = function(title) {
          -	return encodeURIComponent(title);
          -};
          -
          -})(jQuery);
          -
          -
          -/*
          - * jQuery JSON Plugin
          - * version: 1.3
          - * source: http://code.google.com/p/jquery-json/
          - * license: MIT (http://www.opensource.org/licenses/mit-license.php)
          - */
          -(function($){function toIntegersAtLease(n)
          -{return n<10?'0'+n:n;}
          -Date.prototype.toJSON=function(date)
          -{return this.getUTCFullYear()+'-'+
          -toIntegersAtLease(this.getUTCMonth())+'-'+
          -toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
          -{if(escapeable.test(string))
          -{return'"'+string.replace(escapeable,function(a)
          -{var c=meta[a];if(typeof c==='string'){return c;}
          -c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
          -return'"'+string+'"';};$.toJSON=function(o,compact)
          -{var type=typeof(o);if(type=="undefined")
          -return"undefined";else if(type=="number"||type=="boolean")
          -return o+"";else if(o===null)
          -return"null";if(type=="string")
          -{return $.quoteString(o);}
          -if(type=="object"&&typeof o.toJSON=="function")
          -return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
          -{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
          -if(compact)
          -return"["+ret.join(",")+"]";else
          -return"["+ret.join(", ")+"]";}
          -if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
          -var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
          -name='"'+k+'"';else if(type=="string")
          -name=$.quoteString(k);else
          -continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
          -if(compact)
          -ret.push(name+":"+val);else
          -ret.push(name+": "+val);}
          -return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
          -{return $.toJSON(o,true);};$.evalJSON=function(src)
          -{return eval("("+src+")");};$.secureEvalJSON=function(src)
          -{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
          -return eval("("+src+")");else
          -throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);
          -//}}}
          -
          -
          -
          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
          -
          -
          -
          /*{{{*/
          -.tiddler .originButton div {
          -	display: inline-block;
          -}
          -
          -.tiddler .spaceSiteIcon .siteIcon {
          -	_display: inline; /* IE doesn't like inline-block */
          -}
          -
          -.tiddler .originButton {
          -	display: block;
          -}
          -
          -.selected .tagging,
          -.selected .tagging:hover {
          -	border: none;
          -	background: none;
          -}
          -
          -.tagging {
          -	float: none;
          -	background: none;
          -	border: none;
          -}
          -
          -.tagging li.listTitle {
          -	margin-left: 0px;
          -}
          -.tagging li {
          -	margin: 0 8px;
          -}
          -
          -.tagging .tiddlyLink {
          -	-webkit-border-radius: 3px;
          -	-moz-border-radius: 3px;
          -	-o-border-radius: 3px;
          -	border-radius: 3px;
          -	padding: 1px 2px;
          -	line-height: 1.2em;
          -}
          -
          -/* for following */
          -#popup .siteIcon {
          -	float: left;
          -	height: 25px;
          -}
          -
          -.content {
          -	width: 100%; /* IE */
          -	font-size: 0.9em;
          -}
          -
          -.editorHeading {
          -	height: 48px;
          -}
          -
          -.heading {
          -	left: 0;
          -	margin-bottom: 40px;
          -	position: relative;
          -	top: 32px;
          -}
          -
          -.followButton a {
          -	display: block;
          -	margin-top: -20px;
          -}
          -
          -.tiddler .followPlaceHolder {
          -	display: block;
          -	position: absolute;
          -	top: 16px;
          -	right: 64px;
          -	_right: 138px; // add width of modifierIcon
          -}
          -
          -.tiddler .followButton {
          -	position: relative;
          -	height: 24px;
          -	text-align: left;
          -	color: #fff;
          -	background: [[ColorPalette::PrimaryMid]];
          -	padding: 10px 0px 0px 10px;
          -	width: 38px;
          -	margin: -16px -8px 24px 0;
          -}
          -
          -/* creates the larger triangle */
          -.followButton:before {
          -	content: "\00a0";
          -	display: block; /* reduce the damage in FF3.0 */
          -	position: relative;
          -	bottom: -20px;
          -	right: 0;
          -	width: 0;
          -	height: 0;
          -	border-width: 0 0 20px 20px;
          -	border-style: solid;
          -	border-color: transparent [[ColorPalette::PrimaryMid]];
          -}
          -
          -.toolbar svg {
          -	height: 16px;
          -	width: 16px;
          -}
          -
          -.toolbar svg .glyph {
          -	fill: #ccc;
          -}
          -
          -.toolbar a:hover .glyph {
          -	fill: black;
          -}
          -
          -.toolbar a:active .glyph {
          -	fill: [[ColorPalette::Background]];
          -}
          -
          -.originButton,
          -.followPlaceHolder,
          -.tiddler .subtitle {
          -	cursor: pointer;
          -}
          -
          -.editSpaceSiteIcon .originButton {
          -	cursor: auto;
          -}
          -
          -.tiddler .subtitle:hover {
          -	font-weight: bold;
          -	background: none;
          -}
          -
          -.originButton img,
          -.originButton svg {
          -	margin-left: 0px;
          -}
          -
          -.modifierIcon {
          -	position: absolute;
          -	width: 74px;
          -	top: 0px;
          -	right: 0px;
          -	_right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
          -	text-align: right;
          -}
          -
          -.modifierIcon img,
          -.modifierIcon svg {
          -	margin-right: 8px;
          -}
          -
          -.tiddler .viewer {
          -	padding-bottom: 16px;
          -	margin: 0 0 0 56px;
          -	line-height: 1.4em;
          -}
          -
          -.viewer pre {
          -	margin-left: 0;
          -}
          -
          -.siteIcon .label {
          -	color: [[ColorPalette::TertiaryDark]];
          -}
          -
          -.tiddler .spaceSiteIcon {
          -	float: left;
          -	margin-right: 0;
          -	margin-top: 0;
          -	position: relative;
          -	display: block;
          -}
          -
          -.tiddler .titleBar {
          -	display: block;
          -	margin-right: 136px;
          -	margin-left: 56px;
          -}
          -
          -.followButton a {
          -	color: [[ColorPalette::Background]];
          -}
          -
          -.tiddler {
          -	position: relative;
          -	padding: 0;
          -	margin-bottom: 3em;
          -	border-top: 3px solid [[ColorPalette::PrimaryMid]];
          -	background: #fff;
          -}
          -
          -.tiddler .editor {
          -	padding: 0px 8px;
          -}
          -
          -.tiddler .heading .title {
          -	position: relative;
          -	display: block;
          -	word-wrap: break-word;
          -	font-size: 32px;
          -	line-height: 32px;
          -}
          -.tiddler .heading .editor.title {
          -	font-size: 1.7em;
          -	line-height: normal;
          -}
          -
          -.tiddler .headingClear {
          -	clear: both;
          -}
          -
          -.tiddler .subtitle {
          -	font-style: italic;
          -	font-size: 0.9em;
          -	color: #a6a59e;
          -	margin-top: 0;
          -}
          -
          -.toolbar {
          -	position: absolute;
          -	padding: 0;
          -	top: 8px;
          -	right: -8px;
          -}
          -
          -.toolbar .moreCommand.highlight {
          -	background: none;
          -}
          -
          -.tiddler .toolbar .button {
          -	border: none;
          -	display: inline;
          -	padding: 0px;
          -	margin-right: 16px;
          -}
          -
          -.tiddler .toolbar a:hover {
          -	background: none;
          -}
          -
          -.tiddler .tagged .listTitle {
          -	display: none;
          -}
          -
          -.revButton {
          -	float: right;
          -}
          -
          -/*! EditTemplate specific*/
          -.tiddler .privacySettings {
          -	text-align: center;
          -}
          -.tiddler .privacySettings .originButton {
          -	display: inline;
          -}
          -
          -.editSpaceSiteIcon, .privacyEdit {
          -	float: left;
          -}
          -
          -.editSpaceSiteIcon svg,
          -.editSpaceSiteIcon img,
          -.editSpaceSiteIcon .roundelLabel {
          -	float: left;
          -}
          -
          -.tagTitle {
          -	position: absolute;
          -	text-align: center;
          -	width: 48px;
          -	top: 0px;
          -	left: -56px;
          -}
          -
          -.editSpaceSiteIcon .originButton img,
          -.editSpaceSiteIcon .originButton svg {
          -	height: 16px;
          -	margin-left: 24px;
          -	margin-right: 32px;
          -	width: 16px;
          -}
          -
          -.tagAnnotation {
          -	margin-top: 8px;
          -	padding-bottom: 8px;
          -}
          -.annotationsBox {
          -	margin-top: 8px;
          -}
          -
          -.editorFooter {
          -	position: relative;
          -	padding: 0;
          -	margin-top: 16px;
          -	margin-left: 64px;
          -}
          -
          -.tiddler .editorFooter .editor {
          -	padding-left: 0px;
          -}
          -
          -.heading .editor input {
          -	width: 100%;
          -	font-size: 1.5em;
          -}
          -
          -.spaceSiteIcon .externalImage .image a:hover,
          -.modifierIcon .externalImage .image a:hover {
          -	background: none;
          -}
          -
          -div.toolbar {
          -	visibility:hidden;
          -	right:-16px;
          -}
          -
          -.selected div.toolbar {
          -	visibility: visible;
          -}
          -
          -.followButton a:hover {
          -	background: [[ColorPalette::PrimaryMid]];
          -	text-decoration: underline;
          -}
          -
          -a.image:hover {
          -	background: transparent;
          -}
          -
          -@media all and (max-device-width: 480px) {
          -	div.toolbar {
          -		visibility:visible;
          -	}
          -}
          -@media only screen and (device-width: 768px) {
          -	div.toolbar {
          -		visibility:visible;
          -	}
          -}
          -@media all and (max-width: 960px) {
          -	.tiddler .titleBar {
          -		margin-left: 36px;
          -		margin-right: 80px;
          -	}
          -
          -	.tiddler .heading {
          -		margin-bottom: 48px;
          -	}
          -
          -	.tiddler .heading .title {
          -		font-size: 32px;
          -		line-height: 32px;
          -	}
          -
          -	.tiddler .modifierIcon img,
          -	.tiddler .modifierIcon svg,
          -	.tiddler .spaceSiteIcon .originButton img,
          -	.originButton svg {
          -		width: 32px;
          -		height: 32px;
          -		margin-left: 0px;
          -		margin-right: 0px;
          -	}
          -
          -	.tiddler .followPlaceHolder {
          -		right: 48px;
          -	}
          -
          -	.tiddler .followButton {
          -		width: 24px;
          -	}
          -
          -	.tiddler .viewer {
          -		margin: 0px 0px 0px 36px;
          -		padding-top: 0;
          -	}
          -
          -	br {
          -		line-height: 0.5em;
          -	}
          -}
          -/*}}}*/
          -
          -
          -
          ColorPalette
          -StyleSheet
          -SiteSubtitle
          -GettingStarted
          -SiteTitle
          -MainMenu
          -SiteIcon
          -DefaultTiddlers
          -ViewTemplate
          -PageTemplate
          -SideBarOptions
          -EditTemplate
          -SiteInfo
          -SideBarTabs
          -ToolbarCommands
          -
          -
          -
          
          -
          -
          -
          The title and subtitle of your space are visible to visitors and are also displayed in your browser's tabs. Click on the SiteTitle and SiteSubtitle tiddler links below to make changes.
          -* [[SiteTitle]]
          -* [[SiteSubtitle]]
          -
          -
          -
          Added [[TaggedTemplatePlugin]] to your TiddlySpace to be able to apply a view/edit template based on a tag.
          -A tiddler tagged with foo will be passed through fooViewTemplate or fooEditTemplate if they exist rather than ViewTemplate / EditTemplate.
          -
          -
          -
          /***
          -|''Name:''|TaggedTemplatePlugin|
          -|''Description:''|Apply a view/edit template based on a tag |
          -|''Author:''|PaulDowney (psd (at) osmosoft (dot) com)|
          -|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/PaulDowney/plugins/TaggedTemplatePlugin |
          -|''Version:''|1.0|
          -|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          -|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          -|''~CoreVersion:''|2.4|
          -|''Overrides''|Story.prototype.chooseTemplateForTiddler() |
          -!!Documentation
          -This plugin enables the application of a view or edit template based on a tag name. 
          -
          -The priority of searching for duplicate templates has been designed to allow partially defined themes, in which missing templates are defaulted to ones defined as tiddlers.  Collation sequence is used to disambiguate collisions when a tiddler it tagged with more than one tag with an associated template. For example, tiddler tagged "Foo Bar" will result in a hunt for a template as follows:
          -# in the current theme by tag:
          -##[[CurrentTheme]]##barViewTemplate
          -##[[CurrentTheme]]##fooViewTemplate
          -# in a template for the tag:
          -##[[barViewTemplate]]
          -##[[fooViewTemplate]]
          -# global in the current theme
          -##[[CurrentTheme]]##ViewTemplate
          -# in the global tiddler
          -##[[ViewTemplate]]
          -This plugin is used by RippleRap, TiddlyResume and a number of other verticals which use nested themes was based on Eric Shulman's [[TaggedTemplateTweak|http://www.TiddlyTools.com/#TaggedTemplateTweak]] plugin which at the time didn't support themes and searches in a different order.
          -!!Code
          -***/
          -//{{{
          -/*jslint onevar: false nomen: false plusplus: false */
          -/*global Story, store, config */
          -if (!version.extensions.TaggedTemplatePlugin) {
          -    version.extensions.TaggedTemplatePlugin = {installed: true};
          -
          -    Story.prototype._chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler;
          -    Story.prototype.chooseTemplateForTiddler = function (title, n)
          -    {
          -        var slice, i, tags = [], tagTiddler;
          -        var tiddler = store.getTiddler(title);
          -
          -        // translate number into template name
          -        var template = ["ViewTemplate", "EditTemplate"][n ? n - 1 : 0];
          -
          -        // canonicalise tags
          -        if (tiddler) {
          -            for (i = 0; i < tiddler.tags.length; i++) {
          -                tags.push(tiddler.tags[i].toLowerCase());
          -            }
          -            tags.sort();
          -        }
          -
          -        // search theme for tagged template in the current theme
          -        if (tags.length && store.tiddlerExists(config.options.txtTheme)) {
          -            for (i = 0; i < tags.length; i++) {
          -                slice = config.options.txtTheme + '##' + tags[i] + template;
          -                if (store.getTiddlerText(slice)) {
          -                    return slice;
          -                }
          -            }
          -        }
          -
          -        // search theme for tagged template tiddler
          -        for (i = 0; i < tags.length; i++) {
          -            tagTiddler = tags[i] + template;
          -            if (store.tiddlerExists(tagTiddler)) {
          -                return tagTiddler;
          -            }
          -        }
          -
          -        // search theme for template
          -        if (store.tiddlerExists(config.options.txtTheme)) {
          -            slice = config.options.txtTheme + '##' + template;
          -            if (store.getTiddlerText(slice)) {
          -                return slice;
          -            }
          -        }
          -
          -        return this._chooseTemplateForTiddler.apply(this, arguments);
          -    };
          -}
          -//}}}
          -
          -
          -
          <!DOCTYPE HTML>
          -<html>
          -<body style="display:none">
          -topics: <ul id="topics"></ul>
          -<button id='addtopic'>add topic</button>
          -stream:
          -<ul id="stream"></ul>
          -<script type='text/javascript' src='/bags/common/tiddlers/jquery.js'></script>
          -<script type='text/javascript' src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          -<script src="/twikifier.js" type="text/javascript" charset="utf-8"></script>
          -<script type='text/javascript'>
          -	$.ajaxSetup({
          -		beforeSend: function(xhr) {
          -			xhr.setRequestHeader("X-ControlView", "false");
          -		}
          -	});
          -	function renderTopic(topic) {
          -		var item = $("<li />").appendTo("#topics");
          -		$("<button class='show' />").text(topic).appendTo(item);
          -		$("<button class='delete'>x</button>").appendTo(item);
          -		return item[0];
          -	}
          -	var host =  '/';
          -	var space = "jon";
          -	var active_topics = [];
          -	var current_topic, offset;
          -	function renderTopics() {
          -		var topics = active_topics;
          -		$("#topics").empty();
          -		for(var i = 0; i < topics.length; i++) {
          -			var topic = topics[i];
          -			if(topic) {
          -				renderTopic(topic);
          -			}
          -		}
          -		$("body").show();
          -	}
          -	// Array Remove - By John Resig (MIT Licensed)
          -	Array.prototype.remove = function(from, to) {
          -		var rest = this.slice((to || from) + 1 || this.length);
          -		this.length = from < 0 ? this.length + from : from;
          -		return this.push.apply(this, rest);
          -	};
          -
          -	var topicList = new tiddlyweb.Tiddler("Topics", new tiddlyweb.Bag(space + "_public", host));
          -	topicList.get(function(tid) {
          -			active_topics = tid.text.split("\n");
          -			renderTopics(active_topics);
          -			$("#topics .show:first").trigger("click");
          -		},
          -		function() {
          -			active_topics = ["tiddlyspace"];
          -			renderTopics(active_topics)
          -		}
          -	);
          -	$("#addtopic").click(function(ev) {
          -		var text = prompt("What topic would you like to watch?");
          -		if(active_topics.indexOf(text) === -1) {
          -			active_topics.push(text);
          -		}
          -		var el = renderTopic(text);
          -		topicList.text = active_topics.join("\n");
          -		topicList.put(function() {
          -			$("button.show", el).trigger("click");
          -		}, function() {
          -			alert("eek!")
          -		});
          -	});
          -	$("#topics .delete").live("click",function(ev) {
          -		var topic = $(".show", this.parentNode).text();
          -		active_topics.remove(active_topics.indexOf(topic));
          -		renderTopics();
          -		topicList.text = active_topics.join("\n");
          -		topicList.put(function() {}, function() {
          -			alert("eek!")
          -		});
          -	});
          -	w = createWikifier(window, jQuery, { host: host, container: "recipes/" + space + "_public" });
          -	$("#topics .show").live("click",function(ev) {
          -		var tag = $(this).text();
          -		current_topic = tag;
          -		offset = 0;
          -		$("#stream").empty();
          -		var search = new tiddlyweb.Search('tag:"' + tag + '" &fat=y', host);
          -		search.get(function(tiddlers) {
          -			for(var i = 0; i < tiddlers.length; i++) {
          -				var tiddler = tiddlers[i];
          -				var item = $("<li />").appendTo("#stream")[0];
          -				$("<h2 />").text(tiddler.title + ": ").appendTo(item);
          -				
          -				$("<div class='text' />").text(tiddler.text).appendTo(item);
          -				$("<div class='author' />").text(tiddler.modifier).appendTo(item);
          -			}
          -		}, function() {
          -			$("<li>no topics :-(</li>").appendTo("#stream");
          -		});
          -	});
          -	$(window).scroll(function(){
          -		if($(window).scrollTop() == $(document).height() - $(window).height()) {
          -			offset += 10;
          -			// find a way to get all tiddlers created before the ones above
          -			console.log("loadMore();");
          -		}
          -	});
          -</script>
          -</body>
          -</html>
          -
          -
          -
          HelloThere
          -[[How did you first discover TiddlyWiki?]]
          -[[What was it about TiddlyWiki that captured your interest?]]
          -[[Which aspects of TiddlyWiki do you find most valuable?]]
          -[[How many TiddlyWikis have you created and do you use regularly?]]
          -[[Do you keep adding new features to your existing TiddlyWiki(s)?]]
          -[[Who is the target audience for your TiddlyWiki(s)?]]
          -[[What features of TiddlyWiki made it suitable for your target audience?]]
          -[[How have you found training novice users to use and understand TiddlyWiki?]]
          -[[How many tiddlers and how many megabytes in your largest TiddlyWiki?]]
          -[[How has TiddlyWiki saved time for you as an information publisher?]]
          -[[How has TiddlyWiki saved time for your target audience?]]
          -[[How has the TiddlyWiki community helped you?]]
          -[[How have you been able to contribute back to the TiddlyWiki community?]]
          -[[How many other people have you introduced to TiddlyWiki?]]
          -[[What is the most challenging thing about using TiddlyWiki?]]
          -[[Which plugins do you rely on the most?]]
          -[[What do you think of the name TiddlyWiki and the term "tiddler"?]]
          -[[How might you use TiddlyWiki in the future?]]
          -
          -
          -
          -
          <!--{{{-->
          -<div macro='slideRevision'></div>
          -<div class='heading'>
          -	<span class="titleBar">
          -		<div class='title' macro='view title text'></div>
          -	</span>
          -	<span class='modifierIcon'
          -		macro='view modifier SiteIcon label:no height:48 width:48 preserveAspectRatio:yes'>
          -	</span>
          -	<div class='toolbar'
          -		macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes height:48 width:48 more:popup'>
          -	</div>
          -	<div class='tagClear'></div>
          -</div>
          -<div class='content'>
          -	<div class='viewer' macro='view text wikified'></div>
          -</div>
          -<div class='tagInfo'>
          -	<div class='tidTags' macro='tags'></div>
          -	<div class='tagging' macro='tagging'></div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          /%
          -
          -Hello,
          -
          -If you choose to change this GettingStarted tiddler, you may wish to add the following to your new content if you expect you space to be included:
          -
          -<<<
          -----
          -Hello,
          -''This ~GettingStarted tiddler has been customized.''
          -If you want to see the original system tiddler just click the following link: GettingStarted@system-info at system-info.
          -<<<
          -%/
          -
          -Welcome to your brand new [[TiddlySpace|http://docs.tiddlyspace.com/TiddlySpace]].
          -
          -You're almost ready to go, there are just a couple of things left to do.
          -
          -!Customise your space
          -Go to [[SpaceSettings]] to finish customising  your space. When you're done, come back here (just scroll up). Don't worry though, this will still be open when you've finished.
          -
          -!Further Customisation
          -
          -For advanced options, the [[ServerSettings]] tiddler is used to enable the following features:
          -
          -#index: The value is the name of a tiddler that will be presented when loading the space.  For example, when set to {{{Hello}}} for the space hello.tiddlyspace.com, navigating to that URL will present the Hello tiddler. If there is no {{{Hello}}} you will get an error.
          -#editor: The name of an [[editor application|http://docs.tiddlyspace.com/Example%20Tiddler%20Editors]] to edit tiddlers with.  Applications come from [[included spaces|http://docs.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F]]
          -
          -//If you do not need or understand these features there is no need to create a ServerSettings tiddler.//
          -
          -To edit these options: 
          -
          -* click [[here|ServerSettings]] to open the [[ServerSettings]] tiddler
          -* click on the edit button (the pencil icon)
          -* add the options you wish to set 
          -* click on the save button (the tick icon).
          -
          -An example [[ServerSettings]] tiddler:
          -{{{
          -index: HelloThere
          -editor: /edit#{tiddler}
          -}}}
          -
          -The additional text after /edit allows a tiddler to be opened in edit mode e.g:
          -{{{http://hello.tiddlyspace.com/edit#MyTiddler}}}
          -
          -!!See Also
          -
          -* [[ServerSettings shadow tiddler|http://docs.tiddlyspace.com/ServerSettings%20shadow%20tiddler]]
          -* [[Choosing a non-TiddlyWiki Default Application for your Space|http://docs.tiddlyspace.com/Choosing%20a%20non-TiddlyWiki%20Default%20Application%20for%20your%20Space]]
          -
          -!Finished customising?
          -You can [[Start writing]] some [[tiddlers|http://docs.tiddlyspace.com/Tiddler]].
          -If you're not done tweaking yet though, you can always [[Customise this space|SpaceSettings]] a bit more.
          -
          -You can also [[access and read other tiddlers in various ways|http://docs.tiddlyspace.com/Viewing%20Tiddlers]].
          -
          -!Administration
          -If you'd like to change your password or create another space, visit "Your Account" from the [[Universal Backstage|http://docs.tiddlyspace.com/UniversalBackstage]] (the blue dot in the upper right of the page). If you'd like to add a member or [[include a space|http://docs.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F]] visit "This Space" from the [[Universal Backstage|http://docs.tiddlyspace.com/UniversalBackstage]].
          -
          -You can have as many spaces as you like and each space can have as many members as you or your group need.
          -
          -!Stuck?
          -If you're stuck, and would like some help, please visit the [[help|http://help.tiddlyspace.com]] space, which can point you in the right direction.
          -
          -
          -
          /***
          -|''Name''|ActivityStreamPlugin|
          -|''Version''|0.5.4|
          -|''Description''|Provides a following macro|
          -|''Author''|Jon Robson|
          -|''Requires''|TiddlySpaceFollowingPlugin|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''Source''|https://github.com/jdlrobson/TiddlyWiki/raw/master/plugins/TiddlySpaceInstaller/ActivityStreamPlugin.js|
          -!Usage
          -{{{<<activity>>}}}
          -!!Supressing activity
          -You can supress notifications by  id:
          -"plugin", "shadow", "standard", "follow", "followYou", "siteInfo", "siteIcon", "ownSiteIcon", "notify", "reply"
          -e.g. {{{ <<activity supress:siteIcon>> }}} will hide siteIcon activity from you.
          -
          -!!Supressing people
          -{{{<<activity ignore:person}}} will ignore all activity where person is the subject of the activity. eg. person followed other-person will not appear in the feed.
          -!!Controlling displayed dates.
          -{{{<<activity timestampFormat:"<0hh o' clock>" headingFormat:"0DD/0MM" >>}}} will display date headings as date/month eg.
          -3rd of January would be displayed as 03/01. This particular timestamp example gives you the hour of the activity.
          -
          -!!Even more content
          -{{{<<activity limit:no>>}}} will show you all possible activity in the last X days where X is set at a macro level (advanced developers should see config.macros.activity.RECENTNESS).
          -!StyleSheet
          -
          -.activityStream .externalImage, .activityStream .image {
          -	display: inline;
          -}
          -
          -.feedItem .siteIcon {
          -	display: inline;
          -}
          -
          -.activityStream .error {
          -	background-color: red;
          -	color: white;
          -	font-weight: bold;
          -}
          -
          -.activityStream .feedItem {
          -list-style: none;
          -}
          -
          -.activityStream .notification {
          -	background-color: yellow;
          -	color: black;
          -}
          -
          -.activityStream .activityGroupTitle {
          -	font-weight: bold;
          -	margin-top: 8px;
          -}
          -.activityStream .feedItem {
          -	margin-left: 8px;
          -}
          -!Code
          -***/
          -//{{{
          -(function($) {
          -var name = "StyleSheetActivityStream";
          -config.shadowTiddlers[name] = store.getTiddlerText(tiddler.title +
          -     "##StyleSheet");
          -store.addNotification(name, refreshStyles);
          -
          -var followMacro = config.macros.followTiddlers;
          -var tweb = config.extensions.tiddlyweb;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var scanMacro = config.macros.tsScan;
          -
          -var modifierSpaceLink = "<<view modifier spaceLink>>";
          -var spaceTiddlyLink = "<<view server.bag spaceLink server.title>>";
          -var bagSpaceLink = "<<view server.bag spaceLink>>";
          -var bagSiteIcon = "<<view server.bag SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
          -var modifierSiteIcon = "<<view modifier SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
          -var timestamp = "[<<view modified date '0hh:0mm'>>]";
          -var replyLink = "<<view server.title replyLink>>";
          -config.shadowTiddlers.ActivityStreamTemplates = [
          -	"!notify\n%3 {{notification{%0 %1 has modified %2 in %0 %1 and flagged it for your attention!}}} %8\n",
          -	"!reply\n%3 {{notification{%0 %1 replied with %2 to your %4 %5 post.}}} %8\n",
          -	"!userSiteIcon\n%3 %6 %7 has a new ~SiteIcon.\n",
          -	"!spaceSiteIcon\n%3 %6 %7 updated the SiteIcon for the %0 %1 space.\n",
          -	"!image\n%3 %6 %7 drew the image %2 in the %1 space.\n",
          -	"!plugin\n%3 %6 %7 modified a plugin called %2 in the %0 %1 space.\n",
          -	"!shadow\n%3 %6 %7 modified a shadow tiddler %2 in the %0 %1 space.\n",
          -	"!geo\n%3 %6 %7 modified a geo tiddler called %2 in the %0 %1 space <<view title maplink 'view on map'>>. %8\n",
          -	"!followYou\n%3 %0 %1 is now following you.\n",
          -	"!follow\n%3 %0 %1 is now following %4 %5 <<view server.title link follow>>\n",
          -	"!siteInfo\n%3 %6 %7 <<view server.bag spaceLink server.title label:described>> the %0 %1 space.\n",
          -	"!video\n%3 %6 %7 modified a video entitled %2 in the %0 %1 space. %8\n",
          -	"!standard\n%3 %6 %7 modified %2 in the %0 %1 space. %8\n"
          -	].join("").format(bagSiteIcon, bagSpaceLink, spaceTiddlyLink, timestamp,
          -		"<<view server.title SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>", "<<view server.title spaceLink>>",
          -		modifierSiteIcon, modifierSpaceLink, replyLink);
          -story.refreshTiddler("ActivityStreamTemplates", null, true);
          -config.annotations.ActivityStreamTemplates = "This is a special tiddler used by the ActivityStreamPlugin. It is used for templating notifications. Templates at the top have preference over templates at the bottom.";
          -
          -var macro = config.macros.activity = {
          -	default_limit: 50,
          -	templates: [],
          -	init: function() {
          -		var templates = [];
          -		var regex = new RegExp(/^!(.*)\n/gm);
          -		var text = store.getTiddlerText("ActivityStreamTemplates");
          -		var match = regex.exec(text);
          -		while(match) {
          -			templates.push(match[1]);
          -			match = regex.exec(text);
          -		}
          -		macro.templates = templates;
          -	},
          -	// order matters - earlier templates override older ones
          -	RECENTNESS: 2, // in days
          -	TIMESTAMP_FORMAT: "<0hh:0mm>",
          -	info: {},
          -	locale: {
          -		pleaseWait: "please wait while we load your stream...",
          -		errorLoading: "The activity stream failed to load. Please make sure you have an internet connection and try again.",
          -		userHeading: "Below is the activity stream for spaces that this space follows with the follow tag. (%0/%1 spaces have been loaded)",
          -		emptyStream: "Activity stream currently empty. (%0/%1 loaded)"
          -	},
          -	getTimeStamp: function() {
          -		var today = new Date();
          -		macro._lastRun = today.getTime();
          -		var previous = new Date(today.setDate(today.getDate() - macro.RECENTNESS));
          -		return previous.convertToYYYYMMDDHHMM();
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var container = $("<div />").text(macro.locale.pleaseWait).appendTo(place).
          -			attr("refresh", "macro").attr("macroName", macroName).attr("paramString", paramString);
          -		var space = tiddlyspace.currentSpace.name;
          -		var options = macro.getOptions(paramString);
          -		$(container).attr("activity-limit", options.limit);
          -		macro._session = Math.random();
          -		var activityType;
          -		var sourceActivity = function(user) {
          -			macro.CURRENT_USER = user.name;
          -			macro.USER_AT_TAG = "@%0".format(user.name);
          -			followMacro.getFollowers(function(users) {
          -				macro.getActivity(container, users, activityType, options);
          -			}, macro.CURRENT_USER);
          -			container.attr("activity-type", activityType);
          -			macro._renderStream(container, activityType, options);
          -		};
          -
          -		if(options.user) {
          -			sourceActivity({name: options.user});
          -		} else {
          -			sourceActivity({ name: tiddlyspace.currentSpace.name });
          -		}
          -	},
          -	getOptions: function(paramString) {
          -		var options = {};
          -		var args = paramString.parseParams("name")[0];
          -		var toMap = ["timestampFormat", "headingFormat", "limit", "user"];
          -		var i;
          -		for(i = 0; i < toMap.length; i++) {
          -			var map = toMap[i];
          -			options[map] = args[map] ? args[map][0] : false;
          -		}
          -		var supress = args.supress || [];
          -		var templates = [];
          -		var show = args.show ? args.show : macro.templates;
          -		for(i = 0; i < show.length; i++) {
          -			var template = show[i];
          -			if(supress.indexOf(template) === -1) {
          -				templates.push(template);
          -			}
          -		}
          -		options.ignore = args.ignore || [];
          -		options.templates = templates;
          -		return options;
          -	},
          -	_getActivityQuery: function(user, timestamp) {
          -		timestamp = timestamp || macro.getTimeStamp();
          -		if(user) {
          -			return "/bags/%0_public/tiddlers?select=modified:>%1".format(user, timestamp);
          -		} else {
          -			return false;
          -		}
          -	},
          -	refresh: function(container) {
          -		var type = $(container).attr("activity-type");
          -		var limit = $(container).attr("activity-limit");
          -		var options = macro.getOptions($(container).attr("paramString"));
          -		options.limit = parseInt(limit, 10);
          -		macro.renderStream(container, type, options);
          -	},
          -	getActivity: function(place, users, type, options) {
          -		var i;
          -		var timestamp = macro.activityTimestamp;
          -		var firstRun =  timestamp ? false : true;
          -		macro.info.loaded = firstRun ? 0 : macro.info.loaded;
          -		var afterAjax = function(tiddlers) {
          -			if(firstRun) {
          -				macro.info.loaded += 1;
          -			}
          -			macro.updateStream(tiddlers, type, options);
          -			macro.renderStream(place, type, options);
          -		};
          -		var success = function(tiddlers) {
          -			afterAjax(tiddlers);
          -		};
          -		var error = function() {
          -			afterAjax([]);
          -		};
          -		if(macro._lastRun > new Date().getTime() - 300000) { // leave 5 minutes between calls
          -			afterAjax([]);
          -			return;
          -		}
          -		macro.info.queries = users.length;
          -		for(i = 0; i < users.length; i++) {
          -			var user = users[i];
          -			ajaxReq({
          -				url: macro._getActivityQuery(user, timestamp),
          -				dataType: "json", success: success, error: error
          -			});
          -		}
          -		macro.activityTimestamp = new Date().convertToYYYYMMDDHHMM();
          -	},
          -	reportError: function(place) {
          -		var error = $("<div />").addClass("error").text(locale.errorLoading);
          -		$(place).empty().append(error);
          -	},
          -	createFeedEntry: function(container, tiddler, options) {
          -		var item = $("<li />").addClass("feedItem");
          -		var content = $("<div />").appendTo(item);
          -		var wikifyPlace = $("<span />").appendTo(content)[0];
          -		var author = tiddler.modifier;
          -		if(author && !options.ignore.contains(author)) {
          -			$(container).append(item);
          -			config.macros.view.views.activityItem(null, wikifyPlace, null, null, null, tiddler);
          -			return item;
          -		}
          -		return false;
          -	},
          -	renderStream: function(place, type, options) {
          -		window.clearTimeout(macro._renderTimeout);
          -		macro._renderTimeout = window.setTimeout(function() {
          -			macro._renderStream(place, type, options);
          -		}, 100);
          -	},
          -	_renderStream: function(place, type, options) {
          -		$(place).empty();
          -		var limit = options.limit;
          -		var container = $("<ul />").addClass("activityStream").appendTo(place);
          -		var textHeading = macro.locale.userHeading.format(macro.info.loaded, macro.info.queries);
          -		$("<li />").addClass("listTitle").text(textHeading).appendTo(container);
          -		var tiddlers = store.sortTiddlers(store.filterTiddlers("[server.activity[true]]"), "-modified"); // TODO: sort headings instead if possible (conflicts with limit)
          -		var headings = [];
          -		var groups = {};
          -		var processed = 0, i, j;
          -		var atEndOfActivityFeed = true;
          -		for(i = 0; i < tiddlers.length; i++) {
          -			var tiddler = tiddlers[i];
          -			if(options.templates.contains(tiddler.fields["server.activity.type"])) {
          -				if(!limit || processed < limit) {
          -					var modified = tiddler.modified;
          -					if(modified) {
          -						// format date.
          -						var modifiedString = modified.formatString(options.headingFormat || config.macros.timeline.dateFormat);
          -						if(headings.contains(modifiedString)) {
          -							groups[modifiedString].push(tiddler);
          -						} else {
          -							headings.push(modifiedString);
          -							groups[modifiedString] = [ tiddler ];
          -						}
          -					}
          -					processed += 1;
          -				} else {
          -					atEndOfActivityFeed = false;
          -				}
          -			}
          -		}
          -		var somethingRendered;
          -		for(i = 0; i < headings.length; i++) {
          -			var heading = headings[i];
          -			var _tiddlers = store.sortTiddlers(groups[heading], "-modified");
          -			var headingEl;
          -			if(_tiddlers.length > 0) {
          -				headingEl = $("<li />").addClass("listTitle activityGroupTitle").text(heading).appendTo(container);
          -			}
          -			var rendered = [];
          -			for(j = 0; j < _tiddlers.length; j++) {
          -				var item = macro.createFeedEntry(container, _tiddlers[j], options);
          -				if(item) {
          -					rendered.push(item);
          -				}
          -			}
          -			if(rendered.length === 0) {
          -				headingEl.remove();
          -			} else {
          -				somethingRendered = true;
          -			}
          -		}
          -		if(!somethingRendered) {
          -			var msg;
          -			if(macro.gotActivity) { // it has been run before
          -				msg = macro.locale.emptyStream.format(macro.info.loaded, macro.info.queries);
          -			} else {
          -				msg = macro.locale.pleaseWait;
          -			}
          -			$(container).text(msg);
          -		}
          -		if(!atEndOfActivityFeed) { // show more button
          -			$("<input />").attr("type", "button").val("more").click(function(ev) {
          -				var currentLimit = $(place).attr("activity-limit");
          -				var newLimit = parseInt(currentLimit, 10) + 50;
          -				macro.default_limit = newLimit;
          -				$(place).attr("activity-limit", newLimit);
          -				macro.refresh(place);
          -			}).appendTo(place);
          -		}
          -		this.gotActivity = true;
          -	},
          -	updateStream: function(jstiddlers, type, options) {
          -		// assume already sorted.
          -		var tiddlers = scanMacro._tiddlerfy(jstiddlers, options);
          -		var _dirty = store.isDirty();
          -		$.each(tiddlers, function(i, tid) {
          -			var info = config.macros.view.activity.getActivityInfo(tid, options);
          -			tid.fields["server.activity.type"] = info.type;
          -			tid.fields["server.activity"] = "true";
          -			if(!tid.tags.contains("excludeLists")) {
          -				tid.title = tiddlyspace.getLocalTitle(tid.title, tid.fields["server.workspace"]);
          -				tid.tags = tid.tags.concat(["excludeLists", "excludeMissing", "excludeSearch"]);
          -				tid.fields.doNotSave = "true";
          -				store.addTiddler(tid); // save caused unsaved changes alert and slowdown
          -			}
          -		});
          -		store.setDirty(_dirty);
          -	}
          -};
          -
          -config.macros.view.views.activityItem = function(value, place, params, wikifier,
          -	paramString, tiddler) {
          -	var info = config.macros.view.activity.getActivityInfo(tiddler, {});
          -	wikify(info.template, place, null, tiddler);
          -};
          -
          -var helper = config.macros.view.activity = {
          -	_isNotification: function(tiddler) {
          -		return tiddler.tags.contains(macro.USER_AT_TAG) || tiddler.tags.contains("@all");
          -	},
          -	_repliesOn: function() {
          -		return tiddlyspace.currentSpace.name === macro.CURRENT_USER;
          -	},
          -	types: {
          -		video: function(tiddler) {
          -			return tiddler.tags.contains("video");
          -		},
          -		geo: function(tiddler) {
          -			return tiddler.fields["geo.lat"] && tiddler.fields["geo.long"];
          -		},
          -		siteInfo: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			return title === "SiteInfo";
          -		},
          -		userSiteIcon: function(tiddler) {
          -			var modifierBag = "%0_public".format(tiddler.modifier);
          -			var title = tiddler.fields["server.title"];
          -			return title === "SiteIcon" && modifierBag === tiddler.fields["server.bag"];
          -		},
          -		spaceSiteIcon: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			return title === "SiteIcon"; // note userSiteIcon above does the bag check
          -		},
          -		shadow: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			return title in config.shadowTiddlers;
          -		},
          -		plugin: function(tiddler) {
          -			return tiddler.tags.contains("systemConfig");
          -		},
          -		followYou: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			title = title.indexOf("@") === 0 ? title.substr(1) : title;
          -			return tiddler.tags.contains("follow") && title === macro.USER_AT_TAG;
          -		},
          -		follow: function(tiddler) {
          -			return tiddler.tags.contains("follow");
          -		},
          -		reply: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			var myTiddler = store.getTiddler(tiddler.title);
          -			var myTiddlerIsOlder = myTiddler && myTiddler.modified < tiddler.modified;
          -			return store.tiddlerExists(title) && myTiddlerIsOlder && helper._repliesOn(tiddler);
          -		},
          -		notify: function(tiddler) {
          -			var title = tiddler.fields["server.title"];
          -			var myTiddler = store.getTiddler(title);
          -			var myTiddlerIsNewer = myTiddler && myTiddler.modified > tiddler.modified;
          -			return helper._isNotification(tiddler) && helper._repliesOn(tiddler) && !myTiddlerIsNewer;
          -		},
          -		standard: function(tiddler) {
          -			return true;
          -		},
          -		image: function(tiddler) {
          -			return config.macros.image.isImageTiddler(tiddler);
          -		}
          -	},
          -	// each type should point to a slice in ActivityStreamTemplates tiddler
          -	getActivityInfo: function(tiddler, options) {
          -		var repliesOn = tiddlyspace.currentSpace.name === macro.CURRENT_USER;
          -		var activityType, i;
          -		if(tiddler) {
          -			for(i = 0; i < macro.templates.length; i++) {
          -				var type = macro.templates[i];
          -				if(!activityType && helper.types[type]) {
          -					if(helper.types[type](tiddler)) {
          -						activityType = type;
          -					}
          -				}
          -			}
          -		}
          -		template = store.getTiddlerText("ActivityStreamTemplates##" + activityType) || locale.standardTemplate;
          -		return activityType ? { template: template, type: activityType } : false;
          -	}
          -};
          -
          -config.macros.view.views.link = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -		var el = createTiddlyLink(place,value,true);
          -		if(params[2]) {
          -			$(el).text(params[2]);
          -		}
          -};
          -
          -config.macros.view.views.maplink = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -		var lat = tiddler.fields["geo.lat"];
          -		var lng = tiddler.fields["geo.long"];
          -		var label  = params[2] || value;
          -		if(lat && lng) {
          -			$("<a />").attr("href", "http://maps.google.com/maps?saddr=%0,%1".format(lat, lng)).text(label).appendTo(place);
          -		}
          -};
          -
          -var _displayS = tiddlyspace.displayServerTiddler;
          -tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
          -	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
          -	var localTiddler = store.getTiddler(localTitle);
          -
          -	var _callback = function(src, tiddler) {
          -		if(callback) {
          -			callback(src, tiddler);
          -		}
          -		if(localTiddler) {
          -			tiddler.fields["server.activity"] = "true";
          -			tiddler.fields["server.activity.type"] = localTiddler.fields["server.activity.type"];
          -		}
          -	};
          -	return _displayS.apply(this, [ src, title, workspace, _callback ]);
          -};
          -}(jQuery));
          -//}}}
          -
          -
          -
          /***
          -|''Name''|TiddlySpacePublishingCommands|
          -|''Version''|0.8.5|
          -|''Status''|@@beta@@|
          -|''Description''|toolbar commands for drafting and publishing|
          -|''Author''|Jon Robson|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpacePublishingCommands.js|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
          -!Usage
          -Provides changeToPrivate, changeToPublic and saveDraft commands
          -Provides TiddlySpacePublisher macro.
          -{{{<<TiddlySpacePublisher type:private>>}}} make lots of private tiddlers public.
          -{{{<<TiddlySpacePublisher type:public>>}}} make lots of public tiddlers public.
          -!TODO
          -* add public argument?
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var originMacro = config.macros.tiddlerOrigin;
          -
          -tiddlyspace.getTiddlerStatusType = function(tiddler) {
          -	var isShadow = store.isShadowTiddler(tiddler.title);
          -	var exists = store.tiddlerExists(tiddler.title);
          -	if(isShadow && !exists) {
          -		return "shadow";
          -	} else if(!exists) {
          -		return "missing";
          -	} else {
          -		var types = ["private", "public"];
          -		var type = "external";
          -		for(var i = 0; i < types.length; i++) {
          -			var t = types[i];
          -			type = config.filterHelpers.is[t](tiddler) ? t : type;
          -		}
          -		if(config.filterHelpers.is.unsynced(tiddler)) {
          -			type = type == "private" ? "unsyncedPrivate" : "unsyncedPublic";
          -		}
          -		return type;
          -	}
          -};
          -
          -var cmd = config.commands.publishTiddler = {
          -	text: "make public",
          -	tooltip: "Change this private tiddler into a public tiddler",
          -	errorMsg: "Error publishing %0: %1",
          -
          -	isEnabled: function(tiddler) {
          -		return !readOnly && config.filterHelpers.is["private"](tiddler);
          -	},
          -	handler: function(ev, src, title) {
          -		var tiddler = store.getTiddler(title);
          -		if(tiddler) {
          -			var newBag = cmd.toggleBag(tiddler.fields["server.bag"]);
          -			this.moveTiddler(tiddler, {
          -				title: tiddler.fields["publish.name"] || tiddler.title,
          -				fields: { "server.bag": newBag }
          -			});
          -		}
          -	},
          -	toggleBag: function(bag, to) {
          -		var newBag;
          -		if(typeof bag != typeof "") {
          -			var tiddler = bag;
          -			bag = tiddler.fields["server.bag"];
          -		}
          -		if(bag.indexOf("_private") > -1) { // should make use of endsWith
          -			to = to ? to : "public";
          -			newBag = bag.replace("_private", "_" + to);
          -		} else {
          -			to = to ? to : "private";
          -			newBag = bag.replace("_public", "_" + to);
          -		}
          -		return newBag;
          -	},
          -	copyTiddler: function(title, newTitle, newBag, callback) {
          -		var original = store.getTiddler(title);
          -		newTitle = newTitle ? newTitle : title;
          -		var adaptor = original.getAdaptor();
          -		var publish = function(original, callback) {
          -			var tiddler = $.extend(new Tiddler(newTitle), original);
          -			tiddler.fields = $.extend({}, original.fields, {
          -				"server.bag": newBag,
          -				"server.workspace": "bags/%0".format(newBag),
          -				"server.page.revision": "false"
          -			});
          -			delete tiddler.fields["server.title"];
          -			tiddler.title = newTitle;
          -			adaptor.putTiddler(tiddler, null, null, callback);
          -		};
          -		publish(original, callback);
          -	},
          -	moveTiddler: function(tiddler, newTiddler, callback) {
          -			var info = {
          -			copyContext: {},
          -			deleteContext: {}
          -		};
          -		var _dirty = store.isDirty();
          -		var adaptor = tiddler.getAdaptor();
          -		var newTitle = newTiddler.title;
          -		var oldTitle = tiddler.title;
          -		delete tiddler.fields["server.workspace"];
          -		var oldBag = tiddler.fields["server.bag"];
          -		var newBag = newTiddler.fields["server.bag"];
          -		var newWorkspace = "bags/%0".format(newBag);
          -		cmd.copyTiddler(oldTitle, newTitle, newBag, function(ctx) {
          -				info.copyContext = ctx;
          -				var context = {
          -					tiddler: tiddler,
          -					workspace: newWorkspace
          -				};
          -				store.addTiddler(ctx.tiddler);
          -				tiddler.title = oldTitle; // for cases where a rename occurs
          -				if(ctx.status) { // only do if a success
          -					if(oldBag != newBag) {
          -						adaptor.deleteTiddler(tiddler, context, {}, function(ctx) {
          -							info.deleteContext = ctx;
          -							var el;
          -							if(tiddler) {
          -								tiddler.fields["server.workspace"] = newWorkspace;
          -								tiddler.fields["server.bag"] = newBag;
          -							}
          -							el = el ? el : story.refreshTiddler(oldTitle, null, true);
          -							if(oldTitle != newTitle) {
          -								store.deleteTiddler(oldTitle);
          -								store.notify(oldTitle, true);
          -							}
          -							if(el) {
          -								story.displayTiddler(el, newTitle);
          -							}
          -							if(oldTitle != newTitle) {
          -								story.closeTiddler(oldTitle);
          -							}
          -							if(callback) {
          -								callback(info);
          -							}
          -							store.setDirty(_dirty);
          -						});
          -					} else {
          -						if(callback) {
          -							callback(info);
          -						}
          -					}
          -					refreshDisplay();
          -				}
          -		});
          -	}
          -};
          -
          -var changeToPrivate = config.commands.changeToPrivate = {
          -	text: "make private",
          -	tooltip: "turn this public tiddler into a private tiddler",
          -	isEnabled: function(tiddler) {
          -		return !readOnly && config.filterHelpers.is["public"](tiddler);
          -	},
          -	handler: function(event, src, title) {
          -		var tiddler = store.getTiddler(title);
          -		var newBag = cmd.toggleBag(tiddler, "private");
          -		var newTiddler = { title: title, fields: { "server.bag": newBag }};
          -		cmd.moveTiddler(tiddler, newTiddler);
          -	}
          -};
          -config.commands.changeToPublic = cmd;
          -
          -/* Save as draft command */
          -var saveDraftCmd = config.commands.saveDraft = {
          -	text: "save draft",
          -	tooltip: "Save as a private draft",
          -	isEnabled: function(tiddler) {
          -		return changeToPrivate.isEnabled(tiddler);
          -	},
          -	getDraftTitle: function(title) {
          -		var draftTitle;
          -		var draftNum = "";
          -		while(!draftTitle) {
          -			var suggestedTitle = "%0 [draft%1]".format(title, draftNum);
          -			if(store.getTiddler(suggestedTitle)) {
          -				draftNum = !draftNum ? 2 : draftNum + 1;
          -			} else {
          -				draftTitle = suggestedTitle;
          -			}
          -		}
          -		return draftTitle;
          -	},
          -	createDraftTiddler: function(title, gatheredFields) {
          -		var tiddler = store.getTiddler(title);
          -		var draftTitle = saveDraftCmd.getDraftTitle(title);
          -		var draftTiddler = new Tiddler(draftTitle);
          -		if(tiddler) {
          -			$.extend(true, draftTiddler, tiddler);
          -		} else {
          -			$.extend(draftTiddler.fields, config.defaultCustomFields);
          -		}
          -		for(var fieldName in gatheredFields) {
          -			if(TiddlyWiki.isStandardField(fieldName)) {
          -				draftTiddler[fieldName] = gatheredFields[fieldName];
          -			} else {
          -				draftTiddler.fields[fieldName] = gatheredFields[fieldName];
          -			}
          -		}
          -		var privateBag = tiddlyspace.getCurrentBag("private");
          -		var privateWorkspace = tiddlyspace.getCurrentWorkspace("private");
          -		draftTiddler.title = draftTitle;
          -		draftTiddler.fields["publish.name"] = title;
          -		draftTiddler.fields["server.workspace"] = privateWorkspace;
          -		draftTiddler.fields["server.bag"] = privateBag;
          -		draftTiddler.fields["server.title"] = draftTitle;
          -		draftTiddler.fields["server.page.revision"] = "false";
          -		delete draftTiddler.fields["server.etag"];
          -		return draftTiddler;
          -	},
          -	handler: function(ev, src, title) {
          -		var tiddler = store.getTiddler(title); // original tiddler
          -		var tidEl = story.getTiddler(title);
          -		var uiFields = {};
          -		story.gatherSaveFields(tidEl, uiFields);
          -		var tid = saveDraftCmd.createDraftTiddler(title, uiFields);
          -		tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier,
          -			new Date(), tid.tags, tid.fields);
          -		autoSaveChanges(null, [tid]);
          -		story.closeTiddler(title);
          -		story.displayTiddler(src, title);
          -		story.displayTiddler(src, tid.title);
          -	}
          -};
          -
          -var macro = config.macros.TiddlySpacePublisher = {
          -	locale: {
          -		title: "Batch Publisher",
          -		changeStatusLabel: "Make %0",
          -		noTiddlersText: "No tiddlers to publish",
          -		changeStatusPrompt: "Make all the selected tiddlers %0.",
          -		description: "Change tiddlers from %0 to %1 in this space"
          -	},
          -
          -	listViewTemplate: {
          -		columns: [
          -			{ name: "Selected", field: "Selected", rowName: "title", type: "Selector" },
          -			{ name: "Tiddler", field: "tiddler", title: "Tiddler", type: "Tiddler" },
          -			{ name: "Status", field: "status", title: "Status", type: "WikiText" }
          -		],
          -		rowClasses: []
          -	},
          -
          -	changeStatus: function(tiddlers, status, callback) { // this is what is called when you click the publish button
          -		var publicBag;
          -		for(var i = 0; i < tiddlers.length; i++) {
          -			var tiddler = tiddlers[i];
          -			var newTiddler = {
          -				title: tiddler.title,
          -				fields: { "server.bag": cmd.toggleBag(tiddler, status) }
          -			};
          -			cmd.moveTiddler(tiddler, newTiddler, callback);
          -		}
          -	},
          -	getMode: function(paramString) {
          -		var params = paramString.parseParams("anon")[0];
          -		var status = params.type ?
          -			(["public", "private"].contains(params.type[0]) ? params.type[0] : "private") :
          -			"private";
          -		var newStatus = status == "public" ? "private" : "public";
          -		return [status, newStatus];
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var wizard = new Wizard();
          -		var locale = macro.locale;
          -		var status = macro.getMode(paramString);
          -		wizard.createWizard(place, locale.title);
          -		wizard.addStep(macro.locale.description.format(status[0], status[1]),
          -			'<input type="hidden" name="markList" />');
          -		var markList = wizard.getElement("markList");
          -		var listWrapper = $("<div />").addClass("batchPublisher").
          -			attr("refresh", "macro").attr("macroName", macroName).
          -			attr("params", paramString)[0];
          -		markList.parentNode.insertBefore(listWrapper, markList);
          -		$.data(listWrapper, "wizard", wizard);
          -		macro.refresh(listWrapper);
          -	},
          -	getCheckedTiddlers: function(listWrapper, titlesOnly) {
          -		var tiddlers = [];
          -		$(".chkOptionInput[rowName]:checked", listWrapper).each(function(i, el) {
          -			var title = $(el).attr("rowName");
          -			if(titlesOnly) {
          -				tiddlers.push(title);
          -			} else {
          -				tiddlers.push(store.getTiddler(title));
          -			}
          -		});
          -		return tiddlers;
          -	},
          -	refresh: function(listWrapper) {
          -		var checked = macro.getCheckedTiddlers(listWrapper, true);
          -		var paramString = $(listWrapper).empty().attr("params");
          -		var wizard = $.data(listWrapper, "wizard");
          -		var locale = macro.locale;
          -		var params = paramString.parseParams("anon")[0];
          -		var publishCandidates = [];
          -		var status = macro.getMode(paramString);
          -		var pubType = status[0];
          -		var newPubType = status[1];
          -		var tiddlers = params.filter ? store.filterTiddlers(params.filter[0]) :
          -			store.filterTiddlers("[is[%0]]".format(pubType));
          -		var enabled = [];
          -		for(var i = 0; i < tiddlers.length; i++) {
          -			var tiddler = tiddlers[i];
          -			var title = tiddler.title;
          -			if(!tiddler.tags.contains("excludePublisher") && title !== "SystemSettings") {
          -				publishCandidates.push({ title: title, tiddler: tiddler, status: pubType});
          -			}
          -			if(checked.contains(title)) {
          -				enabled.push("[rowname=%0]".format(title));
          -			}
          -		}
          -
          -		if(publishCandidates.length === 0) {
          -			createTiddlyElement(listWrapper, "em", null, null, locale.noTiddlersText);
          -		} else {
          -			var listView = ListView.create(listWrapper, publishCandidates, macro.listViewTemplate);
          -			wizard.setValue("listView", listView);
          -			var btnHandler = function(ev) {
          -				var tiddlers = macro.getCheckedTiddlers(listWrapper);
          -				var callback = function(status) {
          -					$(".batchPublisher").each(function(i, el) {
          -						macro.refresh(el);
          -					});
          -				};
          -				macro.changeStatus(tiddlers, newPubType, callback);
          -			};
          -			wizard.setButtons([{
          -				caption: locale.changeStatusLabel.format(newPubType),
          -				tooltip: locale.changeStatusPrompt.format(newPubType),
          -				onClick: btnHandler
          -			}]);
          -			$(enabled.join(",")).attr("checked", true); // retain what was checked before
          -		}
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          !Spaces
          -<<groupBy server.bag>>
          -
          -!Private
          -<<list filter [is[private]]>>
          -
          -!Public
          -<<list filter [is[public]]>>
          -
          -!Drafts
          -<<list filter [is[draft]]>>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceBackstage|
          -|''Version''|0.8.0|
          -|''Description''|Provides a TiddlySpace version of the backstage and a homeLink macro|
          -|''Status''|@@beta@@|
          -|''Contributors''|Jon Lister, Jon Robson, Colm Britton|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceBackstage.js|
          -|''Requires''|TiddlySpaceConfig ImageMacroPlugin TiddlySpaceViewTypes|
          -!StyleSheet
          -.tiddler .error.annotation .button{
          -	display: inline-block;
          -}
          -
          -#backstageArea {
          -	z-index: 49;
          -	color: white;
          -	background-color: black;
          -	background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
          -	background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
          -	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
          -	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)";
          -	height: 25px;
          -	padding: 0;
          -}
          -
          -#backstageButton {
          -	overflow: hidden;
          -}
          -
          -#backstageButton #backstageShow,
          -#backstageButton #backstageHide {
          -	margin: 0px;
          -	padding: 0px;
          -}
          -
          -#backstageButton #backstageShow:hover,
          -#backstageButton #backstageHide:hover {
          -	background: none;
          -	color: none;
          -}
          -
          -#backstageButton img,
          -#backstageButton svg {
          -	width: 24px;
          -	height: 24px;
          -}
          -
          -#messageArea {
          -	top: 50px;
          -}
          -
          -#backstageToolbar {
          -	position: relative;
          -}
          -
          -#backstageArea a {
          -	padding: 0px;
          -	margin-left: 0px;
          -	color: white;
          -	background: none;
          -}
          -
          -#backstageArea a:hover {
          -	background-color: white;
          -}
          -
          -#backstage ol,
          -#backstage ul {
          -	padding: auto;
          -}
          -
          -#backstageButton a {
          -	margin: 0;
          -}
          -
          -.backstagePanelBody ul {
          -	padding: 5px;
          -	margin: 5px;
          -}
          -
          -#backstage #backstagePanel {
          -	margin-left: 5%;
          -	padding: 0em;
          -	margin-right: 5%;
          -}
          -
          -#backstageToolbar a {
          -	position: relative;
          -}
          -
          -#backstageArea a.backstageSelTab,
          -#backstageToolbar .backstageTask {
          -	line-height: 25px;
          -	color: #767676;
          -}
          -
          -.backstageTask .externalImage,
          -.backstageTask .image {
          -	display: inline;
          -}
          -
          -#backstageToolbar a span {
          -	z-index: 2;
          -}
          -
          -a.backstageTask {
          -	display: inline;
          -        margin-left: 1em !important;
          -}
          -
          -.backstagePanelBody .button {
          -	display: inline-block;
          -	margin-right: 10px;
          -}
          -
          -.backstagePanelBody {
          -	margin: 0 0 0 0.6em;
          -	padding: 0.4em 0.5em 1px 0.5em;
          -}
          -
          -#backstage table {
          -	margin: auto;
          -}
          -
          -#backstage .wizard table {
          -	border: 0px;
          -	margin: 0;
          -}
          -
          -#backstage div  li.listLink {
          -	border: 0px;
          -	width: 78%;
          -	font-size: 0.7em;
          -}
          -
          -#backstage div li.listTitle {
          -	font-weight: bold;
          -	text-decoration: underline;
          -	font-size: 1em;
          -	background: #ccc;
          -	width: 100%;
          -}
          -
          -#backstage fieldset {
          -	border: solid 1px [[ColorPalette::Background]];
          -}
          -
          -#backstage .viewer table,#backstage table.twtable {
          -	border: 0px;
          -}
          -
          -#backstageToolbar img {
          -	padding: 0;
          -}
          -
          -#backstage .wizard,
          -#backstage .wizardFooter {
          -	background: none;
          -}
          -
          -.viewer td, .viewer tr, .twtable td, .twtable tr {
          -	border: 1px solid #eee;
          -}
          -
          -#backstage .inlineList ul li {
          -	background-color: [[ColorPalette::Background]];
          -	border: solid 1px [[ColorPalette::TertiaryMid]];
          -	display: block;
          -	float: left;
          -	list-style: none;
          -	margin-right: 1em;
          -	padding: 0.5em;
          -}
          -
          -.backstageClear, .inlineList form {
          -	clear: both;
          -	display: block;
          -	margin-top: 3em;
          -}
          -
          -.tiddlyspaceMenu {
          -	text-align: center;
          -}
          -
          -span.chunkyButton {
          -	display: inline-block;
          -	padding: 0;
          -	margin: 0;
          -	border: solid 2px #000;
          -	background-color: #04b;
          -}
          -
          -span.chunkyButton a.button, span.chunkyButton a:active.button {
          -	white-space: nowrap;
          -	font-weight: bold;
          -	font-size: 1.8em;
          -	color: #fff;
          -	text-align: center;
          -	padding: 0.5em 0.5em;
          -	margin: 0;
          -	border-style: none;
          -	display: block;
          -}
          -
          -span.chunkyButton:hover {
          -	background-color: #014;
          -}
          -
          -span.chunkyButton a.button:hover {
          -	border-style: none;
          -	background: none;
          -	color: #fff;
          -}
          -
          -#backstage .unpluggedSpaceTab .wizard,
          -.unpluggedSpaceTab .wizard {
          -	background: white;
          -	border: 2px solid #CCC;
          -	padding: 5px;
          -}
          -
          -.syncKey .keyItem {
          -	border: 1px solid black;
          -	display: inline-block;
          -	margin: 0.2em;
          -	padding: 0.1em 0.1em 0.1em 0.1em;
          -}
          -
          -.keyHeading {
          -	font-size: 2em;
          -	font-weight: bold;
          -	margin: 0.4em 0em -0.2em;
          -}
          -
          -.unpluggedSpaceTab .putToServer,
          -.unpluggedSpaceTab .notChanged {
          -	display: none;
          -}
          -
          -.tiddlyspaceMenu ul {
          -	margin: 0;
          -	padding: 0;
          -}
          -
          -.tiddlyspaceMenu ul li {
          -	list-style: none;
          -}
          -
          -.unsyncedChanges .unsyncedList {
          -	display: block;
          -}
          -
          -.unsyncedList {
          -	display: none;
          -}
          -!Code
          -***/
          -//{{{
          -(function ($) {
          -    var name = "StyleSheet" + tiddler.title;
          -    config.shadowTiddlers[name] = "/*{{{*/\n%0\n/*}}}*/".
          -        format(store.getTiddlerText(tiddler.title + "##StyleSheet")); // this accesses the StyleSheet section of the current tiddler (the plugin that contains it)
          -    store.addNotification(name, refreshStyles);
          -
          -    if (!config.extensions.tiddlyweb.status.tiddlyspace_version) { // unplugged
          -        config.extensions.tiddlyweb.status.tiddlyspace_version = "<unknown>";
          -        config.extensions.tiddlyweb.status.server_host = {
          -            url:config.extensions.tiddlyweb.host }; // TiddlySpaceLinkPlugin expects this
          -    }
          -    var disabled_tasks_for_nonmembers = ["tiddlers", "plugins", "batch", "sync"];
          -
          -    var tweb = config.extensions.tiddlyweb;
          -    var tiddlyspace = config.extensions.tiddlyspace;
          -    var currentSpace = tiddlyspace.currentSpace.name;
          -    var imageMacro = config.macros.image;
          -
          -    if (config.options.chkBackstage === undefined) {
          -        config.options.chkBackstage = false;
          -    }
          -
          -// Set up Backstage
          -    config.tasks = {};
          -    config.tasks.status = {
          -        text:"status",
          -        tooltip:"TiddlySpace Info",
          -        content:"<<tiddler Backstage##Menu>>"
          -    };
          -    config.tasks.tiddlers = {
          -        text:"tiddlers",
          -        tooltip:"tiddlers control panel",
          -        content:"<<tiddler Backstage##BackstageTiddlers>>"
          -    };
          -    config.tasks.plugins = {
          -        text:"plugins",
          -        tooltip:"Manage installed plugins",
          -        content:"<<tiddler Backstage##Plugins>>"
          -    };
          -    config.tasks.batch = {
          -        text:"batch",
          -        tooltip:"Batch manage public/private tiddlers",
          -        content:"<<tiddler Backstage##BatchOps>>"
          -    };
          -    config.tasks.tweaks = {
          -        text:"tweaks",
          -        tooltip:"Tweak TiddlyWiki behaviors",
          -        content:"<<tiddler Backstage##Tweaks>>"
          -    };
          -    config.tasks.exportTiddlers = {
          -        text:"import/export",
          -        tooltip:"Import/export tiddlers from/to a TiddlyWiki",
          -        content:"<<tiddler Backstage##ImportExport>>"
          -    };
          -    config.tasks.sync = {
          -        text:"sync",
          -        tooltip:"Check Sync status",
          -        content:"<<tiddler Backstage##SpaceUnplugged>>"
          -    };
          -
          -    if (window.location.protocol === "file:") {
          -        config.unplugged = true;
          -    }
          -
          -    config.backstageTasks = ["status", "tiddlers", "plugins",
          -        "batch", "tweaks", "exportTiddlers", "sync"];
          -
          -    config.messages.backstage.prompt = "";
          -// initialize state
          -    var _show = backstage.show;
          -    backstage.show = function () {
          -        // selectively hide backstage tasks and tabs based on user status
          -        var tasks = $("#backstageToolbar .backstageTask").show();
          -        var bs = backstage.tiddlyspace;
          -        if (!config.unplugged) {
          -            tweb.getUserInfo(function (user) {
          -                if (user.anon) {
          -                    jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
          -                        var taskIndex = config.backstageTasks.indexOf(task);
          -                        if (taskIndex !== -1) {
          -                            config.backstageTasks.splice(taskIndex, 1);
          -                        }
          -                    });
          -                    config.messages.memberStatus = bs.locale.loggedout;
          -                } else {
          -                    config.messages.memberStatus = readOnly ?
          -                        bs.locale.nonmember : bs.locale.member;
          -                }
          -            });
          -        } else {
          -            config.messages.memberStatus = bs.locale.unplugged;
          -        }
          -
          -        // display backstage
          -        return _show.apply(this, arguments);
          -    };
          -    if (readOnly) {
          -        jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
          -            var taskIndex = config.backstageTasks.indexOf(task);
          -            if (taskIndex !== -1) {
          -                config.backstageTasks.splice(taskIndex, 1);
          -            }
          -        });
          -    }
          -
          -    var tasks = config.tasks;
          -    var commonUrl = "/bags/common/tiddlers/%0";
          -
          -    backstage.tiddlyspace = {
          -        locale:{
          -            member:"You are a member of this space.",
          -            nonmember:"You are not a member of this space.",
          -            loggedout:"You are currently logged out of TiddlySpace.",
          -            unplugged:"You are unplugged."
          -        },
          -        showButton:function () {
          -            var showBtn = $("#backstageShow")[0];
          -            var altText = $(showBtn).text();
          -            $(showBtn).empty();
          -            imageMacro.renderImage(showBtn, "backstage.svg",
          -                { altImage:commonUrl.format("backstage.png"), alt:altText});
          -        },
          -        hideButton:function () {
          -            var hideBtn = $("#backstageHide")[0];
          -            var altText = $(hideBtn).text();
          -            $(hideBtn).empty();
          -            imageMacro.renderImage(hideBtn, "close.svg",
          -                { altImage:commonUrl.format("close.png"), alt:altText, width:24, height:24 });
          -        }
          -    };
          -
          -    var _init = backstage.init;
          -    backstage.init = function () {
          -        _init.apply(this, arguments);
          -        var init = function (user) {
          -            var bs = backstage.tiddlyspace;
          -            bs.showButton();
          -            bs.hideButton();
          -        };
          -        tweb.getUserInfo(init);
          -    };
          -
          -    var home = config.macros.homeLink = {
          -        locale:{
          -            linkText:"your home space"
          -        },
          -        handler:function (place) {
          -            var container = $("<span />").appendTo(place)[0];
          -            tweb.getUserInfo(function (user) {
          -                if (!user.anon && user.name !== currentSpace) {
          -                    createSpaceLink(container, user.name, null, home.locale.linkText);
          -                }
          -            });
          -        }
          -    };
          -
          -    config.macros.exportSpace = {
          -        handler:function (place, macroName, params) {
          -            var filename = params[0] ||
          -                "/tiddlers.wiki?download=%0.html".format(currentSpace);
          -            $('<a class="button">download</a>').// XXX: i18n
          -                attr("href", filename).appendTo(place);
          -        }
          -    };
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          /***
          -|''Name''|RevisionsCommandPlugin|
          -|''Description''|provides access to tiddler revisions|
          -|''Author''|FND|
          -|''Contributors''|Martin Budden|
          -|''Version''|0.3.3|
          -|''Status''|@@beta@@|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
          -|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.6.0|
          -|''Keywords''|serverSide|
          -!Usage
          -Extend [[ToolbarCommands]] with {{{revisions}}}.
          -!Revision History
          -!!v0.1 (2009-07-23)
          -* initial release (renamed from experimental ServerCommandsPlugin)
          -!!v0.2 (2010-03-04)
          -* suppressed wikification in diff view
          -!!v0.3 (2010-04-07)
          -* restored wikification in diff view
          -* added link to side-by-side diff view
          -!To Do
          -* strip server.* fields from revision tiddlers
          -* resolve naming conflicts
          -* i18n, l10n
          -* code sanitizing
          -* documentation
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -jQuery.twStylesheet(".diff { white-space: pre, font-family: monospace }",
          -	{ id: "diff" });
          -
          -var cmd = config.commands.revisions = {
          -	type: "popup",
          -	hideShadow: true,
          -	text: "revisions",
          -	tooltip: "display tiddler revisions",
          -	revTooltip: "", // TODO: populate dynamically?
          -	loadLabel: "loading...",
          -	loadTooltip: "loading revision list",
          -	selectLabel: "select",
          -	selectTooltip: "select revision for comparison",
          -	selectedLabel: "selected",
          -	compareLabel: "compare",
          -	linkLabel: "side-by-side view",
          -	revSuffix: " [rev. #%0]",
          -	diffSuffix: " [diff: #%0 #%1]",
          -	dateFormat: "YYYY-0MM-0DD 0hh:0mm",
          -	listError: "revisions could not be retrieved",
          -
          -	handlePopup: function(popup, title) {
          -		title = this.stripSuffix("rev", title);
          -		title = this.stripSuffix("diff", title);
          -		var tiddler = store.getTiddler(title);
          -		var type = _getField("server.type", tiddler);
          -		var adaptor = new config.adaptors[type]();
          -		var limit = null; // TODO: customizable
          -		var context = {
          -			host: _getField("server.host", tiddler),
          -			workspace: _getField("server.workspace", tiddler)
          -		};
          -		var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
          -		var params = { popup: popup, loading: loading, origin: title };
          -		adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
          -	},
          -
          -	displayRevisions: function(context, userParams) {
          -		removeNode(userParams.loading);
          -		if(context.status) {
          -			var callback = function(ev) {
          -				var e = ev || window.event;
          -				var revision = resolveTarget(e).getAttribute("revision");
          -				context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
          -					userParams, cmd.displayTiddlerRevision);
          -			};
          -			var table = createTiddlyElement(userParams.popup, "table");
          -			for(var i = 0; i < context.revisions.length; i++) {
          -				var tiddler = context.revisions[i];
          -				var row = createTiddlyElement(table, "tr");
          -				var timestamp = tiddler.modified.formatString(cmd.dateFormat);
          -				var revision = tiddler.fields["server.page.revision"];
          -				var cell = createTiddlyElement(row, "td");
          -				createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
          -					null, null, { revision: revision });
          -				cell = createTiddlyElement(row, "td", null, null, tiddler.modifier);
          -				cell = createTiddlyElement(row, "td");
          -				createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
          -					cmd.revisionSelected, null, null, null,
          -					{ index:i, revision: revision, col: 2 });
          -				cmd.context = context; // XXX: unsafe (singleton)!?
          -			}
          -		} else {
          -			$("<li />").text(cmd.listError).appendTo(userParams.popup);
          -		}
          -	},
          -
          -	revisionSelected: function(ev) {
          -		var e = ev || window.event;
          -		e.cancelBubble = true;
          -		if(e.stopPropagation) {
          -			e.stopPropagation();
          -		}
          -		var n = resolveTarget(e);
          -		var index = n.getAttribute("index");
          -		var col = n.getAttribute("col");
          -		while(!index || !col) {
          -			n = n.parentNode;
          -			index = n.getAttribute("index");
          -			col = n.getAttribute("col");
          -		}
          -		cmd.revision = n.getAttribute("revision");
          -		var table = n.parentNode.parentNode.parentNode;
          -		var rows = table.childNodes;
          -		for(var i = 0; i < rows.length; i++) {
          -			var c = rows[i].childNodes[col].firstChild;
          -			if(i == index) {
          -				if(c.textContent) {
          -					c.textContent = cmd.selectedLabel;
          -				} else {
          -					c.text = cmd.selectedLabel;
          -				}
          -			} else {
          -				if(c.textContent) {
          -					c.textContent = cmd.compareLabel;
          -				} else {
          -					c.text = cmd.compareLabel;
          -				}
          -				c.onclick = cmd.compareSelected;
          -			}
          -		}
          -	},
          -
          -	compareSelected: function(ev) {
          -		var e = ev || window.event;
          -		var n = resolveTarget(e);
          -		var context = cmd.context;
          -		context.rev1 = n.getAttribute("revision");
          -		context.rev2 = cmd.revision;
          -		context.tiddler = context.revisions[n.getAttribute("index")];
          -		context.format = "unified";
          -		context.adaptor.getTiddlerDiff(context.tiddler.title, context,
          -			context.userParams, cmd.displayTiddlerDiffs);
          -	},
          -
          -	displayTiddlerDiffs: function(context, userParams) {
          -		var tiddler = context.tiddler;
          -		tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
          -		tiddler.text = "{{diff{\n" + context.diff + "\n}}}";
          -		tiddler.tags = ["diff"];
          -		tiddler.fields.doNotSave = "true"; // XXX: correct?
          -		if(!store.getTiddler(tiddler.title)) {
          -			store.addTiddler(tiddler);
          -		}
          -		var src = story.getTiddler(userParams.origin);
          -		var tiddlerEl = story.displayTiddler(src, tiddler);
          -		var uri = context.uri.replace("format=unified", "format=horizontal");
          -		var link = $('<a target="_blank" />').attr("href", uri).text(cmd.linkLabel);
          -		$(".viewer", tiddlerEl).prepend(link);
          -	},
          -
          -	displayTiddlerRevision: function(context, userParams) {
          -		var tiddler = context.tiddler;
          -		tiddler.title += cmd.revSuffix.format([tiddler.fields["server.page.revision"]]);
          -		tiddler.fields.doNotSave = "true"; // XXX: correct?
          -		if(!store.getTiddler(tiddler.title)) {
          -			store.addTiddler(tiddler);
          -		}
          -		var src = story.getTiddler(userParams.origin);
          -		story.displayTiddler(src, tiddler);
          -	},
          -
          -	stripSuffix: function(type, title) {
          -		var str = cmd[type + "Suffix"];
          -		var i = str.indexOf("%0");
          -		i = title.indexOf(str.substr(0, i));
          -		if(i != -1) {
          -			title = title.substr(0, i);
          -		}
          -		return title;
          -	}
          -};
          -
          -var _getField = function(name, tiddler) {
          -	return tiddler.fields[name] || config.defaultCustomFields[name];
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Description''|Sanitisation for dynamically pulling tiddlers into your space and displaying them|
          -!Notes
          -Works both inside and outside TiddlyWiki. Uses the HTML Sanitizer provided by the Google Caja project
          -(see http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer for more on this), which is licensed under
          -an Apache License (see http://www.apache.org/licenses/LICENSE-2.0).
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var cleanURL = function(url) {
          -	var regexp = /^(?:http|https|mailto|ftp|irc|news):\/\//;
          -	return (regexp.test(url)) ? url : null;
          -};
          -
          -$.sanitize = function(html) {
          -	return html_sanitize(html, cleanURL);
          -};
          -
          -/*
          - * HTML Sanitizer, provided by Google Caja
          - */
          -
          -/* Copyright Google Inc.
          - * Licensed under the Apache Licence Version 2.0
          - * Autogenerated at Tue May 17 17:39:24 BST 2011
          - * @provides html4
          - */var html4={};html4.atype={NONE:0,URI:1,URI_FRAGMENT:11,SCRIPT:2,STYLE:3,ID:4,IDREF:5,IDREFS:6,GLOBAL_NAME:7,LOCAL_NAME:8,CLASSES:9,FRAME_TARGET:10},html4.ATTRIBS={"*::class":9,"*::dir":0,"*::id":4,"*::lang":0,"*::onclick":2,"*::ondblclick":2,"*::onkeydown":2,"*::onkeypress":2,"*::onkeyup":2,"*::onload":2,"*::onmousedown":2,"*::onmousemove":2,"*::onmouseout":2,"*::onmouseover":2,"*::onmouseup":2,"*::style":3,"*::title":0,"a::accesskey":0,"a::coords":0,"a::href":1,"a::hreflang":0,"a::name":7,"a::onblur":2,"a::onfocus":2,"a::rel":0,"a::rev":0,"a::shape":0,"a::tabindex":0,"a::target":10,"a::type":0,"area::accesskey":0,"area::alt":0,"area::coords":0,"area::href":1,"area::nohref":0,"area::onblur":2,"area::onfocus":2,"area::shape":0,"area::tabindex":0,"area::target":10,"bdo::dir":0,"blockquote::cite":1,"br::clear":0,"button::accesskey":0,"button::disabled":0,"button::name":8,"button::onblur":2,"button::onfocus":2,"button::tabindex":0,"button::type":0,"button::value":0,"canvas::height":0,"canvas::width":0,"caption::align":0,"col::align":0,"col::char":0,"col::charoff":0,"col::span":0,"col::valign":0,"col::width":0,"colgroup::align":0,"colgroup::char":0,"colgroup::charoff":0,"colgroup::span":0,"colgroup::valign":0,"colgroup::width":0,"del::cite":1,"del::datetime":0,"dir::compact":0,"div::align":0,"dl::compact":0,"font::color":0,"font::face":0,"font::size":0,"form::accept":0,"form::action":1,"form::autocomplete":0,"form::enctype":0,"form::method":0,"form::name":7,"form::onreset":2,"form::onsubmit":2,"form::target":10,"h1::align":0,"h2::align":0,"h3::align":0,"h4::align":0,"h5::align":0,"h6::align":0,"hr::align":0,"hr::noshade":0,"hr::size":0,"hr::width":0,"iframe::align":0,"iframe::frameborder":0,"iframe::height":0,"iframe::marginheight":0,"iframe::marginwidth":0,"iframe::width":0,"img::align":0,"img::alt":0,"img::border":0,"img::height":0,"img::hspace":0,"img::ismap":0,"img::name":7,"img::src":1,"img::usemap":11,"img::vspace":0,"img::width":0,"input::accept":0,"input::accesskey":0,"input::align":0,"input::alt":0,"input::autocomplete":0,"input::checked":0,"input::disabled":0,"input::ismap":0,"input::maxlength":0,"input::name":8,"input::onblur":2,"input::onchange":2,"input::onfocus":2,"input::onselect":2,"input::readonly":0,"input::size":0,"input::src":1,"input::tabindex":0,"input::type":0,"input::usemap":11,"input::value":0,"ins::cite":1,"ins::datetime":0,"label::accesskey":0,"label::for":5,"label::onblur":2,"label::onfocus":2,"legend::accesskey":0,"legend::align":0,"li::type":0,"li::value":0,"map::name":7,"menu::compact":0,"ol::compact":0,"ol::start":0,"ol::type":0,"optgroup::disabled":0,"optgroup::label":0,"option::disabled":0,"option::label":0,"option::selected":0,"option::value":0,"p::align":0,"pre::width":0,"q::cite":1,"select::disabled":0,"select::multiple":0,"select::name":8,"select::onblur":2,"select::onchange":2,"select::onfocus":2,"select::size":0,"select::tabindex":0,"table::align":0,"table::bgcolor":0,"table::border":0,"table::cellpadding":0,"table::cellspacing":0,"table::frame":0,"table::rules":0,"table::summary":0,"table::width":0,"tbody::align":0,"tbody::char":0,"tbody::charoff":0,"tbody::valign":0,"td::abbr":0,"td::align":0,"td::axis":0,"td::bgcolor":0,"td::char":0,"td::charoff":0,"td::colspan":0,"td::headers":6,"td::height":0,"td::nowrap":0,"td::rowspan":0,"td::scope":0,"td::valign":0,"td::width":0,"textarea::accesskey":0,"textarea::cols":0,"textarea::disabled":0,"textarea::name":8,"textarea::onblur":2,"textarea::onchange":2,"textarea::onfocus":2,"textarea::onselect":2,"textarea::readonly":0,"textarea::rows":0,"textarea::tabindex":0,"tfoot::align":0,"tfoot::char":0,"tfoot::charoff":0,"tfoot::valign":0,"th::abbr":0,"th::align":0,"th::axis":0,"th::bgcolor":0,"th::char":0,"th::charoff":0,"th::colspan":0,"th::headers":6,"th::height":0,"th::nowrap":0,"th::rowspan":0,"th::scope":0,"th::valign":0,"th::width":0,"thead::align":0,"thead::char":0,"thead::charoff":0,"thead::valign":0,"tr::align":0,"tr::bgcolor":0,"tr::char":0,"tr::charoff":0,"tr::valign":0,"ul::compact":0,"ul::type":0},html4.eflags={OPTIONAL_ENDTAG:1,EMPTY:2,CDATA:4,RCDATA:8,UNSAFE:16,FOLDABLE:32,SCRIPT:64,STYLE:128},html4.ELEMENTS={a:0,abbr:0,acronym:0,address:0,applet:16,area:2,b:0,base:18,basefont:18,bdo:0,big:0,blockquote:0,body:49,br:2,button:0,canvas:0,caption:0,center:0,cite:0,code:0,col:2,colgroup:1,dd:1,del:0,dfn:0,dir:0,div:0,dl:0,dt:1,em:0,fieldset:0,font:0,form:0,frame:18,frameset:16,h1:0,h2:0,h3:0,h4:0,h5:0,h6:0,head:49,hr:2,html:49,i:0,iframe:4,img:2,input:2,ins:0,isindex:18,kbd:0,label:0,legend:0,li:1,link:18,map:0,menu:0,meta:18,nobr:0,noframes:20,noscript:20,object:16,ol:0,optgroup:0,option:1,p:1,param:18,pre:0,q:0,s:0,samp:0,script:84,select:0,small:0,span:0,strike:0,strong:0,style:148,sub:0,sup:0,table:0,tbody:1,td:1,textarea:8,tfoot:1,th:1,thead:1,title:24,tr:1,tt:0,u:0,ul:0,"var":0},html4.ueffects={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2},html4.URIEFFECTS={"a::href":2,"area::href":2,"blockquote::cite":0,"body::background":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0},html4.ltypes={UNSANDBOXED:2,SANDBOXED:1,DATA:0},html4.LOADERTYPES={"a::href":2,"area::href":2,"blockquote::cite":2,"body::background":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2};var html=function(a){function x(b,c,d){var e=[];w(function(b,e){for(var f=0;f<e.length;f+=2){var g=e[f],h=e[f+1],i=null,j;if((j=b+"::"+g,a.ATTRIBS.hasOwnProperty(j))||(j="*::"+g,a.ATTRIBS.hasOwnProperty(j)))i=a.ATTRIBS[j];if(i!==null)switch(i){case a.atype.NONE:break;case a.atype.SCRIPT:case a.atype.STYLE:h=null;break;case a.atype.ID:case a.atype.IDREF:case a.atype.IDREFS:case a.atype.GLOBAL_NAME:case a.atype.LOCAL_NAME:case a.atype.CLASSES:h=d?d(h):h;break;case a.atype.URI:h=c&&c(h);break;case a.atype.URI_FRAGMENT:h&&"#"===h.charAt(0)?(h=d?d(h):h,h&&(h="#"+h)):h=null;break;default:h=null}else h=null;e[f+1]=h}return e})(b,e);return e.join("")}function w(b){var c,d;return v({startDoc:function(a){c=[],d=!1},startTag:function(e,f,g){if(!d){if(!a.ELEMENTS.hasOwnProperty(e))return;var h=a.ELEMENTS[e];if(h&a.eflags.FOLDABLE)return;if(h&a.eflags.UNSAFE){d=!(h&a.eflags.EMPTY);return}f=b(e,f);if(f){h&a.eflags.EMPTY||c.push(e),g.push("<",e);for(var i=0,j=f.length;i<j;i+=2){var k=f[i],l=f[i+1];l!==null&&l!==void 0&&g.push(" ",k,'="',r(l),'"')}g.push(">")}}},endTag:function(b,e){if(d)d=!1;else{if(!a.ELEMENTS.hasOwnProperty(b))return;var f=a.ELEMENTS[b];if(!(f&(a.eflags.UNSAFE|a.eflags.EMPTY|a.eflags.FOLDABLE))){var g;if(f&a.eflags.OPTIONAL_ENDTAG)for(g=c.length;--g>=0;){var h=c[g];if(h===b)break;if(!(a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG))return}else for(g=c.length;--g>=0;)if(c[g]===b)break;if(g<0)return;for(var i=c.length;--i>g;){var h=c[i];a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG||e.push("</",h,">")}c.length=g,e.push("</",b,">")}}},pcdata:function(a,b){d||b.push(a)},rcdata:function(a,b){d||b.push(a)},cdata:function(a,b){d||b.push(a)},endDoc:function(a){for(var b=c.length;--b>=0;)a.push("</",c[b],">");c.length=0}})}function v(c){return function(d,e){d=String(d);var f=null,g=!1,h=[],j=void 0,l=void 0,m=void 0;c.startDoc&&c.startDoc(e);while(d){var n=d.match(g?t:u);d=d.substring(n[0].length);if(g){if(n[1]){var o=b(n[1]),p;if(n[2]){var q=n[3];switch(q.charCodeAt(0)){case 34:case 39:q=q.substring(1,q.length-1)}p=k(i(q))}else p=o;h.push(o,p)}else if(n[4]){l!==void 0&&(m?c.startTag&&c.startTag(j,h,e):c.endTag&&c.endTag(j,e));if(m&&l&(a.eflags.CDATA|a.eflags.RCDATA)){f===null?f=b(d):f=f.substring(f.length-d.length);var r=f.indexOf("</"+j);r<0&&(r=d.length),l&a.eflags.CDATA?c.cdata&&c.cdata(d.substring(0,r),e):c.rcdata&&c.rcdata(s(d.substring(0,r)),e),d=d.substring(r)}j=l=m=void 0,h.length=0,g=!1}}else if(n[1])c.pcdata&&c.pcdata(n[0],e);else if(n[3])m=!n[2],g=!0,j=b(n[3]),l=a.ELEMENTS.hasOwnProperty(j)?a.ELEMENTS[j]:void 0;else if(n[4])c.pcdata&&c.pcdata(n[4],e);else if(n[5]&&c.pcdata)switch(n[5]){case"<":c.pcdata("&lt;",e);break;case">":c.pcdata("&gt;",e);break;default:c.pcdata("&amp;",e)}}c.endDoc&&c.endDoc(e)}}function s(a){return a.replace(m,"&amp;$1").replace(n,"&lt;").replace(o,"&gt;")}function r(a){return a.replace(l,"&amp;").replace(n,"&lt;").replace(o,"&gt;").replace(p,"&#34;").replace(q,"&#61;")}function k(a){return a.replace(j,g)}function i(a){return a.replace(h,"")}function g(a,b){return f(b)}function f(a){a=b(a);if(c.hasOwnProperty(a))return c[a];var f=a.match(d);if(f)return String.fromCharCode(parseInt(f[1],10));if(!!(f=a.match(e)))return String.fromCharCode(parseInt(f[1],16));return""}var b;"script"==="SCRIPT".toLowerCase()?b=function(a){return a.toLowerCase()}:b=function(a){return a.replace(/[A-Z]/g,function(a){return String.fromCharCode(a.charCodeAt(0)|32)})};var c={lt:"<",gt:">",amp:"&",nbsp:"240",quot:'"',apos:"'"},d=/^#(\d+)$/,e=/^#x([0-9A-Fa-f]+)$/,h=/\0/g,j=/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g,l=/&/g,m=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,n=/</g,o=/>/g,p=/\"/g,q=/\=/g,t=new RegExp("^\\s*(?:(?:([a-z][a-z-]*)(\\s*=\\s*(\"[^\"]*\"|'[^']*'|(?=[a-z][a-z-]*\\s*=)|[^>\"'\\s]*))?)|(/?>)|[\\s\\S][^a-z\\s>]*)","i"),u=new RegExp("^(?:&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);|<!--[\\s\\S]*?-->|<!\\w[^>]*>|<\\?[^>*]*>|<(/)?([a-z][a-z0-9]*)|([^<&>]+)|([<&>]))","i");return{escapeAttrib:r,makeHtmlSanitizer:w,makeSaxParser:v,normalizeRCData:s,sanitize:x,unescapeEntities:k}}(html4),html_sanitize=html.sanitize
          -
          -// stop here if we're not in TiddlyWiki
          -// XXX: is this the correct way of checking for TiddlyWiki?
          -if (!window.TiddlyWiki || !window.store || !store instanceof TiddlyWiki) {
          -	return;
          -}
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -
          -var _subWikify = Wikifier.prototype.subWikify;
          -
          -var cleanedTitle = 'This section has been cleaned of any potentially harmful code';
          -
          -var replaceFunctions = {
          -	html: function(w) {
          -		var sanitizedHTML, spanEl;
          -		this.lookaheadRegExp.lastIndex = w.matchStart;
          -		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          -		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
          -			sanitizedHTML = $.sanitize(lookaheadMatch[1]);
          -			spanEl = createTiddlyElement(w.output, 'span', null, 'sanitized');
          -			spanEl.innerHTML = sanitizedHTML;
          -			spanEl.setAttribute('title', cleanedTitle);
          -			w.nextMatch = this.lookaheadRegExp.lastIndex;
          -		}
          -	},
          -	customFormat: function(w) {
          -		switch(w.matchText) {
          -			case '@@':
          -				var e = createTiddlyElement(w.output, 'span');
          -				var styles = config.formatterHelpers.inlineCssHelper(w);
          -				if (styles.length === 0) {
          -					e.className = 'marked';
          -				}
          -				w.subWikifyTerm(e, /(@@)/mg);
          -				break;
          -			case '{{':
          -				var lookaheadRegExp = /\{\{[\s]*([\w]+[\s\w]*)[\s]*\{(\n?)/mg;
          -				lookaheadRegExp.lastIndex = w.matchStart;
          -				var lookaheadMatch = lookaheadRegExp.exec(w.source);
          -				if(lookaheadMatch) {
          -					w.nextMatch = lookaheadRegExp.lastIndex;
          -					e = createTiddlyElement(w.output,lookaheadMatch[2] == "\n" ? "div" : "span",null,lookaheadMatch[1]);
          -					w.subWikifyTerm(e,/(\}\}\})/mg);
          -				}
          -				break;
          -		}
          -	}
          -};
          -
          -Wikifier.prototype.subWikify = function(output, terminator) {
          -	var tid = this.tiddler,
          -		spaceName = tiddlyspace.currentSpace.name,
          -		tidSpace, recipeName, stripped;
          -	try {
          -		recipeName = tid.fields['server.recipe'] ||
          -			tid.fields['server.workspace'];
          -		tidSpace = tiddlyspace.resolveSpaceName(recipeName);
          -		if (tidSpace !== spaceName) {
          -			// external tiddler, so replace dangerous formatters
          -			stripped = stripHTML(tid, this.formatter);
          -		}
          -	} catch(e) {
          -		// do nothing. There's no tiddler, so assume it's safe (?!?!?)
          -	}
          -
          -	_subWikify.apply(this, arguments);
          -
          -	if (stripped) {
          -		// change back to the original function
          -		unstripHTML(stripped, this.formatter);
          -	}
          -};
          -
          -// replace potentially unsafe formatters with versions that strip bad HTML/CSS
          -var stripHTML = function(tid, formatter) {
          -	var popped = {}, _handler;
          -	for (var i = 0; i < formatter.formatters.length; i++) {
          -		var f = formatter.formatters[i];
          -		if (replaceFunctions[f.name]) {
          -			_handler = f.handler;
          -			popped[f.name] = _handler;
          -			f.handler = replaceFunctions[f.name];
          -		}
          -	};
          -
          -	return popped;
          -};
          -
          -// put the original formatters back where they belong
          -var unstripHTML = function(stripped, formatter) {
          -	for (var i = 0; i < formatter.formatters.length; i++) {
          -		var f = formatter.formatters[i];
          -		if (stripped[f.name]) {
          -			f.handler = stripped[f.name];
          -		}
          -	};
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKGmlDQ1BJQ0MgUHJvZmlsZQAAeAHVlmdUFMkWx6t7ciLNkNOQc84gOSfJUVSGAYY4wpAxIbK4AooiIgLKEpao4KoEWQMiigERUEBF3UEWAWVdDIiKyuuBd9w977z99r6826eqfn3r9q3quvXhDwDpIyMpKQEWACCRncrxdbajB4eE0nGTAAIUgAe6wJDBTEmy9fb2AP9oH8aRaMTua/Fy/WPYf58QjIxKYQIAeSPTEZEpzESEzyNsyEzipCI8h/BwRmoSwnA3wjQOskGEB3nMWmcujyPW+f1ajL+vPQAoPAB4MoPBYQFAoiF+ejqTheQhGSKsy46MZSMcibAVM4aBjKR6hDUTE7fxeBhh1Yi/5WH9jRmMiO85GQzWd17/F+RLZGGH2JSkBEbW2sv/sktMSEPOa814p06OYgf4IaMY0qSAA3AEHshDB/rABKmeCQgCTsA7NSoT+W8A7LclZXFiWTGpdFukUlGadFc2U1uTrq+rp8eb/r8x3h1d3+y7e2t3DxLjlf/fvmRtAMwakPr3/uULfw5A510ARPr/8ineAID/AADdTcw0Tvp6PjRvwAAi4Ac0IA5kgAJQBVrIaRoDC2CDnK4b8AL+IARsAUwQAxIBB2SAHWAPyAeF4BA4CipANagDTeA0OAu6wEVwFdwAd8AwGAOTgAtmwCuwCD6AFQiCcBAFokLikCykBGlA+pApZAU5Qh6QLxQChUMsiA2lQTugvVAhVAJVQDVQM/QLdAG6Ct2CRqBH0BQ0D72FPsMomAzTYGlYGdaBTWFb2B32hzfDLDgZzobz4INwOVwLn4I74avwHXgM5sKv4CUUQJFQIig5lBbKFGWP8kKFoqJRHNQuVAGqDFWLakP1oAZQ91Fc1ALqExqLpqLpaC20BdoFHYBmopPRu9BF6Ap0E7oT3Y++j55CL6K/YSgYKYwGxhzjignGsDAZmHxMGaYB04G5jhnDzGA+YLFYEawK1gTrgg3BxmG3Y4uwJ7Dt2F7sCHYau4TD4cRxGjhLnBeOgUvF5eOO407hruBGcTO4j3gSXhavj3fCh+LZ+Fx8Gb4Ffxk/ip/FrxAECEoEc4IXIZKQRSgm1BN6CPcIM4QVoiBRhWhJ9CfGEfcQy4ltxOvEJ8R3JBJJnmRG8iHFknJI5aQzpJukKdInshBZnWxPDiOnkQ+SG8m95EfkdxQKRZliQwmlpFIOUpop1yjPKB/5qHzafK58kXy7+Sr5OvlG+V7zE/iV+G35t/Bn85fxn+O/x78gQBBQFrAXYAjsEqgUuCAwIbAkSBXUE/QSTBQsEmwRvCU4J4QTUhZyFIoUyhOqE7omNE1FURWo9lQmdS+1nnqdOkPD0lRorrQ4WiHtNG2ItigsJGwoHCicKVwpfEmYK4ISURZxFUkQKRY5KzIu8llUWtRWNEp0v2ib6KjospikmI1YlFiBWLvYmNhncbq4o3i8+GHxLvGnEmgJdQkfiQyJkxLXJRYkaZIWkkzJAsmzko+lYCl1KV+p7VJ1UoNSS9Iy0s7SSdLHpa9JL8iIyNjIxMmUylyWmZelylrJxsqWyl6RfUkXptvSE+jl9H76opyUnItcmlyN3JDciryKfIB8rny7/FMFooKpQrRCqUKfwqKirKKn4g7FVsXHSgQlU6UYpWNKA0rLyirKQcr7lLuU51TEVFxVslVaVZ6oUlStVZNVa1UfqGHVTNXi1U6oDavD6kbqMeqV6vc0YA1jjViNExojmhhNM022Zq3mhBZZy1YrXatVa0pbRNtDO1e7S/u1jqJOqM5hnQGdb7pGugm69bqTekJ6bnq5ej16b/XV9Zn6lfoPDCgGTga7DboN3hhqGEYZnjR8aEQ18jTaZ9Rn9NXYxJhj3GY8b6JoEm5SZTJhSjP1Ni0yvWmGMbMz22120eyTubF5qvlZ8z8ttCziLVos5jaobIjaUL9h2lLekmFZY8m1oluFW/1kxbWWs2ZY11o/t1GwibRpsJm1VbONsz1l+9pO145j12G3bG9uv9O+1wHl4OxQ4DDkKOQY4Fjh+MxJ3onl1Oq06GzkvN251wXj4u5y2GXCVdqV6drsuuhm4rbTrd+d7O7nXuH+3EPdg+PR4wl7unke8XyyUWkje2OXF/By9Tri9dRbxTvZ+1cfrI+3T6XPC1893x2+A35Uv61+LX4f/O38i/0nA1QD0gL6AvkDwwKbA5eDHIJKgrjBOsE7g++ESITEhnSH4kIDQxtClzY5bjq6aSbMKCw/bHyzyubMzbe2SGxJ2HJpK/9WxtZz4ZjwoPCW8C8ML0YtYynCNaIqYpFpzzzGfBVpE1kaOR9lGVUSNRttGV0SPceyZB1hzcdYx5TFLMTax1bEvolziauOW473im+MX00ISmhPxCeGJ15gC7Hj2f3bZLZlbhtJ0kjKT+ImmycfTV7kuHMaUqCUzSndqTREDAymqab9kDaVbpVemf4xIzDjXKZgJjtzMEs9a3/WbLZT9s/b0duZ2/t2yO3Ys2Nqp+3Oml3QrohdfbsVduftnslxzmnaQ9wTv+durm5uSe77vUF7e/Kk83Lypn9w/qE1ny+fkz+xz2Jf9Y/oH2N/HNpvsP/4/m8FkQW3C3ULywq/FDGLbh/QO1B+YPVg9MGhYuPik4ewh9iHxg9bH24qESzJLpk+4nmks5ReWlD6/ujWo7fKDMuqjxGPpR3jlnuUdx9XPH7o+JeKmIqxSrvK9iqpqv1VyyciT4yetDnZVi1dXVj9+afYnx7WONd01irXltVh69LrXtQH1g/8bPpzc4NEQ2HD10Z2I7fJt6m/2aS5uUWqpbgVbk1rnT8Vdmr4tMPp7jattpp2kfbCM+BM2pmXv4T/Mn7W/WzfOdNzbeeVzld1UDsKOqHOrM7FrpgubndI98gFtwt9PRY9Hb9q/9p4Ue5i5SXhS8WXiZfzLq9eyb6y1JvUu3CVdXW6b2vf5LXgaw/6ffqHrrtfv3nD6ca1AduBKzctb168ZX7rwm3T2113jO90DhoNdtw1utsxZDzUec/kXvew2XDPyIaRy6PWo1fvO9y/8cD1wZ2xjWMj4wHjDyfCJrgPIx/OPUp49OZx+uOVyZwnmCcFTwWelj2Telb7m9pv7Vxj7qUph6nB537PJ6eZ069+T/n9y0zeC8qLslnZ2eY5/bmL807zwy83vZx5lfRqZSH/D8E/ql6rvj7/p82fg4vBizNvOG9W3xa9E3/X+N7wfd+S99KzD4kfVpYLPop/bPpk+mngc9Dn2ZWML7gv5V/VvvZ8c//2ZDVxdTWJwWGsaQEU0sPR0QC8bQSAEgIAFdGExN51DbkWAa3rXoR5SozXePYfvK4z12aMAajrBcDfBgAPZKzMAUAZYX6k8eSvP7KegcH3hnh4lhJtoL8GEFkCkSa9q6tvVwHAhQPwdWh1daV8dfVrGaJ13gNwZeO6duVFC5xCZDPVUE/Xry/9cA7P83f7FxpgvJtcDRvaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAH+ElEQVRoBdVZa2xcxRWemXv37vq5dvxIbMdvEoNLCJQkJlBofkRR0poFq7hSBYlCBeIVojZ2ALWoriWo1OAEVaEhpKJINJUqWQ3CDgKqBKlNKdhJFCck69he4ziO4/gRr3dt7+69e+9MzxjZLLuz9u7m7g9Gsjz3zMyZ75s558yZWcwYQ9/nQr7P4Dl22WwC+9o77pMwrkMMlRGMixnCpQizPIywByE2DDs+zCgeoIS2+c76P2tq2qTfCgZshgm1fPC/fCzJOwkhv2SIVRGCDauisBSrVVIUC7ZYLEjXdaQFg0jTdMPn9yODUuCJJxmlrRozWl5xbHQlQuSWCRxo66xHEvkLYizTnpnBVuTmkLxlWUiSpKh4KKXI7fGisZtuNOF2AxemM8p+N3POdyDeHUmYQPPfOzIz7PggQnhHZnq6UVVRKqWm2KKCjtbAd8U1OMTGb7ox9DlPg8EtjXX3j0XrHy5PiMDugx9by8tz/o0QWV+6soCUFK5AYA7huuP6nnBPocuuAb4b5w335EON27fMxqIgoShUWp7zLjjnhupVFaS0qGBR8NzHVE0DC1s8XOdmZyHQx+3ubpyV3drc3BwTtrij0IH2jkaMyeMVxUUoF2xdVILgsAND19GU16sHAhoBxyYQhajNZqXgH3JJYQH4SCS+ZVl2tKq8mPQOXN2Wds/Wn4Puf4j0h8riMqE/tp6wW1LsQ7BaGT9YXRmqZ6F+c8qDLvdfgaBjUAB+DMJpL4TRIUbRSrCytUDeoSgyrb6tQrZnpC+Mm6/wnTr7ldOYDajde366bs28PNr/uHZATrE/B4rSS1cWCvX5Ayrq7vvaMBjtQkH2eEPdht7wjvvaOtdhLXj0Ul9/5bo11bICITa0cF8qKSqQul0Dd77RdnrrXsf6T0Lbw+uR+xjeI+Qb3PTXObDN6akpIdJvq7DyAJ7N+H36o3sE4HnPlxwbzugqfTioG2rfwFWhY+Qty+Z+RTFmP/pWu7gWM4E/HDtVACrywU6F4YbHde/MjIQMY89v6zcOi6f7Rrr3ZzV9cIAd4eYGphbRle+CzapQmGhVRGOYIGYCsqzczsdGi/XXR8cZTDwxrV49GjaH8JNhdAbsHQdUVdiearPJkIpUCRtDhDETIJjk8XEWOdJtAqqGbkIchyD+TlN9vRaiP3qVsrm5iSAa8UGUh12MA9EVfNMSMwGm0XN8CD9wwsvw6BgEG0bVgPF2eFu0b8iXfmGxyDrkS8IuAUiaKKNDwsYQYcwEuN0CyqOD10bo8I0xMHUDwamJRsYm0LWRUR793lvK9ufn3X+88ylY3p+UFKyQub2HF76jfn9AgvnmFi28PfQ70h5CW8PqwYBnF5wDaZC71PVD/gIgAPecKXw2HDB2h3UXfrZ8+OVmSZbfyrZn0qIV+cIFHBkbh7GYGUH6vlBJiDCug2x+3BvtX/yYMKkG5rCBKXcuFavnx81lroQcTUuxSWurV0sif/LOzKKuSz2wt/Sfe2o38NN40ZIQgUU1RmlsOX56N0H4zcyMNLRmdSWRBcGAh9QzF526qmp+nWq3v+R44HoUdQviuExoYVSclf3tna9DSPxN7jI7u6OyHMPFJ0IDd6Ker68wAE8YNXbGAp4rSTqB/e2n/wyO+nxBfi5aVVYC1Uin5Rccp2uAQSjGFKFfNTruOxbBMIogqQQOtJ9+E/A+X1ywHFWUrBRC4GZzsa+ferwzEPzRC42O9TGHYq4waT7QcrzjSYLIX4uW56PbyoqF4DUtiC709BmzPj9kFnR7o6NmyfQ5XFFSCOxr+7xQJooL0gHl3jXVEhxa4fMiXyCALnT3GkBC1RGt21tb86+ITjEIkmJChFhehbltVZVl4LAC8P4A6uru4XeGKarTrXsfrTkbA1Zhl8hwIOwWu/CZI0cskDftWJ6bgzPT0yIGcrPpcvYYelB3UxZ8sOEWwHPlphOoKrznIbgAp+XlZEeA54KeK4MUrpwaNeimhtqNl4Wd4hCaTgDieTWfX7T607M+NOn2wJzs1YZHapxx4Iza1XwCc8+IiMmCh62JSTcAgRTH7303KqI4G0wnACcRPEBg4VXRMzML5xTqerl+M7yTmlNMJwDwe8GMiA8iTWjh6beXH1YMnQiV32rddAJMNz6FHfD0DQ5R/mzIC08VIAXnlx5sGDjuw2oxkkk5yPZ/2PEYlsnfMMOKYrVQCJmYv0bD8v8eUuTmxQDF25YUAhxES3tnOWH4CUZYFTxqjWLCPmiorflvvACX6p80AktNbFa76T5gFrBY9SQlF+KTXz58shZesLdD/n8XY9QFT0AftY6dOtLU1MRDqWklKSbkPHziIKTSu2SrRVfSbLIe0AzNp/Kn8/8MBNUt217cJn7NSoCW6TvgPHTyMbgy7soszEFZJfnzzybS7LgHTbiGHyyTFR6FXkkAq3CI6T5AJPy0kmo1ADx/oF2YNC3PjuCPXymfXRCaUDGdAOQRP1QyUvkvkBHwrBmpXGa/cPBj8f0yYsTSAtMJwJTXDE0X5kIG3AWgBOXJmZh/xFuKgukE4AeCT/zuaaRO+78zN5BC0zfcOghPVTfF+AD8HQ3iD9MJ6D79NTCfwVHnFWNqaBz5gIzn+gQaOd9vUB0eC2nwGTGUxKRJCaMX/3RyuaTgw+AGDoDFF4n/dvC5StWn7npua09iUMWjkkJgfirnodZ0gu1Vs17iuvdl8+4A8/r5/6QSCJ0oWfX/A3UKXhQwWVptAAAAAElFTkSuQmCC
          -
          -
          -
          <!--{{{-->
          -<link rel="shortcut icon" href="/recipes/interview_public/tiddlers/favicon.ico" />
          -<link href="/bags/interview_public/tiddlers.atom" rel="alternate"
          -	type="application/atom+xml" title="interview's public feed" />
          -<!--}}}-->
          -
          -
          -
          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
          -
          -
          -
          /***
          -|''Name''|BinaryTiddlersPlugin|
          -|''Description''|renders base64-encoded binary tiddlers as images or links|
          -|''Author''|FND|
          -|''Version''|0.3.2|
          -|''Status''|@@beta@@|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/BinaryTiddlersPlugin.js|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.5|
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -"use strict";
          -
          -var ctfield = "server.content-type";
          -
          -var plugin = config.extensions.BinaryTiddlersPlugin = {
          -	isWikiText: function(tiddler) {
          -		var ctype = tiddler.fields[ctfield];
          -		if(ctype) {
          -			if (ctype === 'text/x-tiddlywiki') {
          -				return true;
          -			}
          -			return !this.isBinary(tiddler) && !this.isTextual(ctype);
          -		} else {
          -			return true;
          -		}
          -	},
          -	// NB: pseudo-binaries are considered non-binary here
          -	isBinary: function(tiddler) {
          -		var ctype = tiddler.fields[ctfield];
          -		return ctype ? !this.isTextual(ctype) : false;
          -	},
          -	isTextual: function(ctype) {
          -		return ctype.indexOf("text/") === 0
          -			|| this.endsWith(ctype, "+xml")
          -			|| ctype === 'application/json'
          -			|| ctype === 'application/javascript';
          -	},
          -	endsWith: function(str, suffix) {
          -		return str.length >= suffix.length &&
          -			str.substr(str.length - suffix.length) === suffix;
          -	},
          -	isLink: function(tiddler) {
          -		return this.isBinary(tiddler) && tiddler.text.indexOf("<html>") !== -1;
          -	}
          -};
          -
          -// Disable edit for linked tiddlers (for now)
          -// This will be changed to a GET then PUT
          -config.commands.editTiddler.isEnabled = function(tiddler) {
          -    var existingTest = config.commands.editTiddler.isEnabled;
          -    if (existingTest) {
          -        return existingTest && !plugin.isLink(tiddler);
          -    } else {
          -        return !plugin.isLink(tiddler);
          -    }
          -};
          -
          -// hijack text viewer to add special handling for binary tiddlers
          -var _view = config.macros.view.views.wikified;
          -config.macros.view.views.wikified = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -	var ctype = tiddler.fields["server.content-type"];
          -	if(params[0] === "text" && ctype && ctype !== 'text/x-tiddlywiki' &&
          -			!tiddler.tags.contains("systemConfig") && !plugin.isLink(tiddler)) {
          -		var el;
          -		if(plugin.isBinary(tiddler)) {
          -			var uri = "data:%0;base64,%1".format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
          -			if(ctype.indexOf("image/") === 0) {
          -				el = $("<img />").attr("alt", tiddler.title).attr("src", uri);
          -			} else {
          -				el = $("<a />").attr("href", uri).text(tiddler.title);
          -			}
          -		} else {
          -			el = $("<pre />").text(tiddler.text);
          -		}
          -		el.appendTo(place);
          -	} else {
          -		_view.apply(this, arguments);
          -	}
          -};
          -
          -// hijack edit macro to disable editing of binary tiddlers' body
          -var _editHandler = config.macros.edit.handler;
          -config.macros.edit.handler = function(place, macroName, params, wikifier,
          -		paramString, tiddler) {
          -	if(params[0] === "text" && plugin.isBinary(tiddler)) {
          -		return false;
          -	} else {
          -		_editHandler.apply(this, arguments);
          -	}
          -};
          -
          -// hijack autoLinkWikiWords to ignore binary tiddlers
          -var _autoLink = Tiddler.prototype.autoLinkWikiWords;
          -Tiddler.prototype.autoLinkWikiWords = function() {
          -	return plugin.isWikiText(this) ? _autoLink.apply(this, arguments) : false;
          -};
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          /***
          -|''Name''|ImageMacroPlugin|
          -|''Version''|0.9.4|
          -|''Description''|Allows the rendering of svg images in a TiddlyWiki|
          -|''Author''|Osmosoft|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''Notes''|Currently only works in modern browsers (not IE)|
          -|''Requires''|BinaryTiddlersPlugin|
          -!Usage
          -{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
          -!!Parameters
          -width/height: specify width/height parameters
          -link: make the image link to a given location
          -tiddlyLink: link to a tiddler
          -
          -!Notes
          -Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
          -eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
          -{{{<<view fieldname image>>}}}
          -will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
          -{{{<<image SiteIcon>>}}}
          -will create an image tag where the tiddler has content type beginning image and not ending +xml
          -will attempt to create svg object in other scenarios
          -{{{<<image /photos/x.jpg>>}}}
          -will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in 
          -which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
          -tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var macro = config.macros.image = {
          -	shim: "/bags/common/tiddlers/shim",
          -	ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
          -	svgns: "http://www.w3.org/2000/svg",
          -	xlinkns: "http://www.w3.org/1999/xlink", 
          -	svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
          -	_fixPrefix: 1,
          -	_external_cache: {},
          -	_image_tag_cache: {},
          -	_image_dimensions: {},
          -	locale: {
          -		badImage: "This image cannot be displayed."
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler){
          -		var imageSource = params[0];
          -		// collect named arguments
          -		var args = macro.getArguments(paramString, params);
          -		this.renderImage(place, imageSource, args);
          -	},
          -	init: function() {
          -		var startupImages = store.getTaggedTiddlers("systemImage");
          -		var place = $("<div />").attr("id", "systemImageArea").appendTo("body").hide()[0];
          -		for(var i = 0; i < startupImages.length; i++) {
          -			var image = startupImages[i];
          -			macro.renderImage(place, image.title, { idPrefix: "" });
          -		}
          -		var data = new Image();
          -		data.onload = function() {
          -			// note ie 8 only supports data uris up to 32k so cannot be relied on
          -			macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
          -			macro.supportsDataUris = macro.ieVersion && macro.ieVersion < 9 ? false : macro.supportsDataUris;
          -		};
          -		data.onerror = data.onload;
          -		data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
          -	},
          -	refreshImage: function(src) {
          -		var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
          -		if(macro._image_dimensions[src]) {
          -			macro._image_dimensions[src] = false;
          -		}
          -		for(var i = 0; i < elements.length; i++) {
          -			var el = $(elements[i]);
          -			var newSrc = "%0?nocache=%1".format(src, Math.random());
          -			el.attr("src", newSrc); // force reload
          -		}
          -	},
          -	isBinaryImageType: function(contentType) {
          -		return (contentType && contentType.indexOf("image") === 0 &&
          -			contentType.indexOf("+xml") != contentType.length - 4) ? true : false;
          -	},
          -	isImageTiddler: function(tiddler) {
          -		return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
          -	},
          -	isSVGTiddler: function(tiddler) {
          -		var type = tiddler ? tiddler.fields['server.content-type'] : false;
          -		return type == "image/svg+xml";
          -	},
          -	isBinaryImageTiddler: function(tiddler) {
          -		return macro.isBinaryImageType(tiddler.fields['server.content-type']);
          -	},
          -	renderImage: function(place, imageSource, options) {
          -		var imageTiddler = store.getTiddler(imageSource);
          -		var container;
          -		var classes = ["image"];
          -		if(options.link) {
          -			classes = classes.concat(["imageLink", "externalLink"]);
          -			container = $("<a />").attr("href", options.link).appendTo(place)[0];
          -		} else if(options.tiddlyLink) {
          -			classes.push("imageLink");
          -			container = createTiddlyLink(place, options.tiddlyLink, false);
          -		} else {
          -			container = $("<span />").appendTo(place)[0];
          -		}
          -		$(container).addClass(classes.join(" "));
          -
          -		options = options ? options : {};
          -		if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
          -			return macro._renderBinaryImageTiddler(container, imageTiddler, options);
          -		} else if(imageTiddler){ // handle the case where we have a tiddler
          -			return macro._renderSVGTiddler(container, imageTiddler, options);
          -		} else { // we have a string representing a url
          -			return macro._renderBinaryImageUrl(container, imageSource, options);
          -		}
          -	},
          -	_renderAlternateText: function(container, options) {
          -		var img;
          -		var src = options.src || "";
          -		if(options.width && options.height) {
          -			img = $("<img />").attr("src", src).addClass("svgImageText").attr("width", options.width).
          -				attr("height", options.height).appendTo(container);
          -		}
          -		var alt = options.alt;
          -		if(img && alt) {
          -			img.attr("alt", alt).attr("title", alt);
          -		} else if(alt) {
          -			$(container).addClass("svgImageText").text(alt);
          -		}
          -		macro._image_tag_cache[src] = img;
          -	},
          -	_renderSVGTiddler: function(place, tiddler, options) {
          -		if(!options) {
          -			options = {};
          -		}
          -		merge(options, { tiddler: tiddler, fix: true});
          -
          -		if(macro.svgAvailable) {
          -			this._importSVG(place, options); // display the svg
          -		} else if(options.altImage) {
          -			var image = options.altImage;
          -			delete options.altImage;
          -			this._renderBinaryImageUrl(place, image, options);
          -		} else {
          -			this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
          -		}
          -	},
          -	_renderBinaryImageTiddler: function(place, tiddler, options) {
          -		var resourceURI;
          -		var fields = tiddler.fields;
          -		if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource
          -			resourceURI = "%0/%1/tiddlers/%2".format(config.defaultCustomFields["server.host"],
          -				fields["server.workspace"], encodeURI(fields["server.title"]));
          -		} else { // guess the url for the resource
          -			resourceURI = tiddler.title;
          -		}
          -		var ctype = fields["server.content-type"] || tiddler.type;
          -		var text = tiddler.text;
          -		if(macro.supportsDataUris && ctype && text.indexOf("<html") == -1) {
          -			var uri = "data:%0;base64,%1".format(ctype, text);
          -			options.src = resourceURI;
          -			return macro._renderBinaryImageUrl(place, uri, options);
          -		} else if(options.src) {
          -			return macro._renderBinaryImageUrl(place, options.src, options);
          -		} else {
          -			return macro._renderBinaryImageUrl(place, resourceURI, options);
          -		}
          -	},
          -	_renderImageTag: function(container, src, width, height, options) {
          -		var img;
          -		img = $("<img />").appendTo(container);
          -		if(height) {
          -			img.attr("height", height);
          -		}
          -		if(width) {
          -			img.attr("width", width);
          -		}
          -		if(macro.ieVersion && macro.ieVersion < 7 && macro.shim && options.ie6png) {
          -			$(img).css({width: userW, height: userH,
          -					filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')".format(src)
          -				}).attr("src", macro.shim);
          -		} else {
          -			img.attr("src", src);
          -		}
          -		if(!macro._image_tag_cache[options.srcUrl]) {
          -			macro._image_tag_cache[options.srcUrl] = [];
          -		}
          -		img = $(img).addClass(options.imageClass)[0];
          -		macro._image_tag_cache[options.srcUrl].push(img);
          -		return img;
          -	},
          -	_getDimensions: function(realDimensions, reqDimensions, preserve) {
          -		var w = realDimensions.width;
          -		var h = realDimensions.height;
          -		var reqh = reqDimensions.height;
          -		var reqw = reqDimensions.width;
          -		var finalw = w, finalh = h;
          -		var ratiow = reqw / w, ratioh = reqh / h;
          -		var scaledw = ratioh * w;
          -		var scaledh = ratiow * h;
          -		if(!reqw && reqh) {
          -			finalw = scaledw;
          -			finalh = reqh;
          -		} else if(reqw && !reqh) {
          -			finalw = reqw;
          -			finalh = scaledh;
          -		} else if(reqh && reqw) {
          -			var preserveWidth = w > h ? true : false;
          -			if(preserve) {
          -				if(preserveWidth && scaledh < reqh) {
          -					finalh = scaledh;
          -					finalw = reqw;
          -				} else {
          -					finalh = reqh;
          -					finalw = scaledw;
          -				}
          -			} else {
          -				finalw = reqw;
          -				finalh = reqh;
          -			}
          -		}
          -		return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
          -	},
          -	_renderBinaryImageUrl: function(container, src, options) {
          -		var srcUrl = options.src ? options.src : src;
          -		srcUrl = srcUrl.indexOf("/") === -1 ? "/%0".format(srcUrl) : srcUrl; // for IE. 
          -		var image_dimensions = macro._image_dimensions[srcUrl];
          -		var image = new Image(); // due to weird scaling issues where you use just a width or just a height
          -		var createImageTag = function(dimensions, error) {
          -			if(error) {
          -				var altImage = options.altImage;
          -				if(altImage) {
          -					delete options.altImage;
          -					macro._renderBinaryImageUrl(container, altImage, options);
          -				} else {
          -					options.src = src;
          -					macro._renderAlternateText(container, options);
          -				}
          -			} else {
          -				var dim = macro._getDimensions(dimensions, { 
          -					width: options.width, height: options.height }, options.preserveAspectRatio);
          -				options.srcUrl = srcUrl;
          -				macro._renderImageTag(container, src, dim.width, dim.height, options);
          -			}
          -		};
          -
          -		if(!image_dimensions) {
          -			image.onload = function() {
          -				var dimensions = { width: image.width, height: image.height};
          -				macro._image_dimensions[srcUrl] = dimensions;
          -				createImageTag(dimensions);
          -			};
          -			image.onerror = function() {
          -				createImageTag(null, true);
          -			};
          -			image.src = src;
          -		} else {
          -			createImageTag(image_dimensions);
          -		}
          -	},
          -	_generateIdPrefix: function(){
          -		return "twsvgfix_" + (this._fixPrefix++).toString() + "_";
          -	},
          -	_fixSVG: function(childNodes, idPrefix) {
          -		var urlPattern = /url\(\#([^\)]*)\)*/ig;
          -		var fixes = [
          -		{ attr: "id", pattern: /^(.*)$/ig },
          -		{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
          -		];
          -		var url_fixes = ["filter", "fill", "mask", "stroke", "style"];
          -		for(var i = 0; i < url_fixes.length; i++) {
          -			fixes.push({ attr: url_fixes[i], pattern: urlPattern });
          -		}
          -		for(var t = 0; t < childNodes.length; t++) {
          -			var node = childNodes[t];
          -			for(var a = 0; a < fixes.length; a++) {
          -				var fix = fixes[a];
          -				var attr = fix.attr;
          -				var ns = fix.namespace || "";
          -				if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
          -					var v = node.getAttributeNS(ns, attr);
          -					fix.pattern.lastIndex = 0;
          -					var match = fix.pattern.exec(v);
          -					if(match) {
          -						// Make sure replacement string doesn't contain any single dollar signs
          -						var toReplace = match[1];
          -						if(toReplace.indexOf(idPrefix) !== 0 && toReplace.indexOf("twglobal_") !== 0) {
          -							var replacement = (idPrefix + toReplace).replace("$", "$$$$"); 
          -							v = v.replace(match[1], replacement);
          -						}
          -						node.setAttributeNS(ns, attr,v);
          -					}
          -				}
          -			}
          -			var children = node.childNodes;
          -			if(children.length > 0) {
          -				this._fixSVG(children, idPrefix);
          -			}
          -		}
          -	},
          -	_importSVG: function(place, options){
          -		options = options ? options : {};
          -		var svgDoc, tiddlerText = options.tiddler.text;
          -		if (window.DOMParser) {
          -			svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
          -			var idPrefix = options.idPrefix || this._generateIdPrefix();
          -			this._fixSVG([svgDoc], idPrefix);
          -			var el = document.importNode(svgDoc, true);
          -			var svgHolder = document.createElementNS(macro.svgns,"svg");
          -			var width = options.width;
          -			var height = options.height;
          -			if(width || height) {
          -				if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
          -					var viewBox = el.getAttribute("viewBox");
          -					var topLeft = "0 0";
          -					if(viewBox) {
          -						topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
          -					}
          -					svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format(width, height));
          -				} else {
          -					if(!width) {
          -						width = el.getAttribute("width");
          -					}
          -					if(!height) {
          -						height = el.getAttribute("height");
          -					}
          -				}
          -				svgHolder.setAttribute("width", width);
          -				svgHolder.setAttribute("height", height);
          -
          -				el.setAttribute("width", "100%");
          -				el.setAttribute("height", "100%");
          -				svgHolder.setAttribute("class", "svgImage svgIcon %0".format(options.imageClass || ""));
          -				svgHolder.appendChild(el);
          -				place.appendChild(svgHolder);
          -			}
          -			else {
          -				var existing = el.className ? el.className.baseVal : "";
          -				el.setAttribute("class","svgImage %0".format(existing));
          -				place.appendChild(el);
          -			}
          -			// if a tiddler attribute is set this is read as a link
          -			$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
          -				var tiddler = $(ev.target).attr("tiddlyLink");
          -				if(tiddler) {
          -					story.displayTiddler(ev.target, tiddler);
          -				}
          -			});
          -		}
          -	},
          -	getArguments: function(paramString, params) {
          -		var args = paramString.parseParams("name", null, true, false, true)[0];
          -		var options = {};
          -		for(var id in args) {
          -			if(true) {
          -				var p = args[id];
          -				if(id == "def") {
          -					options[id] = p;
          -				} else {
          -					options[id] = p[0];
          -				}
          -			}
          -		}
          -		var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
          -		var height = isNaN(params[2]) ? false : parseInt(params[2], 10);
          -
          -		options.width = macro.lookupArgument(options, "width", width);
          -		options.height = macro.lookupArgument(options, "height", height);
          -		options.preserveAspectRatio = args.preserveAspectRatio && 
          -			args.preserveAspectRatio[0] == "yes" ? true : false;
          -		options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
          -		options.link = macro.lookupArgument(options, "link", false);
          -		return options;
          -	},
          -	lookupArgument: function(args, id, ifEmpty) {
          -		return args[id] ? args[id] : ifEmpty;
          -	}
          -};
          -
          -// update views
          -var _oldwikifiedview = config.macros.view.views.wikified;
          -// update wikifier to check tiddler type before rendering
          -merge(config.macros.view.views, {
          -	wikified: function(value, place, params, wikifier, paramString, tiddler) {
          -		if(macro.isImageTiddler(tiddler) && params[0] == "text") {
          -			var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
          -			macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
          -		} else {
          -			_oldwikifiedview.apply(this, arguments);
          -		}
          -	},
          -	image: function(value, place, params, wikifier, paramString, tiddler) {
          -		// a field can point to another tiddler whereas text is the current tiddler.
          -		var title = params[0] == "text" ? tiddler.title : value;
          -		var args = macro.getArguments(paramString, params);
          -		macro.renderImage(place, title, args);
          -	}
          -});
          -config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
          -	".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
          -	"span.svgImageText { display: inline-block; overflow: hidden; }"
          -].join("");
          -store.addNotification("StyleSheetImageMacro", refreshStyles);
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /*{{{*/
          -Background: #e1e5f4
          -Foreground: #0a0f1d
          -PrimaryPale: #7d8fcf
          -PrimaryLight: #445db9
          -PrimaryMid: #2e407f
          -PrimaryDark: #04050b
          -SecondaryPale: #aecf7d
          -SecondaryLight: #8ab944
          -SecondaryMid: #5f7f2e
          -SecondaryDark: #080b04
          -TertiaryPale: #cf8a7d
          -TertiaryLight: #b95744
          -TertiaryMid: #7f3c2e
          -TertiaryDark: #0b0504
          -Error: #f88
          -ColorPaletteParameters: HSL([227|37], [0.46274978783912957],[0.03051278553903103|0.652059527579695])
          -/*}}}*/
          -
          -
          -
          Unless you're delighted with the default theme you can make some quick changes by generating a new random color palette, hit this button to cycle through some alternatives.
          -
          -<<RandomColorPaletteButton saturation_pale:0.67 saturation_light:0.53
          -saturation_mid:0.43 saturation_dark:0.06 pale:0.99 light:0.85 mid:0.5 dark:0.31>>
          -
          -You can also change the look and feel completely by installing a new theme. To do this, find one you like in the @themes space, note down the name, and include it in this space by going to the space menu. You can reach the space menu by clicking on the blue and pink circle at the top-right of the page and chooshing "THIS SPACE". Here are a few to check out:
          -* @pip
          -* @caspian-ii
          -* @basalt
          -* @simplicity
          -* @cheesecake
          -* @jelly-doughnut
          -
          -(//Note that if you are using a custom TiddlySpace install, these themes may not be present.//)
          -
          -
          -
          <?xml version="1.0" encoding="UTF-8" standalone="no"?>
          -<!-- Created with Inkscape (http://www.inkscape.org/) -->
          -
          -<svg
          -   xmlns:dc="http://purl.org/dc/elements/1.1/"
          -   xmlns:cc="http://creativecommons.org/ns#"
          -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          -   xmlns:svg="http://www.w3.org/2000/svg"
          -   xmlns="http://www.w3.org/2000/svg"
          -   xmlns:xlink="http://www.w3.org/1999/xlink"
          -   version="1.1"
          -   width="14pt"
          -   height="14pt"
          -   viewBox="918 510 14 14"
          -   id="svg3070">
          -  <metadata
          -     id="metadata3089">
          -    <rdf:RDF>
          -      <cc:Work
          -         rdf:about="">
          -        <dc:format>image/svg+xml</dc:format>
          -        <dc:type
          -           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
          -        <dc:title></dc:title>
          -      </cc:Work>
          -    </rdf:RDF>
          -  </metadata>
          -  <defs
          -     id="defs3072">
          -    <radialGradient
          -       cx="0"
          -       cy="0"
          -       r="1"
          -       id="Gradient"
          -       gradientUnits="userSpaceOnUse">
          -      <stop
          -         id="stop3075"
          -         style="stop-color:#ffffff;stop-opacity:1"
          -         offset="0" />
          -      <stop
          -         id="stop3077"
          -         style="stop-color:#2b2b2b;stop-opacity:1"
          -         offset="1" />
          -    </radialGradient>
          -    <radialGradient
          -       id="Obj_Gradient"
          -       xlink:href="#Gradient"
          -       gradientTransform="matrix(11.473944,0,0,11.473944,922.3752,513.7837)" />
          -  </defs>
          -  <g
          -     id="g3080"
          -     style="fill:none;stroke:none">
          -    <g
          -       id="g3082">
          -      <path
          -         d="m 929.6952,512.9018 c -2.5384,-2.53843 -6.654,-2.53843 -9.1924,0 -2.5384,2.5384 -2.5384,6.654 0,9.19238 2.5384,2.53839 6.654,2.53839 9.1924,0 2.5384,-2.53838 2.5384,-6.65398 0,-9.19238 m -4.5962,2.8407 2.07733,-2.07734 1.75547,1.75549 -2.0773,2.07735 2.0773,2.07732 -1.75547,1.75548 -2.07733,-2.07732 -2.07733,2.07732 -1.75547,-1.75548 2.0773,-2.07732 -2.0773,-2.07735 1.75547,-1.75549 z"
          -         id="path3084"
          -         style="fill:url(#Obj_Gradient)" />
          -      <path
          -         d="m 927.61447,515.38354 a 4.51205,4.2590378 0 1 1 -9.0241,0 4.51205,4.2590378 0 1 1 9.0241,0 z"
          -         transform="matrix(1.0218069,0,0,1.0462046,-18.063694,-21.648443)"
          -         id="path2394"
          -         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
          -    </g>
          -  </g>
          -</svg>
          -
          -
          -
          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
          -
          -
          -
          <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="100%" width="100%" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs><linearGradient id="lG3826" x1="7.0996" gradientUnits="userSpaceOnUse" y1="18.829" gradientTransform="matrix(1.5858347,0,0,1.8078238,1098.1851,351.13716)" x2="1.5461" y2="-0.95166"><stop stop-color="#000" offset="0"/><stop stop-color="#9c9b99" offset="1"/></linearGradient><linearGradient id="lG3828" y2="372.44" gradientUnits="userSpaceOnUse" y1="375.7" x2="1111.7" x1="1097.7"><stop style="stop-color:#ac9393;" offset="0"/><stop style="stop-color:#c8b7b7;" offset="1"/></linearGradient></defs><g transform="translate(-1080.9375,-357.3329)"><path style="stroke-width:0;stroke-miterlimit:4;fill:url(#lG3826);" d="m1080.9,357.32,39.996-0.0426-0.01,40.008c-15.507-25.519-15.36-25.95-39.988-39.965z"/><path style="stroke-dashoffset:0;stroke:#7aa3be;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.49999988;fill:#c1e6fd;" d="m1091.9,363.55c6.5716-6.4925,16.576-7.3925,23.147-0.90003,6.5717,6.4925,6.5717,17.019,0,23.511-4.4424-8.6113-12.288-15.713-23.147-22.611z"/><path style="stroke-dashoffset:0;stroke:#ce81b0;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.5;fill:#f4c4e2;" d="m1110.2,367.62c3.217,3.2168,3.217,8.4323,0,11.649-3.8194-4.2357-8.3307-8.1824-11.649-11.649,3.217-3.2168,8.4325-3.2168,11.649-0.00002z"/><path style="stroke-linejoin:bevel;stroke:#000000;stroke-linecap:round;stroke-dasharray:none;stroke-miterlimit:4;stroke-width:0.80000001;fill:url(#lG3828);" d="m1081,357.34c18.79,6.4752,32.53,16.56,39.894,39.892-11.19-17.028-14.878-19.19-27.352-14.96,6.2984-12.098,3.9371-13.19-12.542-24.932z"/></g></svg>
          -
          -
          -
          
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="506 234 68 36" width="30" height="30"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-09-16 14:51Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><rect width="1118" height="783"/><g><path d="M 538.68195 244.31807 C 540.43927 246.07547 540.43927 248.9247 538.68195 250.68204 C 536.92456 252.4394 534.07532 252.4394 532.318 250.68204 C 530.5606 248.9247 530.5606 246.07547 532.318 244.31807 C 534.07532 242.56075 536.92456 242.56075 538.68195 244.31807 M 511.12607 257.99356 C 511.26108 258.13019 511.39728 258.26608 511.53473 258.40121 C 527.2556 273.86606 552.74414 273.86606 568.46515 258.40121 C 568.60248 258.26617 568.73853 258.13037 568.87354 257.9938 C 568.8736 257.99374 568.8736 257.99371 568.8736 257.99362 C 568.87366 257.99371 568.87366 257.9938 568.87372 257.9939 C 570.72504 256.12051 572.35046 254.11153 573.74994 252 C 573.74994 251.99997 573.74994 251.99994 573.74994 251.99992 C 572.35046 249.8884 570.72504 247.87938 568.87372 246.00606 C 568.87366 246.00613 568.87366 246.00621 568.8736 246.00627 C 568.73865 245.86966 568.60254 245.73383 568.46515 245.5987 C 552.74414 230.13387 527.2556 230.13387 511.53473 245.5987 C 511.39728 245.73383 511.26108 245.86974 511.12613 246.00635 C 511.126 246.00624 511.126 246.00616 511.12595 246.00606 C 509.2748 247.87938 507.64954 249.88837 506.24994 251.9998 L 506.24994 251.99983 C 506.24994 251.9999 506.25 251.99992 506.25 251.99997 C 506.25 252 506.24994 252.00005 506.24994 252.00009 L 506.24994 252.00012 C 507.64954 254.11157 509.2748 256.12051 511.12595 257.9939 C 511.126 257.99377 511.126 257.99365 511.12607 257.99359 Z M 515.44916 252 C 515.8548 251.55469 516.27502 251.11778 516.71014 250.68985 C 522.16632 245.32257 529.06055 242.23206 536.17273 241.41824 C 534.6662 241.96199 533.2525 242.83762 532.04498 244.04512 C 527.65155 248.43852 527.65155 255.56163 532.04498 259.95502 C 533.2522 261.16226 534.6656 262.03778 536.17175 262.58154 C 529.05988 261.76761 522.16608 258.6771 516.71014 253.31009 C 516.2751 252.88219 515.85486 252.44528 515.44922 252 Z M 564.55054 251.99995 C 564.14502 252.44525 563.7248 252.88217 563.28973 253.31009 C 557.83368 258.67712 550.93988 261.76764 543.828 262.58157 C 545.33423 262.03781 546.74756 261.1623 547.9549 259.95502 C 552.34833 255.56163 552.34833 248.43852 547.9549 244.04512 C 546.74744 242.83765 545.33374 241.96202 543.82715 241.41824 C 550.9394 242.23206 557.83356 245.3226 563.28973 250.68985 C 563.7248 251.11775 564.14502 251.55467 564.55054 251.99995 Z M 568.8736 257.99362 C 570.7249 256.12033 572.35028 254.11139 573.74988 252.00002" fill="black" class="glyph"/></g></g></svg>
          -
          -
          -
          There are a lot of interesting people using ~TiddlySpace that you might like to keep track of and interact with. There are a number of ways of doing this.
          -
          -If you see a number in the speech bubble in one of your tiddlers, it means that someone is writing about the same thing as you. You can find out what they're saying by clicking on it. Likewise, if you see something interesting in someone else's space, you can respond to it and write up your own thoughts on the subject by clicking "Reply to this tiddler".
          -
          -Additionally, if you find anyone interesting, or you find an interesting looking space and you'd like to know when it's changed, you can "follow" that space. To do this, simply create a tiddler with the title: {{{@space-name}}} and tag it {{{follow}}}. If you want, you can store some notes about that space in the body of the tiddler.
          -
          -If you then want to know what happening, simply [[include|How do I include/exclude spaces?]]@docs the @tivity space and then visit your activity stream at [[/activity|/activity]], or just visit the @tapas space directly.
          -
          -!Not sure who to follow?
          -Here's a few suggestions:
          -* @fnd
          -* @cdent
          -* @pmario
          -* @bengillies
          -* @dickon
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceFollowingPlugin|
          -|''Version''|0.7.1|
          -|''Description''|Provides a following macro|
          -|''Author''|Jon Robson|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceTiddlerIconsPlugin ErrorHandler|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -!Usage
          -Tag a tiddler with "follow" to express a list of followers.
          -Using the {{{<<followTiddlers X>>}}}
          -will reveal the number of tiddlers with name X in the set of spaces the *current* user viewing your space follows.
          -{{{<<following jon>>}}} will list all the users following Jon.
          -{{{<<followers jon>>}}} will list all the followers of jon.
          -{{{<linkedTiddlers>>}}} will list all tiddlers across TiddlySpace linked to the current tiddler
          -{{{<linkedTiddlers follow:yes>>}}} will list all tiddlers across TiddlySpace that come from your list of followers
          -adds spaceLink view type {{{<<view server.bag spaceLink>>}}} creates a link to the space described in server.bag
          -{{{<<view server.bag spaceLink title>>}}} makes a link to the tiddler with title expressed in the field title in space server.bag
          -If no name is given eg. {{{<<following>>}}} or {{{<<follow>>}}} it will default the current user.
          -!StyleSheet
          -.followTiddlersList li {
          -	list-style:none;
          -}
          -
          -.followButton {
          -	width: 2em;
          -}
          -
          -.followTiddlersList li .siteIcon {
          -	height:48px;
          -	width: 48px;
          -}
          -
          -#sidebarTabs .followers li a,
          -.followers .siteIcon,
          -.followers .siteIcon div {
          -	display: inline;
          -}
          -
          -.followTiddlersList li .externalImage, .followTiddlersList li .image {
          -	display: inline;
          -}
          -
          -.scanResults li {
          -	list-style: none;
          -}
          -!Code
          -***/
          -//{{{
          -(function($) {
          -var LIMIT_FOLLOWING = 100;
          -
          -var tweb = config.extensions.tiddlyweb;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var currentSpace = tiddlyspace.currentSpace.name;
          -
          -var shadows = config.shadowTiddlers;
          -config.annotations.ScanTemplate = "This tiddler is the default template used in the display of tiddlers founding using the tsScan macro. To access attributes use the view macro e.g. {{{<<view title text>>}}}";
          -shadows.ScanTemplate = "<<view modifier SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title link>>";
          -shadows.FollowersTemplate = "<<view server.bag SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view server.bag spaceLink>>";
          -shadows.FollowingTemplate = "<<view title SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title spaceLink>>";
          -shadows.FollowTiddlersBlackList = "";
          -shadows.FollowTiddlersHeading = "There are tiddlers in spaces you follow using the follow tag which use the title <<view title text>>";
          -shadows.FollowTiddlersTemplate = ["* <<view server.space SiteIcon width:24 height:24 spaceLink:yes label:no>> ",
          -	"<<view server.space spaceLink title external:no>> modified by <<view modifier spaceLink>> ",
          -	"in the <<view server.space spaceLink>> space (<<view modified date>> @ <<view modified date 0hh:0mm>>).\n"].join("");
          -
          -var name = "StyleSheetFollowing";
          -shadows[name] = "/*{{{*/\n%0\n/*}}}*/".
          -	format(store.getTiddlerText(tiddler.title + "##StyleSheet"));
          -store.addNotification(name, refreshStyles);
          -
          -// provide support for sucking in tiddlers from the server
          -tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
          -	var adaptor = store.getTiddlers()[0].getAdaptor();
          -	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
          -	var tiddler = new Tiddler(localTitle);
          -	tiddler.text = "Please wait while this tiddler is retrieved...";
          -	tiddler.fields.doNotSave = "true";
          -	store.addTiddler(tiddler);
          -	src = story.displayTiddler(src || null, tiddler.title);
          -	tweb.getStatus(function(status) {
          -		var context = {
          -			host: tweb.host, // TODO: inherit from source tiddler?
          -			workspace: workspace,
          -			headers: { "X-ControlView": "false" }
          -		};
          -		var getCallback = function(context, userParams) {
          -			var tiddler = context.tiddler;
          -			tiddler.title = localTitle;
          -			store.addTiddler(tiddler);
          -			story.refreshTiddler(localTitle, null, true); // overriding existing allows updating
          -			if(callback) {
          -				callback(src, tiddler);
          -			}
          -		};
          -		adaptor.getTiddler(title, context, null, getCallback);
          -	});
          -};
          -
          -tiddlyspace.scroller = {
          -	runHandler: function(title, top, bottom, height) {
          -		var i;
          -		var handlers = tiddlyspace.scroller.handlers;
          -		var tidEl = story.getTiddler(title);
          -		if(tidEl) {
          -			var topEl = $(tidEl).offset().top + 20;
          -			if(top === false || (topEl > top && topEl < bottom)) {
          -				var h = handlers[title];
          -				for(i = 0; i < h.length; i++) {
          -					h[i]();
          -				}
          -				tiddlyspace.scroller.clearHandlers(title);
          -			}
          -		} else {
          -			tiddlyspace.scroller.clearHandlers(title);
          -		}
          -	},
          -	clearHandlers: function(title) {
          -		tiddlyspace.scroller.handlers[title] = [];
          -	},
          -	registerIsVisibleEvent: function(title, handler) {
          -		tiddlyspace.scroller.handlers[title] = tiddlyspace.scroller.handlers[title] || [];
          -		tiddlyspace.scroller.handlers[title].push(handler);
          -	},
          -	init: function() {
          -		this.handlers = {};
          -		this.interval = window.setInterval(function() {
          -			var top = $(window).scrollTop();
          -			var height = $(window).height();
          -			var bottom = top + height;
          -			var title;
          -			for(title in tiddlyspace.scroller.handlers) {
          -				if(title) {
          -					tiddlyspace.scroller.runHandler(title, top, bottom, height);
          -				}
          -			}
          -		}, 2000); // every 2 seconds check scroll position
          -	}
          -};
          -tiddlyspace.scroller.init();
          -
          -var followMacro = config.macros.followTiddlers = {
          -	locale: {
          -		followListHeader: "Here are tiddlers from spaces you follow using the follow tag which use this title.",
          -		noTiddlersFromFollowers: "None of the spaces you follow contain a tiddler with this name.",
          -		errorMessage: "There was a problem retrieving tiddlers from the server. Please try again later."
          -	},
          -	init: function() {
          -		followMacro.lookup = {};
          -	},
          -	followTag: "follow",
          -	getHosts: function(callback) {
          -		tweb.getStatus(function(status) {
          -			callback(tweb.host, tiddlyspace.getHost(status.server_host, "%0"));
          -		});
          -	},
          -	getBlacklist: function() {
          -		return store.getTiddlerText("FollowTiddlersBlackList").split("\n");
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var args = paramString.parseParams("anon")[0];
          -		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
          -		var title = (args.anon && args.anon[0]) || tiddler.fields["server.title"] || tiddler.title;
          -		var tid = store.getTiddler(title);
          -		var user = params[1] || false;
          -		if(tid) {
          -			followMacro.makeButton(place, {
          -				url: "/search?q=title:%22" + encodeURIComponent(title) + "%22",
          -				containingTiddler: containingTiddler,
          -				blacklisted: followMacro.getBlacklist(), title: title, user: user,
          -				consultFollowRelationship: (args.follow &&
          -					args.follow[0] === 'false') ? false : true });
          -		}
          -	},
          -	makeButton: function(place, options) { // this is essentially the same code in TiddlySpaceFollowingPlugin
          -		var title = options.title;
          -		var blacklisted = options.blacklisted;
          -		var tiddler = store.getTiddler(title);
          -		var btn = $('<div class="followButton" />').addClass("notLoaded").appendTo(place)[0];
          -		if(blacklisted.contains(title)) {
          -			$(btn).remove();
          -			return;
          -		} else {
          -			var user = options.user;
          -			window.setTimeout(function() { // prevent multiple calls due to refresh
          -				tiddlyspace.scroller.registerIsVisibleEvent(options.containingTiddler, function() {
          -					var mkButton = function(followers, ignore) {
          -						if(!followers && !ignore) {
          -							$(btn).remove();
          -						} else {
          -							$("<a />").appendTo(btn);
          -							var scanOptions = { url: options.url,
          -								spaceField: options.spaceField || "bag", template: null, sort: "-modified",
          -								callback: function(tiddlers) {
          -									$(btn).removeClass("notLoaded");
          -									followMacro.constructInterface(btn, tiddlers);
          -								}
          -							};
          -							if(!ignore) {
          -								scanOptions.showBags = followMacro._getFollowerBags(followers);
          -							}
          -							scanOptions.hideBags = [tiddler.fields["server.bag"]];
          -							scanMacro.scan(null, scanOptions, user);
          -						}
          -					};
          -					if(options.consultFollowRelationship) {
          -						followMacro.getFollowers(mkButton);
          -					} else {
          -						mkButton([], true);
          -					}
          -				});
          -			}, 1000);
          -		}
          -	},
          -	constructInterface: function(container, tiddlers) {
          -		var txt = tiddlers.length;
          -		var className = txt > 0 ? "hasReplies" : "noReplies";
          -		var el = $(story.findContainingTiddler(container));
          -		$(container).empty().addClass(className);
          -		var btn = $("<a />").addClass("followedTiddlers").text(txt).
          -			click(function(ev) {
          -				followMacro.followingOnClick(ev);
          -			}).appendTo('<div class="followedTiddlers" />').appendTo(container)[0];
          -		$.data(btn, "tiddlers", tiddlers);
          -	},
          -	followingOnClick: function(ev) {
          -		var target = ev.target;
          -		var locale = followMacro.locale;
          -		var el = $('<div class="followTiddlersList" />')[0];
          -		var popup = Popup.create(target,"div");
          -		$(popup).addClass("taggedTiddlerList followList").click(function(ev) { // make it so only clicking on the document outside the popup removes the popup
          -			if(ev.target.parentNode != document) {
          -				ev.stopPropagation();
          -			}
          -		}).append(el);
          -		var tiddlers = $.data(target, "tiddlers") || [];
          -		scanMacro.template(el, tiddlers.slice(0,1), "FollowTiddlersHeading");
          -		scanMacro.template(el, tiddlers, "FollowTiddlersTemplate");
          -		if(tiddlers.length === 0) {
          -			$("<li />").text(locale.noTiddlersFromFollowers).appendTo(el);
          -		}
          -		Popup.show();
          -		ev.stopPropagation();
          -		return popup;
          -	},
          -	_getFollowerBags: function(followers) { // XXX: private or not?
          -		return $.map(followers, function(name, i) {
          -			return name != currentSpace ? "%0_public".format(name) : null;
          -		});
          -	},
          -	getFollowers: function(callback, username) {
          -		// returns a list of spaces being followed by the existing space
          -		var followersCallback = function(user) {
          -			if(!user.anon) {
          -				scanMacro.scan(null, { 
          -					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          -					spaceField: "title", template: null, cache: true,
          -					callback: function(tiddlers) {
          -						var followers = [];
          -						for(var i = 0; i < tiddlers.length; i++) {
          -							followers.push(tiddlyspace.resolveSpaceName(tiddlers[i].title));
          -						}
          -						callback(followers);
          -					}
          -				});
          -			} else {
          -				callback(false);
          -			}
          -		};
          -		return !username ? tweb.getUserInfo(followersCallback) : followersCallback({ name: username });
          -	}
          -};
          -
          -var scanMacro = config.macros.tsScan = {
          -	init: function () {
          -		this.scanned = {};
          -	},
          -	_tiddlerfy: function(jsontiddlers, options) {
          -		var tiddlers = [];
          -		var spaceField = options.spaceField || "bag"; // TODO: phase out use view types instead
          -		$.each(jsontiddlers, function(i, t) {
          -			var use = false;
          -			if(!options.showBags || (options.showBags && options.showBags.contains(t.bag))) {
          -				use = true;
          -			}
          -			if(options.hideBags && options.hideBags.contains(t.bag)) {
          -				use = false;
          -			}
          -			if(use) {
          -				var spaceName = t[spaceField];
          -				var tiddler = config.adaptors.tiddlyweb.toTiddler(t, tweb.host);
          -				tiddler.fields["server.space"] = tiddlyspace.resolveSpaceName(spaceName);
          -				tiddlers.push(tiddler);
          -			}
          -		});
          -		return tiddlers;
          -	},
          -	_scanCallback: function(place, jsontiddlers, options) {
          -		var locale = followersMacro.locale;
          -		var tiddlers = scanMacro._tiddlerfy(jsontiddlers, options);
          -		
          -		if(options.sort) {
          -			tiddlers = store.sortTiddlers(tiddlers, options.sort);
          -		}
          -		if(options.filter) {
          -			var _store = new TiddlyWiki();
          -			config.lastStore = _store;
          -			for(var i = 0; i < tiddlers.length; i++) {
          -				var clone = tiddlers[i];
          -				clone.title = tiddlyspace.getLocalTitle(clone.title, clone.fields['server.workspace']);
          -				_store.addTiddler(clone);
          -			}
          -			tiddlers = _store.filterTiddlers(options.filter);
          -		}
          -		if(place) {
          -			$(place).empty();
          -			var list = $("<ul />").appendTo(place)[0];
          -			scanMacro.template(list, tiddlers, options.template);
          -			if(tiddlers.length === 0) {
          -				$("<li />").text(options.emptyMessage || locale.noone).appendTo(list);
          -				$(list).addClass("emptyList");
          -			}
          -		}
          -		if(options.callback) {
          -			options.callback(tiddlers);
          -		}
          -	},
          -	constructSearchUrl: function(host, options) {
          -		if(options.url) {
          -			return options.url;
          -		}
          -		var inputs = options.searchValues;
          -		var tag = options.tag;
          -		var searchField = options.searchField || "title";
          -		var searchQuery = [];
          -		for(var i = 0; i < inputs.length; i++) {
          -			searchQuery.push('%0:"%1"'.format(searchField, inputs[i]));
          -		}
          -		var query = searchQuery.join(" OR ");
          -		query = tag ? "(%0) AND tag:%1".format(query, tag) : query;
          -		query = options.query ? "%0;%1;".format(query, options.query) : query;
          -		query = options.fat ? "%0&fat=1".format(query) : query;
          -		return '%0/search?q=%1'.format(host, query);
          -	},
          -	scan: function(place, options) { // TODO: make use of list macro with url filter
          -		var locale = followersMacro.locale;
          -		options.template = options.template ? options.template : "ScanTemplate";
          -		followMacro.getHosts(function(host, tsHost) {
          -			$(place).text(followersMacro.locale.pleaseWait);
          -			options = options ? options: {};
          -			var url = scanMacro.constructSearchUrl(host, options);
          -			if(options.cache && scanMacro.scanned[url]) {
          -				var tiddlers = scanMacro.scanned[url].tiddlers;
          -				var run = function(tiddlers) {
          -					scanMacro._scanCallback(place, tiddlers, options);
          -				};
          -				if(tiddlers) {
          -					run(tiddlers);
          -				} else {
          -					scanMacro.scanned[url].callbacks.push(run);
          -				}
          -			} else {
          -				var callback = function(tiddlers) {
          -					scanMacro._scanCallback(place, tiddlers, options);
          -				};
          -				if(scanMacro.scanned[url] && scanMacro.scanned[url].callbacks) {
          -					scanMacro.scanned[url].callbacks.push(callback);
          -				} else {
          -					scanMacro.scanned[url] = {
          -						callbacks: [callback]
          -					};
          -				}
          -				ajaxReq({
          -					url: url,
          -					dataType: "json",
          -					success: function(tiddlers) {
          -						scanMacro.scanned[url].tiddlers = tiddlers;
          -						var callbacks = scanMacro.scanned[url].callbacks;
          -						while(callbacks.length > 0) {
          -							callbacks.pop()(tiddlers);
          -						}
          -					},
          -					error: function(xhr) {
          -						$(place).empty();
          -						$("<span />").addClass("annotation error").text(locale.error.format(xhr.status)).appendTo(place);
          -					}
          -				});
          -			}
          -		});
          -	},
          -	template: function(place, tiddlers, template) { // TODO: make use of list macro.
          -		for(var i = 0; i < tiddlers.length; i++) {
          -			var tiddler = tiddlers[i];
          -			var item = $('<li class="spaceName" />').appendTo(place)[0];
          -			var spaceName = tiddler.fields["server.space"] || "";
          -			var templateText = store.getTiddlerText(template).replace(/\$1/mg, spaceName);
          -			wikify(templateText, item, null, tiddler);
          -		}
          -	},
          -	getOptions: function(paramString, tiddler) {
          -		var args = paramString.parseParams("name", null, true, false, true)[0];
          -		var options = { query: false, sort: false, tag: false, template: false, showBags: args.show || false,
          -			hideBags: args.hide || false, filter: false, spaceField: "bag", searchField: "title", fat: false,
          -			emptyMessage: false };
          -		for(var name in args) {
          -			if(name != "name") {
          -				if(name == "fat") {
          -					options[name] = true;
          -				} else {
          -					options[name] = args[name][0];
          -				}
          -			}
          -		}
          -		// if user has set searchField to modifier, then use the modifiers value if available otherwise use searchValues.
          -		var searchField = options.searchField;
          -		var searchValues = args[searchField] ? args[searchField] : args.searchValues;
          -		// if neither of those were used use the first parameter
          -		var defaultValues = tiddler ? [ tiddler.title ] : [];
          -		options.searchValues = searchValues ? searchValues : ( args.name ? [args.name[0]] : defaultValues);
          -		return options;
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var container = $("<div />").addClass("scanResults resultsArea").appendTo(place)[0];
          -		var options = scanMacro.getOptions(paramString, tiddler);
          -		scanMacro.scan(container, options);
          -	}
          -};
          -
          -var followersMacro = config.macros.followers = {
          -	locale: {
          -		loggedOut: "Please login to see the list of followers",
          -		noSupport: "We were unable to retrieve followers as your browser does not support following.",
          -		pleaseWait: "Please wait while we look this up...",
          -		error: "Error %0 occurred whilst retrieving data from server",
          -		noone: "None."
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var locale = followersMacro.locale;
          -		var args = paramString.parseParams("name", null, true, false, true)[0];
          -		var username = args.name ? args.name[0] : false;
          -		var container = $('<div class="followers" />').text(locale.pleaseWait).
          -			appendTo(place)[0];
          -		var followersCallback = function(user) {
          -			if(user.anon) {
          -				$("<span />").text(locale.loggedOut).appendTo(container);
          -			} else {
          -				var options = scanMacro.getOptions(paramString);
          -				$.extend(options, {
          -					url: "/search?q=title:@%0 OR title:%0 tag:%1 _limit:%2".
          -						format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          -					spaceField: "bag",
          -					template: options.template ? options.template : "FollowersTemplate"
          -				});
          -				scanMacro.scan(container, options);
          -			}
          -		};
          -		return !username ? followersCallback({ name: currentSpace }) : followersCallback({ name: username });
          -	}
          -};
          -
          -var followingMacro = config.macros.following = {
          -	locale: {
          -		pleaseWait: followersMacro.locale.pleaseWait,
          -		loggedOut: "Please login to see who you are following",
          -		noSupport: followersMacro.locale.noSupport,
          -		error: followersMacro.locale.error,
          -		noone: followersMacro.locale.noone
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var locale = followingMacro.locale;
          -		var args = paramString.parseParams("name", null, true, false, true)[0];
          -		var fat = args.fat ? true : false;
          -		var username = args.name ? args.name[0] : false;
          -		var container = $('<div class="following" />').text(locale.pleaseWait).
          -			appendTo(place)[0];
          -		var followingCallback = function(user) {
          -			if(user.anon) {
          -				$("<span />").text(locale.loggedOut).appendTo(container);
          -			} else {
          -				var options = scanMacro.getOptions(paramString);
          -				$.extend(options, {
          -					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
          -					spaceField: "title",
          -					template: options.template ? options.template : "FollowingTemplate"
          -				});
          -				scanMacro.scan(container, options);
          -			}
          -		};
          -		return !username ? followingCallback({ name: currentSpace }) : followingCallback({ name: username });
          -	}
          -};
          -
          -var linkedMacro = config.macros.linkedTiddlers = {
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var args = paramString.parseParams("anon")[0];
          -		var title = params[0] || tiddler.fields["server.title"] || tiddler.title;
          -		var tid = store.getTiddler(title);
          -		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
          -		if(tid) {
          -			followMacro.makeButton(place, {
          -				spaceField: "recipe",
          -				url: "/bags/%0/tiddlers/%1/backlinks".format(tid.fields['server.bag'],
          -					encodeURIComponent(tid.title)),
          -				blacklisted: followMacro.getBlacklist(),
          -				title: title,
          -				containingTiddler: containingTiddler,
          -				user: params[1] || false,
          -				consultFollowRelationship: args.follow ? true : false });
          -		}
          -	}
          -};
          -
          -if(config.options.chkFollowTiddlersIsLinkedTiddlers) {
          -	merge(config.macros.followTiddlers, config.macros.linkedTiddlers);
          -	config.shadowTiddlers.FollowTiddlersHeading = "These are the other tiddlers that link to this tiddler.";
          -}
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          chkPrivateMode: false
          -
          -
          -
          ''Welcome to the great TiddlyWiki viral interview project.''
          -
          -For many people that use it there is a distinct [[discovery moment|http://tiddlywiki.com/#Raves]] when TiddlyWiki explodes in their brain. For others, it is a challenge to get their heads around TiddlyWiki at all. 
          -
          -This project explores how people think about TiddlyWiki by collecting together responses to a set of questions about it.
          -
          -!To Add Your Own Response
          -* Sign up for TiddlySpace if you haven't done so already
          -* Click the "Reply to this tiddler" link on a question you wish to answer
          -* Your home space will open in a new window or tab with the appropriate question tiddler presented
          -* Double click on the question tiddler and add your answer (make sure to make it public)
          -
          -
          -
          -
          -
          -
          -
          /*{{{*/
          -body {
          -	font-size: 1em;
          -	font-family: helvetica, arial, sans-serif;
          -	background-color: #fff;
          -	color: [[ColorPalette::Foreground]];
          -}
          -
          -body ul { margin: 0; }
          -
          -#popup {
          -	background-color: [[ColorPalette::TertiaryPale]];
          -}
          -
          -#popup.confirmationPopup, .followList {
          -	font-size: 0.8em;
          -	padding: 1em;
          -	border: solid 1px [[ColorPalette::SecondaryMid]];
          -	background-color: [[ColorPalette::SecondaryPale]];
          -}
          -
          -.followList .listTitle {
          -	text-decoration: underline;
          -}
          -
          -#popup .followTiddlersList a {
          -	display: inline;
          -	padding: 0;
          -}
          -
          -#popup li a {
          -	color: [[ColorPalette::PrimaryMid]];
          -	font-weight: bold;
          -}
          -
          -#popup li a:hover {
          -	color: [[ColorPalette::PrimaryPale]];
          -	background: [[ColorPalette::PrimaryMid]];
          -}
          -
          -#popup li.listTitle {
          -	border-bottom: 1px solid #000;
          -	font-weight: bold;
          -	margin-bottom: 10px;
          -}
          -
          -#popup.followList {
          -	margin-left: 50px;
          -	margin-top: -30px;
          -}
          -
          -.followTiddlersList .label {
          -	display: block;
          -	left: 10px;
          -	top: 0px;
          -	line-height: 16px;
          -	position: relative;
          -}
          -
          -#popup .followTiddlersList .siteIcon{
          -	height: auto;
          -}
          -
          -#popup .followTiddlersList li{
          -	clear: both;
          -	display: block;
          -	height: 48px;
          -	margin-bottom: 8px;
          -	position: relative;
          -}
          -
          -#popup .followTiddlersList a{
          -	display: inline;
          -}
          -
          -#displayArea {
          -	margin: 0;
          -	top: 0px;
          -	left: 0px;
          -	width: 100%;
          -	position: relative;
          -}
          -
          -.revisionCloak {
          -	position: absolute;
          -	position: fixed !important;
          -	height: 100%;
          -	width: 100%;
          -	top: 0;
          -	left: 0;
          -	border: 0;
          -	margin: 0;
          -	padding: 0;
          -	opacity: 0.5;
          -	filter: alpha(opacity=50);
          -	background-color: #000;
          -}
          -
          -/* *** Header *** */
          -.header {
          -	position: relative;
          -	background-color: [[ColorPalette::PrimaryMid]];
          -	_width: 100%; /* ie 6 demands */
          -}
          -
          -.headerForeground {
          -	background-color: [[ColorPalette::PrimaryMid]];
          -	float: left;
          -	margin: 24px 16px 0px 72px;
          -	padding: 0;
          -	position: relative;
          -	top: 0;
          -	_width: 70%; /*ie6: needed for the background to actually be transparent*/
          -	_background-color: transparent; /*ie6: needed to show the search box*/
          -}
          -
          -.clearFloat {
          -	clear: both;
          -}
          -
          -#contentWrapper {
          -	position: relative;
          -	padding-top: 1px;
          -	top: -1px;
          -}
          -
          -#tiddlerDisplay {
          -	_position: relative; /* ie 6*/
          -}
          -
          -.siteTitle {
          -	clear: both;
          -	display: block;
          -	font-size: 32px;
          -	font-weight: bold;
          -	line-height: 32px;
          -}
          -
          -.siteSubtitle {
          -	display: block;
          -	font-size: 14px;
          -	height: 16px;
          -	margin-bottom: 8px;
          -}
          -
          -#sidebarSearch {
          -	padding: 0;
          -	position: absolute;
          -	right: 80px;
          -	top: 8px;
          -	width: 176px;
          -}
          -
          -#sidebarSearch .txtOptionInput {
          -	width: 100%;
          -	margin-top: 5px;
          -	_color: #bbb; /* ie6 danger */
          -}
          -
          -#sidebarSearch .txtOptionInput:focus {
          -	color: #000;
          -}
          -
          -#sidebarSearch .searchButton {
          -	display: none;
          -}
          -
          -/* *** Menu Bar *** */
          -
          -#mainMenu {
          -	position: static;
          -	text-align: left;
          -	margin-left: 72px;
          -	float: left;
          -	width: auto;
          -	padding: 0;
          -	font-size: 1em;
          -	line-height: normal;
          -}
          -
          -#mainMenu a {
          -	color: #fff;
          -	padding: 8px;
          -	font-size: 0.9em;
          -	margin-right: 16px;
          -}
          -
          -#mainMenu a:hover {
          -	background-color: [[ColorPalette::PrimaryMid]];
          -	color: [[ColorPalette::Background]]
          -}
          -
          -#sidebarOptions {
          -	margin-right: 72px;
          -	float: right;
          -	font-size: 1.1em;
          -	line-height: 1.6em;
          -	min-height: 1em;
          -	padding-top: 0;
          -}
          -
          -#sidebarOptions a {
          -	margin-right: 8px;
          -}
          -
          -.confirmationPopup .button,
          -#sidebarOptions .button {
          -	cursor: pointer;
          -	line-height: 1.4em;
          -	text-align: center;
          -	margin-right: 8px;
          -	margin-left:-2px;
          -}
          -
          -.confirmationPopup .button {
          -	font-size: 0.9em;
          -	padding: 2px;
          -}
          -
          -#sidebarOptions .button {
          -	font-size: 0.7em;
          -	float: left;
          -	width: 80px;
          -	padding: 0px;
          -        color: #fff;
          -}
          -
          -.confirmationPopup a.button,
          -#sidebarOptions a {
          -	border: none;
          -	margin: 0 0.2em;
          -	padding: 0.6em 0.25em;
          -	display: inline;
          -	color: #666;
          -}
          -
          -.confirmationPopup a.button:hover,
          -#sidebarOptions a:hover {
          -	color: #000;
          -}
          -
          -.confirmationPopup a.button:active,
          -#sidebarOptions a:active {
          -	border: solid 1px [[ColorPalette::PrimaryMid]];
          -	background-color: #fff;
          -	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
          -	background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
          -}
          -/* *** Sidebar *** */
          -
          -#sidebar .wizard table {
          -	margin: 0px;
          -}
          -
          -.tabContents .listTitle:first-child {
          -	margin-top: 0px;
          -}
          -
          -#menuBar {
          -	background: [[ColorPalette::PrimaryLight]];
          -	left: 0;
          -	right: 0;
          -	position: relative;
          -	margin: 0;
          -	padding: 0.5em 0 0.5em 0;
          -	min-height: 1em;
          -	overflow: hidden;
          -	_width: 100%; /* for ie 6 */
          -}
          -
          -#sidebarOptions a.button:hover {
          -	color: [[ColorPalette::PrimaryPale]];
          -    background: [[ColorPalette::PrimaryMid]];
          -}
          -
          -#tiddlerDisplay, #searchResults {
          -	margin: 16px 448px 0 72px;
          -}
          -
          -#sidebarTabs {
          -	position: absolute;
          -	right: 72px;
          -	width: 352px;
          -	top: 0;
          -}
          -
          -#sidebarTabs .tabsetWrapper .tabset {
          -	width: 87px;
          -	border-top: 1px solid [[ColorPalette::PrimaryPale]];
          -	border-left: 1px solid [[ColorPalette::PrimaryPale]];
          -	border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
          -	height: auto;
          -	float: left;
          -	word-wrap: break-word;
          -	top: 0;
          -	padding: 0;
          -}
          -
          -#sidebarTabs .tabsetWrapper .tabContents {
          -	background-color: [[ColorPalette::PrimaryPale]];
          -	border: 3px solid [[ColorPalette::PrimaryMid]];
          -	width: 242px;
          -	_width: 238px;
          -	left: -3px;
          -	_left: -5px;
          -	position: relative;
          -	min-height: 34em;
          -	padding: 8px;
          -	font-size: 0.8em;
          -}
          -
          -/* ---- Side style --- */
          -
          -#sidebarTabs .tabsetWrapper .tabset .tab {
          -	font-size: 0.9em;
          -	padding: 0.7em 8px 0.5em;
          -	color: #fff;
          -	background: [[ColorPalette::PrimaryLight]];
          -	border: none;
          -	line-height: 16px;
          -	position: relative;
          -	display: block;
          -	margin: 0;
          -}
          -
          -#sidebarTabs .tabsetWrapper .tabset .tabSelected {
          -	color: [[ColorPalette::PrimaryMid]];
          -	background: [[ColorPalette::PrimaryPale]];
          -	border-top: 3px solid [[ColorPalette::PrimaryMid]];
          -	border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
          -	border-left: 3px solid [[ColorPalette::PrimaryMid]];
          -	z-index: 10;
          -	margin-top: -1px;
          -	font-weight: bold;
          -}
          -
          -#sidebarTabs .tabContents li {
          -	border: none;
          -	margin-left: 0;
          -	word-wrap: break-word;
          -}
          -
          -.tabContents .timeline {
          -	background: [[ColorPalette::PrimaryPale]];
          -	margin-bottom: 8px;
          -}
          -
          -#sidebarTabs .timeline li.listTitle {
          -	color: #132E43;
          -	margin-left: 8px 0;
          -	padding: 0.3em 0.11em;
          -	font-size: 1em;
          -	border-bottom: none;
          -}
          -
          -#sidebarTabs .tabContents li a {
          -	display: block;
          -	text-align: left;
          -	margin: 0 0 1px 0;
          -	padding: 0.3em 1em;
          -	background: [[ColorPalette::PrimaryPale]];
          -}
          -
          -#sidebarTabs .tabsetWrapper .tabset a:hover,
          -#sidebarTabs .tabContents li a:hover {
          -	color: [[ColorPalette::PrimaryPale]];
          -	background: [[ColorPalette::PrimaryMid]];
          -}
          -
          -/* Activity Stream */
          -#sidebarTabs .tabContents .activityStream .feedItem a {
          -	display: inline-block;
          -	padding: 0;
          -	background: none;
          -}
          -
          -/* ---- Tagging box --- */
          -.tagInfo {
          -	border: 1px solid #cccccc;
          -	padding: 10px 15px;
          -	-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
          -	box-shadow: 0 2px 2px rgba(0,0,0,0.2);
          -	color: [[ColorPalette::TertiaryMid]];
          -	background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
          -	background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
          -	margin-top: 1em;
          -	font-size: 13px;
          -	margin: 0 0 0 56px;
          -}
          -
          -.tagInfo ul {
          -	list-style: none;
          -	padding-left: 2.2em;
          -}
          -
          -.tagInfo ul li {
          -	display: inline;
          -}
          -
          -.tagInfo ul li.listTitle,
          -.tagInfo .tagging ul li.listTitle {
          -	color: [[ColorPalette::PrimaryMid]];
          -	font-size: 13px;
          -}
          -
          -.tagInfo ul li a {
          -	border: none;
          -}
          -
          -.tagInfo .tagging ul li {
          -	float: none;
          -	display: inline-block;
          -}
          -
          -.tagInfo .tagging {
          -	padding: 0;
          -}
          -
          -.viewRevision .toolbar {
          -	right: 48px;
          -	top: 8px;
          -}
          -
          -.viewRevision .modifierIcon img,
          -.viewRevision .modifierIcon svg {
          -	margin-right: 8px;
          -}
          -
          -.viewRevision .toolbar svg {
          -	width: 32px;
          -	height: 32px;
          -}
          -
          -/* --- IE hacks from lattice --- */
          -
          -/* ie hacks */
          -* html #menuBar {
          -	margin-bottom: 8px;
          -}
          -.toolbar .svgIconText {
          -	*display: inline;
          -}
          -
          -div.tiddler .toolbar a {
          -	cursor: pointer;
          -	float: left\9;
          -	display: inline\9;
          -}
          -
          -* html .toolbar {
          -	right: 8px;
          -}
          -* html .followButton a {
          -	margin-top: 0px;
          -	margin-right: 8px;
          -}
          -* html #tiddlerDisplay {
          -	margin-top: 0px;
          -}
          -
          -/* for printing purposes */
          -@media print {
          -	#mainMenu,
          -	#sidebar,
          -	#messageArea,
          -	.toolbar,
          -	.followPlaceHolder,
          -	#backstageButton,
          -	#backstageArea,
          -	#sidebarTabs,
          -	#sidebarSearch .txtOptionInput,
          -	#sidebarOptions {
          -		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 */
          -	}
          -	#tiddlerDisplay {
          -		margin: 16px 16px;
          -	}
          -}
          -
          -@media all and (max-width: 960px){
          -	#tiddlerDisplay,
          -	#searchResults {
          -		margin: 16px 366px 0 16px;
          -	}
          -
          -	#mainMenu {
          -		margin-left: 16px;
          -	}
          -
          -	.headerForeground {
          -		margin-left: 16px;
          -	}
          -
          -	#sidebarSearch {
          -		right: 16px;
          -	}
          -
          -	#sidebarOptions {
          -		margin-right: 16px;
          -	}
          -
          -	#sidebarTabs {
          -		right: 16px;
          -		width: 326px;
          -	}
          -
          -	#sidebarTabs .tabsetWrapper .tabset {
          -		font-size: 0.9em;
          -		width: 77px;
          -	}
          -
          -	#sidebarTabs .tabsetWrapper .tabContents {
          -		width: 226px;
          -		_width: 222px;
          -	}
          -
          -	#sidebarTabs .tabContents li a {
          -		font-size: 0.9em;
          -	}
          -}
          -/*}}}*/
          -[[StyleSheetTiddler]]
          -
          -
          -
          <<tsScan "Do you use TiddlyWiki more for personal things*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          -
          -
          -
          
          -
          -
          -
          (function() {
          -var getCSRFToken = function(window) {
          -	// XXX: should not use RegEx - cf.
          -	// http://www.quirksmode.org/js/cookies.html
          -	// https://github.com/TiddlySpace/tiddlyspace/commit/5f4adbe009ed4bda3ce39058a3fb07de1420358d
          -	var regex = /^(?:.*; )?csrf_token=([^(;|$)]*)(?:;|$)/;
          -	var match = regex.exec(document.cookie);
          -	var csrf_token = null;
          -	if (match && (match.length === 2)) {
          -		csrf_token = match[1];
          -	}
          -
          -	return csrf_token;
          -};
          -
          -if (typeof config !== 'undefined' && config.extensions &&
          -		config.extensions.tiddlyspace &&
          -		config.extensions.tiddlyspace.getCSRFToken === null) {
          -	config.extensions.tiddlyspace.getCSRFToken = getCSRFToken;
          -} else {
          -	window.getCSRFToken = getCSRFToken;
          -}
          -})(window);
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="434 218 68 68"
          -width="30" height="30">
          -<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -	<g>
          -		<path d="M 478.39694 232.53705 L 478.39694 232.53705 
          -		C 477.1145 231.85132 475.77875 231.30147 474.41058 230.88734 L 474.41058 218.24994 L 461.58942 218.24994 
          -		L 461.58942 230.88734 C 460.22125 231.30147 458.8855 231.85132 457.60306 232.53705 L 448.66824 223.60214 
          -		L 439.6022 232.66814 L 448.53717 241.60304 C 447.8515 242.8854 447.30157 244.22116 446.88745 245.58936 
          -		L 434.25 245.58936 L 434.25 258.41052 L 446.88745 258.41052 
          -		C 447.30157 259.77869 447.8515 261.11447 448.53717 262.39688 L 439.6022 271.33173 L 448.66824 280.3978 
          -		L 457.60306 271.46283 C 458.8855 272.14862 460.22125 272.69846 461.58942 273.11252 L 461.58942 285.74988 
          -		L 474.41058 285.74988 L 474.41058 273.11252 C 475.77875 272.69846 477.1145 272.14862 478.39694 271.46283 
          -		L 487.33176 280.3978 L 496.39767 271.33173 L 487.46286 262.39688 
          -		C 488.14853 261.11447 488.69836 259.77869 489.11255 258.41052 L 501.74988 258.41052 L 501.74988 245.58936 
          -		L 489.11255 245.58936 C 488.69836 244.22116 488.14853 242.8854 487.46286 241.60304 L 496.39767 232.66814 
          -		L 487.33176 223.60214 Z M 475.3328 244.66714 C 479.3825 248.71698 479.3825 255.2829 475.3328 259.33273 
          -		C 471.28296 263.3826 464.71704 263.3826 460.66724 259.33273 
          -		C 456.61737 255.2829 456.61737 248.71698 460.66724 244.66714 
          -		C 464.71704 240.61734 471.28296 240.61734 475.3328 244.66714" fill="#111"
          -		class="glyph"/>
          -	</g>
          -</g>
          -</svg>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceFollowingWizard|
          -|''Version''|0.7.0|
          -|''Description''|Provides a following wizard macro and deleteButton view type|
          -|''Author''|Jon Robson|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceFollowingPlugin TiddlySpaceTiddlerIconsPlugin|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -!Usage
          -{{{ <<followWizard>> }}}
          -!StyleSheet
          -.followWizard ul,
          -.followWizard li .siteIcon,
          -.followWizard li {
          -	list-style: none;
          -	display: inline-block;
          -}
          -
          -.followWizard li {
          -	margin-right: 8px;
          -	background-color: #eee;
          -	-moz-border-radius: 5px;
          -	-webkit-border-radius: 5px;
          -	padding: 4px;
          -}
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tweb = config.extensions.tiddlyweb;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var currentSpace = tiddlyspace.currentSpace.name;
          -
          -var shadows = config.shadowTiddlers;
          -shadows.FollowersTemplate = "<<view server.bag SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view server.bag spaceLink>>";
          -shadows.FollowingTemplate = "<<view title SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title spaceLink>> <<view title deleteButton>>";
          -
          -var name = "StyleSheetFollowingWizard";
          -shadows[name] = "/*{{{*/\n%0\n/*}}}*/".
          -	format(store.getTiddlerText(tiddler.title + "##StyleSheet"));
          -store.addNotification(name, refreshStyles);
          -
          -var wizard = config.macros.followWizard = {
          -	locale: {
          -		mission: "Which user or space would you like to follow?",
          -		badpermissions: "Only members of the space can maintain followers.",
          -		follow: "follow"
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var locale = wizard.locale;
          -		var container = $("<div />").addClass("followWizard").appendTo(place)[0];
          -		if(!readOnly) {
          -			var form = $("<form />").addClass("followForm").appendTo(container)[0];
          -			$("<span />").text(locale.mission).appendTo(form);
          -			var input = $("<input />").attr("name", "space").attr("type", "text").appendTo(form);
          -			$("<input />").attr("type", "submit").val(locale.follow).appendTo(form).click(function(ev) {
          -				wizard.addFollowing(ev, input.val());
          -				ev.preventDefault();
          -			});
          -		} else {
          -			$(container).addClass("annotation").text(locale.badpermissions);
          -		}
          -	},
          -	addFollowing: function(ev, space) {
          -		var name = tiddlyspace.resolveSpaceName(space);
          -		if(!name) {
          -			alert("That doesn't appear to be a valid space name. Please check and try again.");
          -			return;
          -		}
          -		var title = "@" + name;
          -		var tiddler = store.getTiddler(title);
          -		if(tiddler) {
          -			tiddler.tags.push("follow");
          -		} else {
          -			tiddler = new Tiddler(title);
          -			tiddler.tags.push("follow");
          -			merge(tiddler.fields, config.defaultCustomFields);
          -		}
          -		store.saveTiddler(tiddler);
          -		autoSaveChanges();
          -	}
          -};
          -
          -config.macros.view.views.deleteButton = function(value,place,params,wikifier,paramString,tiddler) {
          -	var tid = store.getTiddler(value)
          -	if(tid && config.commands.deleteTiddler.isEnabled(tid)) {
          -		var handler = function(ev) {
          -			config.commands.deleteTiddler.handler(ev,ev.target,value);
          -		};
          -		createTiddlyButton(place, "X", "delete this tiddler", handler);
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          -
          
          -
          -
          -
          !Followers
          -<<followers>>
          -!Activity
          -[[Replies and Notifications]]
          -
          -<<activity>>
          -!Following
          -All spaces tagged follow
          -<<list filter [tag[follow]][sort[title]]>>
          -
          -<<followSuggestions>>
          -
          -
          -
          The activity feed is best for sharing opinions on something. To make best use of it create a tiddler and tag it with a username you would like to share thought with on this subject.
          -
          -For instance I might create a tiddler called [[Animal I'd least like to be stuck in a cage with]]. I might say 
          -<<<
          -I would least like to be stuck in a cage with a lion as it could tear me apart amongst other reasons.
          -<<<
          -I then tag it @matias to get @matias's attention to see what he think. This flags it in @matias's activity feed and tells him that I am interested in his thoughts. Of course @matias can ignore it, and if he is not using the activity feed feature he may not even know about the message. If he wants to respond all @matias then has to do is create his own tiddler [[Animal I'd least like to be stuck in a cage with]]. Matias might say
          -<<<
          -A lion would be not as bad as a great white shark... not only would you be stuck in a cage with it but you would  be underwater with a likelihood of drowning to increase suffering.
          -<<<
          -It's not over yet.. now I can refine my original post with the thoughts of Matias. I might think mm, @matias has got a point there with the water, but I think a crocodile would more likely eat me then a great white shark and I fancy my chances with the great white.
          -
          -I then update my tiddler to say 
          -<<<
          -I would least like to be stuck in a cage with a crocodile as it could tear me apart amongst other reasons. A lion would also be scary however I'm not a good swimmer so would be less likely to be able to make an escape. A crocodile is worse than a shark as shark attacks on humans are rare, so I'd fancy my chances.
          -<<<
          -
          -We continue replying this way revising our tiddlers till the process finishes and I have a tiddler which clearly explains the [[Animal I'd least like to be stuck in a cage with]] with very detailed reasoning.
          -
          -
          -
          
          -
          -
          -
          /***
          -|''Name:''|TiddlySpaceIntraSpaceInclusion|
          -|''Description:''|Provides support for {{{<<tiddler Foo@bar>>}}} and {{{<<tiddler [[Foo]]@bar>>}}}|
          -|''Author:''|Jon Robson|
          -|''Source:''|https://github.com/jdlrobson/TiddlyWikiPlugins/raw/master/plugins/TiddlySpaceIntraSpaceInclusion/TiddlySpaceIntraSpaceInclusion.js|
          -|''Version:''|0.3.8a|
          -|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          -|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          -|''~CoreVersion:''|2.4|
          -***/
          -//{{{
          -(function() {
          -	var _tidtext = TiddlyWiki.prototype.getTiddlerText;
          -	var cache = {};
          -
          -	// allmost the same regExp as in TiddlySpaceLinkPlugin but .. no "mg" parameter, because it didn't work for this usecase.
          -	config.textPrimitives.spacenameLinkRegExp = new RegExp(config.textPrimitives.unWikiLink + 
          -													 "?(" + config.textPrimitives.bareTiddlerLetter + "*)@(" + config.textPrimitives.spaceName + ")", "");
          -	config.textPrimitives.tiddlyLinkSpacenameLinkRegExp = new RegExp("\\[\\[(.*?)(?:\\|(.*?))?\\]\\]@(" + config.textPrimitives.spaceName + ")", "");
          -	
          -	TiddlyWiki.prototype.getTiddlerText = function(title, defaultText) {
          -		var ct = config.textPrimitives;
          -		var match = ct.spacenameLinkRegExp.exec(title);	// foo@bar
          -		var match2 = ct.tiddlyLinkSpacenameLinkRegExp.exec(title); 	// [[foo]]@bar
          -		
          -		if(match || match2) {
          -		//	console.log('inner: ', 'spacename: ', match, 'tiddlyLink: ', match2, 'place: ');
          -			var tidtitle, space;
          -			if(match[1] && match.length === 3) {
          -				tidtitle = match[1];
          -				space = match[2];
          -			} else if(match2 && match2.length === 4) {
          -				tidtitle = match2[1];
          -				space = match2[3];
          -			}
          -			var newtitle = tidtitle + "@" + space;
          -			if(tidtitle && space) {
          -				title = newtitle;
          -			}
          -			if(tidtitle && space && !store.getTiddler(newtitle)) {
          -				var tiddler = new Tiddler(title);
          -				// get the tiddler, where the macro is rendered. //XXX will need more testing
          -				var el = story.findContainingTiddler(place);
          -				var refreshTitle = (el) ? el.getAttribute('tiddler') : null;
          -
          -				tiddler.text = "//retrieving from server//";
          -				tiddler.fields.doNotSave = "true";
          -				tiddler.tags = ["excludeLists", "excludeSearch", "excludeMissing"];
          -				merge(tiddler.fields, config.defaultCustomFields);
          -				tiddler.fields["server.bag"] = space + "_public";
          -				tiddler = store.addTiddler(tiddler);
          -				ajaxReq({ url: "/bags/" + space + "_public/tiddlers/" + tidtitle,
          -					dataType: "json",
          -					success: function(tid) {
          -						var tiddler = store.getTiddler(title);
          -						tiddler.text = tid.text;
          -						store.addTiddler(tiddler);
          -						// store.notify(title,true);
          -						story.refreshTiddler(refreshTitle,null,true);
          -						// story.refreshAllTiddlers(); // hacky but above link doesn't always seem to work!
          -					},
          -					error: function() {
          -						var tiddler = store.getTiddler(title);
          -						tiddler.text = "//error retrieving tiddler {{{" + title + "}}} from space @" + space + "//";
          -						store.addTiddler(tiddler);
          -						// store.notify(title,true);
          -						story.refreshTiddler(refreshTitle,null,true);
          -						// story.refreshAllTiddlers(); // hacky but above link doesn't always seem to work!
          -					}
          -				});
          -			}
          -		}
          -		return _tidtext.apply(this, [title, defaultText]);
          -	}
          -})();
          -//}}}
          -
          -
          -
          @@Please do not modify this tiddler; it was created automatically upon space creation.@@
          -
          -
          -
          
          -
          -
          -
          <!--{{{-->
          -<div class='toolbar'
          -	macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
          -</div>
          -<div class='heading'>
          -	<span class='spaceSiteIcon'
          -		macro='tiddlerOrigin label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          -	</span>
          -	<span class="titleBar">
          -		<div class='title' macro='view title text'></div>
          -		<div class="subtitle" macro='viewRevisions page:5'>
          -			last modified on
          -			<span macro="view modified date"></span>
          -		</div>
          -		<div macro="view title replyLink"></div>
          -	</span>
          -	<span class='followPlaceHolder' macro='followTiddlers'></span>
          -	<span class='modifierIcon'
          -		macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          -	</span>
          -	<div class='tagClear'></div>
          -</div>
          -<div class='content'>
          -	<div class='viewer' macro='view text wikified'></div>
          -</div>
          -<div class='answers' macro='tsScan fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified'>
          -</div>
          -<div class='tagInfo'>
          -	<div class='tidTags' macro='tags'></div>
          -	<div class='tagging' macro='tagging'></div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          <<activity show:reply show:notify>>
          -
          -
          -
          <<closeAll>><<permaview>><<newTiddler>>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceFollowingSuggestions|
          -|''Version''|0.2.5dev|
          -|''Description''|Provides a following macro|
          -|''Author''|Jon Robson|
          -|''Requires''|TiddlySpaceFollowingPlugin|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -!Usage
          -
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tweb = config.extensions.tiddlyweb;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var followMacro = config.macros.followTiddlers;
          -
          -var followSuggestions = config.macros.followSuggestions = {
          -	cache: {},
          -	handler: function(place, macroName, params) {
          -		// to do - limit results
          -		place = $('<div class="suggestions" />').appendTo(place)[0];
          -		var currentSpace = tiddlyspace.currentSpace.name;
          -		var user = params[0] || currentSpace;
          -		var pleaseWait = $("<div class='loading' />").text("please wait..").appendTo(place);
          -		tweb.getUserInfo(function(activeUser) {
          -			if(activeUser.name != tiddlyspace.currentSpace.name) {
          -				pleaseWait.hide();
          -				return;
          -			}
          -			followMacro.getFollowers(function(users) {
          -				// suggestions are followers of people that you follow that you don't follow
          -				var bags = followMacro._getFollowerBags(users);
          -				var _bags = [];
          -				for(var i = 0; i < bags.length; i++) {
          -					_bags.push("bag:%0".format([bags[i]]));
          -				}
          -				var bagString = _bags.join(" OR ");
          -				ajaxReq({
          -					beforeSend: followMacro.beforeSend,
          -					url: "/search?q=(%0)&select=title:!%1&select=title:!@%1".format([bagString, activeUser.name]),
          -					dataType: "json",
          -					success: function(tiddlers) {
          -						pleaseWait.hide();
          -						var suggestions = [];
          -						for(var i = 0; i < tiddlers.length; i++) {
          -							var tiddler = tiddlers[i];
          -							if(tiddler.tags.contains("follow")) {
          -								var title = tiddler.title;
          -								if(title.indexOf("@") === 0) {
          -									title = title.substr(1);
          -								}
          -								if(!users.contains(title)) {
          -									suggestions.pushUnique(title);
          -								}
          -							}
          -						}
          -						$(place).append("<div>suggestions:</div>");
          -						var suggestionArea = $("<div class='suggestionArea' />").appendTo(place)[0];
          -						var id = "more_%0".format([Math.random()]);
          -						var more = $("<div class='moreButton' />").text("more...").appendTo(place).attr("id", id);
          -						followSuggestions.cache[id] = suggestions;
          -						var limit = suggestions.length;
          -						more.click(function(ev) {
          -							var suggestions = config.macros.followSuggestions.cache[id];
          -							var newSuggestions = followSuggestions.suggest(place, suggestions, limit);
          -							config.macros.followSuggestions.cache[id] = newSuggestions;
          -						});
          -						followSuggestions.suggest(place, suggestions, limit);
          -					
          -					}
          -				});
          -			
          -			}, user);
          -		});
          -	},
          -	randomize: function(a, b) {
          -		if(Math.random() < Math.random()) {
          -			return -1;
          -		} else {
          -			return 1;
          -		}
          -	},
          -	suggest: function(place, suggestions, limit) {
          -		var currentSpace = tiddlyspace.currentSpace.name;
          -		suggestions = suggestions.sort(followSuggestions.randomize);
          -		var suggestionsArea = $(".suggestionArea", place)[0];
          -		if(suggestions.length === 0) {
          -			$("<span />").text("no suggestions..").appendTo(suggestionsArea);
          -			return;
          -		}
          -		limit = limit < suggestions.length ? limit : suggestions.length;
          -		for(var j = 0; j < limit; j++) {
          -			var link = $("<span />").appendTo(suggestionsArea)[0];
          -			var title = suggestions[j];
          -			var newTiddler = '@%0 <<newTiddler title:"@%0" fields:"server.workspace:bags/%1_public" tag:follow label:"follow">>\n'.format([title, currentSpace]);
          -			wikify(newTiddler, link);
          -		}
          -		var newSuggestions = suggestions.slice(limit, suggestions.length);
          -		var more = $(".moreButton", place);
          -		if(newSuggestions.length == 0) {
          -			more.remove();
          -		}
          -		return newSuggestions;
          -	}
          -};
          -})(jQuery);
          -//}}}
          -
          -
          -
          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
          -
          -
          -
          <!--{{{-->
          -<div class='toolbar'
          -	macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
          -</div>
          -<div class='heading'>
          -	<span class='spaceSiteIcon'
          -		macro='tiddlerOrigin label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          -	</span>
          -	<span class="titleBar">
          -		<div class='title' macro='view title text'></div>
          -		<span class="subtitle" macro='viewRevisions page:5'>
          -			last modified on
          -			<span macro="view modified date"></span>
          -		</span>
          -		<div macro="view title replyLink"></div>
          -	</span>
          -	<span class='followPlaceHolder' macro='followTiddlers'></span>
          -	<span class='modifierIcon'
          -		macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
          -	</span>
          -	<div class='tagClear'></div>
          -</div>
          -<div class='content'>
          -	<div class='viewer' macro='view text wikified'></div>
          -</div>
          -<div class='tagInfo'>
          -	<div class='tidTags' macro='tags'></div>
          -	<div class='tagging' macro='tagging'></div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          I refer to TiddlyWiki in these questions, but they should be taken as applying to TiddlyWeb and TiddlySpace, too.
          -
          -
          -
          
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
          -width="30" height="30">
          -<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -	<g>
          -		<path d="M 333.00003 234 L 306 258.75003 L 301.5 270 L 312.75 265.50003 L 339.75 240.74998 Z M 337.5 229.50002 
          -		L 335.24988 231.75008 L 341.99997 238.50003 L 344.24997 236.24995 Z M 342 225.00003 L 339.74988 227.25009 
          -		L 346.5 234.00005 L 348.75 231.75003 Z M 301.5 273.9719 C 301.5 273.9719 309.59888 277.99927 317.70013 273.97183 
          -		C 325.80066 269.94437 341.99997 276.65686 341.99997 276.65686 L 341.99997 273.97195 
          -		C 341.99997 273.97195 325.80014 267.2594 317.70013 271.28687 C 309.6 275.31451 301.5 271.28683 301.5 271.28683 Z" 
          -		fill="#101010" class="glyph"/>
          -	</g>
          -</g>
          -</svg>
          -
          -
          -
          /***
          -|''Name''|LoadMissingExternalTiddler|
          -|''Version''|0.1.0|
          -|''Author''|Jon Robson|
          -***/
          -//{{{
          -var _loadMissing = Story.prototype.loadMissingTiddler;
          -Story.prototype.loadMissingTiddler = function(title,fields,callback) {
          -	var matches = title.match(/([^\*]*) \*\(@([^\)]*)\)\*/);
          -	if(matches && matches.length > 0) {
          -		var sTitle = matches[1];
          -		var space = matches[2];		config.extensions.tiddlyspace.displayServerTiddler(story.getTiddler(title),
          -			sTitle, "bags/%0_public".format(space));
          -	} else {
          -	_loadMissing.apply(this, arguments)
          -	}
          -};
          -//}}}
          -
          -
          -
          -
          /***
          -https://raw.github.com/tiddlyweb/chrjs/master/main.js
          -***/
          -//{{{
          -// TiddlyWeb adaptor
          -// v0.14.3
          -
          -/*jslint vars: true, unparam: true, nomen: true, white: true */
          -/*global jQuery */
          -
          -var tiddlyweb = (function($) {
          -
          -"use strict";
          -
          -var tw = {
          -	routes: {
          -		// host is the TiddlyWeb instance's URI (including server_prefix)
          -		// placeholders "_type" & "name" refer to the respective bag/recipe
          -		root     : "{host}/",
          -		bags     : "{host}/bags",
          -		bag      : "{host}/bags/{name}",
          -		recipes  : "{host}/recipes",
          -		recipe   : "{host}/recipes/{name}",
          -		tiddlers : "{host}/{_type}s/{name}/tiddlers",
          -		tiddler  : "{host}/{_type}s/{name}/tiddlers/{title}",
          -		revisions: "{host}/{_type}s/{name}/tiddlers/{title}/revisions",
          -		revision : "{host}/{_type}s/{name}/tiddlers/{title}/revisions/{revision}",
          -		search   : "{host}/search?q={query}"
          -	}
          -};
          -
          -var convertTimestamp, supplant;
          -
          -// host (optional) is the URI of the originating TiddlyWeb instance
          -tw.Resource = function(type, host) {
          -	if(arguments.length) { // initialization
          -		this._type = type;
          -		if(host !== false) {
          -			this.host = host !== undefined ? host.replace(/\/$/, "") : null;
          -		}
          -	}
          -};
          -$.extend(tw.Resource.prototype, {
          -	// retrieves resource from server
          -	// callback is passed resource, status, XHR (cf. jQuery.ajax success)
          -	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          -	// filters is an optional filter string (e.g. "select=tag:foo;limit=5")
          -	get: function(callback, errback, filters) {
          -		var uri = this.route();
          -		if(filters) {
          -			var separator = uri.indexOf("?") === -1 ? "?" : ";";
          -			uri += separator + filters;
          -		}
          -		var self = this;
          -		return $.ajax({
          -			url: uri,
          -			type: "GET",
          -			dataType: "json",
          -			success: function(data, status, xhr) {
          -				var resource = self.parse(data);
          -				resource.etag = xhr.getResponseHeader("Etag");
          -				callback(resource, status, xhr);
          -			},
          -			error: function(xhr, error, exc) {
          -				errback(xhr, error, exc, self);
          -			}
          -		});
          -	},
          -	// sends resource to server
          -	// callback is passed data, status, XHR (cf. jQuery.ajax success)
          -	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          -	put: function(callback, errback) {
          -		var self = this;
          -		var options = {
          -			url: this.route(),
          -			type: "PUT",
          -			contentType: "application/json",
          -			data: JSON.stringify(this.baseData()),
          -			success: function(data, status, xhr) {
          -				callback(self, status, xhr);
          -			},
          -			error: function(xhr, error, exc) {
          -				errback(xhr, error, exc, self);
          -			}
          -		};
          -		if(this.ajaxSetup) {
          -			this.ajaxSetup(options);
          -		}
          -		return $.ajax(options);
          -	},
          -	// deletes resource on server
          -	// callback is passed data, status, XHR (cf. jQuery.ajax success)
          -	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
          -	"delete": function(callback, errback) {
          -		var self = this;
          -		var options = {
          -			url: this.route(),
          -			type: "DELETE",
          -			success: function(data, status, xhr) {
          -				callback(self, status, xhr);
          -			},
          -			error: function(xhr, error, exc) {
          -				errback(xhr, error, exc, self);
          -			}
          -		};
          -		if(this.ajaxSetup) {
          -			this.ajaxSetup(options);
          -		}
          -		return $.ajax(options);
          -	},
          -	// returns an object carrying only the essential information of the resource
          -	baseData: function() {
          -		var data = {},
          -			self = this;
          -		$.each(this.data, function(i, item) {
          -			var value = self[item];
          -			if(value !== undefined) {
          -				data[item] = value;
          -			}
          -		});
          -		return data;
          -	},
          -	// returns corresponding instance from a raw object (if applicable)
          -	parse: function(data) {
          -		return data;
          -	},
          -	// list of accepted keys in serialization
          -	data: [],
          -	// returns resource's URI
          -	route: function() {
          -		return supplant(tw.routes[this._type], this);
          -	}
          -});
          -
          -var Container = function(type, name, host) {
          -	if(arguments.length) { // initialization
          -		tw.Resource.apply(this, [type, host]);
          -		this.name = name;
          -		this.desc = "";
          -		this.policy = new tw.Policy({});
          -	}
          -};
          -Container.prototype = new tw.Resource();
          -$.extend(Container.prototype, {
          -	tiddlers: function() {
          -		return new tw.TiddlerCollection(this);
          -	},
          -	parse: function(data) {
          -		var type = tw._capitalize(this._type),
          -			container = new tw[type](this.name, this.host);
          -		data.policy = new tw.Policy(data.policy);
          -		return $.extend(container, data);
          -	},
          -	data: ["desc", "policy"]
          -});
          -
          -// attribs is an object whose members are merged into the instance (e.g. query)
          -tw.Collection = function(type, host, attribs) {
          -	if(arguments.length) { // initialization
          -		tw.Resource.apply(this, [type, host]);
          -		$.extend(this, attribs);
          -	}
          -};
          -tw.Collection.prototype = new tw.Resource();
          -
          -tw.TiddlerCollection = function(container, tiddler) {
          -	if(arguments.length) { // initialization
          -		tw.Collection.apply(this, [tiddler ? "revisions" : "tiddlers"]);
          -		this.container = container || null;
          -		this.tiddler = tiddler || null;
          -	}
          -};
          -tw.TiddlerCollection.prototype = new tw.Collection();
          -$.extend(tw.TiddlerCollection.prototype, {
          -	parse: function(data) {
          -		var container = this.container;
          -		return $.map(data, function(item, i) {
          -			var tiddler = new tw.Tiddler(item.title, container),
          -				bag = item.bag;
          -			tiddler = tw.Tiddler.prototype.parse.apply(tiddler, [item]);
          -			if(!tiddler.bag && bag) { // XXX: bag always present!?
          -				tiddler.bag = new tw.Bag(bag, container.host);
          -			}
          -			if(!tiddler.recipe && item.recipe) {
          -				tiddler.recipe = new tw.Recipe(item.recipe, container.host);
          -			}
          -			delete item.recipe;
          -			return $.extend(tiddler, item);
          -		});
          -	},
          -	route: function() {
          -		var params = this.container;
          -		if(this.tiddler) {
          -			var container = this.tiddler.bag || this.tiddler.recipe;
          -			params = {
          -				_type: container._type,
          -				host: container.host,
          -				name: container.name,
          -				title: this.tiddler.title
          -			};
          -		}
          -		return supplant(tw.routes[this._type], params);
          -	}
          -});
          -
          -tw.Search = function(query, host) {
          -	tw.Collection.apply(this, ["search", host]);
          -	this.query = query;
          -};
          -tw.Search.prototype = new tw.Collection();
          -$.extend(tw.Search.prototype, {
          -	parse: function(data) {
          -		this.container = { // XXX: hacky
          -			_type: "bag",
          -			host: this.host
          -		};
          -		var tiddlers = tw.TiddlerCollection.prototype.parse.apply(this, arguments);
          -		delete this.container;
          -		return tiddlers;
          -	}
          -});
          -
          -// title is the name of the tiddler
          -// container (optional) is an instance of either Bag or Recipe
          -// optionally accepts a single object representing tiddler attributes
          -tw.Tiddler = function(title, container) {
          -	tw.Resource.apply(this, ["tiddler", false]);
          -	this.title = title;
          -	this.bag = container && container._type === "bag" ? container : null;
          -	this.recipe = container && container._type === "recipe" ? container : null;
          -	var self = this;
          -	$.each(this.data, function(i, item) {
          -		self[item] = undefined; // exposes list of standard attributes for inspectability
          -	});
          -	if(title && title.title) { // title is an object of tiddler attributes
          -		$.extend(this, title);
          -	}
          -};
          -tw.Tiddler.prototype = new tw.Resource();
          -$.extend(tw.Tiddler.prototype, {
          -	revisions: function() {
          -		return new tw.TiddlerCollection(this.bag || this.recipe, this);
          -	},
          -	route: function() {
          -		var container = this.bag || this.recipe;
          -		var params = $.extend({}, this, {
          -			host: container ? container.host : null,
          -			_type: this.bag ? "bag" : (this.recipe ? "recipe" : null),
          -			name: container ? container.name : null
          -		});
          -		return supplant(tw.routes[this._type], params);
          -	},
          -	parse: function(data) {
          -		var tiddler = new tw.Tiddler(this.title),
          -			container = this.bag || this.recipe;
          -		if(data.bag) {
          -			tiddler.bag = new tw.Bag(data.bag, container.host);
          -			delete data.bag;
          -		}
          -		delete data.recipe;
          -		tiddler.created = data.created ? convertTimestamp(data.created) : new Date();
          -		delete data.created;
          -		tiddler.modified = data.modified ? convertTimestamp(data.modified) : new Date();
          -		delete data.modified;
          -		if(this.recipe) {
          -			tiddler.recipe = this.recipe;
          -		}
          -		return $.extend(tiddler, data);
          -	},
          -	data: ["created", "creator", "modifier", "modified", "tags", "type", "text",
          -			"fields"],
          -	ajaxSetup: function(options) {
          -		var self = this;
          -		if(this.etag && (options.type === "PUT" || options.type === "DELETE")) {
          -			options.beforeSend = function(xhr) {
          -				xhr.setRequestHeader("If-Match", self.etag);
          -			};
          -		}
          -		if(options.type === "PUT") {
          -			var callback = options.success;
          -			options.success = function(data, status, xhr) {
          -				var loc = xhr.getResponseHeader("Location"),
          -					etag = xhr.getResponseHeader("Etag");
          -				if(loc && etag) {
          -					self.etag = etag;
          -					if(!self.bag) {
          -						var bag = loc.split("/bags/").pop().split("/")[0];
          -						self.bag = new tw.Bag(bag, self.recipe.host);
          -					}
          -					callback(self, status, xhr);
          -				} else { // IE
          -					self.get(callback, options.error);
          -				}
          -			};
          -		}
          -	}
          -});
          -
          -tw.Revision = function(id, tiddler) {
          -	var container = tiddler.bag || tiddler.recipe;
          -	tw.Tiddler.apply(this, [tiddler.title, container]);
          -	this._type = "revision";
          -	this.revision = id;
          -};
          -tw.Revision.prototype = new tw.Tiddler();
          -$.extend(tw.Revision.prototype, {
          -	revisions: false,
          -	data: false,
          -	put: false,
          -	"delete": false
          -});
          -
          -tw.Bag = function(name, host) {
          -	Container.apply(this, ["bag", name, host]);
          -};
          -tw.Bag.prototype = new Container();
          -
          -tw.Recipe = function(name, host) {
          -	Container.apply(this, ["recipe", name, host]);
          -	this.recipe = [];
          -};
          -tw.Recipe.prototype = new Container();
          -$.extend(tw.Recipe.prototype, {
          -	data: ["recipe"].concat(Container.prototype.data)
          -});
          -
          -tw.Policy = function(constraints) { // TODO: validation?
          -	var self = this;
          -	$.each(this.constraints, function(i, item) {
          -		self[item] = constraints[item];
          -	});
          -};
          -tw.Policy.prototype.constraints = ["read", "write", "create", "delete",
          -	"manage", "accept", "owner"];
          -
          -/*
          - * utilities
          - */
          -
          -tw._capitalize = function(str) {
          -	return str.charAt(0).toUpperCase() + str.slice(1);
          -};
          -
          -// convert YYYYMMDDhhmmss timestamp to Date instance
          -convertTimestamp = function(t) {
          -	if (t.match(/^\d{12,17}$/)) {
          -		return new Date(Date.UTC(
          -			parseInt(t.substr(0, 4), 10),
          -			parseInt(t.substr(4, 2), 10) - 1,
          -			parseInt(t.substr(6, 2), 10),
          -			parseInt(t.substr(8, 2), 10),
          -			parseInt(t.substr(10, 2), 10),
          -			parseInt(t.substr(12, 2) || "0", 10),
          -			parseInt(t.substr(14, 3) || "0", 10)
          -		));
          -	} else {
          -		return new Date(Date.parse(t));
          -	}
          -};
          -
          -// adapted from Crockford (http://javascript.crockford.com/remedial.html)
          -supplant = function(str, obj) {
          -	return str.replace(/{([^{}]*)}/g, function (a, b) {
          -		var r = obj[b];
          -		r = typeof r === "string" || typeof r === "number" ? r : a;
          -		return $.inArray(b, ["host", "query"]) !== -1 ? r : encodeURIComponent(r); // XXX: special-casing
          -	});
          -};
          -
          -return tw;
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          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AP8zZgAAAGYA//8zAADMMwD/mTMAAGYzAP8zMwAAADMAzP8AAADMAADMmQAAAGYAAMwzAAAAAADuzAAA3QAAALvMAACqAAAAiMwAAHcAAABVmQAARAAAACKZAAARAADuAJkA3QAAALsAmQCqAAAAiACZAHcAAABVAJkARAAAACIAZgARAADuAABm3QAAALsAAGaqAAAAiAAAZncAAABVAABmRAAAACIAAGYRAAAA7u7uM93d3QC7u7szqqqqAIiIiDN3d3cAVVVVM0RERAAiIiIzERERAAAAADMBAQEBAQEBAQEBpXl5eXl5eXl5eXmlAQEBAQEBAQEBAQEBAQEBAQEBgHl5eXl5eXl5eXl5eXl5gAEBAQEBAQEBAQEBAQEB/Xp5eXlVT04qKioqTk9VeXl5ev0BAQEBAQEBAQEBAaV5eXlPKioqKioqKioqKioqT3l5eaUBAQEBAQEBAQGAeXlVTioqKioqKioqKioqKioqTlV5eYABAQEBAQEBgHl5VSoqKioqKioqKioqKioqKioqKlV5eYABAQEBAaV5eVUqKioqKioqKioqKioqKioqKioqKlV5eaUBAQEBeXlVKioqKioqKioqKioqKioqKioqKioqKlV5eQEBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBeXlPKioqKioqKjEyMjIyMjIyMjEqKioqKioqT3l5AXp5eSoqKioqKioxMjIxBwcHBzEyMjEqKioqKioqeXl6eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl5eU8qKioqKioyMgcHBwcHBwcHBwcyMioqKioqKk95eXl5TioqKioqMTIxBwcHBwcHBwcHBzEyMSoqKioqTnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eSoqKioqKjEyBwcHBwcHBwcHBwcHMjEqKioqKip5eXl5KioqKioqMTIHBwcHBwcHBwcHBwcyMSoqKioqKnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eU4qKioqKjEyMQcHBwcHBwcHBwcxMjEqKioqKk55eXl5TyoqKioqKjIyBwcHBwcHBwcHBzIyKioqKioqT3l5eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl6eXkqKioqKioqMTIyMQcHBwcxMjIxKioqKioqKnl5egF5eU8qKioqKioqMTIyMjIyMjIyMSoqKioqKipPeXkBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBAXl5VSoqKioqKioqKioqKioqKioqKioqKipVeXkBAQEB+nl5VSoqKioqKioqKioqKioqKioqKioqVXl5+gEBAQEBenl5VSoqKioqKioqKioqKioqKioqKlV5eXoBAQEBAQEBeXl5VU4qKioqKioqKioqKioqKk5VeXl5AQEBAQEBAQEBenl5eU8qKioqKioqKioqKipPeXl5egEBAQEBAQEBAQEB+nl5eXlVT04qKioqTk9VeXl5efoBAQEBAQEBAQEBAQEBAXl5eXl5eXl5eXl5eXl5eXkBAQEBAQEBAQEBAQEBAQEBAQF6eXl5eXl5eXl5eXoBAQEBAQEBAQEB/+AH//+AAf/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAHAAAADwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB///gB/8oAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAwAAAAMAAAADAAAABG1bSA61m3JXuqB4mbuhd8m9o3jqvaF4+b2hePm9o3jqu6F3ybqgeJm1m3JXbVtIDgAAAAQAAAADAAAAAwAAAAMAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAUAAAAGAAAACI98Wye0nXWavKF4876kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev+8oXjztJ11mo98WycAAAAIAAAABgAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAHAAAAChwcHBKulnGJvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+K6WcYkcHBwSAAAACgAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAADAAAABwAAAAtuYkUst552z76kev++pHr+1LuS//Latf/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/8tq1/9S7kv++pHr+vqR6/7eeds9uYkUsAAAACwAAAAcAAAADAAAAAQAAAAAAAAABAAAAAgAAAAQAAAAIi3hbNbqgd+a+pHr/xayD/+3Vr//85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr//FrIP/vqR6/7qgd+aJdVg0AAAACAAAAAQAAAACAAAAAQAAAAEAAAACAAAABIl8WSW8oXjlvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7yheOWJfFklAAAABAAAAAIAAAABAAAAAAAAAAFfXz8Iu6F4zL6kev/Msor/+uK+//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//rivv/Msor/vqR6/7uheMxfXz8IAAAAAQAAAAAAAAAAAAAAAbqid4K+pHr/xayD//ngvP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//fgvP/FrIP/vqR6/7qid4IAAAABAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAALuheJa+pHr/1LuS//zlwP/85cD//OXA//zlwP/85cD//OXA//riwP/Pq8f/r4HM/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HN/6+BzP/Pq8f/+uLA//zlwP/85cD//OXA//zlwP/85cD//OXA/9S5kv++pHr/u6F4lgAAAACii3MLvKF4876kev/y2rX//OXA//zlwP/85cD//OXA//zlwP/64sD/w5vJ/6+Bzf+vg83/w5vc/9W06v/dwPD/3cDw/9W06v/Dm9z/r4PN/6+Bzf/Dm8n/+uLA//zlwP/85cD//OXA//zlwP/85cD/8tq1/76kev+8oXjzootzC72feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVvaF4mL6kev/fxZ7//OXA//zlwP/85cD//OXA//zlwP/v08L/r4HM/6+Dzf/Wtev/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/r4PN/6+BzP/v08L//OXA//zlwP/85cD//OXA//zlwP/fxZ7/vqR6/72heJi8oXfIvqR6/+zUrv/85cD//OXA//zlwP/85cD//OXA/9Crx/+vgc3/w5vc/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Dm9z/r4HN/9Crx//85cD//OXA//zlwP/85cD//OXA/+zUrv++pHr/vKF3yL2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvaF4+b6kev/64r7//OXA//zlwP/85cD//OXA//zlwP+zhsz/r4HN/93A8P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/3cDw/6+Bzf+zhsz//OXA//zlwP/85cD//OXA//zlwP/64r7/vqR6/72hePm9oXj5vqR6//rivv/85cD//OXA//zlwP/85cD//OXA/7OGzP+vgc3/3cDw/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//dwPD/r4HN/7OGzP/85cD//OXA//zlwP/85cD//OXA//rivv++pHr/vaF4+b2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvKF3yL6kev/s1K7//OXA//zlwP/85cD//OXA//zlwP/Qq8f/r4HN/8Ob3P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/w5vc/6+Bzf/Qq8f//OXA//zlwP/85cD//OXA//zlwP/s1K7/vqR6/7yhd8i9oXiYvqR6/9/Fnv/85cD//OXA//zlwP/85cD//OXA/+/Twv+vgcz/r4PN/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9a16/+vg83/r4HM/+/Twv/85cD//OXA//zlwP/85cD//OXA/9/Fnv++pHr/vaF4mL2feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVootzC7yhePO+pHr/8tq1//zlwP/85cD//OXA//zlwP/85cD/+uLA/8Obyf+vgc3/r4PN/8Ob3P/VtOr/3cDw/93A8P/VtOr/w5vc/6+Dzf+vgc3/w5vJ//riwP/85cD//OXA//zlwP/85cD//OXA//Latf++pHr/vKF486KLcwsAAAAAu6N3l76kev/Uu5L//OXA//zlwP/85cD//OXA//zlwP/85cD/+uLA/8+rx/+vgcz/r4HN/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HM/8+rx//64sD//OXA//zlwP/85cD//OXA//zlwP/85cD/1LmS/76kev+7oXiWAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAAAAAAAC6oneCvqR6/8Wsg//54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/34Lz/xayD/76kev+6oneCAAAAAAAAAAAAAAAAAAAAAH9/VQa8oHjLvqR6/8yyiv/64r7//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/+uK+/8yyiv++pHr/vKB4y39/VQYAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh67o3nkvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7ujeeSyoW4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALqbdim7o3nkvqR6/8Wsg//t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/t1a//xayD/76kev+7o3nkupt2KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh68oHjLvqR6/76kev7Uu5L/8tq1//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/y2rX/1LmS/76kev6+pHr/vKB4y7Khbh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/VQa6oneCvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+Lqid4J/f1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3l28gu6F4lryhePO+pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vKF487uheJa3l28gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAootzC72feFW9oXiYvKF3yL2jeOq9oXj5vaF4+b2jeOq8oXfIvaF4mL2feFWii3MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gB///gAH//gAAf/wAAD/4AAAf8AAAD+AAAAfAAAADwAAAA4AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af/
          -
          -
          -
          /***
          -|''Name''|BinaryUploadPlugin|
          -|''Version''|0.3.16|
          -|''Author''|Ben Gillies and Jon Robson|
          -|''Type''|plugin|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/BinaryUploadPlugin.js|
          -|''Description''|Upload a binary file to TiddlyWeb|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlySpaceConfig TiddlyWebConfig|
          -!Usage
          -{{{
          -<<binaryUpload bag:<name> edit:tags edit:title tags:<default tags> title:<title> >>
          -}}}
          -* {{{bag:<name>}}}: optional; if left out, the file will be saved to the current workspace
          -* {{{edit:tags}}}: specifies that you want to tag the file being uploaded
          -* {{{edit:title}}}: specifies that you want to set the title to something other than the filename
          -* {{{tags:<default tags>}}}: specifies a default set of tags to apply to the file (requires {{{edit:tags}}} to be set)
          -* {{{title:<title>}}}: predefines the title of the binary tiddler
          -!Requires
          -TiddlyWeb
          -tiddlywebplugins.form
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -
          -var macro = config.macros.binaryUpload = {
          -	locale: {
          -		titleDefaultValue: "Please enter a title...",
          -		tagsDefaultValue: "Please enter some tags...",
          -		titlePrefix: "title: ",
          -		tagsPrefix: "tags: ",
          -		loadSuccess: 'Tiddler %0 successfully uploaded',
          -		loadError: "An error occurred when uploading the tiddler %0",
          -		uploadInProgress: "Please wait while the file is uploaded...",
          -		membersOnly: "Only members can upload."
          -	},
          -	renderInputFields: function(container, options) {
          -		var locale = macro.locale;
          -		var editableFields = options.edit;
          -		var includeFields = {
          -			tags:  editableFields && editableFields.contains("tags") ? true : false,
          -			title: editableFields && editableFields.contains("title") ? true : false
          -		};
          -		var fields = ["title", "tags"];
          -		for(var i = 0; i < fields.length; i++) {
          -			var fieldName = fields[i];
          -			var userDefault = options[fieldName];
          -			var defaultValue = userDefault ? userDefault[0] : false;
          -			if(includeFields[fieldName] || defaultValue) {
          -				var localeDefault = locale["%0DefaultValue".format(fieldName)];
          -				var className = defaultValue ? "userInput" : "userInput notEdited";
          -				var inputEl;
          -				var val = defaultValue || localeDefault || "";
          -				var iContainer = $("<div />").addClass("binaryUpload%0".format(fieldName)).
          -					appendTo(container);
          -				if(defaultValue && !includeFields[fieldName]) {
          -					var label = locale["%0Prefix".format(fieldName)];
          -					$("<span />").text(label).appendTo(iContainer);
          -					$("<span />").addClass("disabledInput").text(val).appendTo(iContainer);
          -					inputEl = $("<input />").attr("type", "hidden");
          -				} else {
          -					inputEl = $("<input />").attr("type", "text");
          -				}
          -				inputEl.attr("name", fieldName).
          -					addClass("%0Edit".format(fieldName)).
          -					val(val).addClass(className).appendTo(iContainer);
          -			}
          -		}
          -	},
          -	getTiddlerName: function(fileName) {
          -		var fStart = fileName.lastIndexOf("\\");
          -		var fStart2 = fileName.lastIndexOf("/");
          -		fStart = fStart < fStart2 ? fStart2 : fStart;
          -		fileName = fileName.substr(fStart+1);
          -		return fileName;
          -	},
          -	errorHandler: function(fileName) {
          -		displayMessage("upload of file %0 failed".format(fileName));
          -	},
          -	uploadFile: function(place, baseURL, workspace, options) {
          -		var pleaseWait = $(".uploadProgress", place);
          -		var iframeName = options.target;
          -		var form = $("form", place);
          -		var existingVal = $("input[name=title]", form).val();
          -		var fileName = existingVal || $('input:file', form).val();
          -		if(!fileName) {
          -			return false; // the user hasn't selected a file yet
          -		}
          -		fileName = macro.getTiddlerName(fileName);
          -		$("input[name=title]", place).val(fileName);
          -		// we need to go somewhere afterwards to ensure the onload event triggers
          -		var redirectTo = "/%0/tiddlers.txt?select=title:%1".
          -			format(workspace, fileName);
          -		var token = tiddlyspace ? tiddlyspace.getCSRFToken() : "";
          -		var action = "%0?csrf_token=%1&redirect=%2"
          -			.format(baseURL, token, redirectTo);
          -		form[0].action = action; // dont use jquery to work with ie
          -		form[0].target = iframeName;
          -		// do not refactor following line... won't work in IE6 otherwise
          -		$(place).append($('<iframe name="' + iframeName + '" id="' + iframeName + '"/>').css('display','none'));
          -		macro.iFrameLoader(iframeName, function() {
          -			var content = document.getElementById(iframeName).contentWindow.document.documentElement;
          -			if($(content).text().indexOf(fileName) > -1) {
          -				options.callback(place, fileName, workspace, baseURL);
          -			} else {
          -				macro.errorHandler(fileName);
          -			}
          -			form.show(1000);
          -			pleaseWait.hide(1000);
          -		});
          -		form.hide(1000);
          -		pleaseWait.show(1000);
          -		return true;
          -	},
          -	createUploadForm: function(place, options) {
          -		var locale = macro.locale;
          -		if(readOnly) {
          -			$('<div class="annotation" />').text(locale.membersOnly).
          -				appendTo(place);
          -			return;
          -		}
          -		var bag = options.bag;
          -		options.callback = options.callback ? options.callback :
          -			function(place, fileName, workspace, baseurl) {
          -				macro.displayFile(place, fileName, workspace);
          -				displayMessage(locale.loadSuccess.format(fileName));
          -				$("input[type=text]", place).val("");
          -			};
          -		var defaults = config.defaultCustomFields;
          -		place = $("<div />").addClass("container").appendTo(place)[0];
          -		var workspace = bag ? "bags/%0".format(bag) : config.defaultCustomFields["server.workspace"];
          -		var baseURL = defaults["server.host"];
          -		baseURL += (baseURL[baseURL.length - 1] !== "/") ? "/" : "";
          -		baseURL = "%0%1/tiddlers".format(baseURL, workspace);
          -		//create the upload form, complete with invisible iframe
          -		var iframeName = "binaryUploadiframe%0".format(Math.random());
          -		// do not refactor following line of code to work in IE6.
          -		var form = $('<form action="%0" method="POST" enctype="multipart/form-data" />'.
          -					format(baseURL)).addClass("binaryUploadForm").
          -			appendTo(place)[0];
          -		macro.renderInputFields(form, options);
          -		$(form).
          -			append('<div class="binaryUploadFile"><input type="file" name="file" /></div>').
          -			append('<div class="binaryUploadSubmit"><input type="submit" value="Upload" disabled /></div>').
          -			submit(function(ev) {
          -				this.target = iframeName;
          -				options.target = iframeName;
          -				macro.uploadFile(place, baseURL, workspace, options);
          -			})
          -			.find('[type="file"]').bind('change', function() {
          -				$(form).find('[type="submit"]').prop('disabled', false);
          -			}).end();
          -		$('<div />').addClass("uploadProgress").text(locale.uploadInProgress).hide().appendTo(place);
          -		$("input[name=file]", place).change(function(ev) {
          -			var target = $(ev.target);
          -			var fileName = target.val();
          -			var title = $("input[type=text][name=title]", place);
          -			if(!title.val()) {
          -				title.val(fileName);
          -			}
          -		});
          -	},
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		params = paramString.parseParams(null, null, true);
          -		macro.createUploadForm(place, params[0]);
          -	},
          -	iFrameLoader: function(iframeName, callback) {
          -		var iframe = document.getElementById(iframeName); //jQuery doesn't seem to want to do this!?
          -		var locale = macro.locale;
          -		$(".userInput").addClass("notEdited"); // reset editing
          -		var finishedLoading = function() {
          -			callback();
          -		};
          -		var iFrameLoadHandler = function() {
          -			finishedLoading.apply();
          -			return;
          -		};
          -
          -		iframe.onload = iFrameLoadHandler;
          -		//IE
          -		completeReadyStateChanges = 0;
          -		iframe.onreadystatechange = function() {
          -			if (++(completeReadyStateChanges) == 3) {
          -				iFrameLoadHandler();
          -			}
          -		};
          -	},
          -	displayFile: function(place, title, workspace) {
          -		var adaptor = store.getTiddlers()[0].getAdaptor();
          -		var context = {
          -			workspace: workspace,
          -			host: config.defaultCustomFields['server.host']
          -		};
          -		adaptor.getTiddler(title, context, null, function(context) {
          -			if(context.status) {
          -				store.addTiddler(context.tiddler);
          -				story.displayTiddler(place, title);
          -				var image = config.macros.image;
          -				if(image && image.refreshImage) {
          -					image.refreshImage("/%0/tiddlers/%1".format(workspace, title));
          -					image.refreshImage(title);
          -					image.refreshImage("/%0".format(title));
          -					image.refreshImage("%0/%1/tiddlers/%2".format(config.extensions.tiddlyweb.host, workspace, title));
          -				}
          -			} else {
          -				displayMessage(macro.locale.loadError.format(title));
          -			}
          -		});
          -	}
          -};
          -
          -if(tiddlyspace) {
          -	config.macros.binaryUploadPublic = {
          -		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -			var options = paramString.parseParams(null, null, true)[0];
          -			var bag = tiddlyspace.getCurrentBag("public");
          -			options.bag = bag;
          -			macro.createUploadForm(place, options);
          -		}
          -	};
          -	config.messages.privacySetting = config.options.chkPrivateMode ?
          -		"private" : "public";
          -	config.macros.binaryUpload.defaultWorkspace = tiddlyspace.
          -		getCurrentWorkspace(config.messages.privacySetting);
          -}
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          <!DOCTYPE html>
          -<html lang="en">
          -<head>
          -	<meta charset="utf-8"/>
          -	<title>TiddlySpace Apps</title>
          -	<link rel="stylesheet" href="/bags/common/tiddlers/reset.css" />
          -	<link rel="stylesheet" href="/bags/common/tiddlers/appspage.css" />
          -	<!--[if lt IE 7 ]>
          -	<link rel="stylesheet" href="/bags/common/tiddlers/appspageie6.css" />
          -	<![endif]-->
          -</head>
          -<body>
          -	
          -	<div id="wrapper">
          -		<div id="TSbar"></div>
          -		<div id="main-content">
          -			<div id="space-details">
          -				<a href="/_space"><img class="siteicon"></a>
          -				<div id="title-subtitle">
          -					<h1 class="spaceaddress">
          -						<span class="spaceName"></span><span class="hostName"></span>
          -					</h1>
          -					<p class="tagline"><span class="subTitle"></span><a class="managespaces" href="/_space">manage space</a></p>
          -				</div>
          -			</div>
          -			<div id="holder">
          -				<div id="appswitcher-wrapper">
          -					<div id="appswitcher">
          -						<h2>Your Apps</h2>
          -						<ul id="app-list">
          -							<li class="htmlserialisation">
          -								<a href="/tiddlers.html?select=tag:!excludeLists;sort=-modified">
          -									<img src="/bags/common/tiddlers/browse_read_blue.png" alt="Icon for the HTML Serialisation" class="app-img" />
          -									BROWSE
          -								</a>
          -							</li>
          -							<li class="tiddlywiki">
          -								<a href="/tiddlers.wiki">
          -									<img src="/bags/common/tiddlers/tiddlywiki2_blue.png" alt="Icon for TiddlyWiki" class="app-img" />
          -									TIDDLYWIKI
          -								</a>
          -							</li>
          -						</ul>
          -						<div id="addapp">
          -							<button class="inactive">Add More!</button>
          -						</div>
          -					</div>
          -					<div id="app-desc">
          -						<ul>
          -							<li class="htmlserialisationdesc"><p>an easy to understand HTML representation of your content.</p></li>
          -							<li class="tiddlywikidesc"><p>use TiddlyWiki to create, edit and organise your content.</p></li>
          -						</ul>
          -					</div>
          -					<div style="clear: both;"></div>
          -				</div>
          -			</div>
          -		</div>
          -		<div id="footer"><!-- ie doesn't support footer tag -->
          -			<div id="footer-content">
          -				<div class="links">
          -					<a href="http://blog.tiddlyspace.com">blog</a>
          -					<a href="http://featured.tiddlyspace.com">featured</a>
          -					<a href="http://docs.tiddlyspace.com">documentation</a>
          -					<a href="https://github.com/TiddlySpace/tiddlyspace">source</a>
          -				</div>
          -				<p>TiddlySpace 2011, created by <a href="http://osmosoft.com">Osmosoft</a></p>
          -			</div>
          -		</div>
          -	</div>
          -	
          -	<script type="text/javascript" src="/bags/common/tiddlers/backstage.js"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/jquery.js"></script>
          -	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/chrjs-store.js"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/jquery-json.js"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/appspage.js"></script>
          -</body>
          -</html>
          -
          -
          -
          <!--{{{-->
          -<div class='header'>
          -	<div id='sidebarSearch'>
          -		<span macro='search'></span>
          -	</div>
          -	<div class='headerForeground'>
          -		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
          -		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
          -	</div>
          -	<div class='clearFloat'></div>
          -</div>
          -
          -<div id='menuBar'>
          -	<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
          -	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
          -</div>
          -<div id='displayArea'>
          -	<div id='messageArea'></div>
          -	<div id='tiddlerDisplay'></div>
          -	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceInitialization|
          -|''Version''|0.7.3|
          -|''Description''|Initializes new TiddlySpaces the first time they are created|
          -|''Status''|@@beta@@|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/blob/master/src/plugins/TiddlySpaceInit.js|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlySpaceConfig RandomColorPalettePlugin chrjs ImageMacroPlugin|
          -!TODO
          -* robust error notification and recovery
          -!MarkupPreHead
          -<!--{{{-->
          -<link href="/bags/%0_public/tiddlers.atom" rel="alternate"
          -	type="application/atom+xml" title="%0's public feed" />
          -<link rel="canonical" href="%1/" />
          -<!--}}}-->
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var versionField = "tiddlyspaceinit_version";
          -var markupPreHead = store.getTiddlerText(tiddler.title + "##MarkupPreHead", "");
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var currentSpace = tiddlyspace.currentSpace;
          -var tweb = config.extensions.tiddlyweb;
          -
          -var plugin = config.extensions.TiddlySpaceInit = {
          -	version: "0.6",
          -	SiteTitle: "%0",
          -	SiteSubtitle: "a TiddlySpace",
          -	flagTitle: "%0SetupFlag",
          -	flagWarning: "Please do not modify this tiddler; it was created " +
          -		"automatically upon space creation.",
          -
          -	dispatch: function(ev) {
          -		var title = plugin.flagTitle.format([currentSpace.name]);
          -		config.annotations[title] = plugin.flagWarning;
          -		if(currentSpace.type != "private") {
          -			return;
          -		}
          -		var tiddlers = [];
          -		var tid = store.getTiddler(title);
          -		if(tid) {
          -			curVersion = parseFloat(tid.fields[versionField]);
          -			reqVersion = parseFloat(plugin.version);
          -			if(curVersion < reqVersion) {
          -				plugin.update(curVersion, tid);
          -				tid.fields[versionField] = plugin.version;
          -				tid.incChangeCount();
          -				tid = store.saveTiddler(tid);
          -				tiddlers.push(tid);
          -			}
          -		} else { // first run
          -			tid = new Tiddler(title);
          -			tid.tags = ["excludeLists", "excludeSearch", "excludePublisher"];
          -			tid.fields = $.extend({}, config.defaultCustomFields);
          -			tid.fields[versionField] = plugin.version;
          -			tid.text = "@@%0@@".format([plugin.flagWarning]);
          -			tid = store.saveTiddler(tid);
          -			tiddlers = tiddlers.concat(plugin.firstRun(), tid);
          -		}
          -		autoSaveChanges(null, tiddlers);
          -	},
          -	update: function(curVersion, flagTiddler) {
          -		if(curVersion < 0.2) {
          -			this.createAvatar();
          -		}
          -		if(curVersion < 0.3) {
          -			flagTiddler.tags.pushUnique("excludePublisher"); // XXX: never persisted
          -		}
          -		if(curVersion < 0.5) { // v0.4 was faulty
          -			this.setupMarkupPreHead();
          -		}
          -		if(curVersion < 0.6) {
          -			this.purgeSystemSettings();
          -		}
          -	},
          -	pubTid: {
          -		tags: ["excludeLists", "excludeSearch"],
          -		fields: $.extend({}, config.defaultCustomFields, {
          -			"server.workspace": tiddlyspace.getCurrentWorkspace("public")
          -		})
          -	},
          -	makeTiddlerIfNot: function(tiddler) {
          -		if (!store.tiddlerExists(tiddler.title)) {
          -			$.extend(true, tiddler, plugin.pubTid);
          -			return [store.saveTiddler(tiddler)];
          -		} else {
          -			return [];
          -		}
          -	},
          -	firstRun: function() {
          -		var tiddlers = [];
          -		// generate Site*itle
          -		$.each(["SiteTitle", "SiteSubtitle"], function(i, item) {
          -			var tid = new Tiddler(item);
          -			tid.text = plugin[item].format([currentSpace.name]);
          -			tiddlers.push.apply(tiddlers,
          -				plugin.makeTiddlerIfNot(tid));
          -		});
          -		// generate public ColorPalette
          -		var tid = new Tiddler("ColorPalette");
          -		tid.text = config.macros.RandomColorPalette.generatePalette({
          -			saturation_pale: 0.67, saturation_light: 0.53,
          -			saturation_mid: 0.43, saturation_dark: 0.06,
          -			pale: 0.99, light: 0.85, mid: 0.5, dark: 0.31
          -		},
          -			false);
          -		tiddlers.push.apply(tiddlers, plugin.makeTiddlerIfNot(tid));
          -		this.createAvatar();
          -		this.setupMarkupPreHead();
          -		return tiddlers;
          -	},
          -	// remove _cookie slices (TiddlyWiki 2.6.2 beta 6 remnants)
          -	purgeSystemSettings: function() {
          -		var ss = store.getTiddler("SystemSettings");
          -		if(ss) {
          -			var lines = ss.text.split("\n");
          -			var persistentOptions = $.grep(lines, function(line, i) {
          -				return line.indexOf("_cookie:") == -1;
          -			});
          -			ss.text = persistentOptions.join("\n");
          -			ss = store.saveTiddler(ss);
          -			autoSaveChanges(null, [ss]);
          -		}
          -	},
          -	createAvatar: function() {
          -		var avatar = "SiteIcon";
          -		var host = tweb.host;
          -		var notify = function(xhr, error, exc) {
          -			displayMessage("ERROR: could not create avatar - " + // TODO: i18n
          -				"%0: %1".format([xhr.statusText, xhr.responseText]));
          -			// TODO: resolve!?
          -		};
          -
          -		var pubBag = tiddlyspace.getCurrentBag("public");
          -		var tid = new tiddlyweb.Tiddler(avatar);
          -		tid.bag = new tiddlyweb.Bag(pubBag, host);
          -
          -		var callback = function(data, status, xhr) {}; // avatar already exists; do nothing
          -		var errback = function(xhr, error, exc) {
          -			if(xhr.status != 404) {
          -				return;
          -			}
          -			// copy default avatar
          -			var _notify = function(tid, status, xhr) {
          -				displayMessage("created avatar"); // TODO: i18n
          -				var image = config.macros.image;
          -				if(image && image.refreshImage) {
          -					var uri = "/%0/tiddlers/SiteIcon".
          -						format(tiddlyspace.getCurrentWorkspace("public"));
          -					image.refreshImage(uri);
          -					image.refreshImage("SiteIcon");
          -				}
          -			};
          -			var _callback = function(tid, status, xhr) {
          -				tid.title = avatar;
          -				tid.bag.name = pubBag;
          -				delete tid.etag;
          -				tid.put(_notify, notify); // TODO: add to current session document (via adaptor?)
          -			};
          -			tweb.getUserInfo(function(user) {
          -				var avatarTitle = currentSpace.name == user.name ?
          -					"defaultUserIcon" : "defaultSiteIcon";
          -				var tid = new tiddlyweb.Tiddler(avatarTitle);
          -				tid.bag = new tiddlyweb.Bag("common", host);
          -				tid.get(_callback, notify);
          -			});
          -		};
          -		tid.get(callback, errback);
          -	},
          -	savePublicTiddlerText: function(title, text, pubWorkspace) {
          -		var tid = new Tiddler(title);
          -		tid.text = text;
          -		tid.tags = ["excludeLists"];
          -		tid.fields = $.extend({}, config.defaultCustomFields);
          -		tid.fields["server.workspace"] = pubWorkspace;
          -		tid.fields["server.page.revision"] = "false";
          -		tid = store.saveTiddler(tid);
          -		autoSaveChanges(null, [tid]);
          -	},
          -	setupMarkupPreHead: function() {
          -		var pubWorkspace = tiddlyspace.getCurrentWorkspace("public");
          -		var existing = store.getTiddler("MarkupPreHead");
          -		if(!existing || existing.fields["server.workspace"] != pubWorkspace) {
          -			var context = this;
          -			tweb.getStatus(function(status) {
          -				var text = markupPreHead.format(currentSpace.name,
          -					tiddlyspace.getHost(status.server_host, currentSpace.name));
          -				context.savePublicTiddlerText("MarkupPreHead", text,
          -					pubWorkspace);
          -			});
          -		}
          -		// also set up DefaultTiddlers
          -		var title = "DefaultTiddlers";
          -		existing = store.getTiddler(title) || new Tiddler(title);
          -		if(existing.fields["server.workspace"] != pubWorkspace) {
          -			var text = existing.text || store.getShadowTiddlerText(title);
          -			this.savePublicTiddlerText(title, text, pubWorkspace);
          -		}
          -	}
          -};
          -
          -$(document).bind("startup", plugin.dispatch);
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          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
          -
          -
          -
          
          -
          -
          -
          /***
          -|''Name:''|TiddlySpaceLinkPlugin|
          -|''Description:''|Formatter to reference other spaces from wikitext |
          -|''Author:''|PaulDowney (psd (at) osmosoft (dot) com) |
          -|''Source:''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceLinkPlugin.js|
          -|''Version:''|1.4.2|
          -|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
          -|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
          -|''~CoreVersion:''|2.4|
          -!!Documentation
          -This plugin provides wikitext formatters for referencing another [[space|Space]] on the same TiddlySpace server, as in the following examples:
          -<<<
          -  {{{@space}}} -- @space 
          -  {{{~@space}}} -- ~@space 
          -  {{{Tiddler@space}}} -- Tiddler@space
          -  {{{[[Tiddler Title]]@space}}} -- [[Tiddler Title]]@space 
          -  {{{[[Link text|Tiddler Title]]@space}}} -- [[Link text|Tiddler Title]]@space
          -<<<
          -Links to tiddlers with a title begining with an "@" remain as tiddlyLinks:
          -<<<
          -  {{{[[@tiddler]]}}} -- [[@tiddler]]
          -<<<
          -and these may be changed into a space link using {{{@@}}}:
          -<<<
          -  {{{[[@@space]]}}} -- [[@@space]]
          -  {{{[[Link to an another space|@@space]]}}} -- [[Link to another space|@@space]]
          -  {{{[[@space|@@space]]}}} -- [[@space|@@space]]
          -<<<
          -TiddlySpace includes the [[TiddlySpaceLinkPlugin]] which provides WikiText markup for linking to other spaces on the same server. For example @glossary is a link to the {{{glossary}}} space and [[Small Trusted Group]]@glossary a link to an individual tiddler in the @glossary space. Prefixing the link with a tilde escapes the link, for example {{{~@space}}}.
          -Email addresses, for example joe.bloggs@example.com and mary@had.a.little.lamb.org should be unaffected.
          -!!Features
          -The plugin provides external links decorated so that other plugins may be included to add features such as the ability to dynamically pull externally linked tiddlers into the current TiddlyWiki.
          -Wikitext linking to a space on another server, for example from a tiddler in a space on tiddlyspace.com to a tiddler or a space on example.com, isn't currently supported. 
          -!!Code
          -***/
          -//{{{
          -/*jslint onevar: false nomen: false plusplus: false */
          -/*global jQuery config createTiddlyText createExternalLink createTiddlyLink */
          -
          -function createSpaceLink(place, spaceName, title, alt, isBag) {
          -	var link, a, currentSpaceName, label;
          -	try {
          -		if (spaceName === config.extensions.tiddlyspace.currentSpace.name) {
          -			title = title || spaceName;
          -			a = createTiddlyLink(place, title, false);
          -			jQuery(a).text(alt || title);
          -			return a;
          -		}
          -	} catch (ex1) {
          -		currentSpaceName = false;
          -	}
          -
          -	a = jQuery("<a />").addClass('tiddlySpaceLink externalLink').appendTo(place)[0];
          -	if(title) {
          -		jQuery(a).attr('tiddler', title);
          -	}
          -	if(isBag) {
          -		jQuery(a).attr('bag', spaceName);
          -	} else {
          -		jQuery(a).attr('tiddlyspace', spaceName);
          -	}
          -
          -	config.extensions.tiddlyweb.getStatus(function(status) {
          -		link = status.server_host.url;
          -		if (title) {
          -			label = alt || title;
          -			link = link + "/" + encodeURIComponent(title);
          -		} else {
          -			label = alt || spaceName;
          -		}
          -		// assumes a http URI without user:pass@ prefix
          -		if(!isBag) {
          -			link = link.replace("http://", "http://" + spaceName.toLowerCase() + ".");
          -		} else {
          -			link += "/bags/" + spaceName + "/tiddlers.wiki";
          -		}
          -		jQuery(a).attr("href", link).text(label);
          -	});
          -	return a;
          -}
          -
          -(function ($) {
          -
          -	config.textPrimitives.spaceName = "[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]";
          -	config.textPrimitives.spaceNameStrict = "[a-z][a-z0-9-]*";
          -	config.textPrimitives.bareTiddlerLetter = config.textPrimitives.anyLetterStrict;
          -
          -	config.formatters.splice(0, 0, {
          -		name: "spacenameLink",
          -		match: config.textPrimitives.unWikiLink + "?" + config.textPrimitives.bareTiddlerLetter + "*@" + config.textPrimitives.spaceName + "\\.?.?",
          -		lookaheadRegExp: new RegExp(config.textPrimitives.unWikiLink + "?(" + config.textPrimitives.bareTiddlerLetter + "*)@(" + config.textPrimitives.spaceName + ")", "mg"),
          -		handler: function (w) {
          -			if (w.matchText.substr(w.matchText.length - 2, 1) === '.' && w.matchText.substr(w.matchText.length - 1, 1).match(/[a-zA-Z]/)) {
          -				w.outputText(w.output, w.matchStart, w.nextMatch);
          -				return;
          -			}
          -			if (w.matchText.substr(0, 1) === config.textPrimitives.unWikiLink) {
          -				w.outputText(w.output, w.matchStart + 1, w.nextMatch);
          -				return;
          -			}
          -			this.lookaheadRegExp.lastIndex = w.matchStart;
          -			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          -			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          -				createSpaceLink(w.output, lookaheadMatch[2], lookaheadMatch[1]);
          -				w.nextMatch = this.lookaheadRegExp.lastIndex;
          -			}
          -		}
          -	},
          -	{
          -		name: "tiddlySpaceLink",
          -		match: "\\[\\[[^\\|\\]]*\\|*@@" + config.textPrimitives.spaceName + "\\]",
          -		lookaheadRegExp: new RegExp("\\[\\[(.*?)(?:\\|@@(.*?))?\\]\\]", "mg"),
          -		handler: function (w) {
          -			this.lookaheadRegExp.lastIndex = w.matchStart;
          -			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          -			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          -				var alt = lookaheadMatch[2] ? lookaheadMatch[1] : lookaheadMatch[1].replace(/^@@/, "");
          -				var space = lookaheadMatch[2] || alt;
          -				createSpaceLink(w.output, space, "", alt);
          -				w.nextMatch = this.lookaheadRegExp.lastIndex;
          -			}
          -		}
          -	},
          -	{
          -		name: "tiddlyLinkSpacenameLink",
          -		match: "\\[\\[[^\\[]*\\]\\]@",
          -		lookaheadRegExp: new RegExp("\\[\\[(.*?)(?:\\|(.*?))?\\]\\]@(" + config.textPrimitives.spaceName + ")", "mg"),
          -		handler: function (w) {
          -			this.lookaheadRegExp.lastIndex = w.matchStart;
          -			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          -			if (lookaheadMatch && lookaheadMatch.index === w.matchStart) {
          -				var title = lookaheadMatch[2] || lookaheadMatch[1];
          -				var alt = lookaheadMatch[1] || lookaheadMatch[2];
          -				createSpaceLink(w.output, lookaheadMatch[3], title, alt);
          -				w.nextMatch = this.lookaheadRegExp.lastIndex;
          -			}
          -		}
          -	});
          -
          -	// ensure space links don't appear as missing links
          -	config.textPrimitives.brackettedLink = "\\[\\[([^\\]][^@\\]][^\\]]*)\\]\\](?=[^@])";
          -	config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\](?=[^@])";
          -
          -	// reevaluate derrived expressions ..
          -	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" + config.textPrimitives.titledBrackettedLink + ")|(?:" +
          -		config.textPrimitives.brackettedLink + ")|(?:" +
          -		config.textPrimitives.urlPattern + ")","mg");
          -	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+ config.textPrimitives.wikiLink + ")|(?:" +
          -		config.textPrimitives.titledBrackettedLink + ")|(?:" +
          -		config.textPrimitives.brackettedLink + ")|(?:" +
          -		config.textPrimitives.urlPattern + ")","mg");
          -
          -	// treat space links in titledBracketedLink as external links
          -	var missingTiddlySpaceLink = new RegExp("^@@" + config.textPrimitives.spaceName + "$", "");
          -	var isExternalLink = config.formatterHelpers.isExternalLink;
          -	config.formatterHelpers.isExternalLink = function(link) {
          -		return missingTiddlySpaceLink.test(link) || isExternalLink(link);
          -	};
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          
          -
          -
          -
          <<tsScan "How important to you are TiddlyWiki's offline capabilities*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          -
          -
          -
          
          -
          -
          -
          |~ViewToolbar|+editTiddler +cloneTiddler > fields refreshTiddler changeToPublic changeToPrivate revisions syncing permalink references jump closeOthers < closeTiddler|
          -|~EditToolbar|+saveTiddler saveDraft -cancelTiddler deleteTiddler|
          -|~RevisionToolbar|> fields revert|
          -
          -
          -
          
          -
          -
          -
          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
          -
          -
          -
          a TiddlySpace
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceRevisionView|
          -|''Description''|Show tiddler revisions in a stack of cards view|
          -|''Author''|BenGillies|
          -|''Version''|0.2.0|
          -|''Status''|beta|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace|
          -|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.6.0|
          -|''Requires''|TiddlyWebAdaptor|
          -!Usage
          -The viewRevisions macro can be attached to any element, which should be passed
          -in as a parameter.
          -
          -For example:
          -
          -&lt;&lt;viewRevisions page:10 link:"<<view modified date>>"&gt;&gt;
          -
          -would show the revisions "stack of cards" view, 10 at a time, when the modified
          -date is clicked.
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var me = config.macros.viewRevisions = {
          -	revisionTemplate: "RevisionTemplate",
          -	revSuffix: " [rev. #%0]", // text to append to each tiddler title
          -	defaultPageSize: 5, // default number of revisions to show
          -	defaultLinkText: "View Revisions", // when there's nothing else to use
          -	offsetTop: 30, // in px
          -	offsetLeft: 10, // in px
          -	shiftDownDelay: 50, // in ms
          -	visibleSlideAmount: 20, // amount of revisions to show on left hand edge after sliding
          -	zIndex: 100, // default z-index
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		params = paramString.parseParams(null, null, true)[0];
          -		var tiddlerElem = story.findContainingTiddler(place);
          -
          -		var revButton;
          -		var pageSize = parseInt(params.page[0], 10) || me.defaultPageSize;
          -		var linkObj = params.link ? params.link[0] || me.defaultLinkText : false;
          -		if(linkObj) {
          -			revButton = $('<span class="button openRevisions" />')
          -				.appendTo(place);
          -			wikify(linkObj, revButton[0], null, tiddler);
          -		} else {
          -			revButton = place;
          -		}
          -
          -		$(revButton).click(function() {
          -			if (!$(tiddlerElem).hasClass("revisions")) {
          -				me.showRevisions(tiddlerElem, tiddler, pageSize);
          -			} else {
          -				me.closeRevisions(tiddlerElem);
          -			}
          -		});
          -	},
          -
          -	// initialisation for revision view
          -	showRevisions: function(tiddlerElem, tiddler, pageSize) {
          -		var context = {
          -			host: tiddler.fields["server.host"],
          -			workspace: tiddler.fields["server.workspace"]
          -		};
          -		$(tiddlerElem).addClass("revisions").attr("revName", tiddler.title);
          -		// ensure toolbar commands deactivate RevisionsView
          -		$("a", ".toolbar", tiddlerElem).each(function(index, btn) {
          -			var _onclick = btn.onclick;
          -			btn.onclick = function(e) {
          -				me.closeRevisions(tiddlerElem);
          -				_onclick.apply(this, arguments);
          -			};
          -		});
          -		// ensure default action deactivates RevisionsView
          -		var _ondblclick = tiddlerElem.ondblclick;
          -		tiddlerElem.ondblclick = function(e) {
          -			me.closeRevisions(tiddlerElem);
          -			_ondblclick.apply(this, arguments);
          -		};
          -		var type = tiddler.fields["server.type"];
          -		var adaptor = new config.adaptors[type]();
          -		var userParams = {
          -			tiddlerElem: tiddlerElem,
          -			pageSize: pageSize,
          -			title: tiddler.title
          -		};
          -		me.createCloak(tiddlerElem);
          -		adaptor.getTiddlerRevisionList(tiddler.title, null, context, userParams,
          -				function(context, userParams) {
          -					// strip the current revision
          -					context.revisions.shift();
          -					me.expandStack(context, userParams);
          -				});
          -	},
          -
          -	// fetch the actual revision and put it in the tiddler div
          -	showRevision: function(place, revision, callback) {
          -		var context = {
          -			host: revision.fields["server.host"],
          -			workspace: revision.fields["server.workspace"]
          -		};
          -		var userParams = {
          -			revElem: place
          -		};
          -		var type = revision.fields["server.type"];
          -		var adaptor = new config.adaptors[type]();
          -		var revNo = revision.fields["server.page.revision"];
          -		adaptor.getTiddlerRevision(revision.title, revNo, context, userParams,
          -			function(context, userParams) {
          -				var tiddler = context.tiddler;
          -				tiddler.title += me.revSuffix
          -					.format([$(place).attr("revision")]);
          -				tiddler.fields.doNotSave = true;
          -				if (store.getTiddler(tiddler.title)) {
          -					store.deleteTiddler(tiddler.title);
          -				}
          -				store.addTiddler(tiddler);
          -
          -				//now, populate the existing div
          -				var revElem = userParams.revElem;
          -				$(revElem).attr("id", story.tiddlerId(tiddler.title));
          -				$(revElem).attr("refresh", "tiddler");
          -				var getTemplate = function() {
          -					var themeName = config.options.txtTheme;
          -					if (themeName) {
          -						return store.getTiddlerSlice(themeName,
          -							me.revisionTemplate) || me.revisionTemplate ||
          -							"ViewTemplate";
          -					} else {
          -						return (store.getTiddler(me.revisionTemplate)) ?
          -							me.revisionTemplate : "ViewTemplate";
          -					}
          -				};
          -				var template = getTemplate();
          -				story.refreshTiddler(tiddler.title, template, true);
          -				callback(tiddler);
          -			});
          -	},
          -
          -	createCloak: function(promoteElem) {
          -		var el = $(promoteElem);
          -		// cache styles for resetting later
          -		el.data({
          -			top: el.css("top"),
          -			left: el.css("left"),
          -			zIndex: el.css("z-index")
          -		});
          -
          -		$('<div class="revisionCloak" />').css("z-index", me.zIndex)
          -			.click(function() {
          -				me.closeRevisions(promoteElem);
          -			})
          -			.appendTo(document.body);
          -
          -		el.css("z-index", me.zIndex + 1);
          -	},
          -
          -	// clean up, removing all evidence of revision view
          -	closeRevisions: function(promoteElem) {
          -		var el = $(promoteElem);
          -		// revert the original tiddler back to its previous state
          -		el.removeAttr("revName").removeClass("revisions").css({
          -			top: el.data("top"),
          -			left: el.data("left"),
          -			zIndex: el.data("zIndex")
          -		});
          -
          -		// remove any revisions still in the store
          -		var revisions = $(".revisions");
          -		revisions.each(function(index, revision) {
          -			var revAttributes = revision.attributes;
          -			if ((revAttributes.revname) &&
          -					(revAttributes.revision)) {
          -				var revName = revAttributes.revname.value;
          -				var revNo = revAttributes.revision.value;
          -				var title = revName + me.revSuffix.format([revNo]);
          -
          -				if (store.getTiddler(title)) {
          -					store.deleteTiddler(title);
          -				}
          -			}
          -		});
          -
          -		// delete the previous revisions
          -		revisions.remove();
          -
          -		// remove the cloak
          -		$(".revisionCloak").remove();
          -	},
          -
          -	// calback from getting list of revisions
          -	expandStack: function(context, userParams) {
          -		var pageSize = userParams.pageSize;
          -
          -		var from = userParams.from || 0;
          -		var tiddlerElem = userParams.tiddlerElem;
          -
          -		userParams.defaultHeight = $(tiddlerElem).height();
          -		userParams.defaultWidth = $(tiddlerElem).width();
          -		if (from < context.revisions.length) {
          -			me.displayNextRevision(tiddlerElem, userParams, context, from,
          -				from + pageSize - 1);
          -		}
          -	},
          -
          -	// place the next div above and behind the previous one
          -	displayNextRevision: function(tiddlerElem, userParams, context, from, to) {
          -		var revision = context.revisions[from];
          -		var callback = function() {
          -			var revText = revBtn.getRevisionText(tiddlerElem, revision);
          -			tiddlerElem = me.createRevisionObject(tiddlerElem, context,
          -				userParams, revText);
          -			$(tiddlerElem)
          -				.attr("revision", (context.revisions.length - from));
          -			if ((from < to) && ((from + 1) < context.revisions.length)){
          -				me.displayNextRevision(tiddlerElem, userParams, context,
          -					from + 1, to);
          -			} else if ((context.revisions.length - 1) > to) {
          -				me.showMoreButton(tiddlerElem, context, userParams, to + 1);
          -			}
          -		};
          -		me.shiftVisibleDown(userParams.title, callback);
          -	},
          -
          -	createRevisionObject: function(tiddlerElem, context, userParams, text) {
          -		var newPosition = me.calculatePosition(tiddlerElem, context);
          -		return $('<div class="revisions tiddler" />')
          -			.css({
          -				position: "absolute",
          -				top: newPosition.top,
          -				left: newPosition.left,
          -				"z-index": me.zIndex + 1,
          -				height: userParams.defaultHeight,
          -				width: userParams.defaultWidth
          -			})
          -			.attr("revName", userParams.title)
          -			.append(text)
          -			.insertBefore(tiddlerElem);
          -	},
          -
          -	// move the already present revisions down by 1 to fit the next one in
          -	shiftVisibleDown: function(title, callback) {
          -		var revisions = $("[revName='%0'].revisions".format([title]));
          -		var revisionCount = revisions.length;
          -
          -		$(revisions).animate({top: "+=" + me.offsetTop},
          -				me.shiftDownDelay, function() {
          -					revisionCount -= 1;
          -					if ((callback) && (!revisionCount)) {
          -						callback();
          -					}
          -				});
          -	},
          -
          -	// where we put the new revision
          -	calculatePosition: function(elem, context) {
          -		var offset = $(elem).offset();
          -		var currentPosition = $(elem).position();
          -		var newPosition = {
          -			top: currentPosition.top - me.offsetTop
          -		};
          -		if ((context.restrictLeft) ||
          -				((offset.left - me.offsetLeft) <
          -				$("#contentWrapper").offset().left)) {
          -			newPosition.left = $(elem).position().left;
          -			context.restrictLeft = true;
          -		} else {
          -			newPosition.left = currentPosition.left - me.offsetLeft;
          -		}
          -		return newPosition;
          -	},
          -
          -	// equivalent of displayNextRevision, but for the more button
          -	showMoreButton: function(tiddlerElem, context, userParams, moreIndex) {
          -		userParams.from = moreIndex + 1;
          -		me.shiftVisibleDown(userParams.title, function() {
          -			var btn = me.createRevisionObject(tiddlerElem, context, userParams,
          -				"");
          -
          -			var more = createTiddlyButton(btn[0], "more...", "show more revisions",
          -				function() {
          -					if ($(".viewRevision").length) {
          -						return;
          -					}
          -					userParams.tiddlerElem = btn[0];
          -					$(btn).text("")
          -						.append(revBtn
          -							.getRevisionText(btn[0], context.revisions[moreIndex]))
          -						.attr("revision", context.revisions.length - moreIndex);
          -					me.expandStack(context, userParams);
          -				});
          -			$(more).css("float", "right");
          -		});
          -	},
          -
          -	stripRevFromTitle: function(revisionTitle) {
          -		return revisionTitle.split(/ ?\[rev\. #[0-9]+\]$/)[0];
          -	},
          -
          -	onClickRevision: function(revElem, revision, callback) {
          -		// don't do anything if we are still loading
          -		if ($(".revisions").hasClass("loading")) {
          -			return null;
          -		}
          -
          -		var origTitle = me.stripRevFromTitle(revision.title);
          -		if ($(revElem).hasClass("viewRevision")) {
          -			$(".revisions").addClass("loading");
          -			me.slideIn(revElem, revision, origTitle, function() {
          -				store.deleteTiddler(revision.title);
          -				revision.title = origTitle;
          -				$(revElem).text("").append(revBtn.getRevisionText(revElem,
          -						revision))
          -					.removeAttr("tags").removeAttr("tiddler")
          -					.removeAttr("refresh").removeAttr("template")
          -					.removeAttr("id");
          -				$(".revisions").removeClass("loading");
          -				if (callback) {
          -					callback();
          -				}
          -			});
          -			$(revElem).removeAttr("prevPos").removeClass("viewRevision");
          -		} else {
          -			var viewRevision = function() {
          -				var prevPos = $(revElem).position().left;
          -				$(revElem).addClass("viewRevision").attr("prevPos", prevPos);
          -				$(".revisions").addClass("loading");
          -				me.showRevision(revElem, revision, function(rev) {
          -					me.slideOut(revElem, rev, origTitle, function() {
          -						$(".revisions").removeClass("loading");
          -					});
          -				});
          -			};
          -			// make sure another revision isn't already out
          -			if ($(".viewRevision").length) {
          -				var newRevElem = $(".viewRevision")[0];
          -				var newRevision = store.getTiddler($(newRevElem)
          -					.attr("tiddler"));
          -				me.onClickRevision(newRevElem, newRevision, viewRevision);
          -			} else {
          -				viewRevision();
          -			}
          -		}
          -	},
          -
          -	slideOut: function(revElem, revision, title, callback) {
          -		var leftMostPos = $("[revName='%0'].revisions".format([title]))
          -			.offset().left;
          -		var width = $(revElem).width();
          -		var originalLeftPos = $(story.getTiddler(title))
          -			.position().left;
          -
          -		var slideAmount = leftMostPos + width - me.visibleSlideAmount;
          -		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
          -			.animate({left: "-=" + slideAmount}, 1000);
          -		$(revElem)
          -			.attr("baseHeight", $(revElem).css("height"))
          -			.css("height", "auto")
          -			.animate({left: originalLeftPos}, 1000, callback);
          -	},
          -
          -	slideIn: function(revElem, revision, title, callback) {
          -		var slideAmount = $(revElem).offset().left -
          -			$(story.getTiddler(title)).offset().left;
          -		var origRevPos = $(revElem).attr("prevPos");
          -
          -		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
          -			.animate({left: "+=" + slideAmount}, 1000);
          -		$(revElem).animate({left: origRevPos}, 1000, function() {
          -			$(revElem)
          -				.css("height", $(revElem).attr("baseHeight"))
          -				.removeAttr("baseHeight");
          -			callback();
          -		});
          -	}
          -};
          -
          -var revBtn;
          -config.macros.slideRevision = revBtn = {
          -	btnText: "created by %0 at %1 on %2",
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		var btn = revBtn.getRevisionText(place, tiddler);
          -		$(place).append(btn);
          -	},
          -
          -	getRevisionText: function(place, revision) {
          -		var text = revBtn.btnText.format([revision.modifier,
          -			revision.modified.formatString("0hh:0mm"),
          -			revision.modified.formatString("0DD MMM YYYY")]);
          -		var btn = $('<a href="javascript:;" class="button revButton" />')
          -			.text(text)
          -			.click(function() {
          -				var revElem = story.findContainingTiddler(this);
          -				me.onClickRevision(revElem, revision);
          -			});
          -		return btn;
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          
          -
          -
          -
          [[StyleSheetTiddlySpace]]
          -
          -
          -
          interview
          -
          -
          -
          /***
          -|''Name''|tsScanCountPlugin|
          -|''Description''|Provides ability to count tiddlers at a given tiddlyspace url and display a button that when clicked lists them. Also upgrades tsScan to replace any options containing with $1 with the current space|
          -|''Version''|0.2.0|
          -***/
          -//{{{
          -(function($) {
          -
          -var tsScan = config.macros.tsScan;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -
          -var macro = config.macros.tsScanCount = {
          -	cache: true,
          -	countCache: {},
          -	handler: function(place, macroName, params, w, paramString, tiddler) {
          -		var container = $("<a href='#' class='button' />").attr("refresh", "macro").attr("macroName", macroName).appendTo(place)[0];
          -		$(container).data("params", paramString);
          -		macro.refresh(container);
          -	},
          -	refresh: function(container) {
          -		var paramString = $(container).data("params");
          -		var options = tsScan.getOptions(paramString, tiddler);
          -		var url = options.url;
          -		options.cache = macro.cache;
          -		options.callback = function(tiddlers) {
          -				options.cache = true;
          -				macro.cache = true;
          -				var count = tiddlers[0] ? tiddlers[0].fields['server.page.revision'] : 0;
          -				var lastCount = macro.countCache[url] || 0;
          -				if(lastCount != count) {
          -					var interval, step = 0;
          -					interval = window.setInterval(function() {
          -						var last = step;
          -						step += 1;
          -						$(container).removeClass("step" + last);
          -						if(step > 10) {
          -							macro.countCache[url] = count;
          -							window.clearInterval(interval);
          -						} else {
          -							$(container).addClass("step" + step);
          -						}
          -					}, 500)
          -				}
          -				$(container).empty().addClass("enabled").text(tiddlers.length).click(function(ev) {
          -				$(ev.target).addClass("active");
          -				var target = options.popupSelector ? $(options.popupSelector)[0] : ev.target;
          -				var p = Popup.create(target, "div");
          -				var container;
          -				if(options.heading) {
          -					container = $("<div />").addClass("heading").appendTo(p)[0];
          -					wikify(store.getTiddlerText(options.heading) || "", container);
          -				}
          -				container = $("<div />").addClass("followTiddlersList").appendTo(p)[0];
          -				tsScan.scan(container, options);
          -				Popup.show();
          -				ev.stopPropagation();
          -				return false;
          -			});
          -		};
          -		tsScan.scan(container, options);
          -	}
          -}
          -
          -var _getOptions = tsScan.getOptions;
          -config.macros.tsScan.getOptions = function(paramString, tiddler) {
          -	var options = _getOptions.apply(this, arguments);
          -	var optionsClone = {};
          -	for(var i in options) {
          -		if(typeof(options[i]) == "string") {
          -			optionsClone[i] = options[i].format(tiddlyspace.currentSpace.name);
          -		} else {
          -			optionsClone[i] = options[i];
          -		}
          -	}
          -	return optionsClone;
          -}
          -
          -// every 5 minutes make tsScan update.
          -window.setInterval(function() {
          -	macro.cache = false;
          -	$("[macroName=tsScanCount]").each(function(i, el) {
          -		macro.refresh(el);
          -	});
          -}, 1000 * 60 * 5);
          -})(jQuery);
          -//}}}
          -
          -
          -
          <<tsScan "What do you think of the name TiddlyWiki and the term*" fat:y template:"AnswerTemplate##Template" hide:interview_public sort:-modified>>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceToolbar|
          -|''Description''|augments tiddler toolbar commands with SVG icons|
          -|''Author''|Osmosoft|
          -|''Version''|0.6.6|
          -|''Status''|@@beta@@|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceToolbar.js|
          -|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.5.0|
          -|''Requires''|ImageMacroPlugin|
          -|''Keywords''|toolbar icons SVG|
          -!Description
          -replaces tiddler toolbar commands with SVG icons if available
          -!Notes
          -requires [[ImageMacroPlugin|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/ImageMacroPlugin/plugins/ImageMacroPlugin.tid]]
          -
          -SVG icons are drawn from tiddlers titled {{{<command>.svg}}}
          -In readonly mode a tiddler called {{{<command>ReadOnly.svg}}} will be used if it exists.
          -!TODO
          -* rename (IconToolbarPlugin?)
          -* support more than one more popup menu in the toolbar.
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -if(!config.macros.image) {
          -	throw "Missing dependency: ImageMacroPlugin";
          -}
          -
          -var macro = config.macros.toolbar;
          -
          -macro.icons = {
          -	cloneTiddler: "editTiddler"
          -};
          -
          -var _handler = macro.handler;
          -macro.handler = function(place, macroName, params, wikifier,
          -		paramString, tiddler) {
          -	var toolbar = $(place);
          -	toolbar.attr({
          -		refresh: "macro",
          -		macroName: macroName
          -	}).data("args", arguments);
          -	var status = _handler.apply(this, arguments);
          -	if(tiddler.isReadOnly()) {
          -		toolbar.addClass("toolbarReadOnly");
          -	} else {
          -		toolbar.removeClass("toolbarReadOnly");
          -	}
          -	var parsedParams = paramString.parseParams("name")[0];
          -	if(parsedParams.icons && parsedParams.icons == "yes") {
          -		this.augmentCommandButtons(place);
          -	}
          -	if(parsedParams.more && parsedParams.more == "popup") {
          -		// note we must override the onclick event like in createTiddlyButton
          -		// otherwise the click event is the popup AND the slider
          -		$(".moreCommand", place).each(function(i, el) {
          -			el.onclick = macro.onClickMorePopUp;
          -		});
          -		// buttons that are after a less command should not be in more menu.
          -		$(".lessCommand ~ .button", place).appendTo(place);
          -		$(".lessCommand", place).remove();
          -	}
          -	return status;
          -};
          -
          -macro.refresh = function(place, params) {
          -	var args = $(place).empty().data("args");
          -	this.handler.apply(this, args);
          -};
          -
          -var imageMacro = config.macros.image;
          -macro.augmentCommandButtons = function(toolbar) {
          -	$(".button", toolbar).each(function(i, el) {
          -		var cmd = $(el).attr("commandname");
          -		cmd = cmd ? cmd : "moreCommand"; // XXX: special-casing of moreCommand due to ticket #1234
          -		var icon = store.tiddlerExists(cmd) ? cmd : macro.icons[cmd];
          -		var text = $(el).text();
          -		if(readOnly) {
          -			var readOnlyAlternative = "%0ReadOnly".format([icon]);
          -			if(store.tiddlerExists(readOnlyAlternative)) {
          -				icon = readOnlyAlternative;
          -			}
          -		}
          -		if(store.tiddlerExists(icon)) {
          -			$(el).css({display: "inline-block"}).empty();
          -			imageMacro.renderImage(el, icon, { alt: text });
          -		}
          -	});
          -};
          -
          -// provide onClickMore to provide extra commands in a popup
          -macro.onClickMorePopUp = function(ev) {
          -	ev = ev || window.event;
          -	var sibling = this.nextSibling;
          -	if(sibling) {
          -		var commands = sibling.childNodes;
          -		var popup = Popup.create(this);
          -		$(popup).addClass("taggedTiddlerList");
          -		for(var i = 0; i < commands.length; i++) {
          -			var li = createTiddlyElement(popup, "li", null);
          -			var oldCommand = commands[i];
          -			var command = oldCommand.cloneNode(true);
          -			command.onclick = oldCommand.onclick;
          -			li.appendChild(command);
          -		}
          -		Popup.show();
          -	}
          -	ev.cancelBubble = true;
          -	if(ev.stopPropagation) {
          -		ev.stopPropagation();
          -	}
          -	return false;
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceSearcher|
          -|''Version''|0.2.5|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceFollowingPlugin|
          -***/
          -//{{{
          -(function($) {
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var tsScan = config.macros.tsScan;
          -
          -config.shadowTiddlers.SearchTemplate = "<<view server.bag SiteIcon label:no width:24 height:24 preserveAspectRatio:yes>> <<view server.bag spaceLink title external:no>> in space <<view server.bag spaceLink>>";
          -config.shadowTiddlers.StyleSheetSearch = [".resultsArea .siteIcon { display: inline; }",
          -	".searchForm {text-align: left;}"].join("\n");
          -store.addNotification("StyleSheetSearch", refreshStyles);
          -
          -var search = config.macros.tsSearch = {
          -	locale: {
          -		advanced: "Advanced Options",
          -		header: "Search",
          -		resultsHeader: "Results (%0)",
          -		find: "find",
          -		noResults: "No tiddlers matched your search query",
          -		query: "QUERY: ",
          -		error: "please provide a search query or a tag, modifier or title!",
          -		titleAdvanced: "where the title is",
          -		modifierAdvanced: "where the last modifier is",
          -		spaceAdvanced: "only in the space: ",
          -		notspaceAdvanced: "but not in the spaces: ",
          -		tagsAdvanced: "with the tags: "
          -	},
          -	andConstructor: function(container, label, fieldname, negationMode) {
          -		var tags = $("<div />").appendTo(container);
          -		$('<span />').text(label).appendTo(tags);
          -		var id = "area" + Math.random();
          -		container = $("<span />").attr("id", id).appendTo(tags)[0];
          -		function add(container) {
          -			var el = $('<input type="text" />').attr("field", fieldname).appendTo(container);
          -			if(negationMode) {
          -				el.attr("negation", "true");
          -			}
          -		}
          -		add(container);
          -		var el = $("<button />").text("AND").click(function(ev) {
          -			add($(ev.target).data("container"));
          -			ev.preventDefault();
          -		}).appendTo(tags);
          -		$(el).data("container", container);
          -	},
          -	fieldConstructor: function(container, label, field) {
          -		container = $("<div />").appendTo(container)[0];
          -		$("<span />").text(label).appendTo(container);
          -		$("<input />").attr("text", "input").attr("field", field).appendTo(container);
          -	},
          -	advancedOptions: function(form) {
          -		var locale = search.locale;
          -		var container = $("<div />").addClass("tsAdvancedOptions").appendTo(form)[0];
          -		$("<h2/ >").text(search.locale.advanced).appendTo(container);
          -		$("<div />").addClass("separator").appendTo(container);
          -		search.fieldConstructor(container, locale.titleAdvanced, "title");
          -		search.fieldConstructor(container, locale.modifierAdvanced, "modifier");
          -		search.fieldConstructor(container, locale.spaceAdvanced, "space");
          -		search.andConstructor(container, locale.notspaceAdvanced, "space", true);
          -		search.andConstructor(container, locale.tagsAdvanced, "tag");
          -	},
          -	constructSearchQuery: function(form) {
          -		var data = [], select = [];
          -		var query = $("[name=q]", form).val();
          -		if(query) {
          -			data.push("q=%0".format(query));
          -		}
          -
          -		// add tags, fields etc..
          -		$("[field]", form).each(function(i, el) {
          -			var val = $(el).val();
          -			var name = $(el).attr("field");
          -			var negate = $(el).attr("negation") == "true";
          -			if(val && name) {
          -				val = encodeURIComponent(val);
          -				val = negate ? "!" + val : val;
          -				if(name == "space") {
          -					val += "_public";
          -					name = "bag";
          -				}
          -				if(negate) {
          -					select.push("select=%0:%1".format(name,val));
          -				} else {
          -					var prefix = data.length === 0 ? "q=" : "";
          -					data.push('%0%1:"%2"'.format(prefix, name, val));
          -				}
          -			}
          -		});
          -		var dataString = data.join(" ");
          -		if(dataString.length === 0 && !query) {
          -			return false;
          -		}
          -		var selectStatement = select.join("&");
          -		if(dataString.length > 0 && selectStatement.length > 0) {
          -			dataString += "&";
          -		}
          -		dataString += selectStatement;
          -		return "/search?%0".format(dataString);
          -	},
          -	constructForm: function(place) {
          -		var locale = search.locale;
          -		$("<h1 />").text(locale.header).appendTo(place);
          -		var form = $("<form />").appendTo(place)[0];
          -		$('<input type="text" name="q" />').appendTo(form);
          -		$('<input type="submit" />').val(locale.find).appendTo(form);
          -		search.advancedOptions(form);
          -		var query = $('<h2 class="query"/>').appendTo(place)[0];
          -		var results = $("<div />").appendTo(place).addClass("resultsArea")[0];
          -		var lookup = function(url) {
          -			if(!url) {
          -				results.empty().addClass("error").text(locale.error);
          -				return;
          -			}
          -			config.extensions.tiddlyweb.getStatus(function(status) {
          -				$(query).text(locale.query);
          -				var href = status.server_host.url + url;
          -				$("<a />").attr("href", href).text(href).appendTo(query);
          -				tsScan.scan(results, { url: url, emptyMessage: search.locale.noResults, cache: true,
          -					template: "SearchTemplate", sort: "title", callback: function(tiddlers) {
          -						$("<h2 />").text(locale.resultsHeader.format(tiddlers.length)).prependTo(results);
          -					}
          -				});
          -			});
          -		};
          -		$(form).submit(function(ev) {
          -			ev.preventDefault();
          -			var url = search.constructSearchQuery(form);
          -			config.macros.tsSearch.lastSearch = url;
          -			lookup(url);
          -		});
          -		if(search.lastSearch) {
          -			lookup(search.lastSearch);
          -		}
          -		return form;
          -	},
          -	handler: function(place) {
          -		var container = $("<div />").addClass("searchForm").appendTo(place)[0];
          -		search.constructForm(container);
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          
          -
          -
          -
          Click the "new tiddler" button towards the top right of the screen to write something in your space. You'll need to give it a title, some content and, optionally, some tags that will help you identify it later.
          -
          -!Stuck for ideas?
          -Not sure what to write about? Not sure what to keep in your space? Other people use ~TiddlySpace for almost anything. How about some of the following:
          -
          -* [[Save interesting sites|http://bookmarks.tiddlyspace.com]], images or articles from around the web so that you can refer back to them.
          -* [[Record your family tree|http://familytree.tiddlyspace.com]], store notes on long lost relatives or ancestors and map their relationship to you.
          -* [[Make up a pocketbook|http://pocketbook.tiddlyspace.com]] to store some useful information in, then print it out, [[fold it up|http://www.pocketmod.com/]], and take it with you.
          -* [[Plan your holiday|http://the-web-is-your-oyster.tiddlyspace.com/]], record where you're planning to go, note down places of interest and refer back to it later.
          -* [[Create a mindmap|http://mindmaps.tiddlyspace.com/]] to visualise your inner thoughts and see how they relate to each other.
          -* [[Set up a questionnaire|http://questionnaire.tiddlyspace.com/]] and get all your friends to answer it.
          -
          -If you don't like any of those ideas, you can still use this space directly to keep notes and link them together, make a todo list and keep track of everything you're doing, or any one of a hundred million other things.
          -
          -Still stuck? Check out the @featured space for more suggestions.
          -
          -You can also [[socialise with others|How to socialise]].
          -
          -
          -
          <!--{{{-->
          -<div class='toolbar'
          -	macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
          -</div>
          -<div class='heading editorHeading'>
          -	<div class='editor title' macro='edit title'></div>
          -	<div class='tagClear'></div>
          -</div>
          -<div class='annotationsBox' macro='annotations'>
          -	<div class='editSpaceSiteIcon'
          -		macro='tiddlerOrigin height:16 width:16 label:no interactive:no'>
          -	</div>
          -	<div class="privacyEdit" macro='setPrivacy label:no interactive:no'></div>
          -	<div class='tagClear'></div>
          -</div>
          -<div class='editor' macro='edit text'></div>
          -<div class='editorFooter'>
          -	<div class='tagTitle'>tags</div>
          -	<div class='editor' macro='edit tags'></div>
          -	<div class='tagAnnotation'>
          -		<span macro='message views.editor.tagPrompt'></span>
          -		<span macro='tagChooser excludeLists'></span>
          -	</div>
          -</div>
          -<!--}}}-->
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceFilters|
          -|''Description''|provide TiddlySpace-specific filter extensions|
          -|''Author''|Jon Robson|
          -|''Version''|0.6.1|
          -|''Status''|@@beta@@|
          -|''CoreVersion''|2.6.2|
          -|''Requires''|TiddlySpaceConfig|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -!Usage
          -{{{
          -<<tsList Private>>
          -<<tsList Public>>
          -<<tsList Draft>>
          -}}}
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var privateBag = tiddlyspace.getCurrentBag("private");
          -var publicBag = tiddlyspace.getCurrentBag("public");
          -
          -config.filterHelpers = {
          -	is: {
          -		"private": function(tiddler) {
          -			var bag = tiddler.fields["server.bag"];
          -			return bag == privateBag;
          -		},
          -		"public": function(tiddler) {
          -			var bag = tiddler.fields["server.bag"];
          -			return bag == publicBag;
          -		},
          -		draft: function(tiddler) {
          -			var fields = tiddler.fields;
          -			var bag = fields["server.bag"];
          -			return (privateBag == bag && fields["publish.name"]) ? true : false;
          -		},
          -		local: function(tiddler) {
          -			return config.filterHelpers.is["public"](tiddler) ||
          -				config.filterHelpers.is["private"](tiddler);
          -		},
          -		unsynced: function(tiddler) {
          -			return tiddler ? tiddler.isTouched() : false;
          -		}
          -	}
          -};
          -
          -config.filters.is = function(results, match) {
          -	var candidates = store.getTiddlers("title");
          -	var type = match[3];
          -	for (var i = 0; i < candidates.length; i++) {
          -		var tiddler = candidates[i];
          -		var helper = config.filterHelpers.is[type];
          -		if(helper && helper(tiddler)) {
          -			results.pushUnique(tiddler);
          -		}
          -	}
          -	return results;
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="450 366 38 57"
          -width="30" height="30">
          -	<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -		<g>
          -			<path d="M 452.1094 421.2422 L 450 421.2422 L 450 423 L 487.9688 423 L 487.9688 421.2422 L 485.8595 421.2422 
          -			L 485.8595 377.29688 L 487.9688 377.29688 L 487.9688 375.53906 L 485.8595 375.53906 
          -			C 485.8595 375.53906 481.12463 371.59341 473.02023 370.52802 C 472.6824 368.9689 471.72098 366.75 468.9844 366.75 
          -			C 466.24783 366.75 465.28638 368.9689 464.94864 370.52802 
          -			C 456.84418 371.59341 452.1094 375.53906 452.1094 375.53906 L 450 375.53906 L 450 377.29688 L 452.1094 377.29688 
          -			Z M 467.12247 370.32086 L 467.12247 370.32086 C 467.3805 369.42395 467.90762 368.50781 468.9844 368.50781 
          -			C 470.0612 368.50781 470.5883 369.42395 470.84634 370.32086 
          -			C 470.24136 370.2848 469.62054 370.26562 468.9844 370.26562 
          -			C 468.34827 370.26562 467.72748 370.2848 467.12247 370.32086 Z M 454.21875 420.92804 L 454.21875 420.92804 
          -			C 455.46762 420.42087 456.32816 419.35281 456.32816 418.11716 L 456.32816 377.29688 L 458.4375 377.29688 
          -			L 458.4375 421.2422 L 454.21875 421.2422 Z M 460.5469 420.92804 L 460.5469 420.92804 
          -			C 461.79578 420.42087 462.65625 419.35281 462.65625 418.11716 L 462.65625 377.29688 L 464.76566 377.29688 
          -			L 464.76566 421.2422 L 460.5469 421.2422 Z M 466.87503 420.92804 L 466.87503 420.92804 
          -			C 468.1239 420.42087 468.9844 419.35281 468.9844 418.11716 L 468.9844 377.29688 L 471.09378 377.29688 
          -			L 471.09378 421.2422 L 466.87503 421.2422 Z M 473.2032 420.92804 L 473.2032 420.92804 
          -			C 474.45203 420.42087 475.31256 419.35281 475.31256 418.11716 L 475.31256 377.29688 L 477.4219 377.29688 
          -			L 477.4219 421.2422 L 473.2032 421.2422 Z M 479.5313 420.92804 L 479.5313 420.92804 
          -			C 480.78018 420.42087 481.64066 419.35281 481.64066 418.11716 L 481.64066 377.29688 L 483.75006 377.29688 
          -			L 483.75006 421.2422 L 479.5313 421.2422 Z" fill="black" class="glyph"/>
          -		</g>
          -	</g>
          -</svg>
          -
          -
          -
          /***
          -|''Name''|RandomColorPalettePlugin|
          -|''Description''|Adds a random color palette to TiddlyWiki|
          -|''Author''|Jon Robson|
          -|''Version''|1.4.0|
          -|''Status''|stable|
          -|''Source''|https://github.com/jdlrobson/TiddlyWikiPlugins/raw/master/plugins/RandomColorPalettePlugin/RandomColorPalettePlugin.js|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -!Usage
          -{{{
          -<<RandomColorPalette>>
          -}}}
          -Sets and saves a random color palette on execution
          -
          -{{{
          -<<RandomColorPaletteButton>>
          -}}}
          -Creates a button, which when clicked will change the color palette
          -More information at http://macros.tiddlyspace.com/#%5B%5BRandomColorPaletteButton%20macro%5D%5D
          -!Code
          -***/
          -//{{{
          -RGB.prototype.toRGBString = function() {
          -	return "rgb(%0,%1,%2)".format(parseInt(this.r * 255, 10),
          -		parseInt(this.g * 255, 10), parseInt(this.b * 255, 10))
          -}
          -function HSL_TO_RGB(h, s, l) { // h (hue) between 0 and 360, s (saturation) & l (lightness) between 0 and 1
          -	var c = l <= 0.5 ? 2 * l * s : ( 2 - (2 * l)) * s;
          -	var h1 = h / 60;
          -	var x = c * (1 - Math.abs((h1 % 2) - 1)); 
          -	var r, g, b;
          -	if(typeof(h) == 'undefined') {
          -		r = 0;
          -		g = 0;
          -		b = 0;
          -	} else if(0 <= h1 && h1 < 1) {
          -		r = c;
          -		g = x;
          -		b = 0;
          -	} else if(1 <= h1 && h1 < 2) {
          -		r = x;
          -		g = c;
          -		b = 0;
          -	} else if(2 <= h1 && h1 < 3) {
          -		r = 0;
          -		g = c;
          -		b = x;
          -	} else if(3 <= h1 && h1 < 4) {
          -		r = 0;
          -		g = x;
          -		b = c;
          -	} else if(4 <= h1 && h1 < 5) {
          -		r = x;
          -		g = 0;
          -		b = c;
          -	} else if(5 <= h1 && h1 < 6) {
          -		r = c;
          -		g = 0;
          -		b = x;
          -	}
          -	m = l - (0.5 * c);
          -	return new RGB(r + m, g + m, b + m);
          -}
          -
          -(function($){
          -	var macro = config.macros.RandomColorPalette = {
          -		messagesOn: false, 
          -		changedPaletteText: "We have assigned you a random theme by adjusting the [[ColorPalette]] tiddler.\nDon't like it? Click <<RandomColorPalette>> for another one.", 
          -		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -			paramString = paramString || "";
          -			var options = macro.getOptions(paramString);
          -			macro.generatePalette(options, true);
          -		},
          -		optionTypes: {
          -			floats: ["hue", "saturation", "darkest", "lightness", "huevariance", "dark", "pale", "light", "mid",
          -				"saturation_light", "saturation_pale", "saturation_mid", "saturation_dark"
          -			]
          -		},
          -		getOptions: function(paramString) {
          -			var args = paramString.parseParams("name", null, true, false, true)[0];
          -			var options = {};
          -			var numbers = macro.optionTypes.floats;
          -			for(var i in args) {
          -				options[i] = numbers.indexOf(i) > -1 ? parseFloat(args[i][0], 10) : args[i][0];
          -			}
          -			return options;
          -		},
          -		generateRandomNumber: function(min, max, info) {
          -			var num = (Math.random() * 1);
          -			info = !info ? { attempts:0 } : info;
          -			info.attempts += 1;
          -			var good = true;
          -			if(min == max) {
          -				return max;
          -			}
          -			if(min && num < min) {
          -				good = false;
          -			} else if(max && num > max) {
          -				good = false;
          -			}
          -			if(!good) {
          -				if(info.attempts < 5) {
          -					return macro.generateRandomNumber(min, max, info);
          -				} else {
          -					if(max) {
          -						return max;
          -					} else if(min) {
          -						return min;
          -					} else {
          -						return 1;
          -					}
          -				}
          -			}
          -			return num;
          -		},
          -		getExistingPalette: function(asJSON) {
          -			var title = "ColorPalette";
          -			var tiddlerText;
          -			if(store.tiddlerExists(title)) {
          -				tiddlerText = store.getTiddlerText(title);
          -			} else if(store.isShadowTiddler(title)){
          -				tiddlerText = config.shadowTiddlers[title];
          -			}
          -			if(asJSON) {
          -				var json = {};
          -				if(tiddlerText) {
          -					var lines = tiddlerText.split("\n");
          -					for(var i = 0; i < lines.length; i++) {
          -						var definition = lines[i].split(":");
          -						if(definition.length == 2) {
          -							var name = definition[0].trim();
          -							var value = definition[1].trim();
          -							json[name] = value;
          -						}
          -					}
          -				}
          -				return json;
          -			} else {
          -				return tiddlerText;
          -			}
          -		},
          -		generatePalette: function(options, save) {
          -			var outputRGB = options.rgb;
          -			var palette = macro.getExistingPalette(true);
          -			var hue = options.hue || Math.floor(Math.random() * 359);
          -			var saturation = options.saturation || macro.generateRandomNumber(0.3, 0.7);
          -			var dark = options.dark || options.darkest || macro.generateRandomNumber(0, 0.10);
          -			var pale = options.pale || options.lightness || macro.generateRandomNumber(0.90, 1);
          -			var delta = ( ( pale - dark ) / 3 );
          -			var mid = options.mid || dark + delta;
          -			var light = options.light || dark + (delta * 2);
          -			var lightness_values = {Dark: dark, Mid: mid, Light: light, Pale: pale};
          -			var saturation_values = {};
          -			for(i in lightness_values) {
          -				if(true) {
          -					saturation_values[i] = options["saturation_" + i.toLowerCase()] || saturation;
          -				}
          -			}
          -
          -			var opposite_hue = (hue + 180) % 360;
          -			var seed = options.huevariance || Math.floor((85 * Math.random()) + 5); // we want it to be at least 5 degrees
          -			var huetwo = (opposite_hue + seed) % 360;
          -			var huethree = (opposite_hue - seed) % 360;
          -			if(huetwo < 0) {
          -				huetwo = 360 + huetwo;
          -			}
          -			if(huethree < 0) {
          -				huethree = 360 + huethree;
          -			}
          -			for(var j in lightness_values) {
          -				if(true) {
          -					var saturation = saturation_values[j];
          -					palette["Primary" + j] = HSL_TO_RGB(hue, saturation, lightness_values[j]);
          -					palette["Secondary" + j] = HSL_TO_RGB(huetwo, saturation, lightness_values[j]);
          -					palette["Tertiary" + j] = HSL_TO_RGB(huethree, saturation, lightness_values[j]);
          -				}
          -			}
          -			palette.Background = HSL_TO_RGB(hue, saturation, 0.92);
          -			palette.Foreground = HSL_TO_RGB(hue, saturation, 0.08);
          -			palette.ColorPaletteParameters = ["HSL([", hue, "|", seed, "], [", saturation_values.Pale, "|",
          -				saturation_values.Light, "|", saturation_values.Mid, "|", saturation_values.Dark, "],",
          -				"[", dark, "|", mid, "|", light, "|", pale, "])"].join("");
          -			// construct new ColorPalette
          -			var text = ["/*{{{*/\n"];
          -			var colorcode;
          -			for(var id in palette) {
          -				if(true) {
          -					var color = palette[id];
          -					colorcode = outputRGB ? color.toRGBString() : color.toString();
          -					text.push("%0: %1\n".format(id, colorcode));
          -				}
          -			}
          -			text.push("/*}}}*/");
          -			text = text.join("");
          -			if(save) {
          -				macro.saveColorPalette(text);
          -			}
          -			return text;
          -		},
          -		saveColorPalette: function(text) {
          -			var tid = store.getTiddler("ColorPalette");
          -			if(!tid) {
          -				tid = new Tiddler("ColorPalette");
          -				tid.fields = merge({}, config.defaultCustomFields);
          -			} // TODO: detect that the ColorPalette in the space comes from outside recipe
          -			tid.fields["server.page.revision"] = "false"; // edit conflicts dont matter
          -
          -			// save the color palette in tid
          -			tid = store.saveTiddler(tid.title, tid.title, text, tid.modifier, tid.modified,
          -				tid.tags, tid.fields, false, tid.created, tid.creator);
          -			// an interval is used to cope with users clicking on the palette button quickly.
          -			if(macro._nextSave) {
          -				window.clearTimeout(macro._nextSave);
          -			}
          -			macro._nextSave = window.setTimeout(function() {
          -					autoSaveChanges(null, [tid]);
          -				}, 2000);
          -			// temporary workaround for IE.
          -			$.twStylesheet.remove({ id: "StyleSheetColors" });
          -			$.twStylesheet.remove({ id: "StyleSheet" });
          -			refreshAll();
          -			macro.reportChange();
          -			return tid;
          -		},
          -		reportChange: function() {
          -			if(macro.messagesOn) { // only display message once..
          -				var msgPlace = getMessageDiv();
          -				if(!$(".changedPalette", msgPlace)[0]) {
          -					var tempPlace = document.createElement("div");
          -					wikify("{{changedPalette{" + macro.changedPaletteText + "}}}", tempPlace);
          -					msgPlace.appendChild(tempPlace);
          -				}
          -			}
          -		}
          -	};
          -	var btnMacro = config.macros.RandomColorPaletteButton = {
          -			text: "New ColorPalette",
          -			tooltip: "Generate a random colour scheme for your TiddlyWiki",
          -			makeButton: function(place, options) {
          -				var btnHandler = function(ev) {
          -					var t = $(ev.target);
          -					var options = t.data("options");
          -					macro.generatePalette(options, true);
          -					ev.preventDefault();
          -					return false;
          -				};
          -				var btn = createTiddlyButton(place, this.text, this.tooltip, btnHandler);
          -				$(btn).data("options", options);
          -				return btn;
          -			},
          -			handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -				var options = macro.getOptions(paramString);
          -				btnMacro.makeButton(place, options);
          -			}
          -	};
          -})(jQuery);
          -//}}}
          -
          -
          -
          
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="78 222 60 60" 
          -width="30" height="30">
          -<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -	<g>
          -		<path d="M 107.92718 244.14815 L 86.651474 222.89253 L 78.85206 230.69925 L 100.120415 251.9476 L 78.774 273.27396 
          -		L 86.57342 281.08075 L 107.927216 259.74707 L 129.39981 281.19946 L 137.19922 273.39267 L 115.73397 251.94763 
          -		L 137.121155 230.58054 L 129.32175 222.77374 Z" fill="black" class="glyph"/>
          -	</g>
          -</g>
          -</svg>
          -
          -
          -
          /***
          -|''Name''|TiddlyWebConfig|
          -|''Description''|configuration settings for TiddlyWebWiki|
          -|''Author''|FND|
          -|''Version''|1.3.2|
          -|''Status''|stable|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/TiddlyWebConfig.js|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''Requires''|TiddlyWebAdaptor ServerSideSavingPlugin|
          -|''Keywords''|serverSide TiddlyWeb|
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -if(!config.extensions.ServerSideSavingPlugin) {
          -	throw "Missing dependency: ServerSideSavingPlugin";
          -}
          -if(!config.adaptors.tiddlyweb) {
          -	throw "Missing dependency: TiddlyWebAdaptor";
          -}
          -
          -if(window.location.protocol != "file:") {
          -	config.options.chkAutoSave = true;
          -}
          -
          -var adaptor = tiddler.getAdaptor();
          -var recipe = tiddler.fields["server.recipe"];
          -var workspace = recipe ? "recipes/" + recipe : "bags/common";
          -
          -var plugin = config.extensions.tiddlyweb = {
          -	host: tiddler.fields["server.host"].replace(/\/$/, ""),
          -	username: null,
          -	status: {},
          -
          -	getStatus: null, // assigned later
          -	getUserInfo: function(callback) {
          -		this.getStatus(function(status) {
          -			callback({
          -				name: plugin.username,
          -				anon: plugin.username ? plugin.username == "GUEST" : true
          -			});
          -		});
          -	},
          -	hasPermission: function(type, tiddler) {
          -		var perms = tiddler.fields["server.permissions"];
          -		if(perms) {
          -			return perms.split(", ").contains(type);
          -		} else {
          -			return true;
          -		}
          -	}
          -};
          -
          -config.defaultCustomFields = {
          -	"server.type": tiddler.getServerType(),
          -	"server.host": plugin.host,
          -	"server.workspace": workspace
          -};
          -
          -// modify toolbar commands
          -
          -config.shadowTiddlers.ToolbarCommands = config.shadowTiddlers.ToolbarCommands.
          -	replace("syncing ", "revisions syncing ");
          -
          -config.commands.saveTiddler.isEnabled = function(tiddler) {
          -	return plugin.hasPermission("write", tiddler) && !tiddler.isReadOnly();
          -};
          -
          -config.commands.deleteTiddler.isEnabled = function(tiddler) {
          -	return !readOnly && plugin.hasPermission("delete", tiddler);
          -};
          -
          -// hijack option macro to disable username editing
          -var _optionMacro = config.macros.option.handler;
          -config.macros.option.handler = function(place, macroName, params, wikifier,
          -		paramString) {
          -	if(params[0] == "txtUserName") {
          -		params[0] = "options." + params[0];
          -		var self = this;
          -		var args = arguments;
          -		args[0] = $("<span />").appendTo(place)[0];
          -		plugin.getUserInfo(function(user) {
          -			config.macros.message.handler.apply(self, args);
          -		});
          -	} else {
          -		_optionMacro.apply(this, arguments);
          -	}
          -};
          -
          -// hijack isReadOnly to take into account permissions and content type
          -var _isReadOnly = Tiddler.prototype.isReadOnly;
          -Tiddler.prototype.isReadOnly = function() {
          -	return _isReadOnly.apply(this, arguments) ||
          -		!plugin.hasPermission("write", this);
          -};
          -
          -var getStatus = function(callback) {
          -	if(plugin.status.version) {
          -		callback(plugin.status);
          -	} else {
          -		var self = getStatus;
          -		if(self.pending) {
          -			if(callback) {
          -				self.queue.push(callback);
          -			}
          -		} else {
          -			self.pending = true;
          -			self.queue = callback ? [callback] : [];
          -			var _callback = function(context, userParams) {
          -				var status = context.serverStatus || {};
          -				for(var key in status) {
          -					if(key == "username") {
          -						plugin.username = status[key];
          -						config.macros.option.propagateOption("txtUserName",
          -							"value", plugin.username, "input");
          -					} else {
          -						plugin.status[key] = status[key];
          -					}
          -				}
          -				for(var i = 0; i < self.queue.length; i++) {
          -					self.queue[i](plugin.status);
          -				}
          -				delete self.queue;
          -				delete self.pending;
          -			};
          -			adaptor.getStatus({ host: plugin.host }, null, _callback);
          -		}
          -	}
          -};
          -(plugin.getStatus = getStatus)(); // XXX: hacky (arcane combo of assignment plus execution)
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|ToggleTiddlerPrivacyPlugin|
          -|''Version''|0.7.1|
          -|''Status''|@@beta@@|
          -|''Description''|Allows you to set the privacy of new tiddlers and external tiddlers within an EditTemplate, and allows you to set a default privacy setting|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlySpaceConfig|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/ToggleTiddlerPrivacyPlugin.js|
          -!Notes
          -When used in conjunction with TiddlySpaceTiddlerIconsPlugin changing the privacy setting will also interact with any privacy icons.
          -
          -Currently use of
          -{{{<<setPrivacy defaultValue:public>>}}} is in conflict with {{{<<newTiddler fields:"server.workspace:x_private">>}}}
          -
          -There is an option, found in the tweak tab of the backstage, called txtPrivacyMode. Set this to either ''public'' or ''private'' depending on your security preference. If you choose not to set it then it will default to ''public''.
          -!Params
          -defaultValue:[private|public]
          -Allows you to set the default privacy value (Default is private)
          -
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -	var tiddlyspace = config.extensions.tiddlyspace,
          -		macro;
          -	macro = config.macros.setPrivacy = {
          -		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -			if(readOnly) {
          -				return;
          -			}
          -			var el = $(story.findContainingTiddler(place)),
          -				args = paramString.parseParams("name",
          -					null, true, false, true)[0],
          -				container = $("<div />").
          -					addClass("privacySettings").
          -					appendTo(place)[0],
          -				currentSpace = tiddlyspace.currentSpace.name,
          -				currentBag = tiddler ? tiddler.fields["server.bag"] : false,
          -				// XXX: is the following reliable?
          -				isNewTiddler = el.hasClass("missing") || !currentBag,
          -				tiddlerStatus = tiddlyspace.getTiddlerStatusType(tiddler),
          -				customFields = el.attr("tiddlyfields"),
          -				defaultValue = "public",
          -				options = config.macros.tiddlerOrigin ?
          -						config.macros.tiddlerOrigin.getOptions(paramString) :
          -						{};
          -			customFields = customFields ? customFields.decodeHashMap() : {};
          -			if(isNewTiddler || !["public", "private", "unsyncedPrivate",
          -					"unsyncedPublic"].contains(tiddlerStatus)) {
          -				if(args.defaultValue) {
          -					defaultValue = args.defaultValue[0].toLowerCase();
          -				} else {
          -					defaultValue = config.options.chkPrivateMode ?
          -							"private" : "public";
          -				}
          -				defaultValue = defaultValue ?
          -						"%0_%1".format(currentSpace, defaultValue) :
          -						customFields["server.bag"];
          -				this.createRoundel(container, tiddler, currentSpace,
          -						defaultValue, options);
          -			}
          -		},
          -		updateEditFields: function(tiddlerEl, bag) {
          -			var saveBagField = $('[edit="server.bag"]', tiddlerEl),
          -				saveWorkspaceField = $('[edit="server.workspace"]', tiddlerEl),
          -				input = $("<input />").attr("type", "hidden"),
          -				workspace = "bags/" + bag;
          -			if(saveBagField.length === 0) {
          -				input.clone().attr("edit", "server.bag").val(bag).
          -					appendTo(tiddlerEl);
          -			} else {
          -				saveBagField.val(bag);
          -			}
          -			// reset to prevent side effects
          -			$(tiddlerEl).attr("tiddlyFields", "");
          -			if(saveWorkspaceField.length === 0) {
          -				input.clone().attr("edit", "server.workspace").
          -					val(workspace).appendTo(tiddlerEl);
          -			} else {
          -				saveWorkspaceField.val(workspace);
          -			}
          -		},
          -		setBag: function(tiddlerEl, newBag, options) {
          -			var bagStatus,
          -				title = $(tiddlerEl).attr("tiddler"),
          -				tiddler = store.getTiddler(title),
          -				originButton = $(".originButton", tiddlerEl)[0],
          -				refreshIcon,
          -				newWorkspace = "bags/" + newBag,
          -				rPrivate = $("input[type=radio].isPrivate", tiddlerEl),
          -				rPublic = $("input[type=radio].isPublic", tiddlerEl);
          -			refreshIcon = function(type) {
          -				var originMacro = config.macros.tiddlerOrigin;
          -				if(originButton && originMacro) {
          -					options.noclick = true;
          -					originMacro.showPrivacyRoundel(tiddler, type,
          -							originButton, options);
          -				}
          -			};
          -			macro.updateEditFields(tiddlerEl, newBag);
          -			if(tiddler) {
          -				tiddler.fields["server.bag"] = newBag;
          -				// for external tiddlers
          -				tiddler.fields["server.workspace"] = newWorkspace;
          -			}
          -			if(newBag.indexOf("_public") > -1) {
          -				rPrivate.attr("checked", false);
          -				rPublic.attr("checked", true);
          -				bagStatus = "public";
          -			} else {
          -				rPublic.attr("checked", false); // explicitly do this for ie
          -				rPrivate.attr("checked", true);
          -				bagStatus = "private";
          -			}
          -			refreshIcon(bagStatus);
          -		},
          -		createRoundel: function(container, tiddler, currentSpace,
          -							   defaultValue, options) {
          -			var privateBag = "%0_private".format(currentSpace),
          -				publicBag = "%0_public".format(currentSpace),
          -				rbtn = $("<input />").attr("type", "radio").
          -					attr("name", tiddler.title),
          -				el = story.findContainingTiddler(container);
          -			rbtn.clone().val("private").addClass("isPrivate").
          -				appendTo(container);
          -			$("<label />").text("private").appendTo(container); // TODO: i18n
          -			rbtn.clone().val("public").addClass("isPublic")
          -				.appendTo(container);
          -			$("<label />").text("public").appendTo(container); // TODO: i18n
          -			$("[type=radio]", container).click(function(ev) {
          -				var btn = $(ev.target);
          -				tiddler.fields["server.page.revision"] = "false";
          -				if(btn.hasClass("isPrivate")) { // private button clicked.
          -					$(el).addClass("isPrivate").removeClass("isPublic");
          -					macro.setBag(el, privateBag, options);
          -				} else {
          -					$(el).addClass("isPublic").removeClass("isPrivate");
          -					macro.setBag(el, publicBag, options);
          -				}
          -			});
          -			window.setTimeout(function() {
          -				macro.setBag(el, defaultValue, options);
          -			}, 100);
          -			// annoyingly this is needed as customFields are added to end of EditTemplate so are not present yet
          -			// and don't seem to respect any existing customFields.
          -		}
          -	};
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          !SpaceUnplugged
          -{{unpluggedSpaceTab{
          -{{wizard{
          -<<image unsyncedIcon width:48>> Sync is currently unavailable in ~TiddlyWiki due to security constraints in modern browsers. Research is being done to build a suitable alternative. In the meantime if you have changed content in an offline ~TiddlyWiki, you can get your content back into ~TiddlySpace by using the ''import'' functionality from the backstage of the online wiki.
          -}}}
          -}}}
          -
          -!Menu
          -<<message messages.memberStatus>> <<homeLink>>
          -{{unsyncedList{<<message messages.syncListHeading>> <<list filter [is[unsynced]]>>}}}
          -
          -running TiddlySpace@glossary version <<message extensions.tiddlyweb.status.tiddlyspace_version>>
          -{{autotable{
          -<<tiddler Backstage##Resources>>
          -}}}
          -
          -!Resources
          -[[blog|@@blog]] [[documentation|@@docs]] [[featured spaces|@@featured]] 
          -
          -!ImportExport
          -<<fileImport>>
          -You can download this TiddlySpace as an offline TiddlyWiki:
          -
          -{{chunkyButton{<<exportSpace>>}}}
          -
          -!BackstageTiddlers
          -|upload a <<message messages.privacySetting>> file: <<binaryUpload>>|<<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>>|
          -|>|<<search>>|
          -|>|<<tiddler Backstage##Tiddlers>>|
          -
          -!Tiddlers
          -<<tabs
          -	txtMainTab
          -	"Recent" "Recently edited tiddlers" TabTimeline
          -	"All" "All tiddlers" TabAll
          -	"Public" "All public tiddlers" [[TiddlySpaceTabs##Public]]
          -	"Private" "All private tiddlers" [[TiddlySpaceTabs##Private]]
          -	"Tags" "All tags" TabTags
          -	"Spaces" "Tiddlers grouped by space" [[TiddlySpaceTabs##Spaces]]
          -	"Missing" "Missing tiddlers" TabMoreMissing
          -	"Orphans" "Orphaned tiddlers" TabMoreOrphans
          -	"Shadows" "Shadowed tiddlers" TabMoreShadowed
          ->>
          -
          -!BatchOps
          -<<tabs
          -	txtPublisherTab
          -	"Private" "Move tiddlers from private to public" Backstage##BatchPrivate
          -	"Public" "Move tiddlers from public to private" Backstage##BatchPublic
          ->>
          -
          -!BatchPrivate
          -<<TiddlySpacePublisher type:private>>
          -
          -!BatchPublic
          -<<TiddlySpacePublisher type:public>>
          -
          -!Plugins
          -''Note:'' Many of these plugins are core TiddlySpace plugins and cannot be changed unless first cloned.
          -
          -<<tiddler PluginManager>>
          -
          -!Tweaks
          -These options change behavior in TiddlyWiki //only// and may be ineffective in TiddlySpace.
          -
          -<<tiddler AdvancedOptions>>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceRevertRevision|
          -|''Description''|Revert to a previous revision|
          -|''Author''|BenGillies|
          -|''Version''|0.1|
          -|''Status''|unstable|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace|
          -|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.6.0|
          -|''Requires''|TiddlyWebAdaptor TiddlySpaceRevisionView|
          -!Usage
          -Add a control button to revert to a particular revision.
          -
          -The button must be called from within a revision, as generated by TiddlySpaceRevisionView
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -config.commands.revert = {
          -	text: "revert",
          -	tooltip: "make this revision the current one",
          -	handler: function(ev, src, title) {
          -		var revElem = story.getTiddler(title);
          -		var tidToRevert = store.getTiddler($(revElem).attr("revName"));
          -
          -		var revision = store.getTiddler(title);
          -		if ((revision) && (tidToRevert)) {
          -			tidToRevert.text = revision.text;
          -			var newFields = merge({}, revision.fields);
          -			for (var fieldName in newFields) {
          -				if (fieldName.substr(0, 7) === "server.") {
          -					delete newFields[fieldName];
          -				}
          -			}
          -			merge(tidToRevert.fields, newFields);
          -			tidToRevert.tags = merge([], revision.tags);
          -			tidToRevert.fields.changecount = 1;
          -			delete tidToRevert.fields.doNotSave;
          -
          -			store.saveTiddler(tidToRevert.title, tidToRevert.title,
          -				tidToRevert.text, null, null, tidToRevert.tags,
          -				tidToRevert.fields, false, tidToRevert.created, tidToRevert.creator);
          -
          -			autoSaveChanges(true);
          -		}
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="2 724 68 55" 
          -width="30" height="30">
          -<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
          -	<g>
          -		<path d="M 2.25 756 L 11.25 747 L 24.75 760.4994 L 60.750004 724.4994 L 69.75 733.49902 
          -		L 24.749977 778.49976 Z" fill="#101010" class="glyph"/>
          -	</g>
          -</g>
          -</svg>
          -
          -
          -
          /***
          -|''Name''|ImportExternalLinksPlugin|
          -|''Author''|Jon Robson|
          -|''Version''|0.3.0|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceLinkPlugin TiddlySpaceCloneCommand|
          -|''Description''|Turns space links into ajax links so you don't have to leave the comfort of your own TiddlyWiki|
          -!Notes
          -This maybe should hides the editTiddler, cloneTiddler commands. Ideally the toolbar commands should hide themselves but we need a strong concept of "this is a sucked in tiddler" to do that.
          -***/
          -//{{{
          -(function($){
          -var tiddlyspace = config.extensions.tiddlyspace;
          -_createSpaceLink = createSpaceLink;
          -if(_createSpaceLink) {
          -	createSpaceLink = function(place, spaceName, title, alt, isBag) {
          -		var tooltip = "Click to open in current document. Right click to open in original space.";
          -		_createSpaceLink(place, spaceName, title, alt, isBag);
          -		var workspace;
          -		if(isBag) {
          -			workspace = "bags/%0".format(spaceName);
          -		} else {
          -			workspace = "bags/%0_public".format(spaceName);
          -		}
          -		if(title && spaceName != tiddlyspace.currentSpace.name) {
          -			var link = $("a:last", place);
          -			var newlink = $("<a />").text("[link]").after(link[0]);
          -			// very hacky
          -			var updateInterval = setInterval(function() {
          -				var href = link.attr("href");
          -				if(href) {
          -					$(newlink).attr("href", href);
          -					clearInterval(updateInterval);
          -				}
          -			}, 200);
          -			
          -			if(link.parent(".replyLink").length == 0) { // don't suck in a reply link.
          -				link.attr("title", tooltip).addClass("importLink").click(function(ev) {
          -					if(config.floorboards) {
          -						config.floorboards.pushUnique("%0_public".format(spaceName));
          -					}
          -					tiddlyspace.displayServerTiddler(ev.target, title, workspace, function(el) {
          -						// TODO: the commands should disable themselves based on the meta information.
          -						//$("[commandname=editTiddler], [commandname=cloneTiddler]", el).hide(); 
          -					});
          -					ev.preventDefault();
          -				});
          -			}
          -		}
          -	};
          -}
          -
          -var _cloneHandler = config.commands.cloneTiddler.handler;
          -config.commands.cloneTiddler.handler = function(event, src, title) {
          -	var _tiddler = store.getTiddler(title);
          -	var source = _tiddler ? _tiddler.fields["server.bag"] : false;
          -	var imported = _tiddler ? _tiddler.fields["tiddler.source"] : false;
          -	var realTitle = _tiddler ? _tiddler.fields["server.title"] : title;
          -	_cloneHandler.apply(this, [event, src, title]);
          -	var tidEl = story.getTiddler(title);
          -	$(story.getTiddlerField(title, "title")).val(realTitle);
          -	if(source) {
          -		$("<input />").attr("type", "hidden").attr("edit", "tiddler.source").val(source).appendTo(tidEl);
          -		$("<input />").attr("type", "hidden").attr("edit", "server.activity").appendTo(tidEl);
          -	}
          -}
          -})(jQuery);
          -//}}}
          -
          -
          -
          var user, userbag;
          -var friends = [];
          -var host = "http://tiddlyspace.com";
          -
          -$.ajaxSetup({
          -	beforeSend: function(xhr) {
          -		xhr.setRequestHeader("X-ControlView", "false");
          -	}
          -});
          -
          -function printMessage(txt) {
          -	alert(txt);
          -}
          -
          -function printError(txt) {
          -	alert(txt);
          -}
          -
          -var simpleDate = (function() {
          -
          -	var measures = {
          -		second: 1,
          -		minute: 60,
          -		hour: 3600,
          -		day: 86400,
          -		week: 604800,
          -		month: 2592000,
          -		year: 31536000
          -	};
          -
          -	var chkMultiple = function(amount, type) {
          -		return (amount > 1) ? amount + " " + type + "s":"a " + type;
          -	};
          -
          -	return function(thedate) {
          -
          -		var dateStr, amount,
          -			current = new Date().getTime(),
          -			diff = (current - thedate.getTime()) / 1000; // work with seconds
          -
          -		if(diff > measures.year) {
          -			amount = Math.round(diff/measures.year);
          -			dateStr = "about " + chkMultiple(amount, "year") + " ago";
          -		} else if(diff > measures.month) {
          -			amount = Math.round(diff/measures.month);
          -			//if(typeof amount == "")
          -			dateStr = "about " + chkMultiple(amount, "month") + " ago";
          -		} else if(diff > measures.week) {
          -			amount = Math.round(diff/measures.week);
          -			dateStr = "about " + chkMultiple(amount, "week") + " ago";
          -		} else if(diff > measures.day) {
          -			amount = Math.round(diff/measures.day);
          -			dateStr = "about " + chkMultiple(amount, "day") + " ago";
          -		} else if(diff > measures.hour) {
          -			amount = Math.round(diff/measures.hour);
          -			dateStr = "about " + chkMultiple(amount, "hour") + " ago";
          -		} else if(diff > measures.minute) {
          -			amount = Math.round(diff/measures.minute);
          -			dateStr = "about " + chkMultiple(amount, "minute") + " ago";
          -		} else {
          -			dateStr = "a few seconds ago";
          -		}
          -
          -		return dateStr;
          -
          -	};
          -})();
          -
          -function prettyDate(t) {
          -	var date = new Date(Date.UTC(
          -		parseInt(t.substr(0, 4), 10),
          -		parseInt(t.substr(4, 2), 10) - 1,
          -		parseInt(t.substr(6, 2), 10),
          -		parseInt(t.substr(8, 2), 10),
          -		parseInt(t.substr(10, 2), 10),
          -		parseInt(t.substr(12, 2) || "0", 10),
          -		parseInt(t.substr(14, 3) || "0", 10)
          -	));
          -	return simpleDate(date);
          -}
          -
          -function endsWith(str, suffix) {
          -	return str.indexOf(suffix) == str.length - suffix.length;
          -}
          -
          -function isShadow(tid) {
          -	var shadows = ["MarkupPreHead", "DefaultTiddlers", "PageTemplate", "SideBarTabs",
          -		"GettingStarted", "MainMenu", "SiteTitle", "SiteSubtitle", "ColorPalette",
          -		"SiteIcon", "ViewTemplate", "EditTemplate", "ServerSettings", "MarkupPostHead",
          -		"MarkupPostBody", "MarkupPreBody"];
          -	return tid.title.indexOf("StyleSheet") === 0 ||
          -		tid.title.indexOf("SideBar") === 0 ||
          -		shadows.indexOf(tid.title) > -1 || endsWith(tid.title, "SetupFlag") ? true : false;
          -}
          -
          -function isPlugin(tid) {
          -	return tid.tags.indexOf("systemConfig") > -1 ? true : false;
          -}
          -
          -function isArtifact(tid) {
          -	var follow = tid.tags.indexOf("follow") > -1;
          -	var type = tid.type;
          -	if(follow || type) {
          -		return true;
          -	} else {
          -		return false;
          -	}
          -}
          -
          -function chooseTiddlers(tiddlers) {
          -	var _tiddlers = [];
          -	for(var i = 0; i < tiddlers.length; i++) {
          -		var tid = tiddlers[i];
          -		if(!isPlugin(tid) && !isShadow(tid) && !isArtifact(tid)) {
          -			_tiddlers.push(tid);
          -		}
          -	}
          -	return _tiddlers;
          -}
          -
          -function bubbleDown() {
          -	var friends = $(".friend");
          -	friends.css({ position: "relative" });
          -	var target;
          -	friends.each(function(i, el) {
          -		if(!target && $(el).hasClass("silentFriend") &&
          -			$(el).next(".friend").hasClass("noisyFriend")) {
          -			target = el;
          -		}
          -	});
          -	if(target) {
          -		var other = $(target).next(".friend");
          -		// we want to move target above the prev element
          -		// target is an element which has the class noisy and the previous node is quiet
          -		var swapDuration = 50;
          -		var otherHeight = other.height();
          -		var thisHeight = $(target).height();
          -		$(target).animate({ top: + otherHeight }, { duration: swapDuration });
          -		$(other).animate({ top:  - thisHeight }, { duration: swapDuration,
          -				complete: function() {
          -					var newTarget = $(target).clone(true).insertAfter(other)[0];
          -					$(target).remove();
          -					$(other).css({ top: 0 });
          -					$(newTarget).css({ top: 0 });
          -					bubbleDown();
          -				}
          -		});
          -	}
          -}
          -
          -function renderTiddlerList(container,friend) {
          -	var tidList = $("<ul />").appendTo(container)[0];
          -	$("<li />").text("loading").appendTo(tidList);
          -	var oncompletion = function() {
          -		if($(".errorFriend,.silentFriend,.noisyFriend").length === $(".friend").length) {
          -			bubbleDown();
          -		}
          -	}
          -	$.ajax({ dataType: "json",
          -		url: "/search?q=modifier:" + friend + "&select=modified:>3d&sort=-modified",
          -		error: function() {
          -			$(container).addClass("errorFriend");
          -			oncompletion();
          -		},
          -		success: function(tiddlers) {
          -			$(tidList).empty();
          -			tiddlers = chooseTiddlers(tiddlers);
          -			if(tiddlers.length === 0) {
          -				$(container).addClass("silentFriend");
          -				$("<li />").text("No recent activity.").appendTo(tidList);
          -				oncompletion();
          -				return;
          -			} else {
          -				$(container).addClass("noisyFriend").removeClass("inactiveFriend");
          -				oncompletion();
          -			}
          -			for(var i=0; i < tiddlers.length; i++) {
          -				var tiddler = tiddlers[i];
          -				var item = $("<li />").appendTo(tidList)[0];
          -				var win;
          -				var space = tiddler.bag.split("_")[0];
          -				var spaceUrl = "http://" + space + ".tiddlyspace.com";
          -				var path = "/bags/" + tiddler.bag + "/tiddlers/" + encodeURIComponent(tiddler.title);
          -				var link = $("<a />").text(tiddler.title).
          -					attr("href", spaceUrl + path).
          -					data("path", path).
          -					click(function(ev) {
          -						var win = $(ev.target).data("win");
          -						if($(ev.target).hasClass("active")) {
          -							$(win).toggle(1000);
          -						} else {
          -							$(ev.target).addClass("active");
          -							$(".text", win).text("loading...");
          -							$(win).show();
          -							$.ajax({
          -								url: $(ev.target).data("path"),
          -								data: {
          -									render: "y"
          -								},
          -								dataType: "json",
          -								success: function(tiddler) {
          -									$(".text",win).html(tiddler.render);
          -									$(win).show(1000);
          -								},
          -								error: function() {
          -									$(".text", win).text("error loading that tiddler");
          -								}
          -							});
          -						}
          -						ev.preventDefault();
          -					}).
          -					appendTo(item)[0];
          -				var space = tiddler.bag.split("_")[0];
          -				$("<span />").text(" in ").appendTo(item);
          -				$("<a />").attr("href", spaceUrl).text(space).appendTo(item);
          -				$("<span />").text(" (" + prettyDate(tiddler.modified) + ")").appendTo(item);
          -				win = $("<div />").addClass("tiddler").appendTo(item)[0];
          -				$("<div />").addClass("text").appendTo(win);
          -				var toolbar = $("<div />").addClass("toolbar").appendTo(win)[0];
          -				var extra = $("<div />").addClass("extra").appendTo(win)[0];
          -				$("<button />").data("bag", tiddler.bag).data("title", tiddler.title).text("give feedback").
          -					data("revision", tiddler.revision).click(function(ev) {
          -					var title = $(ev.target).data("title");
          -					var revision = $(ev.target).data("revision");
          -					var bag = $(ev.target).data("bag");
          -					var revisionURL = host + "/bags/" + bag + "/tiddlers/" + encodeURIComponent(title) + "/revisions/" + revision;
          -					var space = bag.split("_")[0];
          -					var area = $(ev.target).parents(".tiddler").children(".extra")[0];
          -					$(area).hide();
          -					$("<textarea />").appendTo(area);
          -					$("<button />").text("save feedback").click(function(ev) {
          -						var tid = new tiddlyweb.Tiddler("Feedback for " + title, userbag);
          -						tid.tags = ["feedback", "@" + space];
          -						tid.text = ["In reply to [[", title, "]]@", space,
          -							" (revision [[", revision, "|", revisionURL, "]])\n\n"].join("") + $("textarea", area).val();
          -						tid.put(function(tiddler) {
          -							$(area).empty();
          -							$("<span />").text("your comment: ").appendTo(area);
          -							$("<a />").attr("href", "/" + encodeURIComponent(tiddler.title)).text(tiddler.title).appendTo(area);
          -						}, function() {
          -							printError("error commenting!");
          -						});
          -					}).appendTo(area);
          -					$(area).show(1000);
          -					ev.preventDefault();
          -					$(ev.target).remove();
          -					return false;
          -				}).appendTo(toolbar);
          -
          -				$(win).hide();
          -				$(link).data("win", win);
          -			}
          -		}
          -	})
          -}
          -
          -function removeFriend(friend) {
          -	var tiddler = new tiddlyweb.Tiddler("@" + friend, userbag);
          -	var success = function() {
          -		printMessage("User removed from friends");
          -		var newFriends = [];
          -		for(var i = 0; i < friends.length; i++) {
          -			var f = friends[i];
          -			if(f !== friend) {
          -				newFriends.push(f);
          -			}
          -		}
          -		friends = newFriends;
          -		$("#friend-" + friend).hide(2000);
          -	};
          -	tiddler["delete"](success, function() {
          -		var old = new tiddlyweb.Tiddler(friend, userbag);
          -		old["delete"](success, function() {
          -			printError("Unable to remove friend " + friend);
          -		})
          -	})
          -}
          -
          -function renderFriend(list, friend) {
          -	var bag = friend + "_public";
          -	var item = $("<li />").addClass("friend").attr("id", "friend-" + friend).addClass("inactiveFriend").appendTo(list)[0];
          -	$("<img />").attr("alt", friend).attr("title", friend).
          -		attr("src", host + "/bags/" + bag + "/tiddlers/SiteIcon").css({ width: 48, height: 48 }).appendTo(item);
          -	var heading = $("<h2>").appendTo(item)[0];
          -	$("<a />").attr("href", "#friend-" + friend).attr("name", "friend-" + friend).text(friend).appendTo(heading);
          -	$("<button />").data("who", friend).text("remove from friends").
          -		click(function(ev) {
          -			if(confirm("Are you sure you want to remove " + friend + " as a friend?")) {
          -				removeFriend($(ev.target).data("who"));
          -			}
          -		}).appendTo(item)[0];
          -	renderTiddlerList(item,friend);
          -}
          -
          -function renderFriends() {
          -	var list = $("<ul />").appendTo("#friends")[0];
          -	$("<li />").text("Activity of your friends will appear below when available").appendTo(list);
          -	for(var i = 0; i < friends.length; i++) {
          -		var friend = friends[i];
          -		renderFriend(list, friend);
          -	}
          -}
          -
          -function followWidget() {
          -	$("#friends").empty();
          -	var container = $("<div />").addClass("addfriends").appendTo("#friends")[0];
          -	$("<input />").attr("name", "friend").appendTo(container);
          -	$("<button />").text("add friend").click(function(ev) {
          -		var friend = $(ev.target).parent().children("[name='friend']").val();
          -		if(friends.indexOf(friend) > -1) {
          -			return printError("You already follow " + friend + "!");
          -		}
          -
          -		var title;
          -		if(friend.indexOf("@") !== 0) {
          -			title = "@" + friend;
          -		} else {
          -			title = friend;
          -		}
          -
          -		$.ajax({ dataType: "text", url: "/users/" + friend,
          -			success: function() {
          -				var tid = new tiddlyweb.Tiddler(title, userbag);
          -				tid.tags = ["follow", "excludeLists"];
          -				tid.put(function(tiddler) {
          -					printMessage("Added friend " + friend);
          -					renderFriend($("#friends ul")[0], friend);
          -					window.location.hash = "#friend-" + friend;
          -				}, function() {
          -					printError("Failed to add friend " + friend);
          -				})
          -			},
          -			error: function() {
          -				printError("No one with name " + friend + " exists!");
          -			}
          -		});
          -	}).appendTo(container);
          -	renderFriends();
          -}
          -$.ajax({
          -	url: "/status",
          -	dataType: "json",
          -	success: function(status) {
          -		user = status.username;
          -		userbag = new tiddlyweb.Bag(user + "_public", "/");
          -		$.ajax({ url: "/bags/" + user + "_public/tiddlers?select=tag:follow", dataType: "json", success: function(tiddlers) {
          -				for(var i = 0; i < tiddlers.length; i++) {
          -					var title = tiddlers[i].title;
          -					if(title.indexOf("@") === 0) {
          -						title = title.substr(1, title.length);
          -					}
          -					friends.push(title);
          -				}
          -				friends.sort();
          -				followWidget();
          -			}
          -		});
          -	}
          -})
          -
          -
          -
          Once you have some content then you may choose to determine a tiddler, or set of tiddlers to display each time you load ~TiddlySpace. This is determined by the [[DefaultTiddlers]].
          -
          -
          -
          <!DOCTYPE html>
          -<html>
          -<head>
          -	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
          -	<title>This Space</title>
          -	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
          -	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
          -	<!--[if lte IE 8]>
          -	<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
          -	<script type="text/javascript" src="/bags/common/tiddlers/es5-shim.min.js"></script>
          -	<![endif]-->
          -</head>
          -<body>
          -<div id="container">
          -	<div id="text-html" class="main section">
          -		<a class="app" href="/">home</a>
          -		<div class="left">
          -		<h2>About this space <button class='toggleNext'></button></h2>
          -		<div id="siteinfo"></div>
          -		<h2>Site Icon</h2>
          -		<div>
          -			<img id="siteicon" class="siteicon">
          -			<form id="upload" method="POST" enctype="multipart/form-data">
          -				<input type="hidden" name="title" value="SiteIcon" />
          -				<input type="hidden" name="tags" value="excludeLists">
          -				<input type="hidden" name="csrf_token" class="csrf" />
          -				<input type="file" name="file" accept="image/*" />
          -				<input class="btn" type="submit" value="upload" />
          -			</form>
          -			<div id="dropzone">Drop file here
          -				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
          -			</div>
          -		</div>
          -		<h2>Vital Statistics</h2>
          -		<div id="info">please wait while information is loaded about this space...</div>
          -		<button class="spacereset">Reset Space</button>
          -		<div class="reset-confirm-wrap messageArea">
          -			<button class="close-btn" title="cancel reset">×</button>
          -			<p>Are you sure you want to reset the space? You can't go back! This will remove all the content from the space!</p>
          -			<form class="cf">
          -				<label for="reset-confirm">Enter the space name to confirm.</label>
          -				<input type="text" name="reset-confirm" class="reset-confirm-input inputBox" />
          -				<button type="submit">Reset Now</button>
          -			</form>
          -			<div class="reset-message-area">
          -				<p class="performing">Resetting...</p>
          -				<p class="finished">Reset Done!</p>
          -				<p class="recipe-error-msg">Error removing includes. Please remove manually.</p>
          -			</div>
          -		</div>
          -		</div>
          -		<div class="right">
          -		<div class="ts-membership">
          -			<h2>
          -				Add Member
          -				<a href="http://docs.tiddlyspace.com/What%20is%20a%20member%3F" title="What is a Member?" class="help">What is a Member?</a>
          -			</h2>
          -			<div>
          -				<p>Add a new member to your space by entering their name below. Enter a space name instead and prefix with @ to add everyone who is already a member of that space.</p>
          -				<form class="ts-members">
          -					<input class="inputBox" type="text" name="username">
          -					<input type="submit" value="Add Member" class="btn" />
          -				</form>
          -			</div>
          -			<h2>
          -				Existing Members <button class='toggleNext'></button>
          -			</h2>
          -			<div>
          -				Your space currently has the following members: 
          -				<ul class="ts-members"></ul>
          -			</div>
          -			<h2>
          -				Include Space
          -				<a class="help" href="http://docs.tiddlyspace.com/What%20is%20space%20inclusion%3F" title="What is inclusion?">What is Inclusion?</a>
          -			</h2>
          -			<form class="ts-includes">
          -				<input class="inputBox" type="text" name="spacename">
          -				<input type="submit" value="Include Space" class="btn" />
          -			</form>
          -		</div>
          -		<div>
          -			<h2>Included Spaces <button class='toggleNext'></button></h2>
          -			<div>
          -			This space includes the following spaces:
          -			<ul class="ts-includes"></ul>
          -			</div>
          -		</div>
          -		</div>
          -		<div class="clear"></div>
          -	</div>
          -</div>
          -<script src='/bags/common/tiddlers/backstage.js'></script>
          -<script src='/bags/common/tiddlers/jquery.js'></script>
          -<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
          -<script src='/bags/common/tiddlers/chrjs.space'></script>
          -<script src='/bags/common/tiddlers/chrjs.users'></script>
          -<script src='/bags/common/tiddlers/chrjs.identities'></script>
          -<script src='/bags/tiddlyspace/tiddlers/TiddlySpaceCSRF'></script>
          -<script src='/bags/common/tiddlers/jquery-form.js'></script>
          -<script src="/bags/common/tiddlers/siteiconupload.js"></script>
          -<script src="/bags/common/tiddlers/ts.js"></script>
          -<script src="/status.js"></script>
          -<script src="/bags/common/tiddlers/space.js"></script>
          -</body>
          -</html>
          -
          -
          -
          User-agent: *
          -Disallow: /bags
          -Disallow: /recipes
          -
          -
          -
          /***
          -|''Name''|ErrorHandlerPlugin|
          -|''Version''|0.4.3|
          -|''Author''|Jon Robson|
          -|''Description''|Localised tiddler save errors including edit conflict resolution.|
          -|''CoreVersion''|2.6.1|
          -|''Requires''|TiddlySpaceConfig|
          -***/
          -//{{{
          -(function($) {
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var currentSpace = tiddlyspace.currentSpace.name;
          -tiddlyspace.getLocalTitle = function(title, workspace, suffix) {
          -	var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          -	if(!suffix) {
          -		var isPublic = endsWith(workspace, "_public");
          -		suffix = tiddlyspace.resolveSpaceName(workspace);
          -		if(currentSpace == suffix) {
          -			suffix = isPublic ? "public" : "private";
          -		} else {
          -			suffix = "@%0".format(suffix);
          -		}
          -	}
          -	return "%0 *(%1)*".format(title, suffix);
          -};
          -
          -var sssp = config.extensions.ServerSideSavingPlugin;
          -
          -var msgs = config.messages.editConflict = {
          -	loading: "Loading..",
          -	resolve: "[[Edit Conflict]]@glossary: this tiddler may have been changed by someone else.",
          -	reviewDiff: "review (recommended)",
          -	reviewDiffTooltip: "review changes made to this tiddler",
          -	reviewDiffError: "error retrieving revision.",
          -	save: "overwrite",
          -	saveTooltip: "make this revision the top revision of this tiddler",
          -	discard: "cancel",
          -	discardTooltip: "undo changes to this tiddler and get most recent version",
          -	diffTitle: "%0",
          -	diffFieldTitle: "%0 - fields",
          -	diffTextTitle: "%0 - text",
          -	updating: "updating your version...",
          -	diffHeader: ["Review the changes that have been made whilst you were editing this tiddler. ",
          -		"Fold relevant changes back into your version.\n",
          -		"{{removed{Red}}} highlight shows content removed. ",
          -		"{{added{Green}}} highlight shows content added.\n"].join(""),
          -	diffTextHeader: "View changes in text",
          -	diffFieldsHeader: "View changes in fields"
          -};
          -
          -var plugin = config.extensions.errorHandler = {
          -	diffTags: ["excludeLists", "excludeMissing", "excludeSearch"],
          -	displayMessage: function(message, tiddler, context) {
          -		var desc = context && context.httpStatus ? context.statusText :
          -			sssp.locale.connectionError;
          -		var reportArea = plugin.reportError(tiddler.title);
          -		var msg = $("<div />").appendTo(reportArea);
          -		if(message == "saveConflict") {
          -			wikify(msgs.resolve, msg[0]);
          -			var choiceArea = $("<div />").appendTo(reportArea)[0];
          -			plugin.editConflictHandler(choiceArea, tiddler);
          -		} else {
          -			msg.text(sssp.locale[message].format(tiddler.title, desc));
          -		}
          -	},
          -	editConflictHandler: function(container, tiddler) {
          -		var title = tiddler.title;
          -		var myrev = tiddler.fields["server.page.revision"];
          -		// note user now needs to edit, fix problem and save. 
          -		// TODO: make sure this gets reset in save callback
          -		store.getTiddler(title).fields["server.page.revision"] = "false";
          -
          -		var diffBtn = createTiddlyButton(container, msgs.reviewDiff, msgs.reviewDiffTooltip, function(ev) {
          -			var title = $(ev.target).data("title");
          -			plugin.displayDiff(ev.target, store.getTiddler(title), myrev);
          -		});
          -		var saveBtn = createTiddlyButton(container, msgs.save, msgs.saveTooltip, function(ev) {
          -				var title = $(ev.target).data("title");
          -				var tid = store.saveTiddler(store.getTiddler(title));
          -				autoSaveChanges(null, [tid]);
          -			});
          -		var ignoreBtn = createTiddlyButton(container, msgs.discard, msgs.discardTooltip, function(ev) {
          -			var title = $(ev.target).text(msgs.updating).data("title");
          -			plugin.resetToServerVersion(store.getTiddler(title));
          -		});
          -		$([diffBtn, ignoreBtn, saveBtn]).data("title", title);
          -	},
          -	getDiffTiddlerTexts: function(diffText) {
          -		var chunks = diffText.split("\n  \n");
          -		if(chunks.length < 2) {
          -			return [chunks[0], ""];
          -		} else {
          -			var diffFieldsText = "{{diff{\n%0\n}}}".format(chunks[0]);
          -			diffText = '{{diff{\n%0\n}}}'.format(chunks.splice(1, chunks.length).join("\n"));
          -			return [diffText, diffFieldsText];
          -		}
          -	},
          -	makeDiffTiddler: function(title, diff) {
          -		var newTiddler = new Tiddler(title);
          -		var tags = plugin.diffTags;
          -		newTiddler.text = msgs.loading;
          -		newTiddler.fields.doNotSave = true;
          -		newTiddler.tags = diff ? tags.concat(["diff"]) : tags;
          -		newTiddler = store.saveTiddler(newTiddler);
          -		$.extend(store.getTiddler(title).fields,
          -			config.defaultCustomFields); // allow option to save it
          -		return newTiddler;
          -	},
          -	displayDiff: function(src, tiddler, latestRevision) {
          -		var adaptor = tiddler.getAdaptor();
          -		var title = tiddler.title;
          -		var ts = new Date().formatString("0hh:0mm:0ss");
          -		var suffix = "edit conflict %0".format(ts);
          -		var diffTitle = tiddlyspace.getLocalTitle(msgs.diffTitle.format(title), "", suffix);
          -		var diffTextTitle = tiddlyspace.getLocalTitle(msgs.diffTextTitle.format(title), "", suffix);
          -		var diffFieldsTitle = tiddlyspace.getLocalTitle(msgs.diffFieldTitle.format(title), "", suffix);
          -		plugin.makeDiffTiddler(diffTextTitle, true);
          -		plugin.makeDiffTiddler(diffFieldsTitle, true);
          -		var newTiddler = plugin.makeDiffTiddler(diffTitle, false);
          -		newTiddler.text = ['%0\n<<slider chkViewDiffText "%1" "%2">>\n',
          -			'<<slider chkViewDiffField "%3" "%4">>'].join("").
          -			format(msgs.diffHeader, diffTextTitle, msgs.diffTextHeader,
          -				diffFieldsTitle, msgs.diffFieldsHeader);
          -		store.saveTiddler(newTiddler);
          -
          -		var callback = function(r) {
          -			var text = plugin.getDiffTiddlerTexts(r);
          -			store.getTiddler(diffTextTitle).text = text[0];
          -			store.getTiddler(diffFieldsTitle).text = text[1];
          -			story.refreshTiddler(diffTitle, null, true);
          -		};
          -		var workspace = "bags/%0".format(tiddler.fields["server.bag"]);
          -		ajaxReq({
          -			type: "get",
          -			dataType: "text",
          -			url: "/diff?format=unified&rev1=%0/%1/%2&rev2=%0/%1".format(workspace, title, latestRevision),
          -			success: callback,
          -			error: function() {
          -				displayMessage(msgs.reviewDiffError);
          -			}
          -		});
          -		story.displayTiddler(src, diffTitle);
          -	},
          -	resetToServerVersion: function(tiddler) {
          -		var adaptor = tiddler.getAdaptor();
          -		var ctx = { 
          -			host: tiddler.fields["server.host"],
          -			workspace: "bags/" + tiddler.fields["server.bag"]
          -		};
          -		adaptor.getTiddler(tiddler.title, ctx, null, function(context) {
          -			store.saveTiddler(context.tiddler);
          -			story.refreshTiddler(tiddler.title);
          -			store.setDirty(false);
          -		});
          -	},
          -	reportError: function(title) {
          -		var el = story.getTiddler(title);
          -		if(!el) {
          -			el = story.displayTiddler(null, title);
          -		}
          -		return $("<div />").addClass("error annotation").prependTo(el)[0];
          -	}
          -};
          -
          -sssp.reportFailure = function(message, tiddler, context) {
          -	config.options.chkViewDiffText = config.options.chkViewDiffText === undefined ?
          -		true : config.options.chkViewDiffText;
          -	config.options.chkViewDiffFields = config.options.chkViewDiffFields || false;
          -	plugin.displayMessage(message, tiddler, context);
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          [[Replies and Notifications]]
          -
          -<<activity>>
          -
          -
          -
          <html>
          -<head>
          -	<title>Friends</title>
          -	<style type='text/css'>
          -		ul {
          -			list-style: none;
          -		}
          -		ul .friend {
          -			border-bottom: solid 1px black;
          -		}
          -		ul .friend .tiddler {
          -			margin-left: 10px;
          -			margin-bottom: 30px;
          -			padding: 10px;
          -			border: dotted 2px #CCC;
          -			color: #006100;
          -		}
          -		textarea {
          -			width: 100%;
          -			height: 150px;
          -		}
          -		.friend h2 {
          -			display: inline-block;
          -		}
          -		button {
          -			display: inline-block;
          -		}
          -		.inactiveFriend {
          -			background-color: #ccc;
          -			opacity: 0.1;
          -		}
          -	</style>
          -	<link rel="stylesheet" href="/HtmlCss" type="text/css">
          -</head>
          -<body>
          -<div id="container">
          -<div id="header">
          -<h1>Your friends</h1>
          -</div>
          -<noscript>
          -	javascript is required to see friend's activity
          -</noscript>
          -<div id='friends' class="section">loading...</div>
          -</div>
          -<script src="/bags/common/tiddlers/jquery.js" type="text/javascript" charset="utf-8"></script>
          -<script src="/bags/common/tiddlers/jquery-json.js" type="text/javascript" charset="utf-8"></script>
          -<script src="/bags/tiddlyspace/tiddlers/chrjs" type="text/javascript" charset="utf-8"></script>
          -<script type='text/javascript' src='/friendjs'></script>
          -</body>
          -</html>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceTiddlerIconsPlugin|
          -|''Version''|0.8.10|
          -|''Status''|@@beta@@|
          -|''Author''|Jon Robson|
          -|''Description''|Provides ability to render SiteIcons and icons that correspond to the home location of given tiddlers|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceTiddlerIconsPlugin.js|
          -|''Requires''|TiddlySpaceConfig BinaryTiddlersPlugin ImageMacroPlugin TiddlySpacePublishingCommands|
          -!Notes
          -{{{<<tiddlerOrigin>>}}} shows the origin of the tiddler it is being run on.
          -In TiddlySpace terms this means it will determine whether the tiddler is external, public or private.
          -Where private it will analyse whether a public version exists and distinguish between the different scenarios.
          -If a tiddler is external, the SiteIcon of that external space will be shown
          -
          -!Parameters
          -width / height : define a width or height of the outputted icon
          -label: if label parameter is set to yes, a label will accompany the icon.
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -if(!config.macros.image) {
          -	throw "Missing dependency: ImageMacroPlugin";
          -}
          -
          -var imageMacro = config.macros.image;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var tweb = config.extensions.tiddlyweb;
          -var cmds = config.commands;
          -var cmd = cmds.publishTiddler;
          -tiddlyspace.resolveSpaceName = function(value) {
          -	var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          -	if(value) {
          -		value = value.indexOf("bags/") === 0 ? value.substr(5) : value;
          -		value = value.indexOf("recipes/") === 0 ? value.substr(8) : value;
          -		if(value.indexOf("@") === 0) {
          -			value = value.substr(1);
          -		}
          -		if(endsWith(value, "_public")) {
          -			value = value.substr(0, value.length - 7);
          -		} else if(endsWith(value, "_private")) {
          -			value = value.substr(0, value.length - 8);
          -		}
          -		value = value.toLowerCase();
          -	}
          -	return value;
          -};
          -
          -tiddlyspace.renderAvatar = function(place, value, options) {
          -	options = options ? options : {};
          -	options.labelOptions = options.labelOptions ? options.labelOptions : { include: false, height: 48, width: 48 };
          -	options.imageOptions = options.imageOptions ? options.imageOptions : {};
          -	options.imageOptions.altImage = "/bags/common/tiddlers/defaultUserIcon";
          -	var container = $('<div class="siteIcon" />').appendTo(place);
          -	value = tiddlyspace.resolveSpaceName(value);
          -
          -	tweb.getStatus(function(status) {
          -		var link, noLabel;
          -		if(!value || value == config.views.wikified.defaultModifier ||
          -			value == config.views.wikified.shadowModifier) {
          -			var icon = config.views.wikified.shadowModifier == value ? "shadowIcon" : "missingIcon";
          -			if(store.tiddlerExists(icon)) {
          -				imageMacro.renderImage(container, icon, options.imageOptions);
          -			} else {
          -				noLabel = true;
          -			}
          -		} else {
          -			var spaceURI;
          -			if(value != tiddlyspace.currentSpace.name) {
          -				spaceURI = options.notSpace ? tiddlyspace.getHost(status.server_host) :
          -					tiddlyspace.getHost(status.server_host, value);
          -			}
          -			link = spaceURI ? $("<a />").attr("href", spaceURI) : $("<span />");
          -			link.text(value);
          -
          -			var imageOptions = options.imageOptions;
          -			if(options.spaceLink && !imageOptions.link) {
          -				imageOptions.link = spaceURI;
          -			}
          -			var avatar = options.notSpace ? false : value;
          -			var uri = tiddlyspace.getAvatar(status.server_host, avatar);
          -			imageMacro.renderImage(container, uri, options.imageOptions);
          -			if(!value) {
          -				value = "tiddlyspace";
          -			}
          -		}
          -		if(!noLabel && options.labelOptions.include) {
          -			var prefix = $("<span />").text(options.labelOptions.prefix || "")[0];
          -			var suffix = $("<span />").text(options.labelOptions.suffix || "")[0];
          -			$('<div class="label" />').append(prefix).append(link).
          -				append(suffix).appendTo(container);
          -		}
          -	});
          -	if(value) {
          -		var prefix = options.labelOptions.prefix || "";
          -		var suffix = options.labelOptions.suffix || "";
          -		var label = "%0%1%2".format(prefix, value, suffix);
          -		$(container).attr("title", label);
          -	}
          -};
          -
          -var originMacro = config.macros.tiddlerOrigin = {
          -	locale: {
          -		"shadow": "shadow tiddler",
          -		"missing": "missing tiddler",
          -		"private": "private",
          -		"unknown": "unknown state",
          -		"public": "public",
          -		"unsyncedPrivate": "unsynced and private",
          -		"unsyncedPublic": "unsynced and public",
          -		externalPrefix: "from ",
          -		externalBagSuffix: " bag",
          -		externalSuffix: " space",
          -		publishPrivateDeletePrivate: "Are you sure you want to make this tiddler public?",
          -		moveToPrivate: "Are you sure you want to make this tiddler private? Only members will be able to see it.",
          -		pleaseWait: "please wait..",
          -		keepPublic: "keep public",
          -		cannotPublishDirtyTiddler: "The current tiddler is unsaved so cannot be published. Please save the tiddler first.",
          -		keepPrivate: "keep private",
          -		makePublic: "make public",
          -		makePrivate: "make private"
          -	},
          -	handler: function(place, macroName, params,wikifier, paramString, tiddler){
          -		var adaptor = tiddler.getAdaptor();
          -		var btn = $("<div />").addClass("originButton").attr("params", paramString).
          -			attr("refresh", "macro").attr("macroName", macroName).appendTo(place)[0];
          -		$(btn).data("tiddler", tiddler);
          -		originMacro.refresh(btn);
          -	},
          -	refresh: function(btn) {
          -		$(btn).empty();
          -		var paramString = $(btn).attr("params");
          -		var tiddler = $(btn).data("tiddler");
          -		var options = originMacro.getOptions(paramString);
          -		var type = tiddlyspace.getTiddlerStatusType(tiddler);
          -		originMacro.renderIcon(tiddler, type, btn, options);
          -	},
          -	getOptions: function(paramString) {
          -		paramString = "%0 label:no width:48 height:48 spaceLink:yes preserveAspectRatio:yes".format(paramString);
          -		var parsedParams = paramString.parseParams("name");
          -		var params = parsedParams[0].name;
          -		var options = {
          -			labelOptions: originMacro._getLabelOptions(parsedParams),
          -			imageOptions: imageMacro.getArguments(paramString, []),
          -			noclick: parsedParams[0].interactive &&
          -				parsedParams[0].interactive[0] == "no" ? true : false
          -		};
          -		if(!options.noclick) {
          -			var spaceLink = parsedParams[0].spaceLink;
          -			options.spaceLink = spaceLink && spaceLink[0] == "no" ? false : true;
          -		} else {
          -			options.spaceLink = false;
          -		}
          -		return options;
          -	},
          -	_getLabelOptions: function(parsedParams) {
          -		parsedParams = parsedParams[0];
          -		var includeLabel = !parsedParams.label || ( parsedParams.label && parsedParams.label[0] == "yes" );
          -		var prefix = parsedParams.labelPrefix ? parsedParams.labelPrefix[0] : false;
          -		var suffix = parsedParams.labelSuffix ? parsedParams.labelSuffix[0] : false;
          -		return { include: includeLabel, suffix: suffix, prefix: prefix };
          -	},
          -	_isSpace: function(value) {
          -		value = value ? value : "";
          -		var endsWith = config.extensions.BinaryTiddlersPlugin.endsWith;
          -		if(endsWith(value, "_private") || endsWith(value, "_public")) {
          -			return true;
          -		} else {
          -			return false;
          -		}
          -	},
          -	renderIcon: function(tiddler, type, button, options) {
          -		var locale = originMacro.locale;
          -		originMacro.annotateTiddler(button, type);
          -		if(type != "external") {
          -			originMacro.showPrivacyRoundel(tiddler, type, button,
          -				options);
          -		} else {
          -			var prefix = options.labelOptions.prefix, suffix = options.labelOptions.suffix;
          -			var space = tiddler.fields["server.bag"];
          -			options.notSpace = !originMacro._isSpace(space);
          -			options.labelOptions.prefix = prefix ? prefix : locale.externalPrefix;
          -			options.labelOptions.suffix = suffix ? suffix : (options.notSpace ? locale.externalBagSuffix : locale.externalSuffix);
          -
          -			tiddlyspace.renderAvatar(button, space, options);
          -		}
          -	},
          -	showPrivacyRoundel: function(thisTiddler, privacyType, button, options) {
          -		// there is a public tiddler as well as the current tiddler!
          -		// TODO: not this is not enough.. we also need to check if the public tiddler is the same as..
          -		// .. the private tiddler to determine whether this is a draft
          -		// use of hashes would be useful here.
          -		$(button).empty();
          -		var icon = "%0Icon".format(privacyType);
          -		if(privacyType.indexOf("unsynced") === 0 && !store.tiddlerExists(icon)) {
          -			icon = "unsyncedIcon";
          -		}
          -		if(privacyType == "shadow") {
          -			if(!store.tiddlerExists(icon)) {
          -				icon = "bags/tiddlyspace/tiddlers/SiteIcon";
          -			}
          -		}
          -		if(privacyType == "missing" && !store.tiddlerExists(icon)) {
          -			return; // the user is not making use of the missingIcon
          -		} else {
          -			imageMacro.renderImage(button, icon, options.imageOptions);
          -			originMacro.showLabel(button, privacyType, options.labelOptions);
          -			var cmd = originMacro.iconCommands[privacyType];
          -			if(cmd && thisTiddler && !options.noclick) {
          -				$(button).click(function(ev) {
          -					cmd(ev, thisTiddler);
          -				});
          -			}
          -		}
          -	},
          -	annotateTiddler: function(place, type) {
          -		var tidEl = $(story.findContainingTiddler(place));
          -		tidEl.
          -			removeClass("private public external privateAndPublic privateNotPublic shadow").
          -			addClass(type);
          -	},
          -	showLabel: function(button, type, options) {
          -		var locale = originMacro.locale;
          -		var label = options.label ? options.label : locale[type];
          -		label = label ? label : locale.unknown;
          -		if(options && options.include) {
          -			$('<div class="roundelLabel" />').html(label).appendTo(button);
          -		}
          -		$(button).attr("title", label);
          -	},
          -	confirm: function(ev, msg, onYes, options) {
          -		options = options ? options : {};
          -		onYes = onYes ? onYes : function(ev) {};
          -		var btn = $(".originButton", $(ev.target).parents())[0];
          -		var popup = Popup.create(btn);
          -		$(popup).addClass("confirmationPopup");
          -		$("<div />").addClass("message").text(msg).appendTo(popup);
          -		$("<button />").addClass("button").text(options.yesLabel || "yes").appendTo(popup).click(onYes);
          -		$("<button />").addClass("button").text(options.noLabel || "no").click(function(ev) {
          -			Popup.remove();
          -		}).appendTo(popup);
          -		Popup.show();
          -		ev.stopPropagation();
          -		return false;
          -	},
          -	alert: function(ev, msg) {
          -		var popup = Popup.create(ev.target);
          -		$(popup).addClass("confirmationPopup alert");
          -		$("<div />").addClass("message").text(msg).appendTo(popup);
          -		Popup.show();
          -		ev.stopPropagation();
          -	},
          -	reportDirty: function(el) {
          -		originMacro.alert(el, originMacro.locale.cannotPublishDirtyTiddler);
          -	},
          -	iconCommands: {
          -		"public": function(ev, tiddler) {
          -			if(!readOnly) {
          -				var locale = originMacro.locale;
          -				var msg = locale.moveToPrivate;
          -				if(story.isDirty(tiddler.title)) {
          -					originMacro.reportDirty(ev);
          -				} else {
          -					originMacro.confirm(ev, msg, function(ev) {
          -						var target = $(ev.target);
          -						var onComplete = function(info) {};
          -						var privateBag = cmd.toggleBag(tiddler, "private");
          -						cmd.moveTiddler(tiddler, {
          -							title: tiddler.title,
          -							fields: { "server.bag": privateBag }
          -						}, onComplete);
          -					}, { yesLabel: locale.makePrivate, noLabel: locale.keepPublic });
          -				}
          -			}
          -		},
          -		"private": function(ev, tiddler) {
          -			if(!readOnly) {
          -				var locale = originMacro.locale;
          -				var adaptor = tiddler.getAdaptor();
          -				var publishTo = tiddler.fields["publish.name"] || tiddler.title;
          -				var workspace = "bags/%0".format(tiddler.fields["server.bag"]);
          -				tiddler.fields["server.workspace"] = workspace;
          -				var publicBag = cmd.toggleBag(tiddler, "public");
          -				var msg;
          -				msg = locale.publishPrivateDeletePrivate;
          -				var title = tiddler.title;
          -				var newTitle = publishTo || tiddler.title;
          -				tiddler.fields["server.page.revision"] = "false";
          -				store.addTiddler(tiddler);
          -				if(story.isDirty(tiddler.title)) {
          -					originMacro.reportDirty(ev);
          -				} else {
          -					originMacro.confirm(ev, msg, function(ev) {
          -						var onComplete = function(info) {};
          -						cmd.moveTiddler(tiddler, {
          -							title: newTitle,
          -							fields: { "server.bag": publicBag }
          -						}, onComplete);
          -					}, { yesLabel: locale.makePublic, noLabel: locale.keepPrivate });
          -				}
          -			}
          -		}
          -	}
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|ServerSideSavingPlugin|
          -|''Description''|server-side saving|
          -|''Author''|FND|
          -|''Version''|0.6.5|
          -|''Status''|stable|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/ServerSideSavingPlugin.js|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''CoreVersion''|2.5.3|
          -|''Keywords''|serverSide|
          -!Notes
          -This plugin relies on a dedicated adaptor to be present.
          -The specific nature of this plugin depends on the respective server.
          -!Revision History
          -!!v0.1 (2008-11-24)
          -* initial release
          -!!v0.2 (2008-12-01)
          -* added support for local saving
          -!!v0.3 (2008-12-03)
          -* added Save to Web macro for manual synchronization
          -!!v0.4 (2009-01-15)
          -* removed ServerConfig dependency by detecting server type from the respective tiddlers
          -!!v0.5 (2009-08-25)
          -* raised CoreVersion to 2.5.3 to take advantage of core fixes
          -!!v0.6 (2010-04-21)
          -* added notification about cross-domain restrictions to ImportTiddlers
          -!To Do
          -* conflict detection/resolution
          -* rename to ServerLinkPlugin?
          -* document deletion/renaming convention
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -readOnly = false; //# enable editing over HTTP
          -
          -var plugin = config.extensions.ServerSideSavingPlugin = {};
          -
          -plugin.locale = {
          -	saved: "%0 saved successfully",
          -	saveError: "Error saving %0: %1",
          -	saveConflict: "Error saving %0: edit conflict",
          -	deleted: "Removed %0",
          -	deleteError: "Error removing %0: %1",
          -	deleteLocalError: "Error removing %0 locally",
          -	removedNotice: "This tiddler has been deleted.",
          -	connectionError: "connection could not be established",
          -	hostError: "Unable to import from this location due to cross-domain restrictions."
          -};
          -
          -plugin.sync = function(tiddlers) {
          -	tiddlers = tiddlers && tiddlers[0] ? tiddlers : store.getTiddlers();
          -	$.each(tiddlers, function(i, tiddler) {
          -		var changecount = parseInt(tiddler.fields.changecount, 10);
          -		if(tiddler.fields.deleted === "true" && changecount === 1) {
          -			plugin.removeTiddler(tiddler);
          -		} else if(tiddler.isTouched() && !tiddler.doNotSave() &&
          -				tiddler.getServerType() && tiddler.fields["server.host"]) { // XXX: server.host could be empty string
          -			delete tiddler.fields.deleted;
          -			plugin.saveTiddler(tiddler);
          -		}
          -	});
          -};
          -
          -plugin.saveTiddler = function(tiddler) {
          -	try {
          -		var adaptor = this.getTiddlerServerAdaptor(tiddler);
          -	} catch(ex) {
          -		return false;
          -	}
          -	var context = {
          -		tiddler: tiddler,
          -		changecount: tiddler.fields.changecount,
          -		workspace: tiddler.fields["server.workspace"]
          -	};
          -	var serverTitle = tiddler.fields["server.title"]; // indicates renames
          -	if(!serverTitle) {
          -		tiddler.fields["server.title"] = tiddler.title;
          -	} else if(tiddler.title != serverTitle) {
          -		return adaptor.moveTiddler({ title: serverTitle },
          -			{ title: tiddler.title }, context, null, this.saveTiddlerCallback);
          -	}
          -	var req = adaptor.putTiddler(tiddler, context, {}, this.saveTiddlerCallback);
          -	return req ? tiddler : false;
          -};
          -
          -plugin.saveTiddlerCallback = function(context, userParams) {
          -	var tiddler = context.tiddler;
          -	if(context.status) {
          -		if(tiddler.fields.changecount == context.changecount) { //# check for changes since save was triggered
          -			tiddler.clearChangeCount();
          -		} else if(tiddler.fields.changecount > 0) {
          -			tiddler.fields.changecount -= context.changecount;
          -		}
          -		plugin.reportSuccess("saved", tiddler);
          -		store.setDirty(false);
          -	} else {
          -		if(context.httpStatus == 412) {
          -			plugin.reportFailure("saveConflict", tiddler);
          -		} else {
          -			plugin.reportFailure("saveError", tiddler, context);
          -		}
          -	}
          -};
          -
          -plugin.removeTiddler = function(tiddler) {
          -	try {
          -		var adaptor = this.getTiddlerServerAdaptor(tiddler);
          -	} catch(ex) {
          -		return false;
          -	}
          -	var context = {
          -		host: tiddler.fields["server.host"],
          -		workspace: tiddler.fields["server.workspace"],
          -		tiddler: tiddler
          -	};
          -	var req = adaptor.deleteTiddler(tiddler, context, {}, this.removeTiddlerCallback);
          -	return req ? tiddler : false;
          -};
          -
          -plugin.removeTiddlerCallback = function(context, userParams) {
          -	var tiddler = context.tiddler;
          -	if(context.status) {
          -		if(tiddler.fields.deleted === "true") {
          -			store.deleteTiddler(tiddler.title);
          -		} else {
          -			plugin.reportFailure("deleteLocalError", tiddler);
          -		}
          -		plugin.reportSuccess("deleted", tiddler);
          -		store.setDirty(false);
          -	} else {
          -		plugin.reportFailure("deleteError", tiddler, context);
          -	}
          -};
          -
          -plugin.getTiddlerServerAdaptor = function(tiddler) { // XXX: rename?
          -	var type = tiddler.fields["server.type"] || config.defaultCustomFields["server.type"];
          -	return new config.adaptors[type]();
          -};
          -
          -plugin.reportSuccess = function(msg, tiddler) {
          -	displayMessage(plugin.locale[msg].format([tiddler.title]));
          -};
          -
          -plugin.reportFailure = function(msg, tiddler, context) {
          -	var desc = (context && context.httpStatus) ? context.statusText :
          -		plugin.locale.connectionError;
          -	displayMessage(plugin.locale[msg].format([tiddler.title, desc]));
          -};
          -
          -config.macros.saveToWeb = { // XXX: hijack existing sync macro?
          -	locale: { // TODO: merge with plugin.locale?
          -		btnLabel: "save to web",
          -		btnTooltip: "synchronize changes",
          -		btnAccessKey: null
          -	},
          -
          -	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
          -		createTiddlyButton(place, this.locale.btnLabel, this.locale.btnTooltip,
          -			plugin.sync, null, null, this.locale.btnAccessKey);
          -	}
          -};
          -
          -// hijack saveChanges to trigger remote saving
          -var _saveChanges = saveChanges;
          -saveChanges = function(onlyIfDirty, tiddlers) {
          -	if(window.location.protocol == "file:") {
          -		_saveChanges.apply(this, arguments);
          -	} else {
          -		plugin.sync(tiddlers);
          -	}
          -};
          -
          -// override removeTiddler to flag tiddler as deleted -- XXX: use hijack to preserve compatibility?
          -TiddlyWiki.prototype.removeTiddler = function(title) { // XXX: should override deleteTiddler instance method?
          -	var tiddler = this.fetchTiddler(title);
          -	if(tiddler) {
          -		tiddler.tags = ["excludeLists", "excludeSearch", "excludeMissing"];
          -		tiddler.text = plugin.locale.removedNotice;
          -		tiddler.fields.deleted = "true"; // XXX: rename to removed/tiddlerRemoved?
          -		tiddler.fields.changecount = "1";
          -		this.notify(title, true);
          -		this.setDirty(true);
          -	}
          -};
          -
          -// hijack ImportTiddlers wizard to handle cross-domain restrictions
          -var _onOpen = config.macros.importTiddlers.onOpen;
          -config.macros.importTiddlers.onOpen = function(ev) {
          -	var btn = $(resolveTarget(ev));
          -	var url = btn.closest(".wizard").find("input[name=txtPath]").val();
          -	if(window.location.protocol != "file:" && url.indexOf("://") != -1) {
          -		var host = url.split("/")[2];
          -		var macro = config.macros.importTiddlers;
          -		if(host != window.location.host) {
          -			btn.text(macro.cancelLabel).attr("title", macro.cancelPrompt);
          -			btn[0].onclick = macro.onCancel;
          -			$('<span class="status" />').text(plugin.locale.hostError).insertAfter(btn);
          -			return false;
          -		}
          -	}
          -	return _onOpen.apply(this, arguments);
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|GroupByPlugin|
          -|''Description''|Mimics allTags macro to provide ways of creating lists grouping tiddlers by any field|
          -|''Version''|0.6.1|
          -|''Author''|Jon Robson|
          -|''Status''|beta|
          -!Usage
          -{{{<<groupBy tags>>}}}
          -mimics allTags macro
          -
          -{{{<<groupBy server.bag>>}}}
          -groups by the server.bag field (this version contains TiddlySpace specific code for turning a bag into a space name)
          -
          -{{{groupBy modified dateFormat:"YYYY"}}}
          -group tiddlers by year.
          -
          -{{{<<groupBy tags exclude:excludeLists exclude:systemConfig>>}}}
          -group tiddlers by tag but exclude the tags with values excludeLists and systemConfig
          -
          -Within that group you can also exclude things by filter
          -{{{groupBy modifier filter:[tag[film]]}}}
          -will group tiddlers tagged with film by modifier.
          -***/
          -//{{{
          -(function($) {
          -var taglocale = config.views.wikified.tag;
          -var macro = config.macros.groupBy = {
          -	locale: {
          -		tooltip: "all tiddlers in group %0",
          -		noTiddlers: "no tiddlers",
          -		openAllText: taglocale.openAllText,
          -		openAllTooltip: taglocale.openAllTooltip,
          -		openTiddler: "open tiddler with title %0"
          -	},
          -	morpher: {
          -		// TODO: note currently the following 2 morphers are TiddlySpace specific and probably should be in separate plugin
          -		"server.workspace": function(value, options) {
          -			return macro.morpher["server.bag"](value.replace("bags/", "").replace("recipes/", ""));
          -		},
          -		"server.bag": function(value, options) {
          -			if(typeof(value) !== "string") {
          -				return false;
          -			} else if(value.indexOf("_public") === -1 && value.indexOf("_private") === -1) {
          -				value = "*%0".format(value); // add star for non-space bags.
          -			}
          -			return value.replace("_public", "").replace("_private", "");
          -		},
          -		created: function(value, options) {
          -			return value.formatString(options.dateFormat || "DD MMM YYYY");
          -		},
          -		modified: function(value, options) {
          -			return macro.morpher.created(value, options);
          -		}
          -	},
          -
          -	handler: function(place, macroName, params, wikifier, paramString) {
          -		var field = params[0] || "server.workspace";
          -		var dateFormat = params[1] || "DD MMM YYYY";
          -		var container = $("<div />").attr("macroName", macroName).addClass("groupBy").
          -			attr("refresh", "macro").attr("fieldName", field).
          -			attr("paramString", paramString).
          -			attr("dateFormat", dateFormat).appendTo(place)[0];
          -		macro.refresh(container);
          -	},
          -	isTypeArray: function(value) {
          -		var valueType = typeof value;
          -		if(valueType === "object" && typeof value.length === "number" &&
          -			!(value.propertyIsEnumerable("length")) &&
          -			typeof value.splice === "function") { //is Array
          -			return true;
          -		} else {
          -			return false;
          -		}
          -	},
          -	_onClickGroup: function(ev, options) {
          -		var i, target = ev.target, locale = macro.locale;
          -		var tiddlers = $(target).closest(".templateContainer").data("tiddlers");
          -		var popup = $(Popup.create(target)).addClass("taggedTiddlerList")[0];
          -		var value = $(target).attr("value");
          -		var openAll = createTiddlyButton($("<li />").appendTo(popup)[0],
          -			locale.openAllText.format(value), locale.openAllTooltip);
          -		$(openAll).click(function(ev) {
          -			story.displayTiddlers(ev.target, tiddlers);
          -			return false;
          -		});
          -		var listBreak = $("<li />").addClass("listBreak").html("<div />").appendTo(popup);
          -		for(i = 0; i < tiddlers.length; i++) {
          -			var item = $("<li />").appendTo(popup)[0];
          -			var template = store.getTiddlerText(options.template) || macro.template;
          -			wikify(template, item, null, tiddlers[i]);
          -		}
          -		listBreak.clone().appendTo(popup);
          -		$(createTiddlyLink($("<li />").appendTo(popup)[0], value, false)).
          -			text(locale.openTiddler.format(value));
          -		Popup.show();
          -		ev.stopPropagation();
          -		return false;
          -	},
          -	_refresh: function(container, tiddlers, options) {
          -		var totalGroups = 0, locale = macro.locale, i, j;
          -		var excludeValues = options.exclude;
          -		var values = {}, value_ids = [];
          -		var field = options.field;
          -		var morpher = macro.morpher[field] || function(value) {
          -			return value;
          -		};
          -		for(i = 0; i < tiddlers.length; i++) {
          -			var tiddler = tiddlers[i];
          -			var value = tiddler[field] || tiddler.fields[field];
          -			value = macro.isTypeArray(value) ? value : [ value ];
          -			for(j = 0; j < value.length; j++) {
          -				var v = morpher(value[j], options);
          -				if(v && $.inArray(v, excludeValues) === -1) {
          -					totalGroups += 1;
          -					if(!values[v]) {
          -						values[v] = [];
          -					}
          -					values[v].push(tiddler);
          -					value_ids.pushUnique(v);
          -				}
          -			}
          -		}
          -		var ul = $("<ul />").appendTo(container)[0];
          -		if(totalGroups === 0) {
          -			$("<li />").addClass("listTitle").text(locale.noTiddlers);
          -		}
          -		value_ids = value_ids.sort();
          -		var groupTemplate = store.getTiddlerText(options.groupTemplate);
          -		var onClick = function(ev) {
          -			macro._onClickGroup(ev, options);
          -		};
          -		for(i = 0; i < value_ids.length; i++) {
          -			var title = value_ids[i];
          -			var info = getTiddlyLinkInfo(title);
          -			tiddlers = values[title];
          -			var btn = createTiddlyButton($("<li />").appendTo(ul)[0],
          -				"%0 (%1)".format(title, tiddlers.length), locale.tooltip.format(title), null, info.classes);
          -			if(groupTemplate) {
          -				$(btn).empty();
          -				wikify(groupTemplate, btn, null, tiddlers[0]);
          -			}
          -			$(btn).click(onClick).attr("value", title).attr("refresh", "link").attr("tiddlyLink", title);
          -			$(btn).addClass("templateContainer").data("tiddlers", tiddlers);
          -		}
          -	},
          -	refresh: function(container) {
          -		container = $(container).empty();
          -		var paramString = container.attr("paramString");
          -		var args = paramString.parseParams("name", null, true, false, true)[0];
          -		var options = { field: container.attr("fieldName"), dateFormat: container.attr("dateFormat"), exclude: args.exclude || [],
          -			template: args.template ? args.template[0] : false, groupTemplate: args.groupTemplate ? args.groupTemplate[0] : "" };
          -		var tiddlers = args.filter ? store.filterTiddlers(args.filter[0]) : store.getTiddlers("title");
          -		macro._refresh(container, tiddlers, options);
          -	},
          -	template: "<<view title link>>"
          -};
          -
          -}(jQuery));
          -//}}}
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceViewTypes|
          -|''Version''|0.6.0|
          -|''Status''|@@beta@@|
          -|''Description''|Provides TiddlySpace specific view types|
          -|''Author''|Jon Robson|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceViewTypes.js|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceTiddlerIconsPlugin|
          -!Usage
          -Provides replyLink, spaceLink and SiteIcon view types.
          -!!SiteIcon view parameters
          -* labelPrefix / labelSuffix : prefix or suffix the label with additional text. eg. labelPrefix:'modified by '
          -* spaceLink: if set to "yes" will make any avatars link to the corresponding space. {{{<<originMacro spaceLink:yes>>}}}
          -
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var tiddlyspace = config.extensions.tiddlyspace;
          -var originMacro = config.macros.tiddlerOrigin;
          -var tweb = config.extensions.tiddlyweb;
          -
          -config.macros.view.replyLink = {
          -	locale: {
          -		label: "Reply to this tiddler"
          -	}
          -};
          -
          -var _replyButtons = [];
          -var _replyInitialised, _replyScriptLoaded;
          -config.macros.view.views.replyLink = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -	var valueField = params[0];
          -	var imported;
          -	if(valueField == "title") { // special casing for imported tiddlers
          -		var localTitle = tiddler.title;
          -		var serverTitle = tiddler.fields["server.title"];
          -		if(serverTitle && localTitle != serverTitle) {
          -			value = serverTitle ? serverTitle : localTitle;
          -			imported = true;
          -		}
          -	} else {
          -		title = tiddler[valueField] ? tiddler[valueField] : tiddler.fields[valueField];
          -	}
          -	var args = paramString.parseParams("anon")[0];
          -	var label = (args.label) ? args.label : config.macros.view.replyLink.locale.label;
          -	var space;
          -	if(tiddler) {
          -		var bag = tiddler.fields["server.bag"];
          -		space = tiddlyspace.resolveSpaceName(bag);
          -	}
          -	var container = $('<span class="replyLink" />').appendTo(place)[0];
          -
          -	tweb.getUserInfo(function(user) {
          -		if ((!user.anon) && ((space && user.name != space &&
          -				user.name != tiddlyspace.currentSpace.name) || imported)) {
          -			var link = $("<a />")
          -				.text(config.macros.view.replyLink.locale.label)
          -				.appendTo(container)[0];
          -
          -			if(typeof(createReplyButton) === "undefined") {
          -				_replyButtons.push(link);
          -			}
          -			if(_replyInitialised) {
          -				createReplyButton(link);
          -			} else if(!_replyScriptLoaded) {
          -				_replyScriptLoaded = true;
          -				$.getScript("/bags/common/tiddlers/_reply-button.js",
          -					function() {
          -						_replyInitialised = true;
          -						for(var i = 0; i < _replyButtons.length; i++) {
          -							createReplyButton(_replyButtons[i]);
          -						}
          -						_replyButtons = [];
          -					});
          -			}
          -		}
          -	});
          -
          -};
          -
          -config.macros.view.views.spaceLink = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -		var spaceName = tiddlyspace.resolveSpaceName(value);
          -		var isBag = params[0] == "server.bag" && value === spaceName ? true : false;
          -		var args = paramString.parseParams("anon")[0];
          -		var titleField = args.anon[2];
          -		var labelField = args.labelField ? args.labelField[0] : false;
          -		var label;
          -		if(labelField) {
          -			label = tiddler[labelField] ? tiddler[labelField] : tiddler.fields[labelField];
          -		} else {
          -			label = args.label ? args.label[0] : false;
          -		}
          -		var title = tiddler[titleField] ? tiddler[titleField] : tiddler.fields[titleField];
          -
          -		var link = createSpaceLink(place, spaceName, title, label, isBag);
          -		if(args.external && args.external[0] == "no") {
          -			$(link).click(function(ev) {
          -				var el = $(ev.target);
          -				var title = el.attr("tiddler");
          -				var bag = el.attr("bag");
          -				var space = el.attr("tiddlyspace");
          -				bag = space ? space + "_public" : bag;
          -				if(title && bag) {
          -					ev.preventDefault();
          -					tiddlyspace.displayServerTiddler(el[0], title,
          -						"bags/" + bag);
          -				}
          -				return false;
          -			});
          -		}
          -};
          -
          -config.macros.view.views.SiteIcon = function(value, place, params, wikifier,
          -		paramString, tiddler) {
          -	var options = originMacro.getOptions(paramString);
          -	if(!tiddler || value == "None") { // some core tiddlers lack modifier
          -		value = false;
          -	}
          -	var field = params[0];
          -	if(field == "server.bag") {
          -		options.notSpace = !originMacro._isSpace(value);
          -	}
          -	tiddlyspace.renderAvatar(place, value, options);
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          /***
          -|''Name''|DiffFormatter|
          -|''Description''|highlighting of text comparisons|
          -|''Author''|FND|
          -|''Version''|0.9.0|
          -|''Status''|beta|
          -|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/FND/formatters/DiffFormatter.js|
          -|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
          -|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
          -|''Keywords''|formatting|
          -!Description
          -Highlights changes in a unified [[diff|http://en.wikipedia.org/wiki/Diff#Unified_format]].
          -!Notes
          -Based on Martin Budden's [[DiffFormatterPlugin|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/DiffFormatterPlugin.js]].
          -!Usage
          -The formatter is applied to blocks wrapped in <html><code>{{{diff{..}}}</code></html> within tiddlers tagged with "diff".
          -!Revision History
          -!!v0.9 (2010-04-07)
          -* initial release; fork of DiffFormatterPlugin
          -!StyleSheet
          -.diff { white-space: pre; font-family: monospace; }
          -.diff ins, .diff del { display: block; text-decoration: none; }
          -.diff ins { background-color: #dfd; }
          -.diff del { background-color: #fdd; }
          -.diff .highlight { background-color: [[ColorPalette::SecondaryPale]]; }
          -!Code
          -***/
          -//{{{
          -(function() {
          -
          -config.shadowTiddlers.StyleSheetDiffFormatter = store.getTiddlerText(tiddler.title + "##StyleSheet");
          -store.addNotification("StyleSheetDiffFormatter", refreshStyles);
          -
          -var formatters = [{
          -		name: "diffWrapper",
          -		match: "^\\{\\{diff\\{\n", // XXX: suboptimal
          -		termRegExp: /(.*\}\}\})$/mg,
          -		handler: function(w) {
          -			var el = createTiddlyElement(w.output, "div", null, "diff");
          -			w.subWikifyTerm(el, this.termRegExp);
          -		}
          -	}, {
          -		name: "diffRange",
          -		match: "^(?:@@|[+\\-]{3}) ",
          -		lookaheadRegExp: /^(?:@@|[+\-]{3}) .*\n/mg,
          -		handler: function(w) {
          -			createTiddlyElement(w.output, "div", null, "highlight").
          -				innerHTML = "&#8230;";
          -			this.lookaheadRegExp.lastIndex = w.matchStart;
          -			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
          -			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
          -				w.nextMatch = this.lookaheadRegExp.lastIndex;
          -			}
          -		}
          -	}, {
          -		name: "diffAdded",
          -		match: "^\\+",
          -		termRegExp: /(\n)/mg,
          -		handler: function(w) {
          -			var el = createTiddlyElement(w.output, "ins", null, "added");
          -			w.subWikifyTerm(el, this.termRegExp);
          -		}
          -	}, {
          -		name: "diffRemoved",
          -		match: "^-",
          -		termRegExp: /(\n)/mg,
          -		handler: function(w) {
          -			var el = createTiddlyElement(w.output, "del", null, "removed");
          -			w.subWikifyTerm(el, this.termRegExp);
          -		}
          -	}
          -];
          -
          -config.parsers.diffFormatter = new Formatter(formatters);
          -config.parsers.diffFormatter.format = "diff";
          -config.parsers.diffFormatter.formatTag = "diff";
          -
          -})();
          -//}}}
          -
          -
          -
          <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="364 157 64 51" width="30" height="30"><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><g><path class="glyph" d="M 364.50006 184.50061 L 386.99985 207.00037 L 396 198.00002 L 373.50003 175.50066 Z M 403.02295 181.97704 C 400.38693 179.34099 396.11307 179.34099 393.47702 181.97704 C 390.841 184.61307 390.841 188.88695 393.47702 191.52298 C 396.11307 194.15903 400.38693 194.15903 403.02295 191.52298 C 405.65906 188.88695 405.65906 184.61307 403.02295 181.97704 M 414.27298 170.72704 C 411.63693 168.091 407.36307 168.091 404.72702 170.72704 C 402.091 173.36308 402.091 177.63693 404.72702 180.27296 C 407.36307 182.90901 411.63693 182.90901 414.27298 180.27296 C 416.90903 177.63693 416.90903 173.36308 414.27298 170.72704 M 425.523 159.47705 C 422.88696 156.841 418.6131 156.841 415.97705 159.47705 C 413.341 162.11308 413.341 166.38695 415.97705 169.02295 C 418.6131 171.65903 422.88696 171.65903 425.523 169.02295 C 428.15906 166.38695 428.15906 162.11308 425.523 159.47705" fill="#020202"/></g></g></svg>
          -
          -
          -
          /***
          -|''Name''|TiddlySpaceCloneCommand|
          -|''Version''|0.5.8|
          -|''Description''|provides a toolbar command for cloning external tiddlers|
          -|''Status''|stable|
          -|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceCloneCommand.js|
          -|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
          -!Code
          -***/
          -//{{{
          -(function($) {
          -
          -var cmd = config.commands;
          -var tiddlyspace = config.extensions.tiddlyspace;
          -
          -var fieldsCache = {};
          -
          -cmd.cloneTiddler = {
          -	text: cmd.editTiddler.text,
          -	tooltip: "Create a copy of this tiddler in the current space",
          -	errorMsg: "Error publishing %0: %1",
          -
          -	isEnabled: function(tiddler) {
          -		return !config.filterHelpers.is.local(tiddler) && !readOnly;
          -	},
          -	handler: function(ev, src, title) {
          -		var tiddler = store.getTiddler(title);
          -		if(tiddler) {
          -			fieldsCache[title] = $.extend({}, tiddler.fields);
          -			tiddler.fields["server.workspace"] = tiddlyspace.getCurrentWorkspace(config.options.chkPrivateMode ?
          -		"private" : "public");
          -			tiddler.fields["server.permissions"] = "read, write, create"; // no delete
          -			delete tiddler.fields["server.page.revision"];
          -			delete tiddler.fields["server.title"];
          -			delete tiddler.fields["server.etag"];
          -			// special handling for pseudo-shadow tiddlers
          -			if(tiddlyspace.coreBags.contains(tiddler.fields["server.bag"])) {
          -				tiddler.tags.remove("excludeLists");
          -			}
          -		} else { // ensure workspace is the current space
          -			var el = story.findContainingTiddler(src);
          -			el = $(el);
          -			var fields = el.attr("tiddlyfields");
          -			if(fields) { // inherited via TiddlyLink
          -				fields = fields.decodeHashMap();
          -				fields["server.workspace"] = config.
          -					defaultCustomFields["server.workspace"];
          -			} else {
          -				fields = config.defaultCustomFields;
          -			}
          -			fields = String.encodeHashMap(fields);
          -			el.attr("tiddlyfields", fields);
          -		}
          -		cmd.editTiddler.handler.apply(this, arguments);
          -		if(tiddler) {
          -			tiddler.fields["server.permissions"] += ", delete";
          -		}
          -		return false;
          -	}
          -};
          -
          -cmd.editTiddler.isEnabled = function(tiddler) {
          -	return !cmd.cloneTiddler.isEnabled.apply(this, arguments);
          -};
          -
          -// hijack cancelTiddler to restore original fields
          -var _cancelHandler = cmd.cancelTiddler.handler;
          -cmd.cancelTiddler.handler = function(ev, src, title) {
          -	var tiddler = store.getTiddler(title);
          -	if(tiddler) {
          -		tiddler.fields = fieldsCache[title] || tiddler.fields;
          -		delete fieldsCache[title];
          -	}
          -	return _cancelHandler.apply(this, arguments);
          -};
          -
          -// hijack saveTiddler to clear unused fields stash
          -var _saveHandler = cmd.saveTiddler.handler;
          -cmd.saveTiddler.handler =  function(ev, src, title) {
          -	delete fieldsCache[title];
          -	return _saveHandler.apply(this, arguments);
          -};
          -
          -})(jQuery);
          -//}}}
          -
          -
          -
          
          -
          -
          -
          <<tabs 
          -	txtMainTab 
          -	"Recent" "Recently edited tiddlers" TabTimeline
          -	"All" "All tiddlers" TabAll
          -	"Public" "All public tiddlers" [[TiddlySpaceTabs##Public]]
          -	"Private" "All private tiddlers" [[TiddlySpaceTabs##Private]]
          -	"Drafts" "All draft tiddlers" [[TiddlySpaceTabs##Drafts]]
          -	"Tags" "All tags" TabTags
          -	"Spaces" "Tiddlers grouped by space" [[TiddlySpaceTabs##Spaces]]
          -	"Activity" "What people you are following are up to" TabFollowing##Activity
          -        "Following" "People you are following" TabFollowing##Following
          -        "Followers" "People who are following you" TabFollowing##Followers
          -	"Missing" "Missing tiddlers" TabMoreMissing
          -	"Orphans" "Orphaned tiddlers" TabMoreOrphans
          -	"Shadows" "Shadowed tiddlers" TabMoreShadowed
          ->>
          -
          -
          - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon deleted file mode 100644 index 18cb921facf8ca6f09ec799a276afa50d4e02bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25107 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 PCWyOix#Tsy@c%afg;rA= diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(1) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(1) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(10) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(10) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(11) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(11) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(12) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(12) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(13) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(13) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(14) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(14) deleted file mode 100644 index 31f2358e00e76ddfad54962ce21fb129aab30132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10498 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(15) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(15) deleted file mode 100644 index d496150b377da4d160e5c6916df3b547b1e7564d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61729 zcmex=lqmSKU9`>t;kGcVDR+RV&Gt4VBlupXJld!VqjpH z#K6EHz{teF#lXO@gn@xUh>@9rk%0k>r5IVk^g0Fx25BgJ8v_G_22>3b0|SF0BNGER z0|Uc81_lNrMkWRk1_p*x3=9myOb~NGYBJkdz~=BUGBC`W!^oh=z`$^ifq`KWGXsO4 zr?8oa&M>P9 z;=gB13=DIj>~~BI3`!jkw=*y>FsMV>6F`A7ft`Vcfq}um$jFd+0uzHM0|Uc1CI$u; zD4U0wfq`)%L=7VoGXv8^i1|v)3=AxjxWHkc#mvCKIte0f#LU3JJ_%wMD+2=q2b2x6 zmlMjCXJBC9f~vP-W?*QW#Ll3@z`)?d%)l^V5)%V6C=Lu57$zdICn2#J7C_u%U}#{# zxBy}o$SX_>AaSytk%563%09rzz`zP+*D*6Nh%bVu2gM=7Vs^0mLH031*S_?3J0io5Ca1P8L170^7?>CkF$1!ViG_ugfq|WY8JfF5 zw!?DZA7(@jWMM(gfs9O$nB-w$U|@o>+2v7lAjo_jXl{bhC?y3bqcJit{J+iM%)r6M z#?Hpd!OqUk$;rXRBf`tW&CMezB+M@&D_WTR(nVgxdTk&}~?hnq)&msi3_QAW{-Wbpq0gCGaP5rzZIj7khlf{e_9jQ@`? z$TKi7vND1J$V(v1$i&RT%Er#Y$;JKu2*XwZ1|~*kW+oP9R#s3zG1h`IB8woakfNa@ zn{Z$vyHcTuQRBpg9Li1`4~hm|{Gei-RMf=DB_=K*DW$5WuA!-AVrph?VQJ;;;_Bw^ z;pr6|5*ijB5gC=7lA4yDk(pIoQd(ACQCZd8(%RPE(b+X=@|3C5rq7r;YtiB*OP4KQ zv2xX>&0Dr^+rDGxu0w~996fgY#K}{aE?>EN?fQ+Iw;n!v{N(Ag=PzEq`uOSdm#^Qx z|M>X}PTMRtRj0{YI%z_N| z44*)s<|2*DV+OJZAzM zQKXFt3kNKWw!|wc&lF7w2B~Gx?{Eh281>)O_BQ<-4y; zdgiHLS1Z=0di=|b;CDQhwfDo6btew442u5 z2RZ9i{l5GzzL2k3HKIrE(BdYy;JG&#o-dEe58>(av7C5%lhFN=uO?A`{+%M!dlpv1N0fOuV%+I+43_OVeTN&eu0Cuc@zC(|?j#dsfw=lT1u*A)jaI zNk4Bmz;MH`b?Scd(N&twd+3{IM&GNk0#e+qC$G&`jtFwqzf_dT6$wgCt9?YBS^(x|VZ;;^LkKbEuZ#d`m zohg^wb1i0(y!y0BO!upAEu0srS|C~HHzzbxb?OWY>BiL?RFB?T73K8F>;55juQIu% zt0QtBCn^-qDcZSOK4;sp8~ZXjABIoL&iD8bk{59Qq{?>n$viHs@hjKuJAHUp+SHwk zwsm;8>-PL-u$rHGb#p{e?i?1Y)Vp_l-e#OIJeU(YW6SIn%Jy3CzML(a?yTN=NdD65 zHH_!jS%NZUy?NHId~UU@yZN`9qG+Ha%~A$Z*Hy;-=yztLv*zbKX5*%6oU} z-a9G&TpM3bvRvIWDU99eww$p}|FcPKM#Ww36PGeNy?t&Ip1Jx*octDX=ch~-rIO6A zw3)sip8oCPo-WbH%+9y2*2O=|wGKQGK3nE1f2(z$s)D)2*`m-UUqh4BIDgf1cVD*!-rk#YQ?yUw5W_kV zG264L*#>L3-YH!8hI9E@mP>csF1FolXj!YNy<~ktJ*U!3fj#%ieLjbnTKEX9VA-%X zBah|6!aE{;h5=`kEBPKDc<<}Ee8tSpg853Vf3j9=+d0X1rp*`2)zjZ>`?UT1)WoB% z%Y4!%3mH1><;|NNxQofPbg7@m@6-yEzUUz(RSuSIPy8fWlwbCM~Y!>T@_#HqmpId$FGHsXgnm_N;#$ zRdm4L;?YW9@fB-sE(%QZc_ppT;J!B`#jr$r@yjjW)>w0PaMx_|bp6<)_oGgm72 ze3WmU5Aa{iC2(R-az z3O1fN#rXEM-=5j$_I$Q_F0pEQ#=%YQYzw1aJvp7?&ineb!YvQUw_#~}Zts+s;PE~( z(B~ubM!pMGkJfBndr>k*KI-PdxJMhyt_fBOm`mK?kB{1HyM}R^c7oZjtJ<-r?z#PE zn0#%EPvMqS#R+1+t`(IfrId#&9SmhSJ@M9V{x+Ap_hbC6=D5s^>HE3PaE(OMC$mS| z+kfOsFS<9W@X*J%XG1C@9w+adu%+kx#J+zEuDZ)x1V-%(I+}C#vht@jH-1i;w{zv1 z@`p!z%VmVa7sgLvJQ{w(JY9xsqp+dPztA~;XD{aHpFa8g(yW>mU(ew=iV(9JYNq zInDHV-o2|{rRORnR`*W6aMio9`RmHmqmrAIrk&HaOSyGZbh)D9#yh`4wYMCz_4V}G znB1A1qAnSiJ>%oD8Q-g{bh4*^J`jJr|HInXmQE+PTdXkMuNN)2_ghkE&hs7ie-mT5 z%36QRg_dR-pUJl|EMM+2T{1HHSW3lzhK66Escfa6yK5%?Sv>3dwftw>w(r8nmCO6~B!E5hSweZRvSX>tJea%Y7DLHY=XGL6Hd(qEB zePZB=d3#+R7o90`nkaI>aus{ovzy1a+O*v9<2dTcrL#w`sQOyBuLnm_;X%1&OCx*C z85i5P`kYGaVKQI5u?&6$N=bIvUe$5F_e$c(*(X>Yf4(WkCGS5YyPoF$} zyT{M)z$@XdAO5QRyX$mzs#ftE>wmTOQZtU->Q%nBKA&M*FMDvPV*czopF{OIvs;)q zs*5VjOz1C`;oCYlyi%@BwtBkhh5X}N?K^JpgvnUF$mBb!)m1p{eNgO=X&eG|FLoaP zaLMDv-rma!$CtX#*(kX#OkULX&TTQaUh$QQ(P7^gIrs-3RXZ!Vz>iU-Yqha<%J)^_ zQL~OJo;a0k6DI#hW&0$*i${~*EPl5^HdEJew=B0F+p`1TP3M<|@GY1az}@|NM#nt! zer09l{-tT&G8?>P`A=1KNr{`DOeu4_W7RzCz{j~4r#rW2T7Gu-U%2+9@%_CicU|<7 zs>5sy9{0Is`#d_bcINZxj6FBc2N?J&8Lz)5d46r&wVYY!N`n~KEf}6RhBD}^Y=~SP zy781*WJ>*>B37@CsGEEqCs(BKK24TTTB|O$!gfV9)13y-jpr}pCrJ87`7CkEGj6?M`zpFf#8_Q4C^GcPp^sjZC9Y@M1Q%X7cI1=a zo1^|-%i>FB#BFH{XKY{V)-dh$*^uPKB^hn^8xBv5-QLKo6m!RFMd;7uoPc(DTi#xNp>4TadvT7fex_aUvetRNm-boa@GteX@mGm(o}bmY z-E~UdPUhE9*DfyEn3MPSwN!ubww_#R!>HCzwy=~ zHw*0@bADeBDXCDJUfCG)tIu<(nOSY!i6g(el(#KC^*$|$eYU{grHM)HN6W1H0xvv~JAY(e68r9*-+%7-v+C{~scCPgcTM6Ckx<(8tXX^R zgWr!9W=!;}{+so5JMEn<~8{NB-C@U1#YE({`cC?X!)KSuSPs z^|-q}c>c$%eQDR&dK51H}&|++~eubtivlGtKVL7P{8J-{->x13nf@4Wk=O> zp6m$>jo0`d9-5N#Y?-}|cjF&Z<`b7Tu>9tl=B^-9c#L87m1oYy8=Xr|z79S-wMK67 zoGXR<=gS?JI2y5$`7OuV>*fA|Uj9zIB#z4@uhk5DFfZFL+M`pkaN@l+nICUUa(mRh zmsnkV>6!V3<3&#Eo+_Jgd~$q|ogT7PT(GUN?)}mvlNQ+>Fa3m`Im|shQE`@QPx0&6 z=Z$(3^_N|~GhvR`&adq3U+kAwKJ7hy`}{MF6W`a(KfLQm!Ru?2J(%9tw)~dUwwjo> zMde|r@x`w)Yrm{v6SovyoNA^NeE(MWY1eGEDLo&UHhlTMYFkilzudg7=asLOJ-cwP zEB1;0_N?iNwyV}IeBmit6y4HmE_`B@ztb0mT|JfR7p|qw5}SLcXwmZB^TOJzQ6+cGTF)&cUWQ%rO!yhQ$yz>YX|-ml`pRWb7r4$0 z@7*c=WzCJG2@|b&G;B70T^+p7QDoa2<;{oHLiJM--BuJt%kv~h03Uv0~~1v{U#9?M?nx?0Y+viM3) zx>n8E#SG6ywf0n>KRw~}PpM=kWj>Bunf_-b6pF)=6w>=#4=8AUc^&q6;-^b$MvE<1 zJec^T^>WrE%jYYWw8n-m(Q=yCywPOd?rEKq?w?8XnX0tLO}WWfGG_k!u$E)zuFeXx zG50zp9%%FY!aQwLb!BG1o5xumrfNmwL)J?d+w{Ba#J3Q zU(mhbewla6ZYjSlo7)A@X1RYHndDbI{uO4rFtwygMBCCX z{KBi;6h$}RXy<2^`WM}NLpS*?+|{R*ncj89*yF~7T)AZ%n|59dTCSxw)mwwNjrTy* zfh)QXw*`JK@_bN!)GA-#`0io@K7qGfm3H$_{|qzPE^cnbl$^V?Ln8S7rL8q9CEbE2 zi{4UCSZL5=_)qEfI)HI|gA%qlX?w>GP6+*M?Eo_lJ@lc~o|!=hK8R!Es2>}?ZjwdY^@%Ii8+b)Lb-%?bREn0A#Xe@pTY zytc^Gv?L@|WBMcJE6OY?mFI;61q7ptO>$2ol$!D)W zj-w5lcV%tuoxuQMxB(rPC7WjXDZV3Ya9?=|V#z09r|S0?QF@-jHi#6IIzhuLG+ zy}l*e*YG)@axWtTTqYZLpYyV2?k&wI5QMLp$s=qYjDYhFmHWrCyKR{lbsX*^69 zrk#B6y2a?uoY+&(ej&(SI7%-5#fKbNuOB$rc)l;swk#db?BH%l`F zTgqKobun47%{}Y9%Y8?l-p1%6-HB5>pBY&{5pMPkQQVj8Ep2&d$5H<$#@mW7b>DUn zv$&~p&XJ{L#k=I*=|%HrUs_g_*fS?(V(8=U0v`V;?;Tx>%q@2$9hhb3M2*gY-NjdN!0oVfb*&To7S&-QFf6S7w7D^E9l zvAsxAEK=e>1Lwcc=iJ=gTaFcZ9L;yt^|Nt%ab4NiFZzLvAuue8rgXEw9uLcw>5?bRla{)9>Zp|Vsc?& zgKOlbrZ79l{zCN~FaL=ciie-t`J!y2@>7ZBwXR8 zwtV3p|J-*=bkL{c1#4pDC%D-g|5>Ho_%!156`h6&#zEg5CVELc{xW3wD7UX^S*G~pKE7*Hp+-zJ*6zDnI&Y}^vE3hhk>=7ALj(EUD9<&)1-RahRlt5 z&mNhp&$~MRx$F#?gsaV|+VgjJiTmuBI5oL*?u-Yll4>10*6MK`@ho_HQ1`&w*yoL* z>y-8-ey?+|+jCt}ZbEWFo@5B~sq|T2`8n3E&L~{EX+>$;XNT9jZR%#MT>D|JMa8|$ z$!CT2)cQMx*YC}E87`kSLEFNIXInK_&9x#RUX0h)5F}XpyiQ|3DMbF*F>y}>1 zQ}<=<$@!Nw>Gr;N{-U#2xqUpjTSY^LC#-kxBmK0bvyJoa{%6peva8G0bYq!vd0g%5 z%HZh5^F(J|oDmRP`LUyqr)5I@`Jb<&cBOEA`yJh6!F+kvnKp~$d3OHixEkLd&ADYY zm8-z>K$4Z5R!H@fS2r{Ka(xv0>YT6J?tZp2wnl819J5~ zj!_Z+&yc=jn&i!!6ZdR*@Qq#O$|c`r6DwL*rJgpMq&h8#F)hycW$^SimEL;~MAZL= z8L_G!p3&rUVx#sPHa!Ea6`w*mCtiP=`@8GwudrUb<(4M1lXrY(xp<5{gn7mHCHy>| z+adxMo;YXq{L;VlyQ#cKnC^M%ZclAm`TF`={~6uvzP-1t z*+m{NIp*eYw8TDzfno8i_|2@o=T3F+(0i`H^DE^#*Gfxk<*v6g>~DG=IR4mQD$Fsp zXKLII$+bVawuRk0RekKm+RZ60{~7ia9u=Py740%@*VRYI&YyB-Oz7e-OT6=sY1hh! zuWZxaWUbu3bHXpH=;gC(b;2e-w%_yg{6%;5FKaELZh5Q3YTfk7YT0}Dh?_}%&aeLr ztwx6)`)rsv{qV2qdw1sV)qA5=EuJ_3`K+DA%U@MZ;Z<9?LU)Ppr>%RkIF2tie1Ej` z(453gCV?Ig)<2qbue>dO-|`hUf;alJraNC>elh>Z%g=6iyd~``>U(ouoBeXVdST1u z1!=o(MeJR0Z%)~v=i6gS);V5TEz`vDHtg!vnTsa-z4#t$_3wPxhUnGqe7#r7gJ0CX z;y!K1&3HaA&VF(B^j)eq=3VotuQUE0Q{DBom;J~!IfWLb4Sg^8XR+D*lUuY?-Sc?p z#@l|Yru7%DuKA$h&LU@Uc>Y@d@)aJ>jM}SYrk!{ESGl^}Dq~6tU$$N}yJY{w`B_=3 zx6Tw^Fnf>J0=lx^aqO^5i*b z?SX=CRK5$nd%C=gdxCB8^*=hFa6lIOFvD_?EEf{zS#DU=0CWeydJGW zU#Gpd^&GZ+d|ct>UgJLvXH~@3s&0Fo-u2ewu!x1lFS)G0dwasTzHhhczSAbJIP*Zy zFTOv&1b>F;{A$~je0NDycb#44(!2i|Y9^levnocId$Uo>uHH*`Q$9^H+}X?*{U_Tz zc;?!77OYE>cbBjD&!D!et?Sm^o}x_iOQLUj&dqO&{uLT}IqH+casOEoQwpCkPW-{- z|1#*owOh?qvLYvWbWX3x3cS6|{>rUC?|;k@{uR7n=WVHVa~Iw{zx|!wMF* zp6vDaTiHLax_sAvnN#=jsLn5|liO#?7;i3Do>yr%Z)-9~=}x`JV)tY&8_hqe(xKez zzd`mtgZ!a+_hcu1FumSk$~tGkPlw!z3SZy;wSBq#h}7C!8kb8l+un&~_fL_3`sbza z;qY61s@F<6Q=d%E<>%sG@P>bbd@qBY^?u$LUB@JKCj}YQEK0p&_2Iz$6BBn{3v)2i?G;3Vxt9)Wt&IC$J(~>=h(5Q|`dH;BciN{Y;KS#>f2aSMo{oPV)witv zvcBq+(p!GwpJYOrCx>%s>AmT^o*T*8dz^Vv_Tq~wS4<{ca$OSZsr;Woep+F_Pp+x6 z`>aEk3Jc3Nd7P??IFdO1Rgr7S;iJC_WFj{HXJ}yj&#*b{xy9v2yg@g9Zm+W0=*H*L zWW@37Ny5J=k00dzxEyYFOTCxgw-hR+1qj9*j?^5HQTS-)J@stGCfZ5 z%Cuwu83J}^NQm9q^nrhaP2H40&%In8FZ&xyRy>#$tb3=Gk7;v{{5pnJxmCZ)wr4NC z?JgCW8+OCdX5ySD^P@DDY!eT5J~C^`E)zrPiiL$*ZQ5E-m|rm{iyn>p(H?wd`l)$O zI{Fx0q#fm2zAC?-rLpRTNm=&;UB%p_DJRR0PK;<)IIe8l>c9M@Rq3+%rccBIRW9rZ zsLc7?^JJ3aca}g`742zXC2t-3&u}uNFJ^`H6Nl)DcY4y-S53OxGb?2~=kG&%?*;*CN#Q=G#JMEx0QHX zpLVXaNH3kTz`1G1?Rhg^yNWQIPk!^kPdQrJh+W|)7snqr?M0h5w3Vc>dCcHxmT5`q z(nzp-chaU)Dl%<`*58vUI?G>a&*jXV_Mf3Mx83GH!|_f38CpdG*ydE__H47hb%}?G z!(S)&&#qv_ZQDC1pW5DL@HF(QGMBXN3E3BmX5H~wxgs-6=*+#`C4S|MJJ#FUx(dFC zN}Dfq*D<3h_Qq+U8_%~@$rrkcTJb5)~AbP?V68m6ey57Zz7iQIb=Uk&~AL8N$fQ%F52h&d0&Q zCnq8(B1bX+PkA#QVBF5kD2SNymSJFE0?!RYriB?87+6@DnAsTF894qQVeo*?ce66F zFtanUu&}VB%y%mVCbEO)yOo_5iUt*JJb3YgN|JHYq=#b8#UI60O@f;jafBpqIsE?! zgA{ZM8g30}f|-GZmF@o#1_MC`CJDo3#Pd`ZeOt~xn1XJNr+&z{M@ zu3QP(4 z586z6Yum;(ZdutsZtxzx2Z5=h@2t3@c6^ z<6JZ|yYpRGoK(kcWd_Oin66I-PZ!UX{Ldi#vM^%xjK+g+KgYGmn{K>vCici$z7%!| zS*?6we^+@i#rct*dV3}nT=~!7<)72te?V-%VxfRSO6jv*ACz`H-dMWd{NwkpjNvE# zUE1{GtE}2J%d0+J#(mnS^X6{u%WDg-3i4(X=5kzdUe_?BpR@1o_xX-;H$}hbd3D9I z9y%=~I$2Uwdt27N#?;zNslsY2wk2ijtZz-{*mp&0LD;ct;)`wx3HdJHDKaOw$@{?^ ztLcB^o}?wtt6Y(GG~4;$j()Z^=T^1kO00``^i%dpPVtgg2CI7C_I$iPIe5}t>B$Rs zzbaUhpxpLzt@njh`3qBzUMMPV@|6r?-C(J+=Z*CV<}wlG{6!!8I^XxHYWVS%>P+dY zG*2+L7S&lY@z%0$oLs3pCRtuDtGe_d?eUw^^jgUP=1*2#=3Y(H&c$SLa7r@2)1DRZ zEzBrZX#37S7sjY9vWBxQ^px&4+_W_e6}48h(0k1A@5`iQ#kt)|M;uvXLQ>UC#n#^F z|7>Bhax+twRa35Fd)%Y7yptyh=^p8~%s6TD-87u#x7gl=SG!LdNFO+`R;GN3*a|%( zVau3mp3=o%?npFTZ?OzJ5#J@LD=EB1C;ZZlsA+b-GZ&V3DSP*tC0@~2xSpro)7HE! z`Hyur?`^9)f-V2HzTCY06L-B#;N4x$O%0D)Vi(>|y=A-Zp`zRbx6HJEJX6ceE=Tdd z`MGvU&W00`Cev4Q|8NV+4vUPfs@h+*Y3et1;fdP2Dl5OF^)>KUN=NU|C_c|N%jE3E zMcSfgm+pDGzh}qG!0avg&w^Lpi)}G{tW|yK@nMlSp{xSFvWr#EJQs~z`(jn;P41U# z9?$G?5bnxY{>EE;&HN*G?7qB}WOX)aZ_Cq6nYe13sPUqxHourzv%=0C(0|8s?P-cc z;l0(YK4C|zE55JlcGhJ)6eDr+*u$gFR$Ehwk6rCocYE-Co%2kdJ&G$%F8#6UQes1& zgTj|*lTRPn^w2u$Df1W8eY;#7n;t7~d>wB*P0v>5Hh>0RIVz4OuF8)r>dh}}{y+?(?9z-wQL!i!gSY|VLeF7HWY*;Mug-$eGi zPMqZXqUUqRBkQi#@5_43HyH`U$GYT|v$M!Gn^s+%c1SnRXilQX^R;df$6h?Sp5}JT zgLzp-tu?Dm^~z))wThn$zl3j`{Ke_s$3F+oPO7^TP;tr4d3E*0r))_(?M;tsSj#6C z#I9axz46w}AQ_t~Np&=N(u(cg9mcj#pWm7U=SRd42!z zHrdX#y#ec!!*~AiadNScWe|DyjOCJWmN}cHTjb_BNzJW|FO2Se(B0?V*!VuAMM}ngUcMPZTXc79>6Fe7sMGkw z%`}O-;=$x{_N`XA8x+fzy151%Su{KIW#noRt%KiBoVZ^YJc&~_)Ijh6v+`1zoJ((( zo%fv-y`mvz#%1vA3yr0>&O~) zH|NTF2KAJQcK+`@=YBYLF>Fex-0s8*F^k9L55p(N8$Ky3x*)dkv4qa-Q|&+2SaU7o z7d`#XWr@naYrZ}+Wz9C)tX%J9SP(76f3aZ8<~hxZjO}MjzO_H=Io_=sc0HV{fi;yS zX*Kg=nYAJrIl^I`=M|$So4@7r>z%i$mVq2l?VS}uE!7{I7LFu{g_H4CO z7Y*$RyR6&yMbg>)rBlI$)f;9WpDVxQD`;q*=h7s1-8Ua*DD-`~awB97UsB?fjm29E z!@4fq$x*u=Y`CgN>_0=)ov5T87gG=ZN%&kQY9gJW)paW~;+ROTP1?k>ZJLpmCQr8Z z>skH27=9z=<;?6uiu)!gDoDLMzGHg#mT=CA@n_iAiUl<-N#EA}QE%tngQAl*i@hxB zcxNwss9ok+^Np+~y``Rd6HiLJN69K=9r^WGbWeD{#oIpKVCgN|Z{!{qyU3nAYZ4IQ zVyLpAiBG0gQ$5kk zHy>CL&~&^fd8wLPZ-)4hM~^BGOkcHL=Gn?NPsZKiFZ7bJbPi~EDP_0s}AaT zA8BFIp05;i?D$lRS!?41vb|Nh)U0o$e7>}2#*aPAH+O5-wQSo~E}pu?RmW=Dx^rGu zYKz{TzIw!Z;*{0ZSC(9sdnxj&*kU`s$QcPazE=Wa-?ZMumz!QaeB`^|nS%wKvaY4c zm#jYOvb^|nzt8&G+28K-oon-sJ)M3orunw0Oz4rO%Q6+&!IQELMNYV^KIZT`JZPzp zyL3`+mWqqC%scy~#Rr3#J!igLT$iGI;Dz?Gs{ulmEKASH2rX`67qK#S?9P`?*kEC6 zu{P(V(T%kZDq0Q2*QTDhcI;ZNj02lx{*54szU9VKjz5)u?tko?=|;Po>XVb0&jZhtMG2US9pl4*=6SCyRv#jG%IR)>}*{WPoofr{PJMp^m zKgkFOd$yUWlE>YckCYwLp711Dd4l$ZkIyq|{H~o^!?e-&uDivm6I)mDUWxHcf7){3 z{8p_JqZ=#^zJ)T%t?$oDW=5O}dpT!szShshPGuVBqvZd2o}Dl&WcH;aRaFU>j$Kq$ z2=8-OX4bNNv~HHxqeFRRw^^ood@U6{pI4>ybc6THYvFEg2bos(>6WF0OghoWJ*jr( zoZJka-5=w!8{9?aSj>#9&SF$DU}a&vHq-H2Xr_qL(Y-0b=L@^il`WNaF8Q>~$o+ur zimR&xH?;1qcyvN$|5jh!S-Mj_OHQ3^3T>4WYn_~umnUO6$$7u&Vripfd;UnL7kP7v z=dl+3jGR+<#b0ICg*(SqTW~j2Ef<+*=jS!!!_-yDymmLYMwa_j^f$-+^UGhlL@i>; z*|w><*|~Y5f&Tll&-az+9=C-Mqz3ZY-^@V{fEpr~9d_5ci$pT)bn>gsRYVY1y|@uen#go9J@EB%#l9 zh3nEq^`5%R%rCxq)Mu&IV}zXJ88uWt4nw>b1o`w=Xx@y}!);M$l#R4f78_XGq|Cw(N^3llL~UB-@CW zzPwF)8_yPP^4h(O{jurA<4()dy4}3fVqbJ0c$JmM@braMy<+fZo_U8BPOfrxZT7C) zw($w$tczRP7P`J$GI@S<)!xl6Ct7Dr-0R~RpXjvW%%;*5-`l6UX8RpY4fNF(^1Nr4 zxi~{pXp*6#>W|}&vsNX~@mLhjyL)-gWi!66d{d>y#q5&r-E>>?HwOD{+9$a`*yn~u zZel7+m(lJ|+Vd)- zrRGc*63UHTCNVgK%D!CGUbuIP?iDm`Ic^ZZ-E!`FS z!s_c{(UjX8GmCmBUs`=Mpfh;Gi}zs`Qwls^2N$HKT8DJ4dnXp*AiJw3tS58M`wbb7 zRi)Rt9}V4j-91$+nW3QY)-=r+v+Ql%zAqMShjdfJN@X2vwTePAzC~9Gd7M>u&~U43xWKaN9S6&U&`*-cN+XSa;Bbh@dy^3?RKH=feFgPpm$E=IU2r!KtLp`=s6dvd+?$>Zmu)Teo! zWtdVYey%HqZM~&)Pv^3k)2^(0cl2PrwX$t*mBm7_ZF!n&#c#eYI@+kAYI{_?QLlAd zW9jL}$}(AL<&1-?6Z=^=ua~~SH(jn&qq)euIOMEWZ?9gzt5Hr1>y0CPGoEmL`nT}h zWy`#>lYf*ODwUS%D=w5a4C@!3u;g>x+6#BZeNM44bX35`9ii;X^}P$j=EKa z=ZVc)roMSs*@lm1=XE>tzI;CR+wqaT_w($cvo9Z8ypP$`{6_qR@2V`t1Bx5_I94Yf zI~bOpwpS_W^>x!58()+P{Pq{Rf22{gA^6JoCDXXS@o^L{%T9BishXDjK4$XKqfINU z19lm^w@8|r7{x2iHYqOR*~|F%<=wEJv%YK3WDA@)Aj`g2+pBZmsdeiXCivaG`B-FS z#7TiIz6a(m;omFAwyFCkPwoq5(H%3b89v{glakc!qqFhB=N-rDvR%2)Z3(#M|BQE) z$M9tjdfzemxMP&Wu>~R@ zWfoLswA=b+-FNKg-Q`?s?0UWQsyIJ$T|D(KemAg=My4Rs6*<19NceL0Z zI&Wt9y8IU7x1+{AwQ~hNo@My3Z$9fXr>T=!a{p=uwN$x2Zj8L~r8{DBkw)^BmCUnj zPS9TQlo)=k1jp)iq7E3IRpT9}Tx|;PpQ!m3n!x|6Y|i zr|13GX7MU%AM2?Sx>sw~6dAd2$CQmv7DzCym0Tz%Y+wJ7*V!-a)3;OA%rEV)ugz3D z8u%!^bn1SOdS0C(H>(M*I-$0c=hQAVy~4}Gc%#ZU$Y`76vW75w!;R-f^Ln zeAI64@M6+J_4V>5+nruci(zSD=Y4hDMCs1V{S4JE?aC8Fce$mm-eBe~u{5{oo7cw~ zxApv7Ido?=h<-4fbM*zM(7mNol1;Q7`C5}1-kz(zl5+bE??rR#$s9MoFNy7%y&=i* z3-gIp>nBZrF)>KIK1d_>Mew%C`t!K^+D(jHmoD5ZZ5^pJQ9Pf!>+`L}le_cN7JF<9 z-O3cRt&;iH&K;V&W!G7WWnG&nuHfGG_9$PBgih4ASHg+5RcX7F4NmE;5kGCX!OddT z-OY=|-*Q|^V*BgyidU`n;KKQCZQf6|O_U11{Y-Yjb&-NQ9%o-2?UQU;w-8;leZy$5Fx$O9nIj_TgxqE{HbB^nNd>d-Sxjjbh?asfN5r?^L z?a~VscouvpIOm+I&{|rEOwOkHhzL-L(>p%hs3uu4YrHz3yyy zyWOl8+b$n1()qrnrhRVl#CPJ$-}@|>@1CNtDEG4eriM0;tMeu99G?Go#g=Zjzl`y% zZOM%d&nK|D`MhY+-x&J9;c2uw`vj}T;MAZW>}~uH^(6hI<(Fy3PPsbOCNWR4ut!he z@%*1>#m-Eu5qKgNJo&P1;kQMt(;YS|>l~eW`1hQei+K&(U(DTY6!SFtjPAkbk2XzE zXSrB1igbzQvNugB3o`Jez!I+jfn(yP?PIKP-{_%eYE&(lq7se}W%Yi#IOx zH@fHN!CJw#mg`I5Io`4!v&9Rtq>?HRnNBl47VuoYFy#HFEb9xK6Z}Kw7|Lo&Z%kdZ zVg_p^zpDiElP~`ns?ydw1!!AN@-Zv?>^D_nmw3eO*+lg+hOq7?*YFAc3qpA(IUJRYa1yq@dF899`Uh>c&s~PfD_0e6VdDDFaO9lF zSV^H`j@isL`S;qN|?ZiV-DF6X+q>b%>wN%e=c7siOb zjthAwbWwb>?aDgS^@k?;OFmk$XijdcYiLhyPRcB%^I~;{*Jca(FYtEDk8>71GI6zl zYsup`FPfHg*BG4nydrUu@hpFJZ?}^d%X_$X9~RnpXzqPed-1Y!Wt?f3&n*qvFK>G3 zQRh+z^GOYS(L9=k$Bt`n-jNw^y+btf*aVf8Qr;HLYLBeLEv9i78?^Zd_x!%>a_IK8 zNXPT0CC9oKmR{W<_?}t$)@sQ&6&q8+j=tkOX89s(T}by0u~#u`=J)ouDc7RD~3;uUyvdfYg!I|54%{iT&op;I0U#0B#g_iE*W?TK2&o5_` zoD>eYs@zpQMP)(Rm*&sE>!bGFPkpJ^@8av6dtl3^z~Tan11xUs@7PW5T#~bx)63Vn zaK?!}S5<`X$~paKP^xX;e^%8p&)v(*s^idu-hY!^Gp)2GUa-9@?d3?G)v~O_UAmU* zng0>R+O-ob*p}R#7WhcV(K_*jy??2P6bae*C8hC#LN zayQQ3+MaaT+Qe1*bi{!$nK{K#FXGJDb#&&n9D96OeS(IW(2ljS@`gJjttQ_WZJp#g z@g0xj!{bq6XOFCU@T=_||6X(D0?}+SfqS`37J#wy^wNSEw$^2?u{=g0k7=1<~6?!U2-lftvcj`$Znex z*EAC)wXQu_DPMU1+u9(9%P$VSz7?GLU0UR4=k82fuK7vUVcm5{7D!HXTJX5*b_ckF{o?RpI+ohIt6 z@GR>sWmBI`rrRe+C^sxD_E@^`)|#}oTOv&ix2I>99`}kVE$b^+KK;kx;MVNsIlnsA zoyd9J@3Hw%i|)nb8&dt#ZaF=DkzTuG-*UrA!du&!pDk~y5f!MmyHK+G`mXHSRSO+Y zhZtNfk}4LLiw=hNaoYUhdOSCBM*V~MGfY9^ zYCX{&ZoTSle>98N_-(l9bVT@7?aolS=Ua_}rcJomT|4jK;u|mb$!`{$cCE`LA#cY- zhR+h!byu&7ELia}Fo)-ET$XtfN5Gg^U*>R;c>B38Y)gxZ1 zUH)g5eAx4!VQR^tbha3KMziaN9?60XtL`4S-Bc}j;qU9EK98oE?H2j5{?NBuy-PMN zasH^oU0Lz)$78!Y7nka_lvPYyoV&uY^vSNNwZCmP>`A{ZI#p3BVLQ_`&3hW(_OG5U zYj^nZv(3BMH;L;DDZQ2atKn*XL;9wZhji=Xdvn)M5a6phBP00MZHu%H&+QHD5=$3H zI=h_vDXTSYl41RaE3EIk=G|QL=%X~_36uD=MK^-8p2%GCyxHll?5dDpd6v`Flc)E3 zTRw-z!8QqoLpwID-~5v)>zMYlxmh{Py;E5xcP{@eBx$x##q6l(sm2rE7IOr0-E7%A z{p`+Z&gULwFEYG%RaW6WKTCw#%s!?^%V$Q~%xnA4aO-3;M^WV~Rws$Ob3RRwo!{+J z)j7*!h9XO9_VO1m!j@cksStVYbCWgK^J49z-y(AprJgh}o@W+Ov`))-`*o7UYz|J_ z;*crd7c5;Y`bZ+ouw%z})2nUaH&zDUkehO3*XqW;FGk-N&JUBVF?YK+Pb0ZrsqD!4 z{2jkKe}@N6_|vGjCbjp|a^*+!ECnZTDk~F;*~T=_YL@V+MS^FdEPEMKY_%sve#>*e zn8Xya;{5rnijy9Z+S>a{C-5$xUzNHn z_4-nB@Q9ej6Pfvb{;#{jH=JEoR{QaJhIOG+l$fCZhOiog^HE{ZZT(AX7d-gb|JtFu zxA~pV7lz;0L?4%M8=kN@@2Bxw^ay9;`(KxJIaR`2k6G0OFDpK$AU^Gq`=1Jygi=eH z{|x89ubbg_PG-mHH|s9m(0TaymI1f9|MsJ?#(jYc>Ln_ijvuiqX=3ZTA9TZ|IDy}w zzI5ZiTKA2sv{K@aFaCVK!^VE)i|zgS^^9&|xBT<}?vE-tn!#~wnaso!KbP+9I-z%A zPhFP&W+g4NrsHc3IFIV_sw@&JZVx-bl9JYv*|Os3x#u>QZ)m*!;1JX3m~%CCVmtGC zwuu*4SY6_ocJ~}xR?yTEgTsf*d8YS^6)j(?bIIuD?hgssC-d$FPFlh<@zzdtQE`{g znJVU2N;+(yF*_f?sz_P6sMJX-NKuw5S6OY`nL ztFBiM8c(}rhivo6ANY523^^=W{DQQ=O)YVODU5RW&Dc;9Xc3eio2dIyRk{& zmDwk`K#!B_&KRvbF!QvmRiweCx-Xwk>}7jl_1cq3cU9|b*_9zLyO!LTbMqwkoOPDp zRu%j5rpXfIS;7BvPLQgmRi{sZZ}f}5p%3FZU*6;U@F%LY zK{798N&`>(PJ7Yo5*k`s_w`!uDg0+xxmWOgO2mf3o2w$t&h>b^JZQ7nb|Pfj$zxeU z7q7D1TDZrYM}Wz2{!70l^2-7X4Q=^&RhC4{II7&bH@V67ted+_;O7;2hx?}JopN`X z##WQAek1VB(j{@zPBA#jMfMr`_@4Y0E4pjlo2fkf3gwHmb0?>8crvfwn=Ptfz2fu4 zJ0CACRVg{xWc6H`WyO!B@;6NdT7tLO=X|^ZB;~uWt zPRBP`KG3?s!1#U9jq9o6f}7S=|Gwtq?jz>2=|Nw0psL1{4Ud^s>ZckhsuaAnKU_FP zd1;`LQ0o*4o5d}5eeFB!m;ZSgJL74_=S`27N#^P=an(sod!BI4`A_YuHBYh{{zN{! ztuOSlN3CC+V`=E_mEY_hFaLR2P1)Z3N4wwdOQkd4tPAItE|46g5{^QsyC985a^3+{^xUHbG&uM%=r){3j(Bb#4 zF6+XqjMy9d87A#rRrE$(b&IFcfgsOiEq7ZWS6~7c#Bci3a)>TOCs-B z1wW29sTRF;f0qYqiNEN=vu)j}+y_+C?wmcReePuLggLLBBi2skh~2RysW@lq)g3A_ zTv}1Q^P`+DEYx9qzEnGL!Rn-xIc{qj&wqNpRLO8dzBl20#N4@u7U;3D*?#;txst9%i#3nkUCh2NGiOyNJ43o8^H#QIF>V{{{|uUvOEVTtWj-kx zKc_l~Z|;;k8p?B0$`@SN#;?StZu6(_3h(I$Vj0ISdA^U7IdT!fZ@;gwPL@RlRm3Oh&VJ<3x_V|QJmn-(Z9FYUwN6`84I852~-S+!es^Y_I~VZ{t~M!u!XgaZ=`a+k!OZT_3x zyIZo%Olp;$Xvb+e&6Ks0%lw|bH#;&- ztMRm|n(f;iqBQmAKYg@VI&Z?)#drTr$w<@+VCVTSDWc^bb;kN-A^uAZ|)u4tNe9c z&g59-{XFs;*d`PlnLIgW?c5KYIYGir((EPzf4n6>G1{)U+bc2OUGpA8YRoMD58-Xi ziQ&2vn>hcjT-kLY#xU`d{|#ZEiRQYjEWH~fc!F1n-Ll>xXMg@y?@XngS4=A3@p6`! zx!9*i3VY8Ds^Q_sutUf{&$#)#ydpm0ya86ip ztK#@xZLQsGJDieKiu<$`UT_%PICa=kt$$&RV;^xHn! zXceAc8*i-?D?S^Qk-uCa%pxwJ=TBez*GIbxjZb}2-n?CK?Uuft8#)D^c1Hw5YUgZI zy^`4V<}_!}p$vZJITQHhw@U01a(}j8EYf>fmeI@Y>`LnYr0XmBoo7`oPvVeuGCW>Y zawak@`pkpJwePQnfK0hl_iU}7+J1}+BaVzrb*)R(a(}gO#9y4iB1$@ zca>l3sa2Bl_5$CM^G{bBeR~p`eB<1UNR=P)?krvFrQggus51BQLFTJ|3ufqCit<*< z{BXydg>UMq$J^So9>pfs|7e})zSSvWPQ=9C=9qMK=KWr4sx(Y4ubq7=OnJpRolD!@ z)zXU=o!qj0XW0$@rJN=+HU%##+@F>ea(K#dh0k$I;@TJN%nz}1E?Ls2u*mS-WqWm| z?p7X?w&JIab5_WGJ!x^7b^Fb$J7bKdG2ec+l7+1`s^_)H!Oh33UUh9&5lk)4EtnU@ zc2c&`)8Zu8qc?h|9s3?0EIn^|R{z>`k5nt^^Gh951#UB(v+9b=ziFu&DrwHRKLc? z-8vhcW8IL({CT6r`5%t|8I+wQDo%B+xOe`FigV)9MeA-{6la!gEqkT0=;r)=Q)<@c7WuN6PGebc1I5V->P;OkgR*2F%u6%w*5I(#oS75^)pk?gLdo+0|4B>Y znToO?$F~ugp)WeiY}U&Zxw2(xl}wmaUlle(m+{Va9uE7ZzMD2U_%R00k?H$)WyJ#B zOI4iQ#|mfZ+8vsmz@{pFrKfM_QO!9sOg=VMNGkQte8YI1_tncAmlaj|7bb1uX}mU9 zVAh3K%$rY6uVmS9zA$#i{LLpn3FK|hdv?R<*DND(^<9$;vX^DMGrb9z_-3zlfpP%5 zeDUO8#lJ5p*v{kqy4pXwULYoVxz5tm{`=WY9)FMjygK%z9y_(Nl2}97uXEu2@A)ohNT(q~<@N-Hi)8r+>-npB&i_ST4?V0tUuxR43?@DKtL$^*+ zeroaAlGRtd^YI&_ZYSQjriDgMQ&Q_I#wV8P<<{qE;ZN-y} zvwdYA3QTr$eT#N1`{s9a(!I)}w>FP&t>vk@a5B>O?4fg3rOSJwqzo5+Z(qxF#8zqH zw6LR-f5=D2>aLknx0OXb#Z=eh43{$V{KUvc#nLTYssGeGo%`R%tzv zYmUC2zAjChQz1OfG&}j2z0y_BIZv$lZpxednIt#y&3p%)SR2nI)gtp};iroZ@buqc z{LirF(s#v+zpTTicrvoqYkzxtUH+-R?!v_jlPo6W?u<8-c&t3HS|;Q_!%Uaei_8Tp z3*LpENuKZds&@am<)$7lkG*Y<5ee13@$K8A9iQadw3$M66?9LCvX!!W?3A0p$=s*S zD;}kqcWRYkseU*WD*rq3*(tz)GL8cN&X|@;7u8EMWUu z-Ia23?-$QGlY5&pzAd=9qH9UbgUQXum9{nARw|p*bmRBDEsQA^!Oi_wt~uWf*0=W7 z_?r=s*X3o#7m>W4t?kUMgh{Et>h+`Mr-n5=?=<^*e1o#cmM%?e=Ba&`mK69qzIQbE z$UH@6;)%Fpo9{Jk-?WU;^UFK7*2aak7uXe;7#Fp&GL*5~uIlJHHqB_V)JlfWzvZr8 z>~f#|#O0Dt_=ks9yN@5YRKNY_W9;e0C#NT6Jmf9ZGj8ubFkvv4%;`cNxZV|5u1_blpLdy6)ur8Poyf$da=r-ub_SX zz5WcHmb1HMHI8!0D{qc;YY4eETlOux+y3_L9-AAt&w5s0vPRo$;$73Jc`lP=l;+I3 zDZI*Ux=W4c+JB1m{8?q|i?n7Kgxx&P5q6W8ue8s!=GXDBYbV*vHTs%yDcWPwDo@Q5 ziT8Fq?LGS9*_5a>vAbfHf1TBz?M?fs)W2|#u}g=v#rdpfQ=-+@B<7n0IsV*`< zL}%|dwTV|6^cOPs$~)Glac>Q}v#4*!X`XtAY}b9Ri5K5Z*UJ-O{BxN1`{Vg{ z>Z3N7b-BB&)$J(ekUtz#_n`PcgI$J-ZA-kCyVT^Kbou(9T`^N#H>^(LKCas5@#I1B zGVSvxzE$nG)_JqRsOpN>4gbko%fB%%wTjv}Wv{5noy80*7tD;V)r@gDJz)SR?M8j^!Pu+;X7`RugnQd+PX`(<+*JJr>aY*LXo>@Lx;>Xb_?4K z_KRY6YmX}{H5(}$ne%*N7qd#p8S&i1t8m^|vsqdV z&+VS8u(6$Fhk|*|QupVpOUO2Th zC%H!|KP}%O%f9pSuRx!k3#FY0wU6=djp9#dtGKoC>gH)%J7j)N+~}(QM5cai+0l7^ zuA6p7M!rq!W^gy`ZL4B?`+NRNzmCo4>Q)^rD!r@x;c4?RZ##bJ>i-N=iz|zJ3NJHd z-<s|iq5)wuXL z{JUMvdh5EfoaS#k*E^!@lb1))|`0dAxxKZAJVY3x$3(R*UBF1iUJryH|Uup+@p@o?}OzFLkTmQPJ~OU!}KZQ+<`^ zp|ct{=gtbNys>`2=v7gVi68&CnQtqMc1WC7p5A+Wsb9o_OPrsVOl`9Y`LTq{!%iY# zSwxq&=myW^+Zs227W@2XP*z{;xmalh%cGqtYbO^;NzZURY;peHLW_-#?{XjRkehba z*Yk+x9}!+lX3gXBOsjeJD_iDl%{k=q+dPkL3Z~YgwTP9bY zh9<06-Ra^}Jf|t*-;L#Mr;aYZeJbf`vV;Wle}>{%(OnudPTe!uU^Ca(-ARZY00yItZ=_4BU&O^th4q<7x2T&2ru z-=s0SLE?CoP0rG}svQ=2b1ur+PdX8-Q5&f~htY3EU5G^EOea3$^CH(5#-B(Gn%H3Y z>srchE&jISd0UtsFJ7y0T+80;`a%n%`Q|EsJQs)L^SUP#_tQ03l$zpq)$A~ z);DuoM{B^6^vv%^xty8reC(Ovz`j>IRe-zcKm*^sFI%kF9a!$*Zz-|x<{G&$hKVOF z9#mgj!qUmYv-5@sW1sb<#%+7Mzlt);p8Pj;0_*YR%#Y>@&-@b9aOAtBnH*t$KU@9_jWz{QYl$-QfG1LF$cz(F^vEIGi?95+~;|fv7BDT**AW# zCvRx{cDCaF>XaoD&;4g8?EUy`V*1J#y@e8i1>IBaj_tY6eR7K0J}$Kc)49IyZ0z$> zRSwQl-1?zvV%+}z$19!{dn{2D`<7}ZY;~;iZ}yF^NndjEzj#}0aoNehDamI0dZu4^ z>iQ6+%iAl{%#|~~uR6J!$?}Qz?K7``UfgRTn{n^u?2EBSkL+)kOXsl;2)Jo>^x6m0 zvzPRD7l#!+>X|yra!G{3r|_TI{o5>dg&TP`WL{d5G;>Mh3ipb%zM)OGSRzCu1m^4u1>4*&C{jRetvK>jEXcV`XuYU%q>CIDnu-7 zrd^1_jx8Cg7B8&AL((&cCC9DI7D%+DKKXOq&d2U(R{La+76x|Fb005o@m`YfTB*=q zRWj?12p`jy-J9q1Z8=aY*Z(EBsG{}Rt?1J|k8f5ov%jDGTWTNsrVlT^O`9P7{fX?# zm-aH@@tZpP)^50{EZ6Y-SMbJ(^RB+*-WcQ{^Z7r6{d3ckGw1FQ-{`W5hq>>E+}DF@ zRRNA=XBIjhcsAMja^lB_2UPwud|SSnE5!3qD@%3oi_+XV%vVB~C!bi;wm;=@zl6=a z`y%1apSW5C?g)5330Ag@tmBr8p1(Eks9&D}SLKOs3zC*uyH!2!+p@SUjPIIC?TeeM z&Mnrv#Bu&8i&Xl-;#a&!vv@BG_q68jI97EnZ9(Atr18IDP69=VXanMoXt|+7}-` z$^GBg;3oIJ+Q^TlZ~MD>1ZCWxEY{y}?oI#8fKN6Wl_F1kRnxrQAGtO2@}Iqjg__S* zh3na0-dOAXLwk~-r%7s<`@P89mg^IbR;kS_G1ka^{yE4?N11tbtiMF(oi}j|XO)k; z`8-hZEhrcAEB2I#$dS{ujqYdoI4jfL@mplJ)a*sCD&((C%UyBdqxaO7v!w#JBnuXN z{qNchG;C`iNpKMZCBeiSgM{lmX*tOA$FD0+_OOwXJ6Dl zlk@X!BqP&7>)R)H7EZi0^Vo%IlWF3@z5@5}gxf5dEc)X0N~7Gs$z78ds|ja(JZ|DR z*>2&Si(WSbU&MRr>qUnf`sO7^S~!SjJXV=hJ zdD~9G+a8V&migOSUq0C@tXo+Y>-V6r=kI@p=c0$Fh4uR%?+mJo+4ysvrR?hmW>>FE z$TF;1kyR$otl|1o_N+x&)Qa`ZSNNK`!i-7;MJgp(`r}4z=qgLZNuv&+Qhs@-8Q)hUkK5ol-)@l%;d(vU|&YU8Rz{v@&k!|eE z_y1-GCr7z9=quYiUhkw`D0tIZGwja68FHLQbpw}N4r$P5d*ESf`O}0oO6bnE5CQ)v z4&Fu&j+6OkFU>V9;rg_N<%GY)ld@M@AJXSPS?%ndd2!E%^}R=u`)C1CM?so=(Z1GHJQu zl(+Vmc8M8W_#mt3|_R25ZGF5l^?QQj)Pdg)b z6;=MV3O=UF{9fPuu$JO6(FuQhIXyCTXYQ_^e`MLiIh=m%2Orc=Elf$@_;`IX#|@!X zewL3-&z;+{x6Nfixx|w&kF#&A1iVFY@kyS?c{ETlGUTGT zO5=q`n>#L+1azD#dc5$R)rD1>$uYB$8u-|7{apTKBcVDL1q!cdsCud~$ zH!~;o=IOA1g6I4y*}7hw-*oA>pVyby6EF2%Skp6|i&3SIEyFS(S(xJujXEkf6{tJY{pHVZ;C^LGA6lM-DKQ8kN3b^<%yRTPrPzjV_WNV7vo>n;XYP3 zjb6y6hw@nknLPR;WnHwQ^YU^pt=l{kSx+g=+qt&vV9o}o2u<6we96qQkI!gX91W7? zIJ`wPXp-R1#%IfCzNui3Q8?A}+|=ZhVd};I3@eWNWlelByINT%%R}MGEX}qMR}W8f zx#CORx0ragb$HGxI`UXl?ZuMNx!#!yb0;i|zO`j(##MK{(13~8Z_U$r?03S%d#lH{ zXEP0!xe7{t@Y6OsbeCnu1bv2}m4^B0%G-*5Pi}r26?E;)6O-=C{3|}k+}#l9u!CET z-!y7NfZ1Xtk2wXI4^|lZuo>SMb-cOoqF#$bRRjCF?CDB3B^T5S?z*EVEUyy$@G_sR zuv>`Ko*TR3|VVm$$b({@PP3&HdGR_AUJnf99>TjlLJo zuF%A(lKfcY-kOB!olLh*H=pd?E_i*J{k5GpKE4TF&d8a+ZW5nCq~Jo0#UTmI9Zu4|zt z6RsVOaC*qh#_;Lpqq!dLpG3{p=B;5YRbR%qEGOi))9>>FnX5aV>~KlGAjWJjBE9k9 z+OBstv8gh-GUj2Q%wuOCd;IM`LtER0v&-Ia9Y4}vbg!n;Ex1#8qSwR&7ANKIe4KM- zMe4?*dtXk|-Q8C%Jm*iLx6*cJ4z=4^Drryj{f>22vEE)1w|TW&JWKO`2E#~ihkB;$ zxn72rtuxr-9MmO6=Jtyp>AkmDbdQ?bm-%~*SY{iC+gV+Hyi?FvB*AJwS6%U)&`Fl} zT(-FWNzPk2|qIM93!3@{H*Q zp2o_0Mr=-hk1KyWs>(Niq0g(lB-Mw~m)rOl<*!e4+;}Bg=+5fHW$OhQtoN#XKD#+|%7p0ABFb?P-??1*{1a>cXT+I&sVmCrIwED=z5 z)SC9n(d4>Q#v)dQN%dZ7Z&Lc_nH_o{RCQTR=!8mjrI_Qva~T$&E`+sL1^+YiH*#*v zxo&gSO0qP`yCYRyS^eIw#VUo%`dVftv$d`^ZJHSy&0}@>QZ4Ih{wOG^AZjP#j`Rt7k$y$892#Zv|`gnhN-75Pd*5}-yzW7+ze!UMmP<{G|ExV123Iu~20ADiLs zFMl;WO1J4=PFCRkTR8vk>u#l+Z-4yiIK`@dbslT+*3C;db^l)0VbbXE*y3oQl~~WZ z#f7y63nU)K2yh;ASbXAQ^B3V|oC`X(d>7}PckxNyU-qn%Qv&&|Cir`+9C>cDTw?h} zbGG>oQAeL%Uvpe~#qlMZQ~oo&{S|mYD^}UCGmw82hrK9@n7{FD-YEziI8_{6ti)?7=K?VCd;d9u9x8NJ|d{raQ+Gb55SF5bBJb0SZg z@t+^|vnHN8{@ABHQFBLYGQ(quvnfaO`%XWve0#YhOP=NV_P3F{OzPg9dA3>Wyhd8# z#LLPPKRR8O+M;qT@12}k=wV|92Fq{u@Bfv$ToOHcaYjD-y}LfCNuGHz<-eai30^tj zSG4rYc^p$8sAWENJ??N*q2B-NvY-t%nNq&i2L+by`q}r+;Y-V7`MqX0_9V5L&GJ1r zds<(dfAE|h`P;IYu?v43b1)Z_cvf?&x#*p;`mf@DQ~KWQ>T8|V5@2F|$-=q+IhQ7* zMf1&N`pnuw{_+0)fA`<&7MsMeJ2cYIa87Zvk9NtyzDUk3^EVov>NjLkCO(N% zGT;qz%#uF+oMq1Qd0TGSXH2@llAO%8%C>8ZxSEP_g+>KKMY>b=&o_zLs^LgcjX&&VayeTsr-{nsHDf?>TY{#HPtD-l`wygeY z2hD_4FZziqgiJFG+EAHa&cwJp;)M;PTJ7K3RV(rumc_{Ni&kvB=#jibpkmpA-Zgq6 z#{_q*t2}zs(*41djjOjg9%Z@3aqn*~eSnoS)s^ zM@%W4^L)nvd;90Jygil#zBL!xq{nwsFeJ6S;7;k|rL2oOxh6g1KAXqd=YArLHKO=V z-eScCE8C7Z{MpOSJb%{X6W^-sjD9;M3u{=HJ^2%I^RkxH>z9r7kC=8>F;A%bB6l!^ zHRtye#wQMp=lCs`x{6mxyXem5QslDVdumdc?sjPE@8+}WB56;>9SRNFUN|2- zukGBwVP)j155M-b7T*58X5vy$zOURl(W}!Je66|c8>G&@S$swGVz1YCN-Uo(iTc}c z%av)eg5-0C36;y7qN|ik*ZnN|X;yadZbhcb!|=y_%T|h}1>{7ptmyh>ZK>AuDAFe@ zVvWWE9;T}Q3{Ooj^3=@htGSujy;*6Wh8Q{YzM-EEP}FRZKpk1w#97A=E{iOZ-VBYeEI9b6Yiz1QBBdx ziCnwWH!PN9%690VBYZ%%)wXHt2KE-o(=t=-XYhT!-h0a?UdiOhwrh*5Pd>caui0_x z%elhKU;k~{DK8d%0_TZOvx74N?{<3^pzc+Vpp1A3Wrrn(Hi!O`xoh~-x(kq*H zXiGv*ZNApe=ptv~D9;;teOankr)Qp*dDLgpAiwnZY=av=m&{L1Dlt<_i!iY=m>vJQz@Jh^PYqhxh@T)0856I<1#SKoAIr(R>USw8Xh)eFU*dIx5Nb_+~u z&*MB`YWa^>-NXCYp4y%3R{1<#v^1^KT-fK5$3gFcQ%v)+@)#CQ-C-A?do0W7&6M5R z^I7CF795FHNK|87oz=A{cW?5^XH$a{#Lt>}%4&UdR;d-d-xBvFZkw1vM30wM$hspr zyV&m^WSh8(`=aK#KMEqjYa8WOesT7lX1Vlg-sT?_h8z239(?(6@OR0&oS8xC%OCt$ zZ@T&7SMH8mo>IcXtL5YP*sN=Jhbk&OJLT<1h@>{R|Nv>7$EV%YT>FJGa zp7x>@uCdC~?L3dhOyK`!6`55o(48{v(cPQ%{hh{dr`nYKcpobn&RS@5B5lgjpeo*f z=Ps|4@i4iVv+=gZLi5-PW_= z+o~-SUOQel`^0@ZlVw@NjcGwukL90w%zY{IvOYNc;k6qbhnY*ImM>f?E%Qpaw?Vk4 zhfh0&MIl-LT&a$5Ymr-BR_Lb9p^PC_Iell=N}X6RXW@bKw&#qa^iyVs=w2(?>-H!$ zL^EF^FOaXu;>Yjn?iuT}R^?PKyLI<=M*cF_lioZy*w=al=LJwjG;)>ob`+Nrj5QD8-^;tt`+{vF3fIXPvGeV5&cvHWKc z*26c`;_vP&+k!6X?AqempV6Zz%OIQiKxb)^^ilg$6_1yO^6X-`r#xA|cWFU=VXVZw ze(lo@A{Se(9u_b(VA+1+LH~=4r%@aC`)0oixE9fOVx5C*)pec4S?5%0K6P2f z%u3~+E6+{CdaEsU?0jZ({n~t7bjnU`?w{H-pq9XC@izKF6no1w#gHP+{|st=-Fj^|_`mntTx;HDHF=R$fw0@h$JZ>+X1=^3 zc-^g^LHOiLM{CJdl9N{Q1Wr7EYoVgizYE&kr6(n2LLV!48WvZ{^c06hYZa!*<@t(j zNom{Yw}j!?LXA$x zC37K-Gka2ahNa0K*GKXBg&QkhzxQ~+)|B(4_vz_kPn8Q+?t3eoO#PP!Y_V0*J^6le z^ZZ+T?%bUp|4YyQ$Ks#7m%XM&9LZUr&uqKn^}OZ#--aL775wWi-1DYlX7rEPa*h)* zhR+q!?Jv|l+okhyX;@^z?{}v+9D8KHwkYNA@%4}X9c*1c?d_IhF{O`|t1o(YcwKIj z>$79&Zg00V2j&>wn>q7ZuD<^K6E&;mv?lE^5#DAqC1EY+^aHCVGkuuu_d{~^(TQ7c zJmcr)n4r7qr;1$J2lrd+<##XYw#k|qdcDP7zAEqC+nY-cFuYGqW4_NmzvpVQ=Cux2mmPs-o_+nXKz&!LS+@N4S#Z_~ME>!l_!J^BNr%zdMqdN23tjISq_crx2OSG^H>z+BwPfoa9V@EbvE3vwm9@KSkJjClrd+%!h|ztC)|+T|15LoZoz|rJ{uV| zGd;h`9iHW`UUq2mT4ryiQ%iJI8)PK;#J{feNEO?5>geu;Cp|o5c-OdTX8qP$G_xXD zm|-T%r`nZL%h*K@>Yvo!(H3{7FGJ-rt6tCB&&gWFb3Pvpv}O&M_FmfZq;$L2KI6$J zJdeEHbiANdT0POa@`-^={n}vdi~3BOem5?O-cL9^`Nctb<^K$Oi?8*sKJ-2<{neWj z^JF)*JeXEfWXH>)ZKHp!RO-(>>8b}FPWnuHeX_&O&zM-cd4p?B$xCn57h%%bg^EnU zKW9Atvf>=~LXG_a^TfFom)c>ryl;u$_ z)^yQXq`)J>R?@IlK_xUnO{%UBLFtlD98IS97xK9G|7=5?Xv~YvXj6 zol4CdSy7WLWaPfG8%Jr)GMXv#Y^7v`&aacR3l5s3^j!QE{ql}(;g@q~PW?>q<3Hx7 zee%>gpWpHqpGGWp&RCON8D6xjX(p?i;~W1!|E8Q;6n*B{Q?aOxR`;Fr0z9QA-9A=T z{yJ7L{cP&-V=gMC**$zAg3a@`o}GB7Kltbs_NwCCz?-|~Y05iq%_+~hJw^T$s}gsw z?A}f0nmZYsZ+u@~@I)zrKkM7_f6D`RINV_nNq>9XbjS6LFTGbx>iXiY=(+aHDtqmX zjI+O3ENgSya$!C1YM;GZokS+*npq23{C%}Q`h)s~Kh0-X`rQ;f^1DA_|Lf>EGfs;H za7UiBIruzx=JU)vUsma|Q=gXxs(mXsvinf3-2L}nS4(V^p8jsMG-6ME5b`_SyEl_H z%BZu`g3ID;TI;q8aSINgj?uF?mhGFd%rvbiD0yeX8H1`>E@zE581y!OW!vuNbxdHV zQJXA3+lskN6~Vo{i~8=lavB~MKKXsMTjsX{Z<$43B7bn#^scM3T=ZbZcBPd$x!+QR zCsaP^igZ#{c%CAr@%W+5i}SgE{xi(=4tJd*{pMGY1Dk7s;T4US@84v5*|-I)>qt-ByP5uNlQmvY8zmulL|V!Cmdu+&kvUd^vZkX}9CK%Wio`e6+%P zV{~j7EPr3QRJtL6d-DF~`Lk9OzGXX??bxj;E3~tRrR*Cw4UD=v(5;lv2ewyEn2Da zwe+Q{vQW4Ft!B4PX$rE^ccx!8ywPD(ePc?7iKdR|(nlRI# za2mtk&1e1Ucg$n|CZ%h7?!msfHy->Bc@k$WbDN1VtZ-t_L|+l(%$|ki$CMS4d(VdU zKZw)5sn#X_>@mOk$>;xS0++tY)2+L-Q)lg6uPufNzt{gcny1+`>&3z?zZ2z7Twt(d zSC`)^C%8Cxclzm!CMAOfwL3(2IR@TTWbp`PJTF`580htld9~V&zY2n$N;7r~pP$IC z{AjAk=P}&^!a6%DamAU@F+0Ye(W-Geq3!FHN|d{qot^noQKfe?~THR&2ug$ z^tD@6Sn&8CT(IOu%CXg4UMx9=|4LnsyiR?Y`&93a7{e20pDn&`o-|72#(Tb>cxh%% z#nH7>{3MmFxh7bgeDBuoX~t-Mg6Y^2(erVSrf%G^?$pwv3GeUlSvAIdx+uQgL7Zp3 z^fuebuY6bZ4qof|`Z;Ifcl{c^AIthvigYfc)XpF93Yto743v$$LNrRPzfxbL#cUMtPs8JpZV9)w1HQ+E_Mdl+C~nPhoXMLn-M zv-{yGV@=tr(5IVOG9UhD5D~36tCU#zB&$bQ=aTAa^EbvP3bk#WYjY+y@ffdakzdm>E#-=urbLL=YQ z_0K%4+<)>H`{4;|SH=FCuJwFr0C0}?a9zWl$n|4UKUlqvFg)Jw+BZOewUl7Z3~~e*y^K+ zxWW@r^;vGJmrZtsWPMz%apJv`(oQq;=$f~;LgwAon%E(7`XXb0F@J#Fjpd$9-xuwC z_;p&~=ks1EZ9!|f*NZP>ZadD-E`P0ApRrJg^{YZEOCRUs=Z_{i`>pqp3OW&)a^Se~ z-&I97+4n9iJ<_er%CbJmJ!-c2LcL`U=Phkdd|TeNNwS1d(r0JcgN4Uyezj>Yl(|q} zrMUEH!RO7DsZMi#?OnzD=KIG}Hg4N`>N}Mgs<}@1%$+CyShId>O{Uce2WPXhhu5*o z)_c7Ts`z-zPW{};(_53$aJ^5jy+Wtk}%cg3pFWe>d z?&F`S(|zWspX_Em&}k;7clY(;*4MTC(=y=(3 z(ixwMyr1ubx>g2kiCh|USWxRQ&z-ckh?8&GZn5q#?3~$G_H3TmRW^HtV2{ssk34T5 zI9uYXu}XSlZ_m1E`vRU!p7ngz?=?l2jg>kaj{Vb2+Md|6S9sU72rh-kS&#ZfRWcWH zh6fn&X>WS-T%q_%mzv(Tp6ywl#zxOtHr`@4u?$%9c1z`xnT{_q)t|U36uZuv+UzJS zz$d;}PiK`+#JRg%iBBF}57v?qzWj3K4V_v0?(MmdamDqWg~ekLi&@QEOwGla8A3MO zX+-XFoA>C*8W|ov>u{-g=SmgJrhR_->+IH7ZFgB-yzXzFwPjY};@!tiEi_gB>Nc}x z>B8N2XRKSq!}+E#=Hzd?bKFx(G(Ylqsq3nw=ZD&|T4l=m*(_Y>dP$^DEM~^32Jv!+ zFaH_*U%S=HnZ?u;SxLS$O5L>E&*6oE_S|n~dhH$yXO|f__U$+6-*j<84DTl4EvyF) z%6j|`RXVM^xAo@A&*kqVZN>8)!#dr*I(t0g-P&d;^U=rmT(?g&n*m>jsoT?ZCf?ay zpZ|rJu>BR1G!$|(e0#4`ZDm)fSm2ZwRi8Aa?(+0(y*yK|$U{L+!&aor#7e@6;dTRm zOz=VONf&F6PFYklXO7&yN8Q~U7n?flTDnl$A&p()ET__rXDiOX7IYP{;63r}$BI)e zw^R4Y?dMv^snECMRc64X-Y;2ezKR65hu)sUwIpqN%2T#q+(w6fq$aR$)0&mgmD06Z zQ}Wc~6>oi-Pd41U-4;{8@XoK$>(rr=Bj(mgpV?PTxFfeGWaj1HDo+1r=S<%E6l#>xLbT%m7G$PDN<1-u}=R?u^9J;C#5f3<6>oQEV=Tg zaHZRX)sF#S59jz~E=vzG zP}31Ny`P5l9ep=%?3{MzolSM%j_nJlyOjM* zvGX{eWxv~j_m9z8maMZUpDjLnv?uIV&5YzftE@xCQjA=cYxguf@0)UKLdb;BZk@>s zk_;?QeqSB2|ybz+Yy4n1ypE;4aT!?&<&n!W3Gto)9@?NsE`p8E?Gu z-ev70#;Rmn4bM0H$+qTR`c|7|o_t%8a(b21cDE%Ft}^Oc<{IlPqb=_p+4Y6%+HI#N zf@g!7S4JefoROLQ>D^6tpX+PpF5XxokfLZ^ve02s+w`Ibav2u_gXe53c1i4OuKbbt zow<3|JdYwL&&c(;S!SI94?9H;!4?}baZzR@a6EOL*s+g9>qR@rWX z9V>hN56dDyqpqLKm;N)fEAal=cmMspWfyJoH-4RSIO|t&-;W1Z)~8PTCMdG*_Ra$j z%;b;h5H`kQYXOcyk#z#257yURtxw%kM_mG0Oyt$I7Dfjy~DN zJ}XgZ-o2ZTChp>m*z`LfU;+Ed_gzyyDNeC-*?#%7&FhUP)cY_0lS=uTqp7kYwr;kx z9x}`qjozQ9o0Pb_qC=;YLMF^*%Tf7i80@8u8IW(AA1wL_Vub4ZWk8FJSbl> z&o9c#FzM>eN&EI^E=lmovG82p{*38^1C2{!N?(njQe=|H8_gU+1 z-La!BP-bDn+t03^i{|G{UAV9vs=oI&tT5wq;XgUs~Eq?3asGUDs;0WQNf%aoK-b zH>U2k_|Fh@>f@vJlRtm`khW)H;3fI&zMCoZ;M_a@$uf$d2>oK-nQRM%0BRF zp@R%ppLw9k)G5N#v<_$5On&c|wq|Ab!n^7({U+6NhlHi7JYQ*Y$Jue)6N_6FEXA{W z)=Irt_OhVJUp{MzLWE@zwDK9xJ~N&ng8 z?b^52a%^k$zM+tm!Y^^V?`qW2O`T@Po=&@(JoDGCFQyXvVnt>x*!{buoV9wE$C1zC zApvFfD&L;X<=MhssdRLUe)6m}q0{<~?NVF#bloS;bu|;zO?OF|tvcs%Jgd1=oGUf? z-y)+W@?D&ljV`oDUA$@EwR%$JquqtizC;Nbo2yPeC6K)~XOUv__N4+7-gh12-rmAj ze3tE4NZh0i1jyF^#>XCIHKH}!t`W>Vkz)c*{>Dz87D?KjctX?D;wt zUgsD6RX08O_=oMSTPAZECEiXBe)D=#dCs{Xi^Scm&m{|PGd^#-Qgc@5p}#YKJ19?_ zTu{Uxc)-*$L*iC$U+x_iza4kaY5DAN6Z75WALd{q;2xzpW%3f!ZBv;97JOZ;{y}>; zU!P-7U-4P1gm1MvuNWnjA6zSvS`)b9o@MUJgX%ryE4)%4icC8fanq*z*{Pzd8xMVR z){DI)p3QNsb$L$;{~7kckV%;t1~qey)z`&jm78s{ohUfLR_Cy~J=1crH)}SoTXQrs z|IuyLdCy)wxwC5jBJ&Q0x(bH>3{h)WRw;j}$U9p$|B-a3&fzWm%#W{1%RGKleaY^N z_WToUYuBF_aXFrM+3OBZzgK_pzxyKVrYHY(yXq3ZG*kR~_~qDpufn5etC_kV(w8Z` z)I52TY+~2%-SRJ+-dK3vu?X&Iyf)D-?s!eu#2pv!u(IxT;Yz(JGoRUW?X-x)Z*SeL zFnMRTrfa_V0_B%MB0bOdd%3*WG%2;{%+056^>vxEwI(gFp02a6!HC`OO7E=K8+EV5 zMQvA~X#|QLOgZ=XoTKeg8Tmgy^`hscoN1(yQmbg_cC)HWd5+$xywEH0T$JC!o^Aj8+?0Zvs? z(LaT6vrc&UG3L@!$&52hPo3ge8LbA*F&@5_&;OAej9^|D;; zPE0a~Tk#vsbn6nMxD)p`%$%NiN4U!%Gvm_5kM4JOm=!vm6VgjPU%%HRfyBTq#`Ykz&!7i*7r_tIqtH%E5yy<_P8+Z#=%7K z0EPnz(_N>4(iR`6*wPCbQg*-fb4$6=@jFF-cUrZ~3!n2b%xru8jFn9@!qy*m2|D z);EW5O;`0Zi53g*^78nb`QUBU{g6w#>)t*Img$hFeSQ8`$@!JXu0<3%+9^-eGr8#? znY*O!(Y&|ZHog)s47fH;aMpYOx3}2aCE>S(yV}_qGGCu>Txk}kcQ|KR?$Y^_uW+5- z^lG+8cBawK45tn3%d$Ez&bm=!^q@TWM)2~5l0Kg-6VI_1zV}u$$?A-ZUbCsPX9447 zrfJ%f)hDYjn5p*Z>8Gi|(#1Qr8ECzZ749`n(3uz~lgmG+shaUWgQ2VIhEp{>OW(~q z^l;(EppV80`#x{2JZMuQ|NNY>&qBB9Q&xXst`(Wc>TzIhN|AuRbKi3H+w#lLM+vdn zOy9=+cm9tB61;0qDwqGNo64#FV$fz|5N4lx97jeE)bvOFx_mr zL6*QCVNbqi2ksqM(tY8p1&d&x)#dAp>_gWsytr*sJTr>^5tO`M^47gO)&Cg+&+_r|e@(i&aEa8MiSrLHR_Q(Uv+fMP zPhUY*^2Wa!E5jNsmTx*;9=%QfsiuucO@qhtzUsb;l_%q!K0PWt^gNHvj-PGfYuClL z5h@=AirD>HzKSfhj1qYz*vzjohmU=)%DhAKj`&GBo@Xilwr1uG?agl(`*YI2u5#aG zDI|WcV%qh?(=P74m?~tk`|x6uO^iliXJ;`M3I&-<*r`2i9!%x_cv+ z`TeZYHvjKpCx7ixmO8%q%vM<^@6$W=^7?*8JXhN_rDT#_y`HCY<|FVVW$Xwof zRCu@Er@xWsnfK~8XHMOedNL@Y&(-wB`P2&zX@^T>U#i+Exa`>wo$+PEi_FRlyVFd` zKewA#iSZg8P&sh>+{4>zxw(56tju|mU8qtx>F&qimhFyxW}L;j)`yJePkb9Im}#_1 zinYx$w^%XAz`iQ&N^4fvymyhor^~)Pw^;sY+R=@z=ayI8in_Hp*Y$PZSDV5x;~cTG zdfb(Xo)+h{y>>IdNLJco{I;-x*Vo!z_SP1IZH;Q}7U%biO8PES-QpKr(!#I5JxeS6 z=HwLDmp+>8a$n8+?)EM6@r&Jfwd1g(If?k;OG5&oyV=r&+(}>5njx&p@wYsYP zc&8ZEY9hSJ{!#L+J0F{UB@Ij_Ec));Fm2-Wd53l>PhGg!OnuTNlj+P1X=~42%!|^G z5NPy1Ik}i^hEB>PR-1`9Knvgm~(OhZq{qwce z<-Z|%wXg`Io}B3v1^#Dp3M|^P$9FR@9(cp>eeKbYN}JTR1uG^!ldgW!;x_G)RYJOC zkD+3DN_COL3yZgtR7EEG6z7Mf$p;&Fs~l7PvO32{@JhP8jm&=ruhz(0vjZ1IZ!F$s zAUNZ&#DwyH!sbgJKfZpRnSIW)*$%LGBtX}!>u-lORcu3&X!33(zn-=p=J^< z-xr;w@deSb{u!r|1FhB`&Q%fG?KJU%;Ej#13?~?{JC^9G9d>EEv> zx|oTX7q9nuu69|ctkueCDZ|(|Uu3SB|BY2|qfaX|_$PaPGrlZvPwxnSPtWJGT>MEV zZ*cr$lr;IMK562!`=RNfX4}rrJz(7U!O#BEUK!4d4=ekgy3gx3a^n)tuelz*q+naP zVZjk$HxssSX@lu~nzuq&B-2^8M}IgVV3ZX+spD&UWDn$k(NX zo0VSHoL%_sm%npYXslH1oGshaCRo&;y%09fWh&D@?$~9mD#z`fZ3#&UEM2@SZ?V;h z!1-;DdOj}QBC$(SWyA7Wny)jHc^ z`K0g1%JZrl@8rCF)p3%0&Y#OpVX6!XyJa4;?J{ZKE9;#+_inq-B}?TZ#|dYjF1z+R zIDgJndCh@v)1R5vPN91T%6}9#u&? z>Yrxztma&_&9mJLWyNB}+>KjV1hNa+g=TM0clMR#7j(jI) zfKA?Vk?@!4mtG&+{~>O^&b*Zd%64lWr!SxPm%;Q&rQk~A+aI2vQai}NB4eELpTX;K zc6!zg7wgWK^NXsvPArKvoV#fz+fj>`M@{=nH(YH$9mBiW_Pn#>+c=PmRb=@kyUYpzJjZ)IiD3%G%0kW$n$Ke#_i2B zpFUbCcGp{W?amqQ&$pd-dOR(;XHF@@2kQdg;I3%puQGGF-puvcy-e3;;;BVJ3q;tj z9b`YiP+-L-_lM)_hScc?Hb-3*UFUjbvdRW8?}M*y^*muHyij;&p5+VUS(kE~xEB93 zs@n6ux=>}2q*VGujwGW^0-tzSzjF^hsV;j!<(%K+&5K1>D%vgIm;3G7JK392p8oq~ zjcOYYSiBGFPtUo%=x%`5ukHh9R$HA=y2Z{_8QZ?hkI%Nz;;8X-Nr8eLk=)w-N4!&I zbT^;%Hxk;T`GB$c2Jd3#9_Cxqa$UPcZrwPg>!`FjBtQ0y;|1Xpij~Ls>%-+G|9x1p z*-O`Bzt6tN63JQN6a4d^xjbiQl($GYyyC?1{VG>QF1ajaKh?IaYUyNOrIQ8QR;oRj z&}o))&~8G3aqsP2jLm&B4-~I$bnPqoeZ6;G(vFHp#Y*kB|1975n7PkEfu|=gX0k8m zH=Q>|l1hK<6iW-*h1@3?pI@C<$v(m1hw`k*V~@i5yrzALwekG9T}JRA`_>|hi!a=K z*K(FRSlXnN%f8CZ*;RFO{=WVnIy)rUn%(k~q;E2+ir?Y04n8u?uV4Mwd>!U+j^o8^ zyjC$jNtxvN_w|*JmmgKg`K(KGVxMqI)KBEAX{D;WshKNNorWae)4P`+b^qPPDi*uO z?QM^C$MG!AT{q&|&C1ShKDVuBdc}VRjkf`LUyeoJU_IM<#b4^Yr0<`e@2fObFUZJ> z)=9a}KAqTgE^AHHqLa@m9JZ&i2wt1&YQK{yTK6K`%g(T;wXZ6F2`=c~-cuFvTz#@< z-?43T7nnARM#VXtU;b$Axi3}|qO>>kg);URdn}ETvc8!)@rqv2kq@jXlM_3|pY%RR zwlMi-GpWNT>{_?+ku?&GFIS%2ckoZMzW#p(=EZ9lt&{9?JnuLwC+nc5RQHaADZ&k` zmA@@!v-eeJr)U}ex{@|K`QQuJwfB#leR=!U>#kP^+205`%~0zAordD2<0Yx`aIth1 z*JPit6=KhePfn;fo>g*5(jef*gf@$1)z06zS3I0Ayq!GdbbGqopHdx_~RPQ3Ig z?*UVB|EyU@^ck3zx$C~m+AE^Zz0p&BtLlvfll|Bwmj_BJa6VPJx@bj}MPEeenu}de zl6QA$N_<|y^vq`oz%NCsO|1A3aXW{bn#Sczje0}YlzXea>37Oi}XKUwe zEa|woY5%8*m+ej1e2No9%$~&^{<>&Ix?)HBnbc#9=a>3BRoC6kn$UWp&GV90&q1{n z%B(4$x|PL(7;_%Z+<8)xf%Sc3?8dHLHb2jKiez7Z&9rsvYRdCJp_qpzeICw-K8^O;L6l#^@q74?@B ze>GoP^z6NRoxJ2JGxpNLg3E_q#20V44YB)pUbIUX`8O{ysNz=7eP@o=@Cs@tEgGi9$NN%;Wtc zsrl~qq9VF`+rql;X-6)ZfBL}GbI;Pxnafo&d|>x~?UeO}r()9YrHkKQzZBcj$H~>P zjrADcou-P{SNN(Pi^`e2h_o;-D~hdp?z3^G>b65FO`bFR%GcdtIab`Y&ZciChrLFY#|%GvvR#z95oF7DC{U+hhqm(Ejdq?qYYhAxe@gy5ux`FPtI3OOqv<}1 z$@0&_6w>AH?|*-7q3MUJi1ed5u63_&Z?l(t{EpZ4Tcn5gs_imj=M0Z3t~;}C$tl&O z8IqQ(++B*cyZ2N~bKP@YKQFSmQPJZ=HJ|p?1*`F_$8S6I(KAiES>6rJ*C4q8xSl?wCMPE2|N$~Zop6%1Q z&Umfj_YLEIl6Io~u1L}5+Oyhm4c8j=XXM?zwX!Fg^WtLNf~6uG6MML(r7tjbbIU)yOhFUxqI`lMIlXHqx5<1I-%F7_>2>c+&VO!u|DWg5q9`OYu? zEV@^1%Z@FKYnMDtQr=tar*$M_Rjq^eTlM8p+M=_&8D@QvM9B8{d49u-&*i##pccOUC-9Iukx?kcBwtn=TgU+NejM;IdL2~?|gpyYd1;d zbe|fvBa>g7*Lh1{w4N-rWTvG4_WOB8{`=2{ew>tKFKlME<4w_~7ln5sU2P^>7H-d4 zpngY8dGh4<^KTS#JpS$JRhg*eT&YtsGw;pXg~`v(oLRN1wVZ+T`SPuPWeb-D%hhy6 zn_Qd6zx6=!9{Jp7Q@#9eq&_=;ky}>%@U`ti?$xU6=RXs@Y0~8>pB&Pa`F6s|Cr_ul zmzG}65iXtBV)WslJEMQh<43cMyccDroLrV_D!o^Wd;8?`su%mNbs9zb=ajI2eeYVB z@#5&i^vPFB(%$K)UgtCqToaggj^Szh`QM>-i@he^?*4M)P|T*B%Rj>1wr`&qbkA@P z;{lm)JI|bVvjbcCO=~Sfl#R8L`5bKv1H;oa_g}`meVrZ^U)EB-!+6_K`JBh!|4mi8*D`DU zG9zZ81$@nGnI(CXa`&aQFUj(d`|)gbpV_&1rIJ}TQ4f8t^SSfH%;EYnc}d0Y9KN?@ z3Jyib*M{*OT{g3)c&Z?hQzwK5Bxa8J_NY_23fqb~9xOUmw0N@9ts5&n zdvuv%vILf7EPd25iGQz7uy@_5<1VFd-OpTBYKv$(!5{VFsJ!FJ1=@EL7wy)SRLyo~ zUEJw(!Sve7A2UwqURx~_a%iEuZit2KXQ#Yo*F!fxRUGx6xg}hCOJ;+ssC3#l&0R_H zO1l=U?h>tUAlnj$KvC48D>e(-BV78?3uuKBj5eGQp>Ae-QME8l`mtyyS!>x zpA$M|gXHhf!n6ISOH`*Bt!<3e>^d z{|@wb+?Jtxzs7pLa-Umuf##zx+CRkaTf1!cN%$OE-zoOwM2wo%?kim8U9qZONRwVRF*diw~x}alOUv=(o65HsGY_jeE9SPs4Qkj;OD6 zD`J0nX>+s5$BLifceWW^y!7bOv&ejf>PE$YRSeP=$6wFes@`jNPG|oz^)*Gz*Gx9A zirLb{(Asw4sbgaEt>z;$3jfVNT6>9W_hmiR7L(&z{K^ZMRvzkGV{o|jMYQc4gLJ{> z-AW{>qZdXY%f>-k?x7L)Py3*G+R*SuXAUv?Xh4 z#k4!#f=&{pXWj1|3p-k5z!TeHUHmtL*R4Ks7sHe=$(JuJ-nuewnb>tTWH$F1p81*` z&)17y?A5j?&NZtH*;E<)zG7-bDci0~dzDY--aC-bQTDk?_|n?`D6>Ob>V41TM6>VH zEMhhGEL4oPOgqRRGx^eT3Bv zwB{^{l*#<(EDn5I-ZOu(#iHJ@Q-^N*^ksNv&fW1tG{P&W1Lr#UznH5mmIBS zKl+~`Fs;*2YxU2{6`mib^@gz|_)NKf;G9v`DgRB?K6|^hJCkykGw^5meL2+Md-!Ma zX6EbnnwvHo-R3+pU2Bt>X#a}eK`E`;&Tf}(F8pw$!2MC$H0ND1xiY0^y@IakzLb2KT11&;eUp?*=Hu*e48}6FvzS*_5947g@-oC@GW?@ z;HvD!vNpX3W`P?xU(ZsEpYU7zScrzd#ly~pB~p7^v#pszt>*G^+gF>jmY8Y-OF@5raqAiW_o)vKEKQGM3q5C?(&%P%#E5%Hn~sAS0C5qwNTq) z5Itc<*@Fp1?%UbB?gv&09-T1nWzq?)o#z-73M$r~zqxXMf_Qnj@u2`2wu5OBubc0G zHC3Nd%Cb#mcfHQkfOQY#=CZm)>M!=%J1z6tlD8Aj$;(=IdF5}Ou9tGxr8c`?LGa{p z^<|ooBF(xR9#1^yb$p^OoK1e>m~DXhvR?;w+oO-8NZIKPxxg zJo$aSm&PZZZD%-B1)m6e+U97!DP5GQ_AKpWs`4^cui(Ax{Tp5%xN!JK?b7S@E2{$A z9esZLU7j5!fxu<6`z}{jZ(!R#DO1_$=+s?|u6`3%=XANPw0}7J5_iJnOPeRJ=6{g6;^sfe z1VP!0qUZh{xf1N3R?Df{dCe`2S^q+HxYMMJxo!R;oXd|qDu|I0dGE1yb11Xd(GBA3 z?3aqH2r5)e^0c*G;n^?jxX>#!Rw>}^_BPwqlj`$syj}zsdlay`9J4+;sx9cg_<2xaDSQkIFo{>;>40fCq)#jbNS#Q!xW|^-G^%_^(p7wE_?XX$L zu~>p(rNsHYm7CxE;^DN(NL+Z&m#0bSMygFuRek*TrPZ3fA4|@b6mfSPGh3fj`;zOf zOe9ZH`l>IoD-0hQZ=PG0dv~{Ouiv3Z!WwtFTHW}UREK#TEn1rJ%;eJ#?mg8qPlDfQ zWp1=v%^4)Y#PFZNe*accwf5B_caEy$?`E)Cp*sD!djGBYK8B|?Ui`ZEDpEPp*-f;u zAY$qv9^T^*p7meeczxERm(x6JE2Xp>JWB2@^bfVQczcvpEcnNXYp0a=@7momrSt0M z?N^VhFMmJr_r=WSA4^|YMBLfrxN{rlbp_`C40V_6{_@#w_Wtr_&YtTVyl+?P6!o`$T(${T=v@4`ahlU!UJlJE znG2V-FW$G4d&Ys@w^uX{Jh+r=Wz@TNewLKVHqMzUG5;CNSp9-BFH0GCGG%=9Wto>T z`BHVj*`N#S#I!#qPoEfhQpf*oY@O1IS@|K#9Zw$Zx+$>YG0V55IYGfLyNi#e984%; zl5WUsv+L7Tu?{JY+|m@aVNd*wFAFo9-q@XKzAtLobx2M$@z>{|poKZxtV>d5H)s^| zD%Yfe~W&%aeKz62z1&^t%8 z@jflDqfV!<-MSHa{%joglZr)E1(mV^JaZ2)`0AW}^F3FR@x#-ZNerAPXng@0QnxhiK);&O~#Q#_~dNXV&`yop5@-xl=jl@PM{u~;;xXXe*aM_G4yoaqw( z^nvM5av%Hgvrz$=oRZO+8EfAyNcdA#cwJO#@lwxjeUrJz+|BjQZ_joSW|rMle7*0+ zUpL1+F+n#ix83M_q>(UBL&{Rb>$H^HDQP~d_b+$%JT^JyIeCf{PwUyeJO2bVuejHw z-0FE(N`U`GLAl)H%NMRH%4ttl)hsI6<+`hE{*QuZ4;?$Xv{@XR%vMO+9al-=Tl{5d z;oY83QA=c3$g6Ply;FF1TD1R*!uIoiGfiYNF4oL&J>ywxz3uRhBNr{}3LKRu z-uYnpH`8d*jFJ^ow+I|$6SppV@Xprm=eo3QWxC2U?;R8nDg3j1EtlkrefLCm7w6g} zX-??jTiEBuagIG`Pw|}o>&xX-^`8|yJ@Ihg#jqWlof&xkwB34M?)=8_`SZ73Hw(Ak zn6XLiNRaO)p(F23vd^>k-&=g`-0G0DuhMhRgru{4Fh2h}tVz)_LMGbr+{FVA0ya(P zRaEaecc1^xx-#SGr~eFzPs7VvbMK|u&-fVEQWU-T_-XA>g-{?N;#pI6P4jXn}@q5-IZ4s^NFTKxKXJw{H;JTw$=a%G}TDNSxHPL)I z^PEt{PT@(~m)72@b>dXBlsv2RWKt%Z)-gN1K1r|hTpEV`f!`PRzG^!4g}1JnyD~So zLCEXCyM-DbYdSyOWqoyP>X(-y;sy;%o@{s@Jl9jSuj|QHfgAsH47v8Qdf69TN!t^s zG4;`b2m0#wcJIl!q&$I1gI{9xHm5@i8;^0ygxs0HcanJ;^VU=qmcwh`2poSEIICyV zWx=yIwX03|93DJt`84xnbJhor6Uy_eYJxW|_{-p`5hhx;rp%!2jZsTr*Rv^7%u#&X zrTaV|Emc!(d(-27=-Y~&)}kAIFQtXC&wAOi#Y*f>k|i^L)vN9;R%HTda^Z2ld*go~Ln2EL}ucZ;{i)IW?DbGPu;QZP(Udcrd@}Qm<4LFV9BN0yf5TtnN7>)yrFF zs()BIWnz!p#gv43mNwx$UzK0hgjNI`;|R+*EW4_bMJjmFR;T5iZ}k2gNm5L{Q5TiE zd6swc#U+>4C(X~YX%L*lbmRO{l|?T$O{(Ql-r*K-Zs`n}6g`jM#dEH#b~ZEVY+0kU zjrCbfRS26(xxB5`#^z0YnYztcM)ATqD&5r{Wo``#OpNl6@>(V_$dtYfpLFe_g_qro zw8`0pdoMn5OO4q-&4}^kg__@gJ_b)Si!%-pv=Qj|^FUntxJ}7Q4e@xkv|o>o)jF9A z=&Toh;&EKV!q%$zW8aT;9U8}T=EW3eO*~z>s5$p?G|R3Xxyxd5KP|Rf6!M>8eefiY zvsRhAE$?WVzT}fqiTJjvt@m*^-z$gQJx%QQ*~|YfD0a)$K(i>?HpV2ugCW%e{@}4C1mAm z*c^3=B|1dL?)rIUm71W_!izSZmA>h7`suDU9k$Gdo7XGfsd;>R|DAvUp-MZ6^B*q6 zIR99$oxGCcN$;u32kFh%SM~huE2?_Pa&__9lT+7kY5APrlrrmuTd#aHG%t(TMxew^dw zIDX@?Kf5F66zhF%1+J21DbXuccU*lsO_P5L+ui*pYczi83#cT2*w8$otl2k&?_|Uc z>DyvECVjnH`H(&y%~h*?1}T zWCWe_G_BI`lZ=eFTyS+p?XtU!63^9d?JRP-skz`~-bOj&gDZ5(j;v<*6I4{h$+k<( zXv)#>OV8r0LKjOpF9}mg+Odo`Fj_`_md0_;bOotn+}r=jaV$yNaAd~GR!LKHDJJ(9 z@7beg?9p7d>_E$H#DFfjXRfr>#W%H3KzfMmsK6o3a7?=QQz>ge<#~i=VX5+ zk6S!>D4uX$0buzd>`$$9JH;CI)s3l}`t>^SJF=l0Z zmEseB&#H^xuv-$mDCo#zfA5Y1r9nS?%r!U|x0gNWyIb+n_jr$6pI^|z{cVpWqL-D0 zoaEwaywG4hXU+=cK1chijN@V6DtEW^S}lqdsnN;$IN@OB;gt##e;Zi7?YZt0*5__6 zJUOauYwy#Otl#q33ky7$cd#T|zO(zu@-cK{-LjWVOS_}acck)*yzUg0zx0Ytx^H)z z`x>4Ez2ZsPZZdH#^ITQ;J6PQbw3}Mak~?3`@%6(L$-sGgijVv8$7$YrE3iL(ZpA8R zmGgyK`ATUX9RbIi|J?g=lKJtv!kC?tzLoqqd#|-u{=;HzO}zuVo9s2z`>H2j|0;T1 zfAW=MeTUhtZ#>UWyw$X6?u(OugLz6UL<47+9_rD*aoxY~-?M_si@yV(U%QoZN!jaV zk6i7lPp5ae&zi*d?{u|Bm`i=|zf{>3W>4hI{4~xUTBMkCcpZCI$_uM1lUV^3i;ATt zoZ8F2S2xE>bHju)&-m5P6sxc7d>MHoul@V2u-Tk_5475tRU02jnJ%p4Ub}8>&B~;0 z6JzEX>|O2t)-gL(ICFy6iOailWTvXG<&yMRsPpA@}e!5oL7CM=_O*`pWA#zyjgvjRfS*Ze59GBPYt}C5=Qtw;S3DM%ezT)92Z@aes z_O+6ft9HA;qp^S1?6TjISGjZ6+HX-eI1#f*Q~A+UuX(MWQ*TBt*wdSKS|LID`&ye> z7hR^#xvH~ZdU)jm-wpG-_N0HiAmg)k>w$jewPjvrMJ5J)Z@d<(o3i({6t0~!r6u;j z6Dh+mDXr+oQg6=Rn*Z|Vj)vHCsYN$e9SxGzVtaDAs3b6?lv6K_tvx>n@6 z!Zlwd;qZPv>4jefD&=J!?TnGVY`t)*#r8D43Y!yB*Bs*F6>r@!>1i2d{bXmKhUzR&rAe;rWel@%%n`~D}{x>MYFx9u6uML)2wb$kAtacGmFd=*DU4J`6gs;*GM7NE% z^QTj#rXJnUYjae~_4bUDCoMEM9^c{VzqdWM>+a0?0y@)vX}edv)t{}vu%5>=xp97j z=aagf&!)v1>z#@3ddKrjQIOT#WM-;FQeoTAb5*~aW9GT647~sF@U|l-WagfqW?N}9 zf7avLd2__NCpxWUw?6sueN=l|`SE)pR{C>3at3LNcCatc|GKV6FleewT~>|GxqGpZ zCl?;oout$7A$(!*=U9HJ_Vh_Ja}00pn=ditQIc)E`mH7Nx|BGRe`KW2GCi1oy01X1 z>(z~YCvJNs^X$BJ_Soa2MuMAqJ$)xh&#v5NXdTf%?@N+x#xlohvpLD1@)$^J!F<#xOIW051GI#ACGg<9Ix4vz>h1Dxgv2=L-Vo<)< z709^Y;?h~Ux+;5vw-o+oxVPx4E!(+@u4C6vv>Yr^nZVN$U$tCZpy)}+v}Y{NCdoxB z?)>{|zD=&n+w|Md-Yr%aQ5jral zyzyu2R}o&F@%P|@Ps&jWAB;YCX=SJcvDrMhSj5_L>t*=$O&x3As_&TaC1SBo{ZhUR z?c}rKZem6G`#RPhnq;#r{)GFE@5`d)G`{X%I4Nq~)>WHD&DpMS)F0k`wf}l<(NE78 zUu>e5Rk_^}I6UW1_>A*$EY}3ypWy9tNSr0ev!69QY_)=P;Uo*C?h=j@(JJ1u2YBqw zSw1)aXV{y<={{lEZ~x3Ef^J8P&wZ6ye?D%jhwYr5qH5WDOv@fDacwf)|Dl0wdgHu-=L9yu3<9UqW=eRds7pn3IyB&F%S?4+K19c)q-T=dpZgQpDY_7Ouyq zPT1*oBO>*Qmb(JqP5X7l-*Y7+OY%jZPhkMIIXwsdwhX!Px{;Umd8^U+6Ea-UnzCpTQRiDM56m_|D_q}F%#cJ&)@NU z#Y!)eAWK`OxRwt14izU-Ut*)Q^W z$6RKK*d^suEYYe6a7?KE!CF=QZ_5c!@%Wg|oT+^ho8L&)zbs&F9a#zntvk^+Ln>(c0uQ@mi705+^c!a{rt$JnqBCapH-PVN}qU z!xA?q{E6JXqvNNChr|A(DlG?3-eSCcWpWe0`qy0r7`DN_34SzPJms_Vq-7Oz z=N_3R{>(D@?#5G|k}4_9aYq))OuYHP* z>RXpClV5Rt!HKPVtsXJ+F6sNkIJx7z|E*~iOD0af!85CM^XfGdnzwxH`!Xk@N@Mr7 zc^{Q{mT4?0aI0J_StzOPxb0DPv5l8wl3Cj~(Ov8*%9rnPhi#ubb>i#_>y2GuZ!d&$ z>h<^+1zt5%JfM7Qrowhd!8?b`6&n+8@h`1-9o@^ByqZ^~SMBM#yxFo-O4z2}DAE0Q zZbw(d`UJVOGkL#*j`_AOvADX%c}7a4tr6paXLHvlMeIM_$L+n8Z{Y+Xr*BJN_Erg3 z6noAN=zVHE$L04_<7<7M_D-sw3?{IC)LO|cb!_$t<}XLR1h4kJiCw8PNoDf`e#0L> zpRLR~I6crfcd6H6>+HopIyTSrXu4@&YroX|s#}qsxA^g=HkWKxxGV2(vgMj3A98X@ zv}h+wp~q)#&6a=s+?VHs{9AYAnPbj(GpCQyuLE~(a`)G<5S>=6)1G|kyUaw#pK6uf z{~0#zILH3h`;Uj+VwGKa=e$1NoBDjSx8mjH(+U<=UHf%KYi^tS!;|U$500F3IC)>->S=XuV7Psuw%sw@Q?Kh<1M6YM1hZ**=7N*h{~Q%;tCPC+{KD52rWPJ{k%w1W z@GWoBG;*Gku}o)JeRUR&9;uR91nh%tvh3M@yXAMl{Xh{t$AhmrYj_Rx~v=5 zHuj`C+uhZ3<}JPXe1FsLh^5m*=2b>)$-Cq>d*Z<)KePV~eygub%4VD9T=$yr*)Owq z&ZR?Z-fJjIPLbUkBKXPUB>Mu3SDCv+zwxh%n~}3lDkRcisnfV!v&?oRQMd*`9#QZM1`!_loF-OM4!LxE?l?&^x@6<&*K8 z^yS;KrDpbB>nRWNShdN7DaPpijfiB1o-zpu`KsrqCr!Nl_)+c+lfWezP7D*j%WAjI zTV`=vfBW{xvXwz=4tI$KFUpm>$MJs0<3FndF5VD5uh=OeyK=J0RpkSvJDFc^f3sY1 zU5ZxK#~s&q_SSa%JhOYY!epZfHxII}KWou;-uI(jr&jd7wLF*NoiDlexBk4dZcX(( z!|VHlX9;9J>d=3`X6@HnnW+0wJN|5P=(u_Q)3!&?zgoU_n!ZKkKZC-A%zw(WZYo|$ zYC7q7q%QT2)|uL=-fZ^QmOT`|aPoSp=F+Tf+j+CpTJ;+4e7rMRGNFF=jv~9Nnk)Cr z#8q@Y+C*K6YAM^ktz7Jd1J@aj@Sp4p|7!W!l%1KnY08F#-EI%Jq|Ayd3)@n3>aR}T z#V0L0pA=Y0WhMPGF^qBfCS*DDNHNdjb-oO0k@>|syL7s_-X1uhQo3e~V0wGr(;Yki z*gm$F_?@=dlwa>n%Fb=mxJx>jnWyFLSTOBN_Qmj~2TiBg=Pp%sOii$Duex|!bg}um zdph@&x}x(P4yyELRe7?!afw+GR(RCOcUe)|133vKmx;`^~q4Dx?zS87ZOefT4akB7f z{0$S$UvxP^M2=N_$~iq1p$pUg>=5Zo%AH;({rJn$XRJ9-F1T_A7929VD=wM*P4s&E zv6GXRdTcQ`m%rHgVLe}#czM8%i?_II^3BEXO}+h2y#KQ4i^m@p%HQ3*N@7a2t#FL5 zy8DH7>*f86Q*(vtIaY+Jd{>d(y}76O!rTRX*}E(ri!QO+H}Pqm+Q+#5H9yL%Bbrqo z-C@6_c+0?%U46mhjK|G=?p0Q+W!2Lh=awbQ^x1u37eCvQWO(`32ChHXl>6pa9dx_? zvc7lr;q9+8tKQtodHd>JqWwL2xyS$H@|D?5vo~)(_Q~S!n!l3E&htK9(rX1<_5C!3uH?F99Ql;GHbi?wC4T7wY4H*6HPXlJ$#Q*1IZ|?IyvdgF1^eJ0Q*$6G*Nokz?XR&(Y z<;e$_wZ6F>%UrMMnLL^KtXg`v{LypfY!U}8)th_%Ov=n_Uz>CJxX$}rrKi_i6L*#w zCp_&=`NZ+O|K$OblY;qa-M+5T5-FdKNq=VUJ!Ag$cj@cvw!e3UwB+4bAGGt2was@G zn;klheUib?ZFq`*cZL6y%=b7Oe~01l=_zMT9#qa2zbJ9uKl$UoosTSy0iCsOnRF590xXHNvb40<<$EWJ|Kl6WiXk+|?%Ric3uBg?UyY8LtF-69F zii@H5W%e8!eVYCA-^s<*HZQCzG>RJSsB0qs__jJNbRo-jl7OqMu}ci@pe(_UnT|=B%ezdltNl zww|-A@!cAJ<^K$N*`AV8v;En#CpkVntGf49ioBV0^a77>cb`1|{`VEXP_;+tq?TFV z+f1d)CblkFD)L~$&hsMcr5%Hu-fBLJ5E2Vwnv>AC)l#|4`cI75rS43t1_td*6EqkX z^qRWw=yTpVhk@Zi-xq0au^+4BcQSeCn!7D{d+I-f`QCV`8d8F;#&Lbu6#P4&U1BhU841ds_W-I zSp0@J=76}g@A$u7#Ve3$LrS+3GiCw2cGdd97B?B$I5%IQDFpKgr(VZ$@i zTvyqhdGd|Zz8}(7>u{H@>nyn;lYVM@fK17sOD9`og#R4=t9|Y8!{pkqL(T`cO@5=jxhXnTFX)QT?!Vz5Wo9)WPhS?bV(Jfv z@9c%@H&Ynq&1H}mu{@I6*}LGw^ZpvoRX1K$eT%)4rpgj4MLxF#>nw@W| zxqcL{oA%zm8kc+G;swi=n@zhuU2yJ2&n;(9C|lo6<*;txdsifql3e&rDd$tZ*o)6E zthP)G-uCoB#r$PYZ27F^_aMWA$eK$0Z(Ht?e$+?_!(S`*%sF zLV)Nd2Pbg`Id|rsZ;#iNYYtN2Juf)~QTKCU1^HiS3%>B*QU2?fonfQ;N*VOh@_D@%2WU|x{C?=GVt6Ro-gNJG!&+v9$_$$e+N9B@ss64-YYp?Ptm%}9t zAF?H~7iHKfUQJ57l(X*1wxS@<>6#qcCwZQ88F0L+?&9;5Y7cXd{}AK$MAqolrSuyQ z)B2t=H&mPw3fwra$jJ66_hysKE%#Uaiutf4{A6Y3ocsfsO8*%y%S>djkP*$_D$t&WFW)+p{xf)GEMaT@qA&e2YR)3rxI@-4Je(Yvq9J@UP8_%U z&#;$WVy|&-iAgj7x%^MBly1XFVTgl$v}=&rNK&&uts%k}GlUlBG$X$>GG0o;>B7Bn~Z6Y~oLj z@@nWg-~D*jwRf+RCyU%*s180fndQljnH`U&@bFxnGx5wV+e6w$k5!7}mDA_>u050> z=(u6+9D%008m4cm)Sp&Wh)4)sypeof;#rr78F%T#58;+?-@Cd6m9%$n?1>WHQWlsM z)q7*h)+vuTF4mlU=f5SeFM7rE1+U|#_y3BEnLTgfWeKaBCrZy6ANr_!ctLJdrv1w| zi;rBs{jou!gwH?daG%-w;&%@}8YYBI^f-LQW!BODK2wh6R~KI``OB-f!AsUNF|+ts zT+FAtMiTuSR_)yHu_jq=wvp$T(?`FD2kNx@YFj7xm`13wzY)ASa_MNlfN8a z@n_!L2kRML&Xb8h;`g87mQ=Ajy+o_rOxp7%x6WLGC}(v{$3aRAOHQ=Wd7pQe+Hqy!IvLg5iNPE zW$WYGFx_ZL#=XhMr_VUe*f-N&G5Awgrljj;!^J1FzcRn#KEL|5Z#v7w&0E4ED`OfD zy(=m@;~_ocLHdTHI&*jVRQ%m|<3B^>uV9hRA9v;cGo0M)_UTzB%lE={#*$;IbP|H=nlELFd}l{<3na%Qbf$1c7LzSxk!$A3=aTZ-lc27XKB<+2&G z7tKlZRG0X^CVAn<2FG*RtWxh8e!LF*u=avSTICwa&AJx$Gv%m194 zW9NMA`^8`8hw3yg)p#yfeKx;H;_cUC$N75S9R9}~m*$fvJ8zAV=3Bnad)SUI`4Hax zeWlV0p=URvukB3mI5qi|{Cn36!C!RuY+;$Oa6=VaOtHi1PwKlb@34!s`TFheifCt( z86p$C*6jAzI@q=0i~Nq`vh2z>SCx&YRjgk8GBUBNV1lyio~JiC6OW0r$lhV>+mkHA zwd<_A&Yo(9Ez!qR-@eOB2)MUwk{@5yxAQMAKbmLR>3{4?Y)(pShsq?Ao&<(7J7vBc zuJ@~7nm+Ff|HF(4vr=X$%)GV7aN@bkjmMdu{C!0_XIGcI zid&9&z^bZ`{r|p5M!eX@v0divt;L_3uXUW+o+!z(Euv~uwz8<_)D!HDM-!(VmD9fV z_KU1s_U*Qq)kdB%-_EgO zmHW9TvrnoW+E%}u#$oBs5ue~p4iWqGv)IF1R z?@@Gm8S^?$*PlnNa&sHEe9_r+y(W2~%l+HCQkSh{o}+v8iBiQAW&1x@l+PTq63a=R zm2#O~zR~8M!N+ymSGhjTn$z@tF*ME3B&El8* zS(O_PE-%^3oxfT7kv{Jaw_k5Gue{Y+ce`Kj-Xk^Zy{9^5gy$XH?0d{Zt6pJag?{8^ zx03tfdv`tf;4|^vlaE`uh3dV;&K4&6KHM+l@j>@LL#N5B_(Ut_nJwtl9Z>t@THi=(8$rE=69=ZT}fA z72LnH)9AR0xyxtox4#{fFK`wutXL;m>1#WuzVH>NKpeYI>3X?yMcbPzU)X(F+iIkC zqtW-o;+eHe=S-KLrg8dh&>45vz^k1v7{1$t8Ya(+EbJ0g`^DLI-h0bsw~cG!XIHD8 z?6NrUd0qXl#2w849v^%=Z|my^f93ouWn~2qeo~zMig%0njIEa*R0K?9osvD_xsA!X zn?{0v@36{Uef{WQJJavL%QF5KEpzuR`f=#>$MBVZ+cWKiKZ++V{4BmA^jyk>YNaOQ z3tZc;JpJue&{J(9#okv}a@Co*Xf+?Fep8qU+r*UiX_6Ifth3*|$27knCq_Pe1-t*XYE?Nmec$=h(O>_-V$}Zm4zp z()KaRS0zYAtSQ3JzFkE4tgt|lxr*7hj~mW^ztcA*G_JKg+MqsgPhj!GZ0=aATefz& zZjPJGcSY!>ZQbS)8u5+y;_;o^w^`;S+gvS~xRY~v zqI-9Kmj2IhN6Ge#@tmFqA1{mabrqH_);J(=WP`-pd!1de1y)HLI}CGD{%~_O&u!8_`Cqv@M`-Lc`Du8>=l)i1 z*2%F}K8-sR-tl?w&E@F7J|Dh*Jrne*>{pM` zs;QBBxo_X^+0(Z#A!6D07e5ysesJx0Ro%)ZuQu2J41JX)SCN0@jq%SO1Iv=6bM6vf zbskGT-ua#IE zi?yzlzMN;@n_BTp|8`i-`c_kaDQWxExdtC?PuzG_<+gQw#_46ZSA2NaD9vxLes)@{C(qCMbDxWm%@mjpsj?vTbMC%XsQ{Le;&EOEUabkFBp2n{WKM zV8YMf6MOe+U5eRmTka|F{dI`v)+D<#xpSZHzhdjUHo`ykVYOK34Ozv^CziLYL>+(j zUFB`?V>V7%v-Ty=q`n*LkNs!x{nEK4aH;>_$wiCxwg>y_L>D*2*J$cE|9jgj`Eq9k ztJ$tHqp5ovD&k+NY@e>UZtHLE8Pio4U5fsg-}vsapd0`9xd%k|JzscdQGd|IFSYtE zmld~Pdi!wmmYHRhtKRN<^Ze6HWx3kZ<+nLJe)S#~srY!K&(C%G_Od9^-KM{9WlT8v zN-bbl`7B1sd@Z%?o&JZdnD6x@-M%30KD*-dt0@z;A}jPN*G?5UcKx5zq2Hb-Jp|HE z`h4>9-uUOpqq$4=s|Dt#&%gV6pYHYhAHG|y+r08;dq$skr|R8bDVP36#rA)Bf8pNg zm-W4Q4?jP>cy4~)abDdoEAs^So}W>8{AFoz{?fGH;W^*%`WT zwPwdO^-6b7+P&na%Bc{Cx#lGgKEKNhm@{|g+vJ!38Ct?4X2eIYo!KjWW?Q^a)>M`4=`T-N zz%nKIY){$w@9qA{-(SY;tVz|sRi5ym9`+ds`uvTFX| zTIj{6H}k%vrY>*cJO_65^-)oh*Eh}HQNDtm`M&K6V^w;MUt)nlG=@=6`p zu1;_J8~Abhw>kYwUT)$)q?{Bf@}J?6;EkI4xmEM*`xb7$`J}QgTz{MTyzj@~$EMFu zm%jZsn`IMAdTOtDu_XiJookG5@3CH5@Zssqjq`pTyY%7hq&J?AX1u*{@+!xtkPWvu zCGPgjzcl&XzWoPGj)fa%7JDen5BTu)+M^SlYHMrPY_OShNQANS=lkDbx$FKjoCu2R z+q!JFNwD+NjLFeVJRfe|j*&RPY&q-V`PqWZOD3kvw8JR+g3H_ zx}Z;Y$Gu-?RVKP8P4ZZ}?}$|W)^4Y6Z-0@B+fnse)@P%B{tfatbHd|#RrhUPFgtQWwp55& z-;Rpwd6r%A=qo0D?lAI8hie!V$)b;p})>8DPMteMDE)fT40PbnmVNdBg-s^0#Y&SLp^cY(U_ZiOje7;z8 zz4GzD#$vWx^FOK7)D*r?>vsHA`)~*M?A6w5(_R+Dc~ANgQNWTh78zK{AXf9zN%Tq(JoQFP+lwb`*V>hDZkbK>~(n)LO4R|1yk?v%{Fzv`Ch z>Z7V{Giz7)3n-=*Y#($FHZ!|7_6BRpiZSmLWm^l&)FMhe&v(aLY(Y*=v z|EzbgzhPC^Sop(?U2XeU=OZ7bBbHrXw(Zz`rDHcQ=~U-*I{cfuZ&Q>{{?bq43u?8m zy)%_~{88rQQthhN9on{cnkOIes#R{DHerRV=Ypr2CHdQIXV+GTUi`!Q@I}JKwa(Ly zKfM02s9tbG`H43RtCK&8-jPXoYqQH!cT(=zne%!7`fl03KRUPS)^(rId?QK4dCx3D z{~ioWZ|(p7_`#ERVGkNE)$;mE^SU3a<2R`MHNQi5-HiHAtyizDI8yjC%(YA5@El|9 zo$m?Tat|tbc7Ue(CVr zy7Fx1S}PCHym!il%Z@$yxJAbH_Pi4dG++38@fN+gvpUf1R`0R(SzXhs+7>6~Kjocx z|Mj$6Hm+7p8=Tr)QH{LkiIA|ll zd9FZfV$WXvzl!q0Crj&B{klFUcaPe%I=M^9iBF?%-#!+3=wH~xo1WzlioY$oBJPng z`|b2QwGraCT*RvObr!CS;r~;%>snqE=P?e3BNBZ7{_eW4tNw=$~zq)`#&PPM#xBVZUPO6lJ|rk56lq zRLi&6ZFjn@_))cgqM|~b8qbv1SJnrxA1l5QuJb4B@A5o*Eu+h}=|0!C+>N^7n^>7& zD*0rOk#_&fSx@Iky_KCfsoE!j!SKn7liy`EGx)qt-DH;twHN8-T^4dux>!j;{mZ{C zCbH}L`z{#m{2_7TY;vH?hPa)7Sv8~_KCLJ`=l{AvGm7hCOo8l(M(OorOv#xiN-+HMw}~$ro{zZRgp3P5#Q}8~Eh1No8y< zr?$$2sYd*XZ}va`S2vGezU@inzVPX%-!?vXZ;o}JS1^Z(&2kM(P4|_;U)PKzDyoBW zr~jrsn&amoI0{T)FAj>_@XL_RRJ)xt+mq=&0CirUieQ zit2o``VVOSnR@rH-^U{#I)vk9T~a(5Z87QouVaiRp?VXtpKQDR%5T3;;lcHlQEv)9 zGv7_k(>))1@yv{geh%-d0+yV4lwGoZRg~6(zGvT$Z9Cnxult3b*-A-;%8gHYe$P8J z_0awL8`d1#K9)DW(_1pj*Xg2M*q!*G4@c5mZH=Erd$d%4(6-=CYvUKl{B9Pl^YyLm zqr^7uM`4WZl5(zJeAs0-)qTs+?{y6)Y{kV zp0{mr=pU_9v%_S)gQi&eHPi{+A35vshQty-9PqaF@LJAhSV)$8*&ylORCi*VF6gr>zciFda`~M8t3+{T%|1~ot=&TBWZTK+%7C*@xkcCtOn&$CH=G&jpq{Lnu+v9jYF*SF6ua4Rr6-?5J& z_ecqQSGvWzZA#7W9Io%<`RKMHpkn?pPAUDTy)$N9wn^ahDg6C7(T3T1&iyD}N0!Wb z&n*_=AEV|T{d*?jWE#^wQ@f{AQ-bV2ug}Y@IQi}HSMenoU-G#tvP2`koaOi4k)pEg zgwV^4pXy)rpQ~^G74R$j-kDFHZE^93Ggu7bqF(-sU`&d>k$d|;gHQR!WLX1;-@z-w zJ)-lsg%+=S8I;o%zuWq)a}38A4RW?4%uWJaZBrHYPMk|x8dp3 zsRk)IpF%`s`a&I-OxpOLA(MZlz5ko7);FR~aqBV_%-()7BUkq>8{^%LOB{;a*ZLV1 zJoLL1y3Ur(sC={fl3J~OJNHH``)J<2XH!*V>_4+4`?p;TXX@^R71gua-Jg8%kM4uD z+=sqjI4rvK$gS1A7f#n_Y>wS|p6%WRA?5!Jul(HZlq_BUpJDy?e@Bb*zs*W_-*rVo zC%3XbuYAkIHC4TL+-2h)CF$n+|6RrJXB`Ym9lr!K{MYDpK{qN|3+O;-Zv?p_g3aD8J(gt(=ML3Y5#r6 zS3&3P=cC$%KlVSf7k@kRZ~pOphS!x1v*MJlq;=)9&oF8hS+{&24S;ghM1@o#(c@{jL)d_}pt?40pI_7x}I zMz?RRf8c8N<;X4Z%l{eJ{k8WlowjzpM7WxDZPw|N2hQvKo5^sD&rARI-OT;<7t(c0 z_#f?O`4RUdIwI=)!?!|#J5O%8qJHIFM8e!jT6%Yw|C~O-yztq~qets+i+cTMP@nR; zN^Rxh(^6TxO7BjewR=(KgNi>_U+yetocQnSWd8+Qv?ekfka#?Yt61QP9DAIGq^!>J zJB61`droSoBuo5f&|(V{UzT;NZEDGOsnk2)Ca;%%IHAdX<9B%xncz1SPo`9*FRO@u z9kw&&@b9XtrP6rw za+(#rN;)x~FJw&`Vl!F}g4D+Bx8yDK&ylX~Cz#J+#m5v`(a z7kM}Kf48rC)24BFaku(Jompvx8=DF*KU?9@ZRQvLZB3H$tOF+h*gvej-?3Gr`DWJH z<@ukU?%237^W2*hg(rHCKe@4+Y?{i}@3G~VXNqF?M?0yHcP6D@yC`iMu>af2r0DI1 z^Y)Z1%zyq{>OaG6j`$_F^rz4GWB&M9a+~z?O%CodMcKK({~g=^?ev3Rl@D(_yfklK zH@BVPRh|0Q#(hs*FTZt~|NIyG^iM2T{!Py;7cg1<@NcnCz?_(u-wR$9Xr2%1a@q0v zvikBU>v)AHDgKwWXI^u=yeIf!_ko`96#EtYs9Ag_@3B^U z$$xTd+2wb0-I;%Io&F8sTK$jz8D?&^F|O8n((vK!RQs=*%D*ladt8~ndF6xoE2=~f z?A>gt&b;71lQPkLf|QS3{t7#rUb%DeLRnq+r+z=-viNb~SN?lllgt@p znGfGn{AhaQ(v8T|1uLh|dzHp5Qup*pzQ^Csj_2;5$m(sIxHP81>B1}d-pi%GH5rT? zvpjFP)q16M96Q2L#b#TTY$Ezw%+szp_?39`eYv`34V9|R%Om!`K9W8ErQhl&Q7P~3 zmi$O9d4K3&;;NVfeBu6@tW#&p9lgeS=RZSILFQHcv`24_{pda(r+Qs)Qe>&-+Qg3B z?b|jd^BAmnAsW71el4fpRK+QQyFQpLE!1!S&mj3|t>L9hf-kOYmA1Y;BZcLwVvK@v zr`CO7}# z&CO=_f5+IU^nZN*HoCXkTr5rBZiDKMdA8i1y8;ziP8XIw%~Rg#ohauof9CA>1wR%} zkv6_|&-CNFwIxayFHU>7BmT`>Tbn!o89GDuRlMFc^=X&%%ZQwNlE3z@JF0j!Iy&OS zSKgrCCxY1jGlU*7R(c9^DkqXlVh>Ao|vn&gEilshM5Xx*`i)I)qZ-M zs<1z9_^RsE;Z^l1FD?nsNZ)*JPP=j@>mwHBs#KBP3AYX8G(SG?*yEhFEjU(n-i*b9nb$m@+*bI{!0`IJrAejg zwYI?j45#%j?weDwIrwsTNUohVugRx;Q_gF*bOh%f*vZmAf!BNLmo>F|H}_xoH|IyX z&&IA-Kh}4+xz8*wto}Q9$+3c3ZDW3;kB7d-ow89&T*5n z`+iBf>Y=;#T{&iP;%3A0_w&BUi2rAZobvSF;>fg8?jr^-KK%jZ%e{bv;`&Ifo_H6m$7vgWqOrPFcaqHX~_brA!E$S1GRef2$ z{Pw^93}5tD#ot&TH1G7`ve(t7SNmI(XR!A@`gA4!b@-C6<-GIt?T%a6-PQP5d^i5- zO#AqolC$5hl;hvE!*$=48pqW$et4GFY8`u~az1!#nTJ&gzxScN3*J94v|I2a=+K?D z+k4cS?r!|g;QjDE-`bw${{IX`ZaH;rUB~}S|8AWBaI^R$ec2z@0Y%M+tk$jC?e+d@ z>C3w_CQrH@-kQJh_`yYw<#RXd#q}FbWztWtA2dgKZT$7}@$%x~4;=PUi8`v(-_k4S)u~S==ar4&A2iYe^oNRGjanDs_ z-o2*}X4KobpU&SG&N6>;)Pz$-v4%&N_uC|AZ%zEDwxH~bkXMTQ=4aDi9)D0euU^?= z->M%^MVi-e8XjMFP0#*cl>b8Z7t22uJ6x|1s>v)^8XY$^^BZwCt-I2D*rFwauD8TmfqNc6lp^0SVm zpW;lse0$#29;*-A+fCyI<2>1Brt2O$FfaG8-c`Y4{5p{xfxjkRYA#{EVG^tFvSqV( z`nC&i*IZ?6yC3y2TDz&<@FxG#h$oZmefTm|_0RucU2x;=9vxo4bh$)*4@FZ65l%eCu-ejh0ITU; z{~1JgY<>NE=I%EacE1vKQQqw@=qaR-Qhk^0euVquMQ6oztP0 zf#-s&tyVfacl5o=STyaeUf#rmZJO(nuB631IhvWbNT7D^=dLA56V`58n;vrM!Om&- zBdcsltEie8{~4}o$-i`)QQ7z9JZDAmp*PdLQ<=^l zyM4Ck7w1&}WZ5k|$K1ZL%`(`#_di2ps`iW8N+DmF+?7YpU1v@ym%2FfU0#vB?%p01 z5&wM_%a_K#WsH0-r|>I$<`gS!@uuYkX7HY$vyk(H{AKp!2Fi|V4U!_x%Qh(UUQ!eVNlWgb@o7h zzLsi)vi)~!!H<#0pPb6SxFmb)7Tsm%SGx3y%eU_MsC>{Q`Nr)V?ptcNhk5_KB=$Zv z;HG3!_U&A|^iOTy=AHNOE|^=Hz1F!f@t^3Tx&Ilqas6kg(yXmJvH5WEqq}BhJx@CS zWa`-eXIP)N`WN%}Wsmi}|43a=vi{E?{6qg-<$BZoJf{^{SSFqO&k$y7`14t5kb839 zmkRIuKlwk2%CC_3SJLoZlXF+{?H}#5p8CW4+?clqWEA|Ye{%avU}p8wT950hd-iVM z@$bxK<(Rc^KR6dXdFa#EC8l!V*ood#g4Z^V2M^NrsGPix&ewK|35C3O){riQ?{q=7$^OgIoZ>%d7 z-Rb?ir;@)mTlU??qN;wS`!n7K6fr7qU%`_$_v`-eKNZD~|NiTGPw8q&FW(>k^;uD+ zt$(r#ZcS;Aydv;bqO*{N_uHe{&DrZ;rF>uiMq~DCzSbX}0u_so_v)4Pt6lbQg4uaHMW-FFq?~q2$nNHvZ~8K# zWOwTRf5JbW%5-dboq3Z(|7n)lyYM;1okki(b(c-otud|Z`*BD?KB89Hp@C2B%2thu ze$~87`@byn^IvkXFz#@P{<1o$U9(&#ANhXk$VB-^YRyYd7R)^^w2eXGcVCgAbGh%5 zw3o4LukO1GWSR%RoTc6~E3lbmd)T*&Zv3e!Ms1e%XAFD(1>Z0Ez5kDadivCgZig#d zxR-3bvZzt^deP5t!!t{2AE!w^DV+0I?#th@)Qu4bV)*{PmJ|#SJ#5r={L`EVe?K}L z;a@VZrRJis#gZ?UkC&V9)CA`-9u=17+3?DE-WQ&N2XiJ>)kmp)b9unz|JLF7O_sul z;{}Bi_?hRFiS{`3S2&mg{0+D3ov#>5F? zhl1zN6KlWHedx@efbH;KF;sH`N_tAZTh2M{@<59IeS#h{c*n(i{bKa(*uS*byoi07oMEm zCBDDI^xMwpnWk&qKQgol{nPx;eB-$#+jir^y#ddTzjE)(jS&4PdgZ8_{i~)sh5s2o zG6!z??(oPx@K@tw@72NSW?OCd@EHZ&Q`vrp<3-KZnC9Ps&tsJ}7R2*aI3KA~Y<*X< z*C;YK*e>-?!p6 zTJVDh2Sq#csw?L?ZTNjHH0{xmTlcTLZklxb;cm6da)q7mpUpX6Ywow%T+2>e4`MV6Y=^lCZYGv;uK8AO#TfAl0mD1d# zO#VgUGoK~Zzm1u7>BOaXZ2|Gj75k>uI!&nTerW41@#2)|{-omHU6W6U`rov+Us`9s zQ{q3v!|ojnf6f=ZCjV!MHm+BS^^g5fy4$O?H~et9x#jV{@sGCN+`wKG znZ(}z^zq-!L%#Wc{xe(<{vmSjZ{!7?g<`u3KJvcZweDap%fw8x!*6tteX@J&>Sp-; zFK?ST{}~h?)^1i@_VU)e ztt)hw&CV>XEmiz-TqO1G-t(fC{!ja+AKYl~VUsgk=-YkY%QqVo^-V35bE+Q~D!+BQ zf0%Xs{Ms?&+yfM`LBSixLa;Pp-Xa0*7Llq6Y8=)UC;NjPA*mXKf~ESfhF6;-ES`1 z>fG?}F0Uxd-}rA%JI&w!Vm+B^w^BMwd{^r84n_Anrv9S$q`6uDGrYXblWMz3bN%$) z|DqgTfBbu6U+}|~$^x_RFV{Kp;P~<%VcARNnOySfzHFI(=s&}WYyTNkPn1~P@XjrK zsGaHWnf#&l&SXvbyL|rkRh+B8{&n27aDn-)LwQsFI$ob<*xDu`?zSoM_I&TUoy+_m z{%3IE`Wb)4y_&B#CH|w7dPB+ggJ+`7?N?i9VA~nz`0}sjkL@r2GXxa6E}tR)pCQMisK|b{boIA|WB2YH+I(Z1y4#u>hD{6>fDj-6BkF{ zULm`22TyvJsr>OT?7wf;Uftf!!}sm*tB|#gXMRncx~a+T`15~dDc65BeE-jIX?lO; zM3KGIdl+rz{5Z$pU(+Bjzg2qje})H|YDM?%M~ky%Jp9$l8Q73;J$HRU@m+42zZ)I5 zzyHIwk9F3ZsGQB7YCHMbz6Tko{&9XdbM3n5`y~^8MZaUeH)-;Jh78SpjXH1s=(UDv z=QHjLnB%-KK92vd`_goY-~SmDgQhRKoVnO|r?35?H_;hf^SJjGA1~ni_SR>y_Z=l#0h{$~h0DH4+WYX1r8gzd9bCdHpFtX$w(acNuR zSALG81rPq5%v890e=ECaVo-*ZF5k(uHUAm@No;6x@;LNE>7Cm-KMsDidlj#bn}jIc z+-cHjrSqNh?-JcxHI)TNS0B;OV>5i&b%@7ZfPLA!if3!4ZT-*Sa>H%mlDqFJlP{Y} z%vi?L|L}$~tMR1eCz4)qJZS4ZX0>wVNqtARtj~w+MD{hV&ok**9Q)(*+jnssH|qN= zp0<}2Pu!+tze`giRZYW=;X~^chr^Y{JS{0YRd;)i)L#9w_*YuL_$N{O1FrKg)vBM0 zo@S@AueUE$q3e=?`+tV;^Cj|IMaBL$p8k-vC1Z`riKBf@lQJh6J&M-n*MDrve(+q{ aE`?Q(f3H5CwWuX||L6YFSEr?ih@2EVzPh?d>8wGDMA11(mFFs!U8fA57#x})C_3?|Xn=^IV8FBuF0A3I zC!_=dc{&=Hp2?;N23$MZuwum?xr*a=KcBmu|Nivu+Ptgl->=;l8XGGAk70tH(d0=& z35*OvH&@EYt4F&96mT$q=UBifCeR=kkh&>oQqG<|cMjU$YUgD5IO)4d<<@_NH|qU4 z++3DzU})Ggp`^lvOIz?^F^BYqNfs+P&MVqXnmDV);7+qaZ?lfTLq$3F^~TeWKYabC zF1KfXzbu1>4MT;|4fg4$CWHt<<1P3tXSIW%pJgxaOaQUcdJeC`~3 zEZ7oy=zo~{ulzG9ZT0In9%D z_Um8jR?_2q)5u)lF2`0>bj*SMqr(G^JweLG6aTXv$cqjVQ#Z3xo0`}>Cu9lR;nuU4 zE+xEp`Qp`wOaIM}?Oy!4ySBXi?K{UsdmjHU*NNn2xa{`i&+mU-t+wn7Uh^@0Y22U0 zb)E6SeSQajW9{C_`{MY|zBXv!_`%5A!I-JQAJU+C z3j<#$ny{XA&R=-mfJ^PLNd#9|)7C`c8*F9Ge;=GJFqy-Xe)#7H#vM%Sn*9&Oeh~d( zX2VzfF#LlM*8&d>D=)F7okor~7up0WuFw!+-zps1q2+#c;jO^ED;%%biimG*_|=}ln{`!;^-uDQqb9u`;_&apbj z^t?0qQBWc4j^rJacbwi~c!%em^1PPm2VXyw{is-BX2&1jmwz<=Q2)d9kJ>DZO-cuQ z9(Z;rqzHO(@V3Mqiao@W*s9?Xq826ax1;dL-6LE{)*q!la(vySvQu5}I_EBkTYT=q z29wlT+`4^XF4nHn%XGQ8Ii)$+InuepIpam1T?#Bw-NkL&80Tc~JbyvG*hHa?f}J8a z)i3E8scq8HQq0no(u~r$rD&!1E3!xNnSz*pna7&wH!CfoVtnsJ+c^Je`C{zp8jmU~E;VYvv{USqdx>`o>^!?e% z<$BahHFBxn(|uZDS6xiwzV3L{A+;uLh1lY-rDfr=Vdg>oq4w+SRyAHUxSEiCCDSKs zl4-8VWz*Xx%eTCUdKXn0bvJ7LR?#iaTlh2iv+6G!Uh%w;d7*NR_LA4DW-q_J`gfSW zZ~xNprRDMS7rkGx-+RCN|K7%3j!O=5HnX>dIP)Lg+xE9DzPG2>!tJfw=VM&Q5|3Ry zHd)O?SbuWTWa(uR!O@pvmx=q>&y<|Gbk4JPjqI8 zZ5500ZcCl<)PGuxcBJ;Q(79KOvnyY7ymosXDIGf7V)kUS^|_@vmfPlTJ6)DmX8q>Z zo4{{=-&(&N=5ylv$2XPlyv$RX#j>|$#OLzN-DdsOGI`G3IsBIXyF7Moh>403i|vgq z-@&(I;@z6NT6gE|UcIyUPPJ_Ue|Z04Ie#;)yp;Sm-&p49&1<)vU!_^CTK)G`@7Hgi z)_tmbxcK$t$Hp(bzutXy`_=D*=dZ0l@_ys~uKHQ^^$hh684lhDiWbx+WGa|@SZBCj zc$@I?!Hoy=1Y$fKJd#gbQfv2hH#^%R)h5>BmlJkx&d#6D#6IeBM(gE0y?^RXl^Kt) zn8Y=yZ>=v+u1VHw-Q5!2uD|I`gnQ(Ar8UZ@l%6T;DtRlXFV z+H6&M&$uT$3Z;SWeIB5#Twqa+40wM zwk3Z%fBWL?$lJe*Q;N%;`@G$7GjO-?Ey;bG>!<%&_b1kPr{B)AyE}J3F28^B@=5Kp z)%(>8{PXvP)aCvA!tZClMf8Jc0hikMS?|~W6#Sd~rvLEoFW+Tve_v~`=tI~|RXMd)f4kcn+78b5t;@?4$=AvHbL&XnBeUNo{97cpZ`tCt zZQ7QDxtY12)t&wO=4`URdU@T=xZ95JHLQ63md~yG>3u_AIQ`DKFY`?;Z`b*Kj44&$ zx_JZlt5dI{-t@hE_KoFx&%AQm`}ec&-Tt}y+InB{6#bA`k$n+GofVq@FTHyD=CpUM zXDxU5qV+!C^WWCjn7(-Rm+^h$!|c54c`@aC>Pj!9efY%NEiIlm>#j}x=_g^|a~I!^ zb#8N>Th8;ogio5c{I2P~+r~*&m#lXsez`Q`>W!(@-@dQAU%s=xy5{kZ7cKvfG@rcS z`L4Nxy_jEEZeQh;e;H2;-wB_Yd}uk7|LOUjcB_B;e%;QuPVoDqDSxkAD8B!^e|hBP z^>zL~|DN{w$9<~%Q{>E>(=7MyFScK}`udl94{HBUx_)Uhf2VxdG;aH@+MItWpE5rbKX`s~YLEU7ebM;P z{om?}e}79cEi5(dJejyIlTqZ-p};_fJ-JK`LOcwj7h8_(E9Kp3#uRmZFURL866Y(w z$?sWbeBH>6;mUW$2kE>G)|bMcGA(E^uzzIp^L6`~(+&=Sy!j)zU5psgI<2j^>uqLGN}vR^fA3~_2XNA`zfcp|J?n@ zT2{BGxB2OX7YqyxoCO|{#S9GG!XV7ZFl&wk0|WOBPZ!6K4A#9-nZ+?jMfYybaC_~s zE$8&KiEnSPY)CyWeMEDbibbQ+jvK3kIFD|BqP`?Zb5g&i)>N;hpO_!zKM8i4Xd%E6 zz%=`)n1q2R>+Oc#wXsf{)?CamS$wnT+}rZ|)y7h}Y73A0l;7X?{9f_y{O_;L)q+-r z9MPWm@Y9dWffJXzC|N5BWtJ56xqsL=%Xf?Nl-4eN?w2n&d|lgi;d-p?KBcE~Jic^! z{Jg1qab0>w>kAHMi4**9dX7&z@2WhJS?lSHpPO$refZrHF3$3H&A<5{7Zj|EIAy<4 zcjsFp<_;clcl!>HFAa+~^Bm6F_u}g1wd&Cd>o+t`CIEx-TIg^OENSa;R_ z!i3px?p_ZT&p)+w+uD57uWMvgtGf@}diZonPp#PG*=N2)`um(Y5v{JT<2}#pUum9$ zoBR6kn?=`T`#0piik|fhrznbr|2a?Y!tR-3$0KJT^L@#(J;AKW#bK0)t_KxUrr zsmA8prn!?&&Ny@K+0&f=sWTO8?FT zFY|Gf$d!M*RbBn^qeIZqB1( z+gloHH#1MDUbCe^%yPEr7o~DH9KbK!VVY<_iiesil6WQ$+xTen&(xF2+R>I$rm+#Z&YquYY~N#b)Nd?+4^;7alS$O8%Glu=!-a)=7;b ziwBQtB$HS7I_AzV@}G8I^vRvy%|=#l&Q&)@+}*h`l<)3F-sK^eT-L=MTXyps>(Rv-uYP{^PZe3V{OIx@U6((!mG)TicFwr7t-RZ(ZsJO- znO8Uz;%{H=Om}R)9h?x>9d28r`+Pr(`^+S_O-I*!x};vXZp!qUm)x0s=HAiH(GJs& z_iy6A+xunSkvm`cqBbPhlvvF^chY*fp01jI+6C+1?;2#>Hdkj?$L?WWB0Xz@)c?;% zD?P=HEcO<#RR4QiQIqH<)991v_e^ZlB(H5*1``h`Y3?}G5OAh5yL*Y_zcVXOPdYDN zYSSj2vGPQ+c}RiO-hKtG?cY7h`SX{qt5DnO{CW$q%0PX$eSd8eo6T<^)PcTB?49M5OlHCE<*?$7mGnH_HM`E${(wm%bhmus;9 z&ho9S>{qa>$aiRCUtVjIdvTksc!c zh?0CXSQ*E>_n$|{$YaW{+PeNv+np3u08r} zSNQk(NG%unQ}g5Af_tsozHRwk=V{YlaxQ6GvFaa=#z*Trj`v3{bz0x`I&#e{v!!#>=AONw;kyFdx(@90{(HbaHSf@xHWsfr1$U3Ua@^1HC@72P*VCf2JyQjF z>{)l(Oq;mhrkd}`=}Y&nDQVuZkgrKu?-I>5=~&hSb*Y(q`naY4iE+7lK0fg{>%Gkl zt@_`eQ}4K~_g0%dd0*W`cDZ}Hdw*|V@qX$b>2Pii%_mR$*LBA}n&G7IR(84-^TLlG zH%3;z^OyI`yO(?8OikFk`afx&B~wiDU$z{%|NlquXZ7z-%T|~Ob)UG{Uas_`U!Xy{ z?&p!pv+wWyjh$03s`q^Uwv(LM3KxaU_12&KrJ4MB%91Br50~!v`-)q<_S4B@J8Zr^ ziMzRFr|WvQ#663j?>qd%CD})=zG!~VjVq5vN_#L7gfAx?hxlZ z`ZreeDlN1ZI1Pkv0>urK~` z{?@*S*^zr#8SL9OSB3r%{qx#T>WtN7#xpM&|Nms&yi}8kvHie}_rd9|HYFCf{lxEQ zA8r4V{r9onlM`027?7Y@(UW6N~Oy2`?D`osn+NJM&vk*6;MQyzkGB z{oNoGm$>?ay#CZXq62tfuzvXYM&fYa! z_UEdLM`b@JZ_T{&?dRil%NVl%Cam;4WH%>P+IZ$wpKgPBzh9mWXIpjRb4QA%$f-}~ zpX;Ce(eeEfzx>u8(jVW?V~!K>;^|rK$;voUq4ZC~4!^klE!xLUPG@_v`SWG7$W5QG z@mYR59DArdZJJV3#nYeXQ*&CbbKT&5m>Z-K-CZBsxN7E#nV~a2hbzCiU{DfvAolrJ z@%5*s`ZtH4T>pLDWb5~@r}goA#u%3=aD3l(Tp{l7Yf(x0XWgC~UfI1g{ncN@FK{MG z{`$ggeFqifZ~mFlmnh+47eC>8yu^fs=bPi7=iS`y_wI+^bZ@~ITedxR{Wmc;)NxPQ zqgBf$-!!_NsAsjUss4{uuVve$s}HxG)Y+;NyCv+CYvp6sJxBP@{mk6_`$3gu&3U!$ zS!vRl)1u~2Sls_5g!N*1lEXfU$NLrU%&33#!R=YD%j%6xc7ZmArJ2qyKJ(Z2t^Z#e zpyqa`e^*b!`?s%C|4%%p`f+7n%bnjJe5?2u)olzYG;@3YA!Z|UV(GtFD`kecv1cX- zPuQ?sN$YdZ!5!<`#AViBtW|GI$-1-GbmEzR`K71k9ey2tWP7Q}iM{-}Yq=gh={~$m zDDP3&w|q&5bvyia-_ftCcKGfnJM)=F$qsS9zsV8n{MqaiWOu9%&bv4LlI<3ud5?A9 z8vgvY@hr!oz4MAx{q|WbvhP~U<}dr(pw%c(v}x&PVaNKiCteB9bf;R}-pya`apmVU z=kFz_&fU#j^*HT9(7}giwmtN1*Dn0t>?p9Czx2hbfPBmUZP#~&oO7wGf5o5v;aMrm zb>6eF_kt(ruUl~PxWLpftd@o~&p1@wV-ShY^ayGwumFePBv#~9>=2};{^?}bF zxxQN!R4eQ^9g>W=Xa6ywXwHli`M>MFOTAiL<*lN~_3`7G1)%d5P_WUaP*Bn|{Yc95CO7y}6pM(FEZMK!M<>&lw m-1*r5{`YSCNj7i)i{DN!yU@c_#>2qCz~JfX=d#Wzp$Py)&=s!$ diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(17) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(17) deleted file mode 100644 index b8295e6d70ea5a9202dac2329f07a0f01aa263c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7V36csV_;y=)_xbuz`(#+;1OBOz@U){!i>Au z{-|bPV0z=};uzw=yEe>o-7NNUR9j8`^kSEv{)x|z&VKa_6q)6> z++KvOPJ60Xr6PW^Zz#Blya*>1smr=NZ*Z;f2{_WSPxNgEg3&2zV#|9+;-e)0F; zf8U+T|9xdh*P(|7_l&y|C8SK4_C)9e8OA`y7k&?Q`TljJ|;``jTG<*~$0cKex&x$aAo8 zRIa|7WhOXL`7(2}`cFvw{N|Um}ms!DN}hMG>>lwzVo8u_=&mS~%gmW8+!ouZFy^VwNZ@_%Xb zLH7KljS|Nv$t~!5AjFYpAKb9L-=l^(VQNI zmN2Om9uB#aSAOO7*BplVwhNa0{byg#B@)J1{f&3;rcHmW588F-Of+`y?)z_j|HiMA lVs`7;qW^a{e0^EG0h*g_tt+3 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(19) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(19) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(2) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(2) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(20) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(20) deleted file mode 100644 index b93f1fd9f575649bc960d016961f4926a6197cb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16019 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 F695aG@0I`n diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(21) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(21) deleted file mode 100644 index 80f60cf5524eeec18b3bd1926cb430174ae2789e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18774 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 C9I!0_ diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(22) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(22) deleted file mode 100644 index 3103eef83438126a4367499557a69bcea0b551aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51818 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(23) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(23) deleted file mode 100644 index c7ee1035b4352f08b16e4aa5c4bb4ffe6ddd0635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1707 zcmex=59-L^6Q@3p0phWnp1vVPj=u17mhh z4mNg9b~ZK+ZVpZ^5Mblr=Hcez0dYWvFoN_jF|jf;vvRSsv4d2QhW{U65aeJmU@%~2 zRAOKfWMmd({C|W&nt_3tfr*&`0od3%SU8zjx&9wvFcn~6Vq|7!W@cn#<^-!?WMXDv z6=Y)As$yY@1DcTd}mT^yEkw8-lq-6eg|)^@eJ`y|@;J$JHA73Tiu_pb;qLBJ09Ge|LW0Vaohh4S?@O7)>dgd z86PdbV#UV*$CG;%3=Xg*?3uaAX5z<54C+hFORH~srY#KL`ZiVc>7rFpQK!wn9qV1X z=#R!HZymLW!wXJ6@G~;7>a-S|v6Y2eTF$;F(96}RSU&Es!5u>xrfuH_Jz*nosfe`wy?{+cxQ;r)Vj!PqDK};=@_$JnNRE7%1Nnytc)f@3M9K z;&oNso_D{-+TM14rSYGk@9j@fyM;^qQnNCzP7!$|x%iYepPsx%%Y>Z1+gn>}X9xOj z`}*#@XHb7&u1@{IiSFu-|E5XiUub@R`eTX?$FzLNDuj@O@#%mF)UMoN6DV>;d{FR>ZktaR<8Xl#;rdB0C zGwO>=5Z5T2-BI)1{?55;nYHV>bF{KvsBXQhoBsaubvegJsWv-Tem>HF^z=s|HV)aW z>^*(&tZQ%TE?;pgwsrHZOPd}VAI;nv{Ww0(QzeOcN&wT!H1*F(o;IDI&-;Fx|E=fy z-{M`m=Zm&1>)m=QZ}aUet<|rxvSgQad?@V|(qBI5i`{dHC@UR!B=XG5Pj=R*h*3JI~f z(C6?Y-^cAR`+>yEV*9-uvl(~D2PIyq$nRYxwEba!0_)?8eqVD}=dsQDn%lMLb^cRT zX7m2w<5vak88;Yy;E+{%GpnyEa^9q^ahi+rgq@8(rX;>wBA;Zn@)zG7--#EiJ1uvG zT|Vhv_(=RmuO!zy_6-GY@^Uwo6>7dF2q{^Lw;r2&Rpg4-v8l>_KIaY!@cG?)Q~1e$ z=g(Irzr)R??t1RL#S$$hsrTjD?3Sw&r~aBX<*c7l@GtSmk3S3Z&wR~{sm{Ern7=T`=wbzgPU?u4|mocGjkT*V6>m9BR8`r5bLEqrUX^zIr3 ke*K$(?rBQ^7}+VRYc+Q;?Q#h1P@KmUId038b4#Q*>R diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(24) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(24) deleted file mode 100644 index 26be2e573023a6d7aa386f4ec00e3ce668453590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6535 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 VXqnHO;|vT844$rjF6*2UngEt{bvyt7 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(3) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(3) deleted file mode 100644 index d6db8278add716dcc7cd153ba1f6127adb2074ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25719 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 IrT@PP0P+V=)Bpeg diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(5) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(5) deleted file mode 100644 index ab515ee0384ebfd71a5c1182325ba3c72c17d19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 zcmex=$<%PwSRFvdYWaQ-K{vTlA=3ww)NMU3Y zWcYuCL56{WnSmK(2LlYSvN5x;GjcHfKf+)tz`)4N%*@2h#>&hJmS<#QW?^6zWD`=e|;a z(=L=SPj2mL{x11DxC$)QrLk!F*W~O!ZpVISMTy*b(&X@5%kJ6Veg?)R*LS!H`7b=g z$7tJrY4gi-E5zUB9GWh(qkXQogM!dwFHQBVeHO>-=a#a~@m{<1h=$0D6amNo45F{D zOi@^y#pxlbGKWFaq&Ix|;{Oc0OA>9;uWu`ycXws#yPxU1y0ZoJboM=3Zn8mWPo?8$ z`Hib?X{?{2|F`Dq#`l+X%5|lGs2GQxzFWx|IN(Vx9i1>Usdm| zo*g;%d<#dizvuQ{x4Yus-Z7f8p#HYp)|7P%zFgfm_3*^HYhtezCmjmgA$BOfa?u(g zZda{Ho9~*(ukF29{;&B}HD}(P_H@-qiOH--y%^-HIsH4ge0#J~r&i@NC_s6LqFZR6W%*1S-H*5c~yN#+|njdb@nf##7_QB@+ z`AhR&t~E~bJ^M6btFSqDOW{t(rwfle)n{!yD1W!>WrwCFtBPPBUvb<;@AuQJO+RTZ zx|bV}r=yXuUCS!g|E9zBb9*x{PrGZlR>$nL>(p)=>myf;-t2HuibPud8_>^ z*5_GdT_?7re)V$Vzw;Yeqw{o>gWA^S^2JC?uW(S*rxPc?s4j-L%BPy zZMb?^Xz_|v@4~Cgr}Mel$-dqYG2_a#)4Rns%Lc1j=ErZnH)X-Junh&buH5)Oy}$j~ zj^$sy*Zf+z)T%Y5H|a__N6-Fzr$rm3q`ZyPSQ9-}mb{lZscE}sPcTQ7|F4GrrIT0A zdX*FT;#;aujOE8ujn+kF|Kc3pHy9q%be$ZQ6>)2=)Xb+|`&{=$JvOIEZ*RykGj11KSN{E7=G9gAmx`|0 za`v#ROXwbZ)$=mOQz|;VtNR?EsQ|{YK@2PDkgdFZThTXr#&Khyz*^0HdW*vxh-50V@ z^4kIDwca_~n0}nNvvA9tKb%JcHc0X|9mrAmWR}eS{Al)_cV)MuS$|LYvEequq~&ut zB;=zyYQ^R)$&$`~yY~8VJJ@F{C_!zJ7&`Vxr`K2{m()u@NzHUidZ1B97?OvN?X?anhU9JxwPm&DpdoI5qonN9Gpsk$D1`P!1mw`ZO5oZqW%yKv*9=#(X@ ziWVM!mHVz7>(Y*WVJO@4B-P-4(*s2hPHDgDIc4Y1O|M`2Ms@0z)x{|mHqTW=&AaUWx|Eww zwGZ|dPk7R?>h7f0F>yXhL@zCwc zwm;4n@k=~ke$iDV&@(Md;%r=CR+jZ8S>5SkThuk&M1;4@zvKBJcuMu+Qx3Nbzs8&e@!@koYmLI4Cdk^wX(jyXP)E>K9U0qnT^r7`&3}M8uEPlQMPh zdv7hQDm~`1viI&Bt&sBR>ZhgEW%oXCUm>~n<@V>f+qwhiy}ciJ##xi$Kz6pje$^zA zMGGvC*=_AQEA;h>c8~VfQ^j(gE)NNG6$$HoB`lnj0Nu`knM&%J;|1%g@#IEAQnWYrKmD+HUZ@Wn^YQGeu+m%xCL! z-m11QGq@R$%k6h?ez^wAyvF#i8d0CdU5c>n+a diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(6) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(6) deleted file mode 100644 index 7787a2ffe075738cfda8f970fd7df117b990a85f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmeAS@N?(olHy`uVBq!ia0y~yU@!+^4mJh`h84FjxiK&>uoOFahH!9jaMW<5bTBY5 z{_u2h49RGGJJY)8kb#KndZUF4lG$g3TBv#_u;(1i%dALay~!BKw}xrAkGuOs$^9ZX zIPL2l#5YLDK07P%WMavejVj3@p&u9RvE9w|{mAK^UDJz2^`C3SoeSL)qkTz4>Uco% zKjpqglcl1Crl%4%U$p5mk>@dC?^EsyF_-o-ynbk6w4Nz{Q}ITnlATLLigo8C&P@G! zSpT%f(U|V~1tvx^OpXEb|FKvUJvKC$$0^v4DUGCbd? z^(ZLn?BB|H(bqeTbc9tVY&F>QD>+f@T4hO@W`fDItuevtJvA-_EUdD0VO_+uW<&qv zJ-HhuWe5L|`5g9AsLMB0FX?V^&%E%vETvQ@9AU0nNm;*uXBxewQfm%bKWD8_zu74ys9_RzqM>%>#f zZQSmwlff_Yt#97N1QW}&_Zy|Uetlbg%N>35 Y=f(DuUQ2Z_FfcH9y85}Sb4q9e0Iksex&QzG diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(7) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(7) deleted file mode 100644 index 010ada03d0422ecf2305b83a5828ceeacc67a040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41243 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 a8G8S?d~{;@Cd0tMz~JfX=d#Wzp$PziGhurG diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(8) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(8) deleted file mode 100644 index 3d3299f304cbd43e05b396b134214ed30b00d69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5707 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 diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(9) b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/SiteIcon(9) deleted file mode 100644 index c76b7e1a14ed393c52cd0556b0b0c482bca2a4ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9518 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 K&t;ucLK6Vif4Twy diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css deleted file mode 100644 index 5600e0e993..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/app.css +++ /dev/null @@ -1,191 +0,0 @@ -body { - font-size: 62.5%; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -a { - color: #BC4378; -} - -.ts-loggedin .ts-openidlogin, -.ts-loggedin .ts-login { - display: none; -} - -form input { - width: 90px; - border: solid 1px #CCC; - height: 24px; -} - -.ts-login input, -.ts-logout input { - font-size: 11px; -} - -form input[type=text], -form input[type=password] { - border-radius: 2px; - padding: 0.1em 0.5em; -} - -form input[type=submit] { - width: auto; -} - -.ts-logout, -.ts-logout form { - font-size: 1.6em; - text-align: center; -} - -.ts-logout form { - display: inline; -} - -#app-list { - background: #F0F4F8; - list-style: none; - padding: 0; margin: 0; -} - -#app-list li { - height: 4.5em; - line-height: 4.5em; - background: url(/bags/common/tiddlers/double_angle_lightblue_42x42.png) no-repeat 90% #F0F4F8; - background-size: 24px 24px; -} - -#app-list li:hover { - cursor: pointer; - background: url(/bags/common/tiddlers/double_angle_lightblue_42x42.png) no-repeat 90% #0082AF; - background-size: 24px 24px; -} - -#app-list li form, -#app-list li a { - display: block; - height: 100%; - font-size: 2em; - text-decoration: none; - color: #8C9DA7; - width: 100%; - font-weight: normal; -} - -#app-list li input { - width: 50%; -} - -#app-list li:hover a { - color: #E56AA0; -} - -.tsbackstage #app-list li:hover a { - color: #fff; -} - -#app-list .app-img { - position: relative; - top: 0.2125em; - margin: 0 1.25em 0 1em; - height: 1.25em; - width: 1.25em; -} - -#app-list .search .app-img { - margin-right: 10px; -} - -.ts-loggedin .login-method:target, -.login-method { - display: none; -} - -.login-method { - display: block; -} -.login-method-hide { - display: none; -} -.login-method p { - padding-bottom: 5px; -} - -.tsbackstage .message { - color: #4C4A54; - display: block; - text-align: center; -} - -.tsbackstage .message a { - text-decoration: none; -} - -.btn { - border-radius: 2px; -} - -.btn-action { - background: #0082AF; - color: #fff; - border: none; -} - -.btn-action:hover { - box-shadow: 0 0 3px rgba(0,0,0,.5); -} - -form input.btn-system { - background: #F8F9F9; - color: #4C4A54; - border: 1px solid rgba(0,0,0,.2); -} - -.btn-system:hover { - color: #000; - cursor: pointer; - box-shadow: 0 0 3px rgba(0,0,0,.25); -} - -.search form { - height: 4.5em; -} - -.search input { - font-size: 1em; - border: none; - outline: none; - padding: 0.2em 0.5em; - background: transparent; - border-radius: 2px; -} - -.search:hover input { - color: #fff; -} - -.search input:focus { - -webkit-box-shadow: inset 0 0 8px rgba(140,157,167,0.75); - -moz-box-shadow: inset 0 0 8px rgba(140,157,167,0.75); - box-shadow: inset 0 0 8px rgba(140,157,167,0.75); -} - -.search:hover input:focus { - -webkit-box-shadow: inset 0 0 8px rgba(255,255,255,0.5); - -moz-box-shadow: inset 0 0 8px rgba(255,255,255,0.5); - box-shadow: inset 0 0 8px rgba(255,255,255,0.5); -} - -.logindetails { - background: #fff; - padding: 1em 1em 2em; - box-shadow: 0 0 6px 0px rgba(0, 0, 0, 0.25); - z-index: 1; - position: relative; - text-align: center; -} - -.logindetails p { - margin: 0; -} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html deleted file mode 100644 index 9cbd6dc670..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js deleted file mode 100644 index 21a26f5c42..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/backstage.js +++ /dev/null @@ -1,360 +0,0 @@ -/*** -Adds the app switcher to a TiddlySpace app. - -Makes use of tw.Stylesheet -Triple licensed under the BSD, MIT and GPL licenses: - http://www.opensource.org/licenses/bsd-license.php - http://www.opensource.org/licenses/mit-license.php - http://www.gnu.org/licenses/gpl.html -***/ -(function() { - -// Add or replace a style sheet -// css argument is a string of CSS rule sets -// options.id is an optional name identifying the style sheet -// options.doc is an optional document reference -// N.B.: Uses DOM methods instead of jQuery to ensure cross-browser comaptibility. -var twStylesheet = function(css, options) { - options = options || {}; - var id = options.id || "backstageStyleSheet"; - var doc = options.doc || document; - var el = doc.getElementById(id); - if(doc.createStyleSheet) { // IE-specific handling - if(el) { - el.parentNode.removeChild(el); - } - doc.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd", - ' '); // fails without   - } else { // modern browsers - if(el) { - el.replaceChild(doc.createTextNode(css), el.firstChild); - } else { - el = doc.createElement("style"); - el.type = "text/css"; - el.id = id; - el.appendChild(doc.createTextNode(css)); - doc.getElementsByTagName("head")[0].appendChild(el); - } - } -}; - -// detect background-size support -// in ', - '', - '
          ', - '
          ', - ''].join(""); - var bubble = document.createElement("div"); - bubble.setAttribute("id", "bs-popup"); - bubble.style.cssText = "visibility:hidden;"; - bubble.className = "bs-popup"; - bubble.innerHTML = html; - body.insertBefore(bubble, link); - - //Terms and Conditions - if (document.getElementById("backstageButton")) { - //backstage area is displayed, so also check for terms acceptance; - var acceptedTermsVersion, - latestTermsVersion = 'v1.0-dec2014', - privacyPolicyOpen = false, - cookiePolicyOpen = false; - - acceptedTermsVersion = getCookie('termsAccepted'); - - if (acceptedTermsVersion !== latestTermsVersion) { - html = 'The tiddlyspace service uses cookies. By using the service, you are agreeing to the Cookie Policy. We have updated tiddlyspace Terms of Service, effective as of 05 December 2014. By using the service you\'re agreeing to the updated terms. OK, got it.'; - var terms = document.createElement('div'); - terms.setAttribute('id', 'bs-terms'); - terms.className = 'ts-terms'; - terms.innerHTML = html; - contentWrapper = document.getElementById('contentWrapper'); - body.insertBefore(terms, contentWrapper); - - addEventListener(document.getElementById("acceptTermsId"), "click", function(ev) { - setCookie('termsAccepted', latestTermsVersion, 365); - terms.style.cssText = "display:none;"; - }); - } - - //Add Service Update Message - html = 'Service Update: ***Please read this important Tiddlyspace service announcement December 5th 2016 ***'; - var serviceUpdate = document.createElement('div'); - serviceUpdate.setAttribute('id', 'bs-serviceUpdate'); - serviceUpdate.className = 'ts-service-update'; - serviceUpdate.innerHTML = html; - contentWrapper = document.getElementById('contentWrapper'); - body.insertBefore(serviceUpdate, contentWrapper); - //End of Service Update Message - - } - //End of Terms and Conditions - - twStylesheet(stylesheet); - - var bubbleFadeInterval; - function fade(el, fadeIn) { - var opacity = fadeIn ? 0 : 1; - if(bubbleFadeInterval) { - clearInterval(bubbleFadeInterval); - } - bubbleFadeInterval = setInterval(function() { - // TODO: IE does not support opacity - el.style.cssText = "opacity:" + opacity; - opacity = fadeIn ? opacity + 0.1 : opacity - 0.1; - if(opacity < 0 || opacity > 1) { - clearInterval(bubbleFadeInterval); - el.style.cssText = fadeIn ? "" : "visibility:hidden;"; - } - }, 25); - } - - addEventListener(link, "mousedown", function(ev) { - ev.preventDefault(); - }, false); - - var bubbleOpen = false; - var toggleBubble = function(ev) { - if(ev.stopPropagation) { - ev.stopPropagation(); - } else { - ev.cancelBubble = false; - } - if(bubbleOpen) { - fade(bubble, false); - } else { - fade(bubble, true); - } - bubbleOpen = !bubbleOpen; - }; - - addEventListener(link, "click", toggleBubble); - - addEventListener(window.document.body, "click", - function(ev) { - var targ, - ev = ev || window.event; - - if (ev.target) targ = ev.target; - else if (ev.srcElement) targ = ev.srcElement; - if(targ == link) { - return; - } - if(bubbleOpen) { - toggleBubble(ev); - } - }, true); - - addEventListener(bubble, "click", function(ev) { - if(ev.stopPropagation) { - ev.stopPropagation(); - } else { - ev.cancelBubble = false; - } - }); -}; - -if(window.top == window) { // only add the backstage when NOT in an iframe (top window) - addEventListener(window, "load", loadEvent); - // check if postMessage is supported - // best test: https://github.com/ternarylabs/porthole/pull/10 - if(!!window.postMessage) { - addEventListener(window, "message", function(e) { - var iframe = document.getElementById('tsbackstage'); - if(e.data) { - iframe.style.height = e.data + "px"; - } - }); - } -} - -})(); \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs deleted file mode 100644 index 3baf3917fb..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs +++ /dev/null @@ -1,373 +0,0 @@ -/*** -https://raw.github.com/tiddlyweb/chrjs/master/main.js -***/ -//{{{ -// TiddlyWeb adaptor -// v0.14.3 - -/*jslint vars: true, unparam: true, nomen: true, white: true */ -/*global jQuery */ - -var tiddlyweb = (function($) { - -"use strict"; - -var tw = { - routes: { - // host is the TiddlyWeb instance's URI (including server_prefix) - // placeholders "_type" & "name" refer to the respective bag/recipe - root : "{host}/", - bags : "{host}/bags", - bag : "{host}/bags/{name}", - recipes : "{host}/recipes", - recipe : "{host}/recipes/{name}", - tiddlers : "{host}/{_type}s/{name}/tiddlers", - tiddler : "{host}/{_type}s/{name}/tiddlers/{title}", - revisions: "{host}/{_type}s/{name}/tiddlers/{title}/revisions", - revision : "{host}/{_type}s/{name}/tiddlers/{title}/revisions/{revision}", - search : "{host}/search?q={query}" - } -}; - -var convertTimestamp, supplant; - -// host (optional) is the URI of the originating TiddlyWeb instance -tw.Resource = function(type, host) { - if(arguments.length) { // initialization - this._type = type; - if(host !== false) { - this.host = host !== undefined ? host.replace(/\/$/, "") : null; - } - } -}; -$.extend(tw.Resource.prototype, { - // retrieves resource from server - // callback is passed resource, status, XHR (cf. jQuery.ajax success) - // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) - // filters is an optional filter string (e.g. "select=tag:foo;limit=5") - get: function(callback, errback, filters) { - var uri = this.route(); - if(filters) { - var separator = uri.indexOf("?") === -1 ? "?" : ";"; - uri += separator + filters; - } - var self = this; - return $.ajax({ - url: uri, - type: "GET", - dataType: "json", - success: function(data, status, xhr) { - var resource = self.parse(data); - resource.etag = xhr.getResponseHeader("Etag"); - callback(resource, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }); - }, - // sends resource to server - // callback is passed data, status, XHR (cf. jQuery.ajax success) - // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) - put: function(callback, errback) { - var self = this; - var options = { - url: this.route(), - type: "PUT", - contentType: "application/json", - data: JSON.stringify(this.baseData()), - success: function(data, status, xhr) { - callback(self, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }; - if(this.ajaxSetup) { - this.ajaxSetup(options); - } - return $.ajax(options); - }, - // deletes resource on server - // callback is passed data, status, XHR (cf. jQuery.ajax success) - // errback is passed XHR, error, exception, resource (cf. jQuery.ajax error) - "delete": function(callback, errback) { - var self = this; - var options = { - url: this.route(), - type: "DELETE", - success: function(data, status, xhr) { - callback(self, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }; - if(this.ajaxSetup) { - this.ajaxSetup(options); - } - return $.ajax(options); - }, - // returns an object carrying only the essential information of the resource - baseData: function() { - var data = {}, - self = this; - $.each(this.data, function(i, item) { - var value = self[item]; - if(value !== undefined) { - data[item] = value; - } - }); - return data; - }, - // returns corresponding instance from a raw object (if applicable) - parse: function(data) { - return data; - }, - // list of accepted keys in serialization - data: [], - // returns resource's URI - route: function() { - return supplant(tw.routes[this._type], this); - } -}); - -var Container = function(type, name, host) { - if(arguments.length) { // initialization - tw.Resource.apply(this, [type, host]); - this.name = name; - this.desc = ""; - this.policy = new tw.Policy({}); - } -}; -Container.prototype = new tw.Resource(); -$.extend(Container.prototype, { - tiddlers: function() { - return new tw.TiddlerCollection(this); - }, - parse: function(data) { - var type = tw._capitalize(this._type), - container = new tw[type](this.name, this.host); - data.policy = new tw.Policy(data.policy); - return $.extend(container, data); - }, - data: ["desc", "policy"] -}); - -// attribs is an object whose members are merged into the instance (e.g. query) -tw.Collection = function(type, host, attribs) { - if(arguments.length) { // initialization - tw.Resource.apply(this, [type, host]); - $.extend(this, attribs); - } -}; -tw.Collection.prototype = new tw.Resource(); - -tw.TiddlerCollection = function(container, tiddler) { - if(arguments.length) { // initialization - tw.Collection.apply(this, [tiddler ? "revisions" : "tiddlers"]); - this.container = container || null; - this.tiddler = tiddler || null; - } -}; -tw.TiddlerCollection.prototype = new tw.Collection(); -$.extend(tw.TiddlerCollection.prototype, { - parse: function(data) { - var container = this.container; - return $.map(data, function(item, i) { - var tiddler = new tw.Tiddler(item.title, container), - bag = item.bag; - tiddler = tw.Tiddler.prototype.parse.apply(tiddler, [item]); - if(!tiddler.bag && bag) { // XXX: bag always present!? - tiddler.bag = new tw.Bag(bag, container.host); - } - if(!tiddler.recipe && item.recipe) { - tiddler.recipe = new tw.Recipe(item.recipe, container.host); - } - delete item.recipe; - return $.extend(tiddler, item); - }); - }, - route: function() { - var params = this.container; - if(this.tiddler) { - var container = this.tiddler.bag || this.tiddler.recipe; - params = { - _type: container._type, - host: container.host, - name: container.name, - title: this.tiddler.title - }; - } - return supplant(tw.routes[this._type], params); - } -}); - -tw.Search = function(query, host) { - tw.Collection.apply(this, ["search", host]); - this.query = query; -}; -tw.Search.prototype = new tw.Collection(); -$.extend(tw.Search.prototype, { - parse: function(data) { - this.container = { // XXX: hacky - _type: "bag", - host: this.host - }; - var tiddlers = tw.TiddlerCollection.prototype.parse.apply(this, arguments); - delete this.container; - return tiddlers; - } -}); - -// title is the name of the tiddler -// container (optional) is an instance of either Bag or Recipe -// optionally accepts a single object representing tiddler attributes -tw.Tiddler = function(title, container) { - tw.Resource.apply(this, ["tiddler", false]); - this.title = title; - this.bag = container && container._type === "bag" ? container : null; - this.recipe = container && container._type === "recipe" ? container : null; - var self = this; - $.each(this.data, function(i, item) { - self[item] = undefined; // exposes list of standard attributes for inspectability - }); - if(title && title.title) { // title is an object of tiddler attributes - $.extend(this, title); - } -}; -tw.Tiddler.prototype = new tw.Resource(); -$.extend(tw.Tiddler.prototype, { - revisions: function() { - return new tw.TiddlerCollection(this.bag || this.recipe, this); - }, - route: function() { - var container = this.bag || this.recipe; - var params = $.extend({}, this, { - host: container ? container.host : null, - _type: this.bag ? "bag" : (this.recipe ? "recipe" : null), - name: container ? container.name : null - }); - return supplant(tw.routes[this._type], params); - }, - parse: function(data) { - var tiddler = new tw.Tiddler(this.title), - container = this.bag || this.recipe; - if(data.bag) { - tiddler.bag = new tw.Bag(data.bag, container.host); - delete data.bag; - } - delete data.recipe; - tiddler.created = data.created ? convertTimestamp(data.created) : new Date(); - delete data.created; - tiddler.modified = data.modified ? convertTimestamp(data.modified) : new Date(); - delete data.modified; - if(this.recipe) { - tiddler.recipe = this.recipe; - } - return $.extend(tiddler, data); - }, - data: ["created", "creator", "modifier", "modified", "tags", "type", "text", - "fields"], - ajaxSetup: function(options) { - var self = this; - if(this.etag && (options.type === "PUT" || options.type === "DELETE")) { - options.beforeSend = function(xhr) { - xhr.setRequestHeader("If-Match", self.etag); - }; - } - if(options.type === "PUT") { - var callback = options.success; - options.success = function(data, status, xhr) { - var loc = xhr.getResponseHeader("Location"), - etag = xhr.getResponseHeader("Etag"); - if(loc && etag) { - self.etag = etag; - if(!self.bag) { - var bag = loc.split("/bags/").pop().split("/")[0]; - self.bag = new tw.Bag(bag, self.recipe.host); - } - callback(self, status, xhr); - } else { // IE - self.get(callback, options.error); - } - }; - } - } -}); - -tw.Revision = function(id, tiddler) { - var container = tiddler.bag || tiddler.recipe; - tw.Tiddler.apply(this, [tiddler.title, container]); - this._type = "revision"; - this.revision = id; -}; -tw.Revision.prototype = new tw.Tiddler(); -$.extend(tw.Revision.prototype, { - revisions: false, - data: false, - put: false, - "delete": false -}); - -tw.Bag = function(name, host) { - Container.apply(this, ["bag", name, host]); -}; -tw.Bag.prototype = new Container(); - -tw.Recipe = function(name, host) { - Container.apply(this, ["recipe", name, host]); - this.recipe = []; -}; -tw.Recipe.prototype = new Container(); -$.extend(tw.Recipe.prototype, { - data: ["recipe"].concat(Container.prototype.data) -}); - -tw.Policy = function(constraints) { // TODO: validation? - var self = this; - $.each(this.constraints, function(i, item) { - self[item] = constraints[item]; - }); -}; -tw.Policy.prototype.constraints = ["read", "write", "create", "delete", - "manage", "accept", "owner"]; - -/* - * utilities - */ - -tw._capitalize = function(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -}; - -// convert YYYYMMDDhhmmss timestamp to Date instance -convertTimestamp = function(t) { - if (t.match(/^\d{12,17}$/)) { - return new Date(Date.UTC( - parseInt(t.substr(0, 4), 10), - parseInt(t.substr(4, 2), 10) - 1, - parseInt(t.substr(6, 2), 10), - parseInt(t.substr(8, 2), 10), - parseInt(t.substr(10, 2), 10), - parseInt(t.substr(12, 2) || "0", 10), - parseInt(t.substr(14, 3) || "0", 10) - )); - } else { - return new Date(Date.parse(t)); - } -}; - -// adapted from Crockford (http://javascript.crockford.com/remedial.html) -supplant = function(str, obj) { - return str.replace(/{([^{}]*)}/g, function (a, b) { - var r = obj[b]; - r = typeof r === "string" || typeof r === "number" ? r : a; - return $.inArray(b, ["host", "query"]) !== -1 ? r : encodeURIComponent(r); // XXX: special-casing - }); -}; - -return tw; - -}(jQuery)); -//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities deleted file mode 100644 index 248fa01035..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.identities +++ /dev/null @@ -1,42 +0,0 @@ -/*** -TiddlySpace extensions for [[chrjs]] -|''Requires''|chrjs.users| -***/ -//{{{ -(function($) { - -tiddlyweb.routes.identities = "{host}/users/{username}/identities"; -var IdentitiesCollection = function(user) { - tiddlyweb.Collection.apply(this, ["identities", user.host, { - username: user.username - }]); -}; -IdentitiesCollection.prototype = new tiddlyweb.Collection(); -jQuery.extend(IdentitiesCollection.prototype, { - add: function(identity, callback, errback) { - var tiddler = new tiddlyweb.Tiddler(identity); - tiddler.bag = new tiddlyweb.Bag("MAPUSER", this.host); - tiddler.put(callback, errback); - }, - get: function(callback, errback) { - var uri = this.route(); - $.ajax({ - type: "get", - dataType: "json", - url: uri, - success: function(uris, status, xhr) { - callback(uris, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }); - } -}); - -tiddlyweb.User.prototype.identities = function() { - return new IdentitiesCollection(this); -}; - -})(jQuery); -//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space deleted file mode 100644 index ef41af5102..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.space +++ /dev/null @@ -1,108 +0,0 @@ -/*** -TiddlySpace extensions for [[chrjs]] -***/ -//{{{ -(function($) { - -tiddlyweb.routes.spaces = "{host}/spaces"; -tiddlyweb.routes.space = "{host}/spaces/{name}"; -tiddlyweb.routes.members = "{host}/spaces/{name}/members"; -tiddlyweb.routes.member = "{host}/spaces/{name}/members/{username}"; - -tiddlyweb.Space = function(name, host) { - tiddlyweb.Resource.apply(this, ["space", host]); - this.name = name; -}; -tiddlyweb.Space.prototype = new tiddlyweb.Resource(); -$.extend(tiddlyweb.Space.prototype, { - create: function(callback, errback) { // API wrapper - this.put.apply(this, arguments); - }, - members: function() { - return new MemberCollection(this); - }, - includes: function() { - return new IncludesCollection(this); - } -}); - -var Member = function(username, space) { - tiddlyweb.Resource.apply(this, ["member", space.host]); - this.name = space.name; - this.username = username; -}; -Member.prototype = new tiddlyweb.Resource(); - -var MemberCollection = function(space) { - tiddlyweb.Collection.apply(this, ["members", space.host, { - name: space.name - }]); -}; -MemberCollection.prototype = new tiddlyweb.Collection(); -$.extend(MemberCollection.prototype, { - add: function(username, callback, errback) { - var member = new Member(username, this); - member.put(callback, errback); - }, - remove: function(username, callback, errback) { - var member = new Member(username, this); - member["delete"](callback, errback); - } -}); - -var IncludesCollection = function(space) { - tiddlyweb.Collection.apply(this, ["space", space.host, { - name: space.name - }]); -}; -IncludesCollection.prototype = new tiddlyweb.Collection(); -$.extend(IncludesCollection.prototype, { - get: function(callback, errback) { - var self = this; - var recipe = new tiddlyweb.Recipe(this.name + "_public", this.host); - recipe.get(function(recipe, status, xhr) { - var inclusions = $.map(recipe.recipe, function(item, i) { - var arr = item[0].split("_public"); - return (arr[0] != self.name && arr[1] === "") ? arr[0] : null; - }); - callback(inclusions, status, xhr); - }, function(xhr, error, exc) { - errback(xhr, error, exc, self); - }); - }, - add: function(name, callback, errback) { - var self = this; - var names = typeof(name) === "string" ? [ name ] : name; - $.ajax({ - type: "post", - url: this.route(), - contentType: "json", - data: JSON.stringify({ "subscriptions": names }), - success: function(response, status, xhr) { - callback(self, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }); - }, - remove: function(name, callback, errback) { - var self = this; - var names = typeof(name) === "string" ? [ name ] : name; - $.ajax({ - type: "post", - contentType: "json", - url: this.route(), - data: JSON.stringify({ "unsubscriptions": names }), - success: function(response, status, xhr) { - callback(self, status, xhr); - }, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }); - } -}); - -})(jQuery); -//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users deleted file mode 100644 index 6f82e082f8..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/chrjs.users +++ /dev/null @@ -1,57 +0,0 @@ -/*** -https://raw.github.com/tiddlyweb/chrjs/master/users.js -***/ -//{{{ -// chrjs users extension -// v0.5.0 -// -// requires tiddlywebplugins.socialusers -// http://pypi.python.org/pypi/tiddlywebplugins.socialusers - -/*jslint vars: true */ -/*global jQuery, tiddlyweb */ - -(function($, tw) { - -"use strict"; - -tw.routes.users = "{host}/users"; -tw.routes.user = "{host}/users/{username}"; - -tw.User = function(username, password, host) { - tw.Resource.apply(this, ["user", host]); - this.username = username; - this.password = password; -}; -tw.User.prototype = new tw.Resource(); -$.extend(tw.User.prototype, { - create: function(callback, errback) { - var uri = this.route().split("/"); // XXX: hacky!? - uri.pop(); - uri = uri.join("/"); - var data = { - username: this.username, - password: this.password - }; - var self = this; - return $.ajax({ - url: uri, - type: "POST", - contentType: "application/json", - data: JSON.stringify(data), - success: callback, - error: function(xhr, error, exc) { - errback(xhr, error, exc, self); - } - }); - }, - setPassword: function(newPass, callback, errback) { - this.old_password = this.password; // XXX: should not use underscore (consistency) - this.password = newPass; - return this.put(callback, errback); - }, - data: ["password", "old_password"] -}); - -}(jQuery, tiddlyweb)); -//}}} \ No newline at end of file diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/help.png b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/help.png deleted file mode 100644 index 6c9578e35bc77b340bba046414b5647bd67b68ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1277 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to-eo#F2Y5O=D+Cnfr)B1( zGB8vywuYR~7IqZ*XO_3}f)YnmHs7X-2}+)kt211$nEe$@%I3K(zs+?*im~UlJhRvD z)V40|c=G6?);-s^3)%lS$W?tv(f4YNa@DxES|e$pxbDZZc|O~gzB+KO?(;qK_qF+D z_ZfJLE}497V0prOJZO<%W=@S$)}IcBzD1mlCaR&g-}tGpIW`yntbTr@ioY>B>~Qt( z@=fJyXI9_Q&tT?!pU)%Ob zq*9H8sqVRY-yOkcRWCa)>$2>bd1=Q^2<-Krux$64cdL^Y&hh)k zH(~GGFLi#K@7WzvJj5-z*4}ML@4T-)SM47qK3wwbNSm#Ugz1+b38LGjR{k(OBoZ&+ ztG+0t@TMN`#~JJXhJEsCDwtq#DkZU@ILgESx=-GZUG1#3YS)F=KPnFkd|25poPO`h z-S@7ynARKc$?{0?%;NP35O8HloUtLmq0L6h&}37Qz4B@{>B-ebr7BswOOjkRI#!$A zvE3fH4W+^<&RaPq{c-%Kwf?04)5@QxV>a9f`#xpu>{+`$J+MCdbmmSex$Bot zJTCT)tC@PGY;w5!v^AAgduF|nvVRjk-SAnHY5$Sp4ZlC?#!o#nU9(5z=;P4Oue@7I zqYTaO&(Ep1wtb{`UT^EQ;YVJn~xyL!?PHoe?lsoa4%GHE~S$n?f$J$3%>~*W>`5HJy^30`> z&hPbyv{Fpw?&Qn=)qnf=AMq#OyPnV2VA9WdaAM}J+~C6Z0t-`@<`u7F65oHZ_QSTk z?8S8!e^?@HR*S6-GM%rmhf$`iy-Mzd=8VhJrk%A6YS)=RdDqKRNkL}Mgc;W@ysOvKuom%jU@}v~>D@WVu)BD470s9&iMP-F6;LPX}M!j`9BP^&Y9eKXO@u{ zzIj>Y1iQoT0ZT5&xlKA(Rbrd?JfK7Ui@@pZ3hqjec;0x1>baU}@1s-;z32TDbaguM z`N8FOCHY>t>eZRLVt2k(7aY9*gUzP5IH1w!hrsnW8_jHGua8;P%({bnr)$=( sj}HI*%&Pjpyyk7JbsPS#`)q%P_r?DSd>7am7#J8lUHx3vIVCg!04|7Qx&QzG diff --git a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js b/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js deleted file mode 100644 index b74bebb408..0000000000 --- a/editions/tiddlywiki-surveys/great-interview-project-2010/The great TiddlyWiki interview project_files/jquery.js +++ /dev/null @@ -1,11 +0,0 @@ -/*** -http://code.jquery.com/jquery.min.js -***/ -//{{{ -/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery.min.map -*/ -(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
          ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
          - -

          login via openid

          - - - - - - -

          login with username and password

          - - - - What is an open id? - -
          Welcome back jermolene! -
          - - - -
          -
          a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
          t
          ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
          ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t -}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
          ","
          "],area:[1,"",""],param:[1,"",""],thead:[1,"","
          "],tr:[2,"","
          "],col:[2,"","
          "],td:[3,"","
          "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
          ","
          "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); -u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x(" +!! https://tiddlywiki.substack.com/ -The newsletter is produced by a small team of volunteers. We would welcome your help. See [[TiddlyWiki Newsletter Team]]. \ No newline at end of file +The newsletter is produced by a small team of volunteers. We would welcome your help. See [[TiddlyWiki Newsletter Team]]. diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid index 13dedd0c16..4411d4783f 100644 --- a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid @@ -6,4 +6,4 @@ image: TiddlyWiki Newsletter Badge color: #fff type: text/vnd.tiddlywiki -Subscribe to the ~TiddlyWiki Newsletter, a fortnightly summary of the most interesting and relevant news from the ~TiddlyWiki community +Subscribe to the ~TiddlyWiki Newsletter, a summary of the most interesting and relevant news from the ~TiddlyWiki community diff --git a/editions/tw5.com/tiddlers/images/TiddlyWiki Newsletter Badge.webp b/editions/tw5.com/tiddlers/images/TiddlyWiki Newsletter Badge.webp index 6a1930efea10feb219f93569b1ec002681aadd85..a855cacb36fec147871bb383f11cbb754211673c 100644 GIT binary patch literal 54634 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 C(P+N_ literal 10122 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 V%fZy|3lnoZJ*Mwm{fdEs0RUnAuPFck From 935e89bd93fd90426d54826e5e02aec8f8874e2f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sat, 20 Dec 2025 09:25:25 +0000 Subject: [PATCH 374/458] Tweak HelloThere thumbnail ordering --- editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid | 2 +- .../hellothere/thumbnails/HelloThumbnail - Newsletter.tid | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid index 75bcb2bb01..5320e4c90e 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThumbnail.tid @@ -1,5 +1,5 @@ created: 20150414070451144 -list: [[HelloThumbnail - Community Survey 2025]] [[HelloThumbnail - Twenty Years of TiddlyWiki]] [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - TiddlyWiki Privacy]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - Newsletter]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - MultiWikiServer]] [[HelloThumbnail - Funding]] [[HelloThumbnail - Marketplace]] [[HelloThumbnail - Intertwingled Innovations]] +list: [[HelloThumbnail - Newsletter]] [[HelloThumbnail - Community Survey 2025]] [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - MultiWikiServer]] [[HelloThumbnail - Twenty Years of TiddlyWiki]] [[HelloThumbnail - Funding]] [[HelloThumbnail - TiddlyWiki Privacy]] [[HelloThumbnail - Marketplace]] [[HelloThumbnail - Intertwingled Innovations]] [[HelloThumbnail - TiddlyWikiLinks]] modified: 20150414070948246 title: HelloThumbnail type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid index 4411d4783f..2e49bcf62a 100644 --- a/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid +++ b/editions/tw5.com/tiddlers/hellothere/thumbnails/HelloThumbnail - Newsletter.tid @@ -5,5 +5,6 @@ link: TiddlyWiki Newsletter image: TiddlyWiki Newsletter Badge color: #fff type: text/vnd.tiddlywiki +ribbon-text: NEW Subscribe to the ~TiddlyWiki Newsletter, a summary of the most interesting and relevant news from the ~TiddlyWiki community From 838fad916d2dcec16891849db71d2dd782e51e86 Mon Sep 17 00:00:00 2001 From: wiki-tutor Date: Sun, 28 Dec 2025 19:30:51 +0100 Subject: [PATCH 375/458] Signing CLA (#9527) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index b7336b30d6..713edd74b2 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -638,3 +638,5 @@ Joseph Yi, @josephyi, 2025/10/14 Rishu kumar, @rishu-7549, 2025/10/25 + +@wiki-tutor, 2025/12/28 \ No newline at end of file From 6beeb23d1008550442edb1052c859ceda465036a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 29 Dec 2025 21:09:43 +0000 Subject: [PATCH 376/458] Fix browser storage plugin triggers save (#9538) * Initial Commit * Add changenote --- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9538.tid | 10 ++++++++++ plugins/tiddlywiki/browser-storage/settings.tid | 2 +- plugins/tiddlywiki/browser-storage/startup.js | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9538.tid diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9538.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9538.tid new file mode 100644 index 0000000000..7f77328068 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9538.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9538 +description: Fix browser storage plugin making wiki dirty +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: plugin +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9538 +github-contributors: Jermolene + +Fixed issue where the browser storage plugin caused the wiki to be marked as dirty every time it starts up. The problem was due to the use of a log tiddler titled `$:/info/browser/storage/persisted`, the fix is to rename it to `$:/state/browser/storage/persisted`. \ No newline at end of file diff --git a/plugins/tiddlywiki/browser-storage/settings.tid b/plugins/tiddlywiki/browser-storage/settings.tid index e6170dfb95..daffac91ea 100644 --- a/plugins/tiddlywiki/browser-storage/settings.tid +++ b/plugins/tiddlywiki/browser-storage/settings.tid @@ -34,7 +34,7 @@ This setting allows a custom alert message to be displayed when an attempt to st ! Prevent browser from evicting local storage -Permission for local storage persistence: ''{{$:/info/browser/storage/persisted}}'' +Permission for local storage persistence: ''{{$:/state/browser/storage/persisted}}'' The first time a tiddler is saved to local storage a request will be made to prevent automatic eviction of local storage for this site. This means the data will not be cleared unless the user manually clears it. diff --git a/plugins/tiddlywiki/browser-storage/startup.js b/plugins/tiddlywiki/browser-storage/startup.js index 9ab61620d6..eecd9ca8d0 100644 --- a/plugins/tiddlywiki/browser-storage/startup.js +++ b/plugins/tiddlywiki/browser-storage/startup.js @@ -17,7 +17,7 @@ exports.synchronous = true; var ENABLED_TITLE = "$:/config/BrowserStorage/Enabled", SAVE_FILTER_TITLE = "$:/config/BrowserStorage/SaveFilter", - PERSISTED_STATE_TITLE = "$:/info/browser/storage/persisted"; + PERSISTED_STATE_TITLE = "$:/state/browser/storage/persisted"; var BrowserStorageUtil = require("$:/plugins/tiddlywiki/browser-storage/util.js").BrowserStorageUtil; From 743e99d12d2e1205982ead1902a3fa6e6ad19c38 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 29 Dec 2025 21:44:57 +0000 Subject: [PATCH 377/458] Further fix to #9538 --- plugins/tiddlywiki/browser-storage/startup.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/tiddlywiki/browser-storage/startup.js b/plugins/tiddlywiki/browser-storage/startup.js index eecd9ca8d0..e1e4673b75 100644 --- a/plugins/tiddlywiki/browser-storage/startup.js +++ b/plugins/tiddlywiki/browser-storage/startup.js @@ -24,10 +24,6 @@ var BrowserStorageUtil = require("$:/plugins/tiddlywiki/browser-storage/util.js" exports.startup = function() { var self = this; - // If not exists, add ENABLED tiddler with default value "yes" - if(!$tw.wiki.getTiddler(ENABLED_TITLE)) { - $tw.wiki.addTiddler({title: ENABLED_TITLE, text: "yes"}); - } // Compute our prefix for local storage keys var prefix = "tw5#" + window.location.pathname + "#"; // Make a logger From 4196d96adc2b50f70deffc5c2c28c106ba0dd742 Mon Sep 17 00:00:00 2001 From: XLBilly Date: Fri, 2 Jan 2026 16:42:58 +0800 Subject: [PATCH 378/458] [DOCS] Update docs about saving via WebDAV (#9543) --- editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid index 63959a1d63..a04206711c 100644 --- a/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +++ b/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid @@ -4,7 +4,7 @@ created: 20160216191710789 delivery: Protocol description: Standard web protocol available on products such as Sharepoint method: save -modified: 20220615155048712 +modified: 20260102081028704 tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge title: Saving via WebDAV type: text/vnd.tiddlywiki @@ -19,6 +19,9 @@ Lightweight, portable and easy to use solutions * [[rclone|https://rclone.org/commands/rclone_serve_webdav/]] ** Running it can be as simple as:
          `rclone serve webdav some_directory_containing_tiddlywiki_files` +* [[copyparty|https://github.com/9001/copyparty]] +** Copyparty comes with a ~WebDAV server. Simply run `copyparty -v .::rwd:c,daw` to serve the current folder and visit [[http://[::1]:3923/]] to use TiddlyWiki +** Note that you need to grant read, write and delete permission and add `daw` volflag to allow copyparty to overwrite existing files. * [[micromata dave - the simple webdav server|https://github.com/micromata/dave]] * [[dav-server|https://github.com/edrex/dav-server]] is a quick way to serve up a folder of HTML ~TiddlyWikis. * [[hacdias webdav server|https://github.com/hacdias/webdav/]] @@ -44,6 +47,10 @@ Lightweight, portable and easy to use solutions * RCX is an open source file manager for Android based on //rclone//. It is available on both //F-Droid// and //Google Play//. Thanks to its integrated WebDAV server, it lets you edit the wikis that you keep in your pocket. You can share them with other devices on the local network too. +!! iOS + +* There are no native apps that can serve a ~WebDAV server, but you can use rclone or copyparty on [[iSH Shell|https://apps.apple.com/cn/app/ish-shell/id1436902243]] or copyparty on [[a-Shell|https://apps.apple.com/cn/app/a-shell/id1473805438]]. + !! Servers Many [[NAS|https://en.wikipedia.org/wiki/NAS]] or [[Subversion|https://en.wikipedia.org/wiki/Apache_Subversion]] servers support ~WebDAV out of the box. Setting up your own server might take some effort though: From 921c0174fbe413a01669c6e3d105a651df01214f Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 16:42:01 +0800 Subject: [PATCH 379/458] Purge IE related docs (#9134) --- .../tw5.com/tiddlers/definitions/TiddlyIE.tid | 9 ------- .../GettingStarted - Internet Explorer.tid | 10 -------- .../tiddlers/howtos/Windows HTA Hack.tid | 17 ------------- .../tiddlers/saving/Saving with TiddlyIE.tid | 25 ------------------- 4 files changed, 61 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/definitions/TiddlyIE.tid delete mode 100644 editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid delete mode 100644 editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid delete mode 100644 editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid diff --git a/editions/tw5.com/tiddlers/definitions/TiddlyIE.tid b/editions/tw5.com/tiddlers/definitions/TiddlyIE.tid deleted file mode 100644 index dfc02cab7e..0000000000 --- a/editions/tw5.com/tiddlers/definitions/TiddlyIE.tid +++ /dev/null @@ -1,9 +0,0 @@ -created: 20131211220000000 -modified: 20131211224200000 -tags: Definitions -title: TiddlyIE -type: text/vnd.tiddlywiki - -TiddlyIE is an extension for Internet Explorer that allows standalone TiddlyWiki files to save their changes directly to the file system. TiddlyIE works with the desktop version of Internet Explorer. - -See [[Saving with TiddlyIE]]. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid b/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid deleted file mode 100644 index 295736a3f0..0000000000 --- a/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid +++ /dev/null @@ -1,10 +0,0 @@ -caption: Internet Explorer -created: 20140811172058274 -modified: 20211114031651879 -tags: GettingStarted $:/deprecated -title: GettingStarted - Internet Explorer -type: text/vnd.tiddlywiki - -{{Saving with TiddlyIE}} - -The [[Windows HTA Hack]] describes an alternative method of using TiddlyWiki with Internet Explorer. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid b/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid deleted file mode 100644 index 4049ea5081..0000000000 --- a/editions/tw5.com/tiddlers/howtos/Windows HTA Hack.tid +++ /dev/null @@ -1,17 +0,0 @@ -caption: HTA Hack -color: #F06292 -created: 20131212223146250 -delivery: DIY -description: Manual method to let Internet Explorer save changes directly -method: save -modified: 20200507110355115 -tags: Saving Windows $:/deprecated -title: Windows HTA Hack -type: text/vnd.tiddlywiki - -<<.deprecated-since "5.3.6">> -Under Windows it is possible to convert TiddlyWiki into a true local application by renaming the HTML file to have the extension `*.hta`. The ''fsosaver'' module can then use the ~ActiveX ~FileSystemObject to save changes. - -Note that one disadvantage of this approach is that the TiddlyWiki file is saved in UTF-16 format, making it up to twice as large as it would be with the usual UTF-8 encoding. However, opening and saving the file via another saving method will re-encode the file to UTF-8. - -See Wikipedia for more details: https://en.wikipedia.org/wiki/HTML_Application diff --git a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid b/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid deleted file mode 100644 index 6fc044a433..0000000000 --- a/editions/tw5.com/tiddlers/saving/Saving with TiddlyIE.tid +++ /dev/null @@ -1,25 +0,0 @@ -caption: ~TiddlyIE -color: #4DB6AC -community-author: David Jade -created: 20131211220000000 -delivery: Browser Extension -description: Browser extension for Internet Explorer -method: save -modified: 20200507201415232 -tags: [[Internet Explorer]] Saving $:/deprecated -title: Saving with TiddlyIE -type: text/vnd.tiddlywiki - -<<.deprecated-since "5.3.6">> -# Install the TiddlyIE add-on from: -#* https://github.com/davidjade/TiddlyIE/releases -# Restart Internet Explorer. IE will prompt you to enable the TiddlyIE add-on. -#> You may also see a prompt to enable the //Microsoft Script Runtime// -# [[Download]] an empty TiddlyWiki by saving this link: -#> https://tiddlywiki.com/empty.html -# Locate the file you just downloaded -#* You may rename it, but be sure to keep the `.html` or `.htm` extension -# Open the file in Internet Explorer -# Try creating a new tiddler using the ''new tiddler'' <<.icon $:/core/images/new-button>> button in the sidebar. Type some content for the tiddler, and click the <<.icon $:/core/images/done-button>> ''ok'' button -# Save your changes by clicking the <<.icon $:/core/images/save-button-dynamic>> ''save changes'' button in the sidebar. Internet Explorer will ask for your consent to save the file locally by presenting a file ''Save As'' dialog. -# Refresh the browser window to verify that your changes have been saved correctly From 3c8ee86e236c0c67570a9786f900fad7c1dc3c18 Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 19:31:30 +0800 Subject: [PATCH 380/458] Add macro operator (#9520) * Add macro operator * Replace unnecessary usage of wikify widget * Simplify multiple let widget * fixup! Replace unnecessary usage of wikify widget * Update tests * Update change note * fixup! Replace unnecessary usage of wikify widget * Update docs * fixup! Update tests --- core/modules/filters/macro.js | 27 ++++++++++++++ core/ui/Actions/new-journal.tid | 4 +-- core/ui/EditTemplate/tags.tid | 35 +++++++------------ core/ui/TagPickerTagTemplate.tid | 6 ++-- core/ui/ViewToolbar/new-journal-here.tid | 4 +-- editions/test/tiddlers/tests/test-filters.js | 4 +++ .../tiddlers/macro Operator (Examples).tid | 7 ++++ editions/tw5.com/tiddlers/macro Operator.tid | 14 ++++++++ .../releasenotes/5.4.0/add-macro-operator.tid | 10 ++++++ 9 files changed, 80 insertions(+), 31 deletions(-) create mode 100644 core/modules/filters/macro.js create mode 100644 editions/tw5.com/tiddlers/macro Operator (Examples).tid create mode 100644 editions/tw5.com/tiddlers/macro Operator.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid diff --git a/core/modules/filters/macro.js b/core/modules/filters/macro.js new file mode 100644 index 0000000000..024dca975e --- /dev/null +++ b/core/modules/filters/macro.js @@ -0,0 +1,27 @@ +/*\ +title: $:/core/modules/filters/macro.js +type: application/javascript +module-type: filteroperator + +Filter operator returning those input titles that are returned from a javascript macro + +\*/ + +"use strict"; + +/* +Export our filter function +*/ +exports.macro = function(source,operator,options) { + const macroName = operator.operands[0], + results = []; + if($tw.macros[macroName] !== undefined) { + results.push($tw.macros[macroName].run(...operator.operands.slice(1))); + } else { + // Return the input list if the macro wasn't found + source((tiddler,title) => { + results.push(title); + }); + } + return results; +}; diff --git a/core/ui/Actions/new-journal.tid b/core/ui/Actions/new-journal.tid index 9d663e537c..6bf8f4dba4 100644 --- a/core/ui/Actions/new-journal.tid +++ b/core/ui/Actions/new-journal.tid @@ -4,13 +4,11 @@ description: create a new journal tiddler \whitespace trim \function get-tags() [] [] +[join[ ]] -<$let journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}> -<$wikify name="journalTitle" text="<$transclude $variable='now' format=<>/>"> +<$let journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}} journalTitle={{{ [macro[now],] }}}> <$reveal type="nomatch" state=<> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<> tags=<> text={{{ [get[]] }}}/> <$reveal type="match" state=<> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<> tags=<> text=<>/> - diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index 298120606d..4f6a5c51c5 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -6,28 +6,19 @@ tags: $:/tags/EditTemplate \procedure lingo-base() $:/language/EditTemplate/ \procedure tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:"tags") -<$wikify name="foregroundColor" - text="""<$macrocall $name="contrastcolour" - target=<> - fallbackTarget=<> - colourA=<> - colourB=<>/> - """ -> - <$let backgroundColor=<> > - > - style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$;` - > - <$transclude tiddler=<>/> - <$view field="title" format="text"/> - <$button class="tc-btn-invisible tc-remove-tag-button"> - <$action-listops $tiddler=<> $field=<> $subfilter="-[{!!title}]"/> - {{$:/core/images/close-button}} - - - - +<$let backgroundColor=<> foregroundColor={{{ [macro[contrastcolour],,,,] }}}> + > + style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$;` + > + <$transclude tiddler=<>/> + <$view field="title" format="text"/> + <$button class="tc-btn-invisible tc-remove-tag-button"> + <$action-listops $tiddler=<> $field=<> $subfilter="-[{!!title}]"/> + {{$:/core/images/close-button}} + + + \end \procedure tag-body(colour,palette,icon,tagField:"tags") diff --git a/core/ui/TagPickerTagTemplate.tid b/core/ui/TagPickerTagTemplate.tid index 9e86891539..6eecb8d5e8 100644 --- a/core/ui/TagPickerTagTemplate.tid +++ b/core/ui/TagPickerTagTemplate.tid @@ -16,15 +16,13 @@ title: $:/core/ui/TagPickerTagTemplate <$set name="backgroundColor" value={{{ [] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} > - <$wikify name="foregroundColor" - text="""<$macrocall $name="contrastcolour" target=<> fallbackTarget=<> colourA=<> colourB=<>/>""" - > + <$let foregroundColor={{{ [macro[contrastcolour],,,,] }}}> > data-tag-title=<> > {{||$:/core/ui/TiddlerIcon}}<$view field="title" format="text"/> - + diff --git a/core/ui/ViewToolbar/new-journal-here.tid b/core/ui/ViewToolbar/new-journal-here.tid index 2df7a2a4e6..60a00128c0 100644 --- a/core/ui/ViewToolbar/new-journal-here.tid +++ b/core/ui/ViewToolbar/new-journal-here.tid @@ -6,7 +6,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} \whitespace trim \procedure journalButton() <$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<>> -<$wikify name="journalTitle" text="""<$transclude $variable="now" format=<>/>"""> +<$let journalTitle={{{ [macro[now],] }}}> <$action-sendmessage $message="tm-new-tiddler" title=<> tags=`[[$(currentTiddlerTag)$]] $(journalTags)$`/> <%if [match[yes]] %> {{$:/core/images/new-journal-button}} @@ -16,7 +16,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} <$text text={{$:/language/Buttons/NewJournalHere/Caption}}/> <%endif%> - + \end <$let journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags}} currentTiddlerTag=<>> diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index dee9128bf6..d35ca5b782 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -1088,6 +1088,10 @@ Tests the filtering mechanism. expect(wiki.filterTiddlers("[[representation]makepatches[misreprehensionisation]]").join(" ")).toBe("@@ -1,13 +1,21 @@\n+mis\n repre\n-sent\n+hensionis\n atio\n"); expect(wiki.filterTiddlers("[[the cat sat on the mat]makepatches[the hat saw in every category]]").join(" ")).toBe("@@ -1,22 +1,29 @@\n the \n-c\n+h\n at sa\n-t on the mat\n+w in every category\n"); }); + + it("should handle the macro operator", () => { + expect(wiki.filterTiddlers("[macro[makedatauri],[some example text],[text/plain]]").join("")).toBe("data:text/plain,some%20example%20text"); + }); it("should parse filter variable parameters", function(){ expect($tw.utils.parseFilterVariable("currentTiddler")).toEqual( diff --git a/editions/tw5.com/tiddlers/macro Operator (Examples).tid b/editions/tw5.com/tiddlers/macro Operator (Examples).tid new file mode 100644 index 0000000000..94b5a63ac9 --- /dev/null +++ b/editions/tw5.com/tiddlers/macro Operator (Examples).tid @@ -0,0 +1,7 @@ +created: 20260104045032090 +modified: 20260104045240842 +tags: [[macro Operator]] +title: macro Operator (Examples) +type: text/vnd.tiddlywiki + +<<.operator-example 1 "[macro[now],{$:/config/NewJournal/Title}]">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/macro Operator.tid b/editions/tw5.com/tiddlers/macro Operator.tid new file mode 100644 index 0000000000..62d7ea87b5 --- /dev/null +++ b/editions/tw5.com/tiddlers/macro Operator.tid @@ -0,0 +1,14 @@ +caption: macro +created: 20260104043647022 +modified: 20260104045136808 +op-input: ignored +op-output: the result of the javascript macro +op-parameter: first parameter is the javascript macro, subsequent parameters are passed to the macro by position +op-purpose: return the result from a javascript macro (with indirect parameters support) +tags: [[Filter Operators]] +title: macro Operator +type: text/vnd.tiddlywiki + +<<.from-version "5.4.0">> The <<.op macro>> operator applies a javascript macro to the input titles, and returns the result from the macro. The function is invoked once with all of the input titles. + +<<.operator-examples "macro">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid new file mode 100644 index 0000000000..e997c71127 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9520 +description: Add macro operator +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: feature +change-category: filters +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9520 +github-contributors: Leilei332 + +Added [[macro Operator]] for evaluating javascript macros in filters. From a3979cda9c3b2d8f38881c63036484d2d09e9b83 Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 19:35:02 +0800 Subject: [PATCH 381/458] Refactor base64 utility functions (#9488) * Split base64 utility functions to two platforms * Simplify Nodejs atob * Update change note * Update docs * Move base64Decode & base64Encode back to utils.js * Add missing use strict --- core-server/utils/base64.js | 30 ++++++++++ core/modules/utils/base64.js | 31 +++++++++++ core/modules/utils/utils.js | 55 ++----------------- .../5.4.0/refactor-base64-util.tid | 14 +++++ 4 files changed, 81 insertions(+), 49 deletions(-) create mode 100644 core-server/utils/base64.js create mode 100644 core/modules/utils/base64.js create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/refactor-base64-util.tid diff --git a/core-server/utils/base64.js b/core-server/utils/base64.js new file mode 100644 index 0000000000..98d0887c01 --- /dev/null +++ b/core-server/utils/base64.js @@ -0,0 +1,30 @@ +/*\ +title: $:/core-modules/modules/utils/base64.js +type: application/javascript +module-type: utils-node + +Base64 UTF-8 utlity functions. + +\*/ + +"use strict"; + +const{ TextEncoder, TextDecoder } = require("node:util"); + +exports.btoa = binstr => Buffer.from(binstr, "binary").toString("base64"); + +exports.atob = b64 => Buffer.from(b64, "base64").toString("binary"); + +function base64ToBytes(base64) { + const binString = exports.atob(base64); + return Uint8Array.from(binString, m => m.codePointAt(0)); +}; + +function bytesToBase64(bytes) { + const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join(""); + return exports.btoa(binString); +}; + +exports.base64EncodeUtf8 = str => bytesToBase64(new TextEncoder().encode(str)); + +exports.base64DecodeUtf8 = str => new TextDecoder().decode(base64ToBytes(str)); diff --git a/core/modules/utils/base64.js b/core/modules/utils/base64.js new file mode 100644 index 0000000000..0ff510234a --- /dev/null +++ b/core/modules/utils/base64.js @@ -0,0 +1,31 @@ +/*\ +title: $:/core/modules/utils/base64.js +type: application/javascript +module-type: utils-browser + +Base64 utility functions + +\*/ + +"use strict"; + +/* +Base64 utility functions that work in either browser or Node.js +*/ + +exports.btoa = binstr => window.btoa(binstr); +exports.atob = b64 => window.atob(b64); + +function base64ToBytes(base64) { + const binString = exports.atob(base64); + return Uint8Array.from(binString, m => m.codePointAt(0)); +}; + +function bytesToBase64(bytes) { + const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join(""); + return exports.btoa(binString); +}; + +exports.base64EncodeUtf8 = str => bytesToBase64(new TextEncoder().encode(str)); + +exports.base64DecodeUtf8 = str => new TextDecoder().decode(base64ToBytes(str)); \ No newline at end of file diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 1e754e7a32..e36bf88c41 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -763,56 +763,13 @@ exports.sha256 = function(str, options) { return $tw.sjcl.codec.hex.fromBits($tw.sjcl.hash.sha256.hash(str)).substr(0,options.length || 64); } -/* -Base64 utility functions that work in either browser or Node.js -*/ -if(typeof window !== 'undefined') { - exports.btoa = function(binstr) { return window.btoa(binstr); } - exports.atob = function(b64) { return window.atob(b64); } -} else { - exports.btoa = function(binstr) { - return Buffer.from(binstr, 'binary').toString('base64'); - } - exports.atob = function(b64) { - return Buffer.from(b64, 'base64').toString('binary'); - } -} - -exports.base64ToBytes = function(base64) { - const binString = exports.atob(base64); - return Uint8Array.from(binString, (m) => m.codePointAt(0)); -}; - -exports.bytesToBase64 = function(bytes) { - const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join(""); - return exports.btoa(binString); -}; - -exports.base64EncodeUtf8 = function(str) { - if ($tw.browser) { - return exports.bytesToBase64(new TextEncoder().encode(str)); - } else { - const buff = Buffer.from(str, "utf-8"); - return buff.toString("base64"); - } -}; - -exports.base64DecodeUtf8 = function(str) { - if ($tw.browser) { - return new TextDecoder().decode(exports.base64ToBytes(str)); - } else { - const buff = Buffer.from(str, "base64"); - return buff.toString("utf-8"); - } -}; - /* Decode a base64 string */ exports.base64Decode = function(string64,binary,urlsafe) { - const encoded = urlsafe ? string64.replace(/_/g,'/').replace(/-/g,'+') : string64; - if(binary) return exports.atob(encoded) - else return exports.base64DecodeUtf8(encoded); + const encoded = urlsafe ? string64.replace(/_/g,"/").replace(/-/g,"+") : string64; + if(binary) return $tw.utils.atob(encoded); + else return $tw.utils.base64DecodeUtf8(encoded); }; /* @@ -820,10 +777,10 @@ Encode a string to base64 */ exports.base64Encode = function(string64,binary,urlsafe) { let encoded; - if(binary) encoded = exports.btoa(string64); - else encoded = exports.base64EncodeUtf8(string64); + if(binary) encoded = $tw.utils.btoa(string64); + else encoded = $tw.utils.base64EncodeUtf8(string64); if(urlsafe) { - encoded = encoded.replace(/\+/g,'-').replace(/\//g,'_'); + encoded = encoded.replace(/\+/g,"-").replace(/\//g,"_"); } return encoded; }; diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/refactor-base64-util.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/refactor-base64-util.tid new file mode 100644 index 0000000000..1eec85bc1b --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/refactor-base64-util.tid @@ -0,0 +1,14 @@ +title: $:/changenotes/5.4.0/#9488 +description: Refactor base64 utility functions +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9488 +github-contributors: Leilei332 + +Refactor base64 utility functions in [[$:/core/modules/utils/utils.js]] to make it easier for maintainence. + +* Split base64 utility functions to two platforms +* Use `TextEncoder` and `TextDecoder` api in Node.js +* Do not export `base64ToBytes` and `bytesToBase64` \ No newline at end of file From c6906120d89d918f3db214ef54bf3877dc16b786 Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 19:56:25 +0800 Subject: [PATCH 382/458] Migrate diff-match-patch to a modern fork (#9511) * Migrate to diff-match-patch-es & update api * Update acknowledgements * Update change notes * Fix editcost attribute not working * Make library compatible with ES2017 --- core/acknowledgements.tid | 1 + core/modules/filters/strings.js | 126 +- .../diff-match-patch/diff_match_patch.js | 55 +- .../diff_match_patch_uncompressed.js | 2431 ++++++----------- core/modules/widgets/diff-text.js | 13 +- .../5.4.0/migrate-to-dmp-es - api.tid | 11 + .../releasenotes/5.4.0/migrate-to-dmp-es.tid | 10 + 7 files changed, 912 insertions(+), 1735 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es - api.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es.tid diff --git a/core/acknowledgements.tid b/core/acknowledgements.tid index 3d4010bfd3..63ff5ed6e5 100644 --- a/core/acknowledgements.tid +++ b/core/acknowledgements.tid @@ -5,3 +5,4 @@ TiddlyWiki incorporates code from these fine OpenSource projects: * [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]] * [[The Jasmine JavaScript Test Framework|https://jasmine.github.io/]] * [[modern-normalize by Sindre Sorhus|https://github.com/sindresorhus/modern-normalize]] +* [[diff-match-patch-es by antfu|https://github.com/antfu/diff-match-patch-es]] diff --git a/core/modules/filters/strings.js b/core/modules/filters/strings.js index 4183bac7f6..1f06c29074 100644 --- a/core/modules/filters/strings.js +++ b/core/modules/filters/strings.js @@ -71,107 +71,103 @@ exports.join = makeStringReducingOperator( },null ); -var dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js"); +const dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js"); exports.levenshtein = makeStringBinaryOperator( function(a,b) { - var dmpObject = new dmp.diff_match_patch(), - diffs = dmpObject.diff_main(a,b); - return [dmpObject.diff_levenshtein(diffs) + ""]; + const diffs = dmp.diffMain(a,b); + return [dmp.diffLevenshtein(diffs).toString()]; } ); // these two functions are adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs function diffLineWordMode(text1,text2,mode) { - var dmpObject = new dmp.diff_match_patch(); var a = diffPartsToChars(text1,text2,mode); var lineText1 = a.chars1; var lineText2 = a.chars2; var lineArray = a.lineArray; - var diffs = dmpObject.diff_main(lineText1,lineText2,false); - dmpObject.diff_charsToLines_(diffs,lineArray); + var diffs = dmp.diffMain(lineText1,lineText2,false); + dmp.diffCharsToLines(diffs,lineArray); return diffs; } function diffPartsToChars(text1,text2,mode) { var lineArray = []; var lineHash = {}; - lineArray[0] = ''; + lineArray[0] = ""; - function diff_linesToPartsMunge_(text,mode) { - var chars = ''; - var lineStart = 0; - var lineEnd = -1; - var lineArrayLength = lineArray.length, - regexpResult; - var searchRegexp = /\W+/g; - while(lineEnd < text.length - 1) { - if(mode === "words") { - regexpResult = searchRegexp.exec(text); - lineEnd = searchRegexp.lastIndex; - if(regexpResult === null) { - lineEnd = text.length; - } - lineEnd = --lineEnd; - } else { - lineEnd = text.indexOf('\n', lineStart); - if(lineEnd == -1) { - lineEnd = text.length - 1; - } - } - var line = text.substring(lineStart, lineEnd + 1); + function diff_linesToPartsMunge_(text,mode) { + var chars = ""; + var lineStart = 0; + var lineEnd = -1; + var lineArrayLength = lineArray.length, + regexpResult; + var searchRegexp = /\W+/g; + while(lineEnd < text.length - 1) { + if(mode === "words") { + regexpResult = searchRegexp.exec(text); + lineEnd = searchRegexp.lastIndex; + if(regexpResult === null) { + lineEnd = text.length; + } + lineEnd = --lineEnd; + } else { + lineEnd = text.indexOf("\n", lineStart); + if(lineEnd == -1) { + lineEnd = text.length - 1; + } + } + var line = text.substring(lineStart, lineEnd + 1); - if(lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : (lineHash[line] !== undefined)) { + if(lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : (lineHash[line] !== undefined)) { chars += String.fromCharCode(lineHash[line]); - } else { - if(lineArrayLength == maxLines) { - line = text.substring(lineStart); - lineEnd = text.length; - } - chars += String.fromCharCode(lineArrayLength); - lineHash[line] = lineArrayLength; - lineArray[lineArrayLength++] = line; - } - lineStart = lineEnd + 1; - } - return chars; - } - var maxLines = 40000; - var chars1 = diff_linesToPartsMunge_(text1,mode); - maxLines = 65535; - var chars2 = diff_linesToPartsMunge_(text2,mode); - return {chars1: chars1, chars2: chars2, lineArray: lineArray}; + } else { + if(lineArrayLength == maxLines) { + line = text.substring(lineStart); + lineEnd = text.length; + } + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + lineStart = lineEnd + 1; + } + return chars; + } + var maxLines = 40000; + var chars1 = diff_linesToPartsMunge_(text1,mode); + maxLines = 65535; + var chars2 = diff_linesToPartsMunge_(text2,mode); + return {chars1: chars1, chars2: chars2, lineArray: lineArray}; }; exports.makepatches = function(source,operator,options) { - var dmpObject = new dmp.diff_match_patch(), - suffix = operator.suffix || "", + var suffix = operator.suffix || "", result = []; - source(function(tiddler,title) { - var diffs, patches; - if(suffix === "lines" || suffix === "words") { - diffs = diffLineWordMode(title,operator.operand,suffix); - patches = dmpObject.patch_make(title,diffs); - } else { - patches = dmpObject.patch_make(title,operator.operand); - } - Array.prototype.push.apply(result,[dmpObject.patch_toText(patches)]); - }); + source(function(tiddler,title) { + let diffs, patches; + if(suffix === "lines" || suffix === "words") { + diffs = diffLineWordMode(title,operator.operand,suffix); + patches = dmp.patchMake(title,diffs); + } else { + patches = dmp.patchMake(title,operator.operand); + } + Array.prototype.push.apply(result,[dmp.patchToText(patches)]); + }); return result; }; exports.applypatches = makeStringBinaryOperator( function(a,b) { - var dmpObject = new dmp.diff_match_patch(), - patches; + let patches; try { - patches = dmpObject.patch_fromText(b); + patches = dmp.patchFromText(b); } catch(e) { } if(patches) { - return [dmpObject.patch_apply(patches,a)[0]]; + return [dmp.patchApply(patches,a)[0]]; } else { return [a]; } diff --git a/core/modules/utils/diff-match-patch/diff_match_patch.js b/core/modules/utils/diff-match-patch/diff_match_patch.js index 879bf1e8d1..0b4a2e160e 100755 --- a/core/modules/utils/diff-match-patch/diff_match_patch.js +++ b/core/modules/utils/diff-match-patch/diff_match_patch.js @@ -1,53 +1,2 @@ -function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0; -diff_match_patch.prototype.diff_main=function(a,b,c,d){"undefined"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error("Null input. (diff_main)");if(a==b)return a?[[DIFF_EQUAL,a]]:[];"undefined"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a, -b,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a}; -diff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL, -a]],c)):c&&100c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n= -u)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]}; -diff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)}; -diff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b="",c=0,f=-1,g=d.length;fd?a=a.substring(c-d):c=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null; -var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.lengthd[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]}; -diff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}}; -diff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_); -return k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c- -1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\s/;diff_match_patch.linebreakRegex_=/[\r\n]/;diff_match_patch.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch.blanklineStartRegex_=/^\r?\n\r?\n/; -diff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;fb)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)}; -diff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=//g,f=/\n/g,g=0;g");switch(h){case DIFF_INSERT:b[g]=''+l+"";break;case DIFF_DELETE:b[g]=''+l+"";break;case DIFF_EQUAL:b[g]=""+l+""}}return b.join("")}; -diff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;cthis.Match_MaxBits)throw Error("Pattern too long for this browser.");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h}; -diff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c}; -diff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;cthis.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h, -g);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;le[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length- -1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c}; -diff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0, -this.Patch_Margin);""!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;ce in n?t(n,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[e]=s,l=(t,l)=>{for(var i in l||(l={}))e.call(l,i)&&r(t,i,l[i]);if(n)for(var i of n(l))s.call(l,i)&&r(t,i,l[i]);return t};const i=Object.freeze({diffTimeout:1,diffEditCost:4,matchThreshold:.5,matchDistance:1e3,patchDeleteThreshold:.5,patchMargin:4,matchMaxBits:32});function h(t){if(null==t?void 0:t.__resolved)return t;const n=l(l({},i),t);return Object.defineProperty(n,"__resolved",{value:!0,enumerable:!1}),n}const g=-1;function o(t,n){return[t,n]}function f(t,n,e,s=!0,r){const l=h(e);void 0===r&&(r=l.diffTimeout<=0?Number.MAX_VALUE:(new Date).getTime()+1e3*l.diffTimeout);const i=r;if(null==t||null==n)throw new Error("Null input. (diff_main)");if(t===n)return t?[o(0,t)]:[];const d=s;let x=p(t,n);const M=t.substring(0,x);x=b(t=t.substring(x),n=n.substring(x));const w=t.substring(t.length-x),y=function(t,n,e,s,r){let l;if(!t)return[o(1,n)];if(!n)return[o(g,t)];const i=t.length>n.length?t:n,h=t.length>n.length?n:t,d=i.indexOf(h);if(-1!==d)return l=[o(1,i.substring(0,d)),o(0,h),o(1,i.substring(d+h.length))],t.length>n.length&&(l[0][0]=l[2][0]=g),l;if(1===h.length)return[o(g,t),o(1,n)];const x=function(t,n,e){if(e.diffTimeout<=0)return null;const s=t.length>n.length?t:n,r=t.length>n.length?n:t;if(s.length<4||2*r.length=t.length?[r,l,i,h,o]:null}const i=l(s,r,Math.ceil(s.length/4)),h=l(s,r,Math.ceil(s.length/2));let g,o,f,a,c;if(!i&&!h)return null;g=h?i&&i[4].length>h[4].length?i:h:i;t.length>n.length?(o=g[0],f=g[1],a=g[2],c=g[3]):(a=g[0],c=g[1],o=g[2],f=g[3]);const u=g[4];return[o,f,a,c,u]}(t,n,e);if(x){const t=x[0],n=x[1],l=x[2],i=x[3],h=x[4],g=f(t,l,e,s,r),a=f(n,i,e,s,r);return g.concat([o(0,h)],a)}return s&&t.length>100&&n.length>100?function(t,n,e,s){const r=c(t,n);t=r.chars1,n=r.chars2;const l=r.lineArray,i=f(t,n,e,!1,s);u(i,l),m(i),i.push(o(0,""));let h=0,a=0,p=0,b="",d="";for(;h=1&&p>=1){i.splice(h-a-p,a+p),h=h-a-p;const t=f(b,d,e,!1,s);for(let n=t.length-1;n>=0;n--)i.splice(h,0,t[n]);h+=t.length}p=0,a=0,b="",d=""}h++}return i.pop(),i}(t,n,e,r):function(t,n,e,s){const r=t.length,l=n.length,i=Math.ceil((r+l)/2),h=i,f=2*i,c=new Array(f),u=new Array(f);for(let g=0;gs);g++){for(let i=-g+d;i<=g-m;i+=2){const o=h+i;let x;x=i===-g||i!==g&&c[o-1]r)m+=2;else if(M>l)d+=2;else if(b){const l=h+p-i;if(l>=0&&l=r-u[l])return a(t,n,e,x,M,s)}}}for(let i=-g+x;i<=g-M;i+=2){const o=h+i;let d;d=i===-g||i!==g&&u[o-1]r)M+=2;else if(m>l)x+=2;else if(!b){const l=h+p-i;if(l>=0&&l=d)return a(t,n,e,i,h+i-l,s)}}}}return[o(g,t),o(1,n)]}(t,n,e,r)}(t=t.substring(0,t.length-x),n=n.substring(0,n.length-x),l,d,i);return M&&y.unshift(o(0,M)),w&&y.push(o(0,w)),k(y),y}function a(t,n,e,s,r,l){const i=t.substring(0,s),h=n.substring(0,r),g=t.substring(s),o=n.substring(r),a=f(i,h,e,!1,l),c=f(g,o,e,!1,l);return a.concat(c)}function c(t,n){const e=[],s={};let r=4e4;function l(t){let n="",l=0,i=-1,h=e.length;for(;is?t=t.substring(e-s):e0?e[s-1]:-1,i=0,h=0,f=0,a=0,r=null,n=!0)),l++;for(n&&k(t),O(t),l=1;l=r?(s>=n.length/2||s>=e.length/2)&&(t.splice(l,0,o(0,e.substring(0,s))),t[l-1][1]=n.substring(0,n.length-s),t[l+1][1]=e.substring(s),l++):(r>=n.length/2||r>=e.length/2)&&(t.splice(l,0,o(0,n.substring(0,r))),t[l-1][0]=1,t[l-1][1]=e.substring(0,e.length-r),t[l+1][0]=g,t[l+1][1]=n.substring(r),l++),l++}l++}}const x=/[^a-z0-9]/i,M=/\s/,w=/[\r\n]/,y=/\n\r?\n$/,A=/^\r?\n\r?\n/;function O(t){function n(t,n){if(!t||!n)return 6;const e=t.charAt(t.length-1),s=n.charAt(0),r=e.match(x),l=s.match(x),i=r&&e.match(M),h=l&&s.match(M),g=i&&e.match(w),o=h&&s.match(w),f=g&&t.match(y),a=o&&n.match(A);return f||a?5:g||o?4:r&&!i&&h?3:i||h?2:r||l?1:0}let e=1;for(;e=f&&(f=t,h=s,g=r,o=l)}t[e-1][1]!==h&&(h?t[e-1][1]=h:(t.splice(e-1,1),e--),t[e][1]=g,o?t[e+1][1]=o:(t.splice(e+1,1),e--))}e++}}function $(t,n={}){const{diffEditCost:e=i.diffEditCost}=n;let s=!1;const r=[];let l=0,h=null,f=0,a=!1,c=!1,u=!1,p=!1;for(;f0?r[l-1]:-1,u=p=!1),s=!0)}f++}s&&k(t)}function k(t){t.push(o(0,""));let n,e=0,s=0,r=0,l="",i="";for(;e1?(0!==s&&0!==r&&(n=p(i,l),0!==n&&(e-s-r>0&&0===t[e-s-r-1][0]?t[e-s-r-1][1]+=i.substring(0,n):(t.splice(0,0,o(0,i.substring(0,n))),e++),i=i.substring(n),l=l.substring(n)),n=b(i,l),0!==n&&(t[e][1]=i.substring(i.length-n)+t[e][1],i=i.substring(0,i.length-n),l=l.substring(0,l.length-n))),e-=s+r,t.splice(e,s+r),l.length&&(t.splice(e,0,o(g,l)),e++),i.length&&(t.splice(e,0,o(1,i)),e++),e++):0!==e&&0===t[e-1][0]?(t[e-1][1]+=t[e][1],t.splice(e,1)):e++,r=0,s=0,l="",i=""}""===t[t.length-1][1]&&t.pop();let h=!1;for(e=1;en));e++)l=s,i=r;return t.length!==e&&t[e][0]===g?i:i+(n-l)}function E(t){const n=[];for(let e=0;er.matchMaxBits)throw new Error("Pattern too long for this browser.");const l=D(n);function i(t,s){const l=t/n.length,i=Math.abs(e-s);return r.matchDistance?l+i/r.matchDistance:i?1:l}let g=r.matchThreshold,o=t.indexOf(n,e);-1!==o&&(g=Math.min(i(0,o),g),o=t.lastIndexOf(n,e+n.length),-1!==o&&(g=Math.min(i(0,o),g)));const f=1<=s;n--){const r=l[t.charAt(n-1)];if(b[n]=0===h?(b[n+1]<<1|1)&r:(b[n+1]<<1|1)&r|(p[n+1]|p[n])<<1|1|p[n+1],b[n]&f){const t=i(h,n-1);if(t<=g){if(g=t,o=n-1,!(o>e))break;s=Math.max(1,2*e-o)}}}if(i(h+1,e)>g)break;p=b}return o}function D(t){const n={};for(let e=0;en in t?B(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,F=(t,n)=>{for(var e in n||(n={}))P.call(n,e)&&S(t,e,n[e]);if(_)for(var e of _(n))N.call(n,e)&&S(t,e,n[e]);return t};function L(t,n,e){if(0===n.length)return;if(null===t.start2)throw new Error("patch not initialized");const{matchMaxBits:s=i.matchMaxBits,patchMargin:r=i.patchMargin}=e;let l=n.substring(t.start2,t.start2+t.length1),h=0;for(;n.indexOf(l)!==n.lastIndexOf(l)&&l.length2&&(m(h),$(h));else if(t&&"object"==typeof t&&void 0===n&&void 0===e)h=t,l=E(h);else if("string"==typeof t&&n&&"object"==typeof n&&void 0===e)l=t,h=n;else{if("string"!=typeof t||"string"!=typeof n||!e||"object"!=typeof e)throw new Error("Unknown call format to patch_make.");l=t,h=e}if(0===h.length)return[];const o=[];let a=q(),c=0,u=0,p=0,b=l,d=l;for(let i=0;i=2*r.patchMargin&&c&&(L(a,b,r),o.push(a),a=q(),c=0,b=d,u=p)}1!==t&&(u+=n.length),t!==g&&(p+=n.length)}return c&&(L(a,b,r),o.push(a)),o}function R(t){const n=[];for(let e=0;el[0][1].length){const t=e-l[0][1].length;l[0][1]=s.substring(l[0][1].length)+l[0][1],r.start1-=t,r.start2-=t,r.length1+=t,r.length2+=t}if(r=t[t.length-1],l=r.diffs,0===l.length||0!==l[l.length-1][0])l.push(o(0,s)),r.length1+=e,r.length2+=e;else if(e>l[l.length-1][1].length){const t=e-l[l.length-1][1].length;l[l.length-1][1]+=s.substring(0,t),r.length1+=t,r.length2+=t}return s}function X(t,n){const e=h(n);for(let s=0;s2*e.matchMaxBits?(h.length1+=s.length,r+=s.length,f=!1,h.diffs.push(o(t,s)),n.diffs.shift()):(s=s.substring(0,e.matchMaxBits-h.length1-e.patchMargin),h.length1+=s.length,r+=s.length,0===t?(h.length2+=s.length,l+=s.length):f=!1,h.diffs.push(o(t,s)),s===n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(s.length))}i=I(h.diffs),i=i.substring(i.length-e.patchMargin);const a=E(n.diffs).substring(0,e.patchMargin);""!==a&&(h.length1+=a.length,h.length2+=a.length,0!==h.diffs.length&&0===h.diffs[h.diffs.length-1][0]?h.diffs[h.diffs.length-1][1]+=a:h.diffs.push(o(0,a))),f||t.splice(++s,0,h)}}}function q(){const t={diffs:[],start1:null,start2:null,length1:0,length2:0,toString:function(){let t,n;t=0===this.length1?`${this.start1},0`:1===this.length1?this.start1+1:`${this.start1+1},${this.length1}`,n=0===this.length2?`${this.start2},0`:1===this.length2?this.start2+1:`${this.start2+1},${this.length2}`;const e=[`@@ -${t} +${n} @@\n`];let s;for(let r=0;r/g,l=/\n/g;for(let i=0;i");switch(h){case 1:n[i]=`${o}`;break;case g:n[i]=`${o}`;break;case 0:n[i]=`${o}`}}return n.join("")},exports.diffText1=E,exports.diffText2=I,exports.diffToDelta=function(t){const n=[];for(let e=0;es.matchMaxBits?(a=T(n,o.substring(0,s.matchMaxBits),r,e),-1!==a&&(c=T(n,o.substring(o.length-s.matchMaxBits),r+o.length-s.matchMaxBits,e),(-1===c||a>=c)&&(a=-1))):a=T(n,o,r,e),-1===a)i[h]=!1,l-=t[h].length2-t[h].length1;else{let u;if(i[h]=!0,l=a-r,u=-1===c?n.substring(a,a+o.length):n.substring(a,c+s.matchMaxBits),o===u)n=n.substring(0,a)+I(t[h].diffs)+n.substring(a+o.length);else{const r=f(o,u,e,!1);if(o.length>s.matchMaxBits&&j(r)/o.length>s.patchDeleteThreshold)i[h]=!1;else{O(r);let e=0,s=0;for(let l=0;l key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$1 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + if (__getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(b)) { + if (__propIsEnum$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + } + return a; +}; +const defaultOptions = /* @__PURE__ */ Object.freeze({ + diffTimeout: 1, + diffEditCost: 4, + matchThreshold: 0.5, + matchDistance: 1e3, + patchDeleteThreshold: 0.5, + patchMargin: 4, + matchMaxBits: 32 +}); +function resolveOptions(options) { + if (options == null ? undefined : options.__resolved) + return options; + const resolved = __spreadValues$1(__spreadValues$1({}, defaultOptions), options); + Object.defineProperty(resolved, "__resolved", { value: true, enumerable: false }); + return resolved; } - -// DIFF FUNCTIONS - - -/** - * The data structure representing a diff is an array of tuples: - * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] - * which means: delete 'Hello', add 'Goodbye' and keep ' world.' - */ -var DIFF_DELETE = -1; -var DIFF_INSERT = 1; -var DIFF_EQUAL = 0; - -/** @typedef {{0: number, 1: string}} */ -diff_match_patch.Diff; - - -/** - * Find the differences between two texts. Simplifies the problem by stripping - * any common prefix or suffix off the texts before diffing. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {boolean=} opt_checklines Optional speedup flag. If present and false, - * then don't run a line-level diff first to identify the changed areas. - * Defaults to true, which does a faster, slightly less optimal diff. - * @param {number} opt_deadline Optional time when the diff should be complete - * by. Used internally for recursive calls. Users should set DiffTimeout - * instead. - * @return {!Array.} Array of diff tuples. - */ -diff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines, - opt_deadline) { - // Set a deadline by which time the diff must be complete. - if (typeof opt_deadline == 'undefined') { - if (this.Diff_Timeout <= 0) { +const DIFF_DELETE = -1; +const DIFF_INSERT = 1; +const DIFF_EQUAL = 0; +function createDiff(op, text) { + return [op, text]; +} +function diffMain(text1, text2, options, opt_checklines = true, opt_deadline) { + const resolved = resolveOptions(options); + if (typeof opt_deadline == "undefined") { + if (resolved.diffTimeout <= 0) opt_deadline = Number.MAX_VALUE; - } else { - opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000; - } + else + opt_deadline = (/* @__PURE__ */ new Date()).getTime() + resolved.diffTimeout * 1e3; } - var deadline = opt_deadline; - - // Check for null inputs. - if (text1 == null || text2 == null) { - throw new Error('Null input. (diff_main)'); - } - - // Check for equality (speedup). - if (text1 == text2) { - if (text1) { - return [[DIFF_EQUAL, text1]]; - } + const deadline = opt_deadline; + if (text1 == null || text2 == null) + throw new Error("Null input. (diff_main)"); + if (text1 === text2) { + if (text1) + return [createDiff(DIFF_EQUAL, text1)]; return []; } - - if (typeof opt_checklines == 'undefined') { - opt_checklines = true; - } - var checklines = opt_checklines; - - // Trim off common prefix (speedup). - var commonlength = this.diff_commonPrefix(text1, text2); - var commonprefix = text1.substring(0, commonlength); + const checklines = opt_checklines; + let commonlength = diffCommonPrefix(text1, text2); + const commonprefix = text1.substring(0, commonlength); text1 = text1.substring(commonlength); text2 = text2.substring(commonlength); - - // Trim off common suffix (speedup). - commonlength = this.diff_commonSuffix(text1, text2); - var commonsuffix = text1.substring(text1.length - commonlength); + commonlength = diffCommonSuffix(text1, text2); + const commonsuffix = text1.substring(text1.length - commonlength); text1 = text1.substring(0, text1.length - commonlength); text2 = text2.substring(0, text2.length - commonlength); - - // Compute the diff on the middle block. - var diffs = this.diff_compute_(text1, text2, checklines, deadline); - - // Restore the prefix and suffix. - if (commonprefix) { - diffs.unshift([DIFF_EQUAL, commonprefix]); - } - if (commonsuffix) { - diffs.push([DIFF_EQUAL, commonsuffix]); - } - this.diff_cleanupMerge(diffs); + const diffs = diffCompute(text1, text2, resolved, checklines, deadline); + if (commonprefix) + diffs.unshift(createDiff(DIFF_EQUAL, commonprefix)); + if (commonsuffix) + diffs.push(createDiff(DIFF_EQUAL, commonsuffix)); + diffCleanupMerge(diffs); return diffs; -}; - - -/** - * Find the differences between two texts. Assumes that the texts do not - * have any common prefix or suffix. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {boolean} checklines Speedup flag. If false, then don't run a - * line-level diff first to identify the changed areas. - * If true, then run a faster, slightly less optimal diff. - * @param {number} deadline Time when the diff should be complete by. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines, - deadline) { - var diffs; - +} +function diffCompute(text1, text2, options, checklines, deadline) { + let diffs; if (!text1) { - // Just add some text (speedup). - return [[DIFF_INSERT, text2]]; + return [createDiff(DIFF_INSERT, text2)]; } - if (!text2) { - // Just delete some text (speedup). - return [[DIFF_DELETE, text1]]; + return [createDiff(DIFF_DELETE, text1)]; } - - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - var i = longtext.indexOf(shorttext); - if (i != -1) { - // Shorter text is inside the longer text (speedup). - diffs = [[DIFF_INSERT, longtext.substring(0, i)], - [DIFF_EQUAL, shorttext], - [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; - // Swap insertions for deletions if diff is reversed. - if (text1.length > text2.length) { + const longtext = text1.length > text2.length ? text1 : text2; + const shorttext = text1.length > text2.length ? text2 : text1; + const i = longtext.indexOf(shorttext); + if (i !== -1) { + diffs = [createDiff(DIFF_INSERT, longtext.substring(0, i)), createDiff(DIFF_EQUAL, shorttext), createDiff(DIFF_INSERT, longtext.substring(i + shorttext.length))]; + if (text1.length > text2.length) diffs[0][0] = diffs[2][0] = DIFF_DELETE; - } return diffs; } - - if (shorttext.length == 1) { - // Single character string. - // After the previous speedup, the character can't be an equality. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + if (shorttext.length === 1) { + return [createDiff(DIFF_DELETE, text1), createDiff(DIFF_INSERT, text2)]; } - - // Check to see if the problem can be split in two. - var hm = this.diff_halfMatch_(text1, text2); + const hm = diffHalfMatch(text1, text2, options); if (hm) { - // A half-match was found, sort out the return data. - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - var mid_common = hm[4]; - // Send both pairs off for separate processing. - var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline); - var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); - // Merge the results. - return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b); + const text1_a = hm[0]; + const text1_b = hm[1]; + const text2_a = hm[2]; + const text2_b = hm[3]; + const mid_common = hm[4]; + const diffs_a = diffMain(text1_a, text2_a, options, checklines, deadline); + const diffs_b = diffMain(text1_b, text2_b, options, checklines, deadline); + return diffs_a.concat([createDiff(DIFF_EQUAL, mid_common)], diffs_b); } - - if (checklines && text1.length > 100 && text2.length > 100) { - return this.diff_lineMode_(text1, text2, deadline); - } - - return this.diff_bisect_(text1, text2, deadline); -}; - - -/** - * Do a quick line-level diff on both strings, then rediff the parts for - * greater accuracy. - * This speedup can produce non-minimal diffs. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} deadline Time when the diff should be complete by. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) { - // Scan the text on a line-by-line basis first. - var a = this.diff_linesToChars_(text1, text2); + if (checklines && text1.length > 100 && text2.length > 100) + return diffLineMode(text1, text2, options, deadline); + return diffBisect(text1, text2, options, deadline); +} +function diffLineMode(text1, text2, options, deadline) { + const a = diffLinesToChars(text1, text2); text1 = a.chars1; text2 = a.chars2; - var linearray = a.lineArray; - - var diffs = this.diff_main(text1, text2, false, deadline); - - // Convert the diff back to original text. - this.diff_charsToLines_(diffs, linearray); - // Eliminate freak matches (e.g. blank lines) - this.diff_cleanupSemantic(diffs); - - // Rediff any replacement blocks, this time character-by-character. - // Add a dummy entry at the end. - diffs.push([DIFF_EQUAL, '']); - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; + const linearray = a.lineArray; + const diffs = diffMain(text1, text2, options, false, deadline); + diffCharsToLines(diffs, linearray); + diffCleanupSemantic(diffs); + diffs.push(createDiff(DIFF_EQUAL, "")); + let pointer = 0; + let count_delete = 0; + let count_insert = 0; + let text_delete = ""; + let text_insert = ""; while (pointer < diffs.length) { switch (diffs[pointer][0]) { case DIFF_INSERT: @@ -254,282 +132,169 @@ diff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) { text_delete += diffs[pointer][1]; break; case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. if (count_delete >= 1 && count_insert >= 1) { - // Delete the offending records and add the merged ones. - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert); + diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert); pointer = pointer - count_delete - count_insert; - var a = this.diff_main(text_delete, text_insert, false, deadline); - for (var j = a.length - 1; j >= 0; j--) { - diffs.splice(pointer, 0, a[j]); - } - pointer = pointer + a.length; + const subDiff = diffMain(text_delete, text_insert, options, false, deadline); + for (let j = subDiff.length - 1; j >= 0; j--) + diffs.splice(pointer, 0, subDiff[j]); + pointer = pointer + subDiff.length; } count_insert = 0; count_delete = 0; - text_delete = ''; - text_insert = ''; + text_delete = ""; + text_insert = ""; break; } pointer++; } - diffs.pop(); // Remove the dummy entry at the end. - + diffs.pop(); return diffs; -}; - - -/** - * Find the 'middle snake' of a diff, split the problem in two - * and return the recursively constructed diff. - * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} deadline Time at which to bail if not yet complete. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - var max_d = Math.ceil((text1_length + text2_length) / 2); - var v_offset = max_d; - var v_length = 2 * max_d; - var v1 = new Array(v_length); - var v2 = new Array(v_length); - // Setting all elements to -1 is faster in Chrome & Firefox than mixing - // integers and undefined. - for (var x = 0; x < v_length; x++) { +} +function diffBisect(text1, text2, options, deadline) { + const text1_length = text1.length; + const text2_length = text2.length; + const max_d = Math.ceil((text1_length + text2_length) / 2); + const v_offset = max_d; + const v_length = 2 * max_d; + const v1 = new Array(v_length); + const v2 = new Array(v_length); + for (let x = 0; x < v_length; x++) { v1[x] = -1; v2[x] = -1; } v1[v_offset + 1] = 0; v2[v_offset + 1] = 0; - var delta = text1_length - text2_length; - // If the total number of characters is odd, then the front path will collide - // with the reverse path. - var front = (delta % 2 != 0); - // Offsets for start and end of k loop. - // Prevents mapping of space beyond the grid. - var k1start = 0; - var k1end = 0; - var k2start = 0; - var k2end = 0; - for (var d = 0; d < max_d; d++) { - // Bail out if deadline is reached. - if ((new Date()).getTime() > deadline) { + const delta = text1_length - text2_length; + const front = delta % 2 !== 0; + let k1start = 0; + let k1end = 0; + let k2start = 0; + let k2end = 0; + for (let d = 0; d < max_d; d++) { + if ((/* @__PURE__ */ new Date()).getTime() > deadline) break; - } - - // Walk the front path one step. - for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { - var k1_offset = v_offset + k1; - var x1; - if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) { + for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + const k1_offset = v_offset + k1; + let x1; + if (k1 === -d || k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1]) x1 = v1[k1_offset + 1]; - } else { + else x1 = v1[k1_offset - 1] + 1; - } - var y1 = x1 - k1; - while (x1 < text1_length && y1 < text2_length && - text1.charAt(x1) == text2.charAt(y1)) { + let y1 = x1 - k1; + while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) === text2.charAt(y1)) { x1++; y1++; } v1[k1_offset] = x1; if (x1 > text1_length) { - // Ran off the right of the graph. k1end += 2; } else if (y1 > text2_length) { - // Ran off the bottom of the graph. k1start += 2; } else if (front) { - var k2_offset = v_offset + delta - k1; - if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { - // Mirror x2 onto top-left coordinate system. - var x2 = text1_length - v2[k2_offset]; + const k2_offset = v_offset + delta - k1; + if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) { + const x2 = text1_length - v2[k2_offset]; if (x1 >= x2) { - // Overlap detected. - return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + return diffBisectSplit(text1, text2, options, x1, y1, deadline); } } } } - - // Walk the reverse path one step. - for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { - var k2_offset = v_offset + k2; - var x2; - if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) { + for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + const k2_offset = v_offset + k2; + let x2; + if (k2 === -d || k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1]) x2 = v2[k2_offset + 1]; - } else { + else x2 = v2[k2_offset - 1] + 1; - } - var y2 = x2 - k2; - while (x2 < text1_length && y2 < text2_length && - text1.charAt(text1_length - x2 - 1) == - text2.charAt(text2_length - y2 - 1)) { + let y2 = x2 - k2; + while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)) { x2++; y2++; } v2[k2_offset] = x2; if (x2 > text1_length) { - // Ran off the left of the graph. k2end += 2; } else if (y2 > text2_length) { - // Ran off the top of the graph. k2start += 2; } else if (!front) { - var k1_offset = v_offset + delta - k2; - if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { - var x1 = v1[k1_offset]; - var y1 = v_offset + x1 - k1_offset; - // Mirror x2 onto top-left coordinate system. + const k1_offset = v_offset + delta - k2; + if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) { + const x1 = v1[k1_offset]; + const y1 = v_offset + x1 - k1_offset; x2 = text1_length - x2; if (x1 >= x2) { - // Overlap detected. - return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + return diffBisectSplit(text1, text2, options, x1, y1, deadline); } } } } } - // Diff took too long and hit the deadline or - // number of diffs equals number of characters, no commonality at all. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; -}; - - -/** - * Given the location of the 'middle snake', split the diff in two parts - * and recurse. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} x Index of split point in text1. - * @param {number} y Index of split point in text2. - * @param {number} deadline Time at which to bail if not yet complete. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y, - deadline) { - var text1a = text1.substring(0, x); - var text2a = text2.substring(0, y); - var text1b = text1.substring(x); - var text2b = text2.substring(y); - - // Compute both diffs serially. - var diffs = this.diff_main(text1a, text2a, false, deadline); - var diffsb = this.diff_main(text1b, text2b, false, deadline); - + return [createDiff(DIFF_DELETE, text1), createDiff(DIFF_INSERT, text2)]; +} +function diffBisectSplit(text1, text2, options, x, y, deadline) { + const text1a = text1.substring(0, x); + const text2a = text2.substring(0, y); + const text1b = text1.substring(x); + const text2b = text2.substring(y); + const diffs = diffMain(text1a, text2a, options, false, deadline); + const diffsb = diffMain(text1b, text2b, options, false, deadline); return diffs.concat(diffsb); -}; - - -/** - * Split two texts into an array of strings. Reduce the texts to a string of - * hashes where each Unicode character represents one line. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {{chars1: string, chars2: string, lineArray: !Array.}} - * An object containing the encoded text1, the encoded text2 and - * the array of unique strings. - * The zeroth element of the array of unique strings is intentionally blank. - * @private - */ -diff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) { - var lineArray = []; // e.g. lineArray[4] == 'Hello\n' - var lineHash = {}; // e.g. lineHash['Hello\n'] == 4 - - // '\x00' is a valid character, but various debuggers don't like it. - // So we'll insert a junk entry to avoid generating a null character. - lineArray[0] = ''; - - /** - * Split a text into an array of strings. Reduce the texts to a string of - * hashes where each Unicode character represents one line. - * Modifies linearray and linehash through being a closure. - * @param {string} text String to encode. - * @return {string} Encoded string. - * @private - */ - function diff_linesToCharsMunge_(text) { - var chars = ''; - // Walk the text, pulling out a substring for each line. - // text.split('\n') would would temporarily double our memory footprint. - // Modifying text would create many large strings to garbage collect. - var lineStart = 0; - var lineEnd = -1; - // Keeping our own length variable is faster than looking it up. - var lineArrayLength = lineArray.length; +} +function diffLinesToChars(text1, text2) { + const lineArray = []; + const lineHash = {}; + let maxLines = 4e4; + lineArray[0] = ""; + function diffLinesToCharsMunge(text) { + let chars = ""; + let lineStart = 0; + let lineEnd = -1; + let lineArrayLength = lineArray.length; while (lineEnd < text.length - 1) { - lineEnd = text.indexOf('\n', lineStart); - if (lineEnd == -1) { + lineEnd = text.indexOf("\n", lineStart); + if (lineEnd === -1) lineEnd = text.length - 1; - } - var line = text.substring(lineStart, lineEnd + 1); - lineStart = lineEnd + 1; - - if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : - (lineHash[line] !== undefined)) { + let line = text.substring(lineStart, lineEnd + 1); + if (lineHash.hasOwnProperty ? Object.prototype.hasOwnProperty.call(lineHash, line) : lineHash[line] !== undefined) { chars += String.fromCharCode(lineHash[line]); } else { + if (lineArrayLength === maxLines) { + line = text.substring(lineStart); + lineEnd = text.length; + } chars += String.fromCharCode(lineArrayLength); lineHash[line] = lineArrayLength; lineArray[lineArrayLength++] = line; } + lineStart = lineEnd + 1; } return chars; } - - var chars1 = diff_linesToCharsMunge_(text1); - var chars2 = diff_linesToCharsMunge_(text2); - return {chars1: chars1, chars2: chars2, lineArray: lineArray}; -}; - - -/** - * Rehydrate the text in a diff from a string of line hashes to real lines of - * text. - * @param {!Array.} diffs Array of diff tuples. - * @param {!Array.} lineArray Array of unique strings. - * @private - */ -diff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) { - for (var x = 0; x < diffs.length; x++) { - var chars = diffs[x][1]; - var text = []; - for (var y = 0; y < chars.length; y++) { - text[y] = lineArray[chars.charCodeAt(y)]; - } - diffs[x][1] = text.join(''); + const chars1 = diffLinesToCharsMunge(text1); + maxLines = 65535; + const chars2 = diffLinesToCharsMunge(text2); + return { chars1, chars2, lineArray }; +} +function diffCharsToLines(diffs, lineArray) { + for (let i = 0; i < diffs.length; i++) { + const chars = diffs[i][1]; + const text = []; + for (let j = 0; j < chars.length; j++) + text[j] = lineArray[chars.charCodeAt(j)]; + diffs[i][1] = text.join(""); } -}; - - -/** - * Determine the common prefix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the start of each - * string. - */ -diff_match_patch.prototype.diff_commonPrefix = function(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { +} +function diffCommonPrefix(text1, text2) { + if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerstart = 0; + let pointermin = 0; + let pointermax = Math.min(text1.length, text2.length); + let pointermid = pointermax; + let pointerstart = 0; while (pointermin < pointermid) { - if (text1.substring(pointerstart, pointermid) == - text2.substring(pointerstart, pointermid)) { + if (text1.substring(pointerstart, pointermid) === text2.substring(pointerstart, pointermid)) { pointermin = pointermid; pointerstart = pointermin; } else { @@ -538,30 +303,17 @@ diff_match_patch.prototype.diff_commonPrefix = function(text1, text2) { pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); } return pointermid; -}; - - -/** - * Determine the common suffix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of each string. - */ -diff_match_patch.prototype.diff_commonSuffix = function(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || - text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { +} +function diffCommonSuffix(text1, text2) { + if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) { return 0; } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerend = 0; + let pointermin = 0; + let pointermax = Math.min(text1.length, text2.length); + let pointermid = pointermax; + let pointerend = 0; while (pointermin < pointermid) { - if (text1.substring(text1.length - pointermid, text1.length - pointerend) == - text2.substring(text2.length - pointermid, text2.length - pointerend)) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) === text2.substring(text2.length - pointermid, text2.length - pointerend)) { pointermin = pointermid; pointerend = pointermin; } else { @@ -570,128 +322,65 @@ diff_match_patch.prototype.diff_commonSuffix = function(text1, text2) { pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); } return pointermid; -}; - - -/** - * Determine if the suffix of one string is the prefix of another. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of the first - * string and the start of the second string. - * @private - */ -diff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - // Eliminate the null case. - if (text1_length == 0 || text2_length == 0) { +} +function diffCommonOverlap(text1, text2) { + const text1_length = text1.length; + const text2_length = text2.length; + if (text1_length === 0 || text2_length === 0) return 0; - } - // Truncate the longer string. - if (text1_length > text2_length) { + if (text1_length > text2_length) text1 = text1.substring(text1_length - text2_length); - } else if (text1_length < text2_length) { + else if (text1_length < text2_length) text2 = text2.substring(0, text1_length); - } - var text_length = Math.min(text1_length, text2_length); - // Quick check for the worst case. - if (text1 == text2) { + const text_length = Math.min(text1_length, text2_length); + if (text1 === text2) return text_length; - } - - // Start by looking for a single character match - // and increase length until no match is found. - // Performance analysis: http://neil.fraser.name/news/2010/11/04/ - var best = 0; - var length = 1; + let best = 0; + let length = 1; while (true) { - var pattern = text1.substring(text_length - length); - var found = text2.indexOf(pattern); - if (found == -1) { + const pattern = text1.substring(text_length - length); + const found = text2.indexOf(pattern); + if (found === -1) return best; - } length += found; - if (found == 0 || text1.substring(text_length - length) == - text2.substring(0, length)) { + if (found === 0 || text1.substring(text_length - length) === text2.substring(0, length)) { best = length; length++; } } -}; - - -/** - * Do the two texts share a substring which is at least half the length of the - * longer text? - * This speedup can produce non-minimal diffs. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {Array.} Five element Array, containing the prefix of - * text1, the suffix of text1, the prefix of text2, the suffix of - * text2 and the common middle. Or null if there was no match. - * @private - */ -diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) { - if (this.Diff_Timeout <= 0) { - // Don't risk returning a non-optimal diff if we have unlimited time. +} +function diffHalfMatch(text1, text2, options) { + if (options.diffTimeout <= 0) { return null; } - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { - return null; // Pointless. - } - var dmp = this; // 'this' becomes 'window' in a closure. - - /** - * Does a substring of shorttext exist within longtext such that the substring - * is at least half the length of longtext? - * Closure, but does not reference any external variables. - * @param {string} longtext Longer string. - * @param {string} shorttext Shorter string. - * @param {number} i Start index of quarter length substring within longtext. - * @return {Array.} Five element Array, containing the prefix of - * longtext, the suffix of longtext, the prefix of shorttext, the suffix - * of shorttext and the common middle. Or null if there was no match. - * @private - */ - function diff_halfMatchI_(longtext, shorttext, i) { - // Start with a 1/4 length substring at position i as a seed. - var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); - var j = -1; - var best_common = ''; - var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; - while ((j = shorttext.indexOf(seed, j + 1)) != -1) { - var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), - shorttext.substring(j)); - var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), - shorttext.substring(0, j)); + const longtext = text1.length > text2.length ? text1 : text2; + const shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) + return null; + function diffHalfMatchI(longtext2, shorttext2, i) { + const seed = longtext2.substring(i, i + Math.floor(longtext2.length / 4)); + let j = -1; + let best_common = ""; + let best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; + while ((j = shorttext2.indexOf(seed, j + 1)) !== -1) { + const prefixLength = diffCommonPrefix(longtext2.substring(i), shorttext2.substring(j)); + const suffixLength = diffCommonSuffix(longtext2.substring(0, i), shorttext2.substring(0, j)); if (best_common.length < suffixLength + prefixLength) { - best_common = shorttext.substring(j - suffixLength, j) + - shorttext.substring(j, j + prefixLength); - best_longtext_a = longtext.substring(0, i - suffixLength); - best_longtext_b = longtext.substring(i + prefixLength); - best_shorttext_a = shorttext.substring(0, j - suffixLength); - best_shorttext_b = shorttext.substring(j + prefixLength); + best_common = shorttext2.substring(j - suffixLength, j) + shorttext2.substring(j, j + prefixLength); + best_longtext_a = longtext2.substring(0, i - suffixLength); + best_longtext_b = longtext2.substring(i + prefixLength); + best_shorttext_a = shorttext2.substring(0, j - suffixLength); + best_shorttext_b = shorttext2.substring(j + prefixLength); } } - if (best_common.length * 2 >= longtext.length) { - return [best_longtext_a, best_longtext_b, - best_shorttext_a, best_shorttext_b, best_common]; - } else { + if (best_common.length * 2 >= longtext2.length) + return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common]; + else return null; - } } - - // First check if the second quarter is the seed for a half-match. - var hm1 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 4)); - // Check again based on the third quarter. - var hm2 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 2)); - var hm; + const hm1 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 4)); + const hm2 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 2)); + let hm; if (!hm1 && !hm2) { return null; } else if (!hm2) { @@ -699,12 +388,9 @@ diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) { } else if (!hm1) { hm = hm2; } else { - // Both matched. Select the longest. hm = hm1[4].length > hm2[4].length ? hm1 : hm2; } - - // A half-match was found, sort out the return data. - var text1_a, text1_b, text2_a, text2_b; + let text1_a, text1_b, text2_a, text2_b; if (text1.length > text2.length) { text1_a = hm[0]; text1_b = hm[1]; @@ -716,114 +402,72 @@ diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) { text1_a = hm[2]; text1_b = hm[3]; } - var mid_common = hm[4]; + const mid_common = hm[4]; return [text1_a, text1_b, text2_a, text2_b, mid_common]; -}; - - -/** - * Reduce the number of edits by eliminating semantically trivial equalities. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupSemantic = function(diffs) { - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var equalitiesLength = 0; // Keeping our own length var is faster in JS. - /** @type {?string} */ - var lastequality = null; - // Always equal to diffs[equalities[equalitiesLength - 1]][1] - var pointer = 0; // Index of current position. - // Number of characters that changed prior to the equality. - var length_insertions1 = 0; - var length_deletions1 = 0; - // Number of characters that changed after the equality. - var length_insertions2 = 0; - var length_deletions2 = 0; +} +function diffCleanupSemantic(diffs) { + let changes = false; + const equalities = []; + let equalitiesLength = 0; + let lastEquality = null; + let pointer = 0; + let length_insertions1 = 0; + let length_deletions1 = 0; + let length_insertions2 = 0; + let length_deletions2 = 0; while (pointer < diffs.length) { - if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. + if (diffs[pointer][0] === DIFF_EQUAL) { equalities[equalitiesLength++] = pointer; length_insertions1 = length_insertions2; length_deletions1 = length_deletions2; length_insertions2 = 0; length_deletions2 = 0; - lastequality = diffs[pointer][1]; - } else { // An insertion or deletion. - if (diffs[pointer][0] == DIFF_INSERT) { + lastEquality = diffs[pointer][1]; + } else { + if (diffs[pointer][0] === DIFF_INSERT) length_insertions2 += diffs[pointer][1].length; - } else { + else length_deletions2 += diffs[pointer][1].length; - } - // Eliminate an equality that is smaller or equal to the edits on both - // sides of it. - if (lastequality && (lastequality.length <= - Math.max(length_insertions1, length_deletions1)) && - (lastequality.length <= Math.max(length_insertions2, - length_deletions2))) { - // Duplicate record. - diffs.splice(equalities[equalitiesLength - 1], 0, - [DIFF_DELETE, lastequality]); - // Change second copy to insert. + if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) { + diffs.splice(equalities[equalitiesLength - 1], 0, createDiff(DIFF_DELETE, lastEquality)); diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; - // Throw away the equality we just deleted. equalitiesLength--; - // Throw away the previous equality (it needs to be reevaluated). equalitiesLength--; pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; - length_insertions1 = 0; // Reset the counters. + length_insertions1 = 0; length_deletions1 = 0; length_insertions2 = 0; length_deletions2 = 0; - lastequality = null; + lastEquality = null; changes = true; } } pointer++; } - - // Normalize the diff. - if (changes) { - this.diff_cleanupMerge(diffs); - } - this.diff_cleanupSemanticLossless(diffs); - - // Find any overlaps between deletions and insertions. - // e.g: abcxxxxxxdef - // -> abcxxxdef - // e.g: xxxabcdefxxx - // -> defxxxabc - // Only extract an overlap if it is as big as the edit ahead or behind it. + if (changes) + diffCleanupMerge(diffs); + diffCleanupSemanticLossless(diffs); pointer = 1; while (pointer < diffs.length) { - if (diffs[pointer - 1][0] == DIFF_DELETE && - diffs[pointer][0] == DIFF_INSERT) { - var deletion = diffs[pointer - 1][1]; - var insertion = diffs[pointer][1]; - var overlap_length1 = this.diff_commonOverlap_(deletion, insertion); - var overlap_length2 = this.diff_commonOverlap_(insertion, deletion); + if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) { + const deletion = diffs[pointer - 1][1]; + const insertion = diffs[pointer][1]; + const overlap_length1 = diffCommonOverlap(deletion, insertion); + const overlap_length2 = diffCommonOverlap(insertion, deletion); if (overlap_length1 >= overlap_length2) { - if (overlap_length1 >= deletion.length / 2 || - overlap_length1 >= insertion.length / 2) { - // Overlap found. Insert an equality and trim the surrounding edits. - diffs.splice(pointer, 0, - [DIFF_EQUAL, insertion.substring(0, overlap_length1)]); - diffs[pointer - 1][1] = - deletion.substring(0, deletion.length - overlap_length1); + if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) { + diffs.splice(pointer, 0, createDiff(DIFF_EQUAL, insertion.substring(0, overlap_length1))); + diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1); diffs[pointer + 1][1] = insertion.substring(overlap_length1); pointer++; } } else { - if (overlap_length2 >= deletion.length / 2 || - overlap_length2 >= insertion.length / 2) { - // Reverse overlap found. - // Insert an equality and swap and trim the surrounding edits. - diffs.splice(pointer, 0, - [DIFF_EQUAL, deletion.substring(0, overlap_length2)]); + if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) { + diffs.splice(pointer, 0, createDiff(DIFF_EQUAL, deletion.substring(0, overlap_length2))); diffs[pointer - 1][0] = DIFF_INSERT; - diffs[pointer - 1][1] = - insertion.substring(0, insertion.length - overlap_length2); + diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2); diffs[pointer + 1][0] = DIFF_DELETE; - diffs[pointer + 1][1] = - deletion.substring(overlap_length2); + diffs[pointer + 1][1] = deletion.substring(overlap_length2); pointer++; } } @@ -831,105 +475,62 @@ diff_match_patch.prototype.diff_cleanupSemantic = function(diffs) { } pointer++; } -}; - - -/** - * Look for single edits surrounded on both sides by equalities - * which can be shifted sideways to align the edit to a word boundary. - * e.g: The cat came. -> The cat came. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) { - /** - * Given two strings, compute a score representing whether the internal - * boundary falls on logical boundaries. - * Scores range from 6 (best) to 0 (worst). - * Closure, but does not reference any external variables. - * @param {string} one First string. - * @param {string} two Second string. - * @return {number} The score. - * @private - */ - function diff_cleanupSemanticScore_(one, two) { +} +const nonAlphaNumericRegex_ = /[^a-z0-9]/i; +const whitespaceRegex_ = /\s/; +const linebreakRegex_ = /[\r\n]/; +const blanklineEndRegex_ = /\n\r?\n$/; +const blanklineStartRegex_ = /^\r?\n\r?\n/; +function diffCleanupSemanticLossless(diffs) { + function diffCleanupSemanticScore(one, two) { if (!one || !two) { - // Edges are the best. return 6; } - - // Each port of this function behaves slightly differently due to - // subtle differences in each language's definition of things like - // 'whitespace'. Since this function's purpose is largely cosmetic, - // the choice has been made to use each language's native features - // rather than force total conformity. - var char1 = one.charAt(one.length - 1); - var char2 = two.charAt(0); - var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_); - var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_); - var whitespace1 = nonAlphaNumeric1 && - char1.match(diff_match_patch.whitespaceRegex_); - var whitespace2 = nonAlphaNumeric2 && - char2.match(diff_match_patch.whitespaceRegex_); - var lineBreak1 = whitespace1 && - char1.match(diff_match_patch.linebreakRegex_); - var lineBreak2 = whitespace2 && - char2.match(diff_match_patch.linebreakRegex_); - var blankLine1 = lineBreak1 && - one.match(diff_match_patch.blanklineEndRegex_); - var blankLine2 = lineBreak2 && - two.match(diff_match_patch.blanklineStartRegex_); - + const char1 = one.charAt(one.length - 1); + const char2 = two.charAt(0); + const nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_); + const nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_); + const whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_); + const whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_); + const lineBreak1 = whitespace1 && char1.match(linebreakRegex_); + const lineBreak2 = whitespace2 && char2.match(linebreakRegex_); + const blankLine1 = lineBreak1 && one.match(blanklineEndRegex_); + const blankLine2 = lineBreak2 && two.match(blanklineStartRegex_); if (blankLine1 || blankLine2) { - // Five points for blank lines. return 5; } else if (lineBreak1 || lineBreak2) { - // Four points for line breaks. return 4; } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) { - // Three points for end of sentences. return 3; } else if (whitespace1 || whitespace2) { - // Two points for whitespace. return 2; } else if (nonAlphaNumeric1 || nonAlphaNumeric2) { - // One point for non-alphanumeric. return 1; } return 0; } - - var pointer = 1; - // Intentionally ignore the first and last element (don't need checking). + let pointer = 1; while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - var equality1 = diffs[pointer - 1][1]; - var edit = diffs[pointer][1]; - var equality2 = diffs[pointer + 1][1]; - - // First, shift the edit as far left as possible. - var commonOffset = this.diff_commonSuffix(equality1, edit); + if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) { + let equality1 = diffs[pointer - 1][1]; + let edit = diffs[pointer][1]; + let equality2 = diffs[pointer + 1][1]; + const commonOffset = diffCommonSuffix(equality1, edit); if (commonOffset) { - var commonString = edit.substring(edit.length - commonOffset); + const commonString = edit.substring(edit.length - commonOffset); equality1 = equality1.substring(0, equality1.length - commonOffset); edit = commonString + edit.substring(0, edit.length - commonOffset); equality2 = commonString + equality2; } - - // Second, step character by character right, looking for the best fit. - var bestEquality1 = equality1; - var bestEdit = edit; - var bestEquality2 = equality2; - var bestScore = diff_cleanupSemanticScore_(equality1, edit) + - diff_cleanupSemanticScore_(edit, equality2); + let bestEquality1 = equality1; + let bestEdit = edit; + let bestEquality2 = equality2; + let bestScore = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2); while (edit.charAt(0) === equality2.charAt(0)) { equality1 += edit.charAt(0); edit = edit.substring(1) + equality2.charAt(0); equality2 = equality2.substring(1); - var score = diff_cleanupSemanticScore_(equality1, edit) + - diff_cleanupSemanticScore_(edit, equality2); - // The >= encourages trailing rather than leading whitespace on edits. + const score = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2); if (score >= bestScore) { bestScore = score; bestEquality1 = equality1; @@ -937,9 +538,7 @@ diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) { bestEquality2 = equality2; } } - - if (diffs[pointer - 1][1] != bestEquality1) { - // We have an improvement, save it back to the diff. + if (diffs[pointer - 1][1] !== bestEquality1) { if (bestEquality1) { diffs[pointer - 1][1] = bestEquality1; } else { @@ -957,82 +556,51 @@ diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) { } pointer++; } -}; - -// Define some regex patterns for matching boundaries. -diff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/; -diff_match_patch.whitespaceRegex_ = /\s/; -diff_match_patch.linebreakRegex_ = /[\r\n]/; -diff_match_patch.blanklineEndRegex_ = /\n\r?\n$/; -diff_match_patch.blanklineStartRegex_ = /^\r?\n\r?\n/; - -/** - * Reduce the number of edits by eliminating operationally trivial equalities. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) { - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var equalitiesLength = 0; // Keeping our own length var is faster in JS. - /** @type {?string} */ - var lastequality = null; - // Always equal to diffs[equalities[equalitiesLength - 1]][1] - var pointer = 0; // Index of current position. - // Is there an insertion operation before the last equality. - var pre_ins = false; - // Is there a deletion operation before the last equality. - var pre_del = false; - // Is there an insertion operation after the last equality. - var post_ins = false; - // Is there a deletion operation after the last equality. - var post_del = false; +} +function diffCleanupEfficiency(diffs, options = {}) { + const { + diffEditCost = defaultOptions.diffEditCost + } = options; + let changes = false; + const equalities = []; + let equalitiesLength = 0; + let lastEquality = null; + let pointer = 0; + let pre_ins = false; + let pre_del = false; + let post_ins = false; + let post_del = false; while (pointer < diffs.length) { - if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. - if (diffs[pointer][1].length < this.Diff_EditCost && - (post_ins || post_del)) { - // Candidate found. + if (diffs[pointer][0] === DIFF_EQUAL) { + if (diffs[pointer][1].length < diffEditCost && (post_ins || post_del)) { equalities[equalitiesLength++] = pointer; pre_ins = post_ins; pre_del = post_del; - lastequality = diffs[pointer][1]; + lastEquality = diffs[pointer][1]; } else { - // Not a candidate, and can never become one. equalitiesLength = 0; - lastequality = null; + lastEquality = null; } post_ins = post_del = false; - } else { // An insertion or deletion. - if (diffs[pointer][0] == DIFF_DELETE) { + } else { + let booleanCount = function(...args) { + return args.filter(Boolean).length; + }; + if (diffs[pointer][0] === DIFF_DELETE) post_del = true; - } else { + else post_ins = true; - } - /* - * Five types to be split: - * ABXYCD - * AXCD - * ABXC - * AXCD - * ABXC - */ - if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || - ((lastequality.length < this.Diff_EditCost / 2) && - (pre_ins + pre_del + post_ins + post_del) == 3))) { - // Duplicate record. - diffs.splice(equalities[equalitiesLength - 1], 0, - [DIFF_DELETE, lastequality]); - // Change second copy to insert. + if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < diffEditCost / 2 && booleanCount(pre_ins, pre_del, post_ins, post_del) === 3)) { + diffs.splice(equalities[equalitiesLength - 1], 0, createDiff(DIFF_DELETE, lastEquality)); diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; - equalitiesLength--; // Throw away the equality we just deleted; - lastequality = null; + equalitiesLength--; + lastEquality = null; if (pre_ins && pre_del) { - // No changes made which could affect previous entry, keep going. post_ins = post_del = true; equalitiesLength = 0; } else { - equalitiesLength--; // Throw away the previous equality. - pointer = equalitiesLength > 0 ? - equalities[equalitiesLength - 1] : -1; + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; post_ins = post_del = false; } changes = true; @@ -1040,26 +608,17 @@ diff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) { } pointer++; } - - if (changes) { - this.diff_cleanupMerge(diffs); - } -}; - - -/** - * Reorder and merge like edit sections. Merge equalities. - * Any edit section can move as long as it doesn't cross an equality. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupMerge = function(diffs) { - diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - var commonlength; + if (changes) + diffCleanupMerge(diffs); +} +function diffCleanupMerge(diffs) { + diffs.push(createDiff(DIFF_EQUAL, "")); + let pointer = 0; + let count_delete = 0; + let count_insert = 0; + let text_delete = ""; + let text_insert = ""; + let commonlength; while (pointer < diffs.length) { switch (diffs[pointer][0]) { case DIFF_INSERT: @@ -1073,52 +632,38 @@ diff_match_patch.prototype.diff_cleanupMerge = function(diffs) { pointer++; break; case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. if (count_delete + count_insert > 1) { if (count_delete !== 0 && count_insert !== 0) { - // Factor out any common prefixies. - commonlength = this.diff_commonPrefix(text_insert, text_delete); + commonlength = diffCommonPrefix(text_insert, text_delete); if (commonlength !== 0) { - if ((pointer - count_delete - count_insert) > 0 && - diffs[pointer - count_delete - count_insert - 1][0] == - DIFF_EQUAL) { - diffs[pointer - count_delete - count_insert - 1][1] += - text_insert.substring(0, commonlength); + if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] === DIFF_EQUAL) { + diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength); } else { - diffs.splice(0, 0, [DIFF_EQUAL, - text_insert.substring(0, commonlength)]); + diffs.splice(0, 0, createDiff(DIFF_EQUAL, text_insert.substring(0, commonlength))); pointer++; } text_insert = text_insert.substring(commonlength); text_delete = text_delete.substring(commonlength); } - // Factor out any common suffixies. - commonlength = this.diff_commonSuffix(text_insert, text_delete); + commonlength = diffCommonSuffix(text_insert, text_delete); if (commonlength !== 0) { - diffs[pointer][1] = text_insert.substring(text_insert.length - - commonlength) + diffs[pointer][1]; - text_insert = text_insert.substring(0, text_insert.length - - commonlength); - text_delete = text_delete.substring(0, text_delete.length - - commonlength); + diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1]; + text_insert = text_insert.substring(0, text_insert.length - commonlength); + text_delete = text_delete.substring(0, text_delete.length - commonlength); } } - // Delete the offending records and add the merged ones. - if (count_delete === 0) { - diffs.splice(pointer - count_insert, - count_delete + count_insert, [DIFF_INSERT, text_insert]); - } else if (count_insert === 0) { - diffs.splice(pointer - count_delete, - count_delete + count_insert, [DIFF_DELETE, text_delete]); - } else { - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert, [DIFF_DELETE, text_delete], - [DIFF_INSERT, text_insert]); + pointer -= count_delete + count_insert; + diffs.splice(pointer, count_delete + count_insert); + if (text_delete.length) { + diffs.splice(pointer, 0, createDiff(DIFF_DELETE, text_delete)); + pointer++; } - pointer = pointer - count_delete - count_insert + - (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; - } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { - // Merge this equality with the previous one. + if (text_insert.length) { + diffs.splice(pointer, 0, createDiff(DIFF_INSERT, text_insert)); + pointer++; + } + pointer++; + } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) { diffs[pointer - 1][1] += diffs[pointer][1]; diffs.splice(pointer, 1); } else { @@ -1126,167 +671,104 @@ diff_match_patch.prototype.diff_cleanupMerge = function(diffs) { } count_insert = 0; count_delete = 0; - text_delete = ''; - text_insert = ''; + text_delete = ""; + text_insert = ""; break; } } - if (diffs[diffs.length - 1][1] === '') { - diffs.pop(); // Remove the dummy entry at the end. - } - - // Second pass: look for single edits surrounded on both sides by equalities - // which can be shifted sideways to eliminate an equality. - // e.g: ABAC -> ABAC - var changes = false; + if (diffs[diffs.length - 1][1] === "") + diffs.pop(); + let changes = false; pointer = 1; - // Intentionally ignore the first and last element (don't need checking). while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - if (diffs[pointer][1].substring(diffs[pointer][1].length - - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { - // Shift the edit over the previous equality. - diffs[pointer][1] = diffs[pointer - 1][1] + - diffs[pointer][1].substring(0, diffs[pointer][1].length - - diffs[pointer - 1][1].length); + if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) { + if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) { + diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length); diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; diffs.splice(pointer - 1, 1); changes = true; - } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == - diffs[pointer + 1][1]) { - // Shift the edit over the next equality. + } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) { diffs[pointer - 1][1] += diffs[pointer + 1][1]; - diffs[pointer][1] = - diffs[pointer][1].substring(diffs[pointer + 1][1].length) + - diffs[pointer + 1][1]; + diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1]; diffs.splice(pointer + 1, 1); changes = true; } } pointer++; } - // If shifts were made, the diff needs reordering and another shift sweep. - if (changes) { - this.diff_cleanupMerge(diffs); - } -}; - - -/** - * loc is a location in text1, compute and return the equivalent location in - * text2. - * e.g. 'The cat' vs 'The big cat', 1->1, 5->8 - * @param {!Array.} diffs Array of diff tuples. - * @param {number} loc Location within text1. - * @return {number} Location within text2. - */ -diff_match_patch.prototype.diff_xIndex = function(diffs, loc) { - var chars1 = 0; - var chars2 = 0; - var last_chars1 = 0; - var last_chars2 = 0; - var x; + if (changes) + diffCleanupMerge(diffs); +} +function diffXIndex(diffs, loc) { + let chars1 = 0; + let chars2 = 0; + let last_chars1 = 0; + let last_chars2 = 0; + let x; for (x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion. + if (diffs[x][0] !== DIFF_INSERT) { chars1 += diffs[x][1].length; } - if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion. + if (diffs[x][0] !== DIFF_DELETE) { chars2 += diffs[x][1].length; } - if (chars1 > loc) { // Overshot the location. + if (chars1 > loc) { break; } last_chars1 = chars1; last_chars2 = chars2; } - // Was the location was deleted? - if (diffs.length != x && diffs[x][0] === DIFF_DELETE) { + if (diffs.length !== x && diffs[x][0] === DIFF_DELETE) return last_chars2; - } - // Add the remaining character length. return last_chars2 + (loc - last_chars1); -}; - - -/** - * Convert a diff array into a pretty HTML report. - * @param {!Array.} diffs Array of diff tuples. - * @return {string} HTML representation. - */ -diff_match_patch.prototype.diff_prettyHtml = function(diffs) { - var html = []; - var pattern_amp = /&/g; - var pattern_lt = //g; - var pattern_para = /\n/g; - for (var x = 0; x < diffs.length; x++) { - var op = diffs[x][0]; // Operation (insert, delete, equal) - var data = diffs[x][1]; // Text of change. - var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<') - .replace(pattern_gt, '>').replace(pattern_para, '¶
          '); +} +function diffPrettyHtml(diffs) { + const html = []; + const pattern_amp = /&/g; + const pattern_lt = //g; + const pattern_para = /\n/g; + for (let x = 0; x < diffs.length; x++) { + const op = diffs[x][0]; + const data = diffs[x][1]; + const text = data.replace(pattern_amp, "&").replace(pattern_lt, "<").replace(pattern_gt, ">").replace(pattern_para, "¶
          "); switch (op) { case DIFF_INSERT: - html[x] = '' + text + ''; + html[x] = `${text}`; break; case DIFF_DELETE: - html[x] = '' + text + ''; + html[x] = `${text}`; break; case DIFF_EQUAL: - html[x] = '' + text + ''; + html[x] = `${text}`; break; } } - return html.join(''); -}; - - -/** - * Compute and return the source text (all equalities and deletions). - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Source text. - */ -diff_match_patch.prototype.diff_text1 = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_INSERT) { + return html.join(""); +} +function diffText1(diffs) { + const text = []; + for (let x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_INSERT) text[x] = diffs[x][1]; - } } - return text.join(''); -}; - - -/** - * Compute and return the destination text (all equalities and insertions). - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Destination text. - */ -diff_match_patch.prototype.diff_text2 = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_DELETE) { + return text.join(""); +} +function diffText2(diffs) { + const text = []; + for (let x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_DELETE) text[x] = diffs[x][1]; - } } - return text.join(''); -}; - - -/** - * Compute the Levenshtein distance; the number of inserted, deleted or - * substituted characters. - * @param {!Array.} diffs Array of diff tuples. - * @return {number} Number of changes. - */ -diff_match_patch.prototype.diff_levenshtein = function(diffs) { - var levenshtein = 0; - var insertions = 0; - var deletions = 0; - for (var x = 0; x < diffs.length; x++) { - var op = diffs[x][0]; - var data = diffs[x][1]; + return text.join(""); +} +function diffLevenshtein(diffs) { + let levenshtein = 0; + let insertions = 0; + let deletions = 0; + for (let x = 0; x < diffs.length; x++) { + const op = diffs[x][0]; + const data = diffs[x][1]; switch (op) { case DIFF_INSERT: insertions += data.length; @@ -1295,7 +777,6 @@ diff_match_patch.prototype.diff_levenshtein = function(diffs) { deletions += data.length; break; case DIFF_EQUAL: - // A deletion and an insertion is one substitution. levenshtein += Math.max(insertions, deletions); insertions = 0; deletions = 0; @@ -1304,461 +785,285 @@ diff_match_patch.prototype.diff_levenshtein = function(diffs) { } levenshtein += Math.max(insertions, deletions); return levenshtein; -}; - - -/** - * Crush the diff into an encoded string which describes the operations - * required to transform text1 into text2. - * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. - * Operations are tab-separated. Inserted text is escaped using %xx notation. - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Delta text. - */ -diff_match_patch.prototype.diff_toDelta = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { +} +function diffToDelta(diffs) { + const text = []; + for (let x = 0; x < diffs.length; x++) { switch (diffs[x][0]) { case DIFF_INSERT: - text[x] = '+' + encodeURI(diffs[x][1]); + text[x] = `+${encodeURI(diffs[x][1])}`; break; case DIFF_DELETE: - text[x] = '-' + diffs[x][1].length; + text[x] = `-${diffs[x][1].length}`; break; case DIFF_EQUAL: - text[x] = '=' + diffs[x][1].length; + text[x] = `=${diffs[x][1].length}`; break; } } - return text.join('\t').replace(/%20/g, ' '); -}; - - -/** - * Given the original text1, and an encoded string which describes the - * operations required to transform text1 into text2, compute the full diff. - * @param {string} text1 Source string for the diff. - * @param {string} delta Delta text. - * @return {!Array.} Array of diff tuples. - * @throws {!Error} If invalid input. - */ -diff_match_patch.prototype.diff_fromDelta = function(text1, delta) { - var diffs = []; - var diffsLength = 0; // Keeping our own length var is faster in JS. - var pointer = 0; // Cursor in text1 - var tokens = delta.split(/\t/g); - for (var x = 0; x < tokens.length; x++) { - // Each token begins with a one character parameter which specifies the - // operation of this token (delete, insert, equality). - var param = tokens[x].substring(1); + return text.join(" ").replace(/%20/g, " "); +} +function diffFromDelta(text1, delta) { + const diffs = []; + let diffsLength = 0; + let pointer = 0; + const tokens = delta.split(/\t/g); + for (let x = 0; x < tokens.length; x++) { + const param = tokens[x].substring(1); switch (tokens[x].charAt(0)) { - case '+': + case "+": try { - diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)]; - } catch (ex) { - // Malformed URI sequence. - throw new Error('Illegal escape in diff_fromDelta: ' + param); + diffs[diffsLength++] = createDiff(DIFF_INSERT, decodeURI(param)); + } catch (e) { + throw new Error(`Illegal escape in diff_fromDelta: ${param}`); } break; - case '-': - // Fall through. - case '=': - var n = parseInt(param, 10); - if (isNaN(n) || n < 0) { - throw new Error('Invalid number in diff_fromDelta: ' + param); - } - var text = text1.substring(pointer, pointer += n); - if (tokens[x].charAt(0) == '=') { - diffs[diffsLength++] = [DIFF_EQUAL, text]; - } else { - diffs[diffsLength++] = [DIFF_DELETE, text]; - } + case "-": + // Fall through. + case "=": { + const n = Number.parseInt(param, 10); + if (Number.isNaN(n) || n < 0) + throw new Error(`Invalid number in diff_fromDelta: ${param}`); + const text = text1.substring(pointer, pointer += n); + if (tokens[x].charAt(0) === "=") + diffs[diffsLength++] = createDiff(DIFF_EQUAL, text); + else + diffs[diffsLength++] = createDiff(DIFF_DELETE, text); break; + } default: - // Blank tokens are ok (from a trailing \t). - // Anything else is an error. - if (tokens[x]) { - throw new Error('Invalid diff operation in diff_fromDelta: ' + - tokens[x]); - } + if (tokens[x]) + throw new Error(`Invalid diff operation in diff_fromDelta: ${tokens[x]}`); } } - if (pointer != text1.length) { - throw new Error('Delta length (' + pointer + - ') does not equal source text length (' + text1.length + ').'); - } + if (pointer !== text1.length) + throw new Error(`Delta length (${pointer}) does not equal source text length (${text1.length}).`); return diffs; -}; - - -// MATCH FUNCTIONS - - -/** - * Locate the best instance of 'pattern' in 'text' near 'loc'. - * @param {string} text The text to search. - * @param {string} pattern The pattern to search for. - * @param {number} loc The location to search around. - * @return {number} Best match index or -1. - */ -diff_match_patch.prototype.match_main = function(text, pattern, loc) { - // Check for null inputs. - if (text == null || pattern == null || loc == null) { - throw new Error('Null input. (match_main)'); - } +} +function matchMain(text, pattern, loc, options) { + if (text == null || pattern == null || loc == null) + throw new Error("Null input. (match_main)"); loc = Math.max(0, Math.min(loc, text.length)); - if (text == pattern) { - // Shortcut (potentially not guaranteed by the algorithm) + if (text === pattern) { return 0; } else if (!text.length) { - // Nothing to match. return -1; - } else if (text.substring(loc, loc + pattern.length) == pattern) { - // Perfect match at the perfect spot! (Includes case of null pattern) + } else if (text.substring(loc, loc + pattern.length) === pattern) { return loc; } else { - // Do a fuzzy compare. - return this.match_bitap_(text, pattern, loc); + return matchBitap(text, pattern, loc, options); } -}; - - -/** - * Locate the best instance of 'pattern' in 'text' near 'loc' using the - * Bitap algorithm. - * @param {string} text The text to search. - * @param {string} pattern The pattern to search for. - * @param {number} loc The location to search around. - * @return {number} Best match index or -1. - * @private - */ -diff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) { - if (pattern.length > this.Match_MaxBits) { - throw new Error('Pattern too long for this browser.'); - } - - // Initialise the alphabet. - var s = this.match_alphabet_(pattern); - - var dmp = this; // 'this' becomes 'window' in a closure. - - /** - * Compute and return the score for a match with e errors and x location. - * Accesses loc and pattern through being a closure. - * @param {number} e Number of errors in match. - * @param {number} x Location of match. - * @return {number} Overall score for match (0.0 = good, 1.0 = bad). - * @private - */ - function match_bitapScore_(e, x) { - var accuracy = e / pattern.length; - var proximity = Math.abs(loc - x); - if (!dmp.Match_Distance) { - // Dodge divide by zero error. - return proximity ? 1.0 : accuracy; +} +function matchBitap(text, pattern, loc, options) { + const resolved = resolveOptions(options); + if (pattern.length > resolved.matchMaxBits) + throw new Error("Pattern too long for this browser."); + const s = matchAlphabet(pattern); + function matchBitapScore(e, x) { + const accuracy = e / pattern.length; + const proximity = Math.abs(loc - x); + if (!resolved.matchDistance) { + return proximity ? 1 : accuracy; } - return accuracy + (proximity / dmp.Match_Distance); + return accuracy + proximity / resolved.matchDistance; } - - // Highest score beyond which we give up. - var score_threshold = this.Match_Threshold; - // Is there a nearby exact match? (speedup) - var best_loc = text.indexOf(pattern, loc); - if (best_loc != -1) { - score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); - // What about in the other direction? (speedup) + let score_threshold = resolved.matchThreshold; + let best_loc = text.indexOf(pattern, loc); + if (best_loc !== -1) { + score_threshold = Math.min(matchBitapScore(0, best_loc), score_threshold); best_loc = text.lastIndexOf(pattern, loc + pattern.length); - if (best_loc != -1) { - score_threshold = - Math.min(match_bitapScore_(0, best_loc), score_threshold); - } + if (best_loc !== -1) + score_threshold = Math.min(matchBitapScore(0, best_loc), score_threshold); } - - // Initialise the bit arrays. - var matchmask = 1 << (pattern.length - 1); + const matchmask = 1 << pattern.length - 1; best_loc = -1; - - var bin_min, bin_mid; - var bin_max = pattern.length + text.length; - var last_rd; - for (var d = 0; d < pattern.length; d++) { - // Scan for the best match; each iteration allows for one more error. - // Run a binary search to determine how far from 'loc' we can stray at this - // error level. + let bin_min, bin_mid; + let bin_max = pattern.length + text.length; + let last_rd = []; + for (let d = 0; d < pattern.length; d++) { bin_min = 0; bin_mid = bin_max; while (bin_min < bin_mid) { - if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) { + if (matchBitapScore(d, loc + bin_mid) <= score_threshold) bin_min = bin_mid; - } else { + else bin_max = bin_mid; - } bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min); } - // Use the result from this iteration as the maximum for the next. bin_max = bin_mid; - var start = Math.max(1, loc - bin_mid + 1); - var finish = Math.min(loc + bin_mid, text.length) + pattern.length; - - var rd = Array(finish + 2); + let start = Math.max(1, loc - bin_mid + 1); + const finish = Math.min(loc + bin_mid, text.length) + pattern.length; + const rd = new Array(finish + 2); rd[finish + 1] = (1 << d) - 1; - for (var j = finish; j >= start; j--) { - // The alphabet (s) is a sparse hash, so the following line generates - // warnings. - var charMatch = s[text.charAt(j - 1)]; - if (d === 0) { // First pass: exact match. - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; - } else { // Subsequent passes: fuzzy match. - rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | - (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | - last_rd[j + 1]; + for (let j = finish; j >= start; j--) { + const charMatch = s[text.charAt(j - 1)]; + if (d === 0) { + rd[j] = (rd[j + 1] << 1 | 1) & charMatch; + } else { + rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1]; } if (rd[j] & matchmask) { - var score = match_bitapScore_(d, j - 1); - // This match will almost certainly be better than any existing match. - // But check anyway. + const score = matchBitapScore(d, j - 1); if (score <= score_threshold) { - // Told you so. score_threshold = score; best_loc = j - 1; if (best_loc > loc) { - // When passing loc, don't exceed our current distance from loc. start = Math.max(1, 2 * loc - best_loc); } else { - // Already passed loc, downhill from here on in. break; } } } } - // No hope for a (better) match at greater error levels. - if (match_bitapScore_(d + 1, loc) > score_threshold) { + if (matchBitapScore(d + 1, loc) > score_threshold) break; - } last_rd = rd; } return best_loc; -}; - - -/** - * Initialise the alphabet for the Bitap algorithm. - * @param {string} pattern The text to encode. - * @return {!Object} Hash of character locations. - * @private - */ -diff_match_patch.prototype.match_alphabet_ = function(pattern) { - var s = {}; - for (var i = 0; i < pattern.length; i++) { +} +function matchAlphabet(pattern) { + const s = {}; + for (let i = 0; i < pattern.length; i++) s[pattern.charAt(i)] = 0; - } - for (var i = 0; i < pattern.length; i++) { - s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1); - } + for (let i = 0; i < pattern.length; i++) + s[pattern.charAt(i)] |= 1 << pattern.length - i - 1; return s; +} + +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; }; - - -// PATCH FUNCTIONS - - -/** - * Increase the context until it is unique, - * but don't let the pattern expand beyond Match_MaxBits. - * @param {!diff_match_patch.patch_obj} patch The patch to grow. - * @param {string} text Source text. - * @private - */ -diff_match_patch.prototype.patch_addContext_ = function(patch, text) { - if (text.length == 0) { +function patchAddContext(patch, text, options) { + if (text.length === 0) return; + if (patch.start2 === null) + throw new Error("patch not initialized"); + const { + matchMaxBits = defaultOptions.matchMaxBits, + patchMargin = defaultOptions.patchMargin + } = options; + let pattern = text.substring(patch.start2, patch.start2 + patch.length1); + let padding = 0; + while (text.indexOf(pattern) !== text.lastIndexOf(pattern) && pattern.length < matchMaxBits - patchMargin - patchMargin) { + padding += patchMargin; + pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding); } - var pattern = text.substring(patch.start2, patch.start2 + patch.length1); - var padding = 0; - - // Look for the first and last matches of pattern in text. If two different - // matches are found, increase the pattern length. - while (text.indexOf(pattern) != text.lastIndexOf(pattern) && - pattern.length < this.Match_MaxBits - this.Patch_Margin - - this.Patch_Margin) { - padding += this.Patch_Margin; - pattern = text.substring(patch.start2 - padding, - patch.start2 + patch.length1 + padding); - } - // Add one chunk for good luck. - padding += this.Patch_Margin; - - // Add the prefix. - var prefix = text.substring(patch.start2 - padding, patch.start2); - if (prefix) { - patch.diffs.unshift([DIFF_EQUAL, prefix]); - } - // Add the suffix. - var suffix = text.substring(patch.start2 + patch.length1, - patch.start2 + patch.length1 + padding); - if (suffix) { - patch.diffs.push([DIFF_EQUAL, suffix]); - } - - // Roll back the start points. + padding += patchMargin; + const prefix = text.substring(patch.start2 - padding, patch.start2); + if (prefix) + patch.diffs.unshift(createDiff(DIFF_EQUAL, prefix)); + const suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding); + if (suffix) + patch.diffs.push(createDiff(DIFF_EQUAL, suffix)); patch.start1 -= prefix.length; patch.start2 -= prefix.length; - // Extend the lengths. patch.length1 += prefix.length + suffix.length; patch.length2 += prefix.length + suffix.length; -}; - - -/** - * Compute a list of patches to turn text1 into text2. - * Use diffs if provided, otherwise compute it ourselves. - * There are four ways to call this function, depending on what data is - * available to the caller: - * Method 1: - * a = text1, b = text2 - * Method 2: - * a = diffs - * Method 3 (optimal): - * a = text1, b = diffs - * Method 4 (deprecated, use method 3): - * a = text1, b = text2, c = diffs - * - * @param {string|!Array.} a text1 (methods 1,3,4) or - * Array of diff tuples for text1 to text2 (method 2). - * @param {string|!Array.} opt_b text2 (methods 1,4) or - * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2). - * @param {string|!Array.} opt_c Array of diff tuples - * for text1 to text2 (method 4) or undefined (methods 1,2,3). - * @return {!Array.} Array of Patch objects. - */ -diff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) { - var text1, diffs; - if (typeof a == 'string' && typeof opt_b == 'string' && - typeof opt_c == 'undefined') { - // Method 1: text1, text2 - // Compute diffs from text1 and text2. - text1 = /** @type {string} */(a); - diffs = this.diff_main(text1, /** @type {string} */(opt_b), true); +} +function patchMake(a, opt_b, opt_c, options = {}) { + const resolved = __spreadValues(__spreadValues({}, defaultOptions), options); + let text1, diffs; + if (typeof a == "string" && typeof opt_b == "string" && typeof opt_c == "undefined") { + text1 = a; + diffs = diffMain(text1, opt_b, resolved, true); if (diffs.length > 2) { - this.diff_cleanupSemantic(diffs); - this.diff_cleanupEfficiency(diffs); + diffCleanupSemantic(diffs); + diffCleanupEfficiency(diffs); } - } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && - typeof opt_c == 'undefined') { - // Method 2: diffs - // Compute text1 from diffs. - diffs = /** @type {!Array.} */(a); - text1 = this.diff_text1(diffs); - } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && - typeof opt_c == 'undefined') { - // Method 3: text1, diffs - text1 = /** @type {string} */(a); - diffs = /** @type {!Array.} */(opt_b); - } else if (typeof a == 'string' && typeof opt_b == 'string' && - opt_c && typeof opt_c == 'object') { - // Method 4: text1, text2, diffs - // text2 is not used. - text1 = /** @type {string} */(a); - diffs = /** @type {!Array.} */(opt_c); + } else if (a && typeof a == "object" && typeof opt_b == "undefined" && typeof opt_c == "undefined") { + diffs = /** @type {Diff[]} */ + a; + text1 = diffText1(diffs); + } else if (typeof a == "string" && opt_b && typeof opt_b == "object" && typeof opt_c == "undefined") { + text1 = /** @type {string} */ + a; + diffs = /** @type {Diff[]} */ + opt_b; + } else if (typeof a == "string" && typeof opt_b == "string" && opt_c && typeof opt_c == "object") { + text1 = /** @type {string} */ + a; + diffs = /** @type {Diff[]} */ + opt_c; } else { - throw new Error('Unknown call format to patch_make.'); + throw new Error("Unknown call format to patch_make."); } - - if (diffs.length === 0) { - return []; // Get rid of the null case. - } - var patches = []; - var patch = new diff_match_patch.patch_obj(); - var patchDiffLength = 0; // Keeping our own length var is faster in JS. - var char_count1 = 0; // Number of characters into the text1 string. - var char_count2 = 0; // Number of characters into the text2 string. - // Start with text1 (prepatch_text) and apply the diffs until we arrive at - // text2 (postpatch_text). We recreate the patches one by one to determine - // context info. - var prepatch_text = text1; - var postpatch_text = text1; - for (var x = 0; x < diffs.length; x++) { - var diff_type = diffs[x][0]; - var diff_text = diffs[x][1]; - + if (diffs.length === 0) + return []; + const patches = []; + let patch = createPatch(); + let patchDiffLength = 0; + let char_count1 = 0; + let char_count2 = 0; + let prepatch_text = text1; + let postpatch_text = text1; + for (let x = 0; x < diffs.length; x++) { + const diff_type = diffs[x][0]; + const diff_text = diffs[x][1]; if (!patchDiffLength && diff_type !== DIFF_EQUAL) { - // A new patch starts here. patch.start1 = char_count1; patch.start2 = char_count2; } - switch (diff_type) { case DIFF_INSERT: patch.diffs[patchDiffLength++] = diffs[x]; patch.length2 += diff_text.length; - postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + - postpatch_text.substring(char_count2); + postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2); break; case DIFF_DELETE: patch.length1 += diff_text.length; patch.diffs[patchDiffLength++] = diffs[x]; - postpatch_text = postpatch_text.substring(0, char_count2) + - postpatch_text.substring(char_count2 + - diff_text.length); + postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length); break; case DIFF_EQUAL: - if (diff_text.length <= 2 * this.Patch_Margin && - patchDiffLength && diffs.length != x + 1) { - // Small equality inside a patch. + if (diff_text.length <= 2 * resolved.patchMargin && patchDiffLength && diffs.length !== x + 1) { patch.diffs[patchDiffLength++] = diffs[x]; patch.length1 += diff_text.length; patch.length2 += diff_text.length; - } else if (diff_text.length >= 2 * this.Patch_Margin) { - // Time for a new patch. + } else if (diff_text.length >= 2 * resolved.patchMargin) { if (patchDiffLength) { - this.patch_addContext_(patch, prepatch_text); + patchAddContext(patch, prepatch_text, resolved); patches.push(patch); - patch = new diff_match_patch.patch_obj(); + patch = createPatch(); patchDiffLength = 0; - // Unlike Unidiff, our patch lists have a rolling context. - // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff - // Update prepatch text & pos to reflect the application of the - // just completed patch. prepatch_text = postpatch_text; char_count1 = char_count2; } } break; } - - // Update the current character count. - if (diff_type !== DIFF_INSERT) { + if (diff_type !== DIFF_INSERT) char_count1 += diff_text.length; - } - if (diff_type !== DIFF_DELETE) { + if (diff_type !== DIFF_DELETE) char_count2 += diff_text.length; - } } - // Pick up the leftover patch if not empty. if (patchDiffLength) { - this.patch_addContext_(patch, prepatch_text); + patchAddContext(patch, prepatch_text, resolved); patches.push(patch); } - return patches; -}; - - -/** - * Given an array of patches, return another array that is identical. - * @param {!Array.} patches Array of Patch objects. - * @return {!Array.} Array of Patch objects. - */ -diff_match_patch.prototype.patch_deepCopy = function(patches) { - // Making deep copies is hard in JavaScript. - var patchesCopy = []; - for (var x = 0; x < patches.length; x++) { - var patch = patches[x]; - var patchCopy = new diff_match_patch.patch_obj(); +} +function patchDeepCopy(patches) { + const patchesCopy = []; + for (let x = 0; x < patches.length; x++) { + const patch = patches[x]; + const patchCopy = createPatch(); patchCopy.diffs = []; - for (var y = 0; y < patch.diffs.length; y++) { - patchCopy.diffs[y] = patch.diffs[y].slice(); + for (let y = 0; y < patch.diffs.length; y++) { + patchCopy.diffs[y] = createDiff(patch.diffs[y][0], patch.diffs[y][1]); } patchCopy.start1 = patch.start1; patchCopy.start2 = patch.start2; @@ -1767,227 +1072,159 @@ diff_match_patch.prototype.patch_deepCopy = function(patches) { patchesCopy[x] = patchCopy; } return patchesCopy; -}; - - -/** - * Merge a set of patches onto the text. Return a patched text, as well - * as a list of true/false values indicating which patches were applied. - * @param {!Array.} patches Array of Patch objects. - * @param {string} text Old text. - * @return {!Array.>} Two element Array, containing the - * new text and an array of boolean values. - */ -diff_match_patch.prototype.patch_apply = function(patches, text) { - if (patches.length == 0) { +} +function patchApply(patches, text, options) { + if (patches.length === 0) return [text, []]; - } - - // Deep copy the patches so that no changes are made to originals. - patches = this.patch_deepCopy(patches); - - var nullPadding = this.patch_addPadding(patches); + patches = patchDeepCopy(patches); + const resolved = resolveOptions(options); + const nullPadding = patchAddPadding(patches, resolved); text = nullPadding + text + nullPadding; - - this.patch_splitMax(patches); - // delta keeps track of the offset between the expected and actual location - // of the previous patch. If there are patches expected at positions 10 and - // 20, but the first patch was found at 12, delta is 2 and the second patch - // has an effective expected position of 22. - var delta = 0; - var results = []; - for (var x = 0; x < patches.length; x++) { - var expected_loc = patches[x].start2 + delta; - var text1 = this.diff_text1(patches[x].diffs); - var start_loc; - var end_loc = -1; - if (text1.length > this.Match_MaxBits) { - // patch_splitMax will only provide an oversized pattern in the case of - // a monster delete. - start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), - expected_loc); - if (start_loc != -1) { - end_loc = this.match_main(text, - text1.substring(text1.length - this.Match_MaxBits), - expected_loc + text1.length - this.Match_MaxBits); - if (end_loc == -1 || start_loc >= end_loc) { - // Can't find valid trailing context. Drop this patch. + patchSplitMax(patches, resolved); + let delta = 0; + const results = []; + for (let x = 0; x < patches.length; x++) { + const expected_loc = patches[x].start2 + delta; + const text1 = diffText1(patches[x].diffs); + let start_loc; + let end_loc = -1; + if (text1.length > resolved.matchMaxBits) { + start_loc = matchMain( + text, + text1.substring(0, resolved.matchMaxBits), + expected_loc, + options + ); + if (start_loc !== -1) { + end_loc = matchMain( + text, + text1.substring(text1.length - resolved.matchMaxBits), + expected_loc + text1.length - resolved.matchMaxBits, + options + ); + if (end_loc === -1 || start_loc >= end_loc) { start_loc = -1; } } } else { - start_loc = this.match_main(text, text1, expected_loc); + start_loc = matchMain(text, text1, expected_loc, options); } - if (start_loc == -1) { - // No match found. :( + if (start_loc === -1) { results[x] = false; - // Subtract the delta for this failed patch from subsequent patches. delta -= patches[x].length2 - patches[x].length1; } else { - // Found a match. :) results[x] = true; delta = start_loc - expected_loc; - var text2; - if (end_loc == -1) { + let text2; + if (end_loc === -1) text2 = text.substring(start_loc, start_loc + text1.length); + else + text2 = text.substring(start_loc, end_loc + resolved.matchMaxBits); + if (text1 === text2) { + text = text.substring(0, start_loc) + diffText2(patches[x].diffs) + text.substring(start_loc + text1.length); } else { - text2 = text.substring(start_loc, end_loc + this.Match_MaxBits); - } - if (text1 == text2) { - // Perfect match, just shove the replacement text in. - text = text.substring(0, start_loc) + - this.diff_text2(patches[x].diffs) + - text.substring(start_loc + text1.length); - } else { - // Imperfect match. Run a diff to get a framework of equivalent - // indices. - var diffs = this.diff_main(text1, text2, false); - if (text1.length > this.Match_MaxBits && - this.diff_levenshtein(diffs) / text1.length > - this.Patch_DeleteThreshold) { - // The end points match, but the content is unacceptably bad. + const diffs = diffMain(text1, text2, options, false); + if (text1.length > resolved.matchMaxBits && diffLevenshtein(diffs) / text1.length > resolved.patchDeleteThreshold) { results[x] = false; } else { - this.diff_cleanupSemanticLossless(diffs); - var index1 = 0; - var index2; - for (var y = 0; y < patches[x].diffs.length; y++) { - var mod = patches[x].diffs[y]; - if (mod[0] !== DIFF_EQUAL) { - index2 = this.diff_xIndex(diffs, index1); + diffCleanupSemanticLossless(diffs); + let index1 = 0; + let index2 = 0; + for (let y = 0; y < patches[x].diffs.length; y++) { + const mod = patches[x].diffs[y]; + if (mod[0] !== DIFF_EQUAL) + index2 = diffXIndex(diffs, index1); + if (mod[0] === DIFF_INSERT) { + text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2); + } else if (mod[0] === DIFF_DELETE) { + text = text.substring(0, start_loc + index2) + text.substring(start_loc + diffXIndex(diffs, index1 + mod[1].length)); } - if (mod[0] === DIFF_INSERT) { // Insertion - text = text.substring(0, start_loc + index2) + mod[1] + - text.substring(start_loc + index2); - } else if (mod[0] === DIFF_DELETE) { // Deletion - text = text.substring(0, start_loc + index2) + - text.substring(start_loc + this.diff_xIndex(diffs, - index1 + mod[1].length)); - } - if (mod[0] !== DIFF_DELETE) { + if (mod[0] !== DIFF_DELETE) index1 += mod[1].length; - } } } } } } - // Strip the padding off. text = text.substring(nullPadding.length, text.length - nullPadding.length); return [text, results]; -}; - - -/** - * Add some padding on text start and end so that edges can match something. - * Intended to be called only from within patch_apply. - * @param {!Array.} patches Array of Patch objects. - * @return {string} The padding string added to each side. - */ -diff_match_patch.prototype.patch_addPadding = function(patches) { - var paddingLength = this.Patch_Margin; - var nullPadding = ''; - for (var x = 1; x <= paddingLength; x++) { +} +function patchAddPadding(patches, options = {}) { + const { + patchMargin: paddingLength = defaultOptions.patchMargin + } = options; + let nullPadding = ""; + for (let x = 1; x <= paddingLength; x++) nullPadding += String.fromCharCode(x); - } - - // Bump all the patches forward. - for (var x = 0; x < patches.length; x++) { + for (let x = 0; x < patches.length; x++) { patches[x].start1 += paddingLength; patches[x].start2 += paddingLength; } - - // Add some padding on start of first diff. - var patch = patches[0]; - var diffs = patch.diffs; - if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) { - // Add nullPadding equality. - diffs.unshift([DIFF_EQUAL, nullPadding]); - patch.start1 -= paddingLength; // Should be 0. - patch.start2 -= paddingLength; // Should be 0. + let patch = patches[0]; + let diffs = patch.diffs; + if (diffs.length === 0 || diffs[0][0] !== DIFF_EQUAL) { + diffs.unshift(createDiff(DIFF_EQUAL, nullPadding)); + patch.start1 -= paddingLength; + patch.start2 -= paddingLength; patch.length1 += paddingLength; patch.length2 += paddingLength; } else if (paddingLength > diffs[0][1].length) { - // Grow first equality. - var extraLength = paddingLength - diffs[0][1].length; + const extraLength = paddingLength - diffs[0][1].length; diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1]; patch.start1 -= extraLength; patch.start2 -= extraLength; patch.length1 += extraLength; patch.length2 += extraLength; } - - // Add some padding on end of last diff. patch = patches[patches.length - 1]; diffs = patch.diffs; - if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) { - // Add nullPadding equality. - diffs.push([DIFF_EQUAL, nullPadding]); + if (diffs.length === 0 || diffs[diffs.length - 1][0] !== DIFF_EQUAL) { + diffs.push(createDiff(DIFF_EQUAL, nullPadding)); patch.length1 += paddingLength; patch.length2 += paddingLength; } else if (paddingLength > diffs[diffs.length - 1][1].length) { - // Grow last equality. - var extraLength = paddingLength - diffs[diffs.length - 1][1].length; + const extraLength = paddingLength - diffs[diffs.length - 1][1].length; diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength); patch.length1 += extraLength; patch.length2 += extraLength; } - return nullPadding; -}; - - -/** - * Look through the patches and break up any which are longer than the maximum - * limit of the match algorithm. - * Intended to be called only from within patch_apply. - * @param {!Array.} patches Array of Patch objects. - */ -diff_match_patch.prototype.patch_splitMax = function(patches) { - var patch_size = this.Match_MaxBits; - for (var x = 0; x < patches.length; x++) { - if (patches[x].length1 <= patch_size) { +} +function patchSplitMax(patches, options) { + const resolved = resolveOptions(options); + for (let x = 0; x < patches.length; x++) { + if (patches[x].length1 <= resolved.matchMaxBits) continue; - } - var bigpatch = patches[x]; - // Remove the big old patch. + const bigpatch = patches[x]; patches.splice(x--, 1); - var start1 = bigpatch.start1; - var start2 = bigpatch.start2; - var precontext = ''; + let start1 = bigpatch.start1; + let start2 = bigpatch.start2; + let precontext = ""; while (bigpatch.diffs.length !== 0) { - // Create one of several smaller patches. - var patch = new diff_match_patch.patch_obj(); - var empty = true; + const patch = createPatch(); + let empty = true; patch.start1 = start1 - precontext.length; patch.start2 = start2 - precontext.length; - if (precontext !== '') { + if (precontext !== "") { patch.length1 = patch.length2 = precontext.length; - patch.diffs.push([DIFF_EQUAL, precontext]); + patch.diffs.push(createDiff(DIFF_EQUAL, precontext)); } - while (bigpatch.diffs.length !== 0 && - patch.length1 < patch_size - this.Patch_Margin) { - var diff_type = bigpatch.diffs[0][0]; - var diff_text = bigpatch.diffs[0][1]; + while (bigpatch.diffs.length !== 0 && patch.length1 < resolved.matchMaxBits - resolved.patchMargin) { + const diff_type = bigpatch.diffs[0][0]; + let diff_text = bigpatch.diffs[0][1]; if (diff_type === DIFF_INSERT) { - // Insertions are harmless. patch.length2 += diff_text.length; start2 += diff_text.length; patch.diffs.push(bigpatch.diffs.shift()); empty = false; - } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && - patch.diffs[0][0] == DIFF_EQUAL && - diff_text.length > 2 * patch_size) { - // This is a large deletion. Let it pass in one chunk. + } else if (diff_type === DIFF_DELETE && patch.diffs.length === 1 && patch.diffs[0][0] === DIFF_EQUAL && diff_text.length > 2 * resolved.matchMaxBits) { patch.length1 += diff_text.length; start1 += diff_text.length; empty = false; - patch.diffs.push([diff_type, diff_text]); + patch.diffs.push(createDiff(diff_type, diff_text)); bigpatch.diffs.shift(); } else { - // Deletion or equality. Only take as much as we can stomach. - diff_text = diff_text.substring(0, - patch_size - patch.length1 - this.Patch_Margin); + diff_text = diff_text.substring(0, resolved.matchMaxBits - patch.length1 - resolved.patchMargin); patch.length1 += diff_text.length; start1 += diff_text.length; if (diff_type === DIFF_EQUAL) { @@ -1996,197 +1233,171 @@ diff_match_patch.prototype.patch_splitMax = function(patches) { } else { empty = false; } - patch.diffs.push([diff_type, diff_text]); - if (diff_text == bigpatch.diffs[0][1]) { + patch.diffs.push(createDiff(diff_type, diff_text)); + if (diff_text === bigpatch.diffs[0][1]) { bigpatch.diffs.shift(); } else { - bigpatch.diffs[0][1] = - bigpatch.diffs[0][1].substring(diff_text.length); + bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length); } } } - // Compute the head context for the next patch. - precontext = this.diff_text2(patch.diffs); - precontext = - precontext.substring(precontext.length - this.Patch_Margin); - // Append the end context for this patch. - var postcontext = this.diff_text1(bigpatch.diffs) - .substring(0, this.Patch_Margin); - if (postcontext !== '') { + precontext = diffText2(patch.diffs); + precontext = precontext.substring(precontext.length - resolved.patchMargin); + const postcontext = diffText1(bigpatch.diffs).substring(0, resolved.patchMargin); + if (postcontext !== "") { patch.length1 += postcontext.length; patch.length2 += postcontext.length; - if (patch.diffs.length !== 0 && - patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) { + if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) { patch.diffs[patch.diffs.length - 1][1] += postcontext; } else { - patch.diffs.push([DIFF_EQUAL, postcontext]); + patch.diffs.push(createDiff(DIFF_EQUAL, postcontext)); } } - if (!empty) { + if (!empty) patches.splice(++x, 0, patch); - } } } -}; - - -/** - * Take a list of patches and return a textual representation. - * @param {!Array.} patches Array of Patch objects. - * @return {string} Text representation of patches. - */ -diff_match_patch.prototype.patch_toText = function(patches) { - var text = []; - for (var x = 0; x < patches.length; x++) { +} +function patchToText(patches) { + const text = []; + for (let x = 0; x < patches.length; x++) text[x] = patches[x]; - } - return text.join(''); -}; - - -/** - * Parse a textual representation of patches and return a list of Patch objects. - * @param {string} textline Text representation of patches. - * @return {!Array.} Array of Patch objects. - * @throws {!Error} If invalid input. - */ -diff_match_patch.prototype.patch_fromText = function(textline) { - var patches = []; - if (!textline) { + return text.join(""); +} +function patchFromText(textline) { + const patches = []; + if (!textline) return patches; - } - var text = textline.split('\n'); - var textPointer = 0; - var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; + const text = textline.split("\n"); + let textPointer = 0; + const patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; while (textPointer < text.length) { - var m = text[textPointer].match(patchHeader); - if (!m) { - throw new Error('Invalid patch string: ' + text[textPointer]); - } - var patch = new diff_match_patch.patch_obj(); + const m = text[textPointer].match(patchHeader); + if (!m) + throw new Error(`Invalid patch string: ${text[textPointer]}`); + const patch = createPatch(); patches.push(patch); - patch.start1 = parseInt(m[1], 10); - if (m[2] === '') { + patch.start1 = Number.parseInt(m[1], 10); + if (m[2] === "") { patch.start1--; patch.length1 = 1; - } else if (m[2] == '0') { + } else if (m[2] === "0") { patch.length1 = 0; } else { patch.start1--; - patch.length1 = parseInt(m[2], 10); + patch.length1 = Number.parseInt(m[2], 10); } - - patch.start2 = parseInt(m[3], 10); - if (m[4] === '') { + patch.start2 = Number.parseInt(m[3], 10); + if (m[4] === "") { patch.start2--; patch.length2 = 1; - } else if (m[4] == '0') { + } else if (m[4] === "0") { patch.length2 = 0; } else { patch.start2--; - patch.length2 = parseInt(m[4], 10); + patch.length2 = Number.parseInt(m[4], 10); } textPointer++; - while (textPointer < text.length) { - var sign = text[textPointer].charAt(0); + const sign = text[textPointer].charAt(0); + let line = ""; try { - var line = decodeURI(text[textPointer].substring(1)); - } catch (ex) { - // Malformed URI sequence. - throw new Error('Illegal escape in patch_fromText: ' + line); + line = decodeURI(text[textPointer].substring(1)); + } catch (e) { + throw new Error(`Illegal escape in patch_fromText: ${line}`); } - if (sign == '-') { - // Deletion. - patch.diffs.push([DIFF_DELETE, line]); - } else if (sign == '+') { - // Insertion. - patch.diffs.push([DIFF_INSERT, line]); - } else if (sign == ' ') { - // Minor equality. - patch.diffs.push([DIFF_EQUAL, line]); - } else if (sign == '@') { - // Start of next patch. + if (sign === "-") { + patch.diffs.push(createDiff(DIFF_DELETE, line)); + } else if (sign === "+") { + patch.diffs.push(createDiff(DIFF_INSERT, line)); + } else if (sign === " ") { + patch.diffs.push(createDiff(DIFF_EQUAL, line)); + } else if (sign === "@") { break; - } else if (sign === '') { - // Blank line? Whatever. - } else { - // WTF? - throw new Error('Invalid patch mode "' + sign + '" in: ' + line); + } else if (sign === "") ; else { + throw new Error(`Invalid patch mode "${sign}" in: ${line}`); } textPointer++; } } return patches; -}; - - -/** - * Class representing one patch operation. - * @constructor - */ -diff_match_patch.patch_obj = function() { - /** @type {!Array.} */ - this.diffs = []; - /** @type {?number} */ - this.start1 = null; - /** @type {?number} */ - this.start2 = null; - /** @type {number} */ - this.length1 = 0; - /** @type {number} */ - this.length2 = 0; -}; - - -/** - * Emmulate GNU diff's format. - * Header: @@ -382,8 +481,9 @@ - * Indicies are printed as 1-based, not 0-based. - * @return {string} The GNU diff string. - */ -diff_match_patch.patch_obj.prototype.toString = function() { - var coords1, coords2; - if (this.length1 === 0) { - coords1 = this.start1 + ',0'; - } else if (this.length1 == 1) { - coords1 = this.start1 + 1; - } else { - coords1 = (this.start1 + 1) + ',' + this.length1; - } - if (this.length2 === 0) { - coords2 = this.start2 + ',0'; - } else if (this.length2 == 1) { - coords2 = this.start2 + 1; - } else { - coords2 = (this.start2 + 1) + ',' + this.length2; - } - var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\n']; - var op; - // Escape the body of the patch with %xx notation. - for (var x = 0; x < this.diffs.length; x++) { - switch (this.diffs[x][0]) { - case DIFF_INSERT: - op = '+'; - break; - case DIFF_DELETE: - op = '-'; - break; - case DIFF_EQUAL: - op = ' '; - break; +} +function createPatch() { + const patch = { + diffs: [], + start1: null, + start2: null, + length1: 0, + length2: 0 + }; + patch.toString = function() { + let coords1, coords2; + if (this.length1 === 0) + coords1 = `${this.start1},0`; + else if (this.length1 === 1) + coords1 = this.start1 + 1; + else + coords1 = `${this.start1 + 1},${this.length1}`; + if (this.length2 === 0) + coords2 = `${this.start2},0`; + else if (this.length2 === 1) + coords2 = this.start2 + 1; + else + coords2 = `${this.start2 + 1},${this.length2}`; + const text = [`@@ -${coords1} +${coords2} @@ +`]; + let op; + for (let x = 0; x < this.diffs.length; x++) { + switch (this.diffs[x][0]) { + case DIFF_INSERT: + op = "+"; + break; + case DIFF_DELETE: + op = "-"; + break; + case DIFF_EQUAL: + op = " "; + break; + } + text[x + 1] = `${op + encodeURI(this.diffs[x][1])} +`; } - text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\n'; - } - return text.join('').replace(/%20/g, ' '); -}; + return text.join("").replace(/%20/g, " "); + }; + return patch; +} - -// Export these global variables so that they survive Google's JS compiler. -// In a browser, 'this' will be 'window'. -// Users of node.js should 'require' the uncompressed version since Google's -// JS compiler may break the following exports for non-browser environments. -this['diff_match_patch'] = diff_match_patch; -this['DIFF_DELETE'] = DIFF_DELETE; -this['DIFF_INSERT'] = DIFF_INSERT; -this['DIFF_EQUAL'] = DIFF_EQUAL; +exports.DIFF_DELETE = DIFF_DELETE; +exports.DIFF_EQUAL = DIFF_EQUAL; +exports.DIFF_INSERT = DIFF_INSERT; +exports.defaultOptions = defaultOptions; +exports.diff = diffMain; +exports.diffCharsToLines = diffCharsToLines; +exports.diffCleanupEfficiency = diffCleanupEfficiency; +exports.diffCleanupMerge = diffCleanupMerge; +exports.diffCleanupSemantic = diffCleanupSemantic; +exports.diffCleanupSemanticLossless = diffCleanupSemanticLossless; +exports.diffCommonPrefix = diffCommonPrefix; +exports.diffCommonSuffix = diffCommonSuffix; +exports.diffFromDelta = diffFromDelta; +exports.diffLevenshtein = diffLevenshtein; +exports.diffLinesToChars = diffLinesToChars; +exports.diffMain = diffMain; +exports.diffPrettyHtml = diffPrettyHtml; +exports.diffText1 = diffText1; +exports.diffText2 = diffText2; +exports.diffToDelta = diffToDelta; +exports.diffXIndex = diffXIndex; +exports.match = matchMain; +exports.matchAlphabet = matchAlphabet; +exports.matchBitap = matchBitap; +exports.matchMain = matchMain; +exports.patch = patchMake; +exports.patchAddPadding = patchAddPadding; +exports.patchApply = patchApply; +exports.patchDeepCopy = patchDeepCopy; +exports.patchFromText = patchFromText; +exports.patchMake = patchMake; +exports.patchSplitMax = patchSplitMax; +exports.patchToText = patchToText; +exports.resolveOptions = resolveOptions; diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index 88175b17a1..b9786aa254 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -9,8 +9,8 @@ Widget to display a diff between two texts "use strict"; -var Widget = require("$:/core/modules/widgets/widget.js").widget, - dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js"); +var Widget = require("$:/core/modules/widgets/widget.js").widget; +const dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js"); var DiffTextWidget = function(parseTreeNode,options) { this.initialise(parseTreeNode,options); @@ -35,19 +35,18 @@ DiffTextWidget.prototype.render = function(parent,nextSibling) { this.computeAttributes(); this.execute(); // Create the diff object - var dmpObject = new dmp.diff_match_patch(); - dmpObject.Diff_EditCost = $tw.utils.parseNumber(this.getAttribute("editcost","4")); - var diffs = dmpObject.diff_main(this.getAttribute("source",""),this.getAttribute("dest","")); + const editCost = $tw.utils.parseNumber(this.getAttribute("editcost","4")); + const diffs = dmp.diffMain(this.getAttribute("source",""),this.getAttribute("dest",""),{diffEditCost: editCost}); // Apply required cleanup switch(this.getAttribute("cleanup","semantic")) { case "none": // No cleanup break; case "efficiency": - dmpObject.diff_cleanupEfficiency(diffs); + dmp.diffCleanupEfficiency(diffs, {diffEditCost: editCost}); break; default: // case "semantic" - dmpObject.diff_cleanupSemantic(diffs); + dmp.diffCleanupSemantic(diffs); break; } // Create the elements diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es - api.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es - api.tid new file mode 100644 index 0000000000..c7d6c38a4c --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es - api.tid @@ -0,0 +1,11 @@ +title: $:/changenotes/5.4.0/#9511/impacts/api +changenote: $:/changenotes/5.4.0/#9511 +created: 20251220010540143 +modified: 20251220010540143 +tags: $:/tags/ImpactNote +description: The diff-match-patch-es library uses different APIs +impact-type: compatibility-break + +* Default export and the class constructor has been removed +* Function name has been unified to camelCase +* Previous options like Diff_Timeout and Diff_EditCost are now passed as an options object in the arguments if needed \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es.tid new file mode 100644 index 0000000000..a732673001 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/migrate-to-dmp-es.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9511 +description: Migrate diff-match-patch library to diff-match-patch-es +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: developer +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9511 +github-contributors: Leilei332 + +Migrate the unmaintained [[diff-match-patch|https://github.com/google/diff-match-patch]] library to the maintained and modern fork [[diff-match-patch-es|https://github.com/antfu/diff-match-patch-es]]. From 09379abd5d58e48707de07c0d5cc43bb1f8050e0 Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 20:02:28 +0800 Subject: [PATCH 383/458] Bidirectional improvements for core classes (#9148) * Bidirectional improvements for core classes * Fix Control Panel table text direction * Switch to logical properties * Add -webkit-margin-* properties * Improve backward compatibility * Use supports CSS at-rule for fallback * Tiddler controls, alert, TOC update. * tc-tree & testcase update * .tc-sidebar-scrollable use new syntax * Snow white use standard value * Update divider * Avoid negative logic * Remove :dir rules at the moment * Use property procedures * Add change note * Update blockquote * Update unfold banner * Update tiddlerinfo close button * Group supports rule * Update tiddler title icon * Fix wrong float and margin --- core/ui/TiddlerInfo.tid | 2 +- core/wiki/macros/CSS-property.tid | 39 ++++ .../tiddlers/releasenotes/5.4.0/#9148.tid | 10 + themes/tiddlywiki/snowwhite/base.tid | 14 ++ themes/tiddlywiki/vanilla/base.tid | 171 +++++++++++++----- 5 files changed, 187 insertions(+), 49 deletions(-) create mode 100644 core/wiki/macros/CSS-property.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9148.tid diff --git a/core/ui/TiddlerInfo.tid b/core/ui/TiddlerInfo.tid index 045fe8dec7..abab5374a9 100644 --- a/core/ui/TiddlerInfo.tid +++ b/core/ui/TiddlerInfo.tid @@ -2,7 +2,7 @@ title: $:/core/ui/TiddlerInfo \whitespace trim
          -
          +
          <$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="sticky"> <$button set=<> setTo="" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class="tc-btn-invisible"> {{$:/core/images/close-button}} diff --git a/core/wiki/macros/CSS-property.tid b/core/wiki/macros/CSS-property.tid new file mode 100644 index 0000000000..574885f71f --- /dev/null +++ b/core/wiki/macros/CSS-property.tid @@ -0,0 +1,39 @@ +title: $:/core/macros/CSS/property + + + + + +\procedure margin-start(size) + -webkit-margin-start: <>; + margin-inline-start: <>; +\end + +\procedure margin-end(size) + -webkit-margin-end: <>; + margin-inline-end: <>; +\end + +\procedure padding-start(size) + -webkit-padding-start: <>; + padding-inline-start: <>; +\end + +\procedure padding-end(size) + -webkit-padding-end: <>; + padding-inline-end: <>; +\end + +\procedure margin-inline(start,end) + -webkit-margin-start: <>; + margin-inline-start: <>; + -webkit-margin-end: <>; + margin-inline-end: <>; +\end + +\procedure padding-inline(start,end) + -webkit-padding-start: <>; + padding-inline-start: <>; + -webkit-padding-end: <>; + padding-inline-end: <>; +\end diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9148.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9148.tid new file mode 100644 index 0000000000..d74f2c9f80 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9148.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9148 +description: Bidirectional improvements for core classes +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: theme +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9148 +github-contributors: Leilei332 + +Make some core classes display properly when Tiddlywiki's language uses bidrectional scripts. \ No newline at end of file diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 1d12a858c1..2e6d568fec 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -97,6 +97,12 @@ canvas.tc-edit-bitmapeditor { background-image: linear-gradient(to right, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%); } +/* HACK: :dir should be used here. html[dir="rtl"] rules are used to support browsers released before 2023 */ + +html[dir="rtl"] .tc-sidebar-lists .tc-tab-set .tc-tab-divider { + background-image: linear-gradient(to left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%); +} + .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button { background-image: linear-gradient(to right, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%); } @@ -105,6 +111,14 @@ canvas.tc-edit-bitmapeditor { background-image: linear-gradient(to right, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%); } +html[dir="rtl"] .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button { + background-image: linear-gradient(to right, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.01) 100%); +} + +html[dir="rtl"] .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected { + background-image: linear-gradient(to right, rgba(255,255,255,0.05) 0%, rgba(0,0,0,0.05) 100%) +} + .tc-message-box img { box-shadow: 1px 1px 3px rgba(0,0,0,0.5); } diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 28348fc251..c20aa94abb 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -63,6 +63,7 @@ $else$ \end +\import [[$:/core/macros/CSS/property]] \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock /* @@ -175,9 +176,9 @@ code { } blockquote { - border-left: 5px solid <>; - margin-left: 25px; - padding-left: 10px; + border-inline-start: 5px solid <>; + <> + <> quotes: "\201C""\201D""\2018""\2019"; } @@ -190,9 +191,8 @@ blockquote.tc-big-quote { font-family: Georgia, serif; position: relative; background: <>; - border-left: none; - margin-left: 50px; - margin-right: 50px; + border-inline-start: none; + <> padding: 10px; border-radius: 8px; } @@ -262,7 +262,9 @@ input[type="search"]::-webkit-search-results-decoration { } svg.tc-image-button { - padding: 0px 1px 1px 0px; + padding-top: 0px; + padding-bottom: 1px; + <> } .tc-icon-wrapper > svg { @@ -659,7 +661,7 @@ html body.tc-body .tc-btn-rounded svg { .tc-btn-text { - margin-left: 7px; + <> } /* used for documentation "fake" buttons */ @@ -729,7 +731,7 @@ button svg.tc-image-button, button .tc-image-button img { border: none; width: 100%; width: calc(100% + 2px); - margin-left: -43px; + <> text-align: center; border-top: 2px solid <>; margin-top: 4px; @@ -757,7 +759,7 @@ button svg.tc-image-button, button .tc-image-button img { border: none; width: 23px; text-align: center; - margin-left: -35px; + <> top: 6px; bottom: 6px; } @@ -775,7 +777,7 @@ button svg.tc-image-button, button .tc-image-button img { .tc-fold-banner { width: 16px; - margin-left: -16px; + <> font-size: 0.75em; } @@ -1024,9 +1026,9 @@ button.tc-btn-invisible.tc-remove-tag-button { .tc-sidebar-scrollable { position: fixed; top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}}; - left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + inset-inline-start: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; bottom: 0; - right: 0; + inset-inline-end: 0; overflow-y: auto; overflow-x: auto; -webkit-overflow-scrolling: touch; @@ -1034,9 +1036,16 @@ button.tc-btn-invisible.tc-remove-tag-button { padding: 71px 0 28px 42px; } - html[dir="rtl"] .tc-sidebar-scrollable { - left: auto; - right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + @supports not (inset-inline-start: 0) { + .tc-sidebar-scrollable { + left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + right: 0; + } + + html[dir="rtl"] .tc-sidebar-scrollable { + left: auto; + right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + } } .tc-story-river { @@ -1123,6 +1132,11 @@ button.tc-btn-invisible.tc-remove-tag-button { } +.tc-tiddler-info-controls { + position: absolute; + inset-inline-end: 0; +} + .tc-view-field-table { width: 100%; } @@ -1185,7 +1199,7 @@ button.tc-btn-invisible.tc-remove-tag-button { .tc-tiddler-title-icon { vertical-align: middle; - margin-right: .1em; + <> } .tc-tiddler-title-icon svg { @@ -1236,7 +1250,7 @@ button.tc-btn-invisible.tc-remove-tag-button { } .tc-tiddler-frame .tc-tiddler-controls { - float: right; + float: inline-end; padding: 3px; /* make space for outline */ } @@ -1777,7 +1791,7 @@ html body.tc-body.tc-single-tiddler-window { */ .tc-viewswitcher .tc-image-button { - margin-right: .3em; + <> } .tc-page-container.tc-page-view-zoomin .tc-tiddler-frame { @@ -1860,7 +1874,7 @@ html body.tc-body.tc-single-tiddler-window { display: block; padding: 0 14px 0 14px; width: 100%; - text-align: left; + text-align: start; color: <>; line-height: 1.4; } @@ -2164,7 +2178,7 @@ html body.tc-body.tc-single-tiddler-window { display: block; padding-top: 14px; vertical-align: top; - text-align: right; + text-align: end; margin-bottom: inherit; margin-right: -1px; max-width: 33%; @@ -2202,20 +2216,20 @@ html body.tc-body.tc-single-tiddler-window { width: 100%; margin-top: 3px; margin-right: 0; - text-align: right; + text-align: end; background-color: <>; - border-left: 1px solid <>; + border-inline-start: 1px solid <>; border-bottom: 1px solid <>; - border-right: none; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; + border-inline-end: none; + border-start-start-radius: 2px; + border-end-start-radius: 2px; + border-start-end-radius: 0; + border-end-end-radius: 0; } .tc-tab-buttons.tc-vertical button.tc-tab-selected { background-color: <>; - border-right: 1px solid <>; + border-inline-end: 1px solid <>; } .tc-tab-divider { @@ -2234,8 +2248,8 @@ html body.tc-body.tc-single-tiddler-window { display: inline-block; vertical-align: top; padding-top: 0; - padding-left: 14px; - border-left: 1px solid <>; + <> + border-inline-start: 1px solid <>; -webkit-flex: 1 0 70%; flex: 1 0 70%; overflow: auto; @@ -2455,7 +2469,7 @@ html body.tc-body.tc-single-tiddler-window { .tc-alert-toolbar { position: absolute; top: 7px; - right: 7px; + inset-inline-end: 7px; line-height: 0; } @@ -2539,6 +2553,10 @@ html body.tc-body.tc-single-tiddler-window { padding: 4px; } +.tc-control-panel table > tbody > tr > td { + text-align: start; +} + .tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea { width: 100%; } @@ -2828,7 +2846,9 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta .tc-chooser-item { border-bottom: 1px solid <>; border-top: 1px solid <>; - padding: 2px 4px 2px 14px; + padding-top: 2px; + padding-bottom: 2px; + <> } .tc-drop-down .tc-chooser-item { @@ -2861,7 +2881,7 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta } .tc-chosen > .tc-tiddlylink:before { - margin-left: -10px; + <> position: relative; content: "» "; } @@ -2926,11 +2946,11 @@ input.tc-palette-manager-colour-input { .tc-table-of-contents ol { list-style-type: none; - padding-left: 0; + <> } .tc-table-of-contents ol ol { - padding-left: 1em; + <> } .tc-table-of-contents li { @@ -2971,7 +2991,7 @@ input.tc-palette-manager-colour-input { .tc-tabbed-table-of-contents .tc-table-of-contents { z-index: 100; display: inline-block; - padding-left: 1em; + <> max-width: 50%; -webkit-flex: 0 0 auto; flex: 0 0 auto; @@ -3219,17 +3239,17 @@ html body.tc-dirty span.tc-dirty-indicator, html body.tc-dirty span.tc-dirty-ind */ .tc-tree div { - padding-left: 14px; + <> } .tc-tree ol { list-style-type: none; - padding-left: 0; + <> margin-top: 0; } .tc-tree ol ol { - padding-left: 1em; + <> } .tc-tree button { @@ -3359,7 +3379,7 @@ span.tc-translink > a:first-child { line-height: 0; border-radius: 1em; vertical-align: text-bottom; - margin-right: 0.25em; + <> } .tc-test-case-result-icon svg { @@ -3395,7 +3415,7 @@ span.tc-translink > a:first-child { } .tc-test-case-toolbar { - float: right; + float: inline-end; } .tc-test-case-toolbar svg { @@ -3529,11 +3549,11 @@ span.tc-translink > a:first-child { } .tc-tiny-gap-left { - margin-left: .25em; + <> } .tc-tiny-gap-right { - margin-right: .25em; + <> } .tc-small-gap { @@ -3542,11 +3562,11 @@ span.tc-translink > a:first-child { } .tc-small-gap-left { - margin-left: .5em; + <> } .tc-small-gap-right { - margin-right: .5em; + <> } .tc-big-gap { @@ -3555,11 +3575,11 @@ span.tc-translink > a:first-child { } .tc-big-gap-left { - margin-left: 1em; + <> } .tc-big-gap-right { - margin-right: 1em; + <> } .tc-word-break { @@ -3572,3 +3592,58 @@ span.tc-translink > a:first-child { margin-bottom: 3px; } +/* TODO: Remove the following rule once 2020 baseline is supported */ +@supports not (border-inline-start: 1px solid #000000) { + blockquote { + border-left: 5px solid <>; + } + + blockquote.tc-big-quote { + border-left: none; + } + + .tc-tab-buttons.tc-vertical button { + border-left: 1px solid <>; + border-right: none; + } + + .tc-tab-buttons.tc-vertical button.tc-tab-selected { + border-right: 1px solid <>; + } + + .tc-tab-content.tc-vertical { + border-left: 1px solid <>; + } +} + +/* TODO: Remove the following rule once 2021 baseline is supported */ +@supports not (border-start-start-radius: 0px) { + .tc-tab-buttons.tc-vertical button { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +} + +/* TODO: Remove the following rule once 2021 baseline is supported */ +@supports not (inset-inline-start: 0) { + .tc-tiddler-info-controls { + right: 0; + } + + .tc-alert-toolbar { + right: 7px; + } +} + +/* TODO: Remove the following rule once 2023 baseline is supported */ +@supports not (float: inline-end) { + .tc-test-case-toolbar { + float: right; + } + + .tc-tiddler-frame .tc-tiddler-controls { + float: right; + } +} \ No newline at end of file From bd4fdd8f2e5d45ee6a1330bc5c0dc2be4a82634b Mon Sep 17 00:00:00 2001 From: XLBilly Date: Sun, 4 Jan 2026 20:13:10 +0800 Subject: [PATCH 384/458] Improve tabs macro accessibility (#9348) * Improve tabs macro accessibility * Fix wrong aria-selected attribute * Patch button widget to allow changing the default aria-checked attribute * Patch button widget to have aria-checked attribute set to false * Update tests * Further fix tests * Update docs * Update change notes --- core/modules/widgets/button.js | 14 +++++++++++--- core/wiki/macros/tabs.tid | 7 ++++--- .../tabs-macro/expected-test-tabs-horizontal-a.tid | 2 +- .../expected-test-tabs-horizontal-all.tid | 2 +- .../tabs-macro/expected-test-tabs-vertical.tid | 2 +- .../tw5.com/tiddlers/releasenotes/5.4.0/#9348.tid | 10 ++++++++++ editions/tw5.com/tiddlers/widgets/ButtonWidget.tid | 3 ++- 7 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9348.tid diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index 8f6f143763..e946b7da96 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -9,6 +9,8 @@ Button widget "use strict"; +const ALLOWED_SELECTED_ARIA_ATTR = ["aria-checked", "aria-selected", "aria-pressed"]; + var Widget = require("$:/core/modules/widgets/widget.js").widget; var Popup = require("$:/core/modules/utils/dom/popup.js"); @@ -44,9 +46,14 @@ ButtonWidget.prototype.render = function(parent,nextSibling) { var classes = this["class"].split(" ") || [], isPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp(); if(this.selectedClass) { - if((this.set || this.setTitle) && this.setTo && this.isSelected()) { - $tw.utils.pushTop(classes, this.selectedClass.split(" ")); - domNode.setAttribute("aria-checked", "true"); + if((this.set || this.setTitle) && this.setTo) { + const selectedAria = ALLOWED_SELECTED_ARIA_ATTR.includes(this.selectedAria) ? this.selectedAria : "aria-checked"; + if(this.isSelected()) { + $tw.utils.pushTop(classes, this.selectedClass.split(" ")); + domNode.setAttribute(selectedAria, "true"); + } else { + domNode.setAttribute(selectedAria, "false"); + } } if(isPoppedUp) { $tw.utils.pushTop(classes,this.selectedClass.split(" ")); @@ -221,6 +228,7 @@ ButtonWidget.prototype.execute = function() { this.style = this.getAttribute("style"); this["class"] = this.getAttribute("class",""); this.selectedClass = this.getAttribute("selectedClass"); + this.selectedAria = this.getAttribute("selectedAria"); this.defaultSetValue = this.getAttribute("default",""); this.buttonTag = this.getAttribute("tag"); this.dragTiddler = this.getAttribute("dragTiddler"); diff --git a/core/wiki/macros/tabs.tid b/core/wiki/macros/tabs.tid index 1805bc9bea..550e394025 100644 --- a/core/wiki/macros/tabs.tid +++ b/core/wiki/macros/tabs.tid @@ -9,8 +9,9 @@ code-body: yes setTo=<> default=<<__default__>> selectedClass="tc-tab-selected" + selectedAria="aria-selected" tooltip={{!!tooltip}} - role="switch" + role="tab" data-tab-title=<> > <$tiddler tiddler=<>> @@ -57,12 +58,12 @@ code-body: yes \whitespace trim <$qualify title=<<__state__>> name="qualifiedState"> <$let tabsState={{{ [<__explicitState__>minlength[1]] ~[] }}}> -
          ] }}}> +
          ] }}} role="tablist">
          ] }}}> <>
          ] }}}/> -
          ] }}}> +
          ] }}} role="tabpanel"> <>
          diff --git a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-a.tid b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-a.tid index e6d98a661a..f0505ad729 100644 --- a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-a.tid +++ b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-a.tid @@ -2,4 +2,4 @@ title: expected-test-tabs-horizontal-a type: text/html description: Horizontal tabs test - This is the expected HTML output from a test in test-wikitext-tabs-macro.js -

          Text tab 2

          \ No newline at end of file +

          Text tab 2

          diff --git a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-all.tid b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-all.tid index c01d6e3bd8..155cca5204 100644 --- a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-all.tid +++ b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-horizontal-all.tid @@ -2,4 +2,4 @@ title: expected-test-tabs-horizontal-all type: text/html description: Horizontal tabs with all parameters active. This is the expected HTML output from a test in test-wikitext-tabs-macro.js -

          TabTwo

          Text tab 2

          \ No newline at end of file +

          TabTwo

          Text tab 2

          diff --git a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-vertical.tid b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-vertical.tid index 6ffaa40de0..b55b472299 100644 --- a/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-vertical.tid +++ b/editions/test/tiddlers/tests/data/tabs-macro/expected-test-tabs-vertical.tid @@ -2,4 +2,4 @@ title: expected-test-tabs-vertical type: text/html description: Vertical tabs test -- This is the expected HTML output from the test in test-wikitext-tabs-macro.js -

          Text tab 2

          \ No newline at end of file +

          Text tab 2

          diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9348.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9348.tid new file mode 100644 index 0000000000..e9dbb273ce --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9348.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9348 +description: Improve tabs macro accessibility +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: usability +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9348 +github-contributors: Leilei332 + +Adds `tablist`, `tabpanel` and `tab` roles to the tabs macro to improve its accessibility. It also adds a `selectedAria` attribute to the button widget. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid index d1e94283c6..46d3a31969 100644 --- a/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid @@ -1,6 +1,6 @@ caption: button created: 20131024141900000 -modified: 20250720025737830 +modified: 20251101091926820 tags: Widgets TriggeringWidgets title: ButtonWidget type: text/vnd.tiddlywiki @@ -34,6 +34,7 @@ The content of the `<$button>` widget is displayed within the button. |setIndex |An ''index'' to which the new value will be assigned, if the attribute <<.attr setTitle>> is present | |setTo |The new value to assign to the TextReference identified in the `set` attribute or the text field / the field specified through <<.attr setField>> / the index specified through <<.attr setIndex>> of the title given through <<.attr setTitle>> | |selectedClass |An optional additional CSS class to be assigned if the popup is triggered or the tiddler specified in <<.attr set>> already has the value specified in <<.attr setTo>> | +|selectedAria |<<.from-version "5.4.0">> An ARIA attribute to be set to `true` or `false` when <<.attr selectedClass>> is defined. Allowed values are `aria-checked` (default), `aria-selected` and `aria-pressed` | |default |Default value if <<.attr set>> tiddler is missing for testing against <<.attr setTo>> to determine <<.attr selectedClass>> | |popup |Title of a state tiddler for a popup that is toggled when the button is clicked. See PopupMechanism for details | |popupTitle |Title of a state tiddler for a popup that is toggled when the button is clicked. In difference to the <<.attr popup>> attribute, ''no'' TextReference is used. See PopupMechanism for details | From 2a5ce95d99950964caaabed4a4822583f2436b0a Mon Sep 17 00:00:00 2001 From: IchijikuIchigo Date: Sun, 4 Jan 2026 21:14:41 +0900 Subject: [PATCH 385/458] Update Japanese translation (#9542) * Update Japanese translation * Update Japanese translation * Update Japanese translation * Update Japanese translation --- languages/ja-JP/Buttons.multids | 18 +++-- languages/ja-JP/ControlPanel.multids | 28 ++++++++ languages/ja-JP/Docs/ModuleTypes.multids | 9 +++ languages/ja-JP/Docs/PaletteColours.multids | 15 ++++ languages/ja-JP/EditTemplate.multids | 2 + languages/ja-JP/Exporters.multids | 3 + languages/ja-JP/Fields.multids | 14 ++-- languages/ja-JP/Help/commands.tid | 18 +++++ languages/ja-JP/Help/deletetiddlers.tid | 8 +++ languages/ja-JP/Help/fetch.tid | 38 +++++++++++ languages/ja-JP/Help/import.tid | 24 +++++++ languages/ja-JP/Help/listen.tid | 34 ++++++++++ languages/ja-JP/Help/password.tid | 1 - languages/ja-JP/Help/render.tid | 36 ++++++++++ languages/ja-JP/Help/save.tid | 25 +++++++ languages/ja-JP/Help/savewikifolder.tid | 34 ++++++++++ languages/ja-JP/Import.multids | 2 +- languages/ja-JP/Misc.multids | 68 +++++++++---------- languages/ja-JP/NewJournal.multids | 2 +- languages/ja-JP/Notifications.multids | 2 + languages/ja-JP/Search.multids | 4 +- languages/ja-JP/SideBar.multids | 2 +- .../ja-JP/Snippets/FunctionDefinition.tid | 7 ++ languages/ja-JP/Snippets/ListByTag.tid | 5 ++ languages/ja-JP/Snippets/MacroDefinition.tid | 7 ++ .../ja-JP/Snippets/ProcedureDefinition.tid | 7 ++ languages/ja-JP/Snippets/Table4x3.tid | 8 +++ languages/ja-JP/Snippets/TableOfContents.tid | 9 +++ languages/ja-JP/ThemeTweaks.multids | 42 ++++++++++++ .../ja-JP/Types/application_javascript.tid | 4 ++ languages/ja-JP/Types/application_json.tid | 4 ++ .../application_x-tiddler-dictionary.tid | 4 ++ languages/ja-JP/Types/image_gif.tid | 4 ++ languages/ja-JP/Types/image_jpeg.tid | 4 ++ languages/ja-JP/Types/image_png.tid | 4 ++ languages/ja-JP/Types/image_svg+xml.tid | 4 ++ languages/ja-JP/Types/text_css.tid | 4 ++ languages/ja-JP/Types/text_html.tid | 4 ++ languages/ja-JP/Types/text_plain.tid | 4 ++ .../Types/text_vnd.tiddlywiki-multiple.tid | 4 ++ languages/ja-JP/Types/text_vnd.tiddlywiki.tid | 4 ++ 41 files changed, 473 insertions(+), 47 deletions(-) create mode 100644 languages/ja-JP/Help/commands.tid create mode 100644 languages/ja-JP/Help/deletetiddlers.tid create mode 100644 languages/ja-JP/Help/fetch.tid create mode 100644 languages/ja-JP/Help/import.tid create mode 100644 languages/ja-JP/Help/listen.tid create mode 100644 languages/ja-JP/Help/render.tid create mode 100644 languages/ja-JP/Help/save.tid create mode 100644 languages/ja-JP/Help/savewikifolder.tid create mode 100644 languages/ja-JP/Snippets/FunctionDefinition.tid create mode 100644 languages/ja-JP/Snippets/ListByTag.tid create mode 100644 languages/ja-JP/Snippets/MacroDefinition.tid create mode 100644 languages/ja-JP/Snippets/ProcedureDefinition.tid create mode 100644 languages/ja-JP/Snippets/Table4x3.tid create mode 100644 languages/ja-JP/Snippets/TableOfContents.tid create mode 100644 languages/ja-JP/ThemeTweaks.multids create mode 100644 languages/ja-JP/Types/application_javascript.tid create mode 100644 languages/ja-JP/Types/application_json.tid create mode 100644 languages/ja-JP/Types/application_x-tiddler-dictionary.tid create mode 100644 languages/ja-JP/Types/image_gif.tid create mode 100644 languages/ja-JP/Types/image_jpeg.tid create mode 100644 languages/ja-JP/Types/image_png.tid create mode 100644 languages/ja-JP/Types/image_svg+xml.tid create mode 100644 languages/ja-JP/Types/text_css.tid create mode 100644 languages/ja-JP/Types/text_html.tid create mode 100644 languages/ja-JP/Types/text_plain.tid create mode 100644 languages/ja-JP/Types/text_vnd.tiddlywiki-multiple.tid create mode 100644 languages/ja-JP/Types/text_vnd.tiddlywiki.tid diff --git a/languages/ja-JP/Buttons.multids b/languages/ja-JP/Buttons.multids index 5ab9273dbe..da8a0b83ce 100644 --- a/languages/ja-JP/Buttons.multids +++ b/languages/ja-JP/Buttons.multids @@ -22,6 +22,8 @@ CopyToClipboard/Caption: クリップボードへコピー CopyToClipboard/Hint: このテキストをクリップボードへコピーします Delete/Caption: 削除 Delete/Hint: Tiddler を削除します +DeleteTiddlers/Caption: Tiddler一式の削除 +DeleteTiddlers/Hint: Tiddler一式を削除します Edit/Caption: 編集 Edit/Hint: この Tiddler を編集します EditorHeight/Caption: エディタの縦幅 @@ -43,7 +45,8 @@ Excise/Caption/Replace/Link: リンク Excise/Caption/Replace/Macro: マクロ Excise/Caption/Replace/Transclusion: 転出 Excise/Caption/Tag: 新しい Tiddler にこの Tiddler のタイトルをタグ付けします -Excise/Caption/TiddlerExists: Warning: Tiddler はすでに存在します +Excise/Caption/TiddlerExists: 警告: Tiddler はすでに存在します +Excise/DefaultTitle: 新しい切り取り Excise/Hint: 選択したテキストを新しいティドラーに切り出します ExportPage/Caption: すべてエクスポート ExportPage/Hint: すべての Tiddler をエクスポートします @@ -87,6 +90,8 @@ Italic/Caption: 斜体 Italic/Hint: 選択範囲に斜体書式を適用します Language/Caption: 言語 Language/Hint: メニューの言語を選択します +LayoutSwitcher/Caption: レイアウト +LayoutSwitcher/Hint: レイアウト切り替えを開きます LineWidth/Caption: 線の長さ LineWidth/Hint: 線画する線の長さを設定します Link/Caption: リンク @@ -105,6 +110,8 @@ MonoLine/Caption: 等幅 MonoLine/Hint: 選択範囲に等幅の文字書式を適用します More/Caption: その他のコマンド More/Hint: その他のコマンドを表示します +NetworkActivity/Caption: ネットワークアクティビティ +NetworkActivity/Hint: すべてのネットワークアクティビティをキャンセルします NewHere/Caption: タグ付き Tiddler の作成 NewHere/Hint: この Tiddler のタイトルのタグを付けた、新しい Tidder を作成します NewImage/Caption: 新しい画像 @@ -119,6 +126,7 @@ NewTiddler/Caption: 新しい Tiddler NewTiddler/Hint: 新しい Tiddler を作成します Opacity/Caption: 透明度 Opacity/Hint: ペイントの透明度を設定します +OpenControlPanel/Hint: この Wiki の設定画面を開きます OpenWindow/Caption: 新しいウインドウで開く OpenWindow/Hint: 新しいウインドウで Tiddler を開く Paint/Caption: ペイント色 @@ -155,10 +163,10 @@ Size/Caption/Height: 縦幅: Size/Caption/Resize: 画像のサイズを変更 Size/Caption/Width: 横幅: Size/Hint: 画像サイズの設定 -Stamp/Caption: 自己紹介 -Stamp/Caption/New: 自己紹介を追加します +Stamp/Caption: スタンプ +Stamp/Caption/New: 独自のスニペットを追加します Stamp/Hint: あらかじめ設定されたスニペットを挿入します -Stamp/New/Text: スニペットのテキスト (キャプションフィールドに説明的なタイトルを追加することを忘れないでください) +Stamp/New/Text: スニペットのテキスト (captionフィールドに説明的なタイトルを追加することを忘れないでください) Stamp/New/Title: メニューに表示する名前 StoryView/Caption: Tidder 表示切替 StoryView/Hint: Tiddler の表示方法を切り替えます @@ -170,6 +178,8 @@ Superscript/Caption: 上付き文字 Superscript/Hint: 選択範囲に上付き文字の書式を適用します TagManager/Caption: タグの管理 TagManager/Hint: タグの管理画面を開きます +TestCaseImport/Caption: Tiddler一式のインポート +TestCaseImport/Hint: Tiddler一式をインポートします Theme/Caption: テーマ Theme/Hint: 表示のテーマを選択します Timestamp/Caption: タイムスタンプ diff --git a/languages/ja-JP/ControlPanel.multids b/languages/ja-JP/ControlPanel.multids index 44d952776c..9a3a6aacbf 100644 --- a/languages/ja-JP/ControlPanel.multids +++ b/languages/ja-JP/ControlPanel.multids @@ -98,6 +98,10 @@ Plugins/Plugins/Caption: プラグイン Plugins/Plugins/Hint: プラグイン Plugins/PluginWillRequireReload: (再読み込みが必要) Plugins/Reinstall/Caption: 再インストール +Plugins/Stability/Deprecated: 非推奨 +Plugins/Stability/Experimental: 実験的 +Plugins/Stability/Legacy: レガシー +Plugins/Stability/Stable: 安定版 Plugins/SubPluginPrompt: <> 件サブプラグインが利用可能です Plugins/Theme/Prompt: テーマ Plugins/Themes/Caption: テーマ @@ -155,6 +159,8 @@ Settings/DefaultMoreSidebarTab/Caption: デフォルトのサイドバー 詳し Settings/DefaultMoreSidebarTab/Hint: デフォルトで表示されるサイドバー 詳しく タブを指定します Settings/DefaultSidebarTab/Caption: 標準サイドバータブ Settings/DefaultSidebarTab/Hint: 標準で表示されるサイドバータブを指定します +Settings/DefaultTiddlerInfoTab/Caption: Tiddler情報のデフォルトタブ +Settings/DefaultTiddlerInfoTab/Hint: Tiddler情報パネルを開いたときにデフォルトで表示されるタブを指定します Settings/EditorToolbar/Caption: エディターツールバー Settings/EditorToolbar/Description: エディターツールバーを表示 Settings/EditorToolbar/Hint: エディターツールバーの有効・無効を切り替えます: @@ -189,6 +195,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: アドレス Settings/PerformanceInstrumentation/Caption: パフォーマンス統計情報 Settings/PerformanceInstrumentation/Description: パフォーマンス統計情報の有効 Settings/PerformanceInstrumentation/Hint: ブラウザの開発者コンソールにパフォーマンスの統計情報を表示します。有効にするには再読み込みが必要です +Settings/RecentLimit/Caption: 最近の更新タブの上限 +Settings/RecentLimit/Hint: サイドバーの"最近の更新"タブに表示されるTiddlerの最大数 Settings/TitleLinks/Caption: Tiddler タイトル Settings/TitleLinks/Hint: オプションで Tiddler のタイトルをリンクとして表示することができます Settings/TitleLinks/No/Description: Tiddler のタイトルをリンクとして表示しない @@ -202,6 +210,12 @@ Settings/ToolbarButtonStyle/Hint: ツールバーのボタンのスタイルを Settings/ToolbarButtonStyle/Styles/Borderless: 枠なし Settings/ToolbarButtonStyle/Styles/Boxed: 四角 Settings/ToolbarButtonStyle/Styles/Rounded: 角丸 +SocialCard/Caption: ソーシャルメディアカード +SocialCard/Domain/Prompt: リンクに表示するドメイン名(例: ''tiddlywiki.com'') +SocialCard/Hint: この情報は、オンラインでホストされているこの~TiddlyWikiへのリンクのプレビューカードを表示するために、ソーシャルサービスやメッセージングサービスによって使用されます +SocialCard/PreviewUrl/Preview: プレビュー画像: +SocialCard/PreviewUrl/Prompt: この~TiddlyWikiのプレビュー画像のフルURL +SocialCard/Url/Prompt: この~TiddlyWikiのフルURL StoryTiddler/Caption: Tiddler 表示部 StoryTiddler/Hint: このルールカスケードは、Tiddler 表示部にに Tiddler を表示するためのテンプレートを動的に選択するために使用されます。 StoryView/Caption: 表示スタイル @@ -210,6 +224,12 @@ Stylesheets/Caption: スタイルシート Stylesheets/Expand/Caption: すべて展開 Stylesheets/Hint: <> でタグ付けされた現在のスタイルシートの Tiddler でレンダリングされた CSS です Stylesheets/Restore/Caption: 復旧 +TestCases/All/Caption: すべてのテストケース +TestCases/All/Hint: すべてのテストケース +TestCases/Caption: テストケース +TestCases/Failed/Caption: 失敗したテストケース +TestCases/Failed/Hint: 失敗したテストケースのみ +TestCases/Hint: テストケースは、それ自体で完結していて、テストや学習に使える例です Theme/Caption: テーマ Theme/Prompt: 現在のテーマ: TiddlerColour/Caption: Tiddler の色 @@ -234,5 +254,13 @@ Tools/Export/AllAsStaticHTML/Caption: すべての Tiddler を含む閲覧用 HT Tools/Export/Heading: エクスポート ViewTemplateBody/Caption: 表示テンプレートの本体 ViewTemplateBody/Hint: このルールカスケードは、デフォルトのビューテンプレートが Tiddler の本体を表示するためのテンプレートを動的に選択するために使用されます。 +ViewTemplateSubtitle/Caption: 表示テンプレートのサブタイトル +ViewTemplateSubtitle/Hint: このルールカスケードは、デフォルトのビューテンプレートがTiddlerのサブタイトルを表示するためのテンプレートを動的に選択するために使用されます。 +ViewTemplateTags/Caption: 表示テンプレートのタグ +ViewTemplateTags/Hint: このルールカスケードは、デフォルトのビューテンプレートがTiddlerのタグエリアを表示するためのテンプレートを動的に選択するために使用されます。 ViewTemplateTitle/Caption: 表示テンプレートのタイトル ViewTemplateTitle/Hint: このルールカスケードは、デフォルトのビューテンプレートが Tiddler のタイトルを表示するためのテンプレートを動的に選択するために使用されます。 +WikiInformation/Caption: Wikiの情報 +WikiInformation/Drag/Caption: このツールを別のウィキにコピーするには、このリンクをドラッグします +WikiInformation/Hint: このページは、~TiddlyWikiの設定に関する概要情報をまとめたものです。フォーラムで助けを求める際など、ユーザーが~TiddlyWikiの設定に関する重要な情報を他のユーザーと簡単に共有できるように設計されています。プライベート情報や個人情報は含まれておらず、明示的にコピー&ペーストしない限り、他の場所に共有されることはありません + diff --git a/languages/ja-JP/Docs/ModuleTypes.multids b/languages/ja-JP/Docs/ModuleTypes.multids index 014ee4577e..a5501d89ba 100644 --- a/languages/ja-JP/Docs/ModuleTypes.multids +++ b/languages/ja-JP/Docs/ModuleTypes.multids @@ -1,21 +1,30 @@ title: $:/language/Docs/ModuleTypes/ +allfilteroperator: ''all'' フィルターオペレータのサブオペレータ。 + animation: アニメーション。通常は RevealWidget で使用されるモジュール。 +authenticator: 組み込みHTTP サーバーによるリクエスト認証方法を定義します。 +bitmapeditoroperation: ビットマップ エディターのツールバーの操作。 command: Node.js で実行できるコマンド。 config: `$tw.config` に格納されるデータ。 filteroperator: 個々のフィルタ操作用メソッドモジュール。 global: `$tw` に格納されるグローバルデータ。 +info: [[$:/temp/info-plugin]] 疑似プラグインを介してシステム情報を公開します。 isfilteroperator: フィルタ ''is'' メソッドのオペランドモジュール。 +library: JavaScript汎用モジュール用の汎用モジュールタイプ。 macro: JavaScript マクロの定義モジュール。 parser: 各種 ContentType のパーサモジュール。 +route: 組み込みHTTPサーバーでURLの個々のパターンをどのように処理するかを定義します。 saver: ファイル保存メソッドモジュール。ブラウザによる差異を吸収する。 startup: 初回実行ファンクションモジュール。 storyview: リストウィジェットのアニメーションや振る舞いをカスタマイズするモジュール。 +texteditoroperation: テキストエディターのツールバーの操作。 tiddlerdeserializer: Tiddler を他の ContentType に変換するモジュール。 tiddlerfield: 個々の Tiddler フィールドの振る舞いを定義するモジュール。 tiddlermethod: `$tw.Tiddler` の prototype にメソッドを追加するモジュール。 upgrader: アップグレードやインポート中に Tiddler のアップグレード処理を追加するモジュール。 utils: `$tw.utils` にメソッドを追加するモジュール。 +utils-browser: `$tw.utils` にブラウザ固有のメソッドを追加するモジュール。 utils-node: `$tw.utils` に Node.js 特有のメソッドを追加するモジュール。 widget: DOM の描画や操作をひとまとめにしたウィジェットモジュール。 wikimethod: `$tw.Wiki` にメソッドを追加するモジュール。 diff --git a/languages/ja-JP/Docs/PaletteColours.multids b/languages/ja-JP/Docs/PaletteColours.multids index 4b51ca50e8..c649e0f99e 100644 --- a/languages/ja-JP/Docs/PaletteColours.multids +++ b/languages/ja-JP/Docs/PaletteColours.multids @@ -6,6 +6,9 @@ alert-highlight: アラートのハイライト alert-muted-foreground: 抑えたアラートの前景 background: 標準の背景 blockquote-bar: 引用線 +button-background: ボタンのデフォルト背景 +button-border: ボタンのデフォルト枠線 +button-foreground: ボタンのデフォルト前景 code-background: コードの背景 code-border: コードの枠線 code-foreground: コードの前景 @@ -26,6 +29,8 @@ external-link-foreground: 外部リンクの前景 external-link-foreground-hover: 外部リンクの前景(ホバー) external-link-foreground-visited: 外部リンクの前景(既訪) foreground: 標準の前景 +menubar-background: メニューバーの背景 +menubar-foreground: メニューバーの前景 message-background: メッセージボックスの背景 message-border: メッセージボックスの枠線 message-foreground: メッセージボックスの前景 @@ -42,6 +47,8 @@ page-background: ページの背景 pre-background: 整形済みコードの背景 pre-border: 整形済みコードの枠線 primary: 標準の前景 +select-tag-background: ``要素のテキスト sidebar-button-foreground: サイドバーボタンの前景 sidebar-controls-foreground: サイドバーコントロールの前景 sidebar-controls-foreground-hover: サイドバーコントロールの前景(ホバー) @@ -58,6 +65,11 @@ sidebar-tab-foreground: サイドバータブの前景 sidebar-tab-foreground-selected: サイドバータブの前景(選択済) sidebar-tiddler-link-foreground: サイドバーtiddlerリンクの前景 sidebar-tiddler-link-foreground-hover: サイドバーtiddlerリンクの前景(ホバー) +site-title-foreground: サイトタイトルの前景 +stability-deprecated: 安定度 "非推奨"のバッジ +stability-experimental: 安定度 "実験的"のバッジ +stability-legacy: 安定度 "レガシー"のバッジ +stability-stable: 安定度 "安定版"のバッジ static-alert-foreground: 固定アラート前景 tab-background: タブの背景 tab-background-selected: タブの背景(選択済) @@ -71,6 +83,9 @@ table-footer-background: テーブルフッタの背景 table-header-background: テーブルヘッダの背景 tag-background: タグの背景 tag-foreground: タグの前景 +testcase-accent-level-1: ネストなしのテストケースアクセントカラー +testcase-accent-level-2: 2段階ネストありのテストケースアクセントカラー +testcase-accent-level-3: 3段階ネストありのテストケースアクセントカラー tiddler-background: Tiddler の背景 tiddler-border: Tiddler の前景 tiddler-controls-foreground: Tiddler 部品の前景 diff --git a/languages/ja-JP/EditTemplate.multids b/languages/ja-JP/EditTemplate.multids index d978459ef6..e57502005f 100644 --- a/languages/ja-JP/EditTemplate.multids +++ b/languages/ja-JP/EditTemplate.multids @@ -26,6 +26,8 @@ Tags/ClearInput/Caption: 入力をクリア Tags/ClearInput/Hint: タグ入力をクリア Tags/Dropdown/Caption: タグ一覧 Tags/Dropdown/Hint: タグ一覧を表示 +Tags/EmptyMessage: タグが見つかりません +Tags/EmptyMessage/System: システムタグが見つかりません Title/BadCharacterWarning: 警告: Tiddler のタイトルに <> という文字の使用は避けてください Title/Exists/Prompt: 対象の Tiddler がすでに存在します Title/References/Prompt: この Tiddler の次のリファレンスは、自動的には更新されません: diff --git a/languages/ja-JP/Exporters.multids b/languages/ja-JP/Exporters.multids index d244ec852f..ef4b1f576b 100644 --- a/languages/ja-JP/Exporters.multids +++ b/languages/ja-JP/Exporters.multids @@ -1,3 +1,6 @@ title: $:/language/Exporters/ +CsvFile: CSV ファイル +JsonFile: JSON ファイル StaticRiver: 静的 HTML ファイルとして構成される一連の Tiddler +TidFile: ".tid" ファイル diff --git a/languages/ja-JP/Fields.multids b/languages/ja-JP/Fields.multids index d5740c6c6e..d299d5d989 100644 --- a/languages/ja-JP/Fields.multids +++ b/languages/ja-JP/Fields.multids @@ -2,11 +2,14 @@ title: $:/language/Docs/Fields/ _canonical_uri: 外部画像 Tiddler の URI _is_skinny: 存在する場合 Tiddler テキストフィールドがサーバーから読み込まれなければなりません +author: プラグインの作者の名前 bag: Tiddler の由来となった bag の名前 caption: タブやボタンに表示されるテキスト -code-body: ''はい'' に設定すると、表示テンプレートは、コードとして Tiddler を表示します +class: Tiddlerをレンダリングする際に適用されるCSSクラスです。モーダルにも使用されます +code-body: ''yes'' に設定すると、表示テンプレートは、コードとして Tiddler を表示します color: Tiddler に使用される CSS カラーの値 component: [[アラート Tiddler|AlertMechanism]] の原因となったコンポーネントの名前 +core-version: プラグインの場合、互換性のあるTiddlyWikiのバージョンを示します created: Tiddler が作成された日付 creator: Tiddler の作成者名 current-tiddler: [[履歴一覧|HistoryMechanism]] のトップにある Tiddler をキャッシュするために使用されます @@ -15,25 +18,28 @@ description: プラグインなどの説明文 draft.of: それがドラフト Tiddler であるときのタイトル draft.title: ドラフト Tiddler が正式版になったときに使用される予定のタイトル footer: ウィザードのフッタ部テキスト -hide-body: ''はい'' に設定すると表示テンプレートは、Tiddler の本文を非表示にします +hide-body: ''yes'' に設定すると表示テンプレートは、Tiddler の本文を非表示にします icon: 紐付けられているアイコン Tiddler のタイトル -library: "はい" の場合、その Tiddler は JavaScript ライブラリとして保存する必要があります +library: ''yes'' の場合、その Tiddler は JavaScript ライブラリとして保存する必要があります list: その Tiddler に紐付く Tiddler 名の順序付きリスト list-after: この項目が設定された Tiddler は、順序付きリストでこのフィールドに記載の名前の Tiddler の後ろに並びます list-before: この項目が設定された Tiddler は、順序付きリストでこのフィールドに記載の名前の Tiddler の前に並びます。ただし空文字列が指定されていた場合は順序付きリストの先頭になります modified: その Tiddler の最終更新日時 modifier: その Tiddler を最後に更新したユーザー名 +module-type: JavaScript Tiddlerの場合、モジュールの種類を指定します name: 人が読める形のプラグイン Tiddler 名 +parent-plugin: プラグインの場合、どのプラグインのサブプラグインであるかを特定 plugin-priority: プラグインの優先度を示す数値 plugin-type: プラグインの種別 released: TiddlyWiki のリリース日付 revision: サーバー上の Tiddler のリビジョン source: その Tiddler のソース URL +stability: プラグインの開発状況: 非推奨、実験的、安定版、またはレガシー subtitle: ウィザードのサブタイトル tags: その Tiddler に付けられたタグのリスト text: Tiddler の本文 throttle.refresh: 存在する場合、この Tiddler の更新を抑制します title: Tiddler の一意となる名称 -toc-link: 目次一覧で ''いいえ'' に設定されている場合、Tiddler のリンクを抑制します +toc-link: 目次一覧で ''no'' に設定されている場合、Tiddler のリンクを抑制します type: その Tiddler の種別 version: プラグインのバージョン情報 diff --git a/languages/ja-JP/Help/commands.tid b/languages/ja-JP/Help/commands.tid new file mode 100644 index 0000000000..e6ededd9f8 --- /dev/null +++ b/languages/ja-JP/Help/commands.tid @@ -0,0 +1,18 @@ +title: $:/language/Help/commands +description: フィルターから返されたコマンドを順に実行 + +フィルターから返されたコマンドトークンを順に実行します + +``` +--commands +``` + +例 + +``` +--commands "[enlist:raw{$:/build-commands-as-text}]" +``` + +``` +--commands "[{$:/build-commands-as-json}jsonindexes[]] :map[{$:/build-commands-as-json}jsonget]" +``` diff --git a/languages/ja-JP/Help/deletetiddlers.tid b/languages/ja-JP/Help/deletetiddlers.tid new file mode 100644 index 0000000000..820e12a89f --- /dev/null +++ b/languages/ja-JP/Help/deletetiddlers.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/deletetiddlers +description: Tiddlerのグループを削除 + +フィルターによって識別されたTiddlerのグループを削除します。 + +``` +--deletetiddlers +``` diff --git a/languages/ja-JP/Help/fetch.tid b/languages/ja-JP/Help/fetch.tid new file mode 100644 index 0000000000..cf4b1bee02 --- /dev/null +++ b/languages/ja-JP/Help/fetch.tid @@ -0,0 +1,38 @@ +title: $:/language/Help/fetch +description: URLのWikiからTiddler一式を取得 + +HTTP/HTTPS経由で1つ以上のファイルを取得し、フィルターに一致するTiddler一式をインポートします。オプションで、受信したタイトルを変換できます。 + +``` +--fetch file +--fetch files +--fetch raw-file +--fetch raw-files +``` + +"file"および"files"バリエーションは、指定されたファイルを取得し、その中のTiddler一式をインポートしようとします(ファイルをブラウザウィンドウにドラッグした場合と同じ処理です)。"raw-file"および"raw-files"バリエーションは、指定されたファイルを取得し、インポートロジックを適用せずに、生のファイルデータをTiddlerに保存します。 + +"file"および"raw-file"バリエーションでは、1 つのファイルのみが取得され、最初のパラメータは読み込むファイルのURLになります。 + +"files"および"raw-files"バリエーションでは、複数のファイルが取得され、最初のパラメータは読み込む対象のファイルのURLリストを生成するフィルターです。例えば、"remote-server"タグが付けられ、"url"フィールドを持つTiddlerのセットが指定された場合、フィルター`[tag[remote-server]get[url]]`は、有効なすべてのURLを取得します。 + +"file"および"files"バリエーションの場合、`` パラメータはインポートするTiddlerを決定するフィルターを指定します。指定されていない場合は、デフォルトで`[all[tiddlers]]`になります。 + +すべてのバリエーションにおいて、`` パラメータはインポートされたTiddlerのタイトルを変換するオプションフィルターを指定します。例えば、`[addprefix[$:/myimports/]]`は、各タイトルに`$:/myimports/` プレフィックスを追加します。 + +`--fetch` コマンドの前に`--verbose`を付けると、インポートの進行状況が出力されます。 + +TiddlyWikiは、すでにロードされているプラ​​グインの古いバージョンを取得しないことに注意してください。 + +次の例では、https://tiddlywiki.com からシステム以外のすべてのTiddlerを取得し、JSON ファイルに保存します: + +``` +tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]" +``` + +以下の例では、tiddlywiki.com から"favicon"ファイルを取得し、"output.ico"というファイルに保存します。中間のTiddler "Icon Tiddler"は"--fetch"コマンドで引用符で囲まれていますが、これはデフォルトのタイトルを置き換えるための変換フィルタとして使用されているためです。一方、"-- savetiddler"コマンドでは、タイトルとして直接使用されているため引用符は付いていません。 + +``` +tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico +``` + diff --git a/languages/ja-JP/Help/import.tid b/languages/ja-JP/Help/import.tid new file mode 100644 index 0000000000..3b7966f83c --- /dev/null +++ b/languages/ja-JP/Help/import.tid @@ -0,0 +1,24 @@ +title: $:/language/Help/import +description: ファイルからTiddlerをインポート + +TiddlyWiki (`.html`)、 `.tiddler`、`.tid`、`.json` またはその他のローカルファイルからTiddler一式をインポートします。ファイル拡張子からデシリアライザーを推測する`load` コマンドとは異なり、デシリアライザーは明示的に指定する必要があります。 + +``` +--import [] [<encoding>] +``` + +Coreに含まれるデシリアライザーは以下です: + +* application/javascript +* application/json +* application/x-tiddler +* application/x-tiddler-html-div +* application/x-tiddlers +* text/html +* text/plain + +インポートされたTiddlerのタイトルは、デフォルトでファイル名になります。 + +エンコードのデフォルトは"utf8"ですが、バイナリファイルをインポートする場合は"base64"にすることができます。 + +TiddlyWiki は、すでにロードされているプラ​​グインの古いバージョンをインポートしないことに注意してください。 diff --git a/languages/ja-JP/Help/listen.tid b/languages/ja-JP/Help/listen.tid new file mode 100644 index 0000000000..3bb5fa1e62 --- /dev/null +++ b/languages/ja-JP/Help/listen.tid @@ -0,0 +1,34 @@ +title: $:/language/Help/listen +description: TiddlyWikiへのHTTPサーバーインターフェースを提供 + +HTTP経由でWikiを提供します。 + +listenコマンドは[[名前付きコマンドパラメータ|NamedCommandParameters]]を使用します: + +``` +--listen [<name>=<value>]... +``` + +すべてのパラメータはオプションで、安全なデフォルトが設定されており、任意の順序で指定できます。認識されるパラメータは以下のとおりです: + +* ''host'' - サービスを提供するオプションのホスト名 (デフォルトは"127.0.0.1"または"localhost") +* ''path-prefix'' - パスのオプションのプレフィックス +* ''port'' - listenするポート番号。数値以外の値は、システム環境変数として解釈され、ポート番号を抽出します (デフォルトは"8080") +* ''credentials'' - 資格情報CSVファイルのパス名 (Wikiフォルダからの相対パス) +* ''anon-username'' - 匿名ユーザーが編集する際に署名するユーザー名 +* ''username'' - 基本認証用のオプションのユーザー名 +* ''password'' - 基本認証用のオプションのパスワード +* ''authenticated-user-header'' - 信頼された認証で使用されるリクエストヘッダーのオプションの名前 +* ''readers'' - このWikiから読み取りを許可されているプリンシパルのコンマ区切りリスト +* ''writers'' - このWikiへの書き込みを許可されているプリンシパルのコンマ区切りリスト +* ''csrf-disable'' - CSRFチェックを無効にするには"yes"に設定 (デフォルトは "no") +* ''root-tiddler'' -ルートで提供するTiddler (デフォルトは"$:/core/save/all") +* ''root-render-type'' - ルートTiddlerをレンダリングするコンテンツタイプ (デフォルトは "text/plain") +* ''root-serve-type'' - ルートTiddlerが提供されるコンテンツタイプ (デフォルトは "text/html") +* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder) +* ''tls-key'' - TLS鍵ファイルのパス名 (Wikiフォルダからの相対パス) +* ''debug-level'' - オプションのデバッグレベル。リクエストの詳細を表示するには"debug"に設定 (デフォルトは"none") +* ''gzip'' - 一部の HTTP エンドポイント用にgzip圧縮を有効にするには"yes"に設定 (デフォルトは"no") +* ''use-browser-cache'' - 帯域幅の節約のためにブラウザが応答をキャッシュできるようにするには"yes"に設定 (デフォルトは"no") + +インスタンスをローカルネットワークに公開する方法、およびセキュリティ上の懸念事項については、TiddlyWiki.comのWebServer Tiddler を参照してください。 diff --git a/languages/ja-JP/Help/password.tid b/languages/ja-JP/Help/password.tid index 3e7e4cc8f6..2cd30293c4 100644 --- a/languages/ja-JP/Help/password.tid +++ b/languages/ja-JP/Help/password.tid @@ -1,7 +1,6 @@ title: $:/language/Help/password description: 暗号化のパスワードの設定 - 暗号化に使用するパスワードを設定します。 ``` diff --git a/languages/ja-JP/Help/render.tid b/languages/ja-JP/Help/render.tid new file mode 100644 index 0000000000..94aaa7d4bb --- /dev/null +++ b/languages/ja-JP/Help/render.tid @@ -0,0 +1,36 @@ +title: $:/language/Help/render +description: 個々のTiddlerをファイルにレンダリング + + +フィルターによって識別された個々のTiddlerをレンダリングし、結果を指定されたファイルに保存します。 + +オプションとして、テンプレートTiddlerのタイトルを指定できます。この場合、各Tiddlerを直接レンダリングするのではなく、レンダリング対象のTiddlerのタイトルを"currentTiddler"変数に設定してテンプレートTiddlerをレンダリングします。 + +オプションで、追加の変数の名前と値を指定することもできます。 + +``` +--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [ [<name>] [<value>] ]* +``` + +* ''tiddler-filter'': レンダリングするTiddlerを識別するフィルター +* ''filename-filter'': Tiddlerのタイトルをパス名に変換するオプションのフィルタ。省略された場合は、デフォルトは`[is[tiddler]addsuffix[.html]]`となり、Tiddlerのタイトルがそのままファイル名として使用されます +* ''render-type'': オプションのレンダリングタイプ: `text/html` (デフォルト)は、完全な HTMLテキストを返し、`text/plain`は、テキストコンテンツを返します (つまり、HTML タグやその他の印刷できないマテリアルは無視されます) +* ''template'': 各Tiddlerをレンダリングするためのオプションのテンプレート +* ''name'': オプション変数の名前 +* ''value'': オプション変数の値 + +デフォルトでは、エディションディレクトリの`output`サブディレクトリを基準としてファイル名が解決されます。`--output`コマンドを使用すると、出力先を別のディレクトリに指定できます。 + +注: + +* 出力ディレクトリから既存のファイルは削除されません +* ファイル名へのパスに存在しないディレクトリは自動的に作成されます +* タイトルにスペースが含まれるTiddlerを参照する場合は、シェルに必要な引用符とTiddlyWikiの二重角括弧の両方を使用するように注意してください: `--render "[[Motovun Jack.jpg]]"` +* ファイル名フィルタは、選択された項目を現在レンダリング中のTiddlerのタイトルに設定して評価されます。これにより、タイトルをファイル名の計算の基準として使用できます。例えば、 `[encodeuricomponent[]addprefix[static/]]` は、各タイトルにURIエンコーディングを適用し、`static/`プレフィックスを追加します +* 複数の ''名前''/''値''のペアを使用して、複数の変数を渡すことができます +* `--render`コマンドは、非推奨の`--rendertiddler`コマンドと`--rendertiddlers`コマンドより柔軟な代替手段です + +例: + +* `--render '[!is[system]]' '[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]'` -- システム以外のすべてのTiddlerを、URLエンコードされたタイトルと拡張子HTMLを持つ"tiddlers"サブディレクトリ内のファイルとしてレンダリングします +* `--render '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- "HelloThere"タグの付いたTiddlerを"tiddlers.json"という名前のJSONファイルにレンダリングします \ No newline at end of file diff --git a/languages/ja-JP/Help/save.tid b/languages/ja-JP/Help/save.tid new file mode 100644 index 0000000000..0c7142ffea --- /dev/null +++ b/languages/ja-JP/Help/save.tid @@ -0,0 +1,25 @@ +title: $:/language/Help/save +description: 個々の生のTiddlerをファイルに保存 + +フィルターによって識別された個々のTiddlerを、生のテキスト形式やバイナリ形式で、指定されたファイルに保存します。 + +``` +--save <tiddler-filter> <filename-filter> +``` + +* ''tiddler-filter'': 保存するTiddlerを識別するフィルター +* ''filename-filter'': Tiddlerのタイトルをパス名に変換するオプションのフィルタ。省略された場合は、デフォルトは`[is[tiddler]]`となり、Tiddlerのタイトルがそのままファイル名として使用されます + +デフォルトでは、エディションディレクトリの`output`サブディレクトリを基準としてファイル名が解決されます。`--output`コマンドを使用すると、出力先を別のディレクトリに指定できます。 + +注: + +* 出力ディレクトリから既存のファイルは削除されません +* ファイル名へのパスに存在しないディレクトリは自動的に作成されます +* タイトルにスペースが含まれるTiddlerを保存する場合は、シェルに必要な引用符とTiddlyWikiの二重角括弧の両方を使用するように注意してください: `--save "[[Motovun Jack.jpg]]"` +* ファイル名フィルタは、選択された項目を現在保存中のTiddlerのタイトルに設定して評価されます。これにより、タイトルをファイル名の計算の基準として使用できます。例えば、 `[encodeuricomponent[]addprefix[static/]]` は、各タイトルにURIエンコーディングを適用し、`static/`プレフィックスを追加します +* `--save`コマンドは、非推奨の`--savetiddler`コマンドと`--savetiddlers`コマンドより柔軟な代替手段です + +例: + +* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- システム以外のすべての画像Tiddlerを、URLエンコードされたタイトルを持つ"tiddlers"サブディレクトリ内のファイルとして保存します diff --git a/languages/ja-JP/Help/savewikifolder.tid b/languages/ja-JP/Help/savewikifolder.tid new file mode 100644 index 0000000000..b3df288d9b --- /dev/null +++ b/languages/ja-JP/Help/savewikifolder.tid @@ -0,0 +1,34 @@ +title: $:/language/Help/savewikifolder +description: Wikiを新しいWikiフォルダに保存 + +<<.from-version "5.1.20">> Tiddler、プラグイン、設定を含む現在のWikiをWikiフォルダとして保存します: + +``` +--savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]* +``` + +* 対象のWikiフォルダは空か存在しない必要があります +* フィルターは、どのTiddlerを含めるかを指定します。これはオプションで、デフォルトは`[all[tiddlers]]`です +* 公式プラグインライブラリのプラグインは、`tiddlywiki.info`ファイル内のプラグインへの参照に置き換えられます +* カスタムプラグインは独自のフォルダに解凍されます + +次のオプションがサポートされています: + +* ''filter'': 出力に含めるTiddlerを定義するフィルター式。 +* ''explodePlugins'': デフォルトは"yes" +** ''yes''を指定すると、プラグインは個別のTiddlerファイルに"展開"され、wikiフォルダ内のプラグインディレクトリに保存されます +** ''no''を指定すると、プラグインを構成要素であるTiddlerファイルに展開する処理が抑制されます。プラグインは単一のJSON Tiddlerとしてtiddlersフォルダに保存されます + +どちらの''explodePlugins''オプションも、元のWikiと全く同じWikiフォルダを生成することに注意してください。違いは、Wikiフォルダ内でのプラグインの表現方法にあります。 + +一般的な使用法は、TiddlyWiki HTMLファイルをwikiフォルダーに変換することです: + +``` +tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder +``` + +プラグインを対象のwikiフォルダのTiddlersディレクトリに保存します: + +``` +tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder explodePlugins=no +``` diff --git a/languages/ja-JP/Import.multids b/languages/ja-JP/Import.multids index 3c6c497924..99a5eb031a 100644 --- a/languages/ja-JP/Import.multids +++ b/languages/ja-JP/Import.multids @@ -13,7 +13,7 @@ Listing/Preview/Fields: 項目 Listing/Preview/Text: テキスト Listing/Preview/TextRaw: テキスト (Raw) Listing/Rename/CancelRename: キャンセル -Listing/Rename/ConfirmRename] Tiddler の名前を変更 +Listing/Rename/ConfirmRename: Tiddler の名前を変更 Listing/Rename/OverwriteWarning: このタイトルの Tiddler はすでに存在しています。 Listing/Rename/Prompt: 変更名: Listing/Rename/Tooltip: インポート前に Tiddler の名前を変更する diff --git a/languages/ja-JP/Misc.multids b/languages/ja-JP/Misc.multids index 9caa602dc7..9b2d5d87bb 100644 --- a/languages/ja-JP/Misc.multids +++ b/languages/ja-JP/Misc.multids @@ -1,22 +1,21 @@ title: $:/language/ -NewJournal/Tags: Journal -NewJournal/Text: -NewJournal/Title: YYYY年MM月DD日(ddd) -AboveStory/ClassicPlugin/Warning: It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected: +AboveStory/ClassicPlugin/Warning: ~TiddlyWiki Classic用に設計されたプラグインを読み込もうとしています。 [[これらのプラグインは TiddlyWiki バージョン 5.xx では動作しません|these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]のでご注意ください。検出された~TiddlyWiki Classic プラグイン: BinaryWarning/Prompt: この Tiddler にはバイナリデータが含まれています ClassicWarning/Hint: この Tiddler はクラシックスタイルの TiddlyWiki フォーマットで書かれています。このフォーマットは TiddlyWiki5 との完全な互換性はありません。詳しくは https://tiddlywiki.com/static/Upgrading.html を参照してください。 ClassicWarning/Upgrade/Caption: アップグレード CloseAll/Button: すべて閉じる -ColourPicker/Recent: Recent: -ConfirmAction: Do you wish to proceed? +ColourPicker/Recent: 最近: +ConfirmAction: 続行しますか? ConfirmCancelTiddler: 本当にこの Tiddler "<$text text=<<title>>/>" の編集内容を取り消しますか? ConfirmDeleteTiddler: 本当にこの Tiddler "<$text text=<<title>>/>" を削除しますか? +ConfirmDeleteTiddlers: <<resultCount>>個のTiddlerを削除しますか? + ConfirmEditShadowTiddler: 隠し Tiddler を編集します。将来のアップグレードで互換性がとれなくなるかもしれません。本当にこの Tiddler "<$text text=<<title>>/>" を編集しますか? ConfirmOverwriteTiddler: 本当にこの Tiddler "<$text text=<<title>>/>" を上書きしますか? Count: count DefaultNewTiddlerTitle: 新しい Tiddler -Diffs/CountMessage: <<diff-count>> differences +Diffs/CountMessage: 異なる箇所の数: <<diff-count>> DropMessage: ドロップしてください。(止めるには、キャンセルをクリックしてください) Encryption/Cancel: キャンセル Encryption/ConfirmClearPassword: パスワードを削除すると暗号化も解除されますが、本当にパスワードを削除しますか? @@ -27,29 +26,31 @@ Encryption/RepeatPassword: パスワードの繰り返し Encryption/SetPassword: パスワードを設定 Encryption/Username: ユーザー名 Error/Caption: エラー -Error/Filter: フィルターエラー -Error/FilterRunPrefix: Filter Error: Unknown prefix for filter run -Error/FilterSyntax: Syntax error in filter expression -Error/FormatFilterOperator:Filter Error: Unknown suffix for the 'format' filter operator -Error/IsFilterOperator: Filter Error: Unknown operand for the 'is' filter operator -Error/LoadingPluginLibrary: Error loading plugin library -Error/NetworkErrorAlert: `<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.` -Error/PutEditConflict: File changed on server -Error/PutForbidden: Permission denied -Error/PutUnauthorized: Authentication required -Error/RecursiveTransclusion: Recursive transclusion error in transclude widget -Error/RetrievingSkinny: Error retrieving skinny tiddler list -Error/SavingToTWEdit: Error saving to TWEdit -Error/WhileSaving: Error while saving -Error/XMLHttpRequest: XMLHttpRequest error code -Exporters/CsvFile: CSV ファイル -Exporters/JsonFile: JSON ファイル -Exporters/StaticRiver: 静的 HTML ファイルとして構成される一連の Tiddler -Exporters/TidFile: ".tid" ファイル -InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser -InternalJavaScriptError/Title: Internal JavaScript Error +Error/DeserializeOperator/MissingOperand: フィルタエラー: 'deserialize'オペレータのオペランドがありません +Error/DeserializeOperator/UnknownDeserializer: フィルタエラー: 'deserialize'オペレータのオペランドで指定されたデシリアライザが不明です +Error/Filter: フィルタエラー +Error/FilterRunPrefix: フィルタエラー: フィルタランのプレフィックスが不明です +Error/FilterSyntax: フィルタエラー: フィルタ式のシンタックスが間違っています +Error/FormatFilterOperator: フィルタエラー: 'format'フィルタオペレータのサフィックスが不明です +Error/IsFilterOperator: フィルタエラー: 'is'フィルタオペレータのオペランドが不明です +Error/LoadingPluginLibrary: プラグインライブラリの読み込みエラー +Error/NetworkErrorAlert: `<h2>''ネットワークエラー''</h2>サーバーへの接続が失われたようです。ネットワーク接続に問題がある可能性があります。続行する前に、ネットワーク接続を回復してください。<br><br>''保存されていない変更は、接続が回復すると自動的に同期されます。''` +Error/PutEditConflict: サーバー上でファイルが変更されました +Error/PutForbidden: 許可されていません +Error/PutUnauthorized: 認証が必要です +Error/RecursiveTransclusion: transcludeウィジェットで、再帰トランスクルージョンのエラーです +Error/RetrievingSkinny: Skinny Tiddlerリストの取得エラー +Error/SavingToTWEdit: TWEditへの保存エラー +Error/WhileSaving: 保存中のエラー +Error/XMLHttpRequest: XMLHttpRequestエラーコード +Error/ZoominTextNode: ストーリービューエラー: カスタムコンテナに表示されるTiddlerを操作しようとしたようです。これはおそらく、先頭にテキストまたは空白を含むテンプレートで`$:/tags/StoryTiddlerTemplateFilter`を使用したことが原因です。プラグマ`\whitespace trim`を使用して、Tiddlerのコンテンツ全体が単一のHTML要素で囲まれていることを確認してください。この問題の原因となったテキスト: + + +InternalJavaScriptError/Hint: 恐縮ですが、ブラウザを更新してTiddlyWikiを再起動することをお勧めします +InternalJavaScriptError/Title: 内部JavaScriptエラー LayoutSwitcher/Description: レイアウト切り替えを開きます -LazyLoadingWarning: <p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p> +LazyLoadingWarning: <p>''<$text text={{!!_canonical_uri}}/>''から外部コンテンツを読み込み中です。このメッセージが消えない場合は、Tiddlerのコンテンツタイプが外部コンテンツのタイプと一致していないか、スタンドアロンファイルとしてWikiに読み込まれた外部コンテンツをサポートしていないブラウザを使用している可能性があります。https://tiddlywiki.com/#ExternalText をご覧ください</p> + LoginToTiddlySpace: TiddlySpace へログイン Manager/Controls/FilterByTag/None: (なし) Manager/Controls/FilterByTag/Prompt: タグでフィルター: @@ -69,13 +70,12 @@ Manager/Item/Tags: タグ Manager/Item/Tools: ツール Manager/Item/WikifiedText: Wikified テキスト MissingTiddler/Hint: 未作成の Tiddler "<$text text=<<currentTiddler>>/>" - クリック {{||$:/core/ui/Buttons/edit}} して作成 +NewJournal/Tags: 日誌 +NewJournal/Text: +NewJournal/Title: YYYY年MM月DD日(ddd) No: いいえ -Notifications/CopiedToClipboard/Failed: クリップボードのコピーに失敗しました -Notifications/CopiedToClipboard/Succeeded: クリップボードへコピーしました -Notifications/Save/Done: Wiki を保存しました -Notifications/Save/Starting: Wiki を保存します OfficialPluginLibrary: 公式 ~TiddlyWiki プラグインライブラリ -OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. +OfficialPluginLibrary/Hint: tiddlywiki.comにある公式~TiddlyWikiプラグインライブラリ。プラグイン、テーマ、言語パックはコアチームによってメンテナンスされています。 PageTemplate/Description: 標準 ~TiddlyWiki レイアウト PageTemplate/Name: 標準 ~PageTemplate PluginReloadWarning: ~JavaScript プラグインの変更を有効にするため、 {{$:/core/ui/Buttons/save-wiki}} 保存して {{$:/core/ui/Buttons/refresh}} 再読み込みしてください diff --git a/languages/ja-JP/NewJournal.multids b/languages/ja-JP/NewJournal.multids index 8db9d5e5b0..41ac9d3887 100644 --- a/languages/ja-JP/NewJournal.multids +++ b/languages/ja-JP/NewJournal.multids @@ -1,4 +1,4 @@ title: $:/config/NewJournal/ -Tags: Journal +Tags: 日誌 Title: YYYY年MM月DD日(ddd) diff --git a/languages/ja-JP/Notifications.multids b/languages/ja-JP/Notifications.multids index 191f9882b6..23455e0f20 100644 --- a/languages/ja-JP/Notifications.multids +++ b/languages/ja-JP/Notifications.multids @@ -1,4 +1,6 @@ title: $:/language/Notifications/ +CopiedToClipboard/Failed: クリップボードのコピーに失敗しました +CopiedToClipboard/Succeeded: クリップボードへコピーしました Save/Done: Wiki を保存しました Save/Starting: Wiki を保存します diff --git a/languages/ja-JP/Search.multids b/languages/ja-JP/Search.multids index 82ad104164..28c8f64607 100644 --- a/languages/ja-JP/Search.multids +++ b/languages/ja-JP/Search.multids @@ -3,10 +3,12 @@ title: $:/language/Search/ Advanced/Matches: //<small><<resultCount>> 件一致</small>// DefaultResults/Caption: リスト Filter/Caption: フィルタ -Filter/Hint: [[フィルタ|https://tiddlywiki.com/static/Filters.html]]で検索します。 +Filter/Hint: [[フィルタ|https://tiddlywiki.com/static/Filters.html]]で検索します。 Filter/Matches: //<small><<resultCount>> 件一致</small>// Matches: //<small><<resultCount>> 件一致</small>// Matches/All: すべて一致: +Matches/NoMatch: //該当なし// +Matches/NoResult: //検索結果なし// Matches/Title: タイトル一致: Search: 検索 Search/TooShort: 検索文が短すぎます diff --git a/languages/ja-JP/SideBar.multids b/languages/ja-JP/SideBar.multids index e5ff27ffe9..498bdda3f2 100644 --- a/languages/ja-JP/SideBar.multids +++ b/languages/ja-JP/SideBar.multids @@ -4,7 +4,7 @@ All/Caption: すべて Caption: サイドバー Contents/Caption: 目次 Drafts/Caption: 下書き -Explorer/Caption: Explorer +Explorer/Caption: エクスプローラ Missing/Caption: 未作成 More/Caption: 詳しく Open/Caption: 表示中 diff --git a/languages/ja-JP/Snippets/FunctionDefinition.tid b/languages/ja-JP/Snippets/FunctionDefinition.tid new file mode 100644 index 0000000000..0a4e782b49 --- /dev/null +++ b/languages/ja-JP/Snippets/FunctionDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/FunctionDefinition +tags: $:/tags/TextEditor/Snippet +caption: ファンクションの定義 + +\function f.name(param1,param2:"default value") [<param1>!is[blank]else<param2>] + +<<f.name>> diff --git a/languages/ja-JP/Snippets/ListByTag.tid b/languages/ja-JP/Snippets/ListByTag.tid new file mode 100644 index 0000000000..2b9e93a5b0 --- /dev/null +++ b/languages/ja-JP/Snippets/ListByTag.tid @@ -0,0 +1,5 @@ +title: $:/language/Snippets/ListByTag +tags: $:/tags/TextEditor/Snippet +caption: タグ指定によるTiddlerリスト + +<<list-links "[tag[task]sort[title]]">> diff --git a/languages/ja-JP/Snippets/MacroDefinition.tid b/languages/ja-JP/Snippets/MacroDefinition.tid new file mode 100644 index 0000000000..863dc183a7 --- /dev/null +++ b/languages/ja-JP/Snippets/MacroDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/MacroDefinition +tags: $:/tags/TextEditor/Snippet +caption: マクロの定義 + +\define macroName(param1:"default value",param2) +Text of the macro +\end diff --git a/languages/ja-JP/Snippets/ProcedureDefinition.tid b/languages/ja-JP/Snippets/ProcedureDefinition.tid new file mode 100644 index 0000000000..6eb0419ac1 --- /dev/null +++ b/languages/ja-JP/Snippets/ProcedureDefinition.tid @@ -0,0 +1,7 @@ +title: $:/language/Snippets/ProcedureDefinition +tags: $:/tags/TextEditor/Snippet +caption: プロシージャの定義 + +\procedure procName(param1:"default value",param2) +Your text comes here. +\end diff --git a/languages/ja-JP/Snippets/Table4x3.tid b/languages/ja-JP/Snippets/Table4x3.tid new file mode 100644 index 0000000000..c8a798c0bf --- /dev/null +++ b/languages/ja-JP/Snippets/Table4x3.tid @@ -0,0 +1,8 @@ +title: $:/language/Snippets/Table4x3 +tags: $:/tags/TextEditor/Snippet +caption: 4列3行のテーブル + +|! |!Alpha |!Beta |!Gamma |!Delta | +|!One | | | | | +|!Two | | | | | +|!Three | | | | | diff --git a/languages/ja-JP/Snippets/TableOfContents.tid b/languages/ja-JP/Snippets/TableOfContents.tid new file mode 100644 index 0000000000..9108ff57c0 --- /dev/null +++ b/languages/ja-JP/Snippets/TableOfContents.tid @@ -0,0 +1,9 @@ +title: $:/language/Snippets/TableOfContents +tags: $:/tags/TextEditor/Snippet +caption: 目次 + +<div class="tc-table-of-contents"> + +<<toc-selective-expandable 'TableOfContents'>> + +</div> \ No newline at end of file diff --git a/languages/ja-JP/ThemeTweaks.multids b/languages/ja-JP/ThemeTweaks.multids new file mode 100644 index 0000000000..2ff257a49d --- /dev/null +++ b/languages/ja-JP/ThemeTweaks.multids @@ -0,0 +1,42 @@ +title: $:/language/ThemeTweaks/ + +Metrics: サイズ +Metrics/BodyFontSize: TIddlerの本体のフォントサイズ +Metrics/BodyLineHeight: TIddlerの本体の行の高さ +Metrics/FontSize: フォントサイズ +Metrics/LineHeight: 行の高さ +Metrics/SidebarBreakpoint: サイドバーのブレークポイント +Metrics/SidebarBreakpoint/Hint: ストーリーリバーとサイドバーを<br>横並びで表示する最小ページ幅 +Metrics/SidebarWidth: サイドバーの幅 +Metrics/SidebarWidth/Hint: 可変幅-固定幅レイアウト時のサイドバーの幅 +Metrics/StoryLeft: ストーリーの左からの位置 +Metrics/StoryLeft/Hint: ストーリーリバー(Tiddlerエリア)の左余白が<br>ページの左からどのくらい空いているか +Metrics/StoryRight: ストーリーの右端 +Metrics/StoryRight/Hint: サイドバーの左余白が<br>ページの左からどのくらい空いているか +Metrics/StoryTop: ストーリーの上からの位置 +Metrics/StoryTop/Hint: ストーリーリバーの上余白が<br>ページの上からどのくらい空いているか +Metrics/StoryWidth: ストーリーの幅 +Metrics/StoryWidth/Hint: ストーリーリバー全体の幅 +Metrics/TiddlerWidth: Tiddlerの幅 +Metrics/TiddlerWidth/Hint: ストーリーリバーの内側 +Options: オプション +Options/CodeWrapping: コードブロック内の長い行の折り返し +Options/SidebarLayout: サイドバーのレイアウト +Options/SidebarLayout/Fixed-Fluid: 固定幅のストーリー、可変幅のサイドバー +Options/SidebarLayout/Fluid-Fixed: 可変幅のストーリー、固定幅のサイドバー +Options/StickyTitles: 固定タイトル +Options/StickyTitles/Hint: Tiddlerのタイトルをブラウザウィンドウの上部に"固定"します +Settings: 設定 +Settings/BackgroundImage: ページの背景画像 +Settings/BackgroundImageAttachment: ページの背景画像の固定 +Settings/BackgroundImageAttachment/Fixed: ウインドウに固定 +Settings/BackgroundImageAttachment/Scroll: TIddlerと一緒にスクロール +Settings/BackgroundImageSize: ページの背景画像のサイズ +Settings/BackgroundImageSize/Auto: 自動 +Settings/BackgroundImageSize/Contain: 全体を表示 +Settings/BackgroundImageSize/Cover: 全面を覆う +Settings/CodeFontFamily: コードのフォントファミリー +Settings/EditorFontFamily: エディターのフォントファミリー +Settings/FontFamily: フォントファミリー +ThemeTweaks: テーマの微調整 +ThemeTweaks/Hint: ''Vanilla''テーマの特定の要素を調整できます。 diff --git a/languages/ja-JP/Types/application_javascript.tid b/languages/ja-JP/Types/application_javascript.tid new file mode 100644 index 0000000000..c3d0d358ca --- /dev/null +++ b/languages/ja-JP/Types/application_javascript.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/javascript +description: JavaScript コード +name: application/javascript +group: Developer diff --git a/languages/ja-JP/Types/application_json.tid b/languages/ja-JP/Types/application_json.tid new file mode 100644 index 0000000000..6bbc27f141 --- /dev/null +++ b/languages/ja-JP/Types/application_json.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/json +description: JSON データ +name: application/json +group: Developer diff --git a/languages/ja-JP/Types/application_x-tiddler-dictionary.tid b/languages/ja-JP/Types/application_x-tiddler-dictionary.tid new file mode 100644 index 0000000000..58f2d110ca --- /dev/null +++ b/languages/ja-JP/Types/application_x-tiddler-dictionary.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/application/x-tiddler-dictionary +description: データ辞書 +name: application/x-tiddler-dictionary +group: Developer diff --git a/languages/ja-JP/Types/image_gif.tid b/languages/ja-JP/Types/image_gif.tid new file mode 100644 index 0000000000..1378e01b13 --- /dev/null +++ b/languages/ja-JP/Types/image_gif.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/gif +description: GIF 画像 +name: image/gif +group: Image diff --git a/languages/ja-JP/Types/image_jpeg.tid b/languages/ja-JP/Types/image_jpeg.tid new file mode 100644 index 0000000000..994e21718b --- /dev/null +++ b/languages/ja-JP/Types/image_jpeg.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/jpeg +description: JPEG 画像 +name: image/jpeg +group: Image diff --git a/languages/ja-JP/Types/image_png.tid b/languages/ja-JP/Types/image_png.tid new file mode 100644 index 0000000000..d553282d02 --- /dev/null +++ b/languages/ja-JP/Types/image_png.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/png +description: PNG 画像 +name: image/png +group: Image diff --git a/languages/ja-JP/Types/image_svg+xml.tid b/languages/ja-JP/Types/image_svg+xml.tid new file mode 100644 index 0000000000..4623e9100e --- /dev/null +++ b/languages/ja-JP/Types/image_svg+xml.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/image/svg+xml +description: SVG 画像 +name: image/svg+xml +group: Image diff --git a/languages/ja-JP/Types/text_css.tid b/languages/ja-JP/Types/text_css.tid new file mode 100644 index 0000000000..97ab914455 --- /dev/null +++ b/languages/ja-JP/Types/text_css.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/css +description: CSS スタイルシート +name: text/css +group: Image diff --git a/languages/ja-JP/Types/text_html.tid b/languages/ja-JP/Types/text_html.tid new file mode 100644 index 0000000000..3b6a976884 --- /dev/null +++ b/languages/ja-JP/Types/text_html.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/html +description: HTML +name: text/html +group: Text diff --git a/languages/ja-JP/Types/text_plain.tid b/languages/ja-JP/Types/text_plain.tid new file mode 100644 index 0000000000..def2839d09 --- /dev/null +++ b/languages/ja-JP/Types/text_plain.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/plain +description: プレーンテキスト +name: text/plain +group: Text diff --git a/languages/ja-JP/Types/text_vnd.tiddlywiki-multiple.tid b/languages/ja-JP/Types/text_vnd.tiddlywiki-multiple.tid new file mode 100644 index 0000000000..46764db1d3 --- /dev/null +++ b/languages/ja-JP/Types/text_vnd.tiddlywiki-multiple.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki-multiple +description: 複合Tiddler +name: text/vnd.tiddlywiki-multiple +group: Developer diff --git a/languages/ja-JP/Types/text_vnd.tiddlywiki.tid b/languages/ja-JP/Types/text_vnd.tiddlywiki.tid new file mode 100644 index 0000000000..b985a081e9 --- /dev/null +++ b/languages/ja-JP/Types/text_vnd.tiddlywiki.tid @@ -0,0 +1,4 @@ +title: $:/language/Docs/Types/text/vnd.tiddlywiki +description: TiddlyWiki 5 形式 +name: text/vnd.tiddlywiki +group: Text From 6eb881bffed28af2c0493c34273bec5bc4b24473 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 4 Jan 2026 14:08:40 +0100 Subject: [PATCH 386/458] New issue and bug report templates (#9512) * New issue and bug report templates * Change bug_report to .md file * update bug report text * Move To Reproduce up next to Problem Description * Fix typo --- .github/ISSUE_TEMPLATE/bug_report.md | 62 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/bug_report.yml | 68 ----------------------- .github/ISSUE_TEMPLATE/feature_request.md | 11 +++- 3 files changed, 70 insertions(+), 71 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..b2b0964b21 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,62 @@ +--- +name: Bug report +description: Create a report to help us improve TiddlyWiki 5 +title: "[Report] " +type: report + +--- + +<!-- Remove elements, that you do not need --> +<!-- Add screenshots where needed --> + +**Problem Description** +<!-- Describe your problem: A clear and concise description of what your problem is --> + + +**To Reproduce** + +Steps to reproduce the behavior: + +1. At https://tiddlywiki.com +2. Click on ... +3. Scroll down to ... +4. See ... + + +**Expected behavior** + +As a user, +<!-- As a developer, --> +I would expect ... + + +**TiddlyWiki Configuration** +<!-- Please complete the following information --> + +- Report created with: [Wiki Information](https://tiddlywiki.com/#%24%3A%2Fcore%2Fui%2FControlPanel%2FWikiInformation) + +<!-- Your report comes here --> +<!-- or --> +<!-- Add it manually --> + +- Version: <!-- e.g. v5.3.8 --> +- Saving mechanism: <!-- e.g. Node.js, TiddlyDesktop, TiddlyHost etc --> +- Plugins installed: <!-- e.g. Freelinks, TiddlyMap ... other 3rd party plugins --> + + +**Desktop** +<!-- Please complete the following information --> + +- OS: <!-- e.g. iOS --> +- Browser: <!-- e.g. chrome, safari, FireFox -- Version: --> + +**Smartphone** +<!-- Please complete the following information --> + +- Device: <!-- e.g. iPhone6 --> +- OS: <!-- e.g. iOS8.1 --> +- Browser: <!-- e.g. stock browser, safari, FireFox -- Version: --> + + +**Additional context** +<!-- Add any other context about the problem here. --> diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index e0334e007b..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Bug report -description: Create a report to help us improve TiddlyWiki 5 -title: "[BUG] " -type: bug -body: - - type: textarea - id: Describe - attributes: - label: Describe the bug - description: A clear and concise description of what the bug is. - validations: - required: true - - type: textarea - id: Expected - attributes: - label: Expected behavior - description: A clear and concise description of what you expected to happen. - validations: - required: false - - type: textarea - id: Reproduce - attributes: - label: To Reproduce - description: "Steps to reproduce the behavior:" - placeholder: | - 1. Go to '...' - 2. Click on '....' - 3. Scroll down to '....' - 4. See error - validations: - required: false - - type: textarea - id: Screenshots - attributes: - label: Screenshots - description: If applicable, add screenshots to help explain your problem. - placeholder: Drag image here to upload screenshot! - validations: - required: false - - type: textarea - id: Configuration - attributes: - label: TiddlyWiki Configuration - description: please complete the following information - placeholder: | - - Version [e.g. v5.1.24] - - Saving mechanism [e.g. Node.js, TiddlyDesktop, TiddlyHost etc] - - Plugins installed [e.g. Freelinks, TiddlyMap] - - ### Desktop (please complete the following information): - - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - - ### Smartphone (please complete the following information): - - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - validations: - required: true - - type: textarea - id: Context - attributes: - label: Additional context - description: Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 59f3dfcb21..c6a7f8022c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -4,18 +4,23 @@ about: Suggest an idea for TiddlyWiki 5 title: "[IDEA]" labels: '' assignees: '' -type: feature +type: idea --- -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +**Is your idea related to a problem? Please describe.** + +A clear and concise description of what the problem is. Eg: +As a user, I would like [...] **Describe the solution you'd like** + A clear and concise description of what you want to happen. **Describe alternatives you've considered** + A clear and concise description of any alternative solutions or features you've considered. **Additional context** + Add any other context or screenshots about the feature request here. From 6aee5eb0c7f4018eec6c3ac00502555bee479ec0 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 4 Jan 2026 14:16:54 +0100 Subject: [PATCH 387/458] Add Filter Syntax History link to Filters tiddler (#9541) --- editions/tw5.com/tiddlers/concepts/Filters.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/concepts/Filters.tid b/editions/tw5.com/tiddlers/concepts/Filters.tid index fcbe601cc0..759ee5a9d4 100644 --- a/editions/tw5.com/tiddlers/concepts/Filters.tid +++ b/editions/tw5.com/tiddlers/concepts/Filters.tid @@ -25,4 +25,4 @@ A filter output can change as tiddlers are added and deleted in the wiki. ~Tiddl * <$linkcatcher message="tm-navigate" actions=<<openAdvancedSearch>> >[[Advanced Search|$:/AdvancedSearch]]</$linkcatcher> -- has a <<.advancedsearch-tab Filter>> tab that makes it easy to experiment with filters. * [[Filtered Transclusions|Transclusion in WikiText]] -- if you want to use filter results in your text -* [[TiddlyWiki Syntax History]] -- if you are curious why the filter syntax is the way it is +* [[Filter Syntax History]] -- if you are curious why the filter syntax is the way it is From 2d9303c6ff0ee5e9312fe5ab9b06ab3dcb0b7e0a Mon Sep 17 00:00:00 2001 From: hsteve11 <hsteve11@gmail.com> Date: Mon, 5 Jan 2026 00:18:46 +1100 Subject: [PATCH 388/458] Signing CLA (#9539) --- licenses/cla-individual.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 713edd74b2..bab522a693 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -639,4 +639,5 @@ Joseph Yi, @josephyi, 2025/10/14 Rishu kumar, @rishu-7549, 2025/10/25 -@wiki-tutor, 2025/12/28 \ No newline at end of file +@wiki-tutor, 2025/12/28 +@hsteve11, 2025/12/30 \ No newline at end of file From ff7814360eadc036ff272d18d575c6740b42314e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sun, 4 Jan 2026 13:19:24 +0000 Subject: [PATCH 389/458] Cleanup whitespace in CLA --- licenses/cla-individual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index bab522a693..5e503b787a 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -638,6 +638,6 @@ Joseph Yi, @josephyi, 2025/10/14 Rishu kumar, @rishu-7549, 2025/10/25 - @wiki-tutor, 2025/12/28 -@hsteve11, 2025/12/30 \ No newline at end of file + +@hsteve11, 2025/12/30 From 7fb8560908295f02a2c55c39c102389dddd3a878 Mon Sep 17 00:00:00 2001 From: peteratkins <peterdatkins@btinternet.com> Date: Sun, 4 Jan 2026 13:30:54 +0000 Subject: [PATCH 390/458] Signing CLA (#9534) Co-authored-by: Jeremy Ruston <jeremy@jermolene.com> --- licenses/cla-individual.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 5e503b787a..c6197110fa 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -640,4 +640,8 @@ Rishu kumar, @rishu-7549, 2025/10/25 @wiki-tutor, 2025/12/28 +@wiki-tutor, 2025/12/28 + +@peteratkins, 2025/12/29 + @hsteve11, 2025/12/30 From e2fb22ade0135b30ac10c9f591bcb46f4d9fc2e2 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 4 Jan 2026 17:50:01 +0100 Subject: [PATCH 391/458] Bug report template: Rename description to about (#9546) --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b2b0964b21..a07ea530ab 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -description: Create a report to help us improve TiddlyWiki 5 +about: Create a report to help us improve TiddlyWiki 5 title: "[Report] " type: report From f3fa69e22939d0869a3ef6464916a6bf2b5fb6c3 Mon Sep 17 00:00:00 2001 From: superuser-does <32982579+superuser-does@users.noreply.github.com> Date: Sun, 4 Jan 2026 17:37:54 +0000 Subject: [PATCH 392/458] Docs: rename 'definition lists' to 'description lists' (#9535) * docs: Definition Lists to definition lists * tw5.com: rename Definition Lists to Description Lists throught tiddler * apply recommendations by @pmario on #9535 --- .../tiddlers/wikitext/Definitions in WikiText.tid | 13 +++---------- .../wikitext/Description Lists in WikiText.tid | 14 ++++++++++++++ .../wikitext/parser/Block Mode WikiText.tid | 4 ++-- 3 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 editions/tw5.com/tiddlers/wikitext/Description Lists in WikiText.tid diff --git a/editions/tw5.com/tiddlers/wikitext/Definitions in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Definitions in WikiText.tid index 842cb08ea7..5edf140bf2 100644 --- a/editions/tw5.com/tiddlers/wikitext/Definitions in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Definitions in WikiText.tid @@ -1,14 +1,7 @@ +caption: Definitions created: 20131205160424246 -modified: 20131205160450910 -tags: WikiText +modified: 20251229110936191 title: Definitions in WikiText type: text/vnd.tiddlywiki -caption: Definitions -HTML definition lists are created with this syntax: - -<<wikitext-example src:"; Term being defined -: Definition of that term -; Another term -: Another definition -">> +To use HTML Definition Lists through WikiText, see [[Description Lists in WikiText]]. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/wikitext/Description Lists in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Description Lists in WikiText.tid new file mode 100644 index 0000000000..687fb6772a --- /dev/null +++ b/editions/tw5.com/tiddlers/wikitext/Description Lists in WikiText.tid @@ -0,0 +1,14 @@ +caption: Description Lists +created: 20131205160424246 +modified: 20251229110936191 +tags: WikiText +title: Description Lists in WikiText +type: text/vnd.tiddlywiki + +HTML description lists (<abbr title="also known as">AKA</abbr> definition lists) are created with this syntax: + +<<wikitext-example src:"; Term being described +: Description / Definition of that term +; Another term +: Another description / definition +">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid b/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid index b0e00cfaf1..4f445a3eca 100644 --- a/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid @@ -15,7 +15,7 @@ Common characteristics of such block mode WikiText: |!~WikiText|!Punctuation| |[[Block Quotes in WikiText]] |Multi-line block quotes are enclosed by lines containing only the text `<<<`; single line block quotes are also possible.| |[[Code Blocks in WikiText]]|Enclosed by lines containing only the text <code>```</code>| -|[[Definitions in WikiText]]|Each term is on its own line and each definition is on its own line.| +|[[Description Lists in WikiText]]|Each term is on its own line and each definition is on its own line.| |[[Hard Linebreaks in WikiText]]|Enclosed by lines containing only the text `"""`.| |[[Headings in WikiText]]|Entire line starting with `!`.| |[[Horizontal Rules in WikiText]]|A line containing only the text `---`.| @@ -27,7 +27,7 @@ Common characteristics of such block mode WikiText: The above WikiText types are only recognised in ''block mode''. However, the text <<.em enclosed>> by most of them will be parsed in ''inline mode'' ([[Block Quotes in WikiText]] and [[Styles and Classes in WikiText]] are the two exceptions in which the parser will continue in ''block mode''). While in ''inline mode'' the parser may encounter something which moves it to ''block mode'' (see [[WikiText parser mode transitions]]). -At the end of the terminating line, the parser will return to ''block mode''. +At the end of the terminating line, the parser will return to ''block mode''. <<.tip 'Note: [[Hard Linebreaks in WikiText]] require an extra blank line after the trailing `"""` before the parser will return to <strong>block mode</strong>.'>> If the punctuation for the above types of WikiText is encountered while the parser is in ''inline mode'', it will be //ignored// and output as-is. From 98a61f01bb68a0261f61f8b32c26f2430e058f83 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Mon, 5 Jan 2026 02:03:54 +0800 Subject: [PATCH 393/458] Add locale support for sort operator (#9400) * Locale support for sort operator * Add checkLanguageCode util function * Update docs & add language code validation * Replace multiple isDescending with reverse * Revert "Replace multiple isDescending with reverse" This reverts commit 793177b8bc3cb4c1df21085ca547b0921269a3e7. * Simplify sortTiddler with Intl.Collator * Add change notes * Remove comment * Update makeCompareFunction to support locale * Update checkLanguageCode * Add locale support for sortsub * Add locale support for sort filter run prefix * Revert "Add locale support for sort filter run prefix" This reverts commit 9479a156d7963bc96548996dff85be66090afa2b. * Remove checkLanguageCode Since filters are able to catch errors now * Update locale example * Revert " Add locale support for sortsub" This reverts commit 4a617188fc601cbd90efd68de83c88671141e2f4. * Revert "Update makeCompareFunction to support locale" This reverts commit 0ebca080365abb61886e8675c8f77b7596b376e3. * Update docs * Update change note --- core/modules/filters/sort.js | 10 ++-- core/modules/wiki.js | 47 ++++--------------- editions/tw5.com/tiddlers/Locale Example.tid | 6 +++ .../tiddlers/filters/examples/sort.tid | 9 +++- editions/tw5.com/tiddlers/filters/nsort.tid | 16 +++---- editions/tw5.com/tiddlers/filters/nsortcs.tid | 4 +- editions/tw5.com/tiddlers/filters/sort.tid | 22 +++++---- editions/tw5.com/tiddlers/filters/sortan.tid | 4 +- editions/tw5.com/tiddlers/filters/sortcs.tid | 4 +- .../releasenotes/5.4.0/#9400 - collator.tid | 9 ++++ .../tiddlers/releasenotes/5.4.0/#9400.tid | 10 ++++ 11 files changed, 76 insertions(+), 65 deletions(-) create mode 100644 editions/tw5.com/tiddlers/Locale Example.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400 - collator.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400.tid diff --git a/core/modules/filters/sort.js b/core/modules/filters/sort.js index cdfe797283..9393df7495 100644 --- a/core/modules/filters/sort.js +++ b/core/modules/filters/sort.js @@ -14,31 +14,31 @@ Export our filter function */ exports.sort = function(source,operator,options) { var results = prepare_results(source); - options.wiki.sortTiddlers(results,operator.operand || "title",operator.prefix === "!",false,false); + options.wiki.sortTiddlers(results,operator.operands[0] || "title",operator.prefix === "!",false,false,undefined,operator.operands[1]); return results; }; exports.nsort = function(source,operator,options) { var results = prepare_results(source); - options.wiki.sortTiddlers(results,operator.operand || "title",operator.prefix === "!",false,true); + options.wiki.sortTiddlers(results,operator.operands[0] || "title",operator.prefix === "!",false,true,undefined,operator.operands[1]); return results; }; exports.sortan = function(source, operator, options) { var results = prepare_results(source); - options.wiki.sortTiddlers(results, operator.operand || "title", operator.prefix === "!",false,false,true); + options.wiki.sortTiddlers(results, operator.operands[0] || "title", operator.prefix === "!",false,false,true,operator.operands[1]); return results; }; exports.sortcs = function(source,operator,options) { var results = prepare_results(source); - options.wiki.sortTiddlers(results,operator.operand || "title",operator.prefix === "!",true,false); + options.wiki.sortTiddlers(results,operator.operands[0] || "title",operator.prefix === "!",true,false,undefined,operator.operands[1]); return results; }; exports.nsortcs = function(source,operator,options) { var results = prepare_results(source); - options.wiki.sortTiddlers(results,operator.operand || "title",operator.prefix === "!",true,true); + options.wiki.sortTiddlers(results,operator.operands[0] || "title",operator.prefix === "!",true,true,undefined,operator.operands[1]); return results; }; diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 1fa526b054..03b0626066 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -369,31 +369,16 @@ Sort an array of tiddler titles by a specified field isDescending: true if the sort should be descending isCaseSensitive: true if the sort should consider upper and lower case letters to be different */ -exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) { +exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric,locale) { var self = this; if(sortField === "title") { if(!isNumeric && !isAlphaNumeric) { - if(isCaseSensitive) { - if(isDescending) { - titles.sort(function(a,b) { - return b.localeCompare(a); - }); - } else { - titles.sort(function(a,b) { - return a.localeCompare(b); - }); - } + const sorter = new Intl.Collator(locale, { sensitivity: isCaseSensitive ? "variant" : "accent" }); + if(isDescending) { + titles.sort((a,b) => sorter.compare(b, a)); } else { - if(isDescending) { - titles.sort(function(a,b) { - return b.toLowerCase().localeCompare(a.toLowerCase()); - }); - } else { - titles.sort(function(a,b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - } - } + titles.sort((a,b) => sorter.compare(a, b)); + } } else { titles.sort(function(a,b) { var x,y; @@ -414,14 +399,8 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is } } } - if(isAlphaNumeric) { - return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: "base"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: "base"}); - } - if(!isCaseSensitive) { - a = a.toLowerCase(); - b = b.toLowerCase(); - } - return isDescending ? b.localeCompare(a) : a.localeCompare(b); + const sorter = new Intl.Collator(locale, { numeric: isAlphaNumeric, sensitivity: isAlphaNumeric ? "base" : isCaseSensitive ? "variant" : "accent" }); + return isDescending ? sorter.compare(b, a) : sorter.compare(a, b); }); } } else { @@ -463,14 +442,8 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is } a = String(a); b = String(b); - if(isAlphaNumeric) { - return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: "base"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: "base"}); - } - if(!isCaseSensitive) { - a = a.toLowerCase(); - b = b.toLowerCase(); - } - return isDescending ? b.localeCompare(a) : a.localeCompare(b); + const sorter = new Intl.Collator(locale, { numeric: isAlphaNumeric, sensitivity: isAlphaNumeric ? "base" : isCaseSensitive ? "variant" : "accent" }); + return isDescending ? sorter.compare(b, a) : sorter.compare(a, b); }); } }; diff --git a/editions/tw5.com/tiddlers/Locale Example.tid b/editions/tw5.com/tiddlers/Locale Example.tid new file mode 100644 index 0000000000..5d7898008b --- /dev/null +++ b/editions/tw5.com/tiddlers/Locale Example.tid @@ -0,0 +1,6 @@ +created: 20251001034405510 +list: A a Ä ä Z z O o Õ õ Ö ö Ü ü Y y +modified: 20251218023544134 +tags: +title: Locale Example +type: text/vnd.tiddlywiki \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/filters/examples/sort.tid b/editions/tw5.com/tiddlers/filters/examples/sort.tid index e6edf8ecf9..a0bdd36bc8 100644 --- a/editions/tw5.com/tiddlers/filters/examples/sort.tid +++ b/editions/tw5.com/tiddlers/filters/examples/sort.tid @@ -1,5 +1,5 @@ created: 20150124112340000 -modified: 20150124113250000 +modified: 20251218023608468 tags: [[sort Operator]] [[Operator Examples]] title: sort Operator (Examples) type: text/vnd.tiddlywiki @@ -11,3 +11,10 @@ type: text/vnd.tiddlywiki <<.operator-example 3 "one two Three four +[sort[]]">> <<.operator-example 4 "[prefix[Tiddl]sort[text]]">> <<.operator-example 5 "[has[created]sort[created]limit[10]]" "the oldest 10 tiddlers in the wiki">> + +! Using a custom locale +The following examples shows the differences when using the sort operator with default, Swedish and Estonian locale. + +<<.operator-example 6 "[list[Locale Example]sort[]]">> +<<.operator-example 7 "[list[Locale Example]sort[],[sv]]">> +<<.operator-example 8 "[list[Locale Example]sort[],[et]]">> diff --git a/editions/tw5.com/tiddlers/filters/nsort.tid b/editions/tw5.com/tiddlers/filters/nsort.tid index ab73c592ea..8ae6c1b698 100644 --- a/editions/tw5.com/tiddlers/filters/nsort.tid +++ b/editions/tw5.com/tiddlers/filters/nsort.tid @@ -1,15 +1,15 @@ +caption: nsort created: 20140410103123179 -modified: 20150203190051000 +modified: 20251227084602319 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: the input, likewise sorted into descending order +op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as numbers +op-parameter: accept same parameters as the [[sort Operator]] +op-parameter-name: F +op-purpose: sort the input by number field tags: [[Filter Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] title: nsort Operator type: text/vnd.tiddlywiki -caption: nsort -op-purpose: sort the input by number field -op-input: a [[selection of titles|Title Selection]] -op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> -op-parameter-name: F -op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as numbers -op-neg-output: the input, likewise sorted into descending order Non-numeric values are treated as having a higher value than any number, and the difference between capital and lowercase letters is ignored. Compare <<.olink nsortcs>>. diff --git a/editions/tw5.com/tiddlers/filters/nsortcs.tid b/editions/tw5.com/tiddlers/filters/nsortcs.tid index c878db2a59..7463560370 100644 --- a/editions/tw5.com/tiddlers/filters/nsortcs.tid +++ b/editions/tw5.com/tiddlers/filters/nsortcs.tid @@ -1,10 +1,10 @@ caption: nsortcs created: 20140410103123179 -modified: 20150417125717078 +modified: 20251227084615705 op-input: a [[selection of titles|Title Selection]] op-neg-output: the input, likewise sorted into descending order op-output: the input, sorted into ascending order by field <<.place F>>, treating field values as numbers -op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> +op-parameter: accept same parameters as the [[sort Operator]] op-parameter-name: F op-purpose: sort the input titles by number field, treating upper and lower case as different tags: [[Filter Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] diff --git a/editions/tw5.com/tiddlers/filters/sort.tid b/editions/tw5.com/tiddlers/filters/sort.tid index b20dc5430c..bace0dd005 100644 --- a/editions/tw5.com/tiddlers/filters/sort.tid +++ b/editions/tw5.com/tiddlers/filters/sort.tid @@ -1,16 +1,22 @@ +caption: sort created: 20140410103123179 -modified: 20150203191228000 +modified: 20251227084644651 +op-input: a [[selection of titles|Title Selection]] +op-neg-output: the input, likewise sorted into descending order +op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as text +op-parameter: the <<.op sort>> operator accepts 1 or 2 parameters, see below for details +op-parameter-name: F +op-purpose: sort the input by text field tags: [[Filter Operators]] [[Common Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] title: sort Operator type: text/vnd.tiddlywiki -caption: sort -op-purpose: sort the input by text field -op-input: a [[selection of titles|Title Selection]] -op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> -op-parameter-name: F -op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as text -op-neg-output: the input, likewise sorted into descending order The difference between capital and lowercase letters is ignored. Compare <<.olink sortcs>>. +``` +[sort[<field>],[<locale>]] +``` +* ''field'' : the name of a [[field|TiddlerFields]], defaulting to <<.field title>> +* ''locale'': (optional). A string with a [[BCP 47 language tag|https://developer.mozilla.org/en-US/docs/Glossary/BCP_47_language_tag]] + <<.operator-examples "sort">> diff --git a/editions/tw5.com/tiddlers/filters/sortan.tid b/editions/tw5.com/tiddlers/filters/sortan.tid index b6674c75b5..8502ba44e0 100644 --- a/editions/tw5.com/tiddlers/filters/sortan.tid +++ b/editions/tw5.com/tiddlers/filters/sortan.tid @@ -1,10 +1,10 @@ caption: sortan created: 20180222071605739 -modified: 20180223012553446 +modified: 20251227084439804 op-input: a [[selection of titles|Title Selection]] op-neg-output: the input, likewise sorted into descending order op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as alphanumerics -op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> +op-parameter: accept same parameters as the [[sort Operator]] op-parameter-name: F op-purpose: sort the input by text field considering them as alphanumerics tags: [[Filter Operators]] [[Common Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] diff --git a/editions/tw5.com/tiddlers/filters/sortcs.tid b/editions/tw5.com/tiddlers/filters/sortcs.tid index bcdff751a7..a67535e7d1 100644 --- a/editions/tw5.com/tiddlers/filters/sortcs.tid +++ b/editions/tw5.com/tiddlers/filters/sortcs.tid @@ -1,10 +1,10 @@ caption: sortcs created: 20140410103123179 -modified: 20150417125704503 +modified: 20251227084416522 op-input: a [[selection of titles|Title Selection]] op-neg-output: the input, likewise sorted into descending order op-output: the input, sorted into ascending order by field <<.field F>>, treating field values as text -op-parameter: the name of a [[field|TiddlerFields]], defaulting to <<.field title>> +op-parameter: accept same parameters as the [[sort Operator]] op-parameter-name: F op-purpose: sort the input by text field, treating upper and lower case as different tags: [[Filter Operators]] [[Field Operators]] [[Order Operators]] [[Negatable Operators]] diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400 - collator.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400 - collator.tid new file mode 100644 index 0000000000..7f28d68fd5 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400 - collator.tid @@ -0,0 +1,9 @@ +title: $:/changenotes/5.4.0/#9400/impacts/collator +changenote: $:/changenotes/5.4.0/#9400 +created: 20251114102355243 +modified: 20251114102355243 +tags: $:/tags/ImpactNote +description: Tiddlywiki no longer works on browsers that doesn't support [[Intl.Collator|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator]] +impact-type: compatibility-break + + diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400.tid new file mode 100644 index 0000000000..674fb1e199 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9400.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9400 +description: Add locale support for sort operators +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: feature +change-category: filters +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9400 +github-contributors: Leilei332 + +Add a new parameter for `sort`, `nsort`, `sortan`, `sortcs` and `nsortcs` to support sorting with a custom locale. \ No newline at end of file From 92dc927c7b093da1157183d44d38d6e7a16b35bc Mon Sep 17 00:00:00 2001 From: superuser-does <32982579+superuser-does@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:12:56 +0000 Subject: [PATCH 394/458] docs: savetiddlers extension is now Firefox-only (#9524) * tw5.com: removed Chrome browser from savetiddlers Was deprecated in early 2025, and is now Firefox-only Additional changes: * Lowercased buggyj in line with how the name is used elsewhere on tw5.com and the rest of the internet * Pulled url from the url field (following the example of Timimi resource tiddler) * Changed formatting of title to match other community resources * tw5.com: update French & Japanese savetiddlers plugin docs to note it is now Firefox-only Please note this update was validated using machine translation --- ...ension for Chrome and Firefox by buggyj.tid | 17 ----------------- ...ddlers_ Extension for Firefox by buggyj.tid | 17 +++++++++++++++++ ...ension for Chrome and Firefox by buggyj.tid | 18 ------------------ ...ddlers_ Extension for Firefox by buggyj.tid | 18 ++++++++++++++++++ ...ension for Chrome and Firefox by buggyj.tid | 16 ---------------- ...ddlers_ Extension for Firefox by buggyj.tid | 16 ++++++++++++++++ 6 files changed, 51 insertions(+), 51 deletions(-) delete mode 100644 editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid create mode 100644 editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid delete mode 100644 editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid create mode 100644 editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid delete mode 100644 editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid create mode 100644 editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid diff --git a/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid b/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid deleted file mode 100644 index f2dd09fad3..0000000000 --- a/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid +++ /dev/null @@ -1,17 +0,0 @@ -caption: savetiddlers -color: #4DB6AC -community-author: Buggyj -created: 20171109171935039 -delivery: Browser Extension -description: Extension pour les navigateurs Chrome et Firefox -fr-title: -method: save -modified: 20220402105820520 -tags: Chrome Firefox Saving [[Other Resources]] plugins -title: "savetiddlers" Extension for Chrome and Firefox by buggyj -type: text/vnd.tiddlywiki -url: https://github.com/buggyj/savetiddlers - -Une extension pour Google Chrome et Mozilla Firefox qui fluidifie l'utilisation de [[l'enregistreur HTML5 par défaut|Saving with the HTML5 fallback saver]] de <<tw>>, et le rend presque aussi convivial que ~TiddlyFox une fois configurée. - -https://github.com/buggyj/savetiddlers diff --git a/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid b/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid new file mode 100644 index 0000000000..d02a4f3f1e --- /dev/null +++ b/editions/fr-FR/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid @@ -0,0 +1,17 @@ +caption: savetiddlers +color: #4DB6AC +community-author: buggyj +created: 20171109171935039 +delivery: Browser Extension +description: Extension pour les navigateur Firefox +fr-title: +method: save +modified: 20250809092435788 +tags: Firefox Saving [[Other Resources]] plugins +title: savetiddlers: Extension for Firefox by buggyj +type: text/vnd.tiddlywiki +url: https://github.com/buggyj/savetiddlers + +Une extension Mozilla Firefox qui fluidifie l'utilisation de [[l'enregistreur HTML5 par défaut|Saving with the HTML5 fallback saver]] de <<tw>>, et le rend presque aussi convivial que [[TiddlyFox]] une fois configurée. + +{{!!url}} \ No newline at end of file diff --git a/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid b/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid deleted file mode 100644 index c9fac42bfe..0000000000 --- a/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid +++ /dev/null @@ -1,18 +0,0 @@ -caption: savetiddlers -color: #4DB6AC -community-author: Buggyj -created: 20171109171935039 -delivery: Browser Extension -description: ChromeとFirefoxのブラウザ拡張機能 -method: save -modified: 20241014110546647 -original-modified: 20210106151027189 -tags: Chrome Firefox Saving [[Other Resources]] plugins -title: "savetiddlers" Extension for Chrome and Firefox by buggyj -ja-title: buggyjによるChromeとFirefoxの"savetiddlers"拡張機能 -type: text/vnd.tiddlywiki -url: https://github.com/buggyj/savetiddlers - -Google ChromeとMozilla Firefoxの拡張機能で、TiddlyWikiの組み込み[[HTML5セーバー|Saving with the HTML5 saver]]による使いにくさの一部を解消し、正しく設定すればTiddlyFoxとほぼ同じくらい簡単に使用できるようになります。 - -https://github.com/buggyj/savetiddlers diff --git a/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid b/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid new file mode 100644 index 0000000000..266da283a8 --- /dev/null +++ b/editions/ja-JP/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid @@ -0,0 +1,18 @@ +caption: savetiddlers +color: #4DB6AC +community-author: buggyj +created: 20171109171935039 +delivery: Browser Extension +description: Firefoxのブラウザ拡張機能 +method: save +modified: 20250809092435788 +original-modified: 20250809092435788 +tags: Firefox Saving [[Other Resources]] plugins +title: savetiddlers: Extension for Firefox by buggyj +ja-title: buggyjによるFirefoxの"savetiddlers"拡張機能 +type: text/vnd.tiddlywiki +url: https://github.com/buggyj/savetiddlers + +Mozilla Firefoxの拡張機能で、TiddlyWikiの組み込み[[HTML5セーバー|Saving with the HTML5 saver]]による使いにくさの一部を解消し、正しく設定すれば[[TiddlyFox]]とほぼ同じくらい簡単に使用できるようになります。 + +{{!!url}} \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid deleted file mode 100644 index f000b92c93..0000000000 --- a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid +++ /dev/null @@ -1,16 +0,0 @@ -caption: savetiddlers -color: #4DB6AC -community-author: Buggyj -created: 20171109171935039 -delivery: Browser Extension -description: Browser extension for Chrome and Firefox -method: save -modified: 20210106151027189 -tags: Chrome Firefox Saving [[Other Resources]] plugins -title: "savetiddlers" Extension for Chrome and Firefox by buggyj -type: text/vnd.tiddlywiki -url: https://github.com/buggyj/savetiddlers - -An extension for Google Chrome and Mozilla Firefox that smoothes out some of the friction from TiddlyWiki's built-in [[HTML5 saver|Saving with the HTML5 saver]], making it almost as easy to use as TiddlyFox once it is set up correctly. - -https://github.com/buggyj/savetiddlers diff --git a/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid new file mode 100644 index 0000000000..f32f33ec9e --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/_savetiddlers_ Extension for Firefox by buggyj.tid @@ -0,0 +1,16 @@ +caption: savetiddlers +color: #4DB6AC +community-author: buggyj +created: 20171109171935039 +delivery: Browser Extension +description: Browser extension for Firefox +method: save +modified: 20250809092435788 +tags: Firefox Saving [[Other Resources]] plugins +title: savetiddlers: Extension for Firefox by buggyj +type: text/vnd.tiddlywiki +url: https://github.com/buggyj/savetiddlers + +An extension for Mozilla Firefox that smoothes out some of the friction from TiddlyWiki's built-in [[HTML5 saver|Saving with the HTML5 saver]], making it almost as easy to use as [[TiddlyFox]] once it is set up correctly. + +{{!!url}} \ No newline at end of file From 5fa1098c03ccef455ce79a676b4b2d873b6bfcb6 Mon Sep 17 00:00:00 2001 From: superuser-does <32982579+superuser-does@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:15:37 +0000 Subject: [PATCH 395/458] tw5.com: remove duplicate text from Forums tiddler (#9523) --- editions/tw5.com/tiddlers/community/Forums.tid | 1 - 1 file changed, 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/community/Forums.tid b/editions/tw5.com/tiddlers/community/Forums.tid index 31e1fa4bb6..9a06505b8c 100644 --- a/editions/tw5.com/tiddlers/community/Forums.tid +++ b/editions/tw5.com/tiddlers/community/Forums.tid @@ -26,7 +26,6 @@ For the convenience of existing users, we also continue to operate the original * [[TiddlyWiki Subreddit|https://www.reddit.com/r/TiddlyWiki5/]] * Chat on Discord at https://discord.gg/HFFZVQ8 -* [[TiddlyWiki Subreddit|https://www.reddit.com/r/TiddlyWiki5/]] !! Developers From 7cb422242a7da9d9be5b452b967a07922e4f8d36 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 4 Jan 2026 22:36:57 +0100 Subject: [PATCH 396/458] DOCS - Fix typo in Date Fields (#9518) --- editions/tw5.com/tiddlers/concepts/Date Fields.tid | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/concepts/Date Fields.tid b/editions/tw5.com/tiddlers/concepts/Date Fields.tid index c58398d19f..815a116ceb 100644 --- a/editions/tw5.com/tiddlers/concepts/Date Fields.tid +++ b/editions/tw5.com/tiddlers/concepts/Date Fields.tid @@ -1,5 +1,5 @@ created: 20150117190213631 -modified: 20230226144641763 +modified: 20251225215015507 tags: Concepts title: Date Fields type: text/vnd.tiddlywiki @@ -28,4 +28,5 @@ As an example, the <<.field created>> field of this tiddler has the value <<.val Dates can be [[converted to other formats|DateFormat]] for display: <$macrocall $name="wikitext-example-without-html" -src="""<$view field="created" format="date" template="DDD DDth MMM YYYY"/>"""> +src="""<$view field="created" format="date" template="DDD DDth MMM YYYY"/>"""/> + From 9663e65f4b91d38dfd25474b67455fa428f64a52 Mon Sep 17 00:00:00 2001 From: Mohammad Rahmani <830394+kookma@users.noreply.github.com> Date: Mon, 5 Jan 2026 01:11:38 +0330 Subject: [PATCH 397/458] list-tagged-draggable to use title field by default (#9177) * Revert the list-tagged-draggable to use title field by default * Update list.tid It seems `<$transclude field=<<__field__>> />` when field default value is empty does not work as expected. This commit uses `field:"title"` instead of `field:""` in the list-tagged-draggable header. * Update list.tid The redundant `field` removed. The new `displayField` attribute is used to let user choose the filed they like to display when the list items are rendered as simple links. * Update list.tid The proposed field attribute in list-tagged-draggable updated to use the same `displayField` aslist-links-draggable. * Create #9177 change note for #9177 was created * Update list.tid The `list-links-draggable` now is fully backward compatible. It uses caption as default field as before and is compatible with `list-links`. The `list-tagged-draggable` is fully backward compatible while got a new displayField parameter. * Update list-tagged-draggable Macro.tid Update docs to reflect new displayField parameter * Update list-links-draggable Macro.tid Update documentation to reflect the new displayField parameter. * Update list-tagged-draggable Macro.tid Update docs. Remove formatting error in doc. --- core/wiki/macros/list.tid | 11 ++++++++--- .../tiddlers/macros/list-links-draggable Macro.tid | 4 ++++ .../tiddlers/macros/list-tagged-draggable Macro.tid | 3 +++ editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 | 12 ++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index d4b0b0a0cb..b78ca88e0a 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -22,7 +22,7 @@ tags: $:/tags/Macro <$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore<actionTiddler>,<currentTiddler>]"/> \end -\define list-links-draggable(tiddler,field:"list",emptyMessage,type:"ul",subtype:"li",class:"",itemTemplate) +\define list-links-draggable(tiddler,field:"list",emptyMessage,type:"ul",subtype:"li",class:"",itemTemplate, displayField:"caption") \whitespace trim <$set name="_tiddler" value="""$tiddler$""" emptyValue=<<currentTiddler>> > <$let field-reference={{{ [<_tiddler>] "!!" [[$field$]] +[join[]] }}} @@ -42,7 +42,7 @@ tags: $:/tags/Macro <$transclude tiddler="""$itemTemplate$"""> <$link to={{!!title}}> <$let tv-wikilinks="no"> - <$transclude field="caption"> + <$transclude field=<<__displayField__>>> <$view field="title"/> </$transclude> </$let> @@ -92,7 +92,7 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"") +\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"",displayField:"") \whitespace trim <span class="tc-tagged-draggable-list"> <$set name="tag" value=<<__tag__>>> @@ -110,6 +110,11 @@ tags: $:/tags/Macro <$genesis $type=<<__elementTag__>>> <$transclude tiddler="""$itemTemplate$"""> <$link to={{!!title}}> + <$let tv-wikilinks="no"> + <$transclude field=<<__displayField__>>> + <$view field="title"/> + </$transclude> + </$let> <$view field="title"/> </$link> </$transclude> diff --git a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid index cd4252d072..c4bf42da20 100644 --- a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid @@ -31,6 +31,10 @@ The <<.def list-links-draggable>> [[macro|Macros]] renders the ListField of a ti ; itemTemplate : Optional title of a tiddler to use as the template for rendering list items +;displayField +: Optional name of the field to display when the list is rendered. Defaults to the "caption" field; if "caption" is not present, the "title" field is used instead + + If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. Within the `itemTemplate`, the [[currentTiddler Variable]] refers to the current list item. <<.macro-examples "list-links-draggable">> diff --git a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid index b0e4bbbedb..3cb9fb7ee8 100644 --- a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid @@ -17,6 +17,9 @@ The <<.def list-tagged-draggable>> [[macro|Macros]] renders the tiddlers with a : Optional title of a tiddler to use as the template for rendering list items ;emptyMessage : Optional wikitext to display if there are no tiddlers with the specified tag +Here’s a corrected and polished version of your sentence in clear, standard English: +;displayField +: Optional name of the field to display when the list is rendered. Defaults to `title` field. Note that the [[ordering|Order of Tagged Tiddlers]] is accomplished by assigning a new list to the `list` field of the tag tiddler. Any `list-before` or `list-after` fields on any of the other tiddlers carrying the tag are also removed to ensure the `list` field is respected. diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 new file mode 100644 index 0000000000..257e06308c --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 @@ -0,0 +1,12 @@ +title: $:/changenotes/5.4.0/#9177 +description: Add Display Field to list-tagged-draggable and list-links-draggable +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: usability +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9177 +github-contributors: kookma + +A new input parameter, `displayField`, has been added to the `list-links-draggable` and `list-tagged-draggable` macros, +allowing users to specify which field (e.g., title, caption, or any custom field) should be displayed when a tiddler is +rendered via the draggable macro. From f0e64660f2d4d33dce305745390e33a9c2a4fbff Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 4 Jan 2026 22:45:19 +0100 Subject: [PATCH 398/458] [DOCS] Add multi-columns class to Widgets in Wikitext (#9516) --- editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid index 67503cd89f..95bb70816e 100644 --- a/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +++ b/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid @@ -28,4 +28,4 @@ See [[HTML in WikiText]] for more details. The available widgets include: -<<list-links "[tag[Widgets]]">> +<<list-links "[tag[Widgets]]" class:"multi-columns">> From 47ab3476f6b236aef3229f719d0887ca56f6129a Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Mon, 5 Jan 2026 14:31:11 +0100 Subject: [PATCH 399/458] Improve LogWidget and ActionLogWidget documentation (#9550) --- .../tiddlers/widgets/ActionLogWidget.tid | 66 +++++++++++++------ .../tw5.com/tiddlers/widgets/LogWidget.tid | 64 ++++++++++++------ 2 files changed, 91 insertions(+), 39 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/ActionLogWidget.tid b/editions/tw5.com/tiddlers/widgets/ActionLogWidget.tid index 2fa75cfadf..89930a0692 100644 --- a/editions/tw5.com/tiddlers/widgets/ActionLogWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ActionLogWidget.tid @@ -1,50 +1,76 @@ caption: action-log created: 20201114113318785 -modified: 20201120155202652 +modified: 20260105121108063 tags: Widgets ActionWidgets [[Debugging Widgets]] title: ActionLogWidget type: text/vnd.tiddlywiki ! Introduction -<<.from-version "5.1.23">> The ''action-log'' widget is an [[action widget|ActionWidgets]] that can be used to output debugging information to the [[JavaScript console|Web Developer Tools]] supported by most browsers. This can be useful because otherwise it is difficult to observe what is going on within a sequence of actions. +<<.from-version "5.1.23">> The <<.wid action-log>> widget is an [[action widget|ActionWidgets]] that can be used to output debugging information to the [[JavaScript console|Web Developer Tools]] supported by most browsers. This can be useful to observe and debug the behavior within a sequence of actions. + +When the action is invoked, the names and values of all [[attributes|Widget Attributes]] are logged to the JavaScript console. + +``` +<$action-log name=value /> +``` ActionWidgets are used within triggering widgets such as the ButtonWidget. -<<.tip """ For debugging outside of actions see [[LogWidget]]""">> +<<.note """ For debugging outside of actions see [[LogWidget]]""">> ! Content and Attributes -The ''action-log'' widget is invisible. Any content within it is ignored. - -When the actions are invoked, the names and values of all attributes are logged to the JavaScript console. -In addition there are optional attributes that can be used: - -|!Optional Attribute |!Description | -|$$filter|All variables matching this filter will also be logged. | -|$$message |A message to display as the title of the information logged. Useful when several `action-log` widgets are used in sequence. | -|$$all |Set to "yes" to log all variables in a collapsed table. Note that if there is nothing specified to log, all variables are always logged instead.| +The <<.wid action-log>> widget is invisible. Any content within it is ignored. -<<.tip """A handy tip if an action widget is not behaving as expected is to temporarily change it to an `<$action-log>` widget so that the attributes can be observed.""">> +|!Attribute |!Description | +|<<.attr $$filter>>|(Optional) All variables whose name matches the [[Filter Expression]] will be logged | +|<<.attr $$message>> |(Optional) A message to display as the title of the information logged. Useful when several <<.wid action-log>> widgets are used in sequence | +|<<.attr $$all>> |(Optional) Set to <<.value yes>> to log all variables | -! Example +<<.note """ If `<$action-log />` is called without any attributes, all defined variables will be logged as if `$$all=yes` were set.""">> -Here is an example of logging two variables: +<<.note """When logging [[Variable Attribute Values]], the body text of macros and procedures will be output as their value. Functions are evaluated and their first result is logged.""">> + +! Examples + +!! Basic Example + +Log the value of variable <<.var name>>, the first result of the filter expression `[tag[Learning]]` and the value of field <<.field created>> of the current tiddler: ``` -<$action-log myVar=<<myVar>> otherVar=<<otherVar>>/> +<$action-log name=<<name>> filter={{{ [tag[Learning]] }}} created={{!!created}} /> ``` -To log all variables: +!! Example using <<.attr $$filter>> and <<.attr $$message>> + +Log all core variables (which start with <<.var tv->>) with a table title: ``` -<$action-log /> +<$action-log $$message="Core Variables" $$filter="[prefix[tv-]]" /> ``` +!! Widget Debugging -To log two variables as well as all core variables (which start with `tv-`): +Change a misbehaving <<.wlink ActionSetFieldWidget>> widget to an <<.wid action-log>> widget to verify that <<.var currentTiddler>> and <<.var value>> match their expected values: + +<<.tip """If an action widget is not behaving as expected it is often useful to temporarily change it to an <<.wid action-log>> widget so that the passed attributes can be verified.""">> ``` -<$action-log myVar=<<myVar>> other={{!!status}} $$filter="[prefix[tv-]]"/> +<$action-log $tiddler=<<currentTiddler>> $field="text" $value=<<value>> /> ``` + +This application is the primary reason that the attributes of the <<.wid action-log>> widget are prefixed with two dollar signs instead of one. Otherwise, the attributes of the original widget could be interpreted as attributes to <<.wid action-log>> and lead to unintended consequences. + +!! Example with Function + +Log the <<.var tiddlerList>> function definition and its first evaluation result: + +``` +\function tiddlerList() [tag[Learning]] + +<$action-log $$filter="[title[tiddlerList]]" value=<<tiddlerList>> /> +``` + +<<.note """The values output with the <<.attr $$filter>> or <<.attr $$all>> attributes will only contain the definition of functions instead of their values, as the evaluation of many functions can lead to significant performance penalties.""">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/LogWidget.tid b/editions/tw5.com/tiddlers/widgets/LogWidget.tid index 71cb01b036..f6cadc56ed 100644 --- a/editions/tw5.com/tiddlers/widgets/LogWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/LogWidget.tid @@ -1,45 +1,71 @@ created: 20201120152706842 -modified: 20201120154927696 +modified: 20260105121111637 tags: Widgets [[Debugging Widgets]] title: LogWidget type: text/vnd.tiddlywiki ! Introduction -<<.from-version "5.1.23">> The ''log'' widget can be used to output debugging information to the [[JavaScript console|Web Developer Tools]] supported by most browsers. +<<.from-version "5.1.23">> The <<.wid log>> widget is a [[widget|Widgets]] that can be used to output debugging information to the [[JavaScript console|Web Developer Tools]] supported by most browsers. -<<.tip """ For use with ActionWidgets see [[ActionLogWidget]] which uses identical parameters""">> +When the widget is rendered or refreshed, the names and values of all [[attributes|Widget Attributes]] are logged to the JavaScript console. + +``` +<$log name=value /> +``` + +<<.note """ For debugging inside of actions see [[ActionLogWidget]]""">> ! Content and Attributes -The ''log'' widget is invisible. Any content within it is ignored. Note that the widget will log to the console both when it is first rendered and also every time it refreshes. - -When the widget is rendered, the names and values of all attributes are logged to the JavaScript console. -In addition there are optional attributes that can be used: - -|!Optional Attribute |!Description | -|$$filter|All variables matching this filter will also be logged. | -|$$message |A message to display as the title of the information logged. Useful when several `log` widgets are used in sequence. | -|$$all |Set to "yes" to log all variables in a collapsed table. Note that if there is nothing specified to log, all variables are always logged instead.| +The <<.wid log>> widget is invisible. Any content within it is ignored. -! Example +|!Attribute |!Description | +|<<.attr $$filter>>|(Optional) All variables whose name matches the [[Filter Expression]] will be logged | +|<<.attr $$message>> |(Optional) A message to display as the title of the information logged. Useful when several <<.wid log>> widgets are used in sequence | +|<<.attr $$all>> |(Optional) Set to <<.value yes>> to log all variables | -Here is an example of logging two variables: +<<.note """ If `<$log />` is called without any attributes, all defined variables will be logged as if `$$all=yes` were set.""">> + +<<.note """When logging [[Variable Attribute Values]], the body text of macros and procedures will be output as their value. Functions are evaluated and their first result is logged.""">> + +! Examples + +!! Basic Example + +Log the value of variable <<.var name>>, the first result of the filter expression `[tag[Learning]]` and the value of field <<.field created>> of the current tiddler: ``` -<$log myVar=<<myVar>> otherVar=<<otherVar>>/> +<$log name=<<name>> filter={{{ [tag[Learning]] }}} created={{!!created}} /> ``` -To log all variables: +!! Example using <<.attr $$filter>> and <<.attr $$message>> + +Log all core variables (which start with <<.var tv->>) with a table title: ``` -<$log /> +<$log $$message="Core Variables" $$filter="[prefix[tv-]]" /> ``` +!! Widget Debugging -To log two variables as well as all core variables (which start with `tv-`): +Change a misbehaving <<.wlink TranscludeWidget>> widget to a <<.wid log>> widget to verify that <<.var name>> and <<.var mode>> match their expected values: + +<<.tip """If a widget is not behaving as expected it is often useful to temporarily change it to a <<.wid log>> widget so that the passed attributes can be verified.""">> ``` -<$log myVar=<<myVar>> other={{!!status}} $$filter="[prefix[tv-]]"/> +<$log $variable=<<name>> $mode=<<mode>> /> ``` + +This application is the primary reason that the attributes of the <<.wid log>> widget are prefixed with two dollar signs instead of one. Otherwise, the attributes of the original widget could be interpreted as attributes to <<.wid log>> and lead to unintended consequences. + +!! Example with Function + +Log the <<.var tiddlerList>> function definition and its first evaluation result (see browser console after clicking "Try it"): + +<<.example n:"2" eg:"""\function tiddlerList() [tag[Learning]] + +<$log $$filter="[title[tiddlerList]]" value=<<tiddlerList>> />""" >> + +<<.note """The values output with the <<.attr $$filter>> or <<.attr $$all>> attributes will only contain the definition of functions instead of their values, as the evaluation of many functions can lead to significant performance penalties.""">> \ No newline at end of file From 07329c68496d659e9ec72885d57e19a8173e4c6f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Mon, 5 Jan 2026 16:05:15 +0000 Subject: [PATCH 400/458] Revert "Root stylesheet refresh - Stylesheets in single `<style>` tags (#8130)" This reverts commit da41a55f293fef40546129e1fe2ac238ec64a7f5. --- core/modules/startup/render.js | 24 +- core/modules/startup/windows.js | 16 +- core/modules/widgets/view.js | 531 ++++++------------ core/templates/tiddlywiki5.html.tid | 1 - core/ui/RootStylesheet.tid | 15 - .../5.4.0/#8130 - root-stylesheet-refresh.tid | 17 - 6 files changed, 213 insertions(+), 391 deletions(-) delete mode 100644 core/ui/RootStylesheet.tid delete mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid diff --git a/core/modules/startup/render.js b/core/modules/startup/render.js index c97b87daea..43ef48207a 100644 --- a/core/modules/startup/render.js +++ b/core/modules/startup/render.js @@ -18,7 +18,6 @@ exports.synchronous = true; // Default story and history lists var PAGE_TITLE_TITLE = "$:/core/wiki/title"; var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet"; -var ROOT_STYLESHEET_TITLE = "$:/core/ui/RootStylesheet"; var PAGE_TEMPLATE_TITLE = "$:/core/ui/RootTemplate"; // Time (in ms) that we defer refreshing changes to draft tiddlers @@ -45,13 +44,22 @@ exports.startup = function() { publishTitle(); } }); - - var styleParser = $tw.wiki.parseTiddler(ROOT_STYLESHEET_TITLE,{parseAsInline: true}), - styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: document}); - styleWidgetNode.render(document.head,null); - + // Set up the styles + $tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument}); + $tw.styleContainer = $tw.fakeDocument.createElement("style"); + $tw.styleWidgetNode.render($tw.styleContainer,null); + $tw.styleWidgetNode.assignedStyles = $tw.styleContainer.textContent; + $tw.styleElement = document.createElement("style"); + $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; + document.head.insertBefore($tw.styleElement,document.head.firstChild); $tw.wiki.addEventListener("change",$tw.perf.report("styleRefresh",function(changes) { - styleWidgetNode.refresh(changes,document.head,null); + if($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) { + var newStyles = $tw.styleContainer.textContent; + if(newStyles !== $tw.styleWidgetNode.assignedStyles) { + $tw.styleWidgetNode.assignedStyles = newStyles; + $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; + } + } })); // Display the $:/core/ui/PageTemplate tiddler to kick off the display $tw.perf.report("mainRender",function() { @@ -60,7 +68,7 @@ exports.startup = function() { $tw.utils.addClass($tw.pageContainer,"tc-page-container-wrapper"); document.body.insertBefore($tw.pageContainer,document.body.firstChild); $tw.pageWidgetNode.render($tw.pageContainer,null); - $tw.hooks.invokeHook("th-page-refreshed"); + $tw.hooks.invokeHook("th-page-refreshed"); })(); // Remove any splash screen elements var removeList = document.querySelectorAll(".tc-remove-when-wiki-loaded"); diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 3fa70d1278..39a2f59d62 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -63,16 +63,24 @@ exports.startup = function() { $tw.eventBus.emit("window:closed",{windowID}); },false); // Set up the styles - var styleParser = $tw.wiki.parseTiddler("$:/core/ui/RootStylesheet",{parseAsInline: true}), - styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: srcDocument}); - styleWidgetNode.render(srcDocument.head,null); + var styleWidgetNode = $tw.wiki.makeTranscludeWidget("$:/core/ui/PageStylesheet",{ + document: $tw.fakeDocument, + variables: variables, + importPageMacros: true}), + styleContainer = $tw.fakeDocument.createElement("style"); + styleWidgetNode.render(styleContainer,null); + var styleElement = srcDocument.createElement("style"); + styleElement.innerHTML = styleContainer.textContent; + srcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild); // Render the text of the tiddler var parser = $tw.wiki.parseTiddler(template), widgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables}); widgetNode.render(srcDocument.body,srcDocument.body.firstChild); // Function to handle refreshes refreshHandler = function(changes) { - styleWidgetNode.refresh(changes); + if(styleWidgetNode.refresh(changes,styleContainer,null)) { + styleElement.innerHTML = styleContainer.textContent; + } widgetNode.refresh(changes); }; $tw.wiki.addEventListener("change",refreshHandler); diff --git a/core/modules/widgets/view.js b/core/modules/widgets/view.js index e20c4f07a6..e7c808645a 100755 --- a/core/modules/widgets/view.js +++ b/core/modules/widgets/view.js @@ -9,376 +9,215 @@ View widget "use strict"; -const Widget = require("$:/core/modules/widgets/widget.js").widget; +var Widget = require("$:/core/modules/widgets/widget.js").widget; + +var ViewWidget = function(parseTreeNode,options) { + this.initialise(parseTreeNode,options); +}; /* -========================================== -ViewHandler Base Class -========================================== -Base class for all view format handlers. -Provides common functionality and defines the interface for subclasses. +Inherit from the base widget class */ -class ViewHandler { - constructor(widget) { - this.widget = widget; - this.wiki = widget.wiki; - this.document = widget.document; - this.viewTitle = widget.viewTitle; - this.viewField = widget.viewField; - this.viewIndex = widget.viewIndex; - this.viewSubtiddler = widget.viewSubtiddler; - this.viewTemplate = widget.viewTemplate; - this.viewMode = widget.viewMode; - } - - render(parent, nextSibling) { - this.text = this.getValue(); - this.createTextNode(parent, nextSibling); - } - - getValue() { - return this.widget.getValueAsText(); - } - - createTextNode(parent, nextSibling) { - if(this.text) { - const textNode = this.document.createTextNode(this.text); - parent.insertBefore(textNode, nextSibling); - this.widget.domNodes.push(textNode); - } else { - this.widget.makeChildWidgets(); - this.widget.renderChildren(parent, nextSibling); - } - } - - refresh() { - var self = this; - return false; - } -} +ViewWidget.prototype = new Widget(); /* -========================================== -Wikified View Handler Base -========================================== -Base class for wikified view handlers +Render this widget into the DOM */ -class WikifiedViewHandler extends ViewHandler { - constructor(widget) { - super(widget); - this.fakeWidget = null; - this.fakeNode = null; - } - - render(parent, nextSibling) { - this.createFakeWidget(); - this.text = this.getValue(); - this.createWikifiedTextNode(parent, nextSibling); - } - - createFakeWidget() { - this.fakeWidget = this.wiki.makeTranscludeWidget(this.viewTitle, { - document: $tw.fakeDocument, - field: this.viewField, - index: this.viewIndex, - parseAsInline: this.viewMode !== "block", - mode: this.viewMode === "block" ? "block" : "inline", - parentWidget: this.widget, - subTiddler: this.viewSubtiddler - }); - this.fakeNode = $tw.fakeDocument.createElement("div"); - this.fakeWidget.makeChildWidgets(); - this.fakeWidget.render(this.fakeNode, null); - } - - createWikifiedTextNode(parent, nextSibling) { - const textNode = this.document.createTextNode(this.text || ""); - parent.insertBefore(textNode, nextSibling); - this.widget.domNodes.push(textNode); - } - - refresh(changedTiddlers) { - const refreshed = this.fakeWidget.refresh(changedTiddlers); - if(refreshed) { - const newText = this.getValue(); - if(newText !== this.text) { - this.widget.domNodes[0].textContent = newText; - this.text = newText; - } - } - return refreshed; - } -} - -/* -========================================== -Text View Handler -========================================== -Default handler for plain text display -*/ -class TextViewHandler extends ViewHandler {} - -/* -========================================== -HTML Wikified View Handler -========================================== -Handler for wikified HTML content -*/ -class HTMLWikifiedViewHandler extends WikifiedViewHandler { - getValue() { - return this.fakeNode.innerHTML; - } -} - -/* -========================================== -Plain Wikified View Handler -========================================== -Handler for wikified plain text content -*/ -class PlainWikifiedViewHandler extends WikifiedViewHandler { - getValue() { - return this.fakeNode.textContent; - } -} - -/* -========================================== -HTML Encoded Plain Wikified View Handler -========================================== -Handler for HTML-encoded wikified plain text -*/ -class HTMLEncodedPlainWikifiedViewHandler extends WikifiedViewHandler { - getValue() { - return $tw.utils.htmlEncode(this.fakeNode.textContent); - } -} - -/* -========================================== -HTML Encoded View Handler -========================================== -Handler for HTML-encoded text -*/ -class HTMLEncodedViewHandler extends ViewHandler { - getValue() { - return $tw.utils.htmlEncode(this.widget.getValueAsText()); - } -} - -/* -========================================== -HTML Text Encoded View Handler -========================================== -Handler for HTML text-encoded content -*/ -class HTMLTextEncodedViewHandler extends ViewHandler { - getValue() { - return $tw.utils.htmlTextEncode(this.widget.getValueAsText()); - } -} - -/* -========================================== -URL Encoded View Handler -========================================== -Handler for URL-encoded text -*/ -class URLEncodedViewHandler extends ViewHandler { - getValue() { - return $tw.utils.encodeURIComponentExtended(this.widget.getValueAsText()); - } -} - -/* -========================================== -Double URL Encoded View Handler -========================================== -Handler for double URL-encoded text -*/ -class DoubleURLEncodedViewHandler extends ViewHandler { - getValue() { - const text = this.widget.getValueAsText(); - return $tw.utils.encodeURIComponentExtended($tw.utils.encodeURIComponentExtended(text)); - } -} - -/* -========================================== -Date View Handler -========================================== -Handler for date formatting -*/ -class DateViewHandler extends ViewHandler { - getValue() { - const format = this.viewTemplate || "YYYY MM DD 0hh:0mm"; - const rawValue = this.widget.getValueAsText(); - const value = $tw.utils.parseDate(rawValue); - if(value && $tw.utils.isDate(value) && value.toString() !== "Invalid Date") { - return $tw.utils.formatDateString(value, format); - } else { - return ""; - } - } -} - -/* -========================================== -Relative Date View Handler -========================================== -Handler for relative date display -*/ -class RelativeDateViewHandler extends ViewHandler { - getValue() { - const rawValue = this.widget.getValueAsText(); - const value = $tw.utils.parseDate(rawValue); - if(value && $tw.utils.isDate(value) && value.toString() !== "Invalid Date") { - return $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description; - } else { - return ""; - } - } -} - -/* -========================================== -Strip Comments View Handler -========================================== -Handler for stripping comments from text -*/ -class StripCommentsViewHandler extends ViewHandler { - getValue() { - const lines = this.widget.getValueAsText().split("\n"); - const out = []; - for(const text of lines) { - if(!/^\s*\/\/#/.test(text)) { - out.push(text); - } - } - return out.join("\n"); - } -} - -/* -========================================== -JS Encoded View Handler -========================================== -Handler for JavaScript string encoding -*/ -class JSEncodedViewHandler extends ViewHandler { - getValue() { - return $tw.utils.stringify(this.widget.getValueAsText()); - } -} - -/* -========================================== -ViewHandlerFactory -========================================== -Factory for creating appropriate view handlers based on format -*/ -const ViewHandlerFactory = { - handlers: { - "text": TextViewHandler, - "htmlwikified": HTMLWikifiedViewHandler, - "plainwikified": PlainWikifiedViewHandler, - "htmlencodedplainwikified": HTMLEncodedPlainWikifiedViewHandler, - "htmlencoded": HTMLEncodedViewHandler, - "htmltextencoded": HTMLTextEncodedViewHandler, - "urlencoded": URLEncodedViewHandler, - "doubleurlencoded": DoubleURLEncodedViewHandler, - "date": DateViewHandler, - "relativedate": RelativeDateViewHandler, - "stripcomments": StripCommentsViewHandler, - "jsencoded": JSEncodedViewHandler - }, - - createHandler(format, widget) { - const HandlerClass = this.handlers[format] || this.handlers["text"]; - return new HandlerClass(widget); - }, - - registerHandler(format, handlerClass) { - this.handlers[format] = handlerClass; +ViewWidget.prototype.render = function(parent,nextSibling) { + this.parentDomNode = parent; + this.computeAttributes(); + this.execute(); + if(this.text) { + var textNode = this.document.createTextNode(this.text); + parent.insertBefore(textNode,nextSibling); + this.domNodes.push(textNode); + } else { + this.makeChildWidgets(); + this.renderChildren(parent,nextSibling); } }; /* -========================================== -ViewWidget -========================================== -Main widget class that orchestrates view handlers +Compute the internal state of the widget */ -class ViewWidget extends Widget { - constructor(parseTreeNode, options) { - super(); - this.initialise(parseTreeNode, options); +ViewWidget.prototype.execute = function() { + // Get parameters from our attributes + this.viewTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler")); + this.viewSubtiddler = this.getAttribute("subtiddler"); + this.viewField = this.getAttribute("field","text"); + this.viewIndex = this.getAttribute("index"); + this.viewFormat = this.getAttribute("format","text"); + this.viewTemplate = this.getAttribute("template",""); + this.viewMode = this.getAttribute("mode","block"); + switch(this.viewFormat) { + case "htmlwikified": + this.text = this.getValueAsHtmlWikified(this.viewMode); + break; + case "plainwikified": + this.text = this.getValueAsPlainWikified(this.viewMode); + break; + case "htmlencodedplainwikified": + this.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode); + break; + case "htmlencoded": + this.text = this.getValueAsHtmlEncoded(); + break; + case "htmltextencoded": + this.text = this.getValueAsHtmlTextEncoded(); + break; + case "urlencoded": + this.text = this.getValueAsUrlEncoded(); + break; + case "doubleurlencoded": + this.text = this.getValueAsDoubleUrlEncoded(); + break; + case "date": + this.text = this.getValueAsDate(this.viewTemplate); + break; + case "relativedate": + this.text = this.getValueAsRelativeDate(); + break; + case "stripcomments": + this.text = this.getValueAsStrippedComments(); + break; + case "jsencoded": + this.text = this.getValueAsJsEncoded(); + break; + default: // "text" + this.text = this.getValueAsText(); + break; } +}; - render(parent, nextSibling) { - this.parentDomNode = parent; - this.computeAttributes(); - this.execute(); - this.viewHandler = ViewHandlerFactory.createHandler(this.viewFormat, this); - this.viewHandler.render(parent, nextSibling); - } +/* +The various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions +*/ - execute() { - this.viewTitle = this.getAttribute("tiddler", this.getVariable("currentTiddler")); - this.viewSubtiddler = this.getAttribute("subtiddler"); - this.viewField = this.getAttribute("field", "text"); - this.viewIndex = this.getAttribute("index"); - this.viewFormat = this.getAttribute("format", "text"); - this.viewTemplate = this.getAttribute("template", ""); - this.viewMode = this.getAttribute("mode", "block"); - } - - getValue(options = {}) { - let value = options.asString ? "" : undefined; - if(this.viewIndex) { - value = this.wiki.extractTiddlerDataItem(this.viewTitle, this.viewIndex); +/* +Retrieve the value of the widget. Options are: +asString: Optionally return the value as a string +*/ +ViewWidget.prototype.getValue = function(options) { + options = options || {}; + var value = options.asString ? "" : undefined; + if(this.viewIndex) { + value = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex); + } else { + var tiddler; + if(this.viewSubtiddler) { + tiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler); } else { - let tiddler; - if(this.viewSubtiddler) { - tiddler = this.wiki.getSubTiddler(this.viewTitle, this.viewSubtiddler); + tiddler = this.wiki.getTiddler(this.viewTitle); + } + if(tiddler) { + if(this.viewField === "text" && !this.viewSubtiddler) { + // Calling getTiddlerText() triggers lazy loading of skinny tiddlers + value = this.wiki.getTiddlerText(this.viewTitle); } else { - tiddler = this.wiki.getTiddler(this.viewTitle); - } - if(tiddler) { - if(this.viewField === "text" && !this.viewSubtiddler) { - value = this.wiki.getTiddlerText(this.viewTitle); - } else { - if($tw.utils.hop(tiddler.fields, this.viewField)) { - if(options.asString) { - value = tiddler.getFieldString(this.viewField); - } else { - value = tiddler.fields[this.viewField]; - } + if($tw.utils.hop(tiddler.fields,this.viewField)) { + if(options.asString) { + value = tiddler.getFieldString(this.viewField); + } else { + value = tiddler.fields[this.viewField]; } } - } else { - if(this.viewField === "title") { - value = this.viewTitle; - } + } + } else { + if(this.viewField === "title") { + value = this.viewTitle; } } - return value; } + return value; +}; - getValueAsText() { - return this.getValue({asString: true}); +ViewWidget.prototype.getValueAsText = function() { + return this.getValue({asString: true}); +}; + +ViewWidget.prototype.getValueAsHtmlWikified = function(mode) { + return this.wiki.renderText("text/html","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + }); +}; + +ViewWidget.prototype.getValueAsPlainWikified = function(mode) { + return this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + }); +}; + +ViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) { + return $tw.utils.htmlEncode(this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{ + parseAsInline: mode !== "block", + parentWidget: this + })); +}; + +ViewWidget.prototype.getValueAsHtmlEncoded = function() { + return $tw.utils.htmlEncode(this.getValueAsText()); +}; + +ViewWidget.prototype.getValueAsHtmlTextEncoded = function() { + return $tw.utils.htmlTextEncode(this.getValueAsText()); +}; + +ViewWidget.prototype.getValueAsUrlEncoded = function() { + return $tw.utils.encodeURIComponentExtended(this.getValueAsText()); +}; + +ViewWidget.prototype.getValueAsDoubleUrlEncoded = function() { + return $tw.utils.encodeURIComponentExtended($tw.utils.encodeURIComponentExtended(this.getValueAsText())); +}; + +ViewWidget.prototype.getValueAsDate = function(format) { + format = format || "YYYY MM DD 0hh:0mm"; + var value = $tw.utils.parseDate(this.getValue()); + if(value && $tw.utils.isDate(value) && value.toString() !== "Invalid Date") { + return $tw.utils.formatDateString(value,format); + } else { + return ""; } +}; - refresh(changedTiddlers) { - const changedAttributes = this.computeAttributes(); - if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || - changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) { - this.refreshSelf(); - return true; - } else { - return this.viewHandler.refresh(changedTiddlers); +ViewWidget.prototype.getValueAsRelativeDate = function(format) { + var value = $tw.utils.parseDate(this.getValue()); + if(value && $tw.utils.isDate(value) && value.toString() !== "Invalid Date") { + return $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description; + } else { + return ""; + } +}; + +ViewWidget.prototype.getValueAsStrippedComments = function() { + var lines = this.getValueAsText().split("\n"), + out = []; + for(var line=0; line<lines.length; line++) { + var text = lines[line]; + if(!/^\s*\/\/#/.test(text)) { + out.push(text); } } -} + return out.join("\n"); +}; -exports.view = ViewWidget; \ No newline at end of file +ViewWidget.prototype.getValueAsJsEncoded = function() { + return $tw.utils.stringify(this.getValueAsText()); +}; + +/* +Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +*/ +ViewWidget.prototype.refresh = function(changedTiddlers) { + var changedAttributes = this.computeAttributes(); + if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) { + this.refreshSelf(); + return true; + } else { + return false; + } +}; + +exports.view = ViewWidget; diff --git a/core/templates/tiddlywiki5.html.tid b/core/templates/tiddlywiki5.html.tid index c38cde9601..721b3d9cec 100644 --- a/core/templates/tiddlywiki5.html.tid +++ b/core/templates/tiddlywiki5.html.tid @@ -25,7 +25,6 @@ title: $:/core/templates/tiddlywiki5.html `{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}` -<!--~~ Style section start ~~--> </head> <body class="tc-body"> <!--~~ Raw markup for the top of the body section ~~--> diff --git a/core/ui/RootStylesheet.tid b/core/ui/RootStylesheet.tid deleted file mode 100644 index aca3b3ac96..0000000000 --- a/core/ui/RootStylesheet.tid +++ /dev/null @@ -1,15 +0,0 @@ -title: $:/core/ui/RootStylesheet -code-body: yes - -\import [subfilter{$:/core/config/GlobalImportFilter}] -\whitespace trim -<$let currentTiddler={{$:/language}} languageTitle={{!!name}}> - <style type="text/css"> - <$view tiddler="$:/themes/tiddlywiki/vanilla/reset" format="text" mode="block"/> - </style> - <$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!is[draft]] -[[$:/themes/tiddlywiki/vanilla/reset]]"> - <style type="text/css"> - <$view format={{{ [<currentTiddler>tag[$:/tags/Stylesheet/Static]then[text]else[plainwikified]] }}} mode="block"/> - </style> - </$list> -</$let> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid deleted file mode 100644 index f1ee3073e3..0000000000 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid +++ /dev/null @@ -1,17 +0,0 @@ -title: $:/changenotes/5.4.0/#8130 -created: 20251212171804335 -modified: 20251212171804335 -tags: $:/tags/ChangeNote -change-type: performance -change-category: internal -description: Different Stylesheets are now included as single `<style>` tags in the Header -release: 5.4.0 -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8130 -github-contributors: BurningTreeC -type: text/vnd.tiddlywiki - -Previously, all stylesheets were combined in a single `<style>` tag in the `<head>`. - -Now, a separate `<style>` tag is created in the `<head>` for each stylesheet. - -As part of these changes, the 'view widget' has also been updated. It can now respond dynamically to changes in the 'wikified' formats as well. \ No newline at end of file From 24c317e1ab6a990249afcef49238740fa45d518c Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Mon, 5 Jan 2026 16:18:01 +0000 Subject: [PATCH 401/458] Revert "Add macro operator (#9520)" This reverts commit 3c8ee86e236c0c67570a9786f900fad7c1dc3c18. --- core/modules/filters/macro.js | 27 -------------- core/ui/Actions/new-journal.tid | 4 ++- core/ui/EditTemplate/tags.tid | 35 ++++++++++++------- core/ui/TagPickerTagTemplate.tid | 6 ++-- core/ui/ViewToolbar/new-journal-here.tid | 4 +-- editions/test/tiddlers/tests/test-filters.js | 4 --- .../tiddlers/macro Operator (Examples).tid | 7 ---- editions/tw5.com/tiddlers/macro Operator.tid | 14 -------- .../releasenotes/5.4.0/add-macro-operator.tid | 10 ------ 9 files changed, 31 insertions(+), 80 deletions(-) delete mode 100644 core/modules/filters/macro.js delete mode 100644 editions/tw5.com/tiddlers/macro Operator (Examples).tid delete mode 100644 editions/tw5.com/tiddlers/macro Operator.tid delete mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid diff --git a/core/modules/filters/macro.js b/core/modules/filters/macro.js deleted file mode 100644 index 024dca975e..0000000000 --- a/core/modules/filters/macro.js +++ /dev/null @@ -1,27 +0,0 @@ -/*\ -title: $:/core/modules/filters/macro.js -type: application/javascript -module-type: filteroperator - -Filter operator returning those input titles that are returned from a javascript macro - -\*/ - -"use strict"; - -/* -Export our filter function -*/ -exports.macro = function(source,operator,options) { - const macroName = operator.operands[0], - results = []; - if($tw.macros[macroName] !== undefined) { - results.push($tw.macros[macroName].run(...operator.operands.slice(1))); - } else { - // Return the input list if the macro wasn't found - source((tiddler,title) => { - results.push(title); - }); - } - return results; -}; diff --git a/core/ui/Actions/new-journal.tid b/core/ui/Actions/new-journal.tid index 6bf8f4dba4..9d663e537c 100644 --- a/core/ui/Actions/new-journal.tid +++ b/core/ui/Actions/new-journal.tid @@ -4,11 +4,13 @@ description: create a new journal tiddler \whitespace trim \function get-tags() [<textFieldTags>] [<tagsFieldTags>] +[join[ ]] -<$let journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}} journalTitle={{{ [macro[now],<journalTitleTemplate>] }}}> +<$let journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}> +<$wikify name="journalTitle" text="<$transclude $variable='now' format=<<journalTitleTemplate>>/>"> <$reveal type="nomatch" state=<<journalTitle>> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/> </$reveal> <$reveal type="match" state=<<journalTitle>> text=""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/> </$reveal> +</$wikify> </$let> diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index 4f6a5c51c5..298120606d 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -6,19 +6,28 @@ tags: $:/tags/EditTemplate \procedure lingo-base() $:/language/EditTemplate/ \procedure tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:"tags") -<$let backgroundColor=<<colour>> foregroundColor={{{ [macro[contrastcolour],<colour>,<fallbackTarget>,<colourA>,<colourB>] }}}> - <span class="tc-tag-label tc-tag-list-item tc-small-gap-right" - data-tag-title=<<currentTiddler>> - style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$;` - > - <$transclude tiddler=<<icon>>/> - <$view field="title" format="text"/> - <$button class="tc-btn-invisible tc-remove-tag-button"> - <$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter="-[{!!title}]"/> - {{$:/core/images/close-button}} - </$button> - </span> -</$let> +<$wikify name="foregroundColor" + text="""<$macrocall $name="contrastcolour" + target=<<colour>> + fallbackTarget=<<fallbackTarget>> + colourA=<<colourA>> + colourB=<<colourB>>/> + """ +> + <$let backgroundColor=<<colour>> > + <span class="tc-tag-label tc-tag-list-item tc-small-gap-right" + data-tag-title=<<currentTiddler>> + style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$;` + > + <$transclude tiddler=<<icon>>/> + <$view field="title" format="text"/> + <$button class="tc-btn-invisible tc-remove-tag-button"> + <$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter="-[{!!title}]"/> + {{$:/core/images/close-button}} + </$button> + </span> + </$let> +</$wikify> \end \procedure tag-body(colour,palette,icon,tagField:"tags") diff --git a/core/ui/TagPickerTagTemplate.tid b/core/ui/TagPickerTagTemplate.tid index 6eecb8d5e8..9e86891539 100644 --- a/core/ui/TagPickerTagTemplate.tid +++ b/core/ui/TagPickerTagTemplate.tid @@ -16,13 +16,15 @@ title: $:/core/ui/TagPickerTagTemplate <$set name="backgroundColor" value={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} > - <$let foregroundColor={{{ [macro[contrastcolour],<backgroundColor>,<fallbackTarget>,<colourA>,<colourB>] }}}> + <$wikify name="foregroundColor" + text="""<$macrocall $name="contrastcolour" target=<<backgroundColor>> fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>""" + > <span class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>> data-tag-title=<<currentTiddler>> > {{||$:/core/ui/TiddlerIcon}}<$view field="title" format="text"/> </span> - </$let> + </$wikify> </$set> </$button> diff --git a/core/ui/ViewToolbar/new-journal-here.tid b/core/ui/ViewToolbar/new-journal-here.tid index 60a00128c0..2df7a2a4e6 100644 --- a/core/ui/ViewToolbar/new-journal-here.tid +++ b/core/ui/ViewToolbar/new-journal-here.tid @@ -6,7 +6,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} \whitespace trim \procedure journalButton() <$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>> -<$let journalTitle={{{ [macro[now],<journalTitleTemplate>] }}}> +<$wikify name="journalTitle" text="""<$transclude $variable="now" format=<<journalTitleTemplate>>/>"""> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=`[[$(currentTiddlerTag)$]] $(journalTags)$`/> <%if [<tv-config-toolbar-icons>match[yes]] %> {{$:/core/images/new-journal-button}} @@ -16,7 +16,7 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}} <$text text={{$:/language/Buttons/NewJournalHere/Caption}}/> </span> <%endif%> -</$let> +</$wikify> </$button> \end <$let journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags}} currentTiddlerTag=<<currentTiddler>>> diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index d35ca5b782..dee9128bf6 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -1088,10 +1088,6 @@ Tests the filtering mechanism. expect(wiki.filterTiddlers("[[representation]makepatches[misreprehensionisation]]").join(" ")).toBe("@@ -1,13 +1,21 @@\n+mis\n repre\n-sent\n+hensionis\n atio\n"); expect(wiki.filterTiddlers("[[the cat sat on the mat]makepatches[the hat saw in every category]]").join(" ")).toBe("@@ -1,22 +1,29 @@\n the \n-c\n+h\n at sa\n-t on the mat\n+w in every category\n"); }); - - it("should handle the macro operator", () => { - expect(wiki.filterTiddlers("[macro[makedatauri],[some example text],[text/plain]]").join("")).toBe("data:text/plain,some%20example%20text"); - }); it("should parse filter variable parameters", function(){ expect($tw.utils.parseFilterVariable("currentTiddler")).toEqual( diff --git a/editions/tw5.com/tiddlers/macro Operator (Examples).tid b/editions/tw5.com/tiddlers/macro Operator (Examples).tid deleted file mode 100644 index 94b5a63ac9..0000000000 --- a/editions/tw5.com/tiddlers/macro Operator (Examples).tid +++ /dev/null @@ -1,7 +0,0 @@ -created: 20260104045032090 -modified: 20260104045240842 -tags: [[macro Operator]] -title: macro Operator (Examples) -type: text/vnd.tiddlywiki - -<<.operator-example 1 "[macro[now],{$:/config/NewJournal/Title}]">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/macro Operator.tid b/editions/tw5.com/tiddlers/macro Operator.tid deleted file mode 100644 index 62d7ea87b5..0000000000 --- a/editions/tw5.com/tiddlers/macro Operator.tid +++ /dev/null @@ -1,14 +0,0 @@ -caption: macro -created: 20260104043647022 -modified: 20260104045136808 -op-input: ignored -op-output: the result of the javascript macro -op-parameter: first parameter is the javascript macro, subsequent parameters are passed to the macro by position -op-purpose: return the result from a javascript macro (with indirect parameters support) -tags: [[Filter Operators]] -title: macro Operator -type: text/vnd.tiddlywiki - -<<.from-version "5.4.0">> The <<.op macro>> operator applies a javascript macro to the input titles, and returns the result from the macro. The function is invoked once with all of the input titles. - -<<.operator-examples "macro">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid deleted file mode 100644 index e997c71127..0000000000 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-macro-operator.tid +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/changenotes/5.4.0/#9520 -description: Add macro operator -release: 5.4.0 -tags: $:/tags/ChangeNote -change-type: feature -change-category: filters -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9520 -github-contributors: Leilei332 - -Added [[macro Operator]] for evaluating javascript macros in filters. From a72d3a09bf49ab32cac7265c5a6ac44a9f24b7d5 Mon Sep 17 00:00:00 2001 From: Cameron Fischer <fischer.cameron@gmail.com> Date: Thu, 8 Jan 2026 04:13:16 -0500 Subject: [PATCH 402/458] Quick fix to some deprecated class methods (#9561) --- core/modules/utils/deprecated.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/modules/utils/deprecated.js b/core/modules/utils/deprecated.js index ecf14e9b06..f6993224e9 100644 --- a/core/modules/utils/deprecated.js +++ b/core/modules/utils/deprecated.js @@ -44,15 +44,15 @@ exports.domMatchesSelector = (node,selector) => node.matches(selector); exports.hasClass = (el,className) => el.classList && el.classList.contains(className); exports.addClass = function(el,className) { - el.classList && el.classList.add(className); + el.classList && className && el.classList.add(className); }; exports.removeClass = function(el,className) { - el.classList && el.classList.remove(className); + el.classList && className && el.classList.remove(className); }; exports.toggleClass = function(el,className,status) { - el.classList && el.classList.toggle(className, status); + el.classList && className && el.classList.toggle(className, status); }; exports.getLocationPath = () => window.location.origin + window.location.pathname; \ No newline at end of file From 8e301178a4d74e096b03f9eb96f26a8f589ae362 Mon Sep 17 00:00:00 2001 From: lin onetwo <linonetwo012@gmail.com> Date: Thu, 8 Jan 2026 20:34:58 +0800 Subject: [PATCH 403/458] Feat/view button condition (#9466) * feat: support condition field on $:/tags/ViewToolbar button * Delete convert-markdown.tid * Create #9466.tid * Update title.tid --- core/ui/ViewTemplate/title.tid | 10 +++++++--- .../tw5.com/tiddlers/releasenotes/5.4.0/#9466.tid | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9466.tid diff --git a/core/ui/ViewTemplate/title.tid b/core/ui/ViewTemplate/title.tid index 56b92efe84..71b0491249 100644 --- a/core/ui/ViewTemplate/title.tid +++ b/core/ui/ViewTemplate/title.tid @@ -11,9 +11,13 @@ tags: $:/tags/ViewTemplate storyview="pop" variable="listItem" > - <$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"> - <$transclude tiddler=<<listItem>>/> - </$set> + <$let condition={{{ [<listItem>get[condition]] }}}> + <%if [<condition>!is[blank]] :and[<currentTiddler>subfilter<condition>limit[1]] :else[<condition>is[blank]then[true]] %> + <$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"> + <$transclude tiddler=<<listItem>>/> + </$set> + <%endif%> + </$let> </$list> </span> <$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9466.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9466.tid new file mode 100644 index 0000000000..2a661ceb96 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9466.tid @@ -0,0 +1,15 @@ +title: $:/changenotes/5.4.0/#9466 +description: ViewToolbar buttons now support condition field +tags: $:/tags/ChangeNote +release: 5.4.0 +change-type: feature +change-category: hackability +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9466 +github-contributors: linonetwo + +ViewToolbar buttons can now be conditionally displayed based on the currentTiddler using a `condition` field. Similar to how `$:/tags/Exporter` and `$:/tags/EditorTools` already have. An example would be: + +```tid +tags: $:/tags/ViewToolbar +condition: [<currentTiddler>type[text/x-markdown]] [<currentTiddler>type[text/markdown]] +``` From 5e4b8fbb3c2d58b92aecbc99093c942b647c9d1f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Thu, 8 Jan 2026 18:20:57 +0000 Subject: [PATCH 404/458] Additional fix for #9177 --- core/wiki/macros/list.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index b78ca88e0a..d61390099f 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -92,7 +92,7 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"",displayField:"") +\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"",displayField:"caption") \whitespace trim <span class="tc-tagged-draggable-list"> <$set name="tag" value=<<__tag__>>> From 8f9acc0ca28177b319f9bd8e4eabc582d0fa857f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sat, 10 Jan 2026 14:35:26 +0000 Subject: [PATCH 405/458] Fix missing file extension --- editions/tw5.com/tiddlers/releasenotes/5.4.0/{#9177 => #9177.tid} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/releasenotes/5.4.0/{#9177 => #9177.tid} (100%) diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177.tid similarity index 100% rename from editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177 rename to editions/tw5.com/tiddlers/releasenotes/5.4.0/#9177.tid From afcf108d29784370f8f60289700bf1c55da67280 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sat, 10 Jan 2026 14:42:58 +0000 Subject: [PATCH 406/458] Add changenote --- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9570.tid | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9570.tid diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9570.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9570.tid new file mode 100644 index 0000000000..4c9c7b69e6 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9570.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9570 +description: Fix images loaded from _canonical_uri tiddlers not having progress classes assigned +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9570 +github-contributors: jermolene + +Fixes issue whereby transcluding a _canonical_uri tiddler with a missing image did not assign the progress classes `tc-image-loading`, `tc-image-loaded` and `tc-image-error`. \ No newline at end of file From 855d8a963884082ec300f4da23a28d5fe4fd7403 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sat, 10 Jan 2026 14:50:31 +0000 Subject: [PATCH 407/458] Fix images loaded from _canonical_uri tiddlers do not have loading and error classes assigned (#9570) * Fix images loaded from _canonical_uri tiddlers do not have loading and error classes assigned * Create changenote * Joyously fix eslint error --- core/modules/parsers/imageparser.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index c7201445fa..a15750425c 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -11,17 +11,16 @@ The image parser parses an image into an embeddable HTML element var ImageParser = function(type,text,options) { var element = { - type: "element", - tag: "img", - attributes: {} - }; + type: "image", + attributes: {} + }; if(options._canonical_uri) { - element.attributes.src = {type: "string", value: options._canonical_uri}; + element.attributes.source = {type: "string", value: options._canonical_uri}; } else if(text) { if(type === "image/svg+xml" || type === ".svg") { - element.attributes.src = {type: "string", value: "data:image/svg+xml," + encodeURIComponent(text)}; + element.attributes.source = {type: "string", value: "data:image/svg+xml," + encodeURIComponent(text)}; } else { - element.attributes.src = {type: "string", value: "data:" + type + ";base64," + text}; + element.attributes.source = {type: "string", value: "data:" + type + ";base64," + text}; } } this.tree = [element]; From 0e765bdbdb868bb3923cda9a87cffb9ee46ba298 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Mon, 12 Jan 2026 17:21:35 +0800 Subject: [PATCH 408/458] Make alert aria message translatable (#9575) * Make alerts aria message translatable * Update change notes * Update change note --- core/language/en-GB/Misc.multids | 1 + core/ui/PageTemplate/alerts.tid | 2 +- .../tiddlers/releasenotes/5.4.0/improve-alert-a11y.tid | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/improve-alert-a11y.tid diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index d8c0913750..f792d0c8d0 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -1,5 +1,6 @@ title: $:/language/ +Alerts: Alerts AboveStory/ClassicPlugin/Warning: It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected: BinaryWarning/Prompt: This tiddler contains binary data ClassicWarning/Hint: This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details. diff --git a/core/ui/PageTemplate/alerts.tid b/core/ui/PageTemplate/alerts.tid index 339f642366..92fa4cdb89 100644 --- a/core/ui/PageTemplate/alerts.tid +++ b/core/ui/PageTemplate/alerts.tid @@ -1,7 +1,7 @@ title: $:/core/ui/PageTemplate/alerts tags: $:/tags/PageTemplate -<div class="tc-alerts" role="region" aria-label="Alerts"> +<div class="tc-alerts" role="region" aria-label={{$:/language/Alerts}}> <$list filter="[all[shadows+tiddlers]tag[$:/tags/Alert]!is[draft]]" template="$:/core/ui/AlertTemplate" storyview="pop"/> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/improve-alert-a11y.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/improve-alert-a11y.tid new file mode 100644 index 0000000000..84bf9dade0 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/improve-alert-a11y.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9248 +description: Improve alert accessibility +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: usability +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9248 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9575 +github-contributors: Leilei332 + + From 419fe68ee2500e759cbf8ea6a91d78fb8ee5eb7a Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 14 Jan 2026 14:04:34 +0100 Subject: [PATCH 409/458] [Docs] Improve tag-pill documentation and examples (#9580) * [Docs] Improve tag-pill documentation and examples * Apply suggestion from @saqimtiaz --------- Co-authored-by: Saq Imtiaz <saq.imtiaz@gmail.com> --- .../tiddlers/macros/tag-pill_Macro.tid | 21 ++++++++++++------- .../tiddlers/tag-pill Macro (Examples).tid | 8 ++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid index 73ea080587..bb2bff0c07 100644 --- a/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid +++ b/editions/tw5.com/tiddlers/macros/tag-pill_Macro.tid @@ -1,6 +1,6 @@ caption: tag-pill created: 20161128190930538 -modified: 20161128191220364 +modified: 20260114112210310 tags: Macros [[Core Macros]] title: tag-pill Macro type: text/vnd.tiddlywiki @@ -9,13 +9,18 @@ The <<.def tag-pill>> [[macro|Macros]] generates a static tag pill showing a spe !! Parameters -;tag +; tag : The title of the tag -;element-tag -: The element name to be used for the pill (defaults to "span") -;element-attributes -: Additional attributes for the pill element -;actions -: Action widgets to be triggered when the pill is clicked. Within the text, the macro parameter ''tag'' contains the title of the selected tag. + +; element-tag +: The element name to be used for the pill (defaults to HTML element SPAN). +: If an ''actions'' parameter is used the element-tag needs to be set to `$button` + +; element-attributes +: Additional attributes for the element specified in ''element-tag'' + +; actions +: If an actions parameter should be activated, the ''element-tag'' parameter needs to be set to `$button`. +: Action widgets to be triggered when the pill is clicked. Within the text, the macro parameter ''tag'' contains the title of the selected tag <<.macro-examples "tag-pill">> diff --git a/editions/tw5.com/tiddlers/tag-pill Macro (Examples).tid b/editions/tw5.com/tiddlers/tag-pill Macro (Examples).tid index c8ffcbe84e..b7252072f5 100644 --- a/editions/tw5.com/tiddlers/tag-pill Macro (Examples).tid +++ b/editions/tw5.com/tiddlers/tag-pill Macro (Examples).tid @@ -1,5 +1,5 @@ created: 20230803034230294 -modified: 20230803043848449 +modified: 20260114112240512 tags: [[Macro Examples]] [[tag-pill Macro]] title: tag-pill Macro (Examples) @@ -12,3 +12,9 @@ This example displays the [[Definitions]] tag as an unclickable, but still-style <$transclude $variable=".example" n="2" eg="""<<tag-pill Definitions element-tag:"big" element-attributes:"inert">>"""/> +<$transclude $variable=".example" n="3" eg="""\procedure tag-actions() +<$action-confirm $message="test"/> +\end + +<$transclude $variable="tag-pill" tag="asdf" element-tag="$button" actions=<<tag-actions>>/> +""">> \ No newline at end of file From 99d8afd515b8887c610b139a658eab8ab5a462f5 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Sat, 17 Jan 2026 22:56:16 +0800 Subject: [PATCH 410/458] Bump markdown-it to latest version (#9513) * Bump markdown-it to newest version * Update change note --- .../releasenotes/5.4.0/bump-markdown-it.tid | 18 ++++++++++++++++++ .../markdown/files/markdown-it-deflist.min.js | 9 ++------- .../markdown/files/markdown-it-footnote.min.js | 3 ++- .../markdown/files/markdown-it-ins.min.js | 4 ++-- .../markdown/files/markdown-it-mark.min.js | 4 ++-- .../markdown/files/markdown-it-sub.min.js | 4 ++-- .../markdown/files/markdown-it-sup.min.js | 4 ++-- .../markdown/files/markdown-it.min.js | 5 ++--- 8 files changed, 32 insertions(+), 19 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-markdown-it.tid diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-markdown-it.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-markdown-it.tid new file mode 100644 index 0000000000..c5ccc2ec3b --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-markdown-it.tid @@ -0,0 +1,18 @@ +title: $:/changenotes/5.4.0/#9513 +description: Bump markdown-it and its plugins to newest version +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: plugin +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9513 +github-contributors: Leilei332 + +Upgrade the markdown-it libraries used by the [[Markdown Plugin]]: + +* markdown-it: 14.1.0 +* markdown-it-deflist: 3.0.0 +* markdown-it-footnote: 4.0.0 +* markdown-it-ins: 4.0.0 +* markdown-it-mark: 4.0.0 +* markdown-it-sub: 2.0.0 +* markdown-it-sup: 2.0.0 \ No newline at end of file diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-deflist.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-deflist.min.js index 30ed4e224e..6a84dbf2dc 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-deflist.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-deflist.min.js @@ -1,7 +1,2 @@ -/*! - -markdown-it-deflist -https://github.com/markdown-it/markdown-it-deflist - -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitDeflist=e()}}((function(){return function e(t,n,r){function i(f,d){if(!n[f]){if(!t[f]){var s="function"==typeof require&&require;if(!d&&s)return s(f,!0);if(o)return o(f,!0);var u=new Error("Cannot find module '"+f+"'");throw u.code="MODULE_NOT_FOUND",u}var a=n[f]={exports:{}};t[f][0].call(a.exports,(function(e){return i(t[f][1][e]||e)}),a,a.exports,e,t,n,r)}return n[f].exports}for(var o="function"==typeof require&&require,f=0;f<r.length;f++)i(r[f]);return i}({"/":[function(e,t,n){"use strict";t.exports=function(e){var t=e.utils.isSpace;function n(e,t){var n,r,i=e.bMarks[t]+e.tShift[t],o=e.eMarks[t];return i>=o||126!==(r=e.src.charCodeAt(i++))&&58!==r||i===(n=e.skipSpaces(i))||n>=o?-1:i}e.block.ruler.before("paragraph","deflist",(function(e,r,i,o){var f,d,s,u,a,l,p,k,c,h,b,y,m,g,C,I,v,_,w,x;if(o)return!(e.ddIndent<0)&&n(e,r)>=0;if((c=r+1)>=i)return!1;if(e.isEmpty(c)&&++c>=i)return!1;if(e.sCount[c]<e.blkIndent)return!1;if((d=n(e,c))<0)return!1;p=e.tokens.length,w=!0,(x=e.push("dl_open","dl",1)).map=l=[r,0],u=r,s=c;e:for(;;){for(_=!1,(x=e.push("dt_open","dt",1)).map=[u,u],(x=e.push("inline","",0)).map=[u,u],x.content=e.getLines(u,u+1,e.blkIndent,!1).trim(),x.children=[],x=e.push("dt_close","dt",-1);;){for((x=e.push("dd_open","dd",1)).map=a=[c,0],v=d,k=e.eMarks[s],h=e.sCount[s]+d-(e.bMarks[s]+e.tShift[s]);v<k&&(f=e.src.charCodeAt(v),t(f));)9===f?h+=4-h%4:h++,v++;if(d=v,I=e.tight,b=e.ddIndent,y=e.blkIndent,C=e.tShift[s],g=e.sCount[s],m=e.parentType,e.blkIndent=e.ddIndent=e.sCount[s]+2,e.tShift[s]=d-e.bMarks[s],e.sCount[s]=h,e.tight=!0,e.parentType="deflist",e.md.block.tokenize(e,s,i,!0),e.tight&&!_||(w=!1),_=e.line-s>1&&e.isEmpty(e.line-1),e.tShift[s]=C,e.sCount[s]=g,e.tight=I,e.parentType=m,e.blkIndent=y,e.ddIndent=b,x=e.push("dd_close","dd",-1),a[1]=c=e.line,c>=i)break e;if(e.sCount[c]<e.blkIndent)break e;if((d=n(e,c))<0)break;s=c}if(c>=i)break;if(u=c,e.isEmpty(u))break;if(e.sCount[u]<e.blkIndent)break;if((s=u+1)>=i)break;if(e.isEmpty(s)&&s++,s>=i)break;if(e.sCount[s]<e.blkIndent)break;if((d=n(e,s))<0)break}return x=e.push("dl_close","dl",-1),l[1]=c,e.line=c,w&&function(e,t){var n,r,i=e.level+2;for(n=t+2,r=e.tokens.length-2;n<r;n++)e.tokens[n].level===i&&"paragraph_open"===e.tokens[n].type&&(e.tokens[n+2].hidden=!0,e.tokens[n].hidden=!0,n+=2)}(e,p),!0}),{alt:["paragraph","reference","blockquote"]})}},{}]},{},[])("/")})); +/*! markdown-it-deflist 3.0.0 https://github.com/markdown-it/markdown-it-deflist.git @license MIT */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).markdownitDeflist=e()}(this,(function(){"use strict";return function(t){const e=t.utils.isSpace;function n(t,e){let n=t.bMarks[e]+t.tShift[e];const i=t.eMarks[e];if(n>=i)return-1;const o=t.src.charCodeAt(n++);if(126!==o&&58!==o)return-1;const r=t.skipSpaces(n);return n===r||r>=i?-1:n}t.block.ruler.before("paragraph","deflist",(function(t,i,o,r){if(r)return!(t.ddIndent<0)&&n(t,i)>=0;let s=i+1;if(s>=o)return!1;if(t.isEmpty(s)&&(s++,s>=o))return!1;if(t.sCount[s]<t.blkIndent)return!1;let d=n(t,s);if(d<0)return!1;const l=t.tokens.length;let f=!0;const a=[i,0];t.push("dl_open","dl",1).map=a;let p=i,u=s;t:for(;;){let i=!1;t.push("dt_open","dt",1).map=[p,p];const r=t.push("inline","",0);for(r.map=[p,p],r.content=t.getLines(p,p+1,t.blkIndent,!1).trim(),r.children=[],t.push("dt_close","dt",-1);;){const r=[s,0];t.push("dd_open","dd",1).map=r;let l=d;const a=t.eMarks[u];let p=t.sCount[u]+d-(t.bMarks[u]+t.tShift[u]);for(;l<a;){const n=t.src.charCodeAt(l);if(!e(n))break;9===n?p+=4-p%4:p++,l++}d=l;const c=t.tight,k=t.ddIndent,b=t.blkIndent,h=t.tShift[u],m=t.sCount[u],g=t.parentType;if(t.blkIndent=t.ddIndent=t.sCount[u]+2,t.tShift[u]=d-t.bMarks[u],t.sCount[u]=p,t.tight=!0,t.parentType="deflist",t.md.block.tokenize(t,u,o,!0),t.tight&&!i||(f=!1),i=t.line-u>1&&t.isEmpty(t.line-1),t.tShift[u]=h,t.sCount[u]=m,t.tight=c,t.parentType=g,t.blkIndent=b,t.ddIndent=k,t.push("dd_close","dd",-1),r[1]=s=t.line,s>=o)break t;if(t.sCount[s]<t.blkIndent)break t;if(d=n(t,s),d<0)break;u=s}if(s>=o)break;if(p=s,t.isEmpty(p))break;if(t.sCount[p]<t.blkIndent)break;if(u=p+1,u>=o)break;if(t.isEmpty(u)&&u++,u>=o)break;if(t.sCount[u]<t.blkIndent)break;if(d=n(t,u),d<0)break}return t.push("dl_close","dl",-1),a[1]=s,t.line=s,f&&function(t,e){const n=t.level+2;for(let i=e+2,o=t.tokens.length-2;i<o;i++)t.tokens[i].level===n&&"paragraph_open"===t.tokens[i].type&&(t.tokens[i+2].hidden=!0,t.tokens[i].hidden=!0,i+=2)}(t,l),!0}),{alt:["paragraph","reference","blockquote"]})}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-footnote.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-footnote.min.js index 87407f9303..23349fa30d 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-footnote.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-footnote.min.js @@ -1 +1,2 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitFootnote=e()}}(function(){return function(){return function e(o,t,n){function r(f,l){if(!t[f]){if(!o[f]){var i="function"==typeof require&&require;if(!l&&i)return i(f,!0);if(s)return s(f,!0);var u=new Error("Cannot find module '"+f+"'");throw u.code="MODULE_NOT_FOUND",u}var a=t[f]={exports:{}};o[f][0].call(a.exports,function(e){return r(o[f][1][e]||e)},a,a.exports,e,o,t,n)}return t[f].exports}for(var s="function"==typeof require&&require,f=0;f<n.length;f++)r(n[f]);return r}}()({1:[function(e,o,t){"use strict";function n(e,o,t,n){var r=Number(e[o].meta.id+1).toString(),s="";return"string"==typeof n.docId&&(s="-"+n.docId+"-"),s+r}function r(e,o){var t=Number(e[o].meta.id+1).toString();return e[o].meta.subId>0&&(t+=":"+e[o].meta.subId),"["+t+"]"}function s(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r),f=r.rules.footnote_caption(e,o,t,n,r),l=s;return e[o].meta.subId>0&&(l+=":"+e[o].meta.subId),'<sup class="footnote-ref"><a href="#fn'+s+'" id="fnref'+l+'">'+f+"</a></sup>"}function f(e,o,t){return(t.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'}function l(){return"</ol>\n</section>\n"}function i(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=":"+e[o].meta.subId),'<li id="fn'+s+'" class="footnote-item">'}function u(){return"</li>\n"}function a(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=":"+e[o].meta.subId),' <a href="#fnref'+s+'" class="footnote-backref">\u21a9\ufe0e</a>'}o.exports=function(e){var o=e.helpers.parseLinkLabel,t=e.utils.isSpace;e.renderer.rules.footnote_ref=s,e.renderer.rules.footnote_block_open=f,e.renderer.rules.footnote_block_close=l,e.renderer.rules.footnote_open=i,e.renderer.rules.footnote_close=u,e.renderer.rules.footnote_anchor=a,e.renderer.rules.footnote_caption=r,e.renderer.rules.footnote_anchor_name=n,e.block.ruler.before("reference","footnote_def",function(e,o,n,r){var s,f,l,i,u,a,c,p,d,h,k,b=e.bMarks[o]+e.tShift[o],v=e.eMarks[o];if(b+4>v)return!1;if(91!==e.src.charCodeAt(b))return!1;if(94!==e.src.charCodeAt(b+1))return!1;for(u=b+2;u<v;u++){if(32===e.src.charCodeAt(u))return!1;if(93===e.src.charCodeAt(u))break}if(u===b+2)return!1;if(u+1>=v||58!==e.src.charCodeAt(++u))return!1;if(r)return!0;for(u++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),a=e.src.slice(b+2,u-2),e.env.footnotes.refs[":"+a]=-1,(c=new e.Token("footnote_reference_open","",1)).meta={label:a},c.level=e.level++,e.tokens.push(c),s=e.bMarks[o],f=e.tShift[o],l=e.sCount[o],i=e.parentType,k=u,p=d=e.sCount[o]+u-(e.bMarks[o]+e.tShift[o]);u<v&&(h=e.src.charCodeAt(u),t(h));)9===h?d+=4-d%4:d++,u++;return e.tShift[o]=u-k,e.sCount[o]=d-p,e.bMarks[o]=k,e.blkIndent+=4,e.parentType="footnote",e.sCount[o]<e.blkIndent&&(e.sCount[o]+=e.blkIndent),e.md.block.tokenize(e,o,n,!0),e.parentType=i,e.blkIndent-=4,e.tShift[o]=f,e.sCount[o]=l,e.bMarks[o]=s,(c=new e.Token("footnote_reference_close","",-1)).level=--e.level,e.tokens.push(c),!0},{alt:["paragraph","reference"]}),e.inline.ruler.after("image","footnote_inline",function(e,t){var n,r,s,f,l=e.posMax,i=e.pos;return!(i+2>=l||94!==e.src.charCodeAt(i)||91!==e.src.charCodeAt(i+1)||(n=i+2,(r=o(e,i+1))<0||(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),s=e.env.footnotes.list.length,e.md.inline.parse(e.src.slice(n,r),e.md,e.env,f=[]),e.push("footnote_ref","",0).meta={id:s},e.env.footnotes.list[s]={content:e.src.slice(n,r),tokens:f}),e.pos=r+1,e.posMax=l,0)))}),e.inline.ruler.after("footnote_inline","footnote_ref",function(e,o){var t,n,r,s,f=e.posMax,l=e.pos;if(l+3>f)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(l))return!1;if(94!==e.src.charCodeAt(l+1))return!1;for(n=l+2;n<f;n++){if(32===e.src.charCodeAt(n))return!1;if(10===e.src.charCodeAt(n))return!1;if(93===e.src.charCodeAt(n))break}return!(n===l+2||n>=f||(n++,t=e.src.slice(l+2,n-1),void 0===e.env.footnotes.refs[":"+t]||(o||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[":"+t]<0?(r=e.env.footnotes.list.length,e.env.footnotes.list[r]={label:t,count:0},e.env.footnotes.refs[":"+t]=r):r=e.env.footnotes.refs[":"+t],s=e.env.footnotes.list[r].count,e.env.footnotes.list[r].count++,e.push("footnote_ref","",0).meta={id:r,subId:s,label:t}),e.pos=n,e.posMax=f,0)))}),e.core.ruler.after("inline","footnote_tail",function(e){var o,t,n,r,s,f,l,i,u,a,c=!1,p={};if(e.env.footnotes&&(e.tokens=e.tokens.filter(function(e){return"footnote_reference_open"===e.type?(c=!0,u=[],a=e.meta.label,!1):"footnote_reference_close"===e.type?(c=!1,p[":"+a]=u,!1):(c&&u.push(e),!c)}),e.env.footnotes.list)){for(f=e.env.footnotes.list,l=new e.Token("footnote_block_open","",1),e.tokens.push(l),o=0,t=f.length;o<t;o++){for((l=new e.Token("footnote_open","",1)).meta={id:o,label:f[o].label},e.tokens.push(l),f[o].tokens?(i=[],(l=new e.Token("paragraph_open","p",1)).block=!0,i.push(l),(l=new e.Token("inline","",0)).children=f[o].tokens,l.content=f[o].content,i.push(l),(l=new e.Token("paragraph_close","p",-1)).block=!0,i.push(l)):f[o].label&&(i=p[":"+f[o].label]),i&&(e.tokens=e.tokens.concat(i)),s="paragraph_close"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,r=f[o].count>0?f[o].count:1,n=0;n<r;n++)(l=new e.Token("footnote_anchor","",0)).meta={id:o,subId:n,label:f[o].label},e.tokens.push(l);s&&e.tokens.push(s),l=new e.Token("footnote_close","",-1),e.tokens.push(l)}l=new e.Token("footnote_block_close","",-1),e.tokens.push(l)}})}},{}]},{},[1])(1)}); +/*! markdown-it-footnote 4.0.0 https://github.com/markdown-it/markdown-it-footnote @license MIT */ +!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitFootnote=o()}(this,(function(){"use strict";function e(e,o,t,n){const r=Number(e[o].meta.id+1).toString();let s="";return"string"==typeof n.docId&&(s=`-${n.docId}-`),s+r}function o(e,o){let t=Number(e[o].meta.id+1).toString();return e[o].meta.subId>0&&(t+=`:${e[o].meta.subId}`),`[${t}]`}function t(e,o,t,n,r){const s=r.rules.footnote_anchor_name(e,o,t,n,r),f=r.rules.footnote_caption(e,o,t,n,r);let l=s;return e[o].meta.subId>0&&(l+=`:${e[o].meta.subId}`),`<sup class="footnote-ref"><a href="#fn${s}" id="fnref${l}">${f}</a></sup>`}function n(e,o,t){return(t.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'}function r(){return"</ol>\n</section>\n"}function s(e,o,t,n,r){let s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=`:${e[o].meta.subId}`),`<li id="fn${s}" class="footnote-item">`}function f(){return"</li>\n"}function l(e,o,t,n,r){let s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=`:${e[o].meta.subId}`),` <a href="#fnref${s}" class="footnote-backref">\u21a9\ufe0e</a>`}return function(c){const i=c.helpers.parseLinkLabel,u=c.utils.isSpace;c.renderer.rules.footnote_ref=t,c.renderer.rules.footnote_block_open=n,c.renderer.rules.footnote_block_close=r,c.renderer.rules.footnote_open=s,c.renderer.rules.footnote_close=f,c.renderer.rules.footnote_anchor=l,c.renderer.rules.footnote_caption=o,c.renderer.rules.footnote_anchor_name=e,c.block.ruler.before("reference","footnote_def",(function(e,o,t,n){const r=e.bMarks[o]+e.tShift[o],s=e.eMarks[o];if(r+4>s)return!1;if(91!==e.src.charCodeAt(r))return!1;if(94!==e.src.charCodeAt(r+1))return!1;let f;for(f=r+2;f<s;f++){if(32===e.src.charCodeAt(f))return!1;if(93===e.src.charCodeAt(f))break}if(f===r+2)return!1;if(f+1>=s||58!==e.src.charCodeAt(++f))return!1;if(n)return!0;f++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={});const l=e.src.slice(r+2,f-2);e.env.footnotes.refs[`:${l}`]=-1;const c=new e.Token("footnote_reference_open","",1);c.meta={label:l},c.level=e.level++,e.tokens.push(c);const i=e.bMarks[o],a=e.tShift[o],p=e.sCount[o],d=e.parentType,h=f,k=e.sCount[o]+f-(e.bMarks[o]+e.tShift[o]);let b=k;for(;f<s;){const o=e.src.charCodeAt(f);if(!u(o))break;9===o?b+=4-b%4:b++,f++}e.tShift[o]=f-h,e.sCount[o]=b-k,e.bMarks[o]=h,e.blkIndent+=4,e.parentType="footnote",e.sCount[o]<e.blkIndent&&(e.sCount[o]+=e.blkIndent),e.md.block.tokenize(e,o,t,!0),e.parentType=d,e.blkIndent-=4,e.tShift[o]=a,e.sCount[o]=p,e.bMarks[o]=i;const _=new e.Token("footnote_reference_close","",-1);return _.level=--e.level,e.tokens.push(_),!0}),{alt:["paragraph","reference"]}),c.inline.ruler.after("image","footnote_inline",(function(e,o){const t=e.posMax,n=e.pos;if(n+2>=t)return!1;if(94!==e.src.charCodeAt(n))return!1;if(91!==e.src.charCodeAt(n+1))return!1;const r=n+2,s=i(e,n+1);if(s<0)return!1;if(!o){e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]);const o=e.env.footnotes.list.length,t=[];e.md.inline.parse(e.src.slice(r,s),e.md,e.env,t);e.push("footnote_ref","",0).meta={id:o},e.env.footnotes.list[o]={content:e.src.slice(r,s),tokens:t}}return e.pos=s+1,e.posMax=t,!0})),c.inline.ruler.after("footnote_inline","footnote_ref",(function(e,o){const t=e.posMax,n=e.pos;if(n+3>t)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(n))return!1;if(94!==e.src.charCodeAt(n+1))return!1;let r;for(r=n+2;r<t;r++){if(32===e.src.charCodeAt(r))return!1;if(10===e.src.charCodeAt(r))return!1;if(93===e.src.charCodeAt(r))break}if(r===n+2)return!1;if(r>=t)return!1;r++;const s=e.src.slice(n+2,r-1);if(void 0===e.env.footnotes.refs[`:${s}`])return!1;if(!o){let o;e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[`:${s}`]<0?(o=e.env.footnotes.list.length,e.env.footnotes.list[o]={label:s,count:0},e.env.footnotes.refs[`:${s}`]=o):o=e.env.footnotes.refs[`:${s}`];const t=e.env.footnotes.list[o].count;e.env.footnotes.list[o].count++;e.push("footnote_ref","",0).meta={id:o,subId:t,label:s}}return e.pos=r,e.posMax=t,!0})),c.core.ruler.after("inline","footnote_tail",(function(e){let o,t,n,r=!1;const s={};if(!e.env.footnotes)return;if(e.tokens=e.tokens.filter((function(e){return"footnote_reference_open"===e.type?(r=!0,t=[],n=e.meta.label,!1):"footnote_reference_close"===e.type?(r=!1,s[":"+n]=t,!1):(r&&t.push(e),!r)})),!e.env.footnotes.list)return;const f=e.env.footnotes.list;e.tokens.push(new e.Token("footnote_block_open","",1));for(let t=0,n=f.length;t<n;t++){const n=new e.Token("footnote_open","",1);if(n.meta={id:t,label:f[t].label},e.tokens.push(n),f[t].tokens){o=[];const n=new e.Token("paragraph_open","p",1);n.block=!0,o.push(n);const r=new e.Token("inline","",0);r.children=f[t].tokens,r.content=f[t].content,o.push(r);const s=new e.Token("paragraph_close","p",-1);s.block=!0,o.push(s)}else f[t].label&&(o=s[`:${f[t].label}`]);let r;o&&(e.tokens=e.tokens.concat(o)),r="paragraph_close"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null;const l=f[t].count>0?f[t].count:1;for(let o=0;o<l;o++){const n=new e.Token("footnote_anchor","",0);n.meta={id:t,subId:o,label:f[t].label},e.tokens.push(n)}r&&e.tokens.push(r),e.tokens.push(new e.Token("footnote_close","",-1))}e.tokens.push(new e.Token("footnote_block_close","",-1))}))}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-ins.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-ins.min.js index d388dfd3c4..5a220f6d1c 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-ins.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-ins.min.js @@ -1,2 +1,2 @@ -/*! markdown-it-ins 3.0.1 https://github.com/markdown-it/markdown-it-mark @license MIT */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitIns=n()}(this,(function(){"use strict";return function(e){function n(e,n){var t,o,s,i,r,l=[],f=n.length;for(t=0;t<f;t++)43===(s=n[t]).marker&&-1!==s.end&&(i=n[s.end],(r=e.tokens[s.token]).type="ins_open",r.tag="ins",r.nesting=1,r.markup="++",r.content="",(r=e.tokens[i.token]).type="ins_close",r.tag="ins",r.nesting=-1,r.markup="++",r.content="","text"===e.tokens[i.token-1].type&&"+"===e.tokens[i.token-1].content&&l.push(i.token-1));for(;l.length;){for(o=(t=l.pop())+1;o<e.tokens.length&&"ins_close"===e.tokens[o].type;)o++;t!==--o&&(r=e.tokens[o],e.tokens[o]=e.tokens[t],e.tokens[t]=r)}}e.inline.ruler.before("emphasis","ins",(function(e,n){var t,o,s,i,r=e.pos,l=e.src.charCodeAt(r);if(n)return!1;if(43!==l)return!1;if(s=(o=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(l),s<2)return!1;for(s%2&&(e.push("text","",0).content=i,s--),t=0;t<s;t+=2)e.push("text","",0).content=i+i,(o.can_open||o.can_close)&&e.delimiters.push({marker:l,length:0,jump:t/2,token:e.tokens.length-1,end:-1,open:o.can_open,close:o.can_close});return e.pos+=o.length,!0})),e.inline.ruler2.before("emphasis","ins",(function(e){var t,o=e.tokens_meta,s=(e.tokens_meta||[]).length;for(n(e,e.delimiters),t=0;t<s;t++)o[t]&&o[t].delimiters&&n(e,o[t].delimiters)}))}})); +/*! markdown-it-ins 4.0.0 https://github.com/markdown-it/markdown-it-ins @license MIT */ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitIns=n()}(this,(function(){"use strict";return function(e){function n(e,n){let t;const o=[],s=n.length;for(let i=0;i<s;i++){const s=n[i];if(43!==s.marker)continue;if(-1===s.end)continue;const r=n[s.end];t=e.tokens[s.token],t.type="ins_open",t.tag="ins",t.nesting=1,t.markup="++",t.content="",t=e.tokens[r.token],t.type="ins_close",t.tag="ins",t.nesting=-1,t.markup="++",t.content="","text"===e.tokens[r.token-1].type&&"+"===e.tokens[r.token-1].content&&o.push(r.token-1)}for(;o.length;){const n=o.pop();let s=n+1;for(;s<e.tokens.length&&"ins_close"===e.tokens[s].type;)s++;s--,n!==s&&(t=e.tokens[s],e.tokens[s]=e.tokens[n],e.tokens[n]=t)}}e.inline.ruler.before("emphasis","ins",(function(e,n){const t=e.pos,o=e.src.charCodeAt(t);if(n)return!1;if(43!==o)return!1;const s=e.scanDelims(e.pos,!0);let i=s.length;const r=String.fromCharCode(o);if(i<2)return!1;if(i%2){e.push("text","",0).content=r,i--}for(let n=0;n<i;n+=2){e.push("text","",0).content=r+r,(s.can_open||s.can_close)&&e.delimiters.push({marker:o,length:0,jump:n/2,token:e.tokens.length-1,end:-1,open:s.can_open,close:s.can_close})}return e.pos+=s.length,!0})),e.inline.ruler2.before("emphasis","ins",(function(e){const t=e.tokens_meta,o=(e.tokens_meta||[]).length;n(e,e.delimiters);for(let s=0;s<o;s++)t[s]&&t[s].delimiters&&n(e,t[s].delimiters)}))}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-mark.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-mark.min.js index 16856d3676..dc768ef034 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-mark.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-mark.min.js @@ -1,2 +1,2 @@ -/*! markdown-it-mark 3.0.1 https://github.com/markdown-it/markdown-it-mark @license MIT */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitMark=n()}(this,(function(){"use strict";return function(e){function n(e,n){var t,o,r,s,i,a=[],k=n.length;for(t=0;t<k;t++)61===(r=n[t]).marker&&-1!==r.end&&(s=n[r.end],(i=e.tokens[r.token]).type="mark_open",i.tag="mark",i.nesting=1,i.markup="==",i.content="",(i=e.tokens[s.token]).type="mark_close",i.tag="mark",i.nesting=-1,i.markup="==",i.content="","text"===e.tokens[s.token-1].type&&"="===e.tokens[s.token-1].content&&a.push(s.token-1));for(;a.length;){for(o=(t=a.pop())+1;o<e.tokens.length&&"mark_close"===e.tokens[o].type;)o++;t!==--o&&(i=e.tokens[o],e.tokens[o]=e.tokens[t],e.tokens[t]=i)}}e.inline.ruler.before("emphasis","mark",(function(e,n){var t,o,r,s,i=e.pos,a=e.src.charCodeAt(i);if(n)return!1;if(61!==a)return!1;if(r=(o=e.scanDelims(e.pos,!0)).length,s=String.fromCharCode(a),r<2)return!1;for(r%2&&(e.push("text","",0).content=s,r--),t=0;t<r;t+=2)e.push("text","",0).content=s+s,(o.can_open||o.can_close)&&e.delimiters.push({marker:a,length:0,jump:t/2,token:e.tokens.length-1,end:-1,open:o.can_open,close:o.can_close});return e.pos+=o.length,!0})),e.inline.ruler2.before("emphasis","mark",(function(e){var t,o=e.tokens_meta,r=(e.tokens_meta||[]).length;for(n(e,e.delimiters),t=0;t<r;t++)o[t]&&o[t].delimiters&&n(e,o[t].delimiters)}))}})); +/*! markdown-it-mark 4.0.0 https://github.com/markdown-it/markdown-it-mark @license MIT */ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitMark=n()}(this,(function(){"use strict";return function(e){function n(e,n){const t=[],o=n.length;for(let s=0;s<o;s++){const o=n[s];if(61!==o.marker)continue;if(-1===o.end)continue;const r=n[o.end],i=e.tokens[o.token];i.type="mark_open",i.tag="mark",i.nesting=1,i.markup="==",i.content="";const c=e.tokens[r.token];c.type="mark_close",c.tag="mark",c.nesting=-1,c.markup="==",c.content="","text"===e.tokens[r.token-1].type&&"="===e.tokens[r.token-1].content&&t.push(r.token-1)}for(;t.length;){const n=t.pop();let o=n+1;for(;o<e.tokens.length&&"mark_close"===e.tokens[o].type;)o++;if(o--,n!==o){const t=e.tokens[o];e.tokens[o]=e.tokens[n],e.tokens[n]=t}}}e.inline.ruler.before("emphasis","mark",(function(e,n){const t=e.pos,o=e.src.charCodeAt(t);if(n)return!1;if(61!==o)return!1;const s=e.scanDelims(e.pos,!0);let r=s.length;const i=String.fromCharCode(o);if(r<2)return!1;if(r%2){e.push("text","",0).content=i,r--}for(let n=0;n<r;n+=2){e.push("text","",0).content=i+i,(s.can_open||s.can_close)&&e.delimiters.push({marker:o,length:0,jump:n/2,token:e.tokens.length-1,end:-1,open:s.can_open,close:s.can_close})}return e.pos+=s.length,!0})),e.inline.ruler2.before("emphasis","mark",(function(e){let t;const o=e.tokens_meta,s=(e.tokens_meta||[]).length;for(n(e,e.delimiters),t=0;t<s;t++)o[t]&&o[t].delimiters&&n(e,o[t].delimiters)}))}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-sub.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-sub.min.js index a3a4542fad..a8396daed9 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-sub.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-sub.min.js @@ -1,2 +1,2 @@ -/*! markdown-it-sub 1.0.0 https://github.com//markdown-it/markdown-it-sub @license MIT */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSub=e()}}(function(){return function e(r,o,n){function t(i,u){if(!o[i]){if(!r[i]){var f="function"==typeof require&&require;if(!u&&f)return f(i,!0);if(s)return s(i,!0);var p=new Error("Cannot find module '"+i+"'");throw p.code="MODULE_NOT_FOUND",p}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i<n.length;i++)t(n[i]);return t}({1:[function(e,r){"use strict";function o(e,r){var o,t,s,i=e.posMax,u=e.pos;if(126!==e.src.charCodeAt(u))return!1;if(r)return!1;if(u+2>=i)return!1;for(e.pos=u+1;e.pos<i;){if(126===e.src.charCodeAt(e.pos)){o=!0;break}e.md.inline.skipToken(e)}return o&&u+1!==e.pos?(t=e.src.slice(u+1,e.pos),t.match(/(^|[^\\])(\\\\)*\s/)?(e.pos=u,!1):(e.posMax=e.pos,e.pos=u+1,s=e.push("sub_open","sub",1),s.markup="~",s=e.push("text","",0),s.content=t.replace(n,"$1"),s=e.push("sub_close","sub",-1),s.markup="~",e.pos=e.posMax+1,e.posMax=i,!0)):(e.pos=u,!1)}var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sub",o)}},{}]},{},[1])(1)}); \ No newline at end of file +/*! markdown-it-sub 2.0.0 https://github.com/markdown-it/markdown-it-sub @license MIT */ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitSub=s()}(this,(function(){"use strict";const e=/\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g;function s(s,o){const n=s.posMax,t=s.pos;if(126!==s.src.charCodeAt(t))return!1;if(o)return!1;if(t+2>=n)return!1;s.pos=t+1;let r=!1;for(;s.pos<n;){if(126===s.src.charCodeAt(s.pos)){r=!0;break}s.md.inline.skipToken(s)}if(!r||t+1===s.pos)return s.pos=t,!1;const p=s.src.slice(t+1,s.pos);if(p.match(/(^|[^\\])(\\\\)*\s/))return s.pos=t,!1;s.posMax=s.pos,s.pos=t+1;s.push("sub_open","sub",1).markup="~";s.push("text","",0).content=p.replace(e,"$1");return s.push("sub_close","sub",-1).markup="~",s.pos=s.posMax+1,s.posMax=n,!0}return function(e){e.inline.ruler.after("emphasis","sub",s)}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it-sup.min.js b/plugins/tiddlywiki/markdown/files/markdown-it-sup.min.js index 67da65cdaf..604b7a8a45 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it-sup.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it-sup.min.js @@ -1,2 +1,2 @@ -/*! markdown-it-sup 1.0.0 https://github.com//markdown-it/markdown-it-sup @license MIT */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSup=e()}}(function(){return function e(r,o,n){function t(i,p){if(!o[i]){if(!r[i]){var u="function"==typeof require&&require;if(!p&&u)return u(i,!0);if(s)return s(i,!0);var f=new Error("Cannot find module '"+i+"'");throw f.code="MODULE_NOT_FOUND",f}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i<n.length;i++)t(n[i]);return t}({1:[function(e,r){"use strict";function o(e,r){var o,t,s,i=e.posMax,p=e.pos;if(94!==e.src.charCodeAt(p))return!1;if(r)return!1;if(p+2>=i)return!1;for(e.pos=p+1;e.pos<i;){if(94===e.src.charCodeAt(e.pos)){o=!0;break}e.md.inline.skipToken(e)}return o&&p+1!==e.pos?(t=e.src.slice(p+1,e.pos),t.match(/(^|[^\\])(\\\\)*\s/)?(e.pos=p,!1):(e.posMax=e.pos,e.pos=p+1,s=e.push("sup_open","sup",1),s.markup="^",s=e.push("text","",0),s.content=t.replace(n,"$1"),s=e.push("sup_close","sup",-1),s.markup="^",e.pos=e.posMax+1,e.posMax=i,!0)):(e.pos=p,!1)}var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sup",o)}},{}]},{},[1])(1)}); \ No newline at end of file +/*! markdown-it-sup 2.0.0 https://github.com/markdown-it/markdown-it-sup @license MIT */ +!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownitSup=s()}(this,(function(){"use strict";const e=/\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g;function s(s,o){const n=s.posMax,p=s.pos;if(94!==s.src.charCodeAt(p))return!1;if(o)return!1;if(p+2>=n)return!1;s.pos=p+1;let t=!1;for(;s.pos<n;){if(94===s.src.charCodeAt(s.pos)){t=!0;break}s.md.inline.skipToken(s)}if(!t||p+1===s.pos)return s.pos=p,!1;const r=s.src.slice(p+1,s.pos);if(r.match(/(^|[^\\])(\\\\)*\s/))return s.pos=p,!1;s.posMax=s.pos,s.pos=p+1;s.push("sup_open","sup",1).markup="^";s.push("text","",0).content=r.replace(e,"$1");return s.push("sup_close","sup",-1).markup="^",s.pos=s.posMax+1,s.posMax=n,!0}return function(e){e.inline.ruler.after("emphasis","sup",s)}})); diff --git a/plugins/tiddlywiki/markdown/files/markdown-it.min.js b/plugins/tiddlywiki/markdown/files/markdown-it.min.js index 34201f495d..5e6f25691e 100644 --- a/plugins/tiddlywiki/markdown/files/markdown-it.min.js +++ b/plugins/tiddlywiki/markdown/files/markdown-it.min.js @@ -1,3 +1,2 @@ -/*! markdown-it 13.0.1 https://github.com/markdown-it/markdown-it @license MIT */ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).markdownit=r()}(this,(function(){"use strict";function e(e){if(e.__esModule)return e;var r=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var r={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",awconint:"\u2233",awint:"\u2a11",backcong:"\u224c",backepsilon:"\u03f6",backprime:"\u2035",backsim:"\u223d",backsimeq:"\u22cd",Backslash:"\u2216",Barv:"\u2ae7",barvee:"\u22bd",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23b5",bbrktbrk:"\u23b6",bcong:"\u224c",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201e",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29b0",bepsi:"\u03f6",bernou:"\u212c",Bernoullis:"\u212c",Beta:"\u0392",beta:"\u03b2",beth:"\u2136",between:"\u226c",Bfr:"\ud835\udd05",bfr:"\ud835\udd1f",bigcap:"\u22c2",bigcirc:"\u25ef",bigcup:"\u22c3",bigodot:"\u2a00",bigoplus:"\u2a01",bigotimes:"\u2a02",bigsqcup:"\u2a06",bigstar:"\u2605",bigtriangledown:"\u25bd",bigtriangleup:"\u25b3",biguplus:"\u2a04",bigvee:"\u22c1",bigwedge:"\u22c0",bkarow:"\u290d",blacklozenge:"\u29eb",blacksquare:"\u25aa",blacktriangle:"\u25b4",blacktriangledown:"\u25be",blacktriangleleft:"\u25c2",blacktriangleright:"\u25b8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20e5",bnequiv:"\u2261\u20e5",bNot:"\u2aed",bnot:"\u2310",Bopf:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",capcup:"\u2a47",capdot:"\u2a40",CapitalDifferentialD:"\u2145",caps:"\u2229\ufe00",caret:"\u2041",caron:"\u02c7",Cayleys:"\u212d",ccaps:"\u2a4d",Ccaron:"\u010c",ccaron:"\u010d",Ccedil:"\xc7",ccedil:"\xe7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",circeq:"\u2257",circlearrowleft:"\u21ba",circlearrowright:"\u21bb",circledast:"\u229b",circledcirc:"\u229a",circleddash:"\u229d",CircleDot:"\u2299",circledR:"\xae",circledS:"\u24c8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",dHar:"\u2965",dharl:"\u21c3",dharr:"\u21c2",DiacriticalAcute:"\xb4",DiacriticalDot:"\u02d9",DiacriticalDoubleAcute:"\u02dd",DiacriticalGrave:"`",DiacriticalTilde:"\u02dc",diam:"\u22c4",diamond:"\u22c4",Diamond:"\u22c4",diamondsuit:"\u2666",diams:"\u2666",die:"\xa8",DifferentialD:"\u2146",digamma:"\u03dd",disin:"\u22f2",div:"\xf7",divide:"\xf7",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",Dot:"\xa8",dot:"\u02d9",DotDot:"\u20dc",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22a1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222f",DoubleDot:"\xa8",DoubleDownArrow:"\u21d3",DoubleLeftArrow:"\u21d0",DoubleLeftRightArrow:"\u21d4",DoubleLeftTee:"\u2ae4",DoubleLongLeftArrow:"\u27f8",DoubleLongLeftRightArrow:"\u27fa",DoubleLongRightArrow:"\u27f9",DoubleRightArrow:"\u21d2",DoubleRightTee:"\u22a8",DoubleUpArrow:"\u21d1",DoubleUpDownArrow:"\u21d5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",DScy:"\u0405",dscy:"\u0455",dsol:"\u29f6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22f1",dtri:"\u25bf",dtrif:"\u25be",duarr:"\u21f5",duhar:"\u296f",dwangle:"\u29a6",DZcy:"\u040f",dzcy:"\u045f",dzigrarr:"\u27ff",Eacute:"\xc9",eacute:"\xe9",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",Egrave:"\xc8",egrave:"\xe8",egs:"\u2a96",egsdot:"\u2a98",el:"\u2a99",Element:"\u2208",elinters:"\u23e7",ell:"\u2113",els:"\u2a95",elsdot:"\u2a97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25fb",emptyv:"\u2205",EmptyVerySmallSquare:"\u25ab",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014a",eng:"\u014b",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\ud835\udd3c",eopf:"\ud835\udd56",epar:"\u22d5",eparsl:"\u29e3",eplus:"\u2a71",epsi:"\u03b5",Epsilon:"\u0395",epsilon:"\u03b5",epsiv:"\u03f5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2a96",eqslantless:"\u2a95",Equal:"\u2a75",equals:"=",EqualTilde:"\u2242",equest:"\u225f",Equilibrium:"\u21cc",equiv:"\u2261",equivDD:"\u2a78",eqvparsl:"\u29e5",erarr:"\u2971",erDot:"\u2253",escr:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\ufb03",fflig:"\ufb00",ffllig:"\ufb04",Ffr:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",gacute:"\u01f5",Gamma:"\u0393",gamma:"\u03b3",Gammad:"\u03dc",gammad:"\u03dd",gap:"\u2a86",Gbreve:"\u011e",gbreve:"\u011f",Gcedil:"\u0122",Gcirc:"\u011c",gcirc:"\u011d",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",gtdot:"\u22d7",gtlPar:"\u2995",gtquest:"\u2a7c",gtrapprox:"\u2a86",gtrarr:"\u2978",gtrdot:"\u22d7",gtreqless:"\u22db",gtreqqless:"\u2a8c",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\ufe00",gvnE:"\u2269\ufe00",Hacek:"\u02c7",hairsp:"\u200a",half:"\xbd",hamilt:"\u210b",HARDcy:"\u042a",hardcy:"\u044a",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105",in:"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba",int:"\u222b",Int:"\u222c",integers:"\u2124",Integral:"\u222b",intercal:"\u22ba",Intersection:"\u22c2",intlarhk:"\u2a17",intprod:"\u2a3c",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012e",iogon:"\u012f",Iopf:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",isin:"\u2208",isindot:"\u22f5",isinE:"\u22f9",isins:"\u22f4",isinsv:"\u22f3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xcf",iuml:"\xef",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298b",lbrksld:"\u298f",lbrkslu:"\u298d",Lcaron:"\u013d",lcaron:"\u013e",Lcedil:"\u013b",lcedil:"\u013c",lceil:"\u2308",lcub:"{",Lcy:"\u041b",lcy:"\u043b",ldca:"\u2936",ldquo:"\u201c",ldquor:"\u201e",ldrdhar:"\u2967",ldrushar:"\u294b",ldsh:"\u21b2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",lesdot:"\u2a7f",lesdoto:"\u2a81",lesdotor:"\u2a83",lesg:"\u22da\ufe00",lesges:"\u2a93",lessapprox:"\u2a85",lessdot:"\u22d6",lesseqgtr:"\u22da",lesseqqgtr:"\u2a8b",LessEqualGreater:"\u22da",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2aa1",lesssim:"\u2272",LessSlantEqual:"\u2a7d",LessTilde:"\u2272",lfisht:"\u297c",lfloor:"\u230a",Lfr:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",loplus:"\u2a2d",lotimes:"\u2a34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25ca",lozenge:"\u25ca",lozf:"\u29eb",lpar:"(",lparlt:"\u2993",lrarr:"\u21c6",lrcorner:"\u231f",lrhar:"\u21cb",lrhard:"\u296d",lrm:"\u200e",lrtri:"\u22bf",lsaquo:"\u2039",lscr:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",ltdot:"\u22d6",lthree:"\u22cb",ltimes:"\u22c9",ltlarr:"\u2976",ltquest:"\u2a7b",ltri:"\u25c3",ltrie:"\u22b4",ltrif:"\u25c2",ltrPar:"\u2996",lurdshar:"\u294a",luruhar:"\u2966",lvertneqq:"\u2268\ufe00",lvnE:"\u2268\ufe00",macr:"\xaf",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21a6",mapsto:"\u21a6",mapstodown:"\u21a7",mapstoleft:"\u21a4",mapstoup:"\u21a5",marker:"\u25ae",mcomma:"\u2a29",Mcy:"\u041c",mcy:"\u043c",mdash:"\u2014",mDDot:"\u223a",measuredangle:"\u2221",MediumSpace:"\u205f",Mellintrf:"\u2133",Mfr:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",mstpos:"\u223e",Mu:"\u039c",mu:"\u03bc",multimap:"\u22b8",mumap:"\u22b8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20d2",nap:"\u2249",napE:"\u2a70\u0338",napid:"\u224b\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266e",naturals:"\u2115",natur:"\u266e",nbsp:"\xa0",nbump:"\u224e\u0338",nbumpe:"\u224f\u0338",ncap:"\u2a43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2a6d\u0338",ncup:"\u2a42",Ncy:"\u041d",ncy:"\u043d",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200b",NegativeThickSpace:"\u200b",NegativeThinSpace:"\u200b",NegativeVeryThinSpace:"\u200b",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226b",NestedLessLess:"\u226a",NewLine:"\n",nexist:"\u2204",nexists:"\u2204",Nfr:"\ud835\udd11",nfr:"\ud835\udd2b",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2a7e\u0338",nges:"\u2a7e\u0338",nGg:"\u22d9\u0338",ngsim:"\u2275",nGt:"\u226b\u20d2",ngt:"\u226f",ngtr:"\u226f",nGtv:"\u226b\u0338",nharr:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2a7d\u0338",nles:"\u2a7d\u0338",nless:"\u226e",nLl:"\u22d8\u0338",nlsim:"\u2274",nLt:"\u226a\u20d2",nlt:"\u226e",nltri:"\u22ea",nltrie:"\u22ec",nLtv:"\u226a\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xa0",nopf:"\ud835\udd5f",Nopf:"\u2115",Not:"\u2aec",not:"\xac",NotCongruent:"\u2262",NotCupCap:"\u226d",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226f",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226b\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2a7e\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224e\u0338",NotHumpEqual:"\u224f\u0338",notin:"\u2209",notindot:"\u22f5\u0338",notinE:"\u22f9\u0338",notinva:"\u2209",notinvb:"\u22f7",notinvc:"\u22f6",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",NotLeftTriangleEqual:"\u22ec",NotLess:"\u226e",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226a\u0338",NotLessSlantEqual:"\u2a7d\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2aa2\u0338",NotNestedLessLess:"\u2aa1\u0338",notni:"\u220c",notniva:"\u220c",notnivb:"\u22fe",notnivc:"\u22fd",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2aaf\u0338",NotPrecedesSlantEqual:"\u22e0",NotReverseElement:"\u220c",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",NotRightTriangleEqual:"\u22ed",NotSquareSubset:"\u228f\u0338",NotSquareSubsetEqual:"\u22e2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22e3",NotSubset:"\u2282\u20d2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2ab0\u0338",NotSucceedsSlantEqual:"\u22e1",NotSucceedsTilde:"\u227f\u0338",NotSuperset:"\u2283\u20d2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22e2",nsqsupe:"\u22e3",nsub:"\u2284",nsubE:"\u2ac5\u0338",nsube:"\u2288",nsubset:"\u2282\u20d2",nsubseteq:"\u2288",nsubseteqq:"\u2ac5\u0338",nsucc:"\u2281",nsucceq:"\u2ab0\u0338",nsup:"\u2285",nsupE:"\u2ac6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20d2",nsupseteq:"\u2289",nsupseteqq:"\u2ac6\u0338",ntgl:"\u2279",Ntilde:"\xd1",ntilde:"\xf1",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",nvge:"\u2265\u20d2",nvgt:">\u20d2",nvHarr:"\u2904",nvinfin:"\u29de",nvlArr:"\u2902",nvle:"\u2264\u20d2",nvlt:"<\u20d2",nvltrie:"\u22b4\u20d2",nvrArr:"\u2903",nvrtrie:"\u22b5\u20d2",nvsim:"\u223c\u20d2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",Ograve:"\xd2",ograve:"\xf2",ogt:"\u29c1",ohbar:"\u29b5",ohm:"\u03a9",oint:"\u222e",olarr:"\u21ba",olcir:"\u29be",olcross:"\u29bb",oline:"\u203e",olt:"\u29c0",Omacr:"\u014c",omacr:"\u014d",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",omid:"\u29b6",ominus:"\u2296",Oopf:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298c",rbrksld:"\u298e",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201d",rdquor:"\u201d",rdsh:"\u21b3",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",rsh:"\u21b1",Rsh:"\u21b1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22cc",rtimes:"\u22ca",rtri:"\u25b9",rtrie:"\u22b5",rtrif:"\u25b8",rtriltri:"\u29ce",RuleDelayed:"\u29f4",ruluhar:"\u2968",rx:"\u211e",Sacute:"\u015a",sacute:"\u015b",sbquo:"\u201a",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",sfrown:"\u2322",sharp:"\u266f",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sigmav:"\u03c2",sim:"\u223c",simdot:"\u2a6a",sime:"\u2243",simeq:"\u2243",simg:"\u2a9e",simgE:"\u2aa0",siml:"\u2a9d",simlE:"\u2a9f",simne:"\u2246",simplus:"\u2a24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2a33",smeparsl:"\u29e4",smid:"\u2223",smile:"\u2323",smt:"\u2aaa",smte:"\u2aac",smtes:"\u2aac\ufe00",SOFTcy:"\u042c",softcy:"\u044c",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\ufe00",sqcup:"\u2294",sqcups:"\u2294\ufe00",Sqrt:"\u221a",sqsub:"\u228f",sqsube:"\u2291",sqsubset:"\u228f",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",succcurlyeq:"\u227d",Succeeds:"\u227b",SucceedsEqual:"\u2ab0",SucceedsSlantEqual:"\u227d",SucceedsTilde:"\u227f",succeq:"\u2ab0",succnapprox:"\u2aba",succneqq:"\u2ab6",succnsim:"\u22e9",succsim:"\u227f",SuchThat:"\u220b",sum:"\u2211",Sum:"\u2211",sung:"\u266a",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",supdot:"\u2abe",supdsub:"\u2ad8",supE:"\u2ac6",supe:"\u2287",supedot:"\u2ac4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27c9",suphsub:"\u2ad7",suplarr:"\u297b",supmult:"\u2ac2",supnE:"\u2acc",supne:"\u228b",supplus:"\u2ac0",supset:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:"\t",target:"\u2316",Tau:"\u03a4",tau:"\u03c4",tbrk:"\u23b4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20db",telrec:"\u2315",Tfr:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",topfork:"\u2ada",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25b5",triangledown:"\u25bf",triangleleft:"\u25c3",trianglelefteq:"\u22b4",triangleq:"\u225c",triangleright:"\u25b9",trianglerighteq:"\u22b5",tridot:"\u25ec",trie:"\u225c",triminus:"\u2a3a",TripleDot:"\u20db",triplus:"\u2a39",trisb:"\u29cd",tritime:"\u2a3b",trpezium:"\u23e2",Tscr:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",Ugrave:"\xd9",ugrave:"\xf9",uHar:"\u2963",uharl:"\u21bf",uharr:"\u21be",uhblk:"\u2580",ulcorn:"\u231c",ulcorner:"\u231c",ulcrop:"\u230f",ultri:"\u25f8",Umacr:"\u016a",umacr:"\u016b",uml:"\xa8",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017a",Zcaron:"\u017d",zcaron:"\u017e",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017b",zdot:"\u017c",zeetrf:"\u2128",ZeroWidthSpace:"\u200b",Zeta:"\u0396",zeta:"\u03b6",zfr:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"},t=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,n={};function s(e,r,t){var o,i,a,c,l,u="";for("string"!=typeof r&&(t=r,r=s.defaultChars),void 0===t&&(t=!0),l=function(e){var r,t,s=n[e];if(s)return s;for(s=n[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?s.push(t):s.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r<e.length;r++)s[e.charCodeAt(r)]=e[r];return s}(r),o=0,i=e.length;o<i;o++)if(a=e.charCodeAt(o),t&&37===a&&o+2<i&&/^[0-9a-f]{2}$/i.test(e.slice(o+1,o+3)))u+=e.slice(o,o+3),o+=2;else if(a<128)u+=l[a];else if(a>=55296&&a<=57343){if(a>=55296&&a<=56319&&o+1<i&&(c=e.charCodeAt(o+1))>=56320&&c<=57343){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()";var o=s,i={};function a(e,r){var t;return"string"!=typeof r&&(r=a.defaultChars),t=function(e){var r,t,n=i[e];if(n)return n;for(n=i[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),n.push(t);for(r=0;r<e.length;r++)n[t=e.charCodeAt(r)]="%"+("0"+t.toString(16).toUpperCase()).slice(-2);return n}(r),e.replace(/(%[a-f0-9]{2})+/gi,(function(e){var r,n,s,o,i,a,c,l="";for(r=0,n=e.length;r<n;r+=3)(s=parseInt(e.slice(r+1,r+3),16))<128?l+=t[s]:192==(224&s)&&r+3<n&&128==(192&(o=parseInt(e.slice(r+4,r+6),16)))?(l+=(c=s<<6&1984|63&o)<128?"\ufffd\ufffd":String.fromCharCode(c),r+=3):224==(240&s)&&r+6<n&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),128==(192&o)&&128==(192&i))?(l+=(c=s<<12&61440|o<<6&4032|63&i)<2048||c>=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240==(248&s)&&r+9<n&&(o=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),a=parseInt(e.slice(r+10,r+12),16),128==(192&o)&&128==(192&i)&&128==(192&a))?((c=s<<18&1835008|o<<12&258048|i<<6&4032|63&a)<65536||c>1114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l}))}a.defaultChars=";/?:@&=+$,#",a.componentChars="";var c=a;function l(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var u=/^([a-z0-9.+-]+:)/i,p=/:[0-9]*$/,h=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,f=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(f),m=["%","/","?",";","#"].concat(d),g=["/","?","#"],_=/^[+a-z0-9A-Z_-]{0,63}$/,k=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};l.prototype.parse=function(e,r){var t,n,s,o,i,a=e;if(a=a.trim(),!r&&1===e.split("#").length){var c=h.exec(a);if(c)return this.pathname=c[1],c[2]&&(this.search=c[2]),this}var l=u.exec(a);if(l&&(s=(l=l[0]).toLowerCase(),this.protocol=l,a=a.substr(l.length)),(r||l||a.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(i="//"===a.substr(0,2))||l&&b[l]||(a=a.substr(2),this.slashes=!0)),!b[l]&&(i||l&&!v[l])){var p,f,d=-1;for(t=0;t<g.length;t++)-1!==(o=a.indexOf(g[t]))&&(-1===d||o<d)&&(d=o);for(-1!==(f=-1===d?a.lastIndexOf("@"):a.lastIndexOf("@",d))&&(p=a.slice(0,f),a=a.slice(f+1),this.auth=p),d=-1,t=0;t<m.length;t++)-1!==(o=a.indexOf(m[t]))&&(-1===d||o<d)&&(d=o);-1===d&&(d=a.length),":"===a[d-1]&&d--;var C=a.slice(0,d);a=a.slice(d),this.parseHost(C),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y){var A=this.hostname.split(/\./);for(t=0,n=A.length;t<n;t++){var x=A[t];if(x&&!x.match(_)){for(var D="",w=0,E=x.length;w<E;w++)x.charCodeAt(w)>127?D+="x":D+=x[w];if(!D.match(_)){var q=A.slice(0,t),S=A.slice(t+1),F=x.match(k);F&&(q.push(F[1]),S.unshift(F[2])),S.length&&(a=S.join(".")+a),this.hostname=q.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=a.indexOf("#");-1!==L&&(this.hash=a.substr(L),a=a.slice(0,L));var z=a.indexOf("?");return-1!==z&&(this.search=a.substr(z),a=a.slice(0,z)),a&&(this.pathname=a),v[s]&&this.hostname&&!this.pathname&&(this.pathname=""),this},l.prototype.parseHost=function(e){var r=p.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)};var C={encode:o,decode:c,format:function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?r+="["+e.hostname+"]":r+=e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""},parse:function(e,r){if(e&&e instanceof l)return e;var t=new l;return t.parse(e,r),t}},y=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,A=/[\0-\x1F\x7F-\x9F]/,x=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,D={Any:y,Cc:A,Cf:/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,P:t,Z:x},w=function(e,r,t){return t={path:r,exports:{},require:function(e,r){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==r&&t.path)}},e(t,t.exports),t.exports}((function(e,n){var s=Object.prototype.hasOwnProperty;function o(e,r){return s.call(e,r)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var r=55296+((e-=65536)>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}var c=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(c.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;var p=/[&<>"]/,h=/[&<>"]/g,f={"&":"&","<":"<",">":">",'"':"""};function d(e){return f[e]}var m=/[.?*+^$[\]\\(){}|-]/g;n.lib={},n.lib.mdurl=C,n.lib.ucmicro=D,n.assign=function(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach((function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach((function(t){e[t]=r[t]}))}})),e},n.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},n.has=o,n.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(c,"$1")},n.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,n){return t||function(e,t){var n=0;return o(r,t)?r[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},n.isValidEntityCode=i,n.fromCodePoint=a,n.escapeHtml=function(e){return p.test(e)?e.replace(h,d):e},n.arrayReplaceAt=function(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))},n.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},n.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},n.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},n.isPunctChar=function(e){return t.test(e)},n.escapeRE=function(e){return e.replace(m,"\\$&")},n.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}})),E=w.unescapeAll,q=w.unescapeAll,S=function(e,r,t){var n,s,o=r,i={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;r<t;){if(10===(n=e.charCodeAt(r)))return i;if(60===n)return i;if(62===n)return i.pos=r+1,i.str=E(e.slice(o+1,r)),i.ok=!0,i;92===n&&r+1<t?r+=2:r++}return i}for(s=0;r<t&&32!==(n=e.charCodeAt(r))&&!(n<32||127===n);)if(92===n&&r+1<t){if(32===e.charCodeAt(r+1))break;r+=2}else{if(40===n&&++s>32)return i;if(41===n){if(0===s)break;s--}r++}return o===r||0!==s||(i.str=E(e.slice(o,r)),i.lines=0,i.pos=r,i.ok=!0),i},F=function(e,r,t){var n,s,o=0,i=r,a={ok:!1,pos:0,lines:0,str:""};if(r>=t)return a;if(34!==(s=e.charCodeAt(r))&&39!==s&&40!==s)return a;for(r++,40===s&&(s=41);r<t;){if((n=e.charCodeAt(r))===s)return a.pos=r+1,a.lines=o,a.str=q(e.slice(i+1,r)),a.ok=!0,a;if(40===n&&41===s)return a;10===n?o++:92===n&&r+1<t&&(r++,10===e.charCodeAt(r)&&o++),r++}return a},L={parseLinkLabel:function(e,r,t){var n,s,o,i,a=-1,c=e.posMax,l=e.pos;for(e.pos=r+1,n=1;e.pos<c;){if(93===(o=e.src.charCodeAt(e.pos))&&0===--n){s=!0;break}if(i=e.pos,e.md.inline.skipToken(e),91===o)if(i===e.pos-1)n++;else if(t)return e.pos=l,-1}return s&&(a=e.pos),e.pos=l,a},parseLinkDestination:S,parseLinkTitle:F},z=w.assign,T=w.unescapeAll,I=w.escapeHtml,M={};function R(){this.rules=z({},M)}M.code_inline=function(e,r,t,n,s){var o=e[r];return"<code"+s.renderAttrs(o)+">"+I(e[r].content)+"</code>"},M.code_block=function(e,r,t,n,s){var o=e[r];return"<pre"+s.renderAttrs(o)+"><code>"+I(e[r].content)+"</code></pre>\n"},M.fence=function(e,r,t,n,s){var o,i,a,c,l,u=e[r],p=u.info?T(u.info).trim():"",h="",f="";return p&&(h=(a=p.split(/(\s+)/g))[0],f=a.slice(2).join("")),0===(o=t.highlight&&t.highlight(u.content,h,f)||I(u.content)).indexOf("<pre")?o+"\n":p?(i=u.attrIndex("class"),c=u.attrs?u.attrs.slice():[],i<0?c.push(["class",t.langPrefix+h]):(c[i]=c[i].slice(),c[i][1]+=" "+t.langPrefix+h),l={attrs:c},"<pre><code"+s.renderAttrs(l)+">"+o+"</code></pre>\n"):"<pre><code"+s.renderAttrs(u)+">"+o+"</code></pre>\n"},M.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},M.hardbreak=function(e,r,t){return t.xhtmlOut?"<br />\n":"<br>\n"},M.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"<br />\n":"<br>\n":"\n"},M.text=function(e,r){return I(e[r].content)},M.html_block=function(e,r){return e[r].content},M.html_inline=function(e,r){return e[r].content},R.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;r<t;r++)n+=" "+I(e.attrs[r][0])+'="'+I(e.attrs[r][1])+'"';return n},R.prototype.renderToken=function(e,r,t){var n,s="",o=!1,i=e[r];return i.hidden?"":(i.block&&-1!==i.nesting&&r&&e[r-1].hidden&&(s+="\n"),s+=(-1===i.nesting?"</":"<")+i.tag,s+=this.renderAttrs(i),0===i.nesting&&t.xhtmlOut&&(s+=" /"),i.block&&(o=!0,1===i.nesting&&r+1<e.length&&("inline"===(n=e[r+1]).type||n.hidden||-1===n.nesting&&n.tag===i.tag)&&(o=!1)),s+=o?">\n":">")},R.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;i<a;i++)void 0!==o[n=e[i].type]?s+=o[n](e,i,r,t,this):s+=this.renderToken(e,i,r);return s},R.prototype.renderInlineAsText=function(e,r,t){for(var n="",s=0,o=e.length;s<o;s++)"text"===e[s].type?n+=e[s].content:"image"===e[s].type?n+=this.renderInlineAsText(e[s].children,r,t):"softbreak"===e[s].type&&(n+="\n");return n},R.prototype.render=function(e,r,t){var n,s,o,i="",a=this.rules;for(n=0,s=e.length;n<s;n++)"inline"===(o=e[n].type)?i+=this.renderInline(e[n].children,r,t):void 0!==a[o]?i+=a[e[n].type](e,n,r,t,this):i+=this.renderToken(e,n,r,t);return i};var B=R;function N(){this.__rules__=[],this.__cache__=null}N.prototype.__find__=function(e){for(var r=0;r<this.__rules__.length;r++)if(this.__rules__[r].name===e)return r;return-1},N.prototype.__compile__=function(){var e=this,r=[""];e.__rules__.forEach((function(e){e.enabled&&e.alt.forEach((function(e){r.indexOf(e)<0&&r.push(e)}))})),e.__cache__={},r.forEach((function(r){e.__cache__[r]=[],e.__rules__.forEach((function(t){t.enabled&&(r&&t.alt.indexOf(r)<0||e.__cache__[r].push(t.fn))}))}))},N.prototype.at=function(e,r,t){var n=this.__find__(e),s=t||{};if(-1===n)throw new Error("Parser rule not found: "+e);this.__rules__[n].fn=r,this.__rules__[n].alt=s.alt||[],this.__cache__=null},N.prototype.before=function(e,r,t,n){var s=this.__find__(e),o=n||{};if(-1===s)throw new Error("Parser rule not found: "+e);this.__rules__.splice(s,0,{name:r,enabled:!0,fn:t,alt:o.alt||[]}),this.__cache__=null},N.prototype.after=function(e,r,t,n){var s=this.__find__(e),o=n||{};if(-1===s)throw new Error("Parser rule not found: "+e);this.__rules__.splice(s+1,0,{name:r,enabled:!0,fn:t,alt:o.alt||[]}),this.__cache__=null},N.prototype.push=function(e,r,t){var n=t||{};this.__rules__.push({name:e,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},N.prototype.enable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,t.push(e)}),this),this.__cache__=null,t},N.prototype.enableOnly=function(e,r){Array.isArray(e)||(e=[e]),this.__rules__.forEach((function(e){e.enabled=!1})),this.enable(e,r)},N.prototype.disable=function(e,r){Array.isArray(e)||(e=[e]);var t=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(r)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,t.push(e)}),this),this.__cache__=null,t},N.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]};var O=N,P=/\r\n?|\n/g,j=/\0/g,U=w.arrayReplaceAt;function V(e){return/^<\/a\s*>/i.test(e)}var Z=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,$=/\((c|tm|r)\)/i,G=/\((c|tm|r)\)/gi,H={c:"\xa9",r:"\xae",tm:"\u2122"};function J(e,r){return H[r.toLowerCase()]}function W(e){var r,t,n=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||n||(t.content=t.content.replace(G,J)),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}function Y(e){var r,t,n=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||n||Z.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}var K=w.isWhiteSpace,Q=w.isPunctChar,X=w.isMdAsciiPunct,ee=/['"]/,re=/['"]/g;function te(e,r,t){return e.slice(0,r)+t+e.slice(r+1)}function ne(e,r){var t,n,s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,C,y;for(v=[],t=0;t<e.length;t++){for(n=e[t],c=e[t].level,k=v.length-1;k>=0&&!(v[k].level<=c);k--);if(v.length=k+1,"text"===n.type){i=0,a=(s=n.content).length;e:for(;i<a&&(re.lastIndex=i,o=re.exec(s));){if(g=_=!0,i=o.index+1,b="'"===o[0],u=32,o.index-1>=0)u=s.charCodeAt(o.index-1);else for(k=t-1;k>=0&&("softbreak"!==e[k].type&&"hardbreak"!==e[k].type);k--)if(e[k].content){u=e[k].content.charCodeAt(e[k].content.length-1);break}if(p=32,i<a)p=s.charCodeAt(i);else for(k=t+1;k<e.length&&("softbreak"!==e[k].type&&"hardbreak"!==e[k].type);k++)if(e[k].content){p=e[k].content.charCodeAt(0);break}if(h=X(u)||Q(String.fromCharCode(u)),f=X(p)||Q(String.fromCharCode(p)),d=K(u),(m=K(p))?g=!1:f&&(d||h||(g=!1)),d?_=!1:h&&(m||f||(_=!1)),34===p&&'"'===o[0]&&u>=48&&u<=57&&(_=g=!1),g&&_&&(g=h,_=f),g||_){if(_)for(k=v.length-1;k>=0&&(l=v[k],!(v[k].level<c));k--)if(l.single===b&&v[k].level===c){l=v[k],b?(C=r.md.options.quotes[2],y=r.md.options.quotes[3]):(C=r.md.options.quotes[0],y=r.md.options.quotes[1]),n.content=te(n.content,o.index,y),e[l.token].content=te(e[l.token].content,l.pos,C),i+=y.length-1,l.token===t&&(i+=C.length-1),a=(s=n.content).length,v.length=k;continue e}g?v.push({token:t,pos:o.index,single:b,level:c}):_&&b&&(n.content=te(n.content,o.index,"\u2019"))}else b&&(n.content=te(n.content,o.index,"\u2019"))}}}}function se(e,r,t){this.type=e,this.tag=r,this.attrs=null,this.map=null,this.nesting=t,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}se.prototype.attrIndex=function(e){var r,t,n;if(!this.attrs)return-1;for(t=0,n=(r=this.attrs).length;t<n;t++)if(r[t][0]===e)return t;return-1},se.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},se.prototype.attrSet=function(e,r){var t=this.attrIndex(e),n=[e,r];t<0?this.attrPush(n):this.attrs[t]=n},se.prototype.attrGet=function(e){var r=this.attrIndex(e),t=null;return r>=0&&(t=this.attrs[r][1]),t},se.prototype.attrJoin=function(e,r){var t=this.attrIndex(e);t<0?this.attrPush([e,r]):this.attrs[t][1]=this.attrs[t][1]+" "+r};var oe=se;function ie(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}ie.prototype.Token=oe;var ae=ie,ce=[["normalize",function(e){var r;r=(r=e.src.replace(P,"\n")).replace(j,"\ufffd"),e.src=r}],["block",function(e){var r;e.inlineMode?((r=new e.Token("inline","",0)).content=e.src,r.map=[0,1],r.children=[],e.tokens.push(r)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}],["inline",function(e){var r,t,n,s=e.tokens;for(t=0,n=s.length;t<n;t++)"inline"===(r=s[t]).type&&e.md.inline.parse(r.content,e.md,e.env,r.children)}],["linkify",function(e){var r,t,n,s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b=e.tokens;if(e.md.options.linkify)for(t=0,n=b.length;t<n;t++)if("inline"===b[t].type&&e.md.linkify.pretest(b[t].content))for(f=0,r=(s=b[t].children).length-1;r>=0;r--)if("link_close"!==(i=s[r]).type){if("html_inline"===i.type&&(k=i.content,/^<a[>\s]/i.test(k)&&f>0&&f--,V(i.content)&&f++),!(f>0)&&"text"===i.type&&e.md.linkify.test(i.content)){for(l=i.content,_=e.md.linkify.match(l),a=[],h=i.level,p=0,_.length>0&&0===_[0].index&&r>0&&"text_special"===s[r-1].type&&(_=_.slice(1)),c=0;c<_.length;c++)d=_[c].url,m=e.md.normalizeLink(d),e.md.validateLink(m)&&(g=_[c].text,g=_[c].schema?"mailto:"!==_[c].schema||/^mailto:/i.test(g)?e.md.normalizeLinkText(g):e.md.normalizeLinkText("mailto:"+g).replace(/^mailto:/,""):e.md.normalizeLinkText("http://"+g).replace(/^http:\/\//,""),(u=_[c].index)>p&&((o=new e.Token("text","",0)).content=l.slice(p,u),o.level=h,a.push(o)),(o=new e.Token("link_open","a",1)).attrs=[["href",m]],o.level=h++,o.markup="linkify",o.info="auto",a.push(o),(o=new e.Token("text","",0)).content=g,o.level=h,a.push(o),(o=new e.Token("link_close","a",-1)).level=--h,o.markup="linkify",o.info="auto",a.push(o),p=_[c].lastIndex);p<l.length&&((o=new e.Token("text","",0)).content=l.slice(p),o.level=h,a.push(o)),b[t].children=s=U(s,r,a)}}else for(r--;s[r].level!==i.level&&"link_open"!==s[r].type;)r--}],["replacements",function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&($.test(e.tokens[r].content)&&W(e.tokens[r].children),Z.test(e.tokens[r].content)&&Y(e.tokens[r].children))}],["smartquotes",function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&ee.test(e.tokens[r].content)&&ne(e.tokens[r].children,e)}],["text_join",function(e){var r,t,n,s,o,i,a=e.tokens;for(r=0,t=a.length;r<t;r++)if("inline"===a[r].type){for(o=(n=a[r].children).length,s=0;s<o;s++)"text_special"===n[s].type&&(n[s].type="text");for(s=i=0;s<o;s++)"text"===n[s].type&&s+1<o&&"text"===n[s+1].type?n[s+1].content=n[s].content+n[s+1].content:(s!==i&&(n[i]=n[s]),i++);s!==i&&(n.length=i)}}]];function le(){this.ruler=new O;for(var e=0;e<ce.length;e++)this.ruler.push(ce[e][0],ce[e][1])}le.prototype.process=function(e){var r,t,n;for(r=0,t=(n=this.ruler.getRules("")).length;r<t;r++)n[r](e)},le.prototype.State=ae;var ue=le,pe=w.isSpace;function he(e,r){var t=e.bMarks[r]+e.tShift[r],n=e.eMarks[r];return e.src.slice(t,n)}function fe(e){var r,t=[],n=0,s=e.length,o=!1,i=0,a="";for(r=e.charCodeAt(n);n<s;)124===r&&(o?(a+=e.substring(i,n-1),i=n):(t.push(a+e.substring(i,n)),a="",i=n+1)),o=92===r,n++,r=e.charCodeAt(n);return t.push(a+e.substring(i)),t}var de=w.isSpace,me=w.isSpace,ge=w.isSpace;function _e(e,r){var t,n,s,o;return n=e.bMarks[r]+e.tShift[r],s=e.eMarks[r],42!==(t=e.src.charCodeAt(n++))&&45!==t&&43!==t||n<s&&(o=e.src.charCodeAt(n),!ge(o))?-1:n}function ke(e,r){var t,n=e.bMarks[r]+e.tShift[r],s=n,o=e.eMarks[r];if(s+1>=o)return-1;if((t=e.src.charCodeAt(s++))<48||t>57)return-1;for(;;){if(s>=o)return-1;if(!((t=e.src.charCodeAt(s++))>=48&&t<=57)){if(41===t||46===t)break;return-1}if(s-n>=10)return-1}return s<o&&(t=e.src.charCodeAt(s),!ge(t))?-1:s}var be=w.normalizeReference,ve=w.isSpace,Ce="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",ye="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",Ae={HTML_TAG_RE:new RegExp("^(?:"+Ce+"|"+ye+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?][\\s\\S]*?[?]>|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),HTML_OPEN_CLOSE_TAG_RE:new RegExp("^(?:"+Ce+"|"+ye+")")},xe=Ae.HTML_OPEN_CLOSE_TAG_RE,De=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"].join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(xe.source+"\\s*$"),/^$/,!1]],we=w.isSpace,Ee=w.isSpace;function qe(e,r,t,n){var s,o,i,a,c,l,u,p;for(this.src=e,this.md=r,this.env=t,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",p=!1,i=a=l=u=0,c=(o=this.src).length;a<c;a++){if(s=o.charCodeAt(a),!p){if(Ee(s)){l++,9===s?u+=4-u%4:u++;continue}p=!0}10!==s&&a!==c-1||(10!==s&&a++,this.bMarks.push(i),this.eMarks.push(a),this.tShift.push(l),this.sCount.push(u),this.bsCount.push(0),p=!1,l=0,u=0,i=a+1)}this.bMarks.push(o.length),this.eMarks.push(o.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}qe.prototype.push=function(e,r,t){var n=new oe(e,r,t);return n.block=!0,t<0&&this.level--,n.level=this.level,t>0&&this.level++,this.tokens.push(n),n},qe.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},qe.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;e<r&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},qe.prototype.skipSpaces=function(e){for(var r,t=this.src.length;e<t&&(r=this.src.charCodeAt(e),Ee(r));e++);return e},qe.prototype.skipSpacesBack=function(e,r){if(e<=r)return e;for(;e>r;)if(!Ee(this.src.charCodeAt(--e)))return e+1;return e},qe.prototype.skipChars=function(e,r){for(var t=this.src.length;e<t&&this.src.charCodeAt(e)===r;e++);return e},qe.prototype.skipCharsBack=function(e,r,t){if(e<=t)return e;for(;e>t;)if(r!==this.src.charCodeAt(--e))return e+1;return e},qe.prototype.getLines=function(e,r,t,n){var s,o,i,a,c,l,u,p=e;if(e>=r)return"";for(l=new Array(r-e),s=0;p<r;p++,s++){for(o=0,u=a=this.bMarks[p],c=p+1<r||n?this.eMarks[p]+1:this.eMarks[p];a<c&&o<t;){if(i=this.src.charCodeAt(a),Ee(i))9===i?o+=4-(o+this.bsCount[p])%4:o++;else{if(!(a-u<this.tShift[p]))break;o++}a++}l[s]=o>t?new Array(o-t+1).join(" ")+this.src.slice(a,c):this.src.slice(a,c)}return l.join("")},qe.prototype.Token=oe;var Se=qe,Fe=[["table",function(e,r,t,n){var s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,C;if(r+2>t)return!1;if(l=r+1,e.sCount[l]<e.blkIndent)return!1;if(e.sCount[l]-e.blkIndent>=4)return!1;if((i=e.bMarks[l]+e.tShift[l])>=e.eMarks[l])return!1;if(124!==(v=e.src.charCodeAt(i++))&&45!==v&&58!==v)return!1;if(i>=e.eMarks[l])return!1;if(124!==(C=e.src.charCodeAt(i++))&&45!==C&&58!==C&&!pe(C))return!1;if(45===v&&pe(C))return!1;for(;i<e.eMarks[l];){if(124!==(s=e.src.charCodeAt(i))&&45!==s&&58!==s&&!pe(s))return!1;i++}for(u=(o=he(e,r+1)).split("|"),f=[],a=0;a<u.length;a++){if(!(d=u[a].trim())){if(0===a||a===u.length-1)continue;return!1}if(!/^:?-+:?$/.test(d))return!1;58===d.charCodeAt(d.length-1)?f.push(58===d.charCodeAt(0)?"center":"right"):58===d.charCodeAt(0)?f.push("left"):f.push("")}if(-1===(o=he(e,r).trim()).indexOf("|"))return!1;if(e.sCount[r]-e.blkIndent>=4)return!1;if((u=fe(o)).length&&""===u[0]&&u.shift(),u.length&&""===u[u.length-1]&&u.pop(),0===(p=u.length)||p!==f.length)return!1;if(n)return!0;for(_=e.parentType,e.parentType="table",b=e.md.block.ruler.getRules("blockquote"),(h=e.push("table_open","table",1)).map=m=[r,0],(h=e.push("thead_open","thead",1)).map=[r,r+1],(h=e.push("tr_open","tr",1)).map=[r,r+1],a=0;a<u.length;a++)h=e.push("th_open","th",1),f[a]&&(h.attrs=[["style","text-align:"+f[a]]]),(h=e.push("inline","",0)).content=u[a].trim(),h.children=[],h=e.push("th_close","th",-1);for(h=e.push("tr_close","tr",-1),h=e.push("thead_close","thead",-1),l=r+2;l<t&&!(e.sCount[l]<e.blkIndent);l++){for(k=!1,a=0,c=b.length;a<c;a++)if(b[a](e,l,t,!0)){k=!0;break}if(k)break;if(!(o=he(e,l).trim()))break;if(e.sCount[l]-e.blkIndent>=4)break;for((u=fe(o)).length&&""===u[0]&&u.shift(),u.length&&""===u[u.length-1]&&u.pop(),l===r+2&&((h=e.push("tbody_open","tbody",1)).map=g=[r+2,0]),(h=e.push("tr_open","tr",1)).map=[l,l+1],a=0;a<p;a++)h=e.push("td_open","td",1),f[a]&&(h.attrs=[["style","text-align:"+f[a]]]),(h=e.push("inline","",0)).content=u[a]?u[a].trim():"",h.children=[],h=e.push("td_close","td",-1);h=e.push("tr_close","tr",-1)}return g&&(h=e.push("tbody_close","tbody",-1),g[1]=l),h=e.push("table_close","table",-1),m[1]=l,e.parentType=_,e.line=l,!0},["paragraph","reference"]],["code",function(e,r,t){var n,s,o;if(e.sCount[r]-e.blkIndent<4)return!1;for(s=n=r+1;n<t;)if(e.isEmpty(n))n++;else{if(!(e.sCount[n]-e.blkIndent>=4))break;s=++n}return e.line=s,(o=e.push("code_block","code",0)).content=e.getLines(r,s,4+e.blkIndent,!1)+"\n",o.map=[r,e.line],!0}],["fence",function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(h+3>f)return!1;if(126!==(s=e.src.charCodeAt(h))&&96!==s)return!1;if(c=h,(o=(h=e.skipChars(h,s))-c)<3)return!1;if(u=e.src.slice(c,h),i=e.src.slice(h,f),96===s&&i.indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;for(a=r;!(++a>=t)&&!((h=c=e.bMarks[a]+e.tShift[a])<(f=e.eMarks[a])&&e.sCount[a]<e.blkIndent);)if(e.src.charCodeAt(h)===s&&!(e.sCount[a]-e.blkIndent>=4||(h=e.skipChars(h,s))-c<o||(h=e.skipSpaces(h))<f)){p=!0;break}return o=e.sCount[r],e.line=a+(p?1:0),(l=e.push("fence","code",0)).info=i,l.content=e.getLines(r+1,a,o,!0),l.markup=u,l.map=[r,e.line],!0},["paragraph","reference","blockquote","list"]],["blockquote",function(e,r,t,n){var s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,C,y,A,x=e.lineMax,D=e.bMarks[r]+e.tShift[r],w=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(D++))return!1;if(n)return!0;for(a=h=e.sCount[r]+1,32===e.src.charCodeAt(D)?(D++,a++,h++,s=!1,b=!0):9===e.src.charCodeAt(D)?(b=!0,(e.bsCount[r]+h)%4==3?(D++,a++,h++,s=!1):s=!0):b=!1,f=[e.bMarks[r]],e.bMarks[r]=D;D<w&&(o=e.src.charCodeAt(D),de(o));)9===o?h+=4-(h+e.bsCount[r]+(s?1:0))%4:h++,D++;for(d=[e.bsCount[r]],e.bsCount[r]=e.sCount[r]+1+(b?1:0),l=D>=w,_=[e.sCount[r]],e.sCount[r]=h-a,k=[e.tShift[r]],e.tShift[r]=D-e.bMarks[r],C=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",p=r+1;p<t&&(A=e.sCount[p]<e.blkIndent,!((D=e.bMarks[p]+e.tShift[p])>=(w=e.eMarks[p])));p++)if(62!==e.src.charCodeAt(D++)||A){if(l)break;for(v=!1,i=0,c=C.length;i<c;i++)if(C[i](e,p,t,!0)){v=!0;break}if(v){e.lineMax=p,0!==e.blkIndent&&(f.push(e.bMarks[p]),d.push(e.bsCount[p]),k.push(e.tShift[p]),_.push(e.sCount[p]),e.sCount[p]-=e.blkIndent);break}f.push(e.bMarks[p]),d.push(e.bsCount[p]),k.push(e.tShift[p]),_.push(e.sCount[p]),e.sCount[p]=-1}else{for(a=h=e.sCount[p]+1,32===e.src.charCodeAt(D)?(D++,a++,h++,s=!1,b=!0):9===e.src.charCodeAt(D)?(b=!0,(e.bsCount[p]+h)%4==3?(D++,a++,h++,s=!1):s=!0):b=!1,f.push(e.bMarks[p]),e.bMarks[p]=D;D<w&&(o=e.src.charCodeAt(D),de(o));)9===o?h+=4-(h+e.bsCount[p]+(s?1:0))%4:h++,D++;l=D>=w,d.push(e.bsCount[p]),e.bsCount[p]=e.sCount[p]+1+(b?1:0),_.push(e.sCount[p]),e.sCount[p]=h-a,k.push(e.tShift[p]),e.tShift[p]=D-e.bMarks[p]}for(m=e.blkIndent,e.blkIndent=0,(y=e.push("blockquote_open","blockquote",1)).markup=">",y.map=u=[r,0],e.md.block.tokenize(e,r,p),(y=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=x,e.parentType=g,u[1]=e.line,i=0;i<k.length;i++)e.bMarks[i+r]=f[i],e.tShift[i+r]=k[i],e.sCount[i+r]=_[i],e.bsCount[i+r]=d[i];return e.blkIndent=m,!0},["paragraph","reference","blockquote","list"]],["hr",function(e,r,t,n){var s,o,i,a,c=e.bMarks[r]+e.tShift[r],l=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(42!==(s=e.src.charCodeAt(c++))&&45!==s&&95!==s)return!1;for(o=1;c<l;){if((i=e.src.charCodeAt(c++))!==s&&!me(i))return!1;i===s&&o++}return!(o<3)&&(n||(e.line=r+1,(a=e.push("hr","hr",0)).map=[r,e.line],a.markup=Array(o+1).join(String.fromCharCode(s))),!0)},["paragraph","reference","blockquote","list"]],["list",function(e,r,t,n){var s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v,C,y,A,x,D,w,E,q,S,F,L,z=!1,T=!0;if(e.sCount[r]-e.blkIndent>=4)return!1;if(e.listIndent>=0&&e.sCount[r]-e.listIndent>=4&&e.sCount[r]<e.blkIndent)return!1;if(n&&"paragraph"===e.parentType&&e.sCount[r]>=e.blkIndent&&(z=!0),(w=ke(e,r))>=0){if(u=!0,q=e.bMarks[r]+e.tShift[r],g=Number(e.src.slice(q,w-1)),z&&1!==g)return!1}else{if(!((w=_e(e,r))>=0))return!1;u=!1}if(z&&e.skipSpaces(w)>=e.eMarks[r])return!1;if(m=e.src.charCodeAt(w-1),n)return!0;for(d=e.tokens.length,u?(L=e.push("ordered_list_open","ol",1),1!==g&&(L.attrs=[["start",g]])):L=e.push("bullet_list_open","ul",1),L.map=f=[r,0],L.markup=String.fromCharCode(m),k=r,E=!1,F=e.md.block.ruler.getRules("list"),C=e.parentType,e.parentType="list";k<t;){for(D=w,_=e.eMarks[k],l=b=e.sCount[k]+w-(e.bMarks[r]+e.tShift[r]);D<_;){if(9===(s=e.src.charCodeAt(D)))b+=4-(b+e.bsCount[k])%4;else{if(32!==s)break;b++}D++}if((c=(o=D)>=_?1:b-l)>4&&(c=1),a=l+c,(L=e.push("list_item_open","li",1)).markup=String.fromCharCode(m),L.map=p=[r,0],u&&(L.info=e.src.slice(q,w-1)),x=e.tight,A=e.tShift[r],y=e.sCount[r],v=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=a,e.tight=!0,e.tShift[r]=o-e.bMarks[r],e.sCount[r]=b,o>=_&&e.isEmpty(r+1)?e.line=Math.min(e.line+2,t):e.md.block.tokenize(e,r,t,!0),e.tight&&!E||(T=!1),E=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=v,e.tShift[r]=A,e.sCount[r]=y,e.tight=x,(L=e.push("list_item_close","li",-1)).markup=String.fromCharCode(m),k=r=e.line,p[1]=k,o=e.bMarks[r],k>=t)break;if(e.sCount[k]<e.blkIndent)break;if(e.sCount[r]-e.blkIndent>=4)break;for(S=!1,i=0,h=F.length;i<h;i++)if(F[i](e,k,t,!0)){S=!0;break}if(S)break;if(u){if((w=ke(e,k))<0)break;q=e.bMarks[k]+e.tShift[k]}else if((w=_e(e,k))<0)break;if(m!==e.src.charCodeAt(w-1))break}return(L=u?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1)).markup=String.fromCharCode(m),f[1]=k,e.line=k,e.parentType=C,T&&function(e,r){var t,n,s=e.level+2;for(t=r+2,n=e.tokens.length-2;t<n;t++)e.tokens[t].level===s&&"paragraph_open"===e.tokens[t].type&&(e.tokens[t+2].hidden=!0,e.tokens[t].hidden=!0,t+=2)}(e,d),!0},["paragraph","reference","blockquote"]],["reference",function(e,r,t,n){var s,o,i,a,c,l,u,p,h,f,d,m,g,_,k,b,v=0,C=e.bMarks[r]+e.tShift[r],y=e.eMarks[r],A=r+1;if(e.sCount[r]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(C))return!1;for(;++C<y;)if(93===e.src.charCodeAt(C)&&92!==e.src.charCodeAt(C-1)){if(C+1===y)return!1;if(58!==e.src.charCodeAt(C+1))return!1;break}for(a=e.lineMax,k=e.md.block.ruler.getRules("reference"),f=e.parentType,e.parentType="reference";A<a&&!e.isEmpty(A);A++)if(!(e.sCount[A]-e.blkIndent>3||e.sCount[A]<0)){for(_=!1,l=0,u=k.length;l<u;l++)if(k[l](e,A,a,!0)){_=!0;break}if(_)break}for(y=(g=e.getLines(r,A,e.blkIndent,!1).trim()).length,C=1;C<y;C++){if(91===(s=g.charCodeAt(C)))return!1;if(93===s){h=C;break}(10===s||92===s&&++C<y&&10===g.charCodeAt(C))&&v++}if(h<0||58!==g.charCodeAt(h+1))return!1;for(C=h+2;C<y;C++)if(10===(s=g.charCodeAt(C)))v++;else if(!ve(s))break;if(!(d=e.md.helpers.parseLinkDestination(g,C,y)).ok)return!1;if(c=e.md.normalizeLink(d.str),!e.md.validateLink(c))return!1;for(o=C=d.pos,i=v+=d.lines,m=C;C<y;C++)if(10===(s=g.charCodeAt(C)))v++;else if(!ve(s))break;for(d=e.md.helpers.parseLinkTitle(g,C,y),C<y&&m!==C&&d.ok?(b=d.str,C=d.pos,v+=d.lines):(b="",C=o,v=i);C<y&&(s=g.charCodeAt(C),ve(s));)C++;if(C<y&&10!==g.charCodeAt(C)&&b)for(b="",C=o,v=i;C<y&&(s=g.charCodeAt(C),ve(s));)C++;return!(C<y&&10!==g.charCodeAt(C))&&(!!(p=be(g.slice(1,h)))&&(n||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[p]&&(e.env.references[p]={title:b,href:c}),e.parentType=f,e.line=r+v+1),!0))}],["html_block",function(e,r,t,n){var s,o,i,a,c=e.bMarks[r]+e.tShift[r],l=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(c))return!1;for(a=e.src.slice(c,l),s=0;s<De.length&&!De[s][0].test(a);s++);if(s===De.length)return!1;if(n)return De[s][2];if(o=r+1,!De[s][1].test(a))for(;o<t&&!(e.sCount[o]<e.blkIndent);o++)if(c=e.bMarks[o]+e.tShift[o],l=e.eMarks[o],a=e.src.slice(c,l),De[s][1].test(a)){0!==a.length&&o++;break}return e.line=o,(i=e.push("html_block","",0)).map=[r,o],i.content=e.getLines(r,o,e.blkIndent,!0),!0},["paragraph","reference","blockquote"]],["heading",function(e,r,t,n){var s,o,i,a,c=e.bMarks[r]+e.tShift[r],l=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(35!==(s=e.src.charCodeAt(c))||c>=l)return!1;for(o=1,s=e.src.charCodeAt(++c);35===s&&c<l&&o<=6;)o++,s=e.src.charCodeAt(++c);return!(o>6||c<l&&!we(s))&&(n||(l=e.skipSpacesBack(l,c),(i=e.skipCharsBack(l,35,c))>c&&we(e.src.charCodeAt(i-1))&&(l=i),e.line=r+1,(a=e.push("heading_open","h"+String(o),1)).markup="########".slice(0,o),a.map=[r,e.line],(a=e.push("inline","",0)).content=e.src.slice(c,l).trim(),a.map=[r,e.line],a.children=[],(a=e.push("heading_close","h"+String(o),-1)).markup="########".slice(0,o)),!0)},["paragraph","reference","blockquote"]],["lheading",function(e,r,t){var n,s,o,i,a,c,l,u,p,h,f=r+1,d=e.md.block.ruler.getRules("paragraph");if(e.sCount[r]-e.blkIndent>=4)return!1;for(h=e.parentType,e.parentType="paragraph";f<t&&!e.isEmpty(f);f++)if(!(e.sCount[f]-e.blkIndent>3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f])<(l=e.eMarks[f])&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=l)){u=61===p?1:2;break}if(!(e.sCount[f]<0)){for(s=!1,o=0,i=d.length;o<i;o++)if(d[o](e,f,t,!0)){s=!0;break}if(s)break}}return!!u&&(n=e.getLines(r,f,e.blkIndent,!1).trim(),e.line=f+1,(a=e.push("heading_open","h"+String(u),1)).markup=String.fromCharCode(p),a.map=[r,e.line],(a=e.push("inline","",0)).content=n,a.map=[r,e.line-1],a.children=[],(a=e.push("heading_close","h"+String(u),-1)).markup=String.fromCharCode(p),e.parentType=h,!0)}],["paragraph",function(e,r){var t,n,s,o,i,a,c=r+1,l=e.md.block.ruler.getRules("paragraph"),u=e.lineMax;for(a=e.parentType,e.parentType="paragraph";c<u&&!e.isEmpty(c);c++)if(!(e.sCount[c]-e.blkIndent>3||e.sCount[c]<0)){for(n=!1,s=0,o=l.length;s<o;s++)if(l[s](e,c,u,!0)){n=!0;break}if(n)break}return t=e.getLines(r,c,e.blkIndent,!1).trim(),e.line=c,(i=e.push("paragraph_open","p",1)).map=[r,e.line],(i=e.push("inline","",0)).content=t,i.map=[r,e.line],i.children=[],i=e.push("paragraph_close","p",-1),e.parentType=a,!0}]];function Le(){this.ruler=new O;for(var e=0;e<Fe.length;e++)this.ruler.push(Fe[e][0],Fe[e][1],{alt:(Fe[e][2]||[]).slice()})}Le.prototype.tokenize=function(e,r,t){for(var n,s=this.ruler.getRules(""),o=s.length,i=r,a=!1,c=e.md.options.maxNesting;i<t&&(e.line=i=e.skipEmptyLines(i),!(i>=t))&&!(e.sCount[i]<e.blkIndent);){if(e.level>=c){e.line=t;break}for(n=0;n<o&&!s[n](e,i,t,!1);n++);e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),(i=e.line)<t&&e.isEmpty(i)&&(a=!0,i++,e.line=i)}},Le.prototype.parse=function(e,r,t,n){var s;e&&(s=new this.State(e,r,t,n),this.tokenize(s,s.line,s.lineMax))},Le.prototype.State=Se;var ze=Le;function Te(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}for(var Ie=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i,Me=w.isSpace,Re=w.isSpace,Be=[],Ne=0;Ne<256;Ne++)Be.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){Be[e.charCodeAt(0)]=1}));function Oe(e,r){var t,n,s,o,i,a=[],c=r.length;for(t=0;t<c;t++)126===(s=r[t]).marker&&-1!==s.end&&(o=r[s.end],(i=e.tokens[s.token]).type="s_open",i.tag="s",i.nesting=1,i.markup="~~",i.content="",(i=e.tokens[o.token]).type="s_close",i.tag="s",i.nesting=-1,i.markup="~~",i.content="","text"===e.tokens[o.token-1].type&&"~"===e.tokens[o.token-1].content&&a.push(o.token-1));for(;a.length;){for(n=(t=a.pop())+1;n<e.tokens.length&&"s_close"===e.tokens[n].type;)n++;t!==--n&&(i=e.tokens[n],e.tokens[n]=e.tokens[t],e.tokens[t]=i)}}var Pe={tokenize:function(e,r){var t,n,s,o,i=e.pos,a=e.src.charCodeAt(i);if(r)return!1;if(126!==a)return!1;if(s=(n=e.scanDelims(e.pos,!0)).length,o=String.fromCharCode(a),s<2)return!1;for(s%2&&(e.push("text","",0).content=o,s--),t=0;t<s;t+=2)e.push("text","",0).content=o+o,e.delimiters.push({marker:a,length:0,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},postProcess:function(e){var r,t=e.tokens_meta,n=e.tokens_meta.length;for(Oe(e,e.delimiters),r=0;r<n;r++)t[r]&&t[r].delimiters&&Oe(e,t[r].delimiters)}};function je(e,r){var t,n,s,o,i,a;for(t=r.length-1;t>=0;t--)95!==(n=r[t]).marker&&42!==n.marker||-1!==n.end&&(s=r[n.end],a=t>0&&r[t-1].end===n.end+1&&r[t-1].marker===n.marker&&r[t-1].token===n.token-1&&r[n.end+1].token===s.token+1,i=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=a?"strong_open":"em_open",o.tag=a?"strong":"em",o.nesting=1,o.markup=a?i+i:i,o.content="",(o=e.tokens[s.token]).type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?i+i:i,o.content="",a&&(e.tokens[r[t-1].token].content="",e.tokens[r[n.end+1].token].content="",t--))}var Ue={tokenize:function(e,r){var t,n,s=e.pos,o=e.src.charCodeAt(s);if(r)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),t=0;t<n.length;t++)e.push("text","",0).content=String.fromCharCode(o),e.delimiters.push({marker:o,length:n.length,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},postProcess:function(e){var r,t=e.tokens_meta,n=e.tokens_meta.length;for(je(e,e.delimiters),r=0;r<n;r++)t[r]&&t[r].delimiters&&je(e,t[r].delimiters)}},Ve=w.normalizeReference,Ze=w.isSpace,$e=w.normalizeReference,Ge=w.isSpace,He=/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,Je=/^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/,We=Ae.HTML_TAG_RE;var Ye=w.has,Ke=w.isValidEntityCode,Qe=w.fromCodePoint,Xe=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,er=/^&([a-z][a-z0-9]{1,31});/i;function rr(e,r){var t,n,s,o,i,a,c,l,u={},p=r.length;if(p){var h=0,f=-2,d=[];for(t=0;t<p;t++)if(s=r[t],d.push(0),r[h].marker===s.marker&&f===s.token-1||(h=t),f=s.token,s.length=s.length||0,s.close){for(u.hasOwnProperty(s.marker)||(u[s.marker]=[-1,-1,-1,-1,-1,-1]),i=u[s.marker][(s.open?3:0)+s.length%3],a=n=h-d[h]-1;n>i;n-=d[n]+1)if((o=r[n]).marker===s.marker&&o.open&&o.end<0&&(c=!1,(o.close||s.open)&&(o.length+s.length)%3==0&&(o.length%3==0&&s.length%3==0||(c=!0)),!c)){l=n>0&&!r[n-1].open?d[n-1]+1:0,d[t]=t-n+l,d[n]=l,s.open=!1,o.end=t,o.close=!1,a=-1,f=-2;break}-1!==a&&(u[s.marker][(s.open?3:0)+(s.length||0)%3]=a)}}}var tr=w.isWhiteSpace,nr=w.isPunctChar,sr=w.isMdAsciiPunct;function or(e,r,t,n){this.src=e,this.env=t,this.md=r,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1,this.linkLevel=0}or.prototype.pushPending=function(){var e=new oe("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},or.prototype.push=function(e,r,t){this.pending&&this.pushPending();var n=new oe(e,r,t),s=null;return t<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,t>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],s={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(s),n},or.prototype.scanDelims=function(e,r){var t,n,s,o,i,a,c,l,u,p=e,h=!0,f=!0,d=this.posMax,m=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;p<d&&this.src.charCodeAt(p)===m;)p++;return s=p-e,n=p<d?this.src.charCodeAt(p):32,c=sr(t)||nr(String.fromCharCode(t)),u=sr(n)||nr(String.fromCharCode(n)),a=tr(t),(l=tr(n))?h=!1:u&&(a||c||(h=!1)),a?f=!1:c&&(l||u||(f=!1)),r?(o=h,i=f):(o=h&&(!f||c),i=f&&(!h||u)),{can_open:o,can_close:i,length:s}},or.prototype.Token=oe;var ir=or,ar=[["text",function(e,r){for(var t=e.pos;t<e.posMax&&!Te(e.src.charCodeAt(t));)t++;return t!==e.pos&&(r||(e.pending+=e.src.slice(e.pos,t)),e.pos=t,!0)}],["linkify",function(e,r){var t,n,s,o,i,a,c;return!!e.md.options.linkify&&(!(e.linkLevel>0)&&(!((t=e.pos)+3>e.posMax)&&(58===e.src.charCodeAt(t)&&(47===e.src.charCodeAt(t+1)&&(47===e.src.charCodeAt(t+2)&&(!!(n=e.pending.match(Ie))&&(s=n[1],!!(o=e.md.linkify.matchAtStart(e.src.slice(t-s.length)))&&(i=(i=o.url).replace(/\*+$/,""),a=e.md.normalizeLink(i),!!e.md.validateLink(a)&&(r||(e.pending=e.pending.slice(0,-s.length),(c=e.push("link_open","a",1)).attrs=[["href",a]],c.markup="linkify",c.info="auto",(c=e.push("text","",0)).content=e.md.normalizeLinkText(i),(c=e.push("link_close","a",-1)).markup="linkify",c.info="auto"),e.pos+=i.length-s.length,!0)))))))))}],["newline",function(e,r){var t,n,s,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;if(t=e.pending.length-1,n=e.posMax,!r)if(t>=0&&32===e.pending.charCodeAt(t))if(t>=1&&32===e.pending.charCodeAt(t-1)){for(s=t-1;s>=1&&32===e.pending.charCodeAt(s-1);)s--;e.pending=e.pending.slice(0,s),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(o++;o<n&&Me(e.src.charCodeAt(o));)o++;return e.pos=o,!0}],["escape",function(e,r){var t,n,s,o,i,a=e.pos,c=e.posMax;if(92!==e.src.charCodeAt(a))return!1;if(++a>=c)return!1;if(10===(t=e.src.charCodeAt(a))){for(r||e.push("hardbreak","br",0),a++;a<c&&(t=e.src.charCodeAt(a),Re(t));)a++;return e.pos=a,!0}return o=e.src[a],t>=55296&&t<=56319&&a+1<c&&(n=e.src.charCodeAt(a+1))>=56320&&n<=57343&&(o+=e.src[a+1],a++),s="\\"+o,r||(i=e.push("text_special","",0),t<256&&0!==Be[t]?i.content=o:i.content=s,i.markup=s,i.info="escape"),e.pos=a+1,!0}],["backticks",function(e,r){var t,n,s,o,i,a,c,l,u=e.pos;if(96!==e.src.charCodeAt(u))return!1;for(t=u,u++,n=e.posMax;u<n&&96===e.src.charCodeAt(u);)u++;if(c=(s=e.src.slice(t,u)).length,e.backticksScanned&&(e.backticks[c]||0)<=t)return r||(e.pending+=s),e.pos+=c,!0;for(i=a=u;-1!==(i=e.src.indexOf("`",a));){for(a=i+1;a<n&&96===e.src.charCodeAt(a);)a++;if((l=a-i)===c)return r||((o=e.push("code_inline","code",0)).markup=s,o.content=e.src.slice(u,i).replace(/\n/g," ").replace(/^ (.+) $/,"$1")),e.pos=a,!0;e.backticks[l]=i}return e.backticksScanned=!0,r||(e.pending+=s),e.pos+=c,!0}],["strikethrough",Pe.tokenize],["emphasis",Ue.tokenize],["link",function(e,r){var t,n,s,o,i,a,c,l,u="",p="",h=e.pos,f=e.posMax,d=e.pos,m=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(i=e.pos+1,(o=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((a=o+1)<f&&40===e.src.charCodeAt(a)){for(m=!1,a++;a<f&&(n=e.src.charCodeAt(a),Ze(n)||10===n);a++);if(a>=f)return!1;if(d=a,(c=e.md.helpers.parseLinkDestination(e.src,a,e.posMax)).ok){for(u=e.md.normalizeLink(c.str),e.md.validateLink(u)?a=c.pos:u="",d=a;a<f&&(n=e.src.charCodeAt(a),Ze(n)||10===n);a++);if(c=e.md.helpers.parseLinkTitle(e.src,a,e.posMax),a<f&&d!==a&&c.ok)for(p=c.str,a=c.pos;a<f&&(n=e.src.charCodeAt(a),Ze(n)||10===n);a++);}(a>=f||41!==e.src.charCodeAt(a))&&(m=!0),a++}if(m){if(void 0===e.env.references)return!1;if(a<f&&91===e.src.charCodeAt(a)?(d=a+1,(a=e.md.helpers.parseLinkLabel(e,a))>=0?s=e.src.slice(d,a++):a=o+1):a=o+1,s||(s=e.src.slice(i,o)),!(l=e.env.references[Ve(s)]))return e.pos=h,!1;u=l.href,p=l.title}return r||(e.pos=i,e.posMax=o,e.push("link_open","a",1).attrs=t=[["href",u]],p&&t.push(["title",p]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)),e.pos=a,e.posMax=f,!0}],["image",function(e,r){var t,n,s,o,i,a,c,l,u,p,h,f,d,m="",g=e.pos,_=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(a=e.pos+2,(i=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((c=i+1)<_&&40===e.src.charCodeAt(c)){for(c++;c<_&&(n=e.src.charCodeAt(c),Ge(n)||10===n);c++);if(c>=_)return!1;for(d=c,(u=e.md.helpers.parseLinkDestination(e.src,c,e.posMax)).ok&&(m=e.md.normalizeLink(u.str),e.md.validateLink(m)?c=u.pos:m=""),d=c;c<_&&(n=e.src.charCodeAt(c),Ge(n)||10===n);c++);if(u=e.md.helpers.parseLinkTitle(e.src,c,e.posMax),c<_&&d!==c&&u.ok)for(p=u.str,c=u.pos;c<_&&(n=e.src.charCodeAt(c),Ge(n)||10===n);c++);else p="";if(c>=_||41!==e.src.charCodeAt(c))return e.pos=g,!1;c++}else{if(void 0===e.env.references)return!1;if(c<_&&91===e.src.charCodeAt(c)?(d=c+1,(c=e.md.helpers.parseLinkLabel(e,c))>=0?o=e.src.slice(d,c++):c=i+1):c=i+1,o||(o=e.src.slice(a,i)),!(l=e.env.references[$e(o)]))return e.pos=g,!1;m=l.href,p=l.title}return r||(s=e.src.slice(a,i),e.md.inline.parse(s,e.md,e.env,f=[]),(h=e.push("image","img",0)).attrs=t=[["src",m],["alt",""]],h.children=f,h.content=s,p&&t.push(["title",p])),e.pos=c,e.posMax=_,!0}],["autolink",function(e,r){var t,n,s,o,i,a,c=e.pos;if(60!==e.src.charCodeAt(c))return!1;for(i=e.pos,a=e.posMax;;){if(++c>=a)return!1;if(60===(o=e.src.charCodeAt(c)))return!1;if(62===o)break}return t=e.src.slice(i+1,c),Je.test(t)?(n=e.md.normalizeLink(t),!!e.md.validateLink(n)&&(r||((s=e.push("link_open","a",1)).attrs=[["href",n]],s.markup="autolink",s.info="auto",(s=e.push("text","",0)).content=e.md.normalizeLinkText(t),(s=e.push("link_close","a",-1)).markup="autolink",s.info="auto"),e.pos+=t.length+2,!0)):!!He.test(t)&&(n=e.md.normalizeLink("mailto:"+t),!!e.md.validateLink(n)&&(r||((s=e.push("link_open","a",1)).attrs=[["href",n]],s.markup="autolink",s.info="auto",(s=e.push("text","",0)).content=e.md.normalizeLinkText(t),(s=e.push("link_close","a",-1)).markup="autolink",s.info="auto"),e.pos+=t.length+2,!0))}],["html_inline",function(e,r){var t,n,s,o,i,a=e.pos;return!!e.md.options.html&&(s=e.posMax,!(60!==e.src.charCodeAt(a)||a+2>=s)&&(!(33!==(t=e.src.charCodeAt(a+1))&&63!==t&&47!==t&&!function(e){var r=32|e;return r>=97&&r<=122}(t))&&(!!(n=e.src.slice(a).match(We))&&(r||((o=e.push("html_inline","",0)).content=e.src.slice(a,a+n[0].length),i=o.content,/^<a[>\s]/i.test(i)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(o.content)&&e.linkLevel--),e.pos+=n[0].length,!0))))}],["entity",function(e,t){var n,s,o,i=e.pos,a=e.posMax;if(38!==e.src.charCodeAt(i))return!1;if(i+1>=a)return!1;if(35===e.src.charCodeAt(i+1)){if(s=e.src.slice(i).match(Xe))return t||(n="x"===s[1][0].toLowerCase()?parseInt(s[1].slice(1),16):parseInt(s[1],10),(o=e.push("text_special","",0)).content=Ke(n)?Qe(n):Qe(65533),o.markup=s[0],o.info="entity"),e.pos+=s[0].length,!0}else if((s=e.src.slice(i).match(er))&&Ye(r,s[1]))return t||((o=e.push("text_special","",0)).content=r[s[1]],o.markup=s[0],o.info="entity"),e.pos+=s[0].length,!0;return!1}]],cr=[["balance_pairs",function(e){var r,t=e.tokens_meta,n=e.tokens_meta.length;for(rr(0,e.delimiters),r=0;r<n;r++)t[r]&&t[r].delimiters&&rr(0,t[r].delimiters)}],["strikethrough",Pe.postProcess],["emphasis",Ue.postProcess],["fragments_join",function(e){var r,t,n=0,s=e.tokens,o=e.tokens.length;for(r=t=0;r<o;r++)s[r].nesting<0&&n--,s[r].level=n,s[r].nesting>0&&n++,"text"===s[r].type&&r+1<o&&"text"===s[r+1].type?s[r+1].content=s[r].content+s[r+1].content:(r!==t&&(s[t]=s[r]),t++);r!==t&&(s.length=t)}]];function lr(){var e;for(this.ruler=new O,e=0;e<ar.length;e++)this.ruler.push(ar[e][0],ar[e][1]);for(this.ruler2=new O,e=0;e<cr.length;e++)this.ruler2.push(cr[e][0],cr[e][1])}lr.prototype.skipToken=function(e){var r,t,n=e.pos,s=this.ruler.getRules(""),o=s.length,i=e.md.options.maxNesting,a=e.cache;if(void 0===a[n]){if(e.level<i)for(t=0;t<o&&(e.level++,r=s[t](e,!0),e.level--,!r);t++);else e.pos=e.posMax;r||e.pos++,a[n]=e.pos}else e.pos=a[n]},lr.prototype.tokenize=function(e){for(var r,t,n=this.ruler.getRules(""),s=n.length,o=e.posMax,i=e.md.options.maxNesting;e.pos<o;){if(e.level<i)for(t=0;t<s&&!(r=n[t](e,!1));t++);if(r){if(e.pos>=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},lr.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),i=(o=this.ruler2.getRules("")).length,s=0;s<i;s++)o[s](a)},lr.prototype.State=ir;var ur=lr;function pr(e){var r=Array.prototype.slice.call(arguments,1);return r.forEach((function(r){r&&Object.keys(r).forEach((function(t){e[t]=r[t]}))})),e}function hr(e){return Object.prototype.toString.call(e)}function fr(e){return"[object Function]"===hr(e)}function dr(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var mr={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var gr={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]||r>=3&&"/"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},_r="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function kr(e){var r=e.re=function(e){var r={};return e=e||{},r.src_Any=y.source,r.src_Cc=A.source,r.src_Z=x.source,r.src_P=t.source,r.src_ZPCc=[r.src_Z,r.src_P,r.src_Cc].join("|"),r.src_ZCc=[r.src_Z,r.src_Cc].join("|"),r.src_pseudo_letter="(?:(?![><\uff5c]|"+r.src_ZPCc+")"+r.src_Any+")",r.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",r.src_auth="(?:(?:(?!"+r.src_ZCc+"|[@/\\[\\]()]).)+@)?",r.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",r.src_host_terminator="(?=$|[><\uff5c]|"+r.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+r.src_ZPCc+"))",r.src_path="(?:[/?#](?:(?!"+r.src_ZCc+"|[><\uff5c]|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+r.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+r.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+r.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+r.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+r.src_ZCc+"|[']).)+\\'|\\'(?="+r.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+r.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+r.src_ZCc+"|$)|;(?!"+r.src_ZCc+"|$)|\\!+(?!"+r.src_ZCc+"|[!]|$)|\\?(?!"+r.src_ZCc+"|[?]|$))+|\\/)?",r.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',r.src_xn="xn--[a-z0-9\\-]{1,59}",r.src_domain_root="(?:"+r.src_xn+"|"+r.src_pseudo_letter+"{1,63})",r.src_domain="(?:"+r.src_xn+"|(?:"+r.src_pseudo_letter+")|(?:"+r.src_pseudo_letter+"(?:-|"+r.src_pseudo_letter+"){0,61}"+r.src_pseudo_letter+"))",r.src_host="(?:(?:(?:(?:"+r.src_domain+")\\.)*"+r.src_domain+"))",r.tpl_host_fuzzy="(?:"+r.src_ip4+"|(?:(?:(?:"+r.src_domain+")\\.)+(?:%TLDS%)))",r.tpl_host_no_ip_fuzzy="(?:(?:(?:"+r.src_domain+")\\.)+(?:%TLDS%))",r.src_host_strict=r.src_host+r.src_host_terminator,r.tpl_host_fuzzy_strict=r.tpl_host_fuzzy+r.src_host_terminator,r.src_host_port_strict=r.src_host+r.src_port+r.src_host_terminator,r.tpl_host_port_fuzzy_strict=r.tpl_host_fuzzy+r.src_port+r.src_host_terminator,r.tpl_host_port_no_ip_fuzzy_strict=r.tpl_host_no_ip_fuzzy+r.src_port+r.src_host_terminator,r.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+r.src_ZPCc+"|>|$))",r.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+r.src_ZCc+")("+r.src_email_name+"@"+r.tpl_host_fuzzy_strict+")",r.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+r.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+r.tpl_host_port_fuzzy_strict+r.src_path+")",r.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+r.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+r.tpl_host_port_no_ip_fuzzy_strict+r.src_path+")",r}(e.__opts__),n=e.__tlds__.slice();function s(e){return e.replace("%TLDS%",r.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),n.push(r.src_xn),r.src_tlds=n.join("|"),r.email_fuzzy=RegExp(s(r.tpl_email_fuzzy),"i"),r.link_fuzzy=RegExp(s(r.tpl_link_fuzzy),"i"),r.link_no_ip_fuzzy=RegExp(s(r.tpl_link_no_ip_fuzzy),"i"),r.host_fuzzy_test=RegExp(s(r.tpl_host_fuzzy_test),"i");var o=[];function i(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(r){var t=e.__schemas__[r];if(null!==t){var n={validate:null,link:null};if(e.__compiled__[r]=n,"[object Object]"===hr(t))return!function(e){return"[object RegExp]"===hr(e)}(t.validate)?fr(t.validate)?n.validate=t.validate:i(r,t):n.validate=function(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}(t.validate),void(fr(t.normalize)?n.normalize=t.normalize:t.normalize?i(r,t):n.normalize=function(e,r){r.normalize(e)});!function(e){return"[object String]"===hr(e)}(t)?i(r,t):o.push(r)}})),o.forEach((function(r){e.__compiled__[e.__schemas__[r]]&&(e.__compiled__[r].validate=e.__compiled__[e.__schemas__[r]].validate,e.__compiled__[r].normalize=e.__compiled__[e.__schemas__[r]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,r){r.normalize(e)}};var a=Object.keys(e.__compiled__).filter((function(r){return r.length>0&&e.__compiled__[r]})).map(dr).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+r.src_ZPCc+"))("+a+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+r.src_ZPCc+"))("+a+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function br(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function vr(e,r){var t=new br(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function Cr(e,r){if(!(this instanceof Cr))return new Cr(e,r);var t;r||(t=e,Object.keys(t||{}).reduce((function(e,r){return e||mr.hasOwnProperty(r)}),!1)&&(r=e,e={})),this.__opts__=pr({},mr,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=pr({},gr,e),this.__compiled__={},this.__tlds__=_r,this.__tlds_replaced__=!1,this.re={},kr(this)}Cr.prototype.add=function(e,r){return this.__schemas__[e]=r,kr(this),this},Cr.prototype.set=function(e){return this.__opts__=pr(this.__opts__,e),this},Cr.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c<this.__index__)&&null!==(t=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(o=t.index+t[1].length,(this.__index__<0||o<this.__index__)&&(this.__schema__="",this.__index__=o,this.__last_index__=t.index+t[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&e.indexOf("@")>=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||o<this.__index__||o===this.__index__&&i>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),this.__index__>=0},Cr.prototype.pretest=function(e){return this.re.pretest.test(e)},Cr.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},Cr.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(vr(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(vr(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},Cr.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;var r=this.re.schema_at_start.exec(e);if(!r)return null;var t=this.testSchemaAt(e,r[2],r[0].length);return t?(this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+t,vr(this,0)):null},Cr.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,r,t){return e!==t[r-1]})).reverse(),kr(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,kr(this),this)},Cr.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},Cr.prototype.onCompile=function(){};var yr=Cr,Ar=2147483647,xr=36,Dr=/^xn--/,wr=/[^\x20-\x7E]/,Er=/[\x2E\u3002\uFF0E\uFF61]/g,qr={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Sr=Math.floor,Fr=String.fromCharCode; -/*! https://mths.be/punycode v1.4.1 by @mathias */function Lr(e){throw new RangeError(qr[e])}function zr(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function Tr(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),n+zr((e=e.replace(Er,".")).split("."),r).join(".")}function Ir(e){for(var r,t,n=[],s=0,o=e.length;s<o;)(r=e.charCodeAt(s++))>=55296&&r<=56319&&s<o?56320==(64512&(t=e.charCodeAt(s++)))?n.push(((1023&r)<<10)+(1023&t)+65536):(n.push(r),s--):n.push(r);return n}function Mr(e){return zr(e,(function(e){var r="";return e>65535&&(r+=Fr((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=Fr(e)})).join("")}function Rr(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function Br(e,r,t){var n=0;for(e=t?Sr(e/700):e>>1,e+=Sr(e/r);e>455;n+=xr)e=Sr(e/35);return Sr(n+36*e/(e+38))}function Nr(e){var r,t,n,s,o,i,a,c,l,u,p,h=[],f=e.length,d=0,m=128,g=72;for((t=e.lastIndexOf("-"))<0&&(t=0),n=0;n<t;++n)e.charCodeAt(n)>=128&&Lr("not-basic"),h.push(e.charCodeAt(n));for(s=t>0?t+1:0;s<f;){for(o=d,i=1,a=xr;s>=f&&Lr("invalid-input"),((c=(p=e.charCodeAt(s++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:xr)>=xr||c>Sr((Ar-d)/i))&&Lr("overflow"),d+=c*i,!(c<(l=a<=g?1:a>=g+26?26:a-g));a+=xr)i>Sr(Ar/(u=xr-l))&&Lr("overflow"),i*=u;g=Br(d-o,r=h.length+1,0==o),Sr(d/r)>Ar-m&&Lr("overflow"),m+=Sr(d/r),d%=r,h.splice(d++,0,m)}return Mr(h)}function Or(e){var r,t,n,s,o,i,a,c,l,u,p,h,f,d,m,g=[];for(h=(e=Ir(e)).length,r=128,t=0,o=72,i=0;i<h;++i)(p=e[i])<128&&g.push(Fr(p));for(n=s=g.length,s&&g.push("-");n<h;){for(a=Ar,i=0;i<h;++i)(p=e[i])>=r&&p<a&&(a=p);for(a-r>Sr((Ar-t)/(f=n+1))&&Lr("overflow"),t+=(a-r)*f,r=a,i=0;i<h;++i)if((p=e[i])<r&&++t>Ar&&Lr("overflow"),p==r){for(c=t,l=xr;!(c<(u=l<=o?1:l>=o+26?26:l-o));l+=xr)m=c-u,d=xr-u,g.push(Fr(Rr(u+m%d,0))),c=Sr(m/d);g.push(Fr(Rr(c,0))),o=Br(t,f,n==s),t=0,++n}++t,++r}return g.join("")}function Pr(e){return Tr(e,(function(e){return Dr.test(e)?Nr(e.slice(4).toLowerCase()):e}))}function jr(e){return Tr(e,(function(e){return wr.test(e)?"xn--"+Or(e):e}))}var Ur="1.4.1",Vr={decode:Ir,encode:Mr},Zr={version:Ur,ucs2:Vr,toASCII:jr,toUnicode:Pr,encode:Or,decode:Nr},$r=e(Object.freeze({__proto__:null,decode:Nr,encode:Or,toUnicode:Pr,toASCII:jr,version:Ur,ucs2:Vr,default:Zr})),Gr={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},Hr=/^(vbscript|javascript|file|data):/,Jr=/^data:image\/(gif|png|jpeg|webp);/;function Wr(e){var r=e.trim().toLowerCase();return!Hr.test(r)||!!Jr.test(r)}var Yr=["http:","https:","mailto:"];function Kr(e){var r=C.parse(e,!0);if(r.hostname&&(!r.protocol||Yr.indexOf(r.protocol)>=0))try{r.hostname=$r.toASCII(r.hostname)}catch(e){}return C.encode(C.format(r))}function Qr(e){var r=C.parse(e,!0);if(r.hostname&&(!r.protocol||Yr.indexOf(r.protocol)>=0))try{r.hostname=$r.toUnicode(r.hostname)}catch(e){}return C.decode(C.format(r),C.decode.defaultChars+"%")}function Xr(e,r){if(!(this instanceof Xr))return new Xr(e,r);r||w.isString(e)||(r=e||{},e="default"),this.inline=new ur,this.block=new ze,this.core=new ue,this.renderer=new B,this.linkify=new yr,this.validateLink=Wr,this.normalizeLink=Kr,this.normalizeLinkText=Qr,this.utils=w,this.helpers=w.assign({},L),this.options={},this.configure(e),r&&this.set(r)}return Xr.prototype.set=function(e){return w.assign(this.options,e),this},Xr.prototype.configure=function(e){var r,t=this;if(w.isString(e)&&!(e=Gr[r=e]))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)})),this},Xr.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.enable(e,!0))}),this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},Xr.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.disable(e,!0))}),this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},Xr.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},Xr.prototype.parse=function(e,r){if("string"!=typeof e)throw new Error("Input data should be a String");var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},Xr.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},Xr.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},Xr.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},Xr})); +/*! markdown-it 14.1.0 https://github.com/markdown-it/markdown-it @license MIT */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).markdownit=e()}(this,(function(){"use strict";const t={};function e(r,n){"string"!=typeof n&&(n=e.defaultChars);const s=function(e){let r=t[e];if(r)return r;r=t[e]=[];for(let t=0;t<128;t++){const e=String.fromCharCode(t);r.push(e)}for(let t=0;t<e.length;t++){const n=e.charCodeAt(t);r[n]="%"+("0"+n.toString(16).toUpperCase()).slice(-2)}return r}(n);return r.replace(/(%[a-f0-9]{2})+/gi,(function(t){let e="";for(let r=0,n=t.length;r<n;r+=3){const i=parseInt(t.slice(r+1,r+3),16);if(i<128)e+=s[i];else{if(192==(224&i)&&r+3<n){const n=parseInt(t.slice(r+4,r+6),16);if(128==(192&n)){const t=i<<6&1984|63&n;e+=t<128?"\ufffd\ufffd":String.fromCharCode(t),r+=3;continue}}if(224==(240&i)&&r+6<n){const n=parseInt(t.slice(r+4,r+6),16),s=parseInt(t.slice(r+7,r+9),16);if(128==(192&n)&&128==(192&s)){const t=i<<12&61440|n<<6&4032|63&s;e+=t<2048||t>=55296&&t<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(t),r+=6;continue}}if(240==(248&i)&&r+9<n){const n=parseInt(t.slice(r+4,r+6),16),s=parseInt(t.slice(r+7,r+9),16),o=parseInt(t.slice(r+10,r+12),16);if(128==(192&n)&&128==(192&s)&&128==(192&o)){let t=i<<18&1835008|n<<12&258048|s<<6&4032|63&o;t<65536||t>1114111?e+="\ufffd\ufffd\ufffd\ufffd":(t-=65536,e+=String.fromCharCode(55296+(t>>10),56320+(1023&t))),r+=9;continue}}e+="\ufffd"}}return e}))}e.defaultChars=";/?:@&=+$,#",e.componentChars="";const r={};function n(t,e,s){"string"!=typeof e&&(s=e,e=n.defaultChars),void 0===s&&(s=!0);const i=function(t){let e=r[t];if(e)return e;e=r[t]=[];for(let t=0;t<128;t++){const r=String.fromCharCode(t);/^[0-9a-z]$/i.test(r)?e.push(r):e.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2))}for(let r=0;r<t.length;r++)e[t.charCodeAt(r)]=t[r];return e}(e);let o="";for(let e=0,r=t.length;e<r;e++){const n=t.charCodeAt(e);if(s&&37===n&&e+2<r&&/^[0-9a-f]{2}$/i.test(t.slice(e+1,e+3)))o+=t.slice(e,e+3),e+=2;else if(n<128)o+=i[n];else if(n>=55296&&n<=57343){if(n>=55296&&n<=56319&&e+1<r){const r=t.charCodeAt(e+1);if(r>=56320&&r<=57343){o+=encodeURIComponent(t[e]+t[e+1]),e++;continue}}o+="%EF%BF%BD"}else o+=encodeURIComponent(t[e])}return o}function s(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function i(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}n.defaultChars=";/?:@&=+$,-_.!~*'()#",n.componentChars="-_.!~*'()";const o=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,a=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(a),h=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,_={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function g(t,e){if(t&&t instanceof i)return t;const r=new i;return r.parse(t,e),r}i.prototype.parse=function(t,e){let r,n,s,i=t;if(i=i.trim(),!e&&1===t.split("#").length){const t=c.exec(i);if(t)return this.pathname=t[1],t[2]&&(this.search=t[2]),this}let u=o.exec(i);if(u&&(u=u[0],r=u.toLowerCase(),this.protocol=u,i=i.substr(u.length)),(e||u||i.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s="//"===i.substr(0,2),!s||u&&_[u]||(i=i.substr(2),this.slashes=!0)),!_[u]&&(s||u&&!m[u])){let t,e,r=-1;for(let t=0;t<p.length;t++)n=i.indexOf(p[t]),-1!==n&&(-1===r||n<r)&&(r=n);e=-1===r?i.lastIndexOf("@"):i.lastIndexOf("@",r),-1!==e&&(t=i.slice(0,e),i=i.slice(e+1),this.auth=t),r=-1;for(let t=0;t<h.length;t++)n=i.indexOf(h[t]),-1!==n&&(-1===r||n<r)&&(r=n);-1===r&&(r=i.length),":"===i[r-1]&&r--;const s=i.slice(0,r);i=i.slice(r),this.parseHost(s),this.hostname=this.hostname||"";const o="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!o){const t=this.hostname.split(/\./);for(let e=0,r=t.length;e<r;e++){const r=t[e];if(r&&!r.match(f)){let n="";for(let t=0,e=r.length;t<e;t++)r.charCodeAt(t)>127?n+="x":n+=r[t];if(!n.match(f)){const n=t.slice(0,e),s=t.slice(e+1),o=r.match(d);o&&(n.push(o[1]),s.unshift(o[2])),s.length&&(i=s.join(".")+i),this.hostname=n.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),o&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const a=i.indexOf("#");-1!==a&&(this.hash=i.substr(a),i=i.slice(0,a));const l=i.indexOf("?");return-1!==l&&(this.search=i.substr(l),i=i.slice(0,l)),i&&(this.pathname=i),m[r]&&this.hostname&&!this.pathname&&(this.pathname=""),this},i.prototype.parseHost=function(t){let e=u.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};var k,D=Object.freeze({__proto__:null,decode:e,encode:n,format:s,parse:g}),C=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,y=/[\0-\x1F\x7F-\x9F]/,E=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,A=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,b=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,F=Object.freeze({__proto__:null,Any:C,Cc:y,Cf:/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,P:E,S:A,Z:b}),x=new Uint16Array('\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c'.split("").map((t=>t.charCodeAt(0)))),w=new Uint16Array("\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022".split("").map((t=>t.charCodeAt(0))));const v=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),z=null!==(k=String.fromCodePoint)&&void 0!==k?k:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};var S;!function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(S||(S={}));var q,B,L;function I(t){return t>=S.ZERO&&t<=S.NINE}function M(t){return t>=S.UPPER_A&&t<=S.UPPER_F||t>=S.LOWER_A&&t<=S.LOWER_F}function T(t){return t===S.EQUALS||function(t){return t>=S.UPPER_A&&t<=S.UPPER_Z||t>=S.LOWER_A&&t<=S.LOWER_Z||I(t)}(t)}!function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(q||(q={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(B||(B={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(L||(L={}));class R{constructor(t,e,r){this.decodeTree=t,this.emitCodePoint=e,this.errors=r,this.state=B.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=L.Strict}startEntity(t){this.decodeMode=t,this.state=B.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case B.EntityStart:return t.charCodeAt(e)===S.NUM?(this.state=B.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=B.NamedEntity,this.stateNamedEntity(t,e));case B.NumericStart:return this.stateNumericStart(t,e);case B.NumericDecimal:return this.stateNumericDecimal(t,e);case B.NumericHex:return this.stateNumericHex(t,e);case B.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(32|t.charCodeAt(e))===S.LOWER_X?(this.state=B.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=B.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,r,n){if(e!==r){const s=r-e;this.result=this.result*Math.pow(n,s)+parseInt(t.substr(e,s),n),this.consumed+=s}}stateNumericHex(t,e){const r=e;for(;e<t.length;){const n=t.charCodeAt(e);if(!I(n)&&!M(n))return this.addToNumericResult(t,r,e,16),this.emitNumericEntity(n,3);e+=1}return this.addToNumericResult(t,r,e,16),-1}stateNumericDecimal(t,e){const r=e;for(;e<t.length;){const n=t.charCodeAt(e);if(!I(n))return this.addToNumericResult(t,r,e,10),this.emitNumericEntity(n,2);e+=1}return this.addToNumericResult(t,r,e,10),-1}emitNumericEntity(t,e){var r;if(this.consumed<=e)return null===(r=this.errors)||void 0===r||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===S.SEMI)this.consumed+=1;else if(this.decodeMode===L.Strict)return 0;return this.emitCodePoint(function(t){var e;return t>=55296&&t<=57343||t>1114111?65533:null!==(e=v.get(t))&&void 0!==e?e:t}(this.result),this.consumed),this.errors&&(t!==S.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,e){const{decodeTree:r}=this;let n=r[this.treeIndex],s=(n&q.VALUE_LENGTH)>>14;for(;e<t.length;e++,this.excess++){const i=t.charCodeAt(e);if(this.treeIndex=P(r,n,this.treeIndex+Math.max(1,s),i),this.treeIndex<0)return 0===this.result||this.decodeMode===L.Attribute&&(0===s||T(i))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],s=(n&q.VALUE_LENGTH)>>14,0!==s){if(i===S.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);this.decodeMode!==L.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:e,decodeTree:r}=this,n=(r[e]&q.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,n,this.consumed),null===(t=this.errors)||void 0===t||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,r){const{decodeTree:n}=this;return this.emitCodePoint(1===e?n[t]&~q.VALUE_LENGTH:n[t+1],r),3===e&&this.emitCodePoint(n[t+2],r),r}end(){var t;switch(this.state){case B.NamedEntity:return 0===this.result||this.decodeMode===L.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case B.NumericDecimal:return this.emitNumericEntity(0,2);case B.NumericHex:return this.emitNumericEntity(0,3);case B.NumericStart:return null===(t=this.errors)||void 0===t||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case B.EntityStart:return 0}}}function N(t){let e="";const r=new R(t,(t=>e+=z(t)));return function(t,n){let s=0,i=0;for(;(i=t.indexOf("&",i))>=0;){e+=t.slice(s,i),r.startEntity(n);const o=r.write(t,i+1);if(o<0){s=i+r.end();break}s=i+o,i=0===o?s+1:s}const o=e+t.slice(s);return e="",o}}function P(t,e,r,n){const s=(e&q.BRANCH_LENGTH)>>7,i=e&q.JUMP_TABLE;if(0===s)return 0!==i&&n===i?r:-1;if(i){const e=n-i;return e<0||e>=s?-1:t[r+e]-1}let o=r,u=o+s-1;for(;o<=u;){const e=o+u>>>1,r=t[e];if(r<n)o=e+1;else{if(!(r>n))return t[e+s];u=e-1}}return-1}const O=N(x);function j(t,e=L.Legacy){return O(t,e)}function Z(t){return"[object String]"===function(t){return Object.prototype.toString.call(t)}(t)}N(w);const $=Object.prototype.hasOwnProperty;function U(t){return Array.prototype.slice.call(arguments,1).forEach((function(e){if(e){if("object"!=typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach((function(r){t[r]=e[r]}))}})),t}function H(t,e,r){return[].concat(t.slice(0,e),r,t.slice(e+1))}function V(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(!!(65535&~t&&65534!=(65535&t))&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function G(t){if(t>65535){const e=55296+((t-=65536)>>10),r=56320+(1023&t);return String.fromCharCode(e,r)}return String.fromCharCode(t)}const W=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,J=new RegExp(W.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),Q=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function X(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(J,(function(t,e,r){return e||function(t,e){if(35===e.charCodeAt(0)&&Q.test(e)){const r="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return V(r)?G(r):t}const r=j(t);return r!==t?r:t}(t,r)}))}const Y=/[&<>"]/,K=/[&<>"]/g,tt={"&":"&","<":"<",">":">",'"':"""};function et(t){return tt[t]}function rt(t){return Y.test(t)?t.replace(K,et):t}const nt=/[.?*+^$[\]\\(){}|-]/g;function st(t){switch(t){case 9:case 32:return!0}return!1}function it(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function ot(t){return E.test(t)||A.test(t)}function ut(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function ct(t){return t=t.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(t=t.replace(/\u1e9e/g,"\xdf")),t.toLowerCase().toUpperCase()}const at={mdurl:D,ucmicro:F};var lt=Object.freeze({__proto__:null,arrayReplaceAt:H,assign:U,escapeHtml:rt,escapeRE:function(t){return t.replace(nt,"\\$&")},fromCodePoint:G,has:function(t,e){return $.call(t,e)},isMdAsciiPunct:ut,isPunctChar:ot,isSpace:st,isString:Z,isValidEntityCode:V,isWhiteSpace:it,lib:at,normalizeReference:ct,unescapeAll:X,unescapeMd:function(t){return t.indexOf("\\")<0?t:t.replace(W,"$1")}});var ht=Object.freeze({__proto__:null,parseLinkDestination:function(t,e,r){let n,s=e;const i={ok:!1,pos:0,str:""};if(60===t.charCodeAt(s)){for(s++;s<r;){if(n=t.charCodeAt(s),10===n)return i;if(60===n)return i;if(62===n)return i.pos=s+1,i.str=X(t.slice(e+1,s)),i.ok=!0,i;92===n&&s+1<r?s+=2:s++}return i}let o=0;for(;s<r&&(n=t.charCodeAt(s),32!==n)&&!(n<32||127===n);)if(92===n&&s+1<r){if(32===t.charCodeAt(s+1))break;s+=2}else{if(40===n&&(o++,o>32))return i;if(41===n){if(0===o)break;o--}s++}return e===s||0!==o||(i.str=X(t.slice(e,s)),i.pos=s,i.ok=!0),i},parseLinkLabel:function(t,e,r){let n,s,i,o;const u=t.posMax,c=t.pos;for(t.pos=e+1,n=1;t.pos<u;){if(i=t.src.charCodeAt(t.pos),93===i&&(n--,0===n)){s=!0;break}if(o=t.pos,t.md.inline.skipToken(t),91===i)if(o===t.pos-1)n++;else if(r)return t.pos=c,-1}let a=-1;return s&&(a=t.pos),t.pos=c,a},parseLinkTitle:function(t,e,r,n){let s,i=e;const o={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(n)o.str=n.str,o.marker=n.marker;else{if(i>=r)return o;let n=t.charCodeAt(i);if(34!==n&&39!==n&&40!==n)return o;e++,i++,40===n&&(n=41),o.marker=n}for(;i<r;){if(s=t.charCodeAt(i),s===o.marker)return o.pos=i+1,o.str+=X(t.slice(e,i)),o.ok=!0,o;if(40===s&&41===o.marker)return o;92===s&&i+1<r&&i++,i++}return o.can_continue=!0,o.str+=X(t.slice(e,i)),o}});const pt={};function ft(){this.rules=U({},pt)}function dt(){this.__rules__=[],this.__cache__=null}function _t(t,e,r){this.type=t,this.tag=e,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}function mt(t,e,r){this.src=t,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=e}pt.code_inline=function(t,e,r,n,s){const i=t[e];return"<code"+s.renderAttrs(i)+">"+rt(i.content)+"</code>"},pt.code_block=function(t,e,r,n,s){const i=t[e];return"<pre"+s.renderAttrs(i)+"><code>"+rt(t[e].content)+"</code></pre>\n"},pt.fence=function(t,e,r,n,s){const i=t[e],o=i.info?X(i.info).trim():"";let u,c="",a="";if(o){const t=o.split(/(\s+)/g);c=t[0],a=t.slice(2).join("")}if(u=r.highlight&&r.highlight(i.content,c,a)||rt(i.content),0===u.indexOf("<pre"))return u+"\n";if(o){const t=i.attrIndex("class"),e=i.attrs?i.attrs.slice():[];t<0?e.push(["class",r.langPrefix+c]):(e[t]=e[t].slice(),e[t][1]+=" "+r.langPrefix+c);const n={attrs:e};return`<pre><code${s.renderAttrs(n)}>${u}</code></pre>\n`}return`<pre><code${s.renderAttrs(i)}>${u}</code></pre>\n`},pt.image=function(t,e,r,n,s){const i=t[e];return i.attrs[i.attrIndex("alt")][1]=s.renderInlineAsText(i.children,r,n),s.renderToken(t,e,r)},pt.hardbreak=function(t,e,r){return r.xhtmlOut?"<br />\n":"<br>\n"},pt.softbreak=function(t,e,r){return r.breaks?r.xhtmlOut?"<br />\n":"<br>\n":"\n"},pt.text=function(t,e){return rt(t[e].content)},pt.html_block=function(t,e){return t[e].content},pt.html_inline=function(t,e){return t[e].content},ft.prototype.renderAttrs=function(t){let e,r,n;if(!t.attrs)return"";for(n="",e=0,r=t.attrs.length;e<r;e++)n+=" "+rt(t.attrs[e][0])+'="'+rt(t.attrs[e][1])+'"';return n},ft.prototype.renderToken=function(t,e,r){const n=t[e];let s="";if(n.hidden)return"";n.block&&-1!==n.nesting&&e&&t[e-1].hidden&&(s+="\n"),s+=(-1===n.nesting?"</":"<")+n.tag,s+=this.renderAttrs(n),0===n.nesting&&r.xhtmlOut&&(s+=" /");let i=!1;if(n.block&&(i=!0,1===n.nesting&&e+1<t.length)){const r=t[e+1];("inline"===r.type||r.hidden||-1===r.nesting&&r.tag===n.tag)&&(i=!1)}return s+=i?">\n":">",s},ft.prototype.renderInline=function(t,e,r){let n="";const s=this.rules;for(let i=0,o=t.length;i<o;i++){const o=t[i].type;void 0!==s[o]?n+=s[o](t,i,e,r,this):n+=this.renderToken(t,i,e)}return n},ft.prototype.renderInlineAsText=function(t,e,r){let n="";for(let s=0,i=t.length;s<i;s++)switch(t[s].type){case"text":case"html_inline":case"html_block":n+=t[s].content;break;case"image":n+=this.renderInlineAsText(t[s].children,e,r);break;case"softbreak":case"hardbreak":n+="\n"}return n},ft.prototype.render=function(t,e,r){let n="";const s=this.rules;for(let i=0,o=t.length;i<o;i++){const o=t[i].type;"inline"===o?n+=this.renderInline(t[i].children,e,r):void 0!==s[o]?n+=s[o](t,i,e,r,this):n+=this.renderToken(t,i,e,r)}return n},dt.prototype.__find__=function(t){for(let e=0;e<this.__rules__.length;e++)if(this.__rules__[e].name===t)return e;return-1},dt.prototype.__compile__=function(){const t=this,e=[""];t.__rules__.forEach((function(t){t.enabled&&t.alt.forEach((function(t){e.indexOf(t)<0&&e.push(t)}))})),t.__cache__={},e.forEach((function(e){t.__cache__[e]=[],t.__rules__.forEach((function(r){r.enabled&&(e&&r.alt.indexOf(e)<0||t.__cache__[e].push(r.fn))}))}))},dt.prototype.at=function(t,e,r){const n=this.__find__(t),s=r||{};if(-1===n)throw new Error("Parser rule not found: "+t);this.__rules__[n].fn=e,this.__rules__[n].alt=s.alt||[],this.__cache__=null},dt.prototype.before=function(t,e,r,n){const s=this.__find__(t),i=n||{};if(-1===s)throw new Error("Parser rule not found: "+t);this.__rules__.splice(s,0,{name:e,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},dt.prototype.after=function(t,e,r,n){const s=this.__find__(t),i=n||{};if(-1===s)throw new Error("Parser rule not found: "+t);this.__rules__.splice(s+1,0,{name:e,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},dt.prototype.push=function(t,e,r){const n=r||{};this.__rules__.push({name:t,enabled:!0,fn:e,alt:n.alt||[]}),this.__cache__=null},dt.prototype.enable=function(t,e){Array.isArray(t)||(t=[t]);const r=[];return t.forEach((function(t){const n=this.__find__(t);if(n<0){if(e)return;throw new Error("Rules manager: invalid rule name "+t)}this.__rules__[n].enabled=!0,r.push(t)}),this),this.__cache__=null,r},dt.prototype.enableOnly=function(t,e){Array.isArray(t)||(t=[t]),this.__rules__.forEach((function(t){t.enabled=!1})),this.enable(t,e)},dt.prototype.disable=function(t,e){Array.isArray(t)||(t=[t]);const r=[];return t.forEach((function(t){const n=this.__find__(t);if(n<0){if(e)return;throw new Error("Rules manager: invalid rule name "+t)}this.__rules__[n].enabled=!1,r.push(t)}),this),this.__cache__=null,r},dt.prototype.getRules=function(t){return null===this.__cache__&&this.__compile__(),this.__cache__[t]||[]},_t.prototype.attrIndex=function(t){if(!this.attrs)return-1;const e=this.attrs;for(let r=0,n=e.length;r<n;r++)if(e[r][0]===t)return r;return-1},_t.prototype.attrPush=function(t){this.attrs?this.attrs.push(t):this.attrs=[t]},_t.prototype.attrSet=function(t,e){const r=this.attrIndex(t),n=[t,e];r<0?this.attrPush(n):this.attrs[r]=n},_t.prototype.attrGet=function(t){const e=this.attrIndex(t);let r=null;return e>=0&&(r=this.attrs[e][1]),r},_t.prototype.attrJoin=function(t,e){const r=this.attrIndex(t);r<0?this.attrPush([t,e]):this.attrs[r][1]=this.attrs[r][1]+" "+e},mt.prototype.Token=_t;const gt=/\r\n?|\n/g,kt=/\0/g;function Dt(t){return/^<\/a\s*>/i.test(t)}const Ct=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,yt=/\((c|tm|r)\)/i,Et=/\((c|tm|r)\)/gi,At={c:"\xa9",r:"\xae",tm:"\u2122"};function bt(t,e){return At[e.toLowerCase()]}function Ft(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||(n.content=n.content.replace(Et,bt)),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}function xt(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||Ct.test(n.content)&&(n.content=n.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}const wt=/['"]/,vt=/['"]/g,zt="\u2019";function St(t,e,r){return t.slice(0,e)+r+t.slice(e+1)}function qt(t,e){let r;const n=[];for(let s=0;s<t.length;s++){const i=t[s],o=t[s].level;for(r=n.length-1;r>=0&&!(n[r].level<=o);r--);if(n.length=r+1,"text"!==i.type)continue;let u=i.content,c=0,a=u.length;t:for(;c<a;){vt.lastIndex=c;const l=vt.exec(u);if(!l)break;let h=!0,p=!0;c=l.index+1;const f="'"===l[0];let d=32;if(l.index-1>=0)d=u.charCodeAt(l.index-1);else for(r=s-1;r>=0&&("softbreak"!==t[r].type&&"hardbreak"!==t[r].type);r--)if(t[r].content){d=t[r].content.charCodeAt(t[r].content.length-1);break}let _=32;if(c<a)_=u.charCodeAt(c);else for(r=s+1;r<t.length&&("softbreak"!==t[r].type&&"hardbreak"!==t[r].type);r++)if(t[r].content){_=t[r].content.charCodeAt(0);break}const m=ut(d)||ot(String.fromCharCode(d)),g=ut(_)||ot(String.fromCharCode(_)),k=it(d),D=it(_);if(D?h=!1:g&&(k||m||(h=!1)),k?p=!1:m&&(D||g||(p=!1)),34===_&&'"'===l[0]&&d>=48&&d<=57&&(p=h=!1),h&&p&&(h=m,p=g),h||p){if(p)for(r=n.length-1;r>=0;r--){let h=n[r];if(n[r].level<o)break;if(h.single===f&&n[r].level===o){let o,p;h=n[r],f?(o=e.md.options.quotes[2],p=e.md.options.quotes[3]):(o=e.md.options.quotes[0],p=e.md.options.quotes[1]),i.content=St(i.content,l.index,p),t[h.token].content=St(t[h.token].content,h.pos,o),c+=p.length-1,h.token===s&&(c+=o.length-1),u=i.content,a=u.length,n.length=r;continue t}}h?n.push({token:s,pos:l.index,single:f,level:o}):p&&f&&(i.content=St(i.content,l.index,zt))}else f&&(i.content=St(i.content,l.index,zt))}}}const Bt=[["normalize",function(t){let e;e=t.src.replace(gt,"\n"),e=e.replace(kt,"\ufffd"),t.src=e}],["block",function(t){let e;t.inlineMode?(e=new t.Token("inline","",0),e.content=t.src,e.map=[0,1],e.children=[],t.tokens.push(e)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}],["inline",function(t){const e=t.tokens;for(let r=0,n=e.length;r<n;r++){const n=e[r];"inline"===n.type&&t.md.inline.parse(n.content,t.md,t.env,n.children)}}],["linkify",function(t){const e=t.tokens;var r;if(t.md.options.linkify)for(let n=0,s=e.length;n<s;n++){if("inline"!==e[n].type||!t.md.linkify.pretest(e[n].content))continue;let s=e[n].children,i=0;for(let o=s.length-1;o>=0;o--){const u=s[o];if("link_close"!==u.type){if("html_inline"===u.type&&(r=u.content,/^<a[>\s]/i.test(r)&&i>0&&i--,Dt(u.content)&&i++),!(i>0)&&"text"===u.type&&t.md.linkify.test(u.content)){const r=u.content;let i=t.md.linkify.match(r);const c=[];let a=u.level,l=0;i.length>0&&0===i[0].index&&o>0&&"text_special"===s[o-1].type&&(i=i.slice(1));for(let e=0;e<i.length;e++){const n=i[e].url,s=t.md.normalizeLink(n);if(!t.md.validateLink(s))continue;let o=i[e].text;o=i[e].schema?"mailto:"!==i[e].schema||/^mailto:/i.test(o)?t.md.normalizeLinkText(o):t.md.normalizeLinkText("mailto:"+o).replace(/^mailto:/,""):t.md.normalizeLinkText("http://"+o).replace(/^http:\/\//,"");const u=i[e].index;if(u>l){const e=new t.Token("text","",0);e.content=r.slice(l,u),e.level=a,c.push(e)}const h=new t.Token("link_open","a",1);h.attrs=[["href",s]],h.level=a++,h.markup="linkify",h.info="auto",c.push(h);const p=new t.Token("text","",0);p.content=o,p.level=a,c.push(p);const f=new t.Token("link_close","a",-1);f.level=--a,f.markup="linkify",f.info="auto",c.push(f),l=i[e].lastIndex}if(l<r.length){const e=new t.Token("text","",0);e.content=r.slice(l),e.level=a,c.push(e)}e[n].children=s=H(s,o,c)}}else for(o--;s[o].level!==u.level&&"link_open"!==s[o].type;)o--}}}],["replacements",function(t){let e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(yt.test(t.tokens[e].content)&&Ft(t.tokens[e].children),Ct.test(t.tokens[e].content)&&xt(t.tokens[e].children))}],["smartquotes",function(t){if(t.md.options.typographer)for(let e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&wt.test(t.tokens[e].content)&&qt(t.tokens[e].children,t)}],["text_join",function(t){let e,r;const n=t.tokens,s=n.length;for(let t=0;t<s;t++){if("inline"!==n[t].type)continue;const s=n[t].children,i=s.length;for(e=0;e<i;e++)"text_special"===s[e].type&&(s[e].type="text");for(e=r=0;e<i;e++)"text"===s[e].type&&e+1<i&&"text"===s[e+1].type?s[e+1].content=s[e].content+s[e+1].content:(e!==r&&(s[r]=s[e]),r++);e!==r&&(s.length=r)}}]];function Lt(){this.ruler=new dt;for(let t=0;t<Bt.length;t++)this.ruler.push(Bt[t][0],Bt[t][1])}function It(t,e,r,n){this.src=t,this.md=e,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0;const s=this.src;for(let t=0,e=0,r=0,n=0,i=s.length,o=!1;e<i;e++){const u=s.charCodeAt(e);if(!o){if(st(u)){r++,9===u?n+=4-n%4:n++;continue}o=!0}10!==u&&e!==i-1||(10!==u&&e++,this.bMarks.push(t),this.eMarks.push(e),this.tShift.push(r),this.sCount.push(n),this.bsCount.push(0),o=!1,r=0,n=0,t=e+1)}this.bMarks.push(s.length),this.eMarks.push(s.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}Lt.prototype.process=function(t){const e=this.ruler.getRules("");for(let r=0,n=e.length;r<n;r++)e[r](t)},Lt.prototype.State=mt,It.prototype.push=function(t,e,r){const n=new _t(t,e,r);return n.block=!0,r<0&&this.level--,n.level=this.level,r>0&&this.level++,this.tokens.push(n),n},It.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},It.prototype.skipEmptyLines=function(t){for(let e=this.lineMax;t<e&&!(this.bMarks[t]+this.tShift[t]<this.eMarks[t]);t++);return t},It.prototype.skipSpaces=function(t){for(let e=this.src.length;t<e;t++){if(!st(this.src.charCodeAt(t)))break}return t},It.prototype.skipSpacesBack=function(t,e){if(t<=e)return t;for(;t>e;)if(!st(this.src.charCodeAt(--t)))return t+1;return t},It.prototype.skipChars=function(t,e){for(let r=this.src.length;t<r&&this.src.charCodeAt(t)===e;t++);return t},It.prototype.skipCharsBack=function(t,e,r){if(t<=r)return t;for(;t>r;)if(e!==this.src.charCodeAt(--t))return t+1;return t},It.prototype.getLines=function(t,e,r,n){if(t>=e)return"";const s=new Array(e-t);for(let i=0,o=t;o<e;o++,i++){let t=0;const u=this.bMarks[o];let c,a=u;for(c=o+1<e||n?this.eMarks[o]+1:this.eMarks[o];a<c&&t<r;){const e=this.src.charCodeAt(a);if(st(e))9===e?t+=4-(t+this.bsCount[o])%4:t++;else{if(!(a-u<this.tShift[o]))break;t++}a++}s[i]=t>r?new Array(t-r+1).join(" ")+this.src.slice(a,c):this.src.slice(a,c)}return s.join("")},It.prototype.Token=_t;function Mt(t,e){const r=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];return t.src.slice(r,n)}function Tt(t){const e=[],r=t.length;let n=0,s=t.charCodeAt(n),i=!1,o=0,u="";for(;n<r;)124===s&&(i?(u+=t.substring(o,n-1),o=n):(e.push(u+t.substring(o,n)),u="",o=n+1)),i=92===s,n++,s=t.charCodeAt(n);return e.push(u+t.substring(o)),e}function Rt(t,e){const r=t.eMarks[e];let n=t.bMarks[e]+t.tShift[e];const s=t.src.charCodeAt(n++);if(42!==s&&45!==s&&43!==s)return-1;if(n<r){if(!st(t.src.charCodeAt(n)))return-1}return n}function Nt(t,e){const r=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];let s=r;if(s+1>=n)return-1;let i=t.src.charCodeAt(s++);if(i<48||i>57)return-1;for(;;){if(s>=n)return-1;if(i=t.src.charCodeAt(s++),!(i>=48&&i<=57)){if(41===i||46===i)break;return-1}if(s-r>=10)return-1}return s<n&&(i=t.src.charCodeAt(s),!st(i))?-1:s}const Pt="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",Ot="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",jt=new RegExp("^(?:"+Pt+"|"+Ot+"|\x3c!---?>|\x3c!--(?:[^-]|-[^-]|--[^>])*--\x3e|<[?][\\s\\S]*?[?]>|<![A-Za-z][^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),Zt=new RegExp("^(?:"+Pt+"|"+Ot+")"),$t=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"].join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(Zt.source+"\\s*$"),/^$/,!1]];const Ut=[["table",function(t,e,r,n){if(e+2>r)return!1;let s=e+1;if(t.sCount[s]<t.blkIndent)return!1;if(t.sCount[s]-t.blkIndent>=4)return!1;let i=t.bMarks[s]+t.tShift[s];if(i>=t.eMarks[s])return!1;const o=t.src.charCodeAt(i++);if(124!==o&&45!==o&&58!==o)return!1;if(i>=t.eMarks[s])return!1;const u=t.src.charCodeAt(i++);if(124!==u&&45!==u&&58!==u&&!st(u))return!1;if(45===o&&st(u))return!1;for(;i<t.eMarks[s];){const e=t.src.charCodeAt(i);if(124!==e&&45!==e&&58!==e&&!st(e))return!1;i++}let c=Mt(t,e+1),a=c.split("|");const l=[];for(let t=0;t<a.length;t++){const e=a[t].trim();if(!e){if(0===t||t===a.length-1)continue;return!1}if(!/^:?-+:?$/.test(e))return!1;58===e.charCodeAt(e.length-1)?l.push(58===e.charCodeAt(0)?"center":"right"):58===e.charCodeAt(0)?l.push("left"):l.push("")}if(c=Mt(t,e).trim(),-1===c.indexOf("|"))return!1;if(t.sCount[e]-t.blkIndent>=4)return!1;a=Tt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop();const h=a.length;if(0===h||h!==l.length)return!1;if(n)return!0;const p=t.parentType;t.parentType="table";const f=t.md.block.ruler.getRules("blockquote"),d=[e,0];t.push("table_open","table",1).map=d,t.push("thead_open","thead",1).map=[e,e+1],t.push("tr_open","tr",1).map=[e,e+1];for(let e=0;e<a.length;e++){const r=t.push("th_open","th",1);l[e]&&(r.attrs=[["style","text-align:"+l[e]]]);const n=t.push("inline","",0);n.content=a[e].trim(),n.children=[],t.push("th_close","th",-1)}let _;t.push("tr_close","tr",-1),t.push("thead_close","thead",-1);let m=0;for(s=e+2;s<r&&!(t.sCount[s]<t.blkIndent);s++){let n=!1;for(let e=0,i=f.length;e<i;e++)if(f[e](t,s,r,!0)){n=!0;break}if(n)break;if(c=Mt(t,s).trim(),!c)break;if(t.sCount[s]-t.blkIndent>=4)break;if(a=Tt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop(),m+=h-a.length,m>65536)break;if(s===e+2){t.push("tbody_open","tbody",1).map=_=[e+2,0]}t.push("tr_open","tr",1).map=[s,s+1];for(let e=0;e<h;e++){const r=t.push("td_open","td",1);l[e]&&(r.attrs=[["style","text-align:"+l[e]]]);const n=t.push("inline","",0);n.content=a[e]?a[e].trim():"",n.children=[],t.push("td_close","td",-1)}t.push("tr_close","tr",-1)}return _&&(t.push("tbody_close","tbody",-1),_[1]=s),t.push("table_close","table",-1),d[1]=s,t.parentType=p,t.line=s,!0},["paragraph","reference"]],["code",function(t,e,r){if(t.sCount[e]-t.blkIndent<4)return!1;let n=e+1,s=n;for(;n<r;)if(t.isEmpty(n))n++;else{if(!(t.sCount[n]-t.blkIndent>=4))break;n++,s=n}t.line=s;const i=t.push("code_block","code",0);return i.content=t.getLines(e,s,4+t.blkIndent,!1)+"\n",i.map=[e,t.line],!0}],["fence",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(s+3>i)return!1;const o=t.src.charCodeAt(s);if(126!==o&&96!==o)return!1;let u=s;s=t.skipChars(s,o);let c=s-u;if(c<3)return!1;const a=t.src.slice(u,s),l=t.src.slice(s,i);if(96===o&&l.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;let h=e,p=!1;for(;(h++,!(h>=r))&&(s=u=t.bMarks[h]+t.tShift[h],i=t.eMarks[h],!(s<i&&t.sCount[h]<t.blkIndent));)if(t.src.charCodeAt(s)===o&&!(t.sCount[h]-t.blkIndent>=4||(s=t.skipChars(s,o),s-u<c||(s=t.skipSpaces(s),s<i)))){p=!0;break}c=t.sCount[e],t.line=h+(p?1:0);const f=t.push("fence","code",0);return f.info=l,f.content=t.getLines(e+1,h,c,!0),f.markup=a,f.map=[e,t.line],!0},["paragraph","reference","blockquote","list"]],["blockquote",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];const o=t.lineMax;if(t.sCount[e]-t.blkIndent>=4)return!1;if(62!==t.src.charCodeAt(s))return!1;if(n)return!0;const u=[],c=[],a=[],l=[],h=t.md.block.ruler.getRules("blockquote"),p=t.parentType;t.parentType="blockquote";let f,d=!1;for(f=e;f<r;f++){const e=t.sCount[f]<t.blkIndent;if(s=t.bMarks[f]+t.tShift[f],i=t.eMarks[f],s>=i)break;if(62===t.src.charCodeAt(s++)&&!e){let e,r,n=t.sCount[f]+1;32===t.src.charCodeAt(s)?(s++,n++,r=!1,e=!0):9===t.src.charCodeAt(s)?(e=!0,(t.bsCount[f]+n)%4==3?(s++,n++,r=!1):r=!0):e=!1;let o=n;for(u.push(t.bMarks[f]),t.bMarks[f]=s;s<i;){const e=t.src.charCodeAt(s);if(!st(e))break;9===e?o+=4-(o+t.bsCount[f]+(r?1:0))%4:o++,s++}d=s>=i,c.push(t.bsCount[f]),t.bsCount[f]=t.sCount[f]+1+(e?1:0),a.push(t.sCount[f]),t.sCount[f]=o-n,l.push(t.tShift[f]),t.tShift[f]=s-t.bMarks[f];continue}if(d)break;let n=!1;for(let e=0,s=h.length;e<s;e++)if(h[e](t,f,r,!0)){n=!0;break}if(n){t.lineMax=f,0!==t.blkIndent&&(u.push(t.bMarks[f]),c.push(t.bsCount[f]),l.push(t.tShift[f]),a.push(t.sCount[f]),t.sCount[f]-=t.blkIndent);break}u.push(t.bMarks[f]),c.push(t.bsCount[f]),l.push(t.tShift[f]),a.push(t.sCount[f]),t.sCount[f]=-1}const _=t.blkIndent;t.blkIndent=0;const m=t.push("blockquote_open","blockquote",1);m.markup=">";const g=[e,0];m.map=g,t.md.block.tokenize(t,e,f),t.push("blockquote_close","blockquote",-1).markup=">",t.lineMax=o,t.parentType=p,g[1]=t.line;for(let r=0;r<l.length;r++)t.bMarks[r+e]=u[r],t.tShift[r+e]=l[r],t.sCount[r+e]=a[r],t.bsCount[r+e]=c[r];return t.blkIndent=_,!0},["paragraph","reference","blockquote","list"]],["hr",function(t,e,r,n){const s=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;let i=t.bMarks[e]+t.tShift[e];const o=t.src.charCodeAt(i++);if(42!==o&&45!==o&&95!==o)return!1;let u=1;for(;i<s;){const e=t.src.charCodeAt(i++);if(e!==o&&!st(e))return!1;e===o&&u++}if(u<3)return!1;if(n)return!0;t.line=e+1;const c=t.push("hr","hr",0);return c.map=[e,t.line],c.markup=Array(u+1).join(String.fromCharCode(o)),!0},["paragraph","reference","blockquote","list"]],["list",function(t,e,r,n){let s,i,o,u,c=e,a=!0;if(t.sCount[c]-t.blkIndent>=4)return!1;if(t.listIndent>=0&&t.sCount[c]-t.listIndent>=4&&t.sCount[c]<t.blkIndent)return!1;let l,h,p,f=!1;if(n&&"paragraph"===t.parentType&&t.sCount[c]>=t.blkIndent&&(f=!0),(p=Nt(t,c))>=0){if(l=!0,o=t.bMarks[c]+t.tShift[c],h=Number(t.src.slice(o,p-1)),f&&1!==h)return!1}else{if(!((p=Rt(t,c))>=0))return!1;l=!1}if(f&&t.skipSpaces(p)>=t.eMarks[c])return!1;if(n)return!0;const d=t.src.charCodeAt(p-1),_=t.tokens.length;l?(u=t.push("ordered_list_open","ol",1),1!==h&&(u.attrs=[["start",h]])):u=t.push("bullet_list_open","ul",1);const m=[c,0];u.map=m,u.markup=String.fromCharCode(d);let g=!1;const k=t.md.block.ruler.getRules("list"),D=t.parentType;for(t.parentType="list";c<r;){i=p,s=t.eMarks[c];const e=t.sCount[c]+p-(t.bMarks[c]+t.tShift[c]);let n=e;for(;i<s;){const e=t.src.charCodeAt(i);if(9===e)n+=4-(n+t.bsCount[c])%4;else{if(32!==e)break;n++}i++}const h=i;let f;f=h>=s?1:n-e,f>4&&(f=1);const _=e+f;u=t.push("list_item_open","li",1),u.markup=String.fromCharCode(d);const m=[c,0];u.map=m,l&&(u.info=t.src.slice(o,p-1));const D=t.tight,C=t.tShift[c],y=t.sCount[c],E=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=_,t.tight=!0,t.tShift[c]=h-t.bMarks[c],t.sCount[c]=n,h>=s&&t.isEmpty(c+1)?t.line=Math.min(t.line+2,r):t.md.block.tokenize(t,c,r,!0),t.tight&&!g||(a=!1),g=t.line-c>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=E,t.tShift[c]=C,t.sCount[c]=y,t.tight=D,u=t.push("list_item_close","li",-1),u.markup=String.fromCharCode(d),c=t.line,m[1]=c,c>=r)break;if(t.sCount[c]<t.blkIndent)break;if(t.sCount[c]-t.blkIndent>=4)break;let A=!1;for(let e=0,n=k.length;e<n;e++)if(k[e](t,c,r,!0)){A=!0;break}if(A)break;if(l){if(p=Nt(t,c),p<0)break;o=t.bMarks[c]+t.tShift[c]}else if(p=Rt(t,c),p<0)break;if(d!==t.src.charCodeAt(p-1))break}return u=l?t.push("ordered_list_close","ol",-1):t.push("bullet_list_close","ul",-1),u.markup=String.fromCharCode(d),m[1]=c,t.line=c,t.parentType=D,a&&function(t,e){const r=t.level+2;for(let n=e+2,s=t.tokens.length-2;n<s;n++)t.tokens[n].level===r&&"paragraph_open"===t.tokens[n].type&&(t.tokens[n+2].hidden=!0,t.tokens[n].hidden=!0,n+=2)}(t,_),!0},["paragraph","reference","blockquote"]],["reference",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e],o=e+1;if(t.sCount[e]-t.blkIndent>=4)return!1;if(91!==t.src.charCodeAt(s))return!1;function u(e){const r=t.lineMax;if(e>=r||t.isEmpty(e))return null;let n=!1;if(t.sCount[e]-t.blkIndent>3&&(n=!0),t.sCount[e]<0&&(n=!0),!n){const n=t.md.block.ruler.getRules("reference"),s=t.parentType;t.parentType="reference";let i=!1;for(let s=0,o=n.length;s<o;s++)if(n[s](t,e,r,!0)){i=!0;break}if(t.parentType=s,i)return null}const s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];return t.src.slice(s,i+1)}let c=t.src.slice(s,i+1);i=c.length;let a=-1;for(s=1;s<i;s++){const t=c.charCodeAt(s);if(91===t)return!1;if(93===t){a=s;break}if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(92===t&&(s++,s<i&&10===c.charCodeAt(s))){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}}if(a<0||58!==c.charCodeAt(a+1))return!1;for(s=a+2;s<i;s++){const t=c.charCodeAt(s);if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(!st(t))break}const l=t.md.helpers.parseLinkDestination(c,s,i);if(!l.ok)return!1;const h=t.md.normalizeLink(l.str);if(!t.md.validateLink(h))return!1;s=l.pos;const p=s,f=o,d=s;for(;s<i;s++){const t=c.charCodeAt(s);if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(!st(t))break}let _,m=t.md.helpers.parseLinkTitle(c,s,i);for(;m.can_continue;){const e=u(o);if(null===e)break;c+=e,s=i,i=c.length,o++,m=t.md.helpers.parseLinkTitle(c,s,i,m)}for(s<i&&d!==s&&m.ok?(_=m.str,s=m.pos):(_="",s=p,o=f);s<i;){if(!st(c.charCodeAt(s)))break;s++}if(s<i&&10!==c.charCodeAt(s)&&_)for(_="",s=p,o=f;s<i;){if(!st(c.charCodeAt(s)))break;s++}if(s<i&&10!==c.charCodeAt(s))return!1;const g=ct(c.slice(1,a));return!!g&&(n||(void 0===t.env.references&&(t.env.references={}),void 0===t.env.references[g]&&(t.env.references[g]={title:_,href:h}),t.line=o),!0)}],["html_block",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(s))return!1;let o=t.src.slice(s,i),u=0;for(;u<$t.length&&!$t[u][0].test(o);u++);if(u===$t.length)return!1;if(n)return $t[u][2];let c=e+1;if(!$t[u][1].test(o))for(;c<r&&!(t.sCount[c]<t.blkIndent);c++)if(s=t.bMarks[c]+t.tShift[c],i=t.eMarks[c],o=t.src.slice(s,i),$t[u][1].test(o)){0!==o.length&&c++;break}t.line=c;const a=t.push("html_block","",0);return a.map=[e,c],a.content=t.getLines(e,c,t.blkIndent,!0),!0},["paragraph","reference","blockquote"]],["heading",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;let o=t.src.charCodeAt(s);if(35!==o||s>=i)return!1;let u=1;for(o=t.src.charCodeAt(++s);35===o&&s<i&&u<=6;)u++,o=t.src.charCodeAt(++s);if(u>6||s<i&&!st(o))return!1;if(n)return!0;i=t.skipSpacesBack(i,s);const c=t.skipCharsBack(i,35,s);c>s&&st(t.src.charCodeAt(c-1))&&(i=c),t.line=e+1;const a=t.push("heading_open","h"+String(u),1);a.markup="########".slice(0,u),a.map=[e,t.line];const l=t.push("inline","",0);return l.content=t.src.slice(s,i).trim(),l.map=[e,t.line],l.children=[],t.push("heading_close","h"+String(u),-1).markup="########".slice(0,u),!0},["paragraph","reference","blockquote"]],["lheading",function(t,e,r){const n=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const s=t.parentType;t.parentType="paragraph";let i,o=0,u=e+1;for(;u<r&&!t.isEmpty(u);u++){if(t.sCount[u]-t.blkIndent>3)continue;if(t.sCount[u]>=t.blkIndent){let e=t.bMarks[u]+t.tShift[u];const r=t.eMarks[u];if(e<r&&(i=t.src.charCodeAt(e),(45===i||61===i)&&(e=t.skipChars(e,i),e=t.skipSpaces(e),e>=r))){o=61===i?1:2;break}}if(t.sCount[u]<0)continue;let e=!1;for(let s=0,i=n.length;s<i;s++)if(n[s](t,u,r,!0)){e=!0;break}if(e)break}if(!o)return!1;const c=t.getLines(e,u,t.blkIndent,!1).trim();t.line=u+1;const a=t.push("heading_open","h"+String(o),1);a.markup=String.fromCharCode(i),a.map=[e,t.line];const l=t.push("inline","",0);return l.content=c,l.map=[e,t.line-1],l.children=[],t.push("heading_close","h"+String(o),-1).markup=String.fromCharCode(i),t.parentType=s,!0}],["paragraph",function(t,e,r){const n=t.md.block.ruler.getRules("paragraph"),s=t.parentType;let i=e+1;for(t.parentType="paragraph";i<r&&!t.isEmpty(i);i++){if(t.sCount[i]-t.blkIndent>3)continue;if(t.sCount[i]<0)continue;let e=!1;for(let s=0,o=n.length;s<o;s++)if(n[s](t,i,r,!0)){e=!0;break}if(e)break}const o=t.getLines(e,i,t.blkIndent,!1).trim();t.line=i,t.push("paragraph_open","p",1).map=[e,t.line];const u=t.push("inline","",0);return u.content=o,u.map=[e,t.line],u.children=[],t.push("paragraph_close","p",-1),t.parentType=s,!0}]];function Ht(){this.ruler=new dt;for(let t=0;t<Ut.length;t++)this.ruler.push(Ut[t][0],Ut[t][1],{alt:(Ut[t][2]||[]).slice()})}function Vt(t,e,r,n){this.src=t,this.env=r,this.md=e,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1,this.linkLevel=0}function Gt(t){switch(t){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}Ht.prototype.tokenize=function(t,e,r){const n=this.ruler.getRules(""),s=n.length,i=t.md.options.maxNesting;let o=e,u=!1;for(;o<r&&(t.line=o=t.skipEmptyLines(o),!(o>=r))&&!(t.sCount[o]<t.blkIndent);){if(t.level>=i){t.line=r;break}const e=t.line;let c=!1;for(let i=0;i<s;i++)if(c=n[i](t,o,r,!1),c){if(e>=t.line)throw new Error("block rule didn't increment state.line");break}if(!c)throw new Error("none of the block rules matched");t.tight=!u,t.isEmpty(t.line-1)&&(u=!0),o=t.line,o<r&&t.isEmpty(o)&&(u=!0,o++,t.line=o)}},Ht.prototype.parse=function(t,e,r,n){if(!t)return;const s=new this.State(t,e,r,n);this.tokenize(s,s.line,s.lineMax)},Ht.prototype.State=It,Vt.prototype.pushPending=function(){const t=new _t("text","",0);return t.content=this.pending,t.level=this.pendingLevel,this.tokens.push(t),this.pending="",t},Vt.prototype.push=function(t,e,r){this.pending&&this.pushPending();const n=new _t(t,e,r);let s=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],s={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(s),n},Vt.prototype.scanDelims=function(t,e){const r=this.posMax,n=this.src.charCodeAt(t),s=t>0?this.src.charCodeAt(t-1):32;let i=t;for(;i<r&&this.src.charCodeAt(i)===n;)i++;const o=i-t,u=i<r?this.src.charCodeAt(i):32,c=ut(s)||ot(String.fromCharCode(s)),a=ut(u)||ot(String.fromCharCode(u)),l=it(s),h=it(u),p=!h&&(!a||l||c),f=!l&&(!c||h||a);return{can_open:p&&(e||!f||c),can_close:f&&(e||!p||a),length:o}},Vt.prototype.Token=_t;const Wt=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;const Jt=[];for(let t=0;t<256;t++)Jt.push(0);function Qt(t,e){let r;const n=[],s=e.length;for(let i=0;i<s;i++){const s=e[i];if(126!==s.marker)continue;if(-1===s.end)continue;const o=e[s.end];r=t.tokens[s.token],r.type="s_open",r.tag="s",r.nesting=1,r.markup="~~",r.content="",r=t.tokens[o.token],r.type="s_close",r.tag="s",r.nesting=-1,r.markup="~~",r.content="","text"===t.tokens[o.token-1].type&&"~"===t.tokens[o.token-1].content&&n.push(o.token-1)}for(;n.length;){const e=n.pop();let s=e+1;for(;s<t.tokens.length&&"s_close"===t.tokens[s].type;)s++;s--,e!==s&&(r=t.tokens[s],t.tokens[s]=t.tokens[e],t.tokens[e]=r)}}"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(t){Jt[t.charCodeAt(0)]=1}));var Xt={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(126!==n)return!1;const s=t.scanDelims(t.pos,!0);let i=s.length;const o=String.fromCharCode(n);if(i<2)return!1;let u;i%2&&(u=t.push("text","",0),u.content=o,i--);for(let e=0;e<i;e+=2)u=t.push("text","",0),u.content=o+o,t.delimiters.push({marker:n,length:0,token:t.tokens.length-1,end:-1,open:s.can_open,close:s.can_close});return t.pos+=s.length,!0},postProcess:function(t){const e=t.tokens_meta,r=t.tokens_meta.length;Qt(t,t.delimiters);for(let n=0;n<r;n++)e[n]&&e[n].delimiters&&Qt(t,e[n].delimiters)}};function Yt(t,e){for(let r=e.length-1;r>=0;r--){const n=e[r];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const s=e[n.end],i=r>0&&e[r-1].end===n.end+1&&e[r-1].marker===n.marker&&e[r-1].token===n.token-1&&e[n.end+1].token===s.token+1,o=String.fromCharCode(n.marker),u=t.tokens[n.token];u.type=i?"strong_open":"em_open",u.tag=i?"strong":"em",u.nesting=1,u.markup=i?o+o:o,u.content="";const c=t.tokens[s.token];c.type=i?"strong_close":"em_close",c.tag=i?"strong":"em",c.nesting=-1,c.markup=i?o+o:o,c.content="",i&&(t.tokens[e[r-1].token].content="",t.tokens[e[n.end+1].token].content="",r--)}}var Kt={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(95!==n&&42!==n)return!1;const s=t.scanDelims(t.pos,42===n);for(let e=0;e<s.length;e++){t.push("text","",0).content=String.fromCharCode(n),t.delimiters.push({marker:n,length:s.length,token:t.tokens.length-1,end:-1,open:s.can_open,close:s.can_close})}return t.pos+=s.length,!0},postProcess:function(t){const e=t.tokens_meta,r=t.tokens_meta.length;Yt(t,t.delimiters);for(let n=0;n<r;n++)e[n]&&e[n].delimiters&&Yt(t,e[n].delimiters)}};const te=/^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,ee=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;const re=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,ne=/^&([a-z][a-z0-9]{1,31});/i;function se(t){const e={},r=t.length;if(!r)return;let n=0,s=-2;const i=[];for(let o=0;o<r;o++){const r=t[o];if(i.push(0),t[n].marker===r.marker&&s===r.token-1||(n=o),s=r.token,r.length=r.length||0,!r.close)continue;e.hasOwnProperty(r.marker)||(e[r.marker]=[-1,-1,-1,-1,-1,-1]);const u=e[r.marker][(r.open?3:0)+r.length%3];let c=n-i[n]-1,a=c;for(;c>u;c-=i[c]+1){const e=t[c];if(e.marker===r.marker&&(e.open&&e.end<0)){let n=!1;if((e.close||r.open)&&(e.length+r.length)%3==0&&(e.length%3==0&&r.length%3==0||(n=!0)),!n){const n=c>0&&!t[c-1].open?i[c-1]+1:0;i[o]=o-c+n,i[c]=n,r.open=!1,e.end=o,e.close=!1,a=-1,s=-2;break}}}-1!==a&&(e[r.marker][(r.open?3:0)+(r.length||0)%3]=a)}}const ie=[["text",function(t,e){let r=t.pos;for(;r<t.posMax&&!Gt(t.src.charCodeAt(r));)r++;return r!==t.pos&&(e||(t.pending+=t.src.slice(t.pos,r)),t.pos=r,!0)}],["linkify",function(t,e){if(!t.md.options.linkify)return!1;if(t.linkLevel>0)return!1;const r=t.pos;if(r+3>t.posMax)return!1;if(58!==t.src.charCodeAt(r))return!1;if(47!==t.src.charCodeAt(r+1))return!1;if(47!==t.src.charCodeAt(r+2))return!1;const n=t.pending.match(Wt);if(!n)return!1;const s=n[1],i=t.md.linkify.matchAtStart(t.src.slice(r-s.length));if(!i)return!1;let o=i.url;if(o.length<=s.length)return!1;o=o.replace(/\*+$/,"");const u=t.md.normalizeLink(o);if(!t.md.validateLink(u))return!1;if(!e){t.pending=t.pending.slice(0,-s.length);const e=t.push("link_open","a",1);e.attrs=[["href",u]],e.markup="linkify",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(o);const r=t.push("link_close","a",-1);r.markup="linkify",r.info="auto"}return t.pos+=o.length-s.length,!0}],["newline",function(t,e){let r=t.pos;if(10!==t.src.charCodeAt(r))return!1;const n=t.pending.length-1,s=t.posMax;if(!e)if(n>=0&&32===t.pending.charCodeAt(n))if(n>=1&&32===t.pending.charCodeAt(n-1)){let e=n-1;for(;e>=1&&32===t.pending.charCodeAt(e-1);)e--;t.pending=t.pending.slice(0,e),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(r++;r<s&&st(t.src.charCodeAt(r));)r++;return t.pos=r,!0}],["escape",function(t,e){let r=t.pos;const n=t.posMax;if(92!==t.src.charCodeAt(r))return!1;if(r++,r>=n)return!1;let s=t.src.charCodeAt(r);if(10===s){for(e||t.push("hardbreak","br",0),r++;r<n&&(s=t.src.charCodeAt(r),st(s));)r++;return t.pos=r,!0}let i=t.src[r];if(s>=55296&&s<=56319&&r+1<n){const e=t.src.charCodeAt(r+1);e>=56320&&e<=57343&&(i+=t.src[r+1],r++)}const o="\\"+i;if(!e){const e=t.push("text_special","",0);s<256&&0!==Jt[s]?e.content=i:e.content=o,e.markup=o,e.info="escape"}return t.pos=r+1,!0}],["backticks",function(t,e){let r=t.pos;if(96!==t.src.charCodeAt(r))return!1;const n=r;r++;const s=t.posMax;for(;r<s&&96===t.src.charCodeAt(r);)r++;const i=t.src.slice(n,r),o=i.length;if(t.backticksScanned&&(t.backticks[o]||0)<=n)return e||(t.pending+=i),t.pos+=o,!0;let u,c=r;for(;-1!==(u=t.src.indexOf("`",c));){for(c=u+1;c<s&&96===t.src.charCodeAt(c);)c++;const n=c-u;if(n===o){if(!e){const e=t.push("code_inline","code",0);e.markup=i,e.content=t.src.slice(r,u).replace(/\n/g," ").replace(/^ (.+) $/,"$1")}return t.pos=c,!0}t.backticks[n]=u}return t.backticksScanned=!0,e||(t.pending+=i),t.pos+=o,!0}],["strikethrough",Xt.tokenize],["emphasis",Kt.tokenize],["link",function(t,e){let r,n,s,i,o="",u="",c=t.pos,a=!0;if(91!==t.src.charCodeAt(t.pos))return!1;const l=t.pos,h=t.posMax,p=t.pos+1,f=t.md.helpers.parseLinkLabel(t,t.pos,!0);if(f<0)return!1;let d=f+1;if(d<h&&40===t.src.charCodeAt(d)){for(a=!1,d++;d<h&&(r=t.src.charCodeAt(d),st(r)||10===r);d++);if(d>=h)return!1;if(c=d,s=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),s.ok){for(o=t.md.normalizeLink(s.str),t.md.validateLink(o)?d=s.pos:o="",c=d;d<h&&(r=t.src.charCodeAt(d),st(r)||10===r);d++);if(s=t.md.helpers.parseLinkTitle(t.src,d,t.posMax),d<h&&c!==d&&s.ok)for(u=s.str,d=s.pos;d<h&&(r=t.src.charCodeAt(d),st(r)||10===r);d++);}(d>=h||41!==t.src.charCodeAt(d))&&(a=!0),d++}if(a){if(void 0===t.env.references)return!1;if(d<h&&91===t.src.charCodeAt(d)?(c=d+1,d=t.md.helpers.parseLinkLabel(t,d),d>=0?n=t.src.slice(c,d++):d=f+1):d=f+1,n||(n=t.src.slice(p,f)),i=t.env.references[ct(n)],!i)return t.pos=l,!1;o=i.href,u=i.title}if(!e){t.pos=p,t.posMax=f;const e=[["href",o]];t.push("link_open","a",1).attrs=e,u&&e.push(["title",u]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=d,t.posMax=h,!0}],["image",function(t,e){let r,n,s,i,o,u,c,a,l="";const h=t.pos,p=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;const f=t.pos+2,d=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(d<0)return!1;if(i=d+1,i<p&&40===t.src.charCodeAt(i)){for(i++;i<p&&(r=t.src.charCodeAt(i),st(r)||10===r);i++);if(i>=p)return!1;for(a=i,u=t.md.helpers.parseLinkDestination(t.src,i,t.posMax),u.ok&&(l=t.md.normalizeLink(u.str),t.md.validateLink(l)?i=u.pos:l=""),a=i;i<p&&(r=t.src.charCodeAt(i),st(r)||10===r);i++);if(u=t.md.helpers.parseLinkTitle(t.src,i,t.posMax),i<p&&a!==i&&u.ok)for(c=u.str,i=u.pos;i<p&&(r=t.src.charCodeAt(i),st(r)||10===r);i++);else c="";if(i>=p||41!==t.src.charCodeAt(i))return t.pos=h,!1;i++}else{if(void 0===t.env.references)return!1;if(i<p&&91===t.src.charCodeAt(i)?(a=i+1,i=t.md.helpers.parseLinkLabel(t,i),i>=0?s=t.src.slice(a,i++):i=d+1):i=d+1,s||(s=t.src.slice(f,d)),o=t.env.references[ct(s)],!o)return t.pos=h,!1;l=o.href,c=o.title}if(!e){n=t.src.slice(f,d);const e=[];t.md.inline.parse(n,t.md,t.env,e);const r=t.push("image","img",0),s=[["src",l],["alt",""]];r.attrs=s,r.children=e,r.content=n,c&&s.push(["title",c])}return t.pos=i,t.posMax=p,!0}],["autolink",function(t,e){let r=t.pos;if(60!==t.src.charCodeAt(r))return!1;const n=t.pos,s=t.posMax;for(;;){if(++r>=s)return!1;const e=t.src.charCodeAt(r);if(60===e)return!1;if(62===e)break}const i=t.src.slice(n+1,r);if(ee.test(i)){const r=t.md.normalizeLink(i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}if(te.test(i)){const r=t.md.normalizeLink("mailto:"+i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}return!1}],["html_inline",function(t,e){if(!t.md.options.html)return!1;const r=t.posMax,n=t.pos;if(60!==t.src.charCodeAt(n)||n+2>=r)return!1;const s=t.src.charCodeAt(n+1);if(33!==s&&63!==s&&47!==s&&!function(t){const e=32|t;return e>=97&&e<=122}(s))return!1;const i=t.src.slice(n).match(jt);if(!i)return!1;if(!e){const e=t.push("html_inline","",0);e.content=i[0],o=e.content,/^<a[>\s]/i.test(o)&&t.linkLevel++,function(t){return/^<\/a\s*>/i.test(t)}(e.content)&&t.linkLevel--}var o;return t.pos+=i[0].length,!0}],["entity",function(t,e){const r=t.pos,n=t.posMax;if(38!==t.src.charCodeAt(r))return!1;if(r+1>=n)return!1;if(35===t.src.charCodeAt(r+1)){const n=t.src.slice(r).match(re);if(n){if(!e){const e="x"===n[1][0].toLowerCase()?parseInt(n[1].slice(1),16):parseInt(n[1],10),r=t.push("text_special","",0);r.content=V(e)?G(e):G(65533),r.markup=n[0],r.info="entity"}return t.pos+=n[0].length,!0}}else{const n=t.src.slice(r).match(ne);if(n){const r=j(n[0]);if(r!==n[0]){if(!e){const e=t.push("text_special","",0);e.content=r,e.markup=n[0],e.info="entity"}return t.pos+=n[0].length,!0}}}return!1}]],oe=[["balance_pairs",function(t){const e=t.tokens_meta,r=t.tokens_meta.length;se(t.delimiters);for(let t=0;t<r;t++)e[t]&&e[t].delimiters&&se(e[t].delimiters)}],["strikethrough",Xt.postProcess],["emphasis",Kt.postProcess],["fragments_join",function(t){let e,r,n=0;const s=t.tokens,i=t.tokens.length;for(e=r=0;e<i;e++)s[e].nesting<0&&n--,s[e].level=n,s[e].nesting>0&&n++,"text"===s[e].type&&e+1<i&&"text"===s[e+1].type?s[e+1].content=s[e].content+s[e+1].content:(e!==r&&(s[r]=s[e]),r++);e!==r&&(s.length=r)}]];function ue(){this.ruler=new dt;for(let t=0;t<ie.length;t++)this.ruler.push(ie[t][0],ie[t][1]);this.ruler2=new dt;for(let t=0;t<oe.length;t++)this.ruler2.push(oe[t][0],oe[t][1])}function ce(t){return Array.prototype.slice.call(arguments,1).forEach((function(e){e&&Object.keys(e).forEach((function(r){t[r]=e[r]}))})),t}function ae(t){return Object.prototype.toString.call(t)}function le(t){return"[object Function]"===ae(t)}function he(t){return t.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}ue.prototype.skipToken=function(t){const e=t.pos,r=this.ruler.getRules(""),n=r.length,s=t.md.options.maxNesting,i=t.cache;if(void 0!==i[e])return void(t.pos=i[e]);let o=!1;if(t.level<s){for(let s=0;s<n;s++)if(t.level++,o=r[s](t,!0),t.level--,o){if(e>=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;o||t.pos++,i[e]=t.pos},ue.prototype.tokenize=function(t){const e=this.ruler.getRules(""),r=e.length,n=t.posMax,s=t.md.options.maxNesting;for(;t.pos<n;){const i=t.pos;let o=!1;if(t.level<s)for(let n=0;n<r;n++)if(o=e[n](t,!1),o){if(i>=t.pos)throw new Error("inline rule didn't increment state.pos");break}if(o){if(t.pos>=n)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},ue.prototype.parse=function(t,e,r,n){const s=new this.State(t,e,r,n);this.tokenize(s);const i=this.ruler2.getRules(""),o=i.length;for(let t=0;t<o;t++)i[t](s)},ue.prototype.State=Vt;const pe={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};const fe={"http:":{validate:function(t,e,r){const n=t.slice(e);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(t,e,r){const n=t.slice(e);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?e>=3&&":"===t[e-3]||e>=3&&"/"===t[e-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,r){const n=t.slice(e);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},de="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",_e="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function me(t){const e=t.re=function(t){const e={};t=t||{},e.src_Any=C.source,e.src_Cc=y.source,e.src_Z=b.source,e.src_P=E.source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join("|"),e.src_ZCc=[e.src_Z,e.src_Cc].join("|");const r="[><\uff5c]";return e.src_pseudo_letter="(?:(?![><\uff5c]|"+e.src_ZPCc+")"+e.src_Any+")",e.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",e.src_auth="(?:(?:(?!"+e.src_ZCc+"|[@/\\[\\]()]).)+@)?",e.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",e.src_host_terminator="(?=$|[><\uff5c]|"+e.src_ZPCc+")(?!"+(t["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+e.src_ZPCc+"))",e.src_path="(?:[/?#](?:(?!"+e.src_ZCc+"|"+r+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+e.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+e.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+e.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+e.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+e.src_ZCc+"|[']).)+\\'|\\'(?="+e.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+e.src_ZCc+"|[.]|$)|"+(t["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+e.src_ZCc+"|$)|;(?!"+e.src_ZCc+"|$)|\\!+(?!"+e.src_ZCc+"|[!]|$)|\\?(?!"+e.src_ZCc+"|[?]|$))+|\\/)?",e.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',e.src_xn="xn--[a-z0-9\\-]{1,59}",e.src_domain_root="(?:"+e.src_xn+"|"+e.src_pseudo_letter+"{1,63})",e.src_domain="(?:"+e.src_xn+"|(?:"+e.src_pseudo_letter+")|(?:"+e.src_pseudo_letter+"(?:-|"+e.src_pseudo_letter+"){0,61}"+e.src_pseudo_letter+"))",e.src_host="(?:(?:(?:(?:"+e.src_domain+")\\.)*"+e.src_domain+"))",e.tpl_host_fuzzy="(?:"+e.src_ip4+"|(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%)))",e.tpl_host_no_ip_fuzzy="(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%))",e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+e.src_ZPCc+"|>|$))",e.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+e.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+e.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}(t.__opts__),r=t.__tlds__.slice();function n(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||r.push(de),r.push(e.src_xn),e.src_tlds=r.join("|"),e.email_fuzzy=RegExp(n(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(n(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(n(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(n(e.tpl_host_fuzzy_test),"i");const s=[];function i(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach((function(e){const r=t.__schemas__[e];if(null===r)return;const n={validate:null,link:null};if(t.__compiled__[e]=n,"[object Object]"===ae(r))return!function(t){return"[object RegExp]"===ae(t)}(r.validate)?le(r.validate)?n.validate=r.validate:i(e,r):n.validate=function(t){return function(e,r){const n=e.slice(r);return t.test(n)?n.match(t)[0].length:0}}(r.validate),void(le(r.normalize)?n.normalize=r.normalize:r.normalize?i(e,r):n.normalize=function(t,e){e.normalize(t)});!function(t){return"[object String]"===ae(t)}(r)?i(e,r):s.push(e)})),s.forEach((function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)})),t.__compiled__[""]={validate:null,normalize:function(t,e){e.normalize(t)}};const o=Object.keys(t.__compiled__).filter((function(e){return e.length>0&&t.__compiled__[e]})).map(he).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+e.src_ZPCc+"))("+o+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+e.src_ZPCc+"))("+o+")","ig"),t.re.schema_at_start=RegExp("^"+t.re.schema_search.source,"i"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),function(t){t.__index__=-1,t.__text_cache__=""}(t)}function ge(t,e){const r=t.__index__,n=t.__last_index__,s=t.__text_cache__.slice(r,n);this.schema=t.__schema__.toLowerCase(),this.index=r+e,this.lastIndex=n+e,this.raw=s,this.text=s,this.url=s}function ke(t,e){const r=new ge(t,e);return t.__compiled__[r.schema].normalize(r,t),r}function De(t,e){if(!(this instanceof De))return new De(t,e);var r;e||(r=t,Object.keys(r||{}).reduce((function(t,e){return t||pe.hasOwnProperty(e)}),!1)&&(e=t,t={})),this.__opts__=ce({},pe,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=ce({},fe,t),this.__compiled__={},this.__tlds__=_e,this.__tlds_replaced__=!1,this.re={},me(this)}De.prototype.add=function(t,e){return this.__schemas__[t]=e,me(this),this},De.prototype.set=function(t){return this.__opts__=ce(this.__opts__,t),this},De.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;let e,r,n,s,i,o,u,c,a;if(this.re.schema_test.test(t))for(u=this.re.schema_search,u.lastIndex=0;null!==(e=u.exec(t));)if(s=this.testSchemaAt(t,e[2],u.lastIndex),s){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=t.search(this.re.host_fuzzy_test),c>=0&&(this.__index__<0||c<this.__index__)&&null!==(r=t.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=r.index+r[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__="",this.__index__=i,this.__last_index__=r.index+r[0].length))),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&(a=t.indexOf("@"),a>=0&&null!==(n=t.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,o=n.index+n[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&o>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=o))),this.__index__>=0},De.prototype.pretest=function(t){return this.re.pretest.test(t)},De.prototype.testSchemaAt=function(t,e,r){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,r,this):0},De.prototype.match=function(t){const e=[];let r=0;this.__index__>=0&&this.__text_cache__===t&&(e.push(ke(this,r)),r=this.__last_index__);let n=r?t.slice(r):t;for(;this.test(n);)e.push(ke(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return e.length?e:null},De.prototype.matchAtStart=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return null;const e=this.re.schema_at_start.exec(t);if(!e)return null;const r=this.testSchemaAt(t,e[2],e[0].length);return r?(this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+r,ke(this,0)):null},De.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter((function(t,e,r){return t!==r[e-1]})).reverse(),me(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,me(this),this)},De.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},De.prototype.onCompile=function(){};const Ce=2147483647,ye=36,Ee=/^xn--/,Ae=/[^\0-\x7F]/,be=/[\x2E\u3002\uFF0E\uFF61]/g,Fe={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},xe=Math.floor,we=String.fromCharCode;function ve(t){throw new RangeError(Fe[t])}function ze(t,e){const r=t.split("@");let n="";r.length>1&&(n=r[0]+"@",t=r[1]);const s=function(t,e){const r=[];let n=t.length;for(;n--;)r[n]=e(t[n]);return r}((t=t.replace(be,".")).split("."),e).join(".");return n+s}function Se(t){const e=[];let r=0;const n=t.length;for(;r<n;){const s=t.charCodeAt(r++);if(s>=55296&&s<=56319&&r<n){const n=t.charCodeAt(r++);56320==(64512&n)?e.push(((1023&s)<<10)+(1023&n)+65536):(e.push(s),r--)}else e.push(s)}return e}const qe=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},Be=function(t,e,r){let n=0;for(t=r?xe(t/700):t>>1,t+=xe(t/e);t>455;n+=ye)t=xe(t/35);return xe(n+36*t/(t+38))},Le=function(t){const e=[],r=t.length;let n=0,s=128,i=72,o=t.lastIndexOf("-");o<0&&(o=0);for(let r=0;r<o;++r)t.charCodeAt(r)>=128&&ve("not-basic"),e.push(t.charCodeAt(r));for(let c=o>0?o+1:0;c<r;){const o=n;for(let e=1,s=ye;;s+=ye){c>=r&&ve("invalid-input");const o=(u=t.charCodeAt(c++))>=48&&u<58?u-48+26:u>=65&&u<91?u-65:u>=97&&u<123?u-97:ye;o>=ye&&ve("invalid-input"),o>xe((Ce-n)/e)&&ve("overflow"),n+=o*e;const a=s<=i?1:s>=i+26?26:s-i;if(o<a)break;const l=ye-a;e>xe(Ce/l)&&ve("overflow"),e*=l}const a=e.length+1;i=Be(n-o,a,0==o),xe(n/a)>Ce-s&&ve("overflow"),s+=xe(n/a),n%=a,e.splice(n++,0,s)}var u;return String.fromCodePoint(...e)},Ie=function(t){const e=[],r=(t=Se(t)).length;let n=128,s=0,i=72;for(const r of t)r<128&&e.push(we(r));const o=e.length;let u=o;for(o&&e.push("-");u<r;){let r=Ce;for(const e of t)e>=n&&e<r&&(r=e);const c=u+1;r-n>xe((Ce-s)/c)&&ve("overflow"),s+=(r-n)*c,n=r;for(const r of t)if(r<n&&++s>Ce&&ve("overflow"),r===n){let t=s;for(let r=ye;;r+=ye){const n=r<=i?1:r>=i+26?26:r-i;if(t<n)break;const s=t-n,o=ye-n;e.push(we(qe(n+s%o,0))),t=xe(s/o)}e.push(we(qe(t,0))),i=Be(s,c,u===o),s=0,++u}++s,++n}return e.join("")},Me={version:"2.3.1",ucs2:{decode:Se,encode:t=>String.fromCodePoint(...t)},decode:Le,encode:Ie,toASCII:function(t){return ze(t,(function(t){return Ae.test(t)?"xn--"+Ie(t):t}))},toUnicode:function(t){return ze(t,(function(t){return Ee.test(t)?Le(t.slice(4).toLowerCase()):t}))}};const Te={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},Re=/^(vbscript|javascript|file|data):/,Ne=/^data:image\/(gif|png|jpeg|webp);/;function Pe(t){const e=t.trim().toLowerCase();return!Re.test(e)||Ne.test(e)}const Oe=["http:","https:","mailto:"];function je(t){const e=g(t,!0);if(e.hostname&&(!e.protocol||Oe.indexOf(e.protocol)>=0))try{e.hostname=Me.toASCII(e.hostname)}catch(t){}return n(s(e))}function Ze(t){const r=g(t,!0);if(r.hostname&&(!r.protocol||Oe.indexOf(r.protocol)>=0))try{r.hostname=Me.toUnicode(r.hostname)}catch(t){}return e(s(r),e.defaultChars+"%")}function $e(t,e){if(!(this instanceof $e))return new $e(t,e);e||Z(t)||(e=t||{},t="default"),this.inline=new ue,this.block=new Ht,this.core=new Lt,this.renderer=new ft,this.linkify=new De,this.validateLink=Pe,this.normalizeLink=je,this.normalizeLinkText=Ze,this.utils=lt,this.helpers=U({},ht),this.options={},this.configure(t),e&&this.set(e)}return $e.prototype.set=function(t){return U(this.options,t),this},$e.prototype.configure=function(t){const e=this;if(Z(t)){const e=t;if(!(t=Te[e]))throw new Error('Wrong `markdown-it` preset "'+e+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach((function(r){t.components[r].rules&&e[r].ruler.enableOnly(t.components[r].rules),t.components[r].rules2&&e[r].ruler2.enableOnly(t.components[r].rules2)})),this},$e.prototype.enable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){r=r.concat(this[e].ruler.enable(t,!0))}),this),r=r.concat(this.inline.ruler2.enable(t,!0));const n=t.filter((function(t){return r.indexOf(t)<0}));if(n.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},$e.prototype.disable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){r=r.concat(this[e].ruler.disable(t,!0))}),this),r=r.concat(this.inline.ruler2.disable(t,!0));const n=t.filter((function(t){return r.indexOf(t)<0}));if(n.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},$e.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},$e.prototype.parse=function(t,e){if("string"!=typeof t)throw new Error("Input data should be a String");const r=new this.core.State(t,this,e);return this.core.process(r),r.tokens},$e.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},$e.prototype.parseInline=function(t,e){const r=new this.core.State(t,this,e);return r.inlineMode=!0,this.core.process(r),r.tokens},$e.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)},$e})); From 3ba31be2a80d8ac49efe14e04f9506db408aab89 Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Sat, 17 Jan 2026 15:57:52 +0100 Subject: [PATCH 411/458] Add the `words` and `lines` modes to `$diff-text` (#9551) * Initial commit * Add line ending configuration for consistent tests * Initial commit * Correctly consider editcost parameter * Move diffPartsToChars() to $tw.utils * Remove superfluous file * Correct "efficiency" parameter naming in the documentation The parameter was incorrectly referred to as "efficent" in several places. * Update diffPartsToChars to ES2017 style * Consolidate let/const declarations --- core/modules/filters/strings.js | 64 ++-------- core/modules/utils/utils.js | 111 +++++++++++++----- core/modules/widgets/diff-text.js | 21 +++- .../demonstrations/SampleTiddlerFirst.tid | 6 +- .../demonstrations/SampleTiddlerSecond.tid | 6 +- .../tiddlers/releasenotes/5.4.0/#9551.tid | 15 +++ .../tiddlers/widgets/DiffTextWidget.tid | 98 +++++++++------- 7 files changed, 188 insertions(+), 133 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9551.tid diff --git a/core/modules/filters/strings.js b/core/modules/filters/strings.js index 1f06c29074..854c43b8c6 100644 --- a/core/modules/filters/strings.js +++ b/core/modules/filters/strings.js @@ -37,14 +37,14 @@ exports.trim = function(source,operator,options) { operand = (operator.operand || ""), fnCalc; if(suffix === "prefix") { - fnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];} + fnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}; } else if(suffix === "suffix") { - fnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];} + fnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}; } else { if(operand === "") { - fnCalc = function(a) {return [$tw.utils.trim(a)];} + fnCalc = function(a) {return [$tw.utils.trim(a)];}; } else { - fnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];} + fnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}; } } source(function(tiddler,title) { @@ -80,9 +80,9 @@ exports.levenshtein = makeStringBinaryOperator( } ); -// these two functions are adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs +// this function is adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs function diffLineWordMode(text1,text2,mode) { - var a = diffPartsToChars(text1,text2,mode); + var a = $tw.utils.diffPartsToChars(text1,text2,mode); var lineText1 = a.chars1; var lineText2 = a.chars2; var lineArray = a.lineArray; @@ -91,56 +91,6 @@ function diffLineWordMode(text1,text2,mode) { return diffs; } -function diffPartsToChars(text1,text2,mode) { - var lineArray = []; - var lineHash = {}; - lineArray[0] = ""; - - function diff_linesToPartsMunge_(text,mode) { - var chars = ""; - var lineStart = 0; - var lineEnd = -1; - var lineArrayLength = lineArray.length, - regexpResult; - var searchRegexp = /\W+/g; - while(lineEnd < text.length - 1) { - if(mode === "words") { - regexpResult = searchRegexp.exec(text); - lineEnd = searchRegexp.lastIndex; - if(regexpResult === null) { - lineEnd = text.length; - } - lineEnd = --lineEnd; - } else { - lineEnd = text.indexOf("\n", lineStart); - if(lineEnd == -1) { - lineEnd = text.length - 1; - } - } - var line = text.substring(lineStart, lineEnd + 1); - - if(lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : (lineHash[line] !== undefined)) { - chars += String.fromCharCode(lineHash[line]); - } else { - if(lineArrayLength == maxLines) { - line = text.substring(lineStart); - lineEnd = text.length; - } - chars += String.fromCharCode(lineArrayLength); - lineHash[line] = lineArrayLength; - lineArray[lineArrayLength++] = line; - } - lineStart = lineEnd + 1; - } - return chars; - } - var maxLines = 40000; - var chars1 = diff_linesToPartsMunge_(text1,mode); - maxLines = 65535; - var chars2 = diff_linesToPartsMunge_(text2,mode); - return {chars1: chars1, chars2: chars2, lineArray: lineArray}; -}; - exports.makepatches = function(source,operator,options) { var suffix = operator.suffix || "", result = []; @@ -275,7 +225,7 @@ exports.pad = function(source,operator,options) { } }); return results; -} +}; exports.charcode = function(source,operator,options) { var chars = []; diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index e36bf88c41..d5f2c9df2c 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -55,7 +55,7 @@ Return the dflt (default) parameter if str is not a base-10 number. exports.getInt = function(str,deflt) { var i = parseInt(str,10); return isNaN(i) ? deflt : i; -} +}; /* Repeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string @@ -69,12 +69,12 @@ exports.replaceString = function(text,search,replace) { exports.trimPrefix = function(str,unwanted) { if(typeof str === "string" && typeof unwanted === "string") { if(unwanted === "") { - return str.replace(/^\s\s*/, ''); + return str.replace(/^\s\s*/, ""); } else { // Safely regexp-escape the unwanted text - unwanted = unwanted.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); - var regex = new RegExp('^(' + unwanted + ')+'); - return str.replace(regex, ''); + unwanted = unwanted.replace(/[\\^$*+?.()|[\]{}]/g, "\\$&"); + var regex = new RegExp("^(" + unwanted + ")+"); + return str.replace(regex, ""); } } else { return str; @@ -84,12 +84,12 @@ exports.trimPrefix = function(str,unwanted) { exports.trimSuffix = function(str,unwanted) { if(typeof str === "string" && typeof unwanted === "string") { if(unwanted === "") { - return str.replace(/\s\s*$/, ''); + return str.replace(/\s\s*$/, ""); } else { // Safely regexp-escape the unwanted text - unwanted = unwanted.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); - var regex = new RegExp('(' + unwanted + ')+$'); - return str.replace(regex, ''); + unwanted = unwanted.replace(/[\\^$*+?.()|[\]{}]/g, "\\$&"); + var regex = new RegExp("(" + unwanted + ")+$"); + return str.replace(regex, ""); } } else { return str; @@ -101,14 +101,14 @@ Convert a string to sentence case (ie capitalise first letter) */ exports.toSentenceCase = function(str) { return (str || "").replace(/^\S/, function(c) {return c.toUpperCase();}); -} +}; /* Convert a string to title case (ie capitalise each initial letter) */ exports.toTitleCase = function(str) { return (str || "").replace(/(^|\s)\S/g, function(c) {return c.toUpperCase();}); -} +}; /* Find the line break preceding a given position in a string @@ -358,8 +358,8 @@ exports.formatDateString = function(date,template) { }], [/^TZD/, function() { var tz = date.getTimezoneOffset(), - atz = Math.abs(tz); - return (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60); + atz = Math.abs(tz); + return (tz < 0 ? "+" : "-") + $tw.utils.pad(Math.floor(atz / 60)) + ":" + $tw.utils.pad(atz % 60); }], [/^wYY/, function() { return $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000); @@ -568,9 +568,9 @@ exports.unescapeLineBreaks = function(s) { exports.escape = function(ch) { var charCode = ch.charCodeAt(0); if(charCode <= 0xFF) { - return '\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase()); + return "\\x" + $tw.utils.pad(charCode.toString(16).toUpperCase()); } else { - return '\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4); + return "\\u" + $tw.utils.pad(charCode.toString(16).toUpperCase(),4); } }; @@ -587,11 +587,11 @@ exports.stringify = function(s, rawUnicode) { */ var regex = rawUnicode ? /[\x00-\x1f]/g : /[\x00-\x1f\x80-\uFFFF]/g; return (s || "") - .replace(/\\/g, '\\\\') // backslash + .replace(/\\/g, "\\\\") // backslash .replace(/"/g, '\\"') // double quote character .replace(/'/g, "\\'") // single quote character - .replace(/\r/g, '\\r') // carriage return - .replace(/\n/g, '\\n') // line feed + .replace(/\r/g, "\\r") // carriage return + .replace(/\n/g, "\\n") // line feed .replace(regex, exports.escape); // non-ASCII characters }; @@ -601,15 +601,15 @@ exports.jsonStringify = function(s, rawUnicode) { // See http://www.json.org/ var regex = rawUnicode ? /[\x00-\x1f]/g : /[\x00-\x1f\x80-\uFFFF]/g; return (s || "") - .replace(/\\/g, '\\\\') // backslash + .replace(/\\/g, "\\\\") // backslash .replace(/"/g, '\\"') // double quote character - .replace(/\r/g, '\\r') // carriage return - .replace(/\n/g, '\\n') // line feed - .replace(/\x08/g, '\\b') // backspace - .replace(/\x0c/g, '\\f') // formfeed - .replace(/\t/g, '\\t') // tab + .replace(/\r/g, "\\r") // carriage return + .replace(/\n/g, "\\n") // line feed + .replace(/\x08/g, "\\b") // backspace + .replace(/\x0c/g, "\\f") // formfeed + .replace(/\t/g, "\\t") // tab .replace(regex,function(s) { - return '\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4); + return "\\u" + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4); }); // non-ASCII characters }; @@ -617,7 +617,7 @@ exports.jsonStringify = function(s, rawUnicode) { Escape the RegExp special characters with a preceding backslash */ exports.escapeRegExp = function(s) { - return s.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, '\\$&'); + return s.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, "\\$&"); }; /* @@ -700,7 +700,7 @@ exports.parseTextReference = function(textRef) { } } else { // If we couldn't parse it - result.title = textRef + result.title = textRef; } return result; }; @@ -759,9 +759,9 @@ Cryptographic hash function as used by sha256 filter operator options.length .. number of characters returned defaults to 64 */ exports.sha256 = function(str, options) { - options = options || {} + options = options || {}; return $tw.sjcl.codec.hex.fromBits($tw.sjcl.hash.sha256.hash(str)).substr(0,options.length || 64); -} +}; /* Decode a base64 string @@ -914,3 +914,56 @@ exports.makeCompareFunction = function(type,options) { }; return (types[type] || types[options.defaultType] || types.number); }; + +/* +Split text into parts (lines or words) for diff operations +Adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs +*/ +exports.diffPartsToChars = function(text1,text2,mode) { + const lineArray = [""], + lineHash = Object.create(null); + + function diff_linesToPartsMunge_(text,mode) { + let chars = "", + lineStart = 0, + lineEnd = -1, + lineArrayLength = lineArray.length, + regexpResult; + const searchRegexp = /\W+/g; + while(lineEnd < text.length - 1) { + if(mode === "words") { + regexpResult = searchRegexp.exec(text); + lineEnd = searchRegexp.lastIndex; + if(regexpResult === null) { + lineEnd = text.length; + } + lineEnd = --lineEnd; + } else { + lineEnd = text.indexOf("\n", lineStart); + if(lineEnd === -1) { + lineEnd = text.length - 1; + } + } + let line = text.substring(lineStart, lineEnd + 1); + + if(line in lineHash) { + chars += String.fromCharCode(lineHash[line]); + } else { + if(lineArrayLength === maxLines) { + line = text.substring(lineStart); + lineEnd = text.length; + } + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + lineStart = lineEnd + 1; + } + return chars; + } + let maxLines = 40000; + const chars1 = diff_linesToPartsMunge_(text1,mode); + maxLines = 65535; + const chars2 = diff_linesToPartsMunge_(text2,mode); + return {chars1, chars2, lineArray}; +}; diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index b9786aa254..5aa1344d60 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -36,7 +36,13 @@ DiffTextWidget.prototype.render = function(parent,nextSibling) { this.execute(); // Create the diff object const editCost = $tw.utils.parseNumber(this.getAttribute("editcost","4")); - const diffs = dmp.diffMain(this.getAttribute("source",""),this.getAttribute("dest",""),{diffEditCost: editCost}); + const mode = this.getAttribute("mode") || "chars"; + let diffs; + if(mode === "lines" || mode === "words") { + diffs = diffLineWordMode(this.getAttribute("source",""),this.getAttribute("dest",""),mode,editCost); + } else { + diffs = dmp.diffMain(this.getAttribute("source",""),this.getAttribute("dest",""),{diffEditCost: editCost}); + } // Apply required cleanup switch(this.getAttribute("cleanup","semantic")) { case "none": @@ -132,7 +138,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of */ DiffTextWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); - if(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup || changedAttributes.editcost) { + if(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup || changedAttributes.mode || changedAttributes.editcost) { this.refreshSelf(); return true; } else { @@ -140,4 +146,15 @@ DiffTextWidget.prototype.refresh = function(changedTiddlers) { } }; +// This function is adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs +function diffLineWordMode(text1,text2,mode,editCost) { + var a = $tw.utils.diffPartsToChars(text1,text2,mode); + var lineText1 = a.chars1; + var lineText2 = a.chars2; + var lineArray = a.lineArray; + var diffs = dmp.diffMain(lineText1,lineText2,{diffEditCost: editCost}); + dmp.diffCharsToLines(diffs,lineArray); + return diffs; +} + exports["diff-text"] = DiffTextWidget; diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid index ba0245f471..e601f6438d 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid @@ -1,7 +1,9 @@ created: 20211117003509226 -modified: 20251119135921343 +modified: 20260102135713260 tags: sampletag1 sampletag2 [[Widget Examples]] title: SampleTiddlerFirst type: text/vnd.tiddlywiki -This is a test tiddler called SampleTidlerFirst. \ No newline at end of file +This is a test tiddler called SampleTidlerFirst. +It is used in [[DiffTextWidget]]. +You can modify its content. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid index e932222b35..55b422687d 100644 --- a/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid +++ b/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid @@ -1,6 +1,8 @@ created: 20211117003511221 -modified: 20211117003724108 +modified: 20260102135739735 tags: sampletag1 sampletag2 [[Widget Examples]] title: SampleTiddlerSecond -This test tiddler is called SampleTiddlerSecond. \ No newline at end of file +This test tiddler is called SampleTiddlerSecond. +It is used in [[DiffTextWidget]]. +You can edit its content. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9551.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9551.tid new file mode 100644 index 0000000000..98e78c61bd --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9551.tid @@ -0,0 +1,15 @@ +title: $:/changenotes/5.4.0/#9551 +description: Add words and lines modes to diff-text widget +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: widget +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9551 +github-contributors: yaisog + +The DiffTextWidget now supports two additional diff modes via the `mode` attribute: + +* `mode="words"` - Performs word-level diff operations, making differences more intelligible when comparing text +* `mode="lines"` - Performs line-level diff operations, highlighting entire lines that have changed + +The default `mode="chars"` continues to work as before, performing character-level diff operations. diff --git a/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid b/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid index af0bd5ad05..a81c539f3c 100644 --- a/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/DiffTextWidget.tid @@ -1,69 +1,85 @@ caption: diff-text created: 20180316162725329 -modified: 20251117054552220 +modified: 20260102132650194 tags: Widgets title: DiffTextWidget type: text/vnd.tiddlywiki ! Introduction -<<.from-version "5.1.16">> The diff text widget analyses the differences between a pair of source and destination text strings and displays the results as highlighted insertions and deletions (similar to the "track changes" function of a word processor). For example: +<<.from-version "5.1.16">> The diff text widget analyses the differences between a pair of source and destination text strings and displays the results as highlighted insertions and deletions (similar to the "track changes" function of a word processor). + +``` +<$diff-text source="This is the original text" dest="This is the text to compare to" mode="words> + These are the <<diff-count>> differences: +</$diff-text> +``` + -<$diff-text source="Hey Jude, don't make it bad. Take a sad song and make it better. Remember to let her into your heart -Then you can start to make it better." dest="Hey Jude, don't be afraid. You were made to go out and get her. The minute you let her under your skin. Then you begin to make it better."/> ! Content and Attributes -!! Content +The content of the <<.wid diff-text>> widget is displayed immediately before the differences. Within the content, the variable <<.var diff-count>> is available, containing the number of differences found. If the widget has no content then it automatically transcludes the tiddler [[$:/language/Diffs/CountMessage]]. -The content of the `<$diff-text>` widget is rendered immediately before the diffs. Within it, the variable `diff-count` is available, containing the number of differences found. If the widget has no content then it automatically transcludes the tiddler [[$:/language/Diffs/CountMessage]]. - -<<< -In other words, these three invocations are all equivalent: - -``` -<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}> -{{$:/language/Diffs/CountMessage}} -</$diff-text> - -<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}> -</$diff-text> - -<$diff-text source={{FirstTiddler}} dest={{SecondTiddler}}/> - -``` -<<< - -!! Attributes +<<.note """The algorithm counts changes as both insertion and deletion, and therefore the number of differences can be higher than expected.""">> |!Attribute |!Description | -|source |The source text | -|dest |The destination text | -|cleanup |Defines a way to allow diffs to be human readable | -|editcost |<<.from-version "5.4.0">> Only active if the cleanup flag is set to "efficient" | +|<<.attr source>> |The source text | +|<<.attr dest>> |The destination text | +|<<.attr cleanup>> |Optional post-processing to improve readability (default is <<.value semantic>>) | +|<<.attr editcost>> |<<.from-version "5.4.0">> Threshold parameter for <<.value efficiency>> cleanup mode (default is <<.value 4>>) | +|<<.attr mode>> |<<.from-version "5.4.0">> Specifies the granularity at which differences are computed and displayed (default is <<.value chars>>) | -!!! Cleanup Flags +!! <<.attr cleanup>> / <<.attr editcost>> -The ''cleanup'' attribute determines which optional post-processing should be applied to the diffs: +The <<.attr cleanup>> attribute determines which optional post-processing should be applied to the diffs: -* ''none'': no cleanup is performed -* ''semantic'' (default): rewrites the diffs for human readability -* ''efficient'': rewrites the diffs to minimise the number of operations for subsequent processing -** If efficient is defined, ''editcost'' defines how the cleanup algorithm for human readability works. See example slider +* <<.value none>>: No cleanup is performed +* <<.value semantic>> (default): Optimizes the differences for readability +* <<.value efficiency>>: Optimizes the differences to minimise the number of operations for subsequent processing +** When using <<.value efficiency>> mode, the <<.attr editcost>> parameter controls the cost threshold for the cleanup algorithm, determining how aggressively the diff algorithm merges nearby edits for better human readability (default value is 4). <<.note """Note that in many cases the results will be the same regardless of the cleanup option. See the [[docs|https://github.com/google/diff-match-patch/wiki/API]] of the underlying library for more details""">> +!! <<.attr mode>> + +The <<.attr mode>> attribute determines how differences are computed and displayed: + +* <<.value chars>>: Compares differences at the //character level// for precise change detection +* <<.value words>>: Compares differences at the //word level// for more readable text comparisons +* <<.value lines>>: Compares differences at the //line level// for better visibility of structural changes + ! Examples -In this example we compare two texts: +A basic example: -<$macrocall $name='wikitext-example-without-html' -src="""|tc-max-width tc-edit-max-width|k +<<.example n:1 e.g."""<$diff-text source="The quick brown fox jumps" dest="The slick brown fox leaps"/>""">> + +In <<.value words>> mode, differences are computed at the words level: + +<<.example n:2 e.g."""<$diff-text mode="words" source="The quick brown fox jumps" dest="The slick brown fox leaps"/>""">> + + +To see the effects of all parameters, use this example: + +|tc-max-width tc-edit-max-width|k |<$edit-text tiddler="SampleTiddlerFirst" rows="5"/>|<$edit-text tiddler="SampleTiddlerSecond" rows="5"/>| -Edit cost: {{$:/temp/SampleTiddlerEditCost}} -- Drag to 7 and then to 33 -<$range tiddler="$:/temp/SampleTiddlerEditCost" min="1" max="200" default="4" class="tc-max-width"/> +<$diff-text source={{SampleTiddlerFirst}} dest={{SampleTiddlerSecond}} cleanup={{{ [{!!cleanup}!is[blank]else[efficiency]] }}} editcost={{{ [{!!editcost}!is[blank]else[4]] }}} mode={{{ [{!!mode}!is[blank]else[chars]] }}}/> -<$diff-text source={{SampleTiddlerFirst}} dest={{SampleTiddlerSecond}} cleanup=efficiency editcost={{$:/temp/SampleTiddlerEditCost}}/> -"""/> +!! <<.attr mode>> +<$radio field="mode" value="chars" default="chars" class="tc-small-gap-right"> <<.value chars>></$radio> +<$radio field="mode" value="words" class="tc-small-gap-right"> <<.value words>></$radio> +<$radio field="mode" value="lines"> <<.value lines>></$radio> + +!! <<.attr cleanup>> +<$radio field="cleanup" value="none" class="tc-small-gap-right"> <<.value none>></$radio> +<$radio field="cleanup" value="semantic" class="tc-small-gap-right"> <<.value semantic>></$radio> +<$radio field="cleanup" value="efficiency" default="efficiency"> <<.value efficiency>></$radio> + +<% if [{!!cleanup}!match[none]!match[semantic]] %> + +!! <<.attr editcost>>: <$transclude $variable=".value" _={{{ [{!!editcost}!is[blank]else[4]] }}} /> +<$range field="editcost" min="1" max="200" default="4" class="tc-max-width" style.max-width="500px" /> +<% endif %> \ No newline at end of file From 9041f099a3d849a0724584955197e91a6e7b6726 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Sat, 17 Jan 2026 22:59:10 +0800 Subject: [PATCH 412/458] Refactor stylesheets in single `<style>` tags (#9554) * Create RootStylesheet.tid * put stylesheets into single <style> tags * viewHandler should not be a widget * format RootStylesheet * add ROOT_STYLESHEET_TITLE constant * use let widget in RootStylesheet * use view widget from #8135 for testing * reformat RootStylesheet * update view widget * update view widget * update view widget * update view widget * update view widget * update view widget * trying to fix the date parsing * refactor view widget with more extensible architecture * remove performance instrumentation * hardcode reset and base stylesheets * adopt ES2017 syntax for view widget * don't hardcode vanilla/base * remove unused constructors * remove unused variable * make refresh method static * trying to fix missingThis * add changenote * revert change in vanilla/base * Revert changes to the view widget * Refactor RootStylesheet.tid * Use transclude widget instead of view widget * Remove hardcoded noramlize.css * Add comment for debugging * Migrate some templates to use RootStylesheet * Remove PAGE_STYLESHEET_TITLE Since it is no longer used in render.js * Update change note --------- Co-authored-by: Simon Huber <huber.simon@protonmail.com> --- core/modules/startup/render.js | 25 ++++++------------- core/modules/startup/windows.js | 16 +++--------- core/templates/exporters/StaticRiver.tid | 4 +-- core/templates/static.template.html.tid | 4 +-- core/templates/tiddlywiki5.html.tid | 1 + core/ui/RootStylesheet.tid | 13 ++++++++++ .../5.4.0/#8130 - root-stylesheet-refresh.tid | 15 +++++++++++ 7 files changed, 43 insertions(+), 35 deletions(-) create mode 100644 core/ui/RootStylesheet.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid diff --git a/core/modules/startup/render.js b/core/modules/startup/render.js index 43ef48207a..bb4aac51e8 100644 --- a/core/modules/startup/render.js +++ b/core/modules/startup/render.js @@ -17,7 +17,7 @@ exports.synchronous = true; // Default story and history lists var PAGE_TITLE_TITLE = "$:/core/wiki/title"; -var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet"; +var ROOT_STYLESHEET_TITLE = "$:/core/ui/RootStylesheet"; var PAGE_TEMPLATE_TITLE = "$:/core/ui/RootTemplate"; // Time (in ms) that we defer refreshing changes to draft tiddlers @@ -44,22 +44,13 @@ exports.startup = function() { publishTitle(); } }); - // Set up the styles - $tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument}); - $tw.styleContainer = $tw.fakeDocument.createElement("style"); - $tw.styleWidgetNode.render($tw.styleContainer,null); - $tw.styleWidgetNode.assignedStyles = $tw.styleContainer.textContent; - $tw.styleElement = document.createElement("style"); - $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; - document.head.insertBefore($tw.styleElement,document.head.firstChild); + + var styleParser = $tw.wiki.parseTiddler(ROOT_STYLESHEET_TITLE,{parseAsInline: true}), + styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: document}); + styleWidgetNode.render(document.head,null); + $tw.wiki.addEventListener("change",$tw.perf.report("styleRefresh",function(changes) { - if($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) { - var newStyles = $tw.styleContainer.textContent; - if(newStyles !== $tw.styleWidgetNode.assignedStyles) { - $tw.styleWidgetNode.assignedStyles = newStyles; - $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; - } - } + styleWidgetNode.refresh(changes,document.head,null); })); // Display the $:/core/ui/PageTemplate tiddler to kick off the display $tw.perf.report("mainRender",function() { @@ -68,7 +59,7 @@ exports.startup = function() { $tw.utils.addClass($tw.pageContainer,"tc-page-container-wrapper"); document.body.insertBefore($tw.pageContainer,document.body.firstChild); $tw.pageWidgetNode.render($tw.pageContainer,null); - $tw.hooks.invokeHook("th-page-refreshed"); + $tw.hooks.invokeHook("th-page-refreshed"); })(); // Remove any splash screen elements var removeList = document.querySelectorAll(".tc-remove-when-wiki-loaded"); diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 39a2f59d62..3fa70d1278 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -63,24 +63,16 @@ exports.startup = function() { $tw.eventBus.emit("window:closed",{windowID}); },false); // Set up the styles - var styleWidgetNode = $tw.wiki.makeTranscludeWidget("$:/core/ui/PageStylesheet",{ - document: $tw.fakeDocument, - variables: variables, - importPageMacros: true}), - styleContainer = $tw.fakeDocument.createElement("style"); - styleWidgetNode.render(styleContainer,null); - var styleElement = srcDocument.createElement("style"); - styleElement.innerHTML = styleContainer.textContent; - srcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild); + var styleParser = $tw.wiki.parseTiddler("$:/core/ui/RootStylesheet",{parseAsInline: true}), + styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: srcDocument}); + styleWidgetNode.render(srcDocument.head,null); // Render the text of the tiddler var parser = $tw.wiki.parseTiddler(template), widgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables}); widgetNode.render(srcDocument.body,srcDocument.body.firstChild); // Function to handle refreshes refreshHandler = function(changes) { - if(styleWidgetNode.refresh(changes,styleContainer,null)) { - styleElement.innerHTML = styleContainer.textContent; - } + styleWidgetNode.refresh(changes); widgetNode.refresh(changes); }; $tw.wiki.addEventListener("change",refreshHandler); diff --git a/core/templates/exporters/StaticRiver.tid b/core/templates/exporters/StaticRiver.tid index 3b70c9d11a..176ab80be2 100644 --- a/core/templates/exporters/StaticRiver.tid +++ b/core/templates/exporters/StaticRiver.tid @@ -22,9 +22,7 @@ extension: .html <div id="styleArea"> {{$:/boot/boot.css||$:/core/templates/css-tiddler}} </div> -<style type="text/css"> -{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}} -</style> +{{$:/core/ui/RootStylesheet||$:/core/templates/wikified-tiddler}} </head> <body class="tc-body"> {{$:/StaticBanner||$:/core/templates/html-tiddler}} diff --git a/core/templates/static.template.html.tid b/core/templates/static.template.html.tid index 8b6482846a..ef290053b0 100644 --- a/core/templates/static.template.html.tid +++ b/core/templates/static.template.html.tid @@ -23,9 +23,7 @@ type: text/vnd.tiddlywiki-html <div id="styleArea"> {{$:/boot/boot.css||$:/core/templates/css-tiddler}} </div> -<style type="text/css"> -{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}} -</style> +{{$:/core/ui/RootStylesheet||$:/core/templates/wikified-tiddler}} </head> <body class="tc-body"> {{$:/StaticBanner||$:/core/templates/html-tiddler}} diff --git a/core/templates/tiddlywiki5.html.tid b/core/templates/tiddlywiki5.html.tid index 721b3d9cec..c38cde9601 100644 --- a/core/templates/tiddlywiki5.html.tid +++ b/core/templates/tiddlywiki5.html.tid @@ -25,6 +25,7 @@ title: $:/core/templates/tiddlywiki5.html `{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}` +<!--~~ Style section start ~~--> </head> <body class="tc-body"> <!--~~ Raw markup for the top of the body section ~~--> diff --git a/core/ui/RootStylesheet.tid b/core/ui/RootStylesheet.tid new file mode 100644 index 0000000000..67145d93c8 --- /dev/null +++ b/core/ui/RootStylesheet.tid @@ -0,0 +1,13 @@ +title: $:/core/ui/RootStylesheet +code-body: yes + +\import [subfilter{$:/core/config/GlobalImportFilter}] +\whitespace trim +<$let currentTiddler={{$:/language}} languageTitle={{!!name}}> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!is[draft]]"> + <style type="text/css"> + <$text text={{{ [<currentTiddler>addprefix[/* ]addsuffix[ */]] }}}/> + <$transclude $tiddler=<<currentTiddler>> $output="text/plain" $mode="block"/> + </style> + </$list> +</$let> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid new file mode 100644 index 0000000000..d57f8b5965 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid @@ -0,0 +1,15 @@ +title: $:/changenotes/5.4.0/#9554 +created: 20251212171804335 +modified: 20251212171804335 +tags: $:/tags/ChangeNote +change-type: performance +change-category: internal +description: Different Stylesheets are now included as single `<style>` tags in the Header +release: 5.4.0 +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9554 +github-contributors: BurningTreeC Leilei332 +type: text/vnd.tiddlywiki + +Previously, all stylesheets were combined in a single `<style>` tag in the `<head>`. + +Now, a separate `<style>` tag is created in the `<head>` for each stylesheet. \ No newline at end of file From 00e17874f029733ccb4a7d8424569bad5e4ed27c Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Sat, 17 Jan 2026 23:00:32 +0800 Subject: [PATCH 413/458] Add stylesheet wiki information (#9565) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add stylesheet wiki information * Use 2 spaces * Update change note * Use ∈ symbol instead I think this one is less confusing than the previous one --- core/ui/WikiInformation.tid | 3 +++ .../releasenotes/5.4.0/add-stylesheet-wiki-info.tid | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/add-stylesheet-wiki-info.tid diff --git a/core/ui/WikiInformation.tid b/core/ui/WikiInformation.tid index 8b959d61db..3cfee54e95 100644 --- a/core/ui/WikiInformation.tid +++ b/core/ui/WikiInformation.tid @@ -41,6 +41,8 @@ Drag this link to copy this tool to another wiki </$wikify> \end capture-item-wikified +\function get.shadow.source() [shadowsource[]] + \procedure capture-wiki-info(tempWikiInfo) <$transclude $variable="capture-item-wikified" label="TiddlyWiki Version" value="<<version>>"/> <$transclude $variable="capture-item" label="Current palette" value={{$:/palette}}/> @@ -64,6 +66,7 @@ Drag this link to copy this tool to another wiki <$transclude $variable="capture-item" label="Keyboard shortcuts that have been customised" value={{{ [all[tiddlers]prefix[$:/config/shortcuts]] +[join[,]] }}}/> <$transclude $variable="capture-item" label="Disabled plugins" value={{{ [all[tiddlers]prefix[$:/config/Plugins/Disabled/]] :filter[{!!text}match[yes]] :map[<currentTiddler>removeprefix[$:/config/Plugins/Disabled/]] +[join[,]] }}}/> <$transclude $variable="capture-item" label="Plugins" value={{{ [has[plugin-type]sort[]] :filter[<currentTiddler>addprefix[$:/config/Plugins/Disabled/]get[text]else[no]!match[yes]] :map[{!!version}addprefix[ - ]addprefix<currentTiddler>] +[addprefix[ ]addprefix<crlf>join[]] }}}/> +<$transclude $variable="capture-item" label="Stylesheets" value={{{ [all[shadows+tiddlers]tag[$:/tags/Stylesheet]!is[draft]] :map[is[shadow]addsuffix[ ∈ ]addsuffix<get.shadow.source>else<currentTiddler>] +[addprefix[ ]addprefix<crlf>join[]] }}}/> \end capture-wiki-info \procedure template-header() diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-stylesheet-wiki-info.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-stylesheet-wiki-info.tid new file mode 100644 index 0000000000..e664d75f4e --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/add-stylesheet-wiki-info.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9565 +description: Add stylesheet wiki information +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: feature +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9565 +github-contributors: Leilei332 + +Extend wiki information tool to display stylesheet information. From be84dee26b66395218e0c075ba5dcf31397ad1e1 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sat, 17 Jan 2026 18:51:51 +0100 Subject: [PATCH 414/458] Allow unused variables in function headers and caught exceptions (#9588) --- eslint.config.mjs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index b0bea34d9c..3a129c6c24 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -290,10 +290,12 @@ js.configs.recommended, "@stylistic/wrap-iife": "off", "@stylistic/wrap-regex": "off", "@stylistic/yield-star-spacing": "error", - yoda: "off", - // temporary rules + "yoda": "off", "no-useless-escape": "off", - "no-unused-vars": "warn", + "no-unused-vars": ["warn", { + "args": "none", + "caughtErrors": "none" + }], "no-empty": "off", "@stylistic/no-extra-semi": "off", "no-redeclare": "off", From ae4e99951abfe9ad2547b7b5b7a8d426896dd720 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Sun, 18 Jan 2026 11:40:10 +0000 Subject: [PATCH 415/458] Revert #9554 Refactor stylesheets in single <style> tags These changes break the palette switcher --- core/modules/startup/render.js | 25 +++++++++++++------ core/modules/startup/windows.js | 16 +++++++++--- core/templates/exporters/StaticRiver.tid | 4 ++- core/templates/static.template.html.tid | 4 ++- core/templates/tiddlywiki5.html.tid | 1 - core/ui/RootStylesheet.tid | 13 ---------- .../5.4.0/#8130 - root-stylesheet-refresh.tid | 15 ----------- 7 files changed, 35 insertions(+), 43 deletions(-) delete mode 100644 core/ui/RootStylesheet.tid delete mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid diff --git a/core/modules/startup/render.js b/core/modules/startup/render.js index bb4aac51e8..43ef48207a 100644 --- a/core/modules/startup/render.js +++ b/core/modules/startup/render.js @@ -17,7 +17,7 @@ exports.synchronous = true; // Default story and history lists var PAGE_TITLE_TITLE = "$:/core/wiki/title"; -var ROOT_STYLESHEET_TITLE = "$:/core/ui/RootStylesheet"; +var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet"; var PAGE_TEMPLATE_TITLE = "$:/core/ui/RootTemplate"; // Time (in ms) that we defer refreshing changes to draft tiddlers @@ -44,13 +44,22 @@ exports.startup = function() { publishTitle(); } }); - - var styleParser = $tw.wiki.parseTiddler(ROOT_STYLESHEET_TITLE,{parseAsInline: true}), - styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: document}); - styleWidgetNode.render(document.head,null); - + // Set up the styles + $tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument}); + $tw.styleContainer = $tw.fakeDocument.createElement("style"); + $tw.styleWidgetNode.render($tw.styleContainer,null); + $tw.styleWidgetNode.assignedStyles = $tw.styleContainer.textContent; + $tw.styleElement = document.createElement("style"); + $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; + document.head.insertBefore($tw.styleElement,document.head.firstChild); $tw.wiki.addEventListener("change",$tw.perf.report("styleRefresh",function(changes) { - styleWidgetNode.refresh(changes,document.head,null); + if($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) { + var newStyles = $tw.styleContainer.textContent; + if(newStyles !== $tw.styleWidgetNode.assignedStyles) { + $tw.styleWidgetNode.assignedStyles = newStyles; + $tw.styleElement.innerHTML = $tw.styleWidgetNode.assignedStyles; + } + } })); // Display the $:/core/ui/PageTemplate tiddler to kick off the display $tw.perf.report("mainRender",function() { @@ -59,7 +68,7 @@ exports.startup = function() { $tw.utils.addClass($tw.pageContainer,"tc-page-container-wrapper"); document.body.insertBefore($tw.pageContainer,document.body.firstChild); $tw.pageWidgetNode.render($tw.pageContainer,null); - $tw.hooks.invokeHook("th-page-refreshed"); + $tw.hooks.invokeHook("th-page-refreshed"); })(); // Remove any splash screen elements var removeList = document.querySelectorAll(".tc-remove-when-wiki-loaded"); diff --git a/core/modules/startup/windows.js b/core/modules/startup/windows.js index 3fa70d1278..39a2f59d62 100644 --- a/core/modules/startup/windows.js +++ b/core/modules/startup/windows.js @@ -63,16 +63,24 @@ exports.startup = function() { $tw.eventBus.emit("window:closed",{windowID}); },false); // Set up the styles - var styleParser = $tw.wiki.parseTiddler("$:/core/ui/RootStylesheet",{parseAsInline: true}), - styleWidgetNode = $tw.wiki.makeWidget(styleParser,{document: srcDocument}); - styleWidgetNode.render(srcDocument.head,null); + var styleWidgetNode = $tw.wiki.makeTranscludeWidget("$:/core/ui/PageStylesheet",{ + document: $tw.fakeDocument, + variables: variables, + importPageMacros: true}), + styleContainer = $tw.fakeDocument.createElement("style"); + styleWidgetNode.render(styleContainer,null); + var styleElement = srcDocument.createElement("style"); + styleElement.innerHTML = styleContainer.textContent; + srcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild); // Render the text of the tiddler var parser = $tw.wiki.parseTiddler(template), widgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables}); widgetNode.render(srcDocument.body,srcDocument.body.firstChild); // Function to handle refreshes refreshHandler = function(changes) { - styleWidgetNode.refresh(changes); + if(styleWidgetNode.refresh(changes,styleContainer,null)) { + styleElement.innerHTML = styleContainer.textContent; + } widgetNode.refresh(changes); }; $tw.wiki.addEventListener("change",refreshHandler); diff --git a/core/templates/exporters/StaticRiver.tid b/core/templates/exporters/StaticRiver.tid index 176ab80be2..3b70c9d11a 100644 --- a/core/templates/exporters/StaticRiver.tid +++ b/core/templates/exporters/StaticRiver.tid @@ -22,7 +22,9 @@ extension: .html <div id="styleArea"> {{$:/boot/boot.css||$:/core/templates/css-tiddler}} </div> -{{$:/core/ui/RootStylesheet||$:/core/templates/wikified-tiddler}} +<style type="text/css"> +{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}} +</style> </head> <body class="tc-body"> {{$:/StaticBanner||$:/core/templates/html-tiddler}} diff --git a/core/templates/static.template.html.tid b/core/templates/static.template.html.tid index ef290053b0..8b6482846a 100644 --- a/core/templates/static.template.html.tid +++ b/core/templates/static.template.html.tid @@ -23,7 +23,9 @@ type: text/vnd.tiddlywiki-html <div id="styleArea"> {{$:/boot/boot.css||$:/core/templates/css-tiddler}} </div> -{{$:/core/ui/RootStylesheet||$:/core/templates/wikified-tiddler}} +<style type="text/css"> +{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}} +</style> </head> <body class="tc-body"> {{$:/StaticBanner||$:/core/templates/html-tiddler}} diff --git a/core/templates/tiddlywiki5.html.tid b/core/templates/tiddlywiki5.html.tid index c38cde9601..721b3d9cec 100644 --- a/core/templates/tiddlywiki5.html.tid +++ b/core/templates/tiddlywiki5.html.tid @@ -25,7 +25,6 @@ title: $:/core/templates/tiddlywiki5.html `{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}} {{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}` -<!--~~ Style section start ~~--> </head> <body class="tc-body"> <!--~~ Raw markup for the top of the body section ~~--> diff --git a/core/ui/RootStylesheet.tid b/core/ui/RootStylesheet.tid deleted file mode 100644 index 67145d93c8..0000000000 --- a/core/ui/RootStylesheet.tid +++ /dev/null @@ -1,13 +0,0 @@ -title: $:/core/ui/RootStylesheet -code-body: yes - -\import [subfilter{$:/core/config/GlobalImportFilter}] -\whitespace trim -<$let currentTiddler={{$:/language}} languageTitle={{!!name}}> - <$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!is[draft]]"> - <style type="text/css"> - <$text text={{{ [<currentTiddler>addprefix[/* ]addsuffix[ */]] }}}/> - <$transclude $tiddler=<<currentTiddler>> $output="text/plain" $mode="block"/> - </style> - </$list> -</$let> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid deleted file mode 100644 index d57f8b5965..0000000000 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8130 - root-stylesheet-refresh.tid +++ /dev/null @@ -1,15 +0,0 @@ -title: $:/changenotes/5.4.0/#9554 -created: 20251212171804335 -modified: 20251212171804335 -tags: $:/tags/ChangeNote -change-type: performance -change-category: internal -description: Different Stylesheets are now included as single `<style>` tags in the Header -release: 5.4.0 -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9554 -github-contributors: BurningTreeC Leilei332 -type: text/vnd.tiddlywiki - -Previously, all stylesheets were combined in a single `<style>` tag in the `<head>`. - -Now, a separate `<style>` tag is created in the `<head>` for each stylesheet. \ No newline at end of file From a27f74bbdc03cc2ca9082e6626dc2460f5f61e2d Mon Sep 17 00:00:00 2001 From: Simon Huber <huber.simon@protonmail.com> Date: Tue, 20 Jan 2026 07:06:29 +0100 Subject: [PATCH 416/458] Fixes bug in sidebar tab Open to allow disabling drag and drop (#9504) the variable is called `tv-enable-drag-and-drop` - not `tv-allow-drag-and-drop` --- core/ui/SideBar/Open.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/SideBar/Open.tid b/core/ui/SideBar/Open.tid index d3e5281480..b64778f470 100644 --- a/core/ui/SideBar/Open.tid +++ b/core/ui/SideBar/Open.tid @@ -15,7 +15,7 @@ caption: {{$:/language/SideBar/Open/Caption}} \define droppable-item(button) \whitespace trim -<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>> tag="div"> +<$droppable actions=<<drop-actions>> enable=<<tv-enable-drag-and-drop>> tag="div"> <<placeholder>> <div> $button$ From dd20be49f0e4f13c1dbc4f2983688a4417aaaaa8 Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Tue, 20 Jan 2026 07:16:21 +0100 Subject: [PATCH 417/458] Make impact note for #9337 less verbose / repetitive (#9481) * Make impact note less verbose / repetitive for #9337 * Correct some fields --- .../5.4.0/#9337 - math-filters .tid | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9337 - math-filters .tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9337 - math-filters .tid index 8125a23f11..e24e543748 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9337 - math-filters .tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9337 - math-filters .tid @@ -1,17 +1,7 @@ -title: $:/changenotes/5.4.0/#9337/compatibility-break/math-filters +title: $:/changenotes/5.4.0/#9337/impacts/math-filters changenote: $:/changenotes/5.4.0/#9337 -created - 20251112152513384 -modified - 20251112152513384 +created: 20251112152513384 +modified: 20251209160312626 tags: $:/tags/ImpactNote -description: filter output with empty input changes for some math filter operators -impact-type: compatibility-break - -These math operators will now output an empty list when the input list is empty: - -* sum[] - previously returned 0 -* product[] - previously returned 1 -* maxall[] - previously returned -Infinity -* minall[] - previously returned Infinity -* average[] - previously returned NaN -* variance[] - previously returned NaN -* standard-deviation[] - previously returned NaN \ No newline at end of file +description: filter output changes for some math filter operators when input list is empty +impact-type: compatibility-break \ No newline at end of file From faee49ee0149b300a2fb28b33eed1488e32e7d6c Mon Sep 17 00:00:00 2001 From: Bram Chen <bram.chen@gmail.com> Date: Tue, 20 Jan 2026 14:33:05 +0800 Subject: [PATCH 418/458] Update chinese language files (#9576) * Update chinese language files * add chinese translations for alert aria message * Update chinese language files * update related change note --- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9375.tid | 5 +++-- languages/zh-Hans/Misc.multids | 1 + languages/zh-Hant/Misc.multids | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9375.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9375.tid index d95ac608f7..5d0059ed9c 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9375.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9375.tid @@ -4,7 +4,8 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: enhancement change-category: translation -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9375 +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9375 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9576 github-contributors: BramChen -* change camel-case hint text for chinese translations \ No newline at end of file +* change camel-case hint text for chinese translations +* add alerts ARIA message \ No newline at end of file diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index 030e30c6ae..37ea0c7b18 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -1,5 +1,6 @@ title: $:/language/ +Alerts: 警报信息 AboveStory/ClassicPlugin/Warning: 您似乎要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件: BinaryWarning/Prompt: 此条目包含二进制数据 ClassicWarning/Hint: 此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:https://tiddlywiki.com/static/Upgrading。 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index 4315076b62..28ad6cd735 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -1,5 +1,6 @@ title: $:/language/ +Alerts: 警示訊息 AboveStory/ClassicPlugin/Warning: 您似乎要載入為 ~TiddlyWiki 經典版設計的插件。請注意,[[這些插件無法運行於 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。偵測到 ~TiddlyWiki 經典版插件: BinaryWarning/Prompt: 此條目包含二進位資料 ClassicWarning/Hint: 此條目以經典版 TiddlyWiki 標記格式撰寫,不完全相容新版 TiddlyWiki 的格式,詳細資訊請參閱:https://tiddlywiki.com/static/Upgrading。 From a670de0e95522c2794ce78b8b3cb2d38349b4ca4 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Tue, 20 Jan 2026 10:01:02 +0100 Subject: [PATCH 419/458] Fixes regressions in list-tagged-draggable (#9596) * Fix regressions in list-tagged-draggable * Remove trailing newline from list.tid --- core/wiki/macros/list.tid | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/wiki/macros/list.tid b/core/wiki/macros/list.tid index d61390099f..292cef9891 100644 --- a/core/wiki/macros/list.tid +++ b/core/wiki/macros/list.tid @@ -92,7 +92,7 @@ tags: $:/tags/Macro </$set> \end -\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"",displayField:"caption") +\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"",displayField:"title") \whitespace trim <span class="tc-tagged-draggable-list"> <$set name="tag" value=<<__tag__>>> @@ -115,7 +115,6 @@ tags: $:/tags/Macro <$view field="title"/> </$transclude> </$let> - <$view field="title"/> </$link> </$transclude> </$genesis> From 844564180f466f2e1545d579d19c38e7f8836fd1 Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Tue, 20 Jan 2026 11:24:56 +0100 Subject: [PATCH 420/458] Fix LetWidget to always set all staged variables on first render (#9494) * Always set all staged variables on first render * Add changenote --- core/modules/widgets/let.js | 5 ++--- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9494.tid | 10 ++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9494.tid diff --git a/core/modules/widgets/let.js b/core/modules/widgets/let.js index b09c67e91d..6ede8b1dd3 100644 --- a/core/modules/widgets/let.js +++ b/core/modules/widgets/let.js @@ -7,7 +7,6 @@ This widget allows defining multiple variables at once, while allowing the later variables to depend upon the earlier ones. ``` -\define helloworld() Hello world! <$let currentTiddler="target" value={{!!value}} currentTiddler="different"> {{!!value}} will be different from <<value>> </$let> @@ -56,7 +55,7 @@ LetWidget.prototype.computeAttributes = function() { }); // Run through again, setting variables and looking for differences $tw.utils.each(this.currentValueFor,function(value,name) { - if(!$tw.utils.isArrayEqual(self.attributes[name],value)) { + if(self.attributes[name] === undefined || !$tw.utils.isArrayEqual(self.attributes[name],value)) { self.attributes[name] = value; self.setVariable(name,value); changedAttributes[name] = true; @@ -68,7 +67,7 @@ LetWidget.prototype.computeAttributes = function() { LetWidget.prototype.getVariableInfo = function(name,options) { // Special handling: If this variable exists in this very $let, we can // use it, but only if it's been staged. - if ($tw.utils.hop(this.currentValueFor,name)) { + if($tw.utils.hop(this.currentValueFor,name)) { var value = this.currentValueFor[name]; return { text: value[0] || "", diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9494.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9494.tid new file mode 100644 index 0000000000..1729257323 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9494.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9494 +description: Fix LetWidget to always set all staged variables on first render +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: widget +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9494 +github-contributors: yaisog + +This PR corrects a bug where the LetWidget did not set variables if their value was the empty output of a filtered transclusion. From e42ed6808eb00e5daaf72de34d8f24f94028ff9b Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Tue, 20 Jan 2026 19:13:48 +0800 Subject: [PATCH 421/458] Split escapecss into two platforms (#9475) * Split escapecss into to platforms This will reduce core size slightly * Update change note --- core-server/utils/escapecss.js | 95 +++++++++++++++++++ core/modules/utils/escapecss.js | 90 +----------------- .../releasenotes/5.4.0/escapecss-split.tid | 10 ++ 3 files changed, 107 insertions(+), 88 deletions(-) create mode 100644 core-server/utils/escapecss.js create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/escapecss-split.tid diff --git a/core-server/utils/escapecss.js b/core-server/utils/escapecss.js new file mode 100644 index 0000000000..8a30c0746b --- /dev/null +++ b/core-server/utils/escapecss.js @@ -0,0 +1,95 @@ +/*\ +title: $:/core-server/modules/utils/escapecss.js +type: application/javascript +module-type: utils-node + +Provides CSS.escape() functionality. + +\*/ + +"use strict"; + +exports.escapeCSS = (function() { + // see also https://drafts.csswg.org/cssom/#serialize-an-identifier + + /* eslint-disable */ + /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */ + return function(value) { + if (arguments.length == 0) { + throw new TypeError('`CSS.escape` requires an argument.'); + } + var string = String(value); + var length = string.length; + var index = -1; + var codeUnit; + var result = ''; + var firstCodeUnit = string.charCodeAt(0); + while (++index < length) { + codeUnit = string.charCodeAt(index); + // Note: there’s no need to special-case astral symbols, surrogate + // pairs, or lone surrogates. + + // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER + // (U+FFFD). + if (codeUnit == 0x0000) { + result += '\uFFFD'; + continue; + } + + if ( + // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is + // U+007F, […] + (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || + // If the character is the first character and is in the range [0-9] + // (U+0030 to U+0039), […] + (index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) || + // If the character is the second character and is in the range [0-9] + // (U+0030 to U+0039) and the first character is a `-` (U+002D), […] + ( + index == 1 && + codeUnit >= 0x0030 && codeUnit <= 0x0039 && + firstCodeUnit == 0x002D + ) + ) { + // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point + result += '\\' + codeUnit.toString(16) + ' '; + continue; + } + + if ( + // If the character is the first character and is a `-` (U+002D), and + // there is no second character, […] + index == 0 && + length == 1 && + codeUnit == 0x002D + ) { + result += '\\' + string.charAt(index); + continue; + } + + // If the character is not handled by one of the above rules and is + // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or + // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to + // U+005A), or [a-z] (U+0061 to U+007A), […] + if ( + codeUnit >= 0x0080 || + codeUnit == 0x002D || + codeUnit == 0x005F || + codeUnit >= 0x0030 && codeUnit <= 0x0039 || + codeUnit >= 0x0041 && codeUnit <= 0x005A || + codeUnit >= 0x0061 && codeUnit <= 0x007A + ) { + // the character itself + result += string.charAt(index); + continue; + } + + // Otherwise, the escaped character. + // https://drafts.csswg.org/cssom/#escape-a-character + result += '\\' + string.charAt(index); + + } + return result; + }; + /* eslint-enable */ +})(); diff --git a/core/modules/utils/escapecss.js b/core/modules/utils/escapecss.js index f2248c4458..0df27da7b6 100644 --- a/core/modules/utils/escapecss.js +++ b/core/modules/utils/escapecss.js @@ -1,7 +1,7 @@ /*\ title: $:/core/modules/utils/escapecss.js type: application/javascript -module-type: utils +module-type: utils-browser Provides CSS.escape() functionality. @@ -9,92 +9,6 @@ Provides CSS.escape() functionality. "use strict"; -// TODO -- resolve this construction exports.escapeCSS = (function() { - // use browser's native CSS.escape() function if available - if ($tw.browser && window.CSS && window.CSS.escape) { - return window.CSS.escape; - } - - // otherwise, a utility method is provided - // see also https://drafts.csswg.org/cssom/#serialize-an-identifier - - /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */ - return function(value) { - if (arguments.length == 0) { - throw new TypeError('`CSS.escape` requires an argument.'); - } - var string = String(value); - var length = string.length; - var index = -1; - var codeUnit; - var result = ''; - var firstCodeUnit = string.charCodeAt(0); - while (++index < length) { - codeUnit = string.charCodeAt(index); - // Note: there’s no need to special-case astral symbols, surrogate - // pairs, or lone surrogates. - - // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER - // (U+FFFD). - if (codeUnit == 0x0000) { - result += '\uFFFD'; - continue; - } - - if ( - // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is - // U+007F, […] - (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || - // If the character is the first character and is in the range [0-9] - // (U+0030 to U+0039), […] - (index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) || - // If the character is the second character and is in the range [0-9] - // (U+0030 to U+0039) and the first character is a `-` (U+002D), […] - ( - index == 1 && - codeUnit >= 0x0030 && codeUnit <= 0x0039 && - firstCodeUnit == 0x002D - ) - ) { - // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point - result += '\\' + codeUnit.toString(16) + ' '; - continue; - } - - if ( - // If the character is the first character and is a `-` (U+002D), and - // there is no second character, […] - index == 0 && - length == 1 && - codeUnit == 0x002D - ) { - result += '\\' + string.charAt(index); - continue; - } - - // If the character is not handled by one of the above rules and is - // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or - // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to - // U+005A), or [a-z] (U+0061 to U+007A), […] - if ( - codeUnit >= 0x0080 || - codeUnit == 0x002D || - codeUnit == 0x005F || - codeUnit >= 0x0030 && codeUnit <= 0x0039 || - codeUnit >= 0x0041 && codeUnit <= 0x005A || - codeUnit >= 0x0061 && codeUnit <= 0x007A - ) { - // the character itself - result += string.charAt(index); - continue; - } - - // Otherwise, the escaped character. - // https://drafts.csswg.org/cssom/#escape-a-character - result += '\\' + string.charAt(index); - - } - return result; - }; + return window.CSS.escape; })(); diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/escapecss-split.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/escapecss-split.tid new file mode 100644 index 0000000000..7a9ee2b9d0 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/escapecss-split.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9475 +description: Split escapecss.js into two platforms +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: performance +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9475 +github-contributors: Leilei332 + +Split [[$:/core/modules/utils/escapecss.js]] for two platforms: one for the browser, the other for Node.js. The `CSS.escape` polyfill is moved to `core-server`. \ No newline at end of file From 763d717a1383081a9173348dc40ab7455f61c9d3 Mon Sep 17 00:00:00 2001 From: superuser-does <32982579+superuser-does@users.noreply.github.com> Date: Tue, 20 Jan 2026 12:18:24 +0000 Subject: [PATCH 422/458] Improvements to DateFormat tiddler (#9583) --- .../tw5.com/tiddlers/features/DateFormat.tid | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/editions/tw5.com/tiddlers/features/DateFormat.tid b/editions/tw5.com/tiddlers/features/DateFormat.tid index f918d9a999..36967cd5a2 100644 --- a/editions/tw5.com/tiddlers/features/DateFormat.tid +++ b/editions/tw5.com/tiddlers/features/DateFormat.tid @@ -4,35 +4,36 @@ tags: Features title: DateFormat type: text/vnd.tiddlywiki -The default representation of dates is a compact string such as <<.value 20211002153802059>>. The associated template is `[UTC]YYYY0MM0DD0hh0mm0ss0XXX`. For example, the <<.field created>> and <<.field modified>> fields are stored like this. +The default representation of dates is a compact string such as <<.value "<$view field='modified' format='text'/>">>. The associated template is `[UTC]YYYY0MM0DD0hh0mm0ss0XXX`. For example, the <<.field created>> and <<.field modified>> fields are stored like this. -The display format for this string can be controlled with a template. For example, transcluding the <<.field modified>> field automatically applies a template to display the date as <<.value "Sat Oct 02 2021 17:40:50 GMT+0200 (Central European Summer Time)">>. A few widgets and filter operators allow you to manually specify a template, for example the ViewWidget: +The display format for this string can be controlled with a template. For example, transcluding the <<.field modified>> field automatically applies a template to display the date as "{{!!modified}}". A few widgets and filter operators allow you to manually specify a template, for example the ViewWidget: `<$view field=modified format=date template="DDth mmm YYYY 0hh:0mm:0ss" />` The date string is processed with the following substitutions: |!Token |!Substituted Value | +|`[UTC]`|Time-shift the represented date to UTC. Must be at very start of format string | +|`YYYY` |Full year | +|`YY` |Two-digit year | +|`wYYYY` |Full year with respect to week number | +|`aYYYY` |<<.from-version "5.1.23">> Full year but negative dates are displayed as positive | +|`wYY` |Two digit year with respect to week number | +|`{era:BCE||CE}` |<<.from-version "5.1.23">> Displays a different string for years that are negative, zero or positive (see below) | +|`MMM` |Month in full (e.g. "July") | +|`mmm` |Short month (e.g. "Jul") | +|`MM` |Month number | +|`0MM` |Adds leading zero | |`ddddd` |<<.from-version "5.2.0">> Day of year (1 to 365, or 366 for leap years) | |`0ddddd` |<<.from-version "5.2.0">> Zero padded day of year (001 to 365, or 366 for leap years) | -|`DDD` |Day of week in full (eg, "Monday") | -|`ddd` |Short day of week (eg, "Mon") | +|`DDD` |Day of week in full (e.g. "Monday") | +|`ddd` |Short day of week (e.g. "Mon") | |`dddd` |<<.from-version "5.2.0">> Weekday number from 1 through 7, beginning with Monday and ending with Sunday | |`DD` |Day of month | |`0DD` |Adds a leading zero | |`DDth` |Adds a suffix | |`WW` |ISO-8601 week number of year | |`0WW` |Adds a leading zero | -|`MMM` |Month in full (eg, "July") | -|`mmm` |Short month (eg, "Jul") | -|`MM` |Month number | -|`0MM` |Adds leading zero | -|`YYYY` |Full year | -|`YY` |Two digit year | -|`wYYYY` |Full year with respect to week number | -|`aYYYY` |<<.from-version "5.1.23">> Full year but negative dates are displayed as positive | -|`wYY` |Two digit year with respect to week number | -|`{era:BCE||CE}` |<<.from-version "5.1.23">> Displays a different string for years that are negative, zero or positive (see below) | |`hh` |Hours | |`0hh` |Adds a leading zero | |`hh12` |Hours in 12 hour clock | @@ -43,12 +44,12 @@ The date string is processed with the following substitutions: |`0ss` |Seconds with leading zero | |`XXX` |Milliseconds | |`0XXX` |Milliseconds with leading zero | -|`am` or `pm` |Lower case AM/PM indicator | +|`am` or `pm` |Lower case am/pm indicator | |`AM` or `PM` |Upper case AM/PM indicator | -|`TZD` |Timezone offset | +|`TZD` |Timezone offset from UTC (e.g. "+01:00", "-05:00"…) | |`TIMESTAMP` |<<.from-version "5.2.4">> Number of milliseconds since the [[ECMAScript epoch|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps]], 1 January 1970. | |`\x` |Used to escape a character that would otherwise have special meaning | -|`[UTC]`|Time-shift the represented date to UTC. Must be at very start of format string| + Note that other text is passed through unchanged, allowing commas, colons or other separators to be used. From 79e3d1469878b0d86580192886c250df3ccff2be Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Tue, 20 Jan 2026 13:23:17 +0100 Subject: [PATCH 423/458] [DOCS] Make TaskManagementExamples more "hackable" (#9482) * [DOCS] Make TaskManagementExamples more "hackable" * Update modified date in TaskManagementExample.tid * Fix modified date in TaskManagementExampleDraggable --- .../Tasks/TaskManagementExample.tid | 18 +++++++++--------- .../Tasks/TaskManagementExampleDraggable.tid | 10 +++++++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid index 4e66bb9fce..ab3520bf85 100644 --- a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid +++ b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExample.tid @@ -4,22 +4,22 @@ tags: Learning title: TaskManagementExample type: text/vnd.tiddlywiki -TiddlyWiki5 can be used as a simple task management system without further customisation. The idea is that tasks be tagged `task`, with those that are completed also tagged `done`. In this way it is straightforward to generate task lists. +TiddlyWiki5 can be used as a simple task management system without further customisation.<br>The idea is that tasks be tagged `task`, with those that are completed also tagged `done`. In this way it is straightforward to generate task lists. <<.tip """There is [[an enhanced version of this demo|TaskManagementExample (Draggable)]] that adds the ability to drag and drop the tasks to re-order them.""">> ! Outstanding tasks -<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]"> - -<$checkbox tag="done"> <$link/></$checkbox> - +<$macrocall $name='wikitext-example-without-html' +src="""<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]"> +<$checkbox tag="done"> <$link/></$checkbox><br> </$list> +"""/> ! Completed tasks -<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]"> - -<$checkbox tag="done"> ~~<$link/>~~</$checkbox> - +<$macrocall $name='wikitext-example-without-html' +src="""<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]"> +<$checkbox tag="done"> ~~<$link/>~~</$checkbox><br> </$list> +"""/> diff --git a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid index 4ec1de69aa..17e7be3545 100644 --- a/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid +++ b/editions/tw5.com/tiddlers/demonstrations/Tasks/TaskManagementExampleDraggable.tid @@ -4,20 +4,24 @@ tags: Learning title: TaskManagementExample (Draggable) type: text/vnd.tiddlywiki -This is a version of the TaskManagementExample enhanced with the ability to drag and drop the task list to re-order them. +This is a version of the TaskManagementExample enhanced with the ability to drag and drop the task list to re-order them.<br>The list uses a the itemTemplate [[TaskManagementExampleDraggableTemplate]] tiddler, which you will also need to experiment yourself. ! Outstanding tasks -//Drag the tasks to re-order them// +<$macrocall $name='wikitext-example-without-html' +src="""//Drag the tasks to re-order them// <<list-tagged-draggable tag:"task" subFilter:"!has[draft.of]!tag[done]" itemTemplate:"TaskManagementExampleDraggableTemplate" emptyMessage:"You don't have any active tasks">> +"""/> ! Completed tasks -//(Listed in reverse order of completion)// +<$macrocall $name='wikitext-example-without-html' +src="""//(Listed in reverse order of completion)// <$list filter="[!has[draft.of]tag[task]tag[done]sort[modified]]"> <div> <$checkbox tag="done"> ~~<$link/>~~</$checkbox> </div> </$list> +"""/> From ded76aa84f708d39d21ae9f87369eb34af5d9cba Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Tue, 20 Jan 2026 20:22:42 +0100 Subject: [PATCH 424/458] Fixes Ctrl-Enter not working in EditTemplate tag name input (#9600) * Assign save-tiddler-actions to inputAcceptVariantActions * Add changenote --- core/wiki/macros/tag-picker.tid | 3 ++- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9600.tid | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9600.tid diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index 2ceaab7c47..1c420e9634 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -21,7 +21,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput> <!-- clean up temporary tiddlers, so the next "pick" starts with a clean input --> <!-- This could probably be optimized / removed if we would use different temp-tiddlers - (future improvement because keeping track is comlex for humans) + (future improvement because keeping track is complex for humans) --> \procedure delete-tag-state-tiddlers() <$action-deletetiddler $filter="[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]"/> @@ -111,6 +111,7 @@ The second ESC tries to close the "draft tiddler" refreshTitle=<<refreshTitle>> selectionStateTitle=<<tagSelectionState>> inputAcceptActions=<<add-tag-actions>> + inputAcceptVariantActions=<<save-tiddler-actions>> inputCancelActions=<<clear-tags-actions>> tag="input" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9600.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9600.tid new file mode 100644 index 0000000000..3ec2e5dafe --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9600.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9600 +description: Fix Ctrl-Enter not working in EditTemplate tag name input +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9600 +github-contributors: yaisog + +The tag name input now calls `<<save-tiddler-actions>>` from the EditTemplate when Ctrl-Enter (or whichever key is assigned to input-accept-variant) is pressed. From 62ae4b24bc23a60b38c35f6e8933c6858f00ed29 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Tue, 20 Jan 2026 22:03:43 +0100 Subject: [PATCH 425/458] allow space after const {}. Set keyword spacing to warning (#9589) --- eslint.config.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 3a129c6c24..bb9e12ba4f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -104,7 +104,7 @@ js.configs.recommended, "init-declarations": "off", "@stylistic/jsx-quotes": "error", "@stylistic/key-spacing": "off", - "@stylistic/keyword-spacing": ["error", { + "@stylistic/keyword-spacing": ["warn", { before: true, after: false, overrides: { @@ -114,6 +114,7 @@ js.configs.recommended, return: { after: true }, throw: { after: true }, try: { after: true }, + const: { after: true } }, }], "@stylistic/line-comment-position": "off", From eb3a80968ed466221313624bc37d38bfd7137962 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Wed, 21 Jan 2026 09:08:50 +0100 Subject: [PATCH 426/458] docs: changenotes for previously merged PRs (#9599) * docs: changenotes for previously merged PRs * fix: added text field for changenotes --- .../tiddlers/releasenotes/5.4.0/#9206.tid | 17 +++++++++++ .../tiddlers/releasenotes/5.4.0/#9207.tid | 13 +++++++++ .../tiddlers/releasenotes/5.4.0/#9259.tid | 13 +++++++++ ...acts_deprecate-eventcatcher-attributes.tid | 8 +++++ .../tiddlers/releasenotes/5.4.0/#9260.tid | 29 +++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9206.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9207.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259_impacts_deprecate-eventcatcher-attributes.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9260.tid diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9206.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9206.tid new file mode 100644 index 0000000000..23dce7a724 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9206.tid @@ -0,0 +1,17 @@ +change-category: nodejs +change-type: feature +created: 20260120154012282 +description: Allows server routes to be prioritized via ordering. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9206 +modified: 20260120160656948 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9206 +type: text/vnd.tiddlywiki + +This PR adds support for an info property to server route module exports. The info object may include a priority field, which determines the route’s order of precedence. + +Priorities are numeric and follow a descending order: routes with higher priority values are processed first, similar to how saver modules are prioritized. + +To maintain backward compatibility with existing code, any module that omits info or info.priority is assigned a default priority of 100. Core server routes have been updated to explicitly use this default value of 100. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9207.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9207.tid new file mode 100644 index 0000000000..572ca1eef0 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9207.tid @@ -0,0 +1,13 @@ +change-category: nodejs +change-type: feature +created: 20260120154249928 +description: Allows server routes to support multiple HTTP methods. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9207 +modified: 20260120160159661 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9207 +type: text/vnd.tiddlywiki + +Allows server routes to support multiple HTTP methods by introducing an `exports.methods` array. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259.tid new file mode 100644 index 0000000000..1460a60d2b --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259.tid @@ -0,0 +1,13 @@ +change-category: widget +change-type: deprecation +created: 20260120154533983 +description: The deprecated events and actions-* atrributes for the eventcatcher widget have been removed. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9259 +modified: 20260120160236297 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9259 +type: text/vnd.tiddlywiki + +Deprecates and removes the `events` and `actions-*` attributes for the $eventcatcher widget. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259_impacts_deprecate-eventcatcher-attributes.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259_impacts_deprecate-eventcatcher-attributes.tid new file mode 100644 index 0000000000..38ebe64cf5 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9259_impacts_deprecate-eventcatcher-attributes.tid @@ -0,0 +1,8 @@ +changenote: $:/changenotes/5.4.0/#9259 +created: 20260120154817011 +description: Deprecated events and actons-* attributes from the eventcatcher widget +impact-type: deprecation +modified: 20260120154900978 +tags: $:/tags/ImpactNote +title: $:/changenotes/5.4.0/#9259/impacts/deprecate-eventcatcher-attributes +type: text/vnd.tiddlywiki \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9260.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9260.tid new file mode 100644 index 0000000000..ffc444ca6b --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9260.tid @@ -0,0 +1,29 @@ +change-category: hackability +change-type: feature +created: 20260120154445701 +description: Adds info tiddlers for viewport dimensions that are updated on window resize. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9260 +modified: 20260120160515462 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9260 +type: text/vnd.tiddlywiki + +Adds info tiddlers for viewport dimensions that are updated on window resize. + +!! Example: Main and a user-created window with windowID my-window + +|Window | Info tiddler | Meaning |h +|system/main |`$:/info/browser/window/system/main/outer/width` | Full browser window including chrome, tabs, toolbars | +|system/main |`$:/info/browser/window/system/main/outer/height` | Full browser window including chrome, tabs, toolbars | +|system/main |`$:/info/browser/window/system/main/inner/width` | Viewport width including scrollbars | +|system/main |`$:/info/browser/window/system/main/inner/height` | Viewport height including scrollbars | +|system/main |`$:/info/browser/window/system/main/client/width` | Content width excluding scrollbars | +|system/main |`$:/info/browser/window/system/main/client/height` | Content height excluding scrollbars | +|user/my-window |`$:/info/browser/window/user/my-window/outer/width` | Full browser window including chrome, tabs, toolbars | +|user/my-window |`$:/info/browser/window/user/my-window/outer/height` | Full browser window including chrome, tabs, toolbars | +|user/my-window |`$:/info/browser/window/user/my-window/inner/width` | Viewport width including scrollbars | +|user/my-window |`$:/info/browser/window/user/my-window/inner/height` | Viewport height including scrollbars | +|user/my-window |`$:/info/browser/window/user/my-window/client/width` | Content width excluding scrollbars | +|user/my-window |`$:/info/browser/window/user/my-window/client/height` | Content height excluding scrollbars | From efe58e41bc6c2f7ee5bc082912f84d94d2fa6848 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 21 Jan 2026 09:09:14 +0100 Subject: [PATCH 427/458] [DOCS] Fix some typos in "days Operator (Examples)" (#9479) * [DOCS] Fix some typos in "days Operator (Examples)" * Remove created and modified fields from days.tid Remove created and modified fields from days.tid --- editions/tw5.com/tiddlers/filters/examples/days.tid | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/editions/tw5.com/tiddlers/filters/examples/days.tid b/editions/tw5.com/tiddlers/filters/examples/days.tid index 12c336e8d7..308f100f61 100644 --- a/editions/tw5.com/tiddlers/filters/examples/days.tid +++ b/editions/tw5.com/tiddlers/filters/examples/days.tid @@ -6,15 +6,13 @@ type: text/vnd.tiddlywiki <<.operator-example 2 "[!days:created[-800]]" "tiddlers created more than 800 days ago">> The filter can be used to highlight new items in a list. For example: <$macrocall - $name="wikitext-example-without-html" src= -""" -<ul> + $name="wikitext-example-without-html" + src="""<ul> <$list filter="[tag[ReleaseNotes]!<currentTiddler>!sort[modified]]"> <li> <$link><$view field="title"/></$link> - <$list filter="[<currentTiddler>days[-180]]"> @@color:red;^^new^^@@</$list> - <$list filter="[<currentTiddler>days[-500]!days[-180]]"> @@color:black;^^recent^^@@</$list> + <$list filter="[<currentTiddler>days[-180]]"> @@color:red;^^new^^@@</$list> + <$list filter="[<currentTiddler>days[-500]!days[-180]]"> @@color:black;^^recent^^@@</$list> </li> </$list> -</ul> -"""/> +</ul>"""/> From 70b455773834f44d4febb1ddc01cc3e40283109a Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 25 Jan 2026 16:59:54 +0100 Subject: [PATCH 428/458] [DOCS] Add link to "TiddlyWiki Archive" tiddler to the TiddlyWiki Releases info (#9613) --- .../tiddlers/releasenotes/TiddlyWiki Releases.tid | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid index 57c3352652..d8d5281d41 100644 --- a/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid +++ b/editions/tw5.com/tiddlers/releasenotes/TiddlyWiki Releases.tid @@ -7,12 +7,14 @@ type: text/vnd.tiddlywiki Here are the details of recent releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. -If you are using node.js, you can also install prior versions like this: +* An overview about all TW versions can be found at the [[TiddlyWiki Archive]]. -> npm install -g tiddlywiki@5.1.13 +* If you are using Node.js, you can also install ''prior'' versions like this: -(BetaReleases and AlphaReleases are listed separately). +*> npm install -g tiddlywiki@5.3.0 + +* BetaReleases and AlphaReleases are listed separately <$list filter="[tag[ReleaseNotes]!sort[created]limit[1]]"> <$macrocall $name="tabs" tabsList="[tag[ReleaseNotes]!sort[created]]" default={{!!title}} class="tc-vertical" template="ReleaseTemplate" /> -</$list> +</$list> \ No newline at end of file From 75647eb6237398ffa4a76d01b156cfad5a2f826e Mon Sep 17 00:00:00 2001 From: buggyj <buggyjef@gmail.com> Date: Sun, 25 Jan 2026 17:02:18 +0100 Subject: [PATCH 429/458] =?UTF-8?q?Fixes=20#8092=20SelectWidget=20does=20n?= =?UTF-8?q?ot=20work=20with=20multiple=20options=20organise=E2=80=A6=20(#8?= =?UTF-8?q?093)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixes #8092 SelectWidget does not work with multiple options organised into group * Consolidate variables * Apply suggestion from @saqimtiaz * Update core/modules/widgets/select.js Co-authored-by: Mario Pietsch <pmariojo@gmail.com> * added release note * chore: lint fixes --------- Co-authored-by: Saq Imtiaz <saq.imtiaz@gmail.com> Co-authored-by: Mario Pietsch <pmariojo@gmail.com> --- core/modules/widgets/select.js | 13 +++++++++++-- .../tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid | 10 ++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index 8bc23542cc..eea56cae78 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -121,9 +121,18 @@ SelectWidget.prototype.setSelectValue = function() { if (this.selectMultiple) { value = value === undefined ? "" : value; var select = this.getSelectDomNode(); - var values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value); + var child, + values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value); for(var i=0; i < select.children.length; i++){ - select.children[i].selected = values.indexOf(select.children[i].value) !== -1 + child=select.children[i]; + if(child.children.length === 0){ + child.selected = values.indexOf(child.value) !== -1; + } else { + // grouped options + for(var y=0; y < child.children.length; y++){ + child.children[y].selected = values.indexOf(child.children[y].value) !== -1; + } + } } } else { var domNode = this.getSelectDomNode(); diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid new file mode 100644 index 0000000000..dc967b0135 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#8093 +description: Fixes SelectWidget does not work with multiple options organised into group - issue #8092 +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: widget +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/issues/8093 +github-contributors: buggyj + +Fixed SelectWidget does not work with multiple options organised into group. From a40ce2945186795b5e00997b269fbcd1a52d377c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KiXaM=5F=E5=88=BB=E3=82=80?= <kixam@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:04:16 +0100 Subject: [PATCH 430/458] Add an option to enable CORS (#9277) * Add an option to disable CORS * change 'disable' with 'enable' CORS, because that is what this option actually does * add a change note * typo --- core-server/server/server.js | 15 +++++++++++++++ .../tw5.com/tiddlers/releasenotes/5.4.0/#9277.tid | 10 ++++++++++ 2 files changed, 25 insertions(+) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9277.tid diff --git a/core-server/server/server.js b/core-server/server/server.js index e1741d08bb..b82f6307b4 100644 --- a/core-server/server/server.js +++ b/core-server/server/server.js @@ -42,6 +42,8 @@ function Server(options) { } // Setup the default required plugins this.requiredPlugins = this.get("required-plugins").split(','); + // Initialise CORS + this.corsEnable = this.get("cors-enable") === "yes"; // Initialise CSRF this.csrfDisable = this.get("csrf-disable") === "yes"; // Initialize Gzip compression @@ -261,6 +263,13 @@ Server.prototype.requestHandler = function(request,response,options) { state.urlInfo = url.parse(request.url); state.queryParameters = querystring.parse(state.urlInfo.query); state.pathPrefix = options.pathPrefix || this.get("path-prefix") || ""; + // Enable CORS + if(this.corsEnable) { + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setHeader("Access-Control-Allow-Methods", "*"); + response.setHeader("Access-Control-Expose-Headers", "*"); + } state.sendResponse = sendResponse.bind(self,request,response); // Get the principals authorized to access this resource state.authorizationType = options.authorizationType || this.methodMappings[request.method] || "readers"; @@ -285,6 +294,12 @@ Server.prototype.requestHandler = function(request,response,options) { response.end(); return; } + // Reply to OPTIONS + if(this.corsEnable && request.method === "OPTIONS") { + response.writeHead(204); + response.end(); + return; + } // Find the route that matches this path var route = self.findMatchingRoute(request,state); // Optionally output debug info diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9277.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9277.tid new file mode 100644 index 0000000000..9b39e16e7e --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9277.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9277 +description: Added an option to enable CORS +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: feature +change-category: developer +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9277 +github-contributors: kixam + +Added an option to the TiddlyWiki5 server to enable CORS (ie. don't check `same-origin`). It is meant for advanced users, do not use it unless you understand the full consequences. From d07fe25cdb518b22859513a39101c0fe7c6f18d0 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Sun, 25 Jan 2026 19:05:46 +0100 Subject: [PATCH 431/458] feat: extend fakedom implementation (#9616) * feat: extend fakedom implementation * docs: updated changenote --- core/modules/utils/fakedom.js | 1 + editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 764ac84f8e..18e0afc881 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -37,6 +37,7 @@ Object.defineProperty(TW_Node.prototype, 'TEXT_NODE', { var TW_TextNode = function(text) { bumpSequenceNumber(this); this.textContent = text + ""; + this.children = []; }; Object.setPrototypeOf(TW_TextNode.prototype,TW_Node.prototype); diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid index dc967b0135..1e8da34492 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8093.tid @@ -4,7 +4,7 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: bugfix change-category: widget -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/issues/8093 -github-contributors: buggyj +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/issues/8093 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9616 +github-contributors: buggyj saqimtiaz Fixed SelectWidget does not work with multiple options organised into group. From cde9c931c8491588c548ba55a855f374335a774d Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Sun, 25 Jan 2026 19:58:52 +0100 Subject: [PATCH 432/458] Select widget handle default parameter refresh (#9617) * select widget handle default parameter refresh * Add change note --- core/modules/widgets/select.js | 14 +++++++------- .../#9617 - select-widget-refresh-default.tid | 12 ++++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9617 - select-widget-refresh-default.tid diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index eea56cae78..b05af5dbbe 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -82,8 +82,8 @@ SelectWidget.prototype.handleChangeEvent = function(event) { if(this.selectMultiple == false) { var value = this.getSelectDomNode().value; } else { - var value = this.getSelectValues() - value = $tw.utils.stringifyList(value); + var value = this.getSelectValues(); + value = $tw.utils.stringifyList(value); } this.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value); // Trigger actions @@ -118,7 +118,7 @@ SelectWidget.prototype.setSelectValue = function() { } } // Assign it to the select element if it's different than the current value - if (this.selectMultiple) { + if(this.selectMultiple) { value = value === undefined ? "" : value; var select = this.getSelectDomNode(); var child, @@ -156,14 +156,14 @@ SelectWidget.prototype.getSelectValues = function() { select = this.getSelectDomNode(); result = []; options = select && select.options; - for (var i=0; i<options.length; i++) { + for(var i=0; i<options.length; i++) { opt = options[i]; - if (opt.selected) { + if(opt.selected) { result.push(opt.value || opt.text); } } return result; -} +}; /* Compute the internal state of the widget @@ -192,7 +192,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of SelectWidget.prototype.refresh = function(changedTiddlers) { var changedAttributes = this.computeAttributes(); // If we're using a different tiddler/field/index then completely refresh ourselves - if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip || changedAttributes.tabindex || changedAttributes.disabled) { + if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip || changedAttributes.default || changedAttributes.tabindex || changedAttributes.disabled) { this.refreshSelf(); return true; } else { diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9617 - select-widget-refresh-default.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9617 - select-widget-refresh-default.tid new file mode 100644 index 0000000000..e6ec269ef0 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9617 - select-widget-refresh-default.tid @@ -0,0 +1,12 @@ +change-category: usability +change-type: bugfix +created: 20260125195754439 +description: Refresh widget if "default" parameter input value is changed +github-contributors: pmario +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9217 +modified: 20260125195754439 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9217 +type: text/vnd.tiddlywiki + From 75edd9b4886ada68650f2b8bd70ded44ba9d6ae1 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Mon, 26 Jan 2026 16:03:50 +0100 Subject: [PATCH 433/458] Reverts change to getLocationHash utils method (#9622) * fix: reverted change to getLocationHash utils method * docs: update changenote --- boot/boot.js | 21 +++++++++++++++++-- .../5.4.0/deprecate-util-func.tid | 4 ++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index ce713916de..c5aa254641 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -316,8 +316,25 @@ $tw.utils.htmlDecode = function(s) { return s.toString().replace(/</mg,"<").replace(/ /mg,"\xA0").replace(/>/mg,">").replace(/"/mg,"\"").replace(/&/mg,"&"); }; -/** @deprecated Use window.location.hash instead. */ -$tw.utils.getLocationHash = () => window.location.hash; +/* +Get the browser location.hash. We don't use location.hash because of the way that Firefox auto-urldecodes it (see http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash) +*/ +$tw.utils.getLocationHash = function() { + const href = window.location.href, + idx = href.indexOf("#"); + + if(idx === -1) { + return "#"; + } + + const afterHash = href.substring(idx + 1); + if(afterHash.startsWith("#") || afterHash.startsWith("%23")) { + // Special case: ignore location hash if it itself starts with a # + return "#"; + } + return href.substring(idx); +}; + /** @deprecated Pad a string to a given length with "0"s. Length defaults to 2 */ $tw.utils.pad = function(value,length = 2) { diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/deprecate-util-func.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/deprecate-util-func.tid index b2c05acabf..83e4b83e4b 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/deprecate-util-func.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/deprecate-util-func.tid @@ -4,7 +4,7 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: deprecation change-category: developer -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9251 -github-contributors: Leilei332 +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9251 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9622 +github-contributors: Leilei332 saqimtiaz Deprecate some utility functions. Some of them are moved to [[$:/core/modules/utils/deprecated.js]]. \ No newline at end of file From bffa0bb95af176cc9457d4406e86597710c19a0c Mon Sep 17 00:00:00 2001 From: Mohammad Rahmani <830394+kookma@users.noreply.github.com> Date: Wed, 4 Feb 2026 12:39:02 +0330 Subject: [PATCH 434/458] Update Documentation for list-tagged-draggable and list-links-draggable. (#9553) * Update documents for list-links-draggable Macro.tid add : `<<.from-version 5.4.0>> ` * Update documentation for list-tagged-draggable Macro.tid Added `<<.from-version 5.4.0>> ` * Update list-links-draggable Macro.tid Correct extra space and remove colon * Remove duplicate title view field in list.tid Removed redundant view field for title in list.tid. This PR should fix issue reported here: https://github.com/TiddlyWiki/TiddlyWiki5/issues/9555 --- .../tw5.com/tiddlers/macros/list-links-draggable Macro.tid | 2 +- .../tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid index c4bf42da20..4344fbf7b0 100644 --- a/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid @@ -32,7 +32,7 @@ The <<.def list-links-draggable>> [[macro|Macros]] renders the ListField of a ti : Optional title of a tiddler to use as the template for rendering list items ;displayField -: Optional name of the field to display when the list is rendered. Defaults to the "caption" field; if "caption" is not present, the "title" field is used instead +: <<.from-version 5.4.0>> Optional name of the field to display when the list is rendered. Defaults to the "caption" field; if "caption" is not present, the "title" field is used instead If the `itemTemplate` parameter is not provided then the list items are rendered as simple links. Within the `itemTemplate`, the [[currentTiddler Variable]] refers to the current list item. diff --git a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid index 3cb9fb7ee8..1eae6b7be5 100644 --- a/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid +++ b/editions/tw5.com/tiddlers/macros/list-tagged-draggable Macro.tid @@ -17,9 +17,9 @@ The <<.def list-tagged-draggable>> [[macro|Macros]] renders the tiddlers with a : Optional title of a tiddler to use as the template for rendering list items ;emptyMessage : Optional wikitext to display if there are no tiddlers with the specified tag -Here’s a corrected and polished version of your sentence in clear, standard English: + ;displayField -: Optional name of the field to display when the list is rendered. Defaults to `title` field. +: <<.from-version 5.4.0>> Optional name of the field to display when the list is rendered. Defaults to `title` field. Note that the [[ordering|Order of Tagged Tiddlers]] is accomplished by assigning a new list to the `list` field of the tag tiddler. Any `list-before` or `list-after` fields on any of the other tiddlers carrying the tag are also removed to ensure the `list` field is respected. From 455f1be3fb5dd65bd74c77cdbbad43d44ebd412c Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 17:09:39 +0800 Subject: [PATCH 435/458] Fix missing semicolon in Snow White (#9625) * Fix missing comma in Snow White * Update change note --- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9243.tid | 2 +- themes/tiddlywiki/snowwhite/base.tid | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9243.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9243.tid index 6ef66436a6..cba16fe015 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9243.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9243.tid @@ -4,5 +4,5 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: enhancement change-category: theme -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9243 +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9243 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9625 github-contributors: Leilei332 diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 2e6d568fec..051cc5e8db 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -46,7 +46,7 @@ tags: [[$:/tags/Stylesheet]] } .tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor { - box-shadow: none + box-shadow: none; border: none; outline: none; } From 526aaa3db855a52afbf0c42d3a266346f923dd79 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 17:11:09 +0800 Subject: [PATCH 436/458] Bump katex to newest version (#9626) * Bump katex to newest version * Update fonts Also migrate to woff2 * Update readme * Update change note --- .../releasenotes/5.4.0/bump-latex.tid | 10 +++ .../katex/files/contrib/mhchem.min.js | 2 +- .../katex/files/fonts/KaTeX_AMS-Regular.woff | Bin 33516 -> 0 bytes .../katex/files/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 28076 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff | Bin 7716 -> 0 bytes .../files/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 6912 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 7656 -> 0 bytes .../katex/files/fonts/KaTeX_Fraktur-Bold.woff | Bin 13296 -> 0 bytes .../files/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 11348 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff | Bin 13208 -> 0 bytes .../files/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 11316 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff | Bin 29912 -> 0 bytes .../katex/files/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 25324 bytes .../files/fonts/KaTeX_Main-BoldItalic.woff | Bin 19412 -> 0 bytes .../files/fonts/KaTeX_Main-BoldItalic.woff2 | 0 .../katex/files/fonts/KaTeX_Main-Italic.woff | Bin 19676 -> 0 bytes .../katex/files/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 16988 bytes .../katex/files/fonts/KaTeX_Main-Regular.woff | Bin 30772 -> 0 bytes .../files/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 26272 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff | Bin 18668 -> 0 bytes .../files/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 16400 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff | Bin 18748 -> 0 bytes .../katex/files/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 16440 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff | Bin 14408 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 12216 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff | Bin 14112 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 12028 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff | Bin 12316 -> 0 bytes .../files/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 10344 bytes .../files/fonts/KaTeX_Script-Regular.woff | Bin 10588 -> 0 bytes .../files/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 9644 bytes .../files/fonts/KaTeX_Size1-Regular.woff | Bin 6496 -> 0 bytes .../files/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5468 bytes .../files/fonts/KaTeX_Size2-Regular.woff | Bin 6188 -> 0 bytes .../files/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5208 bytes .../files/fonts/KaTeX_Size3-Regular.woff | Bin 4420 -> 0 bytes .../files/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3624 bytes .../files/fonts/KaTeX_Size4-Regular.woff | Bin 5980 -> 0 bytes .../files/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 4928 bytes .../files/fonts/KaTeX_Typewriter-Regular.woff | Bin 16028 -> 0 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 13568 bytes plugins/tiddlywiki/katex/files/katex.min.css | 2 +- plugins/tiddlywiki/katex/files/katex.min.js | 2 +- .../files/katex.without-font-face.min.css | 2 +- .../tiddlywiki/katex/files/tiddlywiki.files | 4 +- plugins/tiddlywiki/katex/readme.tid | 2 +- plugins/tiddlywiki/katex/styles.tid | 60 ++++++++++++------ 47 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-latex.tid delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 delete mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-latex.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-latex.tid new file mode 100644 index 0000000000..7842014ac2 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/bump-latex.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9626 +description: Bump katex to latest version +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: plugin +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9626 +github-contributors: Leilei332 + +Bump latex to latest version and use woff2 fonts to reduce plugin size. \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/contrib/mhchem.min.js b/plugins/tiddlywiki/katex/files/contrib/mhchem.min.js index 84e1198ded..7e45d59d00 100644 --- a/plugins/tiddlywiki/katex/files/contrib/mhchem.min.js +++ b/plugins/tiddlywiki/katex/files/contrib/mhchem.min.js @@ -1 +1 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,(function(t){return function(){"use strict";var e={771:function(e){e.exports=t}},n={};function o(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,o),r.exports}o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var a={};return function(){var t=o(771),e=o.n(t);e().__defineMacro("\\ce",(function(t){return n(t.consumeArgs(1)[0],"ce")})),e().__defineMacro("\\pu",(function(t){return n(t.consumeArgs(1)[0],"pu")})),e().__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var n=function(t,e){for(var n="",o=t.length&&t[t.length-1].loc.start,i=t.length-1;i>=0;i--)t[i].loc.start>o&&(n+=" ",o=t[i].loc.start),n+=t[i].text,o+=t[i].text.length;return r.go(a.go(n,e))},a={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",r={};r.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var i=10,c=[];;){n!==t?(i=10,n=t):i--;var u=a.stateMachines[e],p=u.transitions[o]||u.transitions["*"];t:for(var s=0;s<p.length;s++){var _=a.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(u.actions[d.action_[m].type_])l=u.actions[d.action_[m].type_](r,_.match_,d.action_[m].option);else{if(!a.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=a.actions[d.action_[m].type_](r,_.match_,d.action_[m].option)}a.concatArray(c,l)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(i<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=a.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return a.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return a.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return a.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return a.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return a.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return a.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return a.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return a.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return a.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return a.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return a.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return a.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return a.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return a.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return a.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return a.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=a.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=a.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return a.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return a.go(e,"text")},"{text}":function(t,e){var n=["{"];return a.concatArray(n,a.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return a.go(e,"tex-math")},"tex-math tight":function(t,e){return a.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return a.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return a.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};a.stateMachines={ce:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return a.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return a.concatArray(n,this.output(t)),a.concatArray(n,a.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=a.patterns.match_("orbital",t.o||""),r=a.patterns.match_("one lowercase greek letter $",t.o||""),i=a.patterns.match_("one lowercase latin letter $",t.o||""),c=a.patterns.match_("$one lowercase latin letter$ $",t.o||""),u="-"===e&&(o&&""===o.remainder||r||i||c);!u||t.a||t.b||t.p||t.d||t.q||o||!i||(t.o="$"+t.o+"$");var p=[];return u?(a.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=a.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(a.concatArray(p,a.actions["d="](t,e)),a.concatArray(p,this.output(t))):(a.concatArray(p,this.output(t)),a.concatArray(p,a.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:a.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,r,i;t.r?(r="M"===t.rdt?a.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:a.go(t.rd),i="M"===t.rqt?a.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:a.go(t.rq),o={type_:"arrow",r:t.r,rd:r,rq:i}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&a.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:a.go(t.a,"a"),b:a.go(t.b,"bd"),p:a.go(t.p,"pq"),o:a.go(t.o,"o"),q:a.go(t.q,"pq"),d:a.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var c in t)"parenthesisLevel"!==c&&"beginsWithBond"!==c&&delete t[c];return o},"oxidation-output":function(t,e){var n=["{"];return a.concatArray(n,a.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:a.go(e[0]),p2:a.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:a.go(e[0]),p2:a.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:a.go(e[0]),p2:a.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:a.go(e[0]),p2:a.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:a.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:a.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:a.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:a.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1],"pq")}}}},bd:{transitions:a.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1],"bd")}}}},oxidation:{transitions:a.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:a.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(a.concatArray(n,a.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?a.concatArray(n,a.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),a.concatArray(n,a.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=a.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=a.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var r={d:a.go(t.d,"pu"),q:a.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:r.d,p2:r.q}:(e=r.d,r.d.length>1||r.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),a.concatArray(e,r.q))}else e=a.go(t.d,"pu-2");for(var i in t)delete t[i];return e}}},"pu-2":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=a.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?a.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:a.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var r={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var i=t[a];"string"==typeof i?n+=i:(n+=r._go2(i),"1st-level escape"===i.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?r.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:r._goInner(t.a),b:r._goInner(t.b),p:r._goInner(t.p),o:r._goInner(t.o),q:r._goInner(t.q),d:r._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+r._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+r._goInner(t.p1);break;case"bond":if(!(e=r._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+r._goInner(t.p1)+"}_{"+r._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+r._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var i={rd:r._goInner(t.rd),rq:r._goInner(t.rq)},c="\\x"+r._getArrow(t.r);i.rq&&(c+="[{"+i.rq+"}]"),e=c+=i.rd?"{"+i.rd+"}":"{}";break;case"operator":e=r._getOperator(t.kind_);break;case"1st-level escape":e=t.p1+" ";break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}}}(),a=a.default}()})); \ No newline at end of file +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,(function(t){return function(){"use strict";var e={757:function(e){e.exports=t}},n={};function o(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,o),r.exports}o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var a={},r=o(757),i=o.n(r);i().__defineMacro("\\ce",(function(t){return c(t.consumeArgs(1)[0],"ce")})),i().__defineMacro("\\pu",(function(t){return c(t.consumeArgs(1)[0],"pu")})),i().__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var c=function(t,e){for(var n="",o=t.length&&t[t.length-1].loc.start,a=t.length-1;a>=0;a--)t[a].loc.start>o&&(n+=" ",o=t[a].loc.start),n+=t[a].text,o+=t[a].text.length;return p.go(u.go(n,e))},u={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",a={};a.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var r=10,i=[];;){n!==t?(r=10,n=t):r--;var c=u.stateMachines[e],p=c.transitions[o]||c.transitions["*"];t:for(var s=0;s<p.length;s++){var _=u.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(c.actions[d.action_[m].type_])l=c.actions[d.action_[m].type_](a,_.match_,d.action_[m].option);else{if(!u.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=u.actions[d.action_[m].type_](a,_.match_,d.action_[m].option)}u.concatArray(i,l)}if(o=d.nextState||o,!(t.length>0))return i;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(r<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=u.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return u.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return u.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return u.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return u.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return u.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return u.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return u.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return u.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return u.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return u.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return u.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return u.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return u.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return u.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return u.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return u.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return u.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return u.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return u.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return u.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=u.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=u.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return u.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return u.go(e,"text")},"{text}":function(t,e){var n=["{"];return u.concatArray(n,u.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return u.go(e,"tex-math")},"tex-math tight":function(t,e){return u.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return u.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return u.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};u.stateMachines={ce:{transitions:u.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return u.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return u.concatArray(n,this.output(t)),u.concatArray(n,u.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=u.patterns.match_("orbital",t.o||""),a=u.patterns.match_("one lowercase greek letter $",t.o||""),r=u.patterns.match_("one lowercase latin letter $",t.o||""),i=u.patterns.match_("$one lowercase latin letter$ $",t.o||""),c="-"===e&&(o&&""===o.remainder||a||r||i);!c||t.a||t.b||t.p||t.d||t.q||o||!r||(t.o="$"+t.o+"$");var p=[];return c?(u.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=u.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(u.concatArray(p,u.actions["d="](t,e)),u.concatArray(p,this.output(t))):(u.concatArray(p,this.output(t)),u.concatArray(p,u.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:u.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,a,r;t.r?(a="M"===t.rdt?u.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:u.go(t.rd),r="M"===t.rqt?u.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:u.go(t.rq),o={type_:"arrow",r:t.r,rd:a,rq:r}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&u.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:u.go(t.a,"a"),b:u.go(t.b,"bd"),p:u.go(t.p,"pq"),o:u.go(t.o,"o"),q:u.go(t.q,"pq"),d:u.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var i in t)"parenthesisLevel"!==i&&"beginsWithBond"!==i&&delete t[i];return o},"oxidation-output":function(t,e){var n=["{"];return u.concatArray(n,u.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:u.go(e[0]),p2:u.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:u.go(e[0]),p2:u.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:u.go(e[0]),p2:u.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:u.go(e[0]),p2:u.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:u.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:u.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:u.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:u.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:u.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:u.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:u.go(e[1],"pq")}}}},bd:{transitions:u.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:u.go(e[1],"bd")}}}},oxidation:{transitions:u.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:u.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:u.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:u.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:u.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(u.concatArray(n,u.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?u.concatArray(n,u.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),u.concatArray(n,u.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=u.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=u.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var a={d:u.go(t.d,"pu"),q:u.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:a.d,p2:a.q}:(e=a.d,a.d.length>1||a.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),u.concatArray(e,a.q))}else e=u.go(t.d,"pu-2");for(var r in t)delete t[r];return e}}},"pu-2":{transitions:u.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=u.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?u.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:u.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var p={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var r=t[a];"string"==typeof r?n+=r:(n+=p._go2(r),"1st-level escape"===r.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?p.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:p._goInner(t.a),b:p._goInner(t.b),p:p._goInner(t.p),o:p._goInner(t.o),q:p._goInner(t.q),d:p._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+p._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+p._goInner(t.p1);break;case"bond":if(!(e=p._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+p._goInner(t.p1)+"}{"+p._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":case"1st-level escape":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+p._goInner(t.p1)+"}{"+p._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+p._goInner(t.p1)+"}{"+p._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+p._goInner(t.p1)+"}{"+p._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+p._goInner(t.p1)+"}_{"+p._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+p._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var r={rd:p._goInner(t.rd),rq:p._goInner(t.rq)},i="\\x"+p._getArrow(t.r);r.rq&&(i+="[{"+r.rq+"}]"),e=i+=r.rd?"{"+r.rd+"}":"{}";break;case"operator":e=p._getOperator(t.kind_);break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}};return a=a.default}()})); \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff deleted file mode 100644 index b804d7b33a3fa5b2587d2d1d55006aed678e3eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33516 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 C1|J3h diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0acaaff03d4bb7606de02a827aeee338e5a86910 GIT binary patch literal 28076 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 literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff deleted file mode 100644 index 9759710d1d3e16eb10012d56babb73f2479ba9f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7716 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 WygV|z46!#jJ}@vcF#i9~zz+cDL^zcI diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f390922eceffe1f6dfb81a3dc086a92d98171b02 GIT binary patch literal 6912 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 literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Caligraphic-Regular.woff deleted file mode 100644 index 9bdd534fd2beb9b878f0219da9d63ffba56677e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7656 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 E04Z<_=l}o! diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff deleted file mode 100644 index e7730f66275c87c28f26530d89264cffecf90be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13296 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 MFfuUy|Ife=0DP{HUH||9 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..395f28beac23c7b0f7f3a1e714bd8dac253dd3bc GIT binary patch literal 11348 zcmXT-cQayOWME)m&<SDS1JOPY7#OtwLc~CPRLqvZ(8$7J!#RgXkb~>F!{us5GbR=0 zrW)=>2L=`e){Z*%CIy~Gb?Hn;SLLh%ISyaOySrUN^2+@G?N<$u+*J0Vgy*U>lSh}D zhK65p&$3rXF0iaRJ@*Ie!}+Zeea%OM&(C|`xA{_NzPxn$&yH1*Z&!=hdw)3|7xmG+ zY|iuE2`SsQy6=8of6mkFq?35{!rBQxtV6Tj@|Aqou3*o|`?|50u{%SImHSwP>S~o^ zFHByE3fA`299>bj*#2_A*8a{_e?L^0#WVDFf6NG6)a!H9Lt$xS?38BxKij`wH{V+I z$adDv)P9kZ4UYsowk78`oV|Yey%1}7^wR$1Np(x(4NmEpH6Cee$(^}tIsc!yP+!?) zmnM9gcsj+_Xz5Oaw;rCJ+pYCPH)QZ`Zj-$I#qs+eagKnD=<RnJbl&MNO8fcysleqk zEqA8p1aIs(xtl+~D#L4+*TS<?qQ8r`C1tsGIqlhRDAy8jvt!Ax_4h)%BA@$2D%~oT zJ05nqLO^AcT)V)9$N%qNne@+o(srMymwT9m8k{>!rs>a`xOcl;W%0HxzV|-m{G7Gr zp3Tkh-1k?Tf+}3EZ;19<uk${lf+>N4)1gvPg`w?Y3mbbtiO$q}$rk=AS0Au2+P?JK zgnP2HZ-_LqoUon!{Onei=ew)=SZmh$v#eu(*{;*`+2irD<&E))KfYPdKmW!!ySR_> z?R?!!XY?ZNe_2i~KJCSL;eV*5N2zWMgFZ|5kwVt8{g;hq)VM{5uDa^6(){?kEuZ#& z{p&Ps<pztL&n2&(oD=<T-oE+&A5N=%FCG8;)bxEHW**-!c{Aclz=YRFzH@9g_+_*2 z&%GL}s>9zx&jjuMb8gEvmvU9HmW_<@=LP1}FWvP=^hW*6x$hs#R34PQd3mRx^6Rus z@As%r6L`Et+QCRK%a!SJR@_9zxEfc+FYQUsj<M#>R8P8c$aw8EzPl>L)r?hcX|t<N zZ9aM+Hn!)K*;m{7!ZJ-ayJvr&!0yssGi#eQr=hjXjR{Ni)+#V7MWiI;@=S7Bxc$|I zX8q17Kd)b~>@Bj94$fuwf4J?Zbq&X^JrS0_*PL_LpVT~GjBlU0$it=c=4wt{Sm}{} zF<L4vimUj^YE}03<I6lgw|;hEJ9Hq&<aNE&rpu3eW=MBrdcTWarhJLVod0s9it);2 z>C@JjzMeeMNqrAP^+g|zEK%JA9xs2}6+7j=c?C-aKmWVEbJe0lG07bJU-T_vD7JhV zlTf}Z+}b88_x{Igopb7Jr!4yNuJqI%!AHBiXNw)#)3{ilncLm>(7ZfR(~M%124~*1 z%-bOjYp#1fIXCCaw556eeY^~OY;)#%M&4eYf9}Pp7TMh|g)JrC7)qL7Q=M<~;F?<S zrQj)x1zvB|uuYnCTl7nZ_m!qiEiaAS7l*k$oMdG?`*HZhwBL>{hb39gtW>xD;_i~O zp8fri+mohybR3Gk9rOOHmfH-U2H{WMs#VWsOD*P^lkIBQ9HIT_gpKC8C2LN<<w|yY za&^^Ky$R}PAHFWr__TNP@h{ntCW`hu1^4Bxy?oB!>)$0-ktaKnpM{97)Oc*Ly{1g} zA=_e(Oh1Q*t2HFrG-E%9UVZDDs~`W|R(&qdhJQ!OS(8s>UJ5XO#ge0!SaXaiW^<oQ z(i8oqTmIhY+7WQz_U%T?;2y~tm&}8fb}WC|+AVb2G%!?X!G$>?UWp17y3^z(U4=zN z7AJWMHyI_a5MT^dTIi;;LYS3z(Lzt2EgiPEc!ip`g<QS<R$+zbd0sc~*X8;bX0MPp ze}D0I;NLsxntBF2@#>yWE6%#~_TOL&>%Y8?ez<tIXkO--;WYqSlL(#6#Y6SzQ#) zm?T!!s&ra3%GyObEY|zmliVfdH?(i8mi^`_&k*clqMsQV^?j!|r#r(J)3BdHUvf9E z6aKxWdurP8hbt>*y=lLA=c(E+=Jf~qc@D5{?9AQFr}@C-+-c>X$5*bZRzJP8e%9CW z`8+IAKD8%=9zQBy@krsy_E}xc-PJ1R_PMk#*r3v9W#O`$E%?Wr_3v&yRd1=i{?X01 z{h;RAxcEg60t8N$XZm~Zf9yJcPleGmJ$Lq<%Nc#;{_LKbD0xL|`AQ#eiwCdrRIPs5 z$aw8t<@fXFt4W#Z(M271)?JZ1r4qF9T-S|<lFY%vCvR};F0*?zwWLTVDLs69j2<W3 zt<;%IQq@Z=B)8<Wx0Oj63M=iHp~R+=URm`@tVCn8>XDrRo##qSi!X;2TFA;An=sWi zY}V8NdzEvnjGnQ~NE18RIPqs;JI|)A&$d2mm+Gx3zaGU9<t65&ouBjJ=kKE&DbB~# zmDF_Jvb)JX7W8=IBJ=c0X?5I;zZV6rxMZE5JYC}2-DRvMVbkwrrajs5bcS`_uCKoR zy7te5`m1CtOt$FR%E^dX#!8$oGv?QmTaa}2p0mM0w?h|G)anx#rN6TCzI3yRZL7}g zA9C|M9(~y%<Qer}X_-%2-Ntoq4)*F;pP#9iACP!Sqm9k5rpP(EZO@sR?xq$Grlf3q zcbc*H&YrZdygB#ht!&NISl~6Q`NnKMzRJTr$DKFnt}s0LmMgJHZIabl$;t#VwgjOK z4ig!KS_9NLT>0u388J$=2B@>}$_Tv_HW58w#pD$2Xt9aqkx+-bf}JBvTA^o$w^EGI z<1QDz{v{PEhm|eog*qJ8QVm<V!K*h^YR#pjseG%y+)!oas&w3PtjA>K5<ib_$xk0S zje?6sP8?KXOO<3^BQ_zhC%d#@ao-KD#|^uWFn%*UpvYEtr@B}DYDHMD_|*zujvYrC zzDxXIu4?u-{SnlhZ~DWN<Hs?E{Ss>bRQ~LW-|ii#%fD%L#Xp66mBz9cuZT#$?v~r_ zYs&I;(Zq#kI@ewL&a`U|`y%fJKYAy>JZcx0-p?`jee8nIziRr=u&Sx)EDpPNV&z$r zWnZtVrwC_dc}rh*yEL0&!~FxEQs=+2TlYolnC)#cxy7B8dE8@Zrhpae@+Z>AMV6G@ z>Xi~^ac=Lm6MMROPK42{<knfsljHamrSvzx`0AI$;BB(}jsQo4{xRo`HcAJW9xr^# z(!j7mu|ip%E!AOyYLaDVZ?mRA5Gya!ajpuJvck$(-@?Q~$K{3-wOrom{^Xvw=l##~ zv*i0Zmn;#IQ`a<!6LQSF^eISd<L;MVw=Rqmjps<4y0dkn7PF}8d2@Hs2OD%Q99}B1 z$>aV_$=BMPGM#ooo>hX0LH#=&0!xGoCne_la9MW7D@|R&bii_fi7&h9q7BcPtT!4g zjX3f4dST+86ra$!k4i4TTWKsGy_x@9+Pcc@r5AtI-p<TAcgKF}n|USmVgFxtR*TM$ z`?KcJx<jlcDk>8uUs9EDDtvn1e*X{F@*S}kf2aS{5C2kseb>$E!_3zwE;CpxFMf<Q zWcj_&*W9_BF)uEA)Oqo92u1AsbaZ*uiBsEMH=2IG`26_+<10CQ3$$4`d56tW3vEC5 z_-$(87QII=jFSZy>Th)W5mL~;-POP3>zo%q{Z?HF_*4C7CI8a8DX*+u3S3vcy%~DZ zFZt;F*_#)AX}FYCc~(Z?RnYpiGMy*x^ZRaEySIN@n9JYu>?}+Ew6fVb=UdJ-sf^;U z5idwxuX3*T#QPsX>+S?`{o!IRy7};c<NQ+-%0-v{>t9w;a^6)^BQ@`p=D(x&>+gMG zt$XI&nW%m)>f9EW0;!D(e;AF{GR%7)_BZ}<N}y`)*2T-Y--)`lOgwkgok@177gt>> zv(|%`)#`q0*q$!bb2vL||Klw$*uF$<uS>~VKCNt_f%LugQW0D;T>PJZ+j(CoWzCs* zSBZs>YTIWP9XV@%a_vDizQ|gSSh1stzqibfwvfqoG70dB3ZLjN`pqJCZ^|7Dv3Q5w zRTIvvd0_G4Lsrk{JzB@=^DG?rbmv#BUE{e@kt1MwlCnf|NoQ@o)t>IzYi0gO=LcVP ztKWa6wIJ-WkkMVQuB{)VPKNB|IxV8`=as>kgN%ZHv;0fesMu!jS6KYu;lmXf(TUm? zoZsA8CM_zn?YH^-{L+bOA^z(&*w(8}*^>~#bG;yKWopl?&Ce2I>X%>n*B0>P`SkAx zH|*-vV0isBibH%!RH=wQ%eK>DS9kvQI3K%l)rpzsgLZos3rO~`r!lP#pUN%Yx$UL* zLD@a~8jd~pNq2F#PIvLNi;H^rAbr~RsW;qRZ#!D6T)cAV$Cn)jae}Mwml{1eZ*<h6 z?Zx&*X{pD{u4R>a|8=bAaqisNGsTvV{qUU?n^WuEMAmN)uuqB6cwYbB-7UJ=_e1Q7 zS-CRO-jB>5fB*3{jJbGT>qE=)Dz5K&71cGr-DT)}x#ip{-gF(uCo#s#lHL;EZtg5l z3Y`&GP$4l(UYh^$g5M0kMeoZVX6Y6EeBArEf99kK2hRj&SPPlOX({I>#$QsndZYZW zwc5R9bLXv4TOu}d_R$@C#Aj>wGOyH@m42}2%GOpBk>I1BRvSM%shZ=zEt5^`SsKsX z*M@83Hum<rSS>%<9J^aoH1qaH?>XuE&Cl7UbCoW>HP1~j?V;*(vmd{?8*_H+y#FXU z`ISwg&aTP{ZQoW*aw(mD_3GE{uc~7v`%Jy#7iD(#>DBqw?m4QnMI4%*@0@sI)|no* zl#9pYUu|{DQQpqIVr$&LfO}6Ssa8#sjlcM+#lmPs{luHo*+1qRZ@N>qr?B~KTB}V_ zg-5^XZt3l>zq3Bu{JG#uhzX1O;o?bG*DkAmw8Q&z+77OH@^4O6n`FH+vbK!Y5aH$h zUU&0uyzy&?ecc*iC#|i`-9J>CKRTbg^~a<_pSHuF&7x*Lx_;fpG%@Yx<p-6IuJ*57 zG+pD^UESuTl5SRP!bN9FbP5t9|E9hwJ>u+PyZ?9kC&w-AX~MJLZ#XMpw_p4Gli4R# zc=p_VF-1}|C+gO7fy9_+-3NbFXKOs(EGl_l@Tq*Tne5Shv#vXxKUi<6TChZ{D)znX zv_i>JU6J}%i@tSCJ05y>*|pL&2lt#jJXv_oovfP6Gag8$M9!9%3){QrxIwbO`q}o& zQ>BAc{{@~BaBSrLnQEolQ*zBn?EmU13CZ=TRmNo#b!`u2_q6^n{E`wOvEGc;Zp|}+ z9_91zS`>mTVsF)_&E4$boUq5Rsv}WoL1yBki$XsvpHI8dU$Fm4ac-x-`ISRu-n()& ze6(km)t|n!kDY0eyvaiTMSCan?tk1ay<24N>b<WYCH?T8a_w>bjktA74<|JoSU9C~ z+9$C!o({LSnQ5~h6XA1q?#<pj&p5t3GWuZh3d_F=&E3ss`&OQ|>wS~oE|p+(BlUJg zEknK8J>khlPqzGKTJl5YSKG{gTd!x&JQCxcwa)L|u5FnTPP}IhYPhJ}Ul|v%TR*eq zc*UvOq~1M;MI3}K_10@F%>1+1^rc$U|9AYMg%6(VzkSkrvGw%d!_0}LZj3XPcxyF< zX65Ir*d4Nef8kO2t!pX?E4MA5Vxq~rLDlu8{JJ%_Y^}<yTkk~Z-0!TPQp!*yAFUR= zc6P%~UgKP0kHZTeP40bKGPBZuKmU5sFx@At8x^bHOgiq6n&72&ZEN@IbsX0=ZQt%# z;l6XWm8y%7ZN&!_vroG+9}2WuX}Y+q;P1Y@NVmJdbV}q#!A9{5`)|M5l&p98;=15l zca<$YSA=es@%tlquU}b4nf-myQ|s?<s;{W5Tl#U&?%XKe_bXP1Ztp&M`jgo1iRCK0 zf;N4gbH!N0qTm|m%->UA&d$|ddfQr7JVI<MvtG0!hr%__xTK^P%s*va{~vCt^S`8d z@$!NnJ3ZS^9^ml!m)!X6i_)wJQHCiFd^0{vtrqFtf0ftgWdxf)yK9C!zi!vt$4tHQ z>q`72Vt#hzn|oOqzu2~Q)zNj0P01pPMiyKpcP5rT*%Y>0@EZ@~$GFU`@2b{>-aC5o zU(n`jCvE!|Eo(bFB}H_rV$JjX6H1p3h~%u1ejd8d&vt)Q;F`OP&N45Z7PJ(u(7N~0 z!dftR)#fYzoaWfOt1Z~^SM>e*<5}O6y084ROtOtDuU=3ja`9-4znwyiN}lVaW8P8$ z0$aXz^R`Vblo2RRmY2+^{-wMoQf*?f$m-rifh3_&H<ql)i;UAvVkKvZvrXyvSYqqf zZ?q-7!}iL<#d&%veqjtdSL-xzO`0t~>+*HGDTWVqo$aQW+%gq-;ud;)7E_$K-KJHt znp_Qv?_OGSp1hsfWcTgnME7qZ|6DA#u9Eg;zZ|@h=kYC-ecwdg1edPAnI4<zc*~h7 z>YgJ1vFR;I2Skp3UsuU=v32T#5K(!podz>+zBv;pDyzITd~xPS)9fFitOuttyPuvl zGq7dm{Ea^j-tDofN_(8vwKit<qd)8${<dp>pWwc)@9H$s#)-Qv3%GLUIAorSOPXKR z=sYb$Vfw05i{?u4&73l2@B7L(6aMI(_Tpwb|MZCjU)80(;VYk9;pv%UTJpu*X}@mH zN1e*;bHwXC&R$47w(-MUI}fMA#Le^Wr)Eyvxty=?(ewMEIX!z<W}Ds;-V^%RXs?*z z7PIoXy{#`*bvyQ6JY#g@yTX~cBrBm;vy)%;hLn5^?4HK6C;#M(yy*?IHXU|mZTH%& z7X55tUzuE~KX=yW-l*2;6>Wy)yS5iuO!>mf#(wc#V;k403pTrLU#@2tc79*C_wTpG z`8)J}hTm)RUcZpV`5T+Z`Z=Op?>4;MZTPQQT<UxN<@{v^NA|B+qi-m`;A@q-{iMxC z2}Xa8&9qflxO^&}$6{{H&+W$-zc~=||Fe&TWtFg%_T>4~o_~oA);d>zN7w3~!rWa8 zn2!FO)#F*@aA)$2v$7$4`%73|I(OT3?Vow#Xy-ysgLP{-YPm}mX{L9k{V_OT{M<db zW8#wYCnhJ&h?dKXT(-wlc9RzS6W*I!{|Y)UP}JM4=pP~(8e6nG<j9XZI=cUDEyP~_ z_}k_FW&14lWZikUYm;6UJDoo=XNAUIP3_gnCIUMY+gLA^iPZ{w-{4HY=xBE;RiScA ziS4RCk|CF0dHOJG2}yD<n%KQn&P&2>mi+Y`$E_E?Grv8*;NDZ2sQz5{HfPzFMmPGS z|EHwhTe9{*ir)htDfWV|%Sv3|O`U#h+WB=}a~9QPMCjEzEuK?x*6G)l=iTvZbPXQ( zW}WvhO={U_zP-<#&F$T+$x3%hvkRCy|MK<y-O&(xKE=B!OPD#}!oDBv|I`ikdVD|f z^Sph-7bkto`pDfqUtaAAXZV`$yW?Z0!?#yY-$i`ivAy{1yYKe})I^@OaZ1k*7GE6Y z_N-YdKX`@1%}Ec7B?1?2Szzq`VXsJI?uo;q|Ct-_m2jUoW&W|gvb$;;ugi>bi$4<m zKekwVCB2dnEpiT?m1Snq{*ZOerN-|E)-%lt-@0(m#|?|W{z!g2lkKXq`f0(ewcB_9 z`ng#ql_&G+NsDR~Cu{L}y=K=<UTAAAPJD3fo7uY0tD0lV)g!F9<4zUL7d2I{d2J^? zyJnp!zvEB&NtgSCj_l%{yltXs`JugKv3E9?s4Qf;z2n%iZ3i3f36-w8(w@x_^Z!xc zN~1He2Y3%VH<kKI#jmi<_MS8EU6A_|A$v8oSFh^-Efp>PEb;o6`}S!i3)lSg)v4VY zywd;LZPNwL->Y)H1I{oRxac$4t8D+*`L~br&s*=$n`Q+RhxT5)aZ_SZxti#~1?%4Z zIFXQ~^HR?K^}JR5U-o7Ci}!@TzOA1*BS$;>k)gUxNjux7HM)zucl>&GYj)2pU+LUp z-c>EtKR0vldbV}HTdhn=$n~pD?e;ffo)+ttJl?PMJ?raBzu8Pze#Gg_Kcu%@=9=un z3H>klnx*ck?-MQOwmsO&CEy*fZMR6xO9^IKssDdIm@n8Iw=hI!OZ2RlT)}fapO$Bf zr|&Jf#JVB$j@r}n^4(D>x^uFu=c_J%EUIw(j{df|Y_km>izM#<Pk4Cpo^#u|vgJok zYVEzd(Es4v+cHVq(|NaFomj!&ZZ4@M#4T<6a#i2#+r5SHd(Ia8srbFSr>@0yW!|<3 zbKc)|cFZfvP37P6hDz?=cHJdt6Z>U3>F50RMme8S*0*hnvg!z0b}zblm7V1E+={1e zl0K2ni4mox|LS~$%!?m?uL{e3AQ{q;q%`@!j`V2m+g-_t(O2JIn6>TN9nnWRdoRuI z;Yke=>e!vkz1TBx<8#s9|CUs)nmx-WrQ??UR;67sy?NKCxqgsb$57hna!<*zfZgNj zQ8($o$G%_f{GQ?SEGcQ_t8+YeBKK{zyd)GEbxwNKg?IUXyNXxZ8O*pTD6W2#`|SZ8 z?VntHPgfcUWtV4ew+a5K7rS8NqNGK-GZW0dJeoJ*>>|yKxpOkRP1*MUDOh6pGScqd z+qa(n)hfDQ9!n`3e)Nf+cjLm;l-f;iYh||WZO>wjn)jQDtv6h6`D*tr1%JaBb<xtj z%RRf=E!ZVRcVx+|pShzjz0!Mb+m5YYyQ=&b*DokEJH7hrDz?>S+e7oU)xUZq=5vS@ zeqQ4Gq2*d^=kiVB6B|D_^)6;vb~2{))lx}`l^c_$UvRy$ygFPuhHtrVzuw2m7t}wl z;GP<5#eT4T;e%-tZ~Q)8x`0jFsrq^9v+m8-euC{$iiei1n7HZk$}9!_o1I<X_)UZU zzPP%-gsZS(`@3Ta@uGM7@>H^yG$@7q+d6-u)=rOyfwy|TG@h9KUGLjZx!QZ8_9xyJ zFPG^xHk_|(m6o2%Q{&0M{*s!}Cd*@Sot6u~v6s&-nCkMc&fxj8dFh3Ec@{fL-LuVR z`R<m{J?nT-jB}I8y#J57<Cnc($C4`cCVun8!+C!@4RZt*iPYc868agpvUUC=vpTEC zCK@baKTj+ArwQK@3YW}aD~_J4t1JFpAb!@}-9dIU%JT%mD+99s7M^Husy|`%ymiB= zxJcgA8C<S%Gnq1O+Fh1jEBw`<w;-)`=c)xSb|1}~deGzHNB>zIC;G($x2N`{?e%w* zW8LT*?VXsd;gg$d5xjL#*iylR%V)ebFYCD~ab&?Yx19b>^KU)aut`NEL&(Wa(bUZ} z=+!eZ#>J0!_{Ps*pUbJK>ejj9RV!E5(ct?zGr6qZ7Tuh@>C2l<e9y!0O`cd9y=24D z*s=@mD|ffOJYF_M?T$#bcm7^O4(V1ab{nsaU7YSmXYYQjb31)vf#yZE2_eOY&u8y= zAIhS?y*%vNqDGrS$<^x~HK)q0-+eqSEJ@~d*tdZ2hxgvNJy42X7VVOk@!IwJ>;H+H zRtegzFlSE^VtRdK>y0x)$CM6gHm$vrmc;39rsZBy(sOp>Kl%TO`7awdmpORHZqn%9 z7WvLv?!|{mvqCSlB{c;#T4){3b)V{#<Lb2AWt~yB%AZ?rl_Va#{66R9x36{Ly9_($ zh$~xft!Q>M_pd!{R9GS3={E6CwA9?YS#z~+|9J7OT;bE=yGQ=j?4P+!>gk{9e9GN_ z)_*Q@E4R5*6@JA2)80qVzpb7v|9j107STVdf6hmJR$<Rk-=TK4rzotcr8-Z0-kw)) zDrYpGJ6isAQsCb6XK(Z@<NKSEz4m@!V(g8JzIExRuWH$(@jMh=ayO7?slxp#o#)9S z#oPgfuVeFNJ{omy`2D|8WcJ~XAmNjL8gjV5Ccpi9_-X0+vnpL*+)CH*S$ZuneJ8(c zNx`{oaq4fgg}nAm?^_uspJ7mNqk~E5Vo}wei#J6xe$?%ce0HE{iSNV1sT`Lo*0MY> zQ_xQ-EB>hN&7E5w7wNNj?klYr-Hq&=nTM19FSvbYZO_NEx59au?sk~o+srfP>OzfM z0iinW)7H(d%%8&icfo}q|5V96{!xAzds(#aK3=^qZOO8UahqgSj#_+96p{JxeU)hA zW0w0zInKW7sa@kA8=A2}w0x(5{o(X!oln|Nc35&7>{uOM@A#)?z4y)4hsrlz{he;r zyY`y;wR5sh1I_l^e3smo6CAuU=Pa*;wdr&%fivH(ghxJ-@jv^6vzCu@w~(h~jI%30 zxBTBHoiig#Ds7!Vn7)WyywvT?qD8?%(yFI7b^KdfmbSV3<*j1r4>8Ms2&VoIzh$xS zXwo~eY}v!}j!aTL`$k>wO!q$DBm1Vwi67VI+n{cxmJ$|s)AT{X=2Mq$=;jr8m`2oQ zMhX6WW8%;AJoNwl$`A)-Zu9&`Zq@B^Tdk*f)}LF))xrNpIBHF<NoT`7C5}cWOK+d+ zCtfvlPn;<CVs&<Ju8`Y<xMTHyUg_=iuAA6AW%dy#*IR$zf9{@?;d|#rQ{9wZ4MpmI z+DeKmiazYkl|9+_<KEZL);8TKZ+EmOzp9eD?y%YB-d3Y`N0>MDU+?cfb4qmMC0|9R z^GO^PC*~~tF`=V-+a0Ug3wdw0h0fXdIn%fM+uXd4E8SaM`B&WdfA@`FW$}foe%BMP zmXyiaWy}k8dGGUm<Nk*)&hBnJ=YBFR<=Y;=6IH!DJnifYy#FrYt9|*2-`v4laW3n- zNAb%!KlF?6SLGIqZCU>E)a^1(<K{On?)BszuD1!;f6&C>M`nE0eYuv16<MDqGJfPN z_kPj-UvEZ=zp!Av*fK4FHOC9{cmH|n#lL3X)Hk!{7gU~JI_u=C#HEXtZTodiUin|y z*E3p-%da?pk4zO3oGP+kUUt!eB-0Yk`!*&r#y*+pTb$mw@*M1rT=K-Z^!lzhYzLjB zecxrNPAhGe+vZ)rIIO7S=!ZM3^Ewt^wz-(V)v<m4pa0A*t|jMUl%>tYOOm(VIj2-) zR=D^0xw9|R0%~@M&Eo#DyI0utWZAA6qGE4tPX>6r7T;W(YR4)4?m<LulXJ9s?0&Y2 zL?hvMkN)s~H(c+f(0bd>@TvZ!>F<AS{HGA{VbSEp1{+$R|J-A>nXj#JqkP?7wq=L+ ztX$u&@pPH0>HhscLMzu)-qo-7o37mabl-xIvn3M?`ISu*wBFBW@2|TxuhVm$)1@S@ z{q^%@mKt7m?Y?~bDcjXYeb>dZmUvH0%dS2UZX%*#WWsm$x$XD!Ni{ds9;}tSxL-wX z*`}8#KFwRYDfIL$=^y*qciuQW@pa?jc@O5!`!>x#wO8J7^WJlQbJfmO@Lb7Fn#9Qd z=9u!TpH7pkSMpkEulX~3vX|NA#hmP$>ke*GHcQ-k{K$zkedEBR_Od^wm6ROGzsvq- z^UsilSI(x)uKwL@^J?X9cf0B!7pt282lWb+TfT>R%H{C*rM=52b)6}h<jK6{2Zv9_ zqIJh_A2eH+{r|4TeU9c;f66k{!eZYg`A%=_eXe@!w1KF|Hfh$HFA1tsc5%IwYTB}Q z8{3V#Qd16d+e^<hW;v{HW4QBuW&gaNZ%cpQUF@*`eUbb+wfWX9GTa92y7tuz-5zP2 zu~_-|^+CnQv+lj0mQ?(If7T4=zgub+KjLHia_-P^;rYuWOpaP8ZMMF5mUG4Z=5MvT z_-?H|RQWq6_rJ~Mqsw1g9XV_peWRG0<3^6oa~sYV4-E5}mprsu(Hj23ZvUp{{y2#( z2LDZGg|532yxn?kfWq^cE&q1bI<72UKU;_Uosgx8-qD7j6X)xnE>-+@Ylg+@FX3q> z+NYj>k<a$lesgt|m;Hoa!Z)sNt-AC2S#+ykceIqQr;Ml7;y%THTVE<Y{L?q->1zF& zJ2pG3tpfiZpCrA)?Sj3uT6f+2A7U4yKc@Zf=E_@KcuMGGgI)2j3BDY~DsKf?WEgMM z@cqlyS**u;hW}plu0uy%4gMeaB$sb(GQ&@N*Ure2gcFa_k5?!Qo|9cxyL(Q3<JAk- z9!?f5*I(1SwA*K0(-dYI@xwKNt{0LT_IwV1_h{9WkF55V=d<>9zbtTVKm7TzRf}Za zn?lj``#G~T3^Ypp;{V-GyE^%CD!=)8#_u0Cyz@J(>}9%I%)$MfgtT>SAA?0ic<2Kz zbD`H?yRY$!F0nmf!@ucCBIgf1rI#Dd|A>)qc<@==JlmW5(!9GncKY@n{x{$5{66`k zPmWzYDzG8O?X0QI-|6=a%Ma!EH|%2P&SQ(){)emZCg-|4>cV^EZN4-t3oDJuUH14M zcZ(D^|CcXnXI#@Bty2BYCT_~Gr1O2Ih1R^ySx0RwJ*01534VO8J!QMTUR8VN7V8wd za|^dG-xuG1s#JMelhWqYf(QFImVWh{B^vq2cNO=V=gS>hr5}7>bEnF<^i|^gy?<u5 zOS<wZUtd$!<GN+vo!;C}cTSZ1-OydURUzV~49B`CQ}d{q^DplEbSK4amnR#4m(QzT zpH|B}`08pE9KYznzrGf}2*XYNdo1o2ZRvUTXy?@yH?<{+9xOFYr=nlvf4csDhoJD2 z_7#3le!p(0e<}F#Wz9Q<s=Vb^tIIp1KDusV-r>-0>YejmJ=BK7(C($sH!ITx^UJ<= zb2BRB8%8{}5d9|9&^ueS%$t?}oTb)`%o!p67Valw&8FS2c(o|FO!8x)OxCk~&o(se z_0xK>Tlud|o#*$9t7B(|NiCkb;YV1zVEqj(3;(>Yt=89BxZ<shSs6v;nd&#cw(xjS zoBVi&(lTYnJ*V2I+t<%nu%N%x=Jn-06V_g`bKg-_V<ow6S()0*mdBO-2aX1-zQ5tB z$iP=qQmLk$XW%#SO89p(juq+4S;ekd+&}8I^Xr`de&_OUc?k3_wN(mxTkYcUW9O5` z>i_#>*X_BKm2!T$adAU@w7HnY%r_73L>_&4Z%%6Kx&EdF=g&xgGmlr^^Womjb&Kvd zHa0(gnt$-u{FVv2920nE-ZKol{BAjG%tyCnhi>Y+wrDB!e4lo8>n)L=xm|gN>IV!A z?=!@G{(HG~1Lw4FC%9g3TRih@A#2bNxy;;}DEG<Qogc2$iWJ^Hy>!K%3$;3Yd$;Y1 zdGN65pR~mc+lPwJ^ICQ&98?$g$f|tn#{TD%R7GUw)?QA5=O0e<Iz-)hyL!vJh2@>x zuXEflx^k_}KIuO{Y-1YlZ<qed2R==%tq5RU;-`OT!SmD2tqa_uK0MJ<=PXeuSZ4mx zVt3z)+fAxVw3ojy4GI5Lx2f^|mv6IEx&OcW6cj8K7GL!FS=98(FHv9X)YOzUPgIM4 z);{CL`cGc)HCxy62{C%scdsq0IDNYA7t`g?OLNi#8+#lkeLA<$yzsI3t6(c@#_zUE z7EGDbqacxHA=Q#L`_xbE%W7s5GVWe`e&W;o7d1)C(nD7X%rW|4a74@~^^JY^y0ae^ zM;>kX_j|hdX&=A)dn(gAwUkfUv|c)<<@o!3-EzLmh5LV{Yo<te#-2a)$=7p1+0pV2 z_qq93bSH}JWxsRYgFWEKrRm<E=FMBZDY1Co)O3Tjm1(-h_wAOi?Ea>??#-!PR)s}% zHz&IO`84;@)avLU$E}f}879>SuDzRc);RWNdIF0$*V@kK{#*O}rQZm)t^e6u@#vvm zdEB}9#wOo-m$K?-d-H>I=XaPabzbYVbdBAdlj(t4CoAq>^l<s8czTn<^ZUiKuSuSc z*lX9lk@HcONOtFo?;SRG=FEO9&ry7~XX2z4H8WdhJFvFC56CSRpSHxh>te8U@%`_O z&3m5BxO0AP#LUkx+jhF{FOL<vx9bOIt%JN}{j<mSV;7uX6({kl>&>?lf6v%YT69tH zchpz*nbYU*Z~u9&+40#F`Az1P)oVmIKYUth^yKol>rC47chy+`dSF;qeO@<ZZKhw; z+Kzx@2jA|>?N}1IL$PMNm({wjynC|+YfRTZ^E&UY^KOe~zyTX!fsLo)jOy=6u3Ep# z+=;y>WBmi(d0+fLdAwY%vD4<c{P&mhFT3q^d$TsAvNGFHZ147@)m~x^(pQp-%lo-m zbZV~#+%%Z`>DyKRnK4fH`$9!{OmF2~)7Fnz6|ODnCatz`%AUW^il^Q^<lKJzfQ73Z zzwFUF+h^OIo7!PxS(xMN-M*;f-eRFGLG2>W&H>jKRn9gNxw+orL&clO2W%Bq7Z^4z zE%HC_J}af;<jcEOA<2)zY;Nw0<WxN}D?hkD$K#6eEW1r&^B1Vx?#*~)b8FtIwu(h| z(?ch)&+z)J+3s_cC$n+3RjlsfX`Y-`ho^oz#WP3m*%Z;|wqbH9UN=>@*oM#Yey_4{ zL(lCe+U>r+uFK7rY83?O-n*E!CM2Nvu9bf0fzxMS=XJd(3~68JqqKF_CZ?-djjEoX z<@2MrbDnsan^iemjCrQo&!1suMQ?6O`CYYBZmyJ}b6Jt9*V!nApYt>mTjVYt>#cTV z|GGeKw`a<VV(V?aOZ?Z1GcWpTaoM&n{Z6*fuFRWLZEIcjpEFx~!!Nx3%7rZk-&XLt zW$?FN>)&Ux>hP+9ANkL?KX#kc*69AZ^w;R7KGRRnzdznj=3>s&J^Nup$*&uX`!}4q zHF^K3_!rv0GTHy-c`pC;mwmapV9TR7d-6W5d~+gYjh*A#je^?Zsabsc4tR+uaeE6) zob+tr3XgC0fsNOGMX4WpVmG%+>{Cd?u6yb4`va_wOsV4E^WJ3Z^OFzR*Y2|WCt?&Z zmpS#9#KNOz%0<5Kp78y{Jiem|>I-^oCD+(D&A;dV)-vNSXUy_AHvWaRsR71MKN#BY zZOOPNxLWdY{jV1L=cOw?PTT5fbNNZ?uOH`xm!$VS+jsbvRi4mRw{Ttg|Au0xr58L+ z+h5|keimcQ>6O33nm<_uoLz8w_G5o7|HJ<!KKQj?F=>mrs`$KQh2@!@i!RC^x_<nz ze1J&b{I(bD<(kzp4z*VgYo_0Red1zD`^4&o=iMGx=XKBcc*pfnMY;Z@TgPKkBxk>S zy?RggpIfu$=9^yFZ=ZN=`TZ70*;`wr-40Jadfn3U<<qQ=Z!u!&mm;=EOnSbT(a9=_ z`@EK3PSm-R%)-qY_O5Q7S?|6@N*>KPlWKB2sh{(m(BXqS*vy(k-WcVubgR|w+IweN z|9jIl(s{GRl&492`g?Verlf%G^_V{QgHkFEFHfKBkdF)f@Nnw(zJnckpUc8mT~E&r z`E(#eIQW6^zO60Z%T8UDv=%>Fm11yxUGV3R(;UyPcj=d(UF8-WJ4rf4Z0oU|2D{oz z9EvlW_8EHpTp^Y1*8OB@W>)H#GqzPdsq2#M?n?7%K3K>U{qsgwv*s+3_t(Ov*~uJA zli4^cF~TGvth;H>WOmv4bw8t?N>@!;P{6mwqwAolS?rRN60I@qd9A)W)uvf%dIFDY zd{{GiF>B{!xk~%OlTZ0h9_#<k-m7ES@bhkp{0|{Jvw1~j^DfU#EB|7;;nn{NnGluk zvkyQ0U|Pr_!z9Ed#U{ol$0*1t$;!*jEzK^@Ki|PpQP7a{`o7pAE-z87l`AqcLNBgd zmY$H3n40|j!IMYN9)_MiuCJh>qNAjxrl+W>x>m18{eueUq?CzDzHK?R5B4}$<@vn- zy?ISnacxp<^53Mt$;?U3^K&`w$XBRJ_zB;&sp<H)aP8TnnJ>;R=UVu>?BVA06Eo!} zuJGFYQ`PPCQ@0JF9m}g5%O1<$zWlWL=yJFCxH+t^J)b}HX8SB~OkQZZmG1OiNq&n@ lR)631Gymqxljqpln%4OTmOWIgd_3{{hs|5-#2#;F1OUE1@FV~L literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff deleted file mode 100644 index acab069f90b6fe6301a004e6f8beaf6a0db48bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13208 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%0Dh4&O| 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 V0&dAL@G+<xf!hC!|Nk@a0|1$|K3f0) diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Fraktur-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..735f6948d63c8cc7f8233735bb9c8d843c83d804 GIT binary patch literal 11316 zcmXT-cQayOWME)m&@o})1JOQb7#OtgLBv3ORLqvZP{U!vIfqA(gX_7#r7}h{CKcvp z2JS{D1{MX@P675NEuKbo=|2vk?!`AO4xDK#<2w3ZUhKvs#f8s5J;+Lzj6N;NbLZ)m zDLpHfa2|PmVb-mdF8lVNQ!7^*%yHiNlr3o4?8$HM#h2?pVUw?o(_{X9J~(&#n`6x% zPYF&s!*{{V`qhd_Q?gi>@c2yN@?;b~y5i*)@w~OKOJeI%a^mZ9|B80=|8<}HZJ&yB z$|HeYj>|p#s!l{_&f?#`^mXpTpGmy6_3zb;1jR0ROw%~5XC$0_Lvz8jsjNb)w*9WZ zpB8_0UHIFoa^a5NL`7vkH<$eIvwY_(pKo}c68qq-{2wP_;SVz!+}+}jtlAx3cfI~f zrXItp4_D(Aem8L01wCR~W_iheinKg$^s~Nu%hb2$EQs4#$<e;HK`!9_zNhPR&mGX- ze5U1%XWV7mBPrh>`1AXEUS~Z2{N3-58}CkYP&#k&IqJjt;`jeH_}%z6VYAZPmwRQ- zy)2B}^DjTs>v{hY?blHORZo{*V!0r&$-3I={h2lAuAOkTuJ%1zd8;(~t?Y%9p+~oF z5Q*Xbe#*6M|D=)-Dc=ZPhENw?4+fsavJ<!x7#8xf&3d|3hkMa68S!q77f<e&&Rp@u zDmc_qQ}I{>qwtH3f0ywxHl&rCIWa6K|H{J<aeGJo3G>qqjlV8+Gwz@8;jw?*tW}#; zxV1RyvJ4!>y{?{hU}@l0H(+S^v-UirfQFt3n~8Rzhbh~-yNi@xHnVn$Xos$I+gr)! zlYV{c&9H;1&FWECJp29DKmHu_|4shy+5dK>|62WT(enLMO@$g(WQMvNP+SoIJ4g21 z)v)cm3d~-$?BDRI`q{}T4f<w+iw;}gsBRC)-xu{}opOCqy~h7f9M4|vomawdY8M{G zY~L{HG^@u;9}cElPyIRAuB~w{2q-%#?#2}C<WO|3Vq1Vw-37gaKQ{Uq@b)Y<Y2L9$ ze9cj>^b48Gz68`I>YK&*2deh_3VJ+Par8j-@93_G8+$ySd~|T}ex=g2`0<`DqeIJ_ zzJ9u{B)-}wi}Q-@>U5duugtxFYW-hVQGav6bd7==bLxMnJXswwOOgMg-qlv_u#UyO z?f(M)Z4aBU#4kOUQEhgG{9E<8Cl1sdkWtG%;Lg40R`6OWtq05YS5CUObER5Yhqdb6 z?v#}cPDl7u&MPNvnkc}fp~&HH+;ps~HH~eT<kGDTUL03nYAr0-Yi4HBCXuV9d}8yn zu=OHSCT_DS4Z8QQcG3sea)ycL*Q{Q#MQfTX_rp)ego2;AnBEHI;9XI$mf^G6rM;rY zJ_qU+isbxZ|1z`1OluR<p*LG2cMHGV7cgOuj*-#BQ?K`WicGDX(iwU6V{^}?3M1c8 zG1l^K#XEtMzOTwJoz8vb&myhZ*E>q0h3?d*RW9S*sMfjIo_oa(M>E6I#hGWD@}pj5 zAB_qt<zSz;^;$*Aa;F^{Y>g!q2EE^2&l21b`(fg4N9TE3rPr@4wVo*VDX!Js{pVV) zt8F{h^&jrP*1dkynZsE-)-6`3PUE+idF(Ykpx~H*T;0pb4?imfn0|2LDV{0)e$D}1 z23^C(-{<xS{}sslwBM@wlx(J4-dlsI0!dPr^(`9@-*t6e8-6VPYQ?7pIgTAXN(FHf zF8s9Y7O2Siytp;LP3T5ig5(N`qU|renD-=T7#zFMaA+}GsJx%w2mNc$Ra|)bGjv^) z3>JzQPf6@s6|q1nEI@Ykibm5bN360QdOc^6X>nNb^uyxRE{A+?x7cfQ`Z9YC-=99$ zl<%-Tf3!5?vO~9YR>aABh9;?&EZ~g|c+u!2FT%FKfTdMX<H>>ztX#<#&d7)y*Nyri zbID27H{#@G715h>cJ5?~IC5Izt-7A$mT1c*nSSOL`@{8*iLhquemdb>S^nAGQ4xK6 zlme6FyVpMJo4iW=%$ugT2k&n<2dqu!k7!~Fe0tF2k@gkW)#iI1maA_1k$98+=$33( zA&t++HI6VY+Gug)A-ASLwsWid2c4tbBC4EUrupRA|F2HypFPPoeCc-iv@Yj`85O2S z3>zd)3W@)_<bM5o+OD>PTkrq8)A8ufhxc55X+cZAsI5p#QF*v+gGgN5P49)exkvBb z2@(y?d+r%@Z*uj7J&zX{WzN*D)SbU<F2}B(g$8HCwu<?S8iv0+<rSrQxkvr8->!vS zQ||oCQB_&E?RCcC9gFUypHrXqNK@N7%qb;yL-4u9PfJ)GoX>3wcGCEorn%FrXis8> zjkg1rq_x8{wS_s>;un0g7Divy|8UbyWOLZ%zF3x{%3>kcuig6JnE5f)^_;u&F`ZA> z_Z+zFw%+jj+~8{;!u)qnPv}|^68X1f+oDxTn$u2*3$3fvt1tb#YSo(mQI1!O%6GH$ zCC9zzvgq8iS8&<egt{M1ue=PM4BM}99?>y1{`)z2Mw*Pnqbm;%?iBgR*72V$u8eJ2 z)YXZ9dv827+Sntq`S$TW3r(`qG9A0;l|HKImHHJEyghQ(_9M%L+z)UYd({Od%#?P% zyX^19(8`(Bto*Bv7CNlFe&8a1)n@f0oWU;EmFt7l?kTN%ToHV-x}9l<=LflB!Al|x zvh9*hA9!Xjahk@I@c4=K4iyK<gS>*D+8BQ<+~6P~%xB2rF42_ClgMeXrjV;_PNVGe zg!EPgo8ziG3Rv}Gn!C+kB#34m6nm8*D%GHC!V;aqvh9LI&O*)`V!jVgu9W||Mw@SA z%X5XBhra&enzAwHxI#ymV9PZ@g;QyK3s)sdFWbN!TzsF2OEyWOy-#pKFv|;@c7vq_ zoW?uaB<~#Jd3TY^R>`53<qK!8Ok5)0dxLiW8HdfI7RIx@katYe{r@5V&po@k6|Y+} zK5k82yQL$t`Ch~OkXP^DG#F$!+?Cl{ByE!W=8^giafdHzEA$hYqB*%zKeky$O*U;P zEnK4%t9ody^U|V}SUCsrywGUBxcG3Pc=G_oUq5AAxA1&kaoD8!;>^7Dk=K20&Wn@G z%JnV3<#%i57Z1(mG)4BQ=FNN4*Pnepb>^oNcP>1tJOAs^x4ccCY7a<lw)|RF^TVWY zsozR9+q3sdQrGM?znl2v@!QDkdxHDo-*5fAZpH53Nj9_I)LVY}v+><W_hrAtzdWi5 z&#&3*ZFuCmp5FdXX9MO&@rH5ydCH*YT&Z>G%c0|J1uHzKEY!6W`cZ!A+>X8ZS($S` z_z1o?e*0)fja%;Zn~r)ZM-*dYkM3MD_20a#THjJL-3gXVY{DIWwL7QwigHQ3cCJ~& zu5O!eFZCceMdHkXhidMRw1fZJojxA%|5V7HV}6N~XYb(II8pMjI~#x4t^O(U)6Z3| zdKbX`_ICKU9o+YNFR#0^^WlN=+50|E4UYfo_qu$4Raof^3$Durr$S@}_y37|{rzmf z-4_i7%m1jie+u_@c>mtlpuor6kNr5uiK*gw91B0GH8WJq%j$f5qe|>tMvB14(;sA8 zXIt!M*<g8~F(aglFYSL!pGH~4V!y4|c7-Ubc+9NZ9X36?Zh=B<dsW!0+naq=Zt!$< z&bIi_)FvUw_`^?P>GciLOmC}u-(Qtvd;6>N@#?w1mx%mqV5oHNNjNsI=<1(8e=0ay z8C?IfFPgD$!zbBwzq!oxtS<z6=N8?KHMKY19d2*mxmtO`{N8ypXFLqI`A|In`p!K0 zcgh};537Gv9l0^(^7W*QU-h$l|KEPveoCwF?X0%s&eyM{f4}`6wV!|C46`zm@6$HT z+Y@PC)LD9j*HY&9oaETsuf2a==5=`T=%~g2td7E+3Z)AJcBjs*ifa>PYfHAZiSwKO zx%|+kRXm*wd&Q3nJ`CMfAd;KPly3C?r1o@se(8U&AE~vgmHnDhBAb4+$Y_>ao%{jW z%cWH%i(bSiDK@6XDaIYUe(CAv6El;PO_>T}jJNz+`C!V6Ewf{K@5-$b?hKBrSGwG4 z;$MBma;Z*SpT3sIY3+lItD>umLmDj)37sfAH8a=eShjbe%G`6urNjRp-E!}$nT6Ay zyr9s#+H>Mo&XD={y3{55;7gw##W2~mS?o>jQV%CEq<*ZC3tM`6jd5S)t+af`xZHh4 zjui{i#M`<4$@wbxZkYc5$PArF>!jw+vRL#~ZgIQG_MZ{jP74+WzuT!3)A@__+}T{^ z`j#y_c0ANuTyVxn@2tIx-g@O%f7hPo-fd>L&-rW3I-OZo=4WR1&;2bU%N4hxrmA*M z)O-{7LP@2DK96LlTdFYuYQC?o*1W#>(E7>`-Opk(S6ne$6y&3-_oIIk!`stWoVpnJ zj`+T+dFVg&-rilV(>IImwzFP!e2?4Y(}(20oP0CK-R|{`+Vq`liN9Tq78g3XuZ~%? zY0K3Em#0}97)%g8xSv&I<MEQ(nXfi3T4d{+%*g+Y*Nmg0xc72qR$ak`64{J{Y(+jv zMz;H+j^?fYoS`#+#`f#ymiv8~!g1lRcVtJo=LXhW!XNLsTg}~e!Qxtn>|DR^*EzQ| z6!i5!llK+9He=d9XREJ8`!1LIJe|6RuYdD_sQm^{7vJ@IP|4EM`r}Qi?)4;YW-dt) z<7)}KYi5{lE;2GPO32h!b*h?vA<okO^E{jL7rzKyzMAr+{9T{#>Zfd7C$4|r_xR(v zlZz)uop|=|O<Bo9r-O3Wj<0t95RkmbT>gA?klEQ4cPGbA>NsjDz5H(ItJKMNm3R6! zy*|w}G4`z=M}6ny_0bt3o@XrMZCiJ3Z4Fs9=V8~Ts>;IttnC+tZ;R$OU0i0%)-_FQ zU5D+;{eDGh@0iPb4}`ziGjEQ6P~eN3Pe1NWWEM^gwA`8%G`)TKO23^7KLXAlY|0Xm zQL7Uc>U<%4L-ef2wtFY9ny#9=>Q&DTll@nw9qh|Fq;6>#A2Bcg*{iIeduOy|PNj7# zuFGb*miKweqTU`Kfo<zc+z)=Uc&N0*I@^_>abowbsb85Q6jxjfQ@$fOK~S%LdDZ8y zMT$o@WY4>?;OpBU#!5cTAo~cPh_rXl8dKKHs4-Ep7kkSjrWCKQu*a{@EFouE+2`q> zW(Ygnd|a4#KK)nO?2}7VuKr8WvF2Yi&F;FO3deS%+?_G8d`e&EW!k5BJad0*b5{1z zfekrkA_X_4j?bSF;>NS^#BcFjJ0^RT`}QU$i|R}QQ&&v&f2Qvd^fY2ZYt6C4O1)ba ztl<_?v3{&>-BoYr_vh=+-5$?XiZhes&R)B={@TK8XTIO5zP&ENzR>%JPIZm*+UvS+ z3(VF?EBtCH^sd?SP~+i6wJmb%1An~L*U!(cKl8Oa(p18E{_$gb_sO%YjJ>_fK~#Uk zf_I!BCH89Cu<hRPHdg%i?qkbWPWL_2d)nlR(SrYM>_2AP=6(9O$-CfLl*QZoFFUt> zp2L~8JAF}WX}I|=hLcGtr!SsyUTV^qTeaJNu6xSm^1p9+^a~vy1lnZ(7eA!B<)ZWx zlTcZ|^v6BoyaxGfr_v_sa87uB@;2xFfWRNe%%8t(d3fSx{vJiu{}Eq}3VtjsTg%@5 z`O(=N`71SsZ>KaSily0fWZQkRd-iR^>Lg7mx7>Tz-+w!=bueSI%F~egrk=*H7X#;r z^{W2a@Y7TFfur4jfhBVs^E`^fVxQC*tm8GfXPY0N_5OENW>LPuX_s5CChs{Vb$zWR z*TcuBS2Zk<x%_tGme$irGJ2IEpMO4Edg1DIcE>_inHsU2OJ4WOW}a}JV6*W{qG{Sv z-&bPw>(6Viijm{)-?B<c^U|5u;v0{KDcg!ZI%ex%_J7B(JyV1q-Bn+}ba<P0ch;qc z+Z=+Qh1y?ZpTFtro>yWTZFeVrzLsm<BeqTT$K*RpEACE`Vce#BzFkGAM}{Y)NYkd; zkfT=K_ToBQ`R}J$6ZY=7@^7YL`kMXHe?NcPc0>HRbq9Bbu;bPCk45up4ZrJfY)Mso zF>C&}h{ixW4f*>!y3d^c^-^()^76T17v?o)ZJ*f1_~fC}!H<V86l-c29hXble8aUi zcKxC93noqr%p0fe-dd5u>+q3Achqd~4@6@jq&FOII8dOrKRXhxLY1?_@Q-`v!ut z>MIt^xUu|A<c4d_4|$~crW@bvKG>#vTvWdKY_y|%*9trD=kHYQYA^m{NN)c7<L}EI z-kVIWcirEh>caP{BFo<Y(qxT?k#0_oQ==Dt$q{MaVsc!wHQn06f7kDcwT}++=j+9t zpDxax+Aj5brM{X>)18SI9Piz_|Jg`ly3q-PugNz>r?RXnUG#2C^O^%rbG8J@Oknnk ztB`usx#`j*LA~i=r>2SsrzaeH82V#}?TLzopXMIy=D4ck8v8Evi21u^wE@gm=FOD( zWu+wTxqMQwLb<l!h6Vo~?OV6+#S|8{*Iy-CTpXn?+Z7}(%N424W1YILveG%!zDG%M z=Zx?FCkAa^`sDG=_6e&rTifpceI#48#b(=~Ba7!hel+_<W8-G4mw`Vdqt!TAFRd(& zeb#2Q_w3ip`+4>rX)ey5XLP-K`neWG3zL@T2c9h#FpFaQsrCO8&$HAyj~4%zEfL`S z(wEqhs&zZ~#P!<s{r%<2t?@~Ql_nk4A2bWQZ%S>7ef?9~*mi0p*ONEfz8%?a%dHxd zac1}8*9WF8OA0%?>#LGNjepR^u9vc>-bL|<*`-83UjKFZ&NkcAfq8Swl?*~=mt_k7 zT=X|uDRy$$D&PGpWH)vk{qAJa+i7_6Vs_u7+{;H)lj`;3dMi>m?sL65yXEEO`23SQ zj-K_-eQ1!dkkK#6baMNX_B6Ap(ccy>-`M?GWQ(+WW}d=*R(6w@dw-tdV!XObo@W!w zmgpU4wp3h@x?XW+gK?<COv_0-W=?r{<KPQ@CiN8GZ}RqrwM>=_sxPICCNo}iknnlp z{iaZtM>F>Dq^u{7h4x+*^L8E9oYGm4*JJp4C(m0}?JmvZ8W)+Ep1NL{`%lt$ihbhg zGb<}S^XgY$3YK}1J-0JD=V41`eW&)#htuN2Z@hbXh;3Q&`zF_`2W1YgnI)h4JzwU( z$L>wVtlGOO|9;ZFwz6gC%~<p6PxJ2;m2TJjtueXS_MB<*D*egv2@g0KmHa(4l59Dj z$t76{JWM@ev9t7SP}b&0cMGGwwG?<;ZfV;wLDnqlzzyx2=TG@bB`Thg33HL#kkM!K zH)LA;jZgbBL{;|&CKohT&kxs8s;Rjv)m9Q~ExR-7-tr8sb-&a8PJMo>qxyW`=L4o! zl$Hlt&zXOJ*;#3(YP*o=N0o2BzkOI{wAI=>M`pU`mc$P~<;}L|GS&7Rx^`T?;=%0v z${7=ne!uGT@r9$nzs2+IcIaH#@;b(7id6qKojX5wgxlVaH9c=uu64t#E2wr8bM$60 zR@HA8=lE$Piu9B(cl^4(H=_E<-)nidi=(9zXV`t<zHYWGm3jZpyxX@X2nd)u-|}6{ zx&D=G>YJI*-yTk4W^w%`&iU`_!ZY{9KAYvmUwKlZB^T+kD`C^w<nGXI%31=8_`jcj z{Bi0>nYwF>C){7TUHsLogFoY=65W$cFI>r=(t5S~MBO{#1&hNE3e5Rgbp7joNBg{Y zR#zsPOFBwOmM8x7zvd8Kdm#R<Vf<6GH#LVA@TC~-Gs<4FrsLeV=KT0sXZD=sXSPev zl_^?h_%LUS+bpfs=6=h**lj&ESv1r<Y~J>WwrBkTrs^m7pY`VHt?Zk*RDQ8Y{yxt` z=j8v~ooik9uuT8Rv&YAiGCrJsmHlhV#W&vKJ$Vc7?%OPB{?=^i+r@K_o-B2itoOd8 ze^>n1RkH`HH>)+vy%W82=$Y&@X{F_t5;ohsPf@!&<JvTjt(#5SJkG9NC3>{&)7y^8 zlW%?R`~KbB+`l+%SB!uDyo*PfwVhssn|%HG^xL^fMk2buo^wp!R<dx*;@itP(*FL~ zJnxHEs%&5FD{ijfVBIGixw8ZEcW>LC>-^`(v=w~243tm*4O=<$XWH~xhDSF{n=f?p z=_#T9Ddz<|<RYH>Kbh73cbd}j#U9@--ra7?Y;rL1O53LH_G16D`#!iHIoE97XKoWz z{&(wUGnV{i+AW-1|NIWO#Yvd|y|(SrwiU0wExwnL*7bbryn-{<_a1td?+P`WJgFk| zw`geM=Kp_R^vB%Ux%GZ|O7PO3Pfq@Gn!MZeZ5CVPn?>TbLf!Gzsr#}^MK7^e?I|{5 zc763oCTY?1r!&KA@((hxm36P0v|99NQfBJZt;?1wPfoUO<u}%q$(G)GU%&oc#Uh=M z__rb9+mF3I{j4``pX%?r`yKx!w-~<_4e5UNhU>D*a<<9O%A1ms3$HwRwXXQ-6lEO= zpQN(w5veEEX`QL(IcssSpmW)I>BY-j%}oAJEn0W)Nx{c_+x=WKOapf+%PeABu_DFg z^ETGzjX$K$-kYKJy3RSXF)iCj@I!n?z|lux8^S-ocu*&1YI&+FNAq(?VOz+i-6uZJ z{l1)Gw(d-uZPy>qZ7i>v=BoUE{nedTu~#@2rxzEg)F1x0`Dsr}My_M#LOYAsa?ula zx-Osi@8=u29Il#G_WwhzvUTsKWosU_Z{FtR&!@DxV#~9+Um|Z^zfi+iuh<{M7GdJ@ z(Q&$&So&3!?!MF8U6m$&Xst@MNiF`I{`Ol{w!hF!<r4nC{Ga|NtWU`)xVn0ISn-P! z73=TEl;<qkxx*mNiAh%^?eFEk9vad~+_QMr=sHQ+ozkdfKc!!KZK|=$y4?J(?&piI z+sB1=UQ)}_@87Ab`EQ;3ij>b0P8YLsOt^0Rz8)#`y*cIJlQT<f*ypUW-oJW&T7Bxm z+6`t~SHBJ4m>P3es&kJ2(<{eL+dR5?Z~E@qEV<RerQb8}FTHiDD5K+eN9>GQx%am| z>Drkrv*_FRuA;Pv-R3fWDwjS=ML%?i4ByhUQ#Y|%`s!`V-3t-|I5gs?*}T4db>6CD zIkP>tm3!{_yOvS$`p-8u-je3uL$`a)th|2Z%c)h%b00kWSFOJ7O+~(+c>Mh&hEqk( z+fUyPwK|@dVjkkVQtB9cs-;5J|H|!ay}n-GrY~00wc0%I$ckTobEn;rQ=Y%d%0}wX zj`Zyv>2oXH5B{%sv&Nu*PiOOD%jT)4j%%G^l{%Cacz>nOGXJX$oBkG=-=6rw?Bg4^ z*%OuLF6EuRu6C=kMp$2I?DwNGRX;1<-E&K>Te3mpe=zg3m<Rlka$PsF)_$r^%SkG| z@$vM!DTN!_v>bb{%6xa)aU@v8`dnAS%6Ht43S%|*nV0`q#q586=Sp6-<5CrZ(F<8W zuWPFNxYTCX$v<5af|R}G<7PYzf3Vsz>&X0VX6>hE@<n)gi|g@UwlqG^z4XS~hoWNZ zs*hfbN{KF?wt3NSk*p6>-IvVTv#WB~7vY0NeHQwkWWGe6zs<dFU+?n#NB8HZe$L|0 z-h9;S`>$0mni!eRbUg_Va@(;Z{ltg3We+DUTW~7q#I5jGH`ErIr)~(I${V_^{D5-n z_SIjd*v(^ZCtfcMWS^gq<||bH_vinqvB48(r<_tKbuNGC^k7Tpi=ST~a{mZl|8s_1 zEyw#QZ?*5+<=+<XS#$6H{nD);UuwHW=x$iid+w?Dx7vp+8SO&P`L6ChH*s>bs?y8D zpHpRj9%?`B=QoLYiGx?<+=$HUVjDK=bIx1zG~)EL`?tfrkMFtA=yq>Omg|9|8$9NT z^F_2ixVYxMwsPRsQxz{Z>IP|@_KB!AE@*sx^!B}=+{O7B`tf`+**#j@p4b;hx%@rh zxb?&4!+nKLn^Gog74`1P@i_hGU6~_m-qOyqxp%i}Dq39$uXmqO_$hnWjtl<-dyZaO zmSI|9C)8Z@lE<t3szj!I-)51!H@-6+>dOdueRoU8%f(ajf4^#6F+D$X!repDCDQA) z#FdXMn6=fTY{D-igAYHuk6&=B{~OaEyI#!Xjc8%WvGXUceiWGgUa8{~vsLPxTPb{8 zyYi}EK3G>j-7zHZTI^C$^<Bzh%dU52Y>q#&C&2#mio=VvCZ36pOrH93^V*z09v`Ak z9DG>S_GID2uX<}TJ#IF2uIrgzd1G4n?->~yueSa#kIQ!s*mmw+SCfD3-#{(1hgqdu zuW$XB?l0tA%EY>0u2Axg{IddcbnPB3DRGcovVv=}t8dKd4~^0>X&3$8F8Um-{h_QS z;j!WC-75vAXV0>66+C-dPAB_e<MZr!+3{~Y&u{tGJ}+VAJhxpcWtReTZ^fn^zmnXc z@><9$aY40-`9p(v$9a;8?l(P@Gb@+X2=J{{Nxvufw6IRS_x0cMXKAx?Wu6}XJYQ*I zQkT-pODnha>dX<}p?vD=lOW->Hi!G&*YvvuJgmR>(|-Qqhedj;mpogr`bf6y%*QcW z8~rP67BzW(pSEt@t0$5dFSgHn`mR2?S;F}6;v^Hj3oqu+nl1kJc69jbd;2XfZ*cfh zyyU_oeWAAxPm3mBlJRDZ*#D;{c6oSGOzQOPz0Wk4uT4mvX7KIc>6~{DT$tDDP5!p| zu&QUQ;PL-g*4)v#eyn0!SKeRlNp~L2E{QJEI=(SKDpqr$)wy3c*AzF;I2O|?S(BUc z?vQfL*~TKt$M=pU6rJ4sttjx>Ca;TDTPn1ovL?Eme_d36?n~EoaYNOU7nUygtNW$x z<CDX|Ir)uZKgH}CN}VL`%-+H~_rVSGt?Qc41msSfXB<*C^I&rFvE24MfpzV^9qn)K z>`boU|D>9dKigBZHqL8?+TQR91}7q`CA<QkTs^4K$387g+WPd?Z*8Ab`?!uiYoGAy zg;Dx3%{7_ozvGWKMaZstuzmLP6|!c9g@rO{6ZIZ0={<LM53^Zgo~XLgF~1J2ixO!| zZQ@?`-F#~u&m(dDP0Xw2k_MTOh%F|&pUgZIarEn)DNk~z&r*K1sX+6ShR<8g$wFq{ z#n=DtDZa4gPPkS%_xx75hR{1!lXUC9_&T;;WiYPX+QqSR8$*z6?7K5JD&u2P7u%#= zb9I)mPdr_x|K+7*l?+p}2%o;GC`(+t<B@Z0x~|LRrMo25YsK%(zvfi*!LV-aUXSU; z{dVdr4@Ec4W%<4?c=Pvf(iv&D!zO=BU;g>Vg~IPr>8arx!xJ_68+)@SZ}bfB?vB6x zaMAm+WTm68-uP&}uP!<A;HR}Hx6eZF#S3NDzffMyY+MpLad&&h+JM?!m6p3#tynnU zX8ywTgM1OQ*t0fS@$8wil6S(Qiiavszq-pStMVOnZB>gX@e}$kRX_VnLwL{gxV$X= z)Bk48wiWN)v^s}(Nvp&qeeszR_H&XdVhu}n-TfrKI6n9HX&X72cb>iy^CxM>Crp}p z{^x1$9~RADWEY-WJiT4>>a2{d*H_-=x)d*eOt7u+j9zkZnutu*sz;J%O(b{Ec<FC^ zz&-x|#|5AN`tSd{io0a#x!(7+bEB<%eCNKfIJ}Lkonz)TshX1>vETR1i<vI{<Mfn- zZjHFYbuo#X9&8TKeym(5^W^N#HDc^?UEb<8x41kT&GLJq_M2RqA^h>pvE6*<8?qBr z=F9yt2soN}sD9P6om}(F3;#Q8y*5WKRs8nDd5@kvc8^-WKaWG_Zr;<>=;vakE40tV zib?L+_<QA7UeVb_qO2V|FRq$@R6Z+CL#%n?d;8k<F27ey-fJRG&pNAXa<Kh<dbqaH zkK)%$-!bfB?D-;drsmz1^|3E?j{Lr{?N7OaQ)9H4&yA)^NAuIcLf^w%yMovM<!Ia# z`2O1AdvBNMp1T%$I>PgcdNf1+r)u-AyZ&oWStRAon$=q~``Ch|R;6G4V*iUy*byR9 zW+lAAtB`x)$yMw0EgmaaJ>59(q>h5u@>`bN*}r7B3C8$lyQKWvdhnJAFI(;+$INe0 z#rYYQs}ehQ%$~fa=vneQ`+wh4<HT)Jg*RW+PAq!J{b99Q{E5l)582e`aWDF)bl5tA z_c#wnwvU6q|MvXZv-!-d=O-=iS|qDD;qG_7&5@f}GG7NjjmciRV%98eUbXcqas1pC z>euhbZWa=(t~t+k<)cjYigUlCAH_0nWxpmQdoz3vgW#g+`(CZczw^mDNnCzk!ujd7 z`7%ydzwS96JMq<;^-uk*r%n6IT$S)_s-4FryFVK|-;{*(wa!12y8T!Xue@(8;{xXC z_7;Dl`!<JY?x=0aJn4S${J(6?CnkD+PI~csW{KX~u_E}rYhJ}0o+Q1VC+z+GJ?3{~ zwAP>6FCVPU{rk97U0qOhV&d~1VvnPjhA1AB+hbLfVSS|PB{$Pc$1`8A-CBQbX6$X| z$ozd>=k^J4-2U8@`}FOG6YC!PpI@o!eDHIzS;@qF<z&ViPAA%q%o62z@!;(9<JF&) z9}CLc?0f6s%J;@L>vzB%Vf*TJTLq@ciS55Tspa1#Ub&O&baquX*gQP%YhBC6Znr>w z!PWksA0NCI@ATcetud-~OVUEapeGJ<EhNuawpFbP+V=NN`uzLr|5fDp*4goBakASl zPVG!L;7L67bCb68JFPgYbl2xrM;QtpndkOrJ{D3{`to|d|H5stT+ipZ?7Ne#ow42J zRfy&17reDgU7t=aduy=t_3iBNXR}v#nIE35uYU8Xwr_x1R#jqo%(D~6<{g%`_7vxc zi~KO_OsbcL=ImQ$HIrY-Ix`9{<@Ha?O22;a`TrT=2A}5pJgdI4a3$A|l230unPWSS z1ueOxCCrdqZYHJqVwzI9lHl!&K}+YUZAh2O`jgx7|BLD&`I8nOem$BwdF{=J-xcO2 ztTF!sCH8x$&z3r@&oF;UUHN>*{+c^Y*|D8-0v@oxdfQrAEFJgzM)-v(V)HC7eA;wr zYomYbBjxhvA^$_$jwURR*eaR3RWgm2eSzYJhhoChj;vAcZa&yAe?daN``Y%r_{I$- z1uJK!uRCX3%=m@%UgJK7P{-XbWF`s+FFh0g!S#9jisrqqqwN2!-`W|t!X{De@Vu;b zAyGe0?AoyS(Ax7(>y2N3JP_6SaozFH*E?5A`L1L$=YKX=kwetaWG4$FSBJ(=9gn6R ztVO9|Czk5{_WJgwe#LY5UBXWTR!i>WYWVwB<daT8J^NXQUw%8b{^h?cE!FDH=YIcv z@^oX<?ensGp6zzIzv!XU3+Y1dg^SN{sr_r;;dn<Pl;y|tjM#STblYX?%8a+y9=`D6 z-KzEf)wzy8@RYyRb+X2FarD;`Haq{{ZO1=<FYFN&G4thnvb>kuzhbqy+v5LqO{I}P zefZiP*BZ<#+Zppqthw)7ap;}1UGcoTgjWBP^pQ>d7*i$LemPgul{dJ)w&U3J2QS*T zOi|nz|Fc9*Un!~K-PL{#q1Ne6HL-=F&ALZZUtV^qiYwr-`8wl>u!H%NXQv*^@66fm zHGAUChYi0^_7|zFe(icvr?YzJHqKZLHswveVy1#qul$@Y*|7V3@=nv%?jL<k!eRHl zrAqzp8>v2zs}EOwy5IIAQ|LRz$mwenj=VnQU(hABkyl+QO<~XECmj1#&gdo2K6Sf2 zE-TtCuc~X__T19Ix8;s0L6hIV3@F~st0DN|pG01h#q!uy1?HwA3xCXO3Hf|>!tH0f z?*B>oCe*iQ%cEwS?A2G5?Ul{eUgnQuIwvW<#w{Z{mM`*e<I0qMp1-I1dCBkDWO1kA z@gdJ<mHf?bS({oDrt@#oN=u2<Uh#zgknKI5qChUu2TP>AUN38W{Iy&^<w3x1j+m<f z!p=Q1y6su>8I0>M{at(SRy(J@&16pHvOA~dFL~+ydx3**%BH<~EDQfn{&RQk!}emn z$I5S=r#$0N_|EyD+u_k;u|pR)ikw>ISKNP6{Ix%K=11vi-=?#d3UfcIHF>If^`DsS z8uk_Cb-srb76#OwGZExwcRBdjFT2uEn)md|(;N(&;@O!4I~tl?H6#>RWLceRFRREf zHFPC8C_1!C$jG@bf5gJL!%y_{jU{O^d(J=3+Bu_*A;H4+gktio<tHsl45dz8RFLs% zvDg+ImzKQ5-^1-rsuOREAe;J>ru3x>?jeu#gS)>Zt=Vv5mz#75i?7dBk3<KnC)Xah zwg~8{?>Lcu?p;RO!aJG5?R_Fbnx{*%_(XX*%wC=<POO~vHdD60YrzMdy0sRw8G@fk zxSk72sbJ;Q;;?8E?pBdzJ!llFy1-FH#HB-l$*kQ`E@PQemEAmL;eweNPY)C<uhbFp zx%X_-N|DqnTv|Ord<{t+P3#Nf6dPt{#`=jp*pVaU`7pRu<nNjZ42lapd_zCH^te51 zzH|Sg$BJx%9vm;ZL~NYceU2+IFjZ8===1vgu~(h;=W^!;YX$~xv0vuB&FAj@xUalF zkEwx)^~B0mw_Z<^x;byzKKEVT+1oEF-wriS;kJDxo)US=bV1Pl=wB=msjWN1?^nFA z__};&M~KzGKe;R$Sc@$h6+I#j@UTsoAMsgogKsx~+}^(>LD#DvB~DluCBiSdDZ9PG z^e|t_wO<S5r*JJ7`CI(fb=6%K<>+m<AMqVM_f06l`Sq9eA&GAfubEn#t#MrTWyaUK z?e=1CybiYInS7adcK(65y{nrTKCXFiN`6hwqYh?${vEAsHHiu>SHEv&GWK~nt5rwI z;biP}`8gTS)=mB=__^eMhx~2<hE)s)3>qBt#F9U?N2>i&oEhAZeZZ&n&;30o-d6>S z>F1^0VfS5m)QiEq{-UFkVVP!xF~imw*BqxAcQR*juf3n_=w{+)!D1oW^!CEa0G9J} zxE_DJwz6PV%G|C5-<z`@JXrbT)tN`jy%J>JX?}fWyez)m>@6FohDk7&xBmN$-7D6I zOt0p;u|;CSf?}br3=Z8bGcU)?-5tK&k9l$3q&`8emDf*RUUe{OY3ioS$vxqX8Ffy~ z?f)K>NSd^m?73{_xx4Y3b;f(~oDB;Vw+I@nJLq?IjaTaHfcN23Eqb%}%%2jle(B=G zEfJRv&fRA9QXp#Yt?xHvq<(DB&`sICw9$xTwpO|Sl$)w<a(!<7CQ)y#T#sw;2Hu}! zbgE!#b8l(qx~cc39=d!dr~ie+an>)N7=vCKygwz-^0kMFG1K;H`y_+&$2x@eeQV&7 zns~v>z3fFl=aG!<56-e2Vn|8oNS{!^Xm)SWp`y<Vd0tJ{2;INUpZ7`FLGIw@^+r3C zCz$c<X^!0F`TaoGlMg0qws4eYIL=CBTAF%Ge8snk%(IwRtSm7o;B9+(x5WO})+U*n zNt`QwxusWE<@Wv$eq74R$H>df&EDV8(bChT#my_rEX*Bk#-}I8D9EWPY00WORc7ZE zlPx*bi(g7g%zUC9u%aV!qtMb*AsaSqEG{T2{QTk5M{bT)LPBDKqQc?2ikeH^*6wm> zJZ>W=!NTY0;J_i&)U-fR;>m@d|BoNnaZOJ8^d`bZ{GvOLVDb@>llBpe4{F=Z4{`cW z`1)J?#r?BPdNvcX`z0Ayeg2~^%z7}V{b*MFm0Rp_j7+lyt$P0MW9LbzesTFp9Mkm4 z_pJljo`3RV-<A?n74O^sZ615A;fWXX{tCQRFWu`c&8oQK-o-ah|L%CV(C`1`Ni!L8 FqyfM<^Bw>I literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff deleted file mode 100644 index f38136ac1cc2dcdc9d9b10b8521487468b1f768c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29912 zcmXT-cXMN4WME)mD7nGF2cl1OK=>dwD)tZ7H)3E&UBke@5XQj3kl^+zXl-(CVgUm~ z8Vdsh6DtD)vrXk@m)Xf>B?=4-`3VdR4Au+`3{gziB#YAu(sLOYGI$sm*!D0m@bM(+ z{jEt)EG}SRD7nDEz`y~;0_i!GX$%aEE({FuJq!$seE1}%N@t`drZ6xh%P=r7n1OJr zu=9kBjMPL1hSVMg1_lKN1_l)_7WOY0xg`}049Ou33`}MW3@kCa3U>E$@{<!87!p1( zFfi#bFfbXZGyc=hO{^$jU`PPj3(~8=c#`jUUSe)414I5C1_s923=Ax3ajI3@3-XIg z7#IpI7#NsmFfg!7PTCQ3wV)`qfPo?J1Oo%Z3<d^<O{s^N+A3~c{ma^*e0-`!&-c|? zY@T<s1bQo$IG*h(2w*;a=0&W2^}*e3cTJC->63J}J6`yvpr%t_T%GTy%(2J251emY z{G-UT@6m^>f1!7!GLOaO&#|w)pT5@pZtT)^;p^jU>+bR-b@3doVU6TTV`<ZTscIX4 z$@r){zgYJPtIzVTKQvx$Ze~ol7;oUHcCMpdZgVY%Xm#_`td$wo+ftPp#eeu%&3FDX z%Xi&}mv{OWhU`*s5@kHjc35ZC!2msDgAGLjvD4moyKa1uf9G&g3yYZFyq}rR6{Jp- z@$ng?Y>`>hFn>|Mao{pHx6{W(t!6#!OPg7uVHC79X7#mISAAyk#n`$>ue%Vr#_QqL zt~D8_ru0Tk;8Fj*cXOQU<I~-*+k|i0K3=qlbI+Cip+=2U+s;)@b+R&zK7L)u<GbN> zArE~Ug98E{b4?l*BF^n-n37c*k}bFV#YS#T{TWMzSc~pyx-L;jVVN9X@M__;-HXfF zz8rY%`u^XfteiW0Zx`-6+LXFjI<G*+VB?k9PC*XFH?~%PPh7aUTePHV)9;#V8~SC^ zaxZ;!E2_9Y`{q2k2f9Vwdw<_?-q9d4A??%jJMUbbr#8AO%-*%^;HgxO#w3<MUT@ZM zZ(Q}eX}?=n?bEYs#IBrB6g#tkNoq}0mw=dWv&{WMb{3vc7P+169<Fi5d&LhYH0@vS z!2EYk<msIBZ^oaBcbDhJZntRU%)R*ZN$Zvg+j84$ypDRQ&R-m{L_<5&E37ka`CN{? zyQjBmWu8yh`NZ5Wvc^Ys^64GDj`xf_%a;e4o!Yr4R7>d0{b?tT%P=yk7lti!W~sd% zQ1#QptmSpg_QE46#h!;>cH9t}5mVF<UmwvDyt77DvGne~bKBnw&hh+n?qQzF4MFA~ zH8yunDhEE)3AHJmWEw7VTwH!r%~K)$CEs2i4B>xdeR$!Th64|D9%kR_ygKK7<E(Sj zygh8U*iCIeeO7c?zC-ip^Z5_HF1}>n)pgWB$Jq9_XpQc{^9;r(*Cc;4xHV-@^5L$R z6Bo+O*8RqGx48277TxkgGu2*B?~*%~RXn?CVeS&u8K;-9HgT@s7{qp~^q+tH)xJC} zG4pj{3`gc(Jo4yZR%wA}dEIHd%R8%D?H9b{nEO*keN|z}^t;Kk?dHq*wJZvdjM=rs z`t{!j>7S)8*u_tBKCrmtUt?VEhN=$^r3PjX-J_d#9s6`gvRn9(QoEciS36&<0GI0S zYksEtOe_NL{#tNd`fRqs6l06uTyZ`Ym!zKAJkwY>=kW9Q5%zk4rwR)L){3s4;$-6` z@Z#2F)%B@bs#e=4O%<&15V$il>|}_x>aFvx%Xi;?R^hSs&7vc&UTeF2e<gdhSzdZ8 zZTaMOoI9KR#bDd8D(TZ-WrLqw3_ZCt=)sM!srM(p@#9^})S0Der}D8><;|M+_g|m5 z&9}y0&_S?t*`MtvSExM|5#fCE$1(r@qpnT0O`-zg?OUz4xo`dD#_7PNqgSG)eR|`j zhe@tdww3|Mci0(Rj6cs3v06K4g-}{#WkOcK)79RuS6!QYP5Z9>xhoO>8zdr)-`&3O z<HwCpOLlzGSf8MH+Tg&N7SRKOeWJ-f?1Ke#o~)k2V{<QZ^^P;eOHZrK6|I{$x%Sf* z-U`O~cTAUg+0D1uF!Ot%Ols!=nR%iQ(wsI17X4RX+a&iSZOR#zdq<NS<Wh|+#g88U zy88Tg_6?_$OBJ?#+q<WW`QPXD*DP-oeYW>gic7p&^zz?(vwff9E-n7|cJ}9|LXr#p z+-|tJc}x^6DQDT#b~I?^*7uc)lfO;#=YLZCWiylFwBzsA?mV$|Z)N=vaeld-HcM7; zES%4{w{+#4|Ic!31?8XnACqHb_`B9HG+ET>9+yN@_=$?kDSK3$k2RYt?d$5+&p&)| zXT|Mxk7NTK)?{Tfr)i|<m3<boZJIK5lU|zZ#Xjr&rtCQ_s+@0*hF#hsl)h7@ec_5k z+19fh>1%e}xxTzCBD2TraNy~Vmge;Qi^(Nhm#3{iDEvZ8%{QD`<ITNk+k<>RCe568 zWKD(8s%c6w4?Qn#abeMpJY4rHQ>C=?#mnU~&CQ}O7Ni#W@4fx_^ZU9k<Cl^i%Tynf z+q-6FZ{zFusW4e(@yaRNvh>2@d}CbFQZMO!3gdfHb;#4&YEjXiCzB)M`#URmW|*$I zb70z?1TACZusM<wG$ty>*ZCAMMd(bLX!6W9fPMDC6qSS*9#f|*J$Rv7Z)eLP$A9&$ z2Nq5a>;3v*g{fjD(<USN^rb}}-bYpHFL~y8inzQmJG`-ulhs+Ic=BeOGm}F3Csdy( zo}s*?djfam+EWLft15kCxc6Vw+2{mglk|mh-{7fI?NS??5`UQdF}W)EE4{w6q(nd2 z@UM%zhqcjF!3HPe`QL-i9w?m2s~^DkW>W%F`O-P(8{eGnl;67J%!$S4#d;DFFI$vb z+01-zpepclVUDSgLxaIC@kRAlqj#6TeCppT7g>06ofiM`HtRJ<uZ!KkHT#XOi(iNK zVe#edC+}RF%=u5|?(vqFe2Z>)Kb^#s*gLhTE$1wk<juPqcg1ab;9mCl@v<^wskn8o zx33SYG3(Ady5pby|HaqaU0ZYiEcn=Lb@V#NOfC1cNcHb;f?ljMiDv3tv~RCv>$5Yf zT3%i{DKx40tCCis4WrAif64i27X<%)JGgS`)sHUkJxZ*$tuiZJuXa*r-C_w7Gsau> zMg|!tw2w8{Fco`dlzc1usXRBW&Vj#lTAEm|3-`f|c6{HJj<Zbr%b0Xnu!nyR-!(1S zj~hc3Hb_MC1b8;put=YNA?Iiizh3m&fjqyZukz9tsw!v}f0W8{H9DPD%yuvB{9601 zd7o1mOS<c8)4TZZl^tAq`RAcmPSYj2%YE68CdBAJtBmvGU}R0Tp1k+xzMy!myWIPu z_EgrmnCWS5x|Z;M!CRep>$&Sw+1ahxW&1>@3Z|#*Sk~RJV}YUq%d1mf@pdU;o9^zN za%<8Pf0?`IRc7cc+!k`lf2FSL!bRM3R$W;&c|}ByUWY4-;!peapPQPSey#17xTV@F zU;pFqjP%G}{>?IO)@5&gygRI|r{ukF_rJOC8Q5H;{=a+wLNa3h4c2$Jgn5cyFs6wf ze6UDv*L|C9&lj!i)8KsmNu)(hPCF#>bAd&_<r3Z1VRIkPEOy#aRlI6>%g#R@mg}@Q zCak!%@~dsrlVS@Nor4EAoqc_ct->*?*mZ;QD+VSx-YfifKb%<UDlQT9e*d>6tE@J3 z?zndO=GB!?9<Pd=9Kl-uV9!|z1Nq*MI@_3D{j@r!tjr*>X!<+Lf|n(RuT(V6qPGMl zq;Z%XXS=MptNdh$O=8&Ev(L3_mbr4@GxfLQSo^MQa$b>Tg+|_Yy^FOr$8Pkr8DH;F zOJ4b=?d0lX?ecqgneKdSxiRz23r20}zF$m}IFeSFi3&70uiknurD&0Q%gv5ubL}@Q z+odwIZ~peDx%~Amt!EY0uTJ&;_HXS|<2NBSNn0adZe1TS@vF)~?G+94lGsj2MV6c| zp7*9`s}h&Z#c8YEc7_y*K2>78^07o|;ZH`jne0znwu#ACG>Ct(S|ZHpDJOJU#-@nd z>HQ=wAvOobrPhz9-}|{>qcG$7^Ab92Vu_u?5iL%NXKG`j>vC&6Tji4qgm-^8n(H$& z(xqg_N3Z;IZXxZnlO_Fvt3R71MjNianBQk~eA=m3EZy%aKR4|?Z&|-8{APs09!Kfv zQ=I00j^Cbsd+IVBOKsOmOAY1QN3Nu}^mm-D`8sv(2bD)}4@q6Q9nZRRf^PfQEOm94 zve4#-Q=`?g7Wx<&&3xYS>e;{Gy@yx(cDyLN^5Apt<l5GA9B(%LKIYCT@3PkNtKsFA zq+{)q%#?l~j4l7PQsBlj?N_;y7p_S+u~Zy?`z}}JyZU*z;M$i9WS%u_R(klS<UQ-} z?Ch$ezd!x^z3iIq?Wx|!b_e}?vEX1oi-G<V>rZ73;m4*-xIcfdmWGRosa4f$QQ=6A zy~Q<u%eOxf^H;0-bW%>%kI!d{;152Dz1h75LO)aIJEuML4ESL(aWkh;_lk?#4n!M; zRIK%pJtbn>c`GzRBQEjeqoCkjb<aX4i3P50{JGUStg%Owb55$xJ?qbYu}?x*Fs$4; zpXa4P{fkDw`BP3z`(+aOjZyu<oOMMFGN#u2UGjSJhdxcZ^yH<S>nF|z!2+doU)_yn zs2kt6{_S|DG0eDdQ#ez{JJC&3jps(@U)^-`(ww;Cg=VL%%-&rv-S~0kvCk2cA|jZK z4-~J`+t~ZwY+t&An2(=S*w=EKHr3F{H;&(H({-JCWB2=M?|03dyh6OuvQhnkpIfRE z3v=5s!;Eu%o|Rov*R2d&bNfynOtd&7^=+o3QN?G8YbPANzw~^N_nM~3C|2y1ZMJ&G zjX7J&pOw|6>&^cf5<a_dmhi4PW1lOZU2l|JJ=}Xf@!$u~7iD3S3LgJFwtV}GC<oVr zpXbZOek%(LF_o2yPgeDv`XTxK0&UB)3^nq#vosASPx-c5v2ooJ^QdUS5_{iCCqq}s zEj-W3ar&;njHW9o3;cVZPb|whI=j1b=0ledCWa#$9Vb5(C~&iFF*!TmD>~DmbIR-Z zS7&$+{C_st%Ad{mn}6xjPb+249Tn*j2n%MdKK!UaF@?>tPq>0%uk}TV+3%}o&HAf5 z&uzYv)ulY6_PNr=Qy!O##U4DjyC>DpR_MpJl{dB&zNy^ZxI<}{?5*m(PZS$<Zq;~8 z|8@QA+#mC;;?Do{{(E)B7PC`D<&N5YIa9q)&OzhDon}AR>d(e?64J?kwSPCTK6tzD z(a-5W7vw*RioSJA{`1Q#>-H_)9oG}}cj6I`^X~I@y|+DnPJYeZ&n}KGO@~%?&#${7 z&dL6+Dv0gB@b>PTZ^Jbvu<`84lD(yL%&a%hq4BBGzK3Zt?Qbq*{9p9f`JBK}H}S&{ z3cuLgoGIGW`{)2uZj-{%8Nv;1sX`YgW^R4*=_ik)z+R7;rES|6c<+8R!Cz~7{n^BM z#a1rwu0P$Bbmudl^XvDML#wZCTe!adGwV|&tCm7pMyqp09G-7xwlfB97FYWCFsfJP zKhL`T?|2MmoD>%L&ux3S#Ne(^=ZXHtf9FahR{UA9C9Ihtar;z%t~uwXYHk!f+J4~O z6wU=!wx|BTxW7bqc`e79+Xu`oBf_ihA3FE%nT5^8xuWOpZ!Mg>#eCP>7Z?AsFZp~y zwe&%lf9JMy?|qqqf)00E867Wau+oaNF*vmFKV!<jznRif|G7_Oow~>NOU2l+EJ5_3 z%}=+Q2G@3(2o{^^o41-QZMZx|a!N(as!YMlJ|EuOZ^(1wF3d2^-f)1CKc`W&LH_+I z{`-5kM8#J5``odW5HH{t6MMhs_22&zE(M>R-=FJZ%o9>{IC*9EazTY7C$H{Zc%kj( zvG2>x9TI*Xm~cqx$ggd>_kMn9UM8F*aMVCfNy02P*C>abVdst9g<E>B#2h=E9Gv&G z{!j3?{aLSy;*X#5o;v@}4-1~I)zjA9zPT}rx83TOCYR#Bx0f#XS~o8Y+}~~0V0@n` z?*3-e+4~AB)DJi8-dEp!@AwqXdq%SBc*E9C+-M})rMfH6wZC?Xj$EK~liAW0%o8+> zeM8c8BJ3}=zbZ{R`lY7mW~1%P7QO2W#pmvP`J=Fe>F5GJk9iR?w>OF8IqbZc@c8z@ zcXFN0$KE&Zd^1bx(29>n53F9T-u$Cp@U+tXU%W!UC#%)GSNrfaKzd^1w{scIf%BRd znedksr5*fzw%;yoB}>cQ3yh_Kdb}#%eM@`3KB$uY-cx#~@3ym7ZSv%<AKFvo&7|*} zwSRsQUOIhMUFUUyRku9W#xNXOs&W70jo#&MyG@?$(d+!U?Cz)f%D#<STa!+heVZZi zvi+UJzJGJu{jFBS>@RvM^(NWe*Hxv=?&imcS#M5%zrV%g?!}35RoT~7_`m<Qwp+q? zbeHa$HSRLcrbyN&Ry;knefGJDXW2gop7^P{rGamw<)+h|dgo>8UKONO+H`3jwPI`d zweYNBPeA*XC9He810Eg7F1Y*cr65<v{1>@pOO~JDypzB0??wg39a1%K-Y%<>F*<(r z+0<v{kC#3cdFgs8r|wtqukUBJzlax*-d~n`$KdDZvR%>~JeO>CN5&gy-4V{&laQtE zpY=@m{gV6leD~g-xVxi8`o~3My{jrFS-LZuw%@${Iv`8mB{=p=&-wI6UT0!tQXb0H zfBE}r!82u#Y32;Kf8U(VzV?yN$CPxL!r*-`_5U3@{6ITi;(NTI;K|OF_wI!Vch5d~ zqx)Q=>)aLBxlcMiXf2UZy}-oQZ?s1tV*OF=-&ZDki##^d%yg;ouqgZGB)KCa^TV`5 z4LN&WPVAU=_CR;SE!*4}^M9Oo%lp~iAB^2JBiiV*&W;Lqg%=0kbbqysD===faZ(W1 z<Y&!UDt74Zm5te|CB=`<Jm++{mMp)qW;=h_kKDV3tgkLy{9$-IifcmJFaA&W=H8Up zS-f%Ys<pm8tsWOrv$lpzUb08@_`G1-exuCmzDBQp@AS8-lS%RGdADPU$wp<ZPYOa3 zUyj+oXt}ZAqqX0boR8*Qvu0bE|5|(O&CBY2rl+=YoMq%bXLGhw>DG-O_m9<IeSWd_ zeD=cPxgtG}7ach4;P7C!4a4KgfV)MjI|O4`j;nr`Nwmz^6mi`CXPvN^*yCeC4Y%)J z{c-wO{6?nk11XAZuV&uAD*5EoEQ?<(HyN2tl*B*pEIJT;>iO^Qv+lH?KAY*?cXwLy z|ILN(Csh3owrZ$9`;h<1)Z6p<7G&7}*}bd&^RmBM=U;^{Sv2vAs8#p7w~YUH=S|)$ z`SVsOyW)o%XVWSUFAC<*x2&n~F55NhPe9zX&+=Yj%WXMZ|IK=!e(XzNy}MIhwnnbX z)}!`{Hxkxqew-~Q<8|P@0Vm`C!^fu|eShjy=fdvC?cZeN1+K4)+Idv-hlyoIb%s;T zn+l_-m+^T;9~N8f;#lx8`N7n_4;4#=4E9u9Q+cOSp=CUK#^+AAP1&zYOb;fna=bN- zKXuj{bNd|(u~%=^xNzy6I#G9g?G5IKkB(ZZ-r6`@NUVC9-rJt$t_Caj-P2OGC?qh{ z@0#%W!tB43CvR*2^5X&L(QSX{YEPNY9?tuf&n@V#DkIC%IqSqlKb%ZnQ|0A-Y**;K z@Lj)n=f~Z;v|VLW&(#Q?KX;_&l*fDvOMBeK?H%JIsJy5rtgOxYl(D(|4zt4_qZCBu ze`!?HuP<5gzRk@*sx;*4qSr2uOs!8^`5I-Pw9=iacVd0q@@qzcJ{9wq)u{Vk3BDne z|3&|**@>WUO5we$FLZx+_TctCFUyP1_s`vxS;%(gb)$RtA072i#}-Js9oSf_)2>x{ ztt!hw%)&0<gRY!yU1C*mUd_j-Y+-%V^5*=|eAN^0U$FNW1>btGB(5)d)`8D^rpb#X zoRYt?{ME65hS{mFGO9DgEbg0C2k@Jk?zNhDa`wr**c^t~@5@Bz&yLP4=bgQI)7fil zIMiM^P0n6_E2!o7vgrNGW^Bm45hxvh&aN^2T<{rYZ`X;p?NwbCb(pR=bSCk13hM;^ zJe|Jh!grD@vQ{_!*?ZmlW$<a1kgryX7dJ#S?%fokyS`@ukA(O-kJRJSiVP049%>Ni zvync=A?TAMtEKWwbP8MY`JVG{q%86r?af;R_}*JITC#Lp4PT$yknw=$mui*y<(r=t zU0cDIQaMZFr;fl0N&mtvMt8-kwuesF-MoVT`(9mvs)xl358VFM_H|L_$<m7d`W64` z8=vcYEH~jhSJVDUeG0pu_fq`_l58=nqAow_>yn=R(IWA5y0_|c8`gvKiq}l;KJmCu z!M5g8vGgaKEh5Yl!q)%tka%EG)z<U9cfSz-Jgcx-0{=d}F8T3(uZn;F9reF&<Ey0( zzRCZfWn?#Z>#N@Py)Bh-0!Aed3#%)3y<1n{`g(0Q|B6SA(f!9=*B$Bp_;|ZqK+|^n zw2a%|--KRWv^9OVb=l+B`)4lnw)!l+;=;lBUwI~FRWGVT^jgyD58v~3i}U~Zw)c+M zjT`N2mVNZJlMoE~9dPTYd!?dBrgp^Yr=Pg>M0lHI{{(y}GR!^l$HU@%Nr}zD&N**A zlpg)o-??PIyUZlj`DeXil5DE7rYGI`5)kqFeSP}gyzIBe6@LV(j!k{tyFcpN4=a`8 zj;kB$L{p^nW0xjRd@7*6xU^rt*)jZ&={LKdDW>;rTGSiP86P#M5Ue`ZyYJ`oY@Nv+ zA1<=)&`rO!oGJfe?UOB;eP@CS-UdcIyHj#Y-``)>B0$2f#L4ho-JuI%J$<oP@2~&y z-bQvp-kmKM->-J}mk;mR?Gc<__VSi#_AhRcHMif*i2TpMTJZVU^2WOOD$R&zeRry3 z7x2dveUaEvBB&COuMqIv^yQ+rjr04n#Sh(L+EKYGXyM(1+xPVvY!c4j6~KA#uU>HU zQVrJP-{0QOwY+Ij8X&B1Q}>qB=)ryapPE*A4)Id^pH7R8shC&w?|sbehQteNQ~n4^ z+CPn)vo+*Ws<v9P<>D14=~g@C;<Id2V<V4DId$*emNj2(_>E4i;pvq&__R7I;qR*w zjS2oLB^iJAd@K%gEYRJZk^4l7_rc8Mex-Aq40C=8H9Y#^oXqa%(p&GY^vKDo`xwKI z56yczG|KX3JY6{X$hDT8FXk?;UiF#RU*7Ul^q)^h-pkL)IR2pS7|XMys|V*i&oPjh z{qCKSF{`7lhE#l|eZ#_;L657x=+0j!F17KPq9^yPhWoGI2F?4KQ*6WY#ctk-i--N~ zYguYb9(`ZPStIzeTvq5ItB~~fiFI>suXl?mvDSXDt9)VkGRA&?zrJLT#TT<5WSO{p z{~;jTI`gm1s`LLg$xhzF!R+$2Gw5XR=`;VtL?3kfoczk|A99&#YW+*5Q|5d3msonm z{n0QMXZUz$-j$D@7So>>y)k*4bk$gNMex7<lV|D)YhR7k?&tZsZudorHOqX@-Jj`I zvWR(ip3HU^zM9D3pn}KK?)~cE@BHy+p`K2AQ&Hu~jI=WzAD?-!T9+x!e=8xm!a6WM z?Y*eogf{~1>%6|W>zZ+>x46tXv!MA*g7vS8;LERisx1>tq}|mMw#md#d4F+-wPMzS z$%1Pvl{e3^d2jPzdY*O3)ei?=wB>f|T2FMiGlA`W$+bS-&YJHf_gfAuPLJ63@%-KE zax-trpYA#8#PIjR`Ildh{m$Nd=s(v~r|^=WRsG-pi|z9_@T#o8vrJ}#rXy$W`OoI( zK5x6c#iVM+NyoZ0g>ar@OE&WPnds_lI9PkS-0#g={at@<o?AKR80&+3zO%#gKXG5y z;*D3>X>-lC?(f5ms_elkVd7>JW-oU$*wmk}Wco}63CWlI2`&p3ymPd5IJn^q&()t= zQ@5SIUpzhZlwRGQ8X2Y%nVnHZyx$H~KL4oaH)*%J>xAXg>}}p~G%~MV`eIsPRc%p5 zWd5CtHyo@^u}>Fc>C#=a@xSVFb)kldx!iNZd9J=ab7?JC$-A4*AHPjpIK$HTs<nxT z-~uhvOu;(7_=KV}3XRnZv@c$JW@{gOENdrQ%$BporA22mriJcGDoXF)k=cG`-`llc zRrg%7TvoJcUV}qr&C!py|8jiO*u99^i{ZbjO%%h|8-8=$FWm~Yc`}Jh{6T=~M7ydu zg^HVJN)wHPuD$3gn`j^JFu!bP+J~#xGM8RE_bO92<<`>>-`%^{?0wndAGIk%aKQoB z?7$9r-kY(DW9{z5K6~)w<Ju{%{#TD5dveiJuE1!H-xDk0K%v&BZmYf?<1TGWeYDv$ zq(R?U`)<za$tL$--Pk89eQnJwz70nL%7ay+{>3c!OqR>a3T@1KUAR#4^7o95Q=6yE ziLRG8vs_ov{qFv^KC2V#<}TcFVb_H7vZq>D4DSb9?@J2Mz0$NV=M0})grAE<Vd5)s zQG@n?^B-2uY)WANnfv?5+1*9m()F7y*qyF5nkWAe`*~JKBJ8@5<U^NBk_uv#Ss7R7 z&08S+?K`iC(WVLVl4rx6YTEeAqGgxmePB>fc=OoAG5GHzm-N<*_i1yS89r??tv&hh zq09XK&6}9+uo*<H<+5BV#SvC}(&aJdgU~~EMa!OQNHM!8CtWz2lFzgK%R!}3-<Y%4 zH=kUyEoa&1xr<kSyQ(JsvdNxZ?#Q~cSs5>jSPu$$?tY@Q>0HCyjLe-r`akq`&4^j> zo7q-*-|N_*K=<aur{<OibXJ^}bux;RpP*;uc>Vyp-6qXh`*Ke#d@eE5b7Jg*>_w-~ z-}<?l>F#mv#3c`O^3yiDmA!lNdQsJn7B@%E_RuZ$dVK}LHz!}ea8a(RCG@9NbDF)S zH4mHY>E6Pbud<J8?fg@msIuXSp!3p(6Fc0W9s8@puOlw8Kc}SF?&3w+1DlK<xih8T z`ews%<XHIfnq_-e#dMTE7dj{rm0R=pz3Q~$t&{nT{)VRH9y@XCh`^Q|KeF%IeXC*Z z@;JCzr~mYo{wczf{?8Ej7|Hb^`uLTL551>#zp6aWbMn2sT;UqkMP&~S=ii7?YMLiH zyV|z@`~s65Z|cfZr|Dk*+AX$b;&H)WoJ-6aLk@@pP2atbtt0M~IcMS=i*=rB9nam_ z_#tnK+DGFLi(VU+#{BeqZYh4WW^qYn-|8t*_FOiz_WUStnwWij+Pa*{>9ga`dmi|( zX9sJp)WymrI@PjLaTVV_9DaLqVfV>5t4z*apEcJwfB)W(k`C_<NZ-t5xp8lv=jX3x zv)QGln(ucmRLa*`*8M9(Ce@Mc%ASS_ZPrsy=dN?#GKcx(byb^t>)%FA)_o^$86jtT zE?#i%%Xb_8cIlT@o>_k41FJ#a+n0BWHmW{7w(h>+PM1dAOmF$<oh#NYzg$&&@k+<) z{Q}u@AE=)e;S~96xq9jTh`3d2j&J|G{wRm}^5Y`WQ9MH8xpoyluPl1p?Y@LnVyE4# z$Xos;Ghc5KvpK)%Zp^n`>wSHf{`?-$vgZ?*<B3xl>p$Fgsw}*}h<P1fp!;u*kV13o zHO7h3CiiZfQ~g-;<0`AmeEn-$pKaJa^u7Cd=-<kflYjr|Jg|vz(Qe-JYj2rKw^{u6 zSZ8<Z{@HIWbAR2q$gMYdqLs?hUFU546|2e)8+)Y{{C}moJM@DEvyK0Pg;t?j4jCOE z7i||kFZea;%9N}rNACP(=D%*us&neHQO@M8*?uO5P4;ITzddweu=*@p#h`p`kKdiG zYhC4%%yzFi-g7C(b(R0Y$1aPbz1-wK?XGkwk@%I#8LR&-Yx|0}MUAH}E}MQn)FIQk z??Ikl^}p@StZR2^Z1Z8={n~eFli-w;JD;XJDEhxpsJz2k#BqMaUCFJfx7cK|qjXOH zKF0kureS)BZt(Ld^Gaf;yR<M{Gp{RFnYhly#~>hMd5)dT=WGt?=@Jr?`TpK5vAg!> z{R68nYHI$^gfnl+PJ7-~z*=klF=By1^*S!Eum0EG@8UN2bo7(b6~XvZnGeldcTCOE znt5WO@V@g`-&eaZnMFO`bh2dmg~-4UVviSEd-rXg`-ySU)F3+pKex9ZcT}&v;xaM& z+r>A#y>{+wxT=-=dCFB2`{iq%u?0+)oU^~3T_7d?+WfVr4lu<AJ>RSJx9LH2^ManW z@q0a;8(J89h5oqzkGT*!?Y*y3DOd5t1Du<VDcF3M2@Uw^;-pzReQI=`K<yQ;-ZS$Y zyANLe{^#>vbrIz+^PellW<0;WwCJko%!iD*hm9u2XKhGM)6^(p4da@2#_(E%)+%<r zi%SlAamu#^aM<}~to7cr^?!(Z?3Z)Ff46tVPWh*2&-%Y>!OP=6ZQrR(2soLr|JH0L zg^z`qc5|0i#W6mu?O>R`tU>pKy}%K@9h0_otUp=&J!Vnv!^0tFMZpW16B7j8be>r> znwrYJd^#hTi*bFarc&lyu`7FzbAG9<Rr%H!VxsAB`@3|K1<&(lSy>sy%L|J(|66Uf zmtWzC=8E^rRF$vyHy<iA+UfVa?2*g$3w(CRE+-%Px5TJ;s<nT2;sr0G^D8ZTrax=3 zZmm<C)y;kBX=P%g`O-Oy+vIkBIDhNi*-0DBuT4C8PUo)5s^5JQK{}J!rkpM5+84Vd z*T0g<KlkOkylrdQjju?XaKyX}@ju`8R^-sVdHeEy*>04{-@#xL&vj$tqSuT?Y3;FE zD+8;-R&GC_Qc-JqAXDq57}FggoplUbjAkz`)775!>qMrLBD?;zB@>EGt^~@7*jQN= z$!vQ3^35xb`7b%j9~~8s5R3`?ZJnR7!{g8OPfs$dKIGdU?Y8=oIbZa=%3&pDlgC2) zTpwr$T2J}<$z6MD*sgAe#JQihd}wLk=6f*e^3|j?qvluK`Wv_w%+7x&yUltt({zu9 ze^2$3Ss%_`mR_aRSU5HA(Z$~zJ0gNz-?ZED>@hNtFm7mHuP9eIt!*cN{#~Xy^_{{+ ze|5amD}R`Ntj<xGP`cZ2b6A>^?DYA@Z*-1x+q2x+zjnzJMw7ncr(NQn-z8SfJ{+bO zeq7K~rImld4vAD&M|*)s0veYyMIC&XZ?;jWD-0E9F)InSU9QC7@M==ixzAOJoz<@v z%x6q$ZezGJVUk@9v;D+tj3tZJ51%)R*(2PTz!G^y^wqTd@9Ij4hmUVkSXM3YQ<>?N zVtvH5^cH2$|8Lt*`sC+SRivy^XId(F$oflzHlv;PcMlH}-Jk9${I&f1jz>K-%ZvG+ zxqi8B<s!4T+{;C>M|}++XL&9=d3=KEnZ=sheHNu&3jefjv*m@7ui@7pedwKh_fvLy z-<5MGrL7}$Bz|jN`jK<%@U1OQ6T=iG9PM3WFE-x(d$QQa`r-cAcYLKEpSZBpU2siY zc6@<_kN<}QA7oit7YQy2*)aX5)W^wh5`uE~ZjhY1dMDqBXH!;mJ^mDBH2?joeF>Xx zd!}De&`u5!zjV?g?_VW*j&p~plVs>|Avf>Vmdkd10k2;*-HcC`t(|IlAjad%ti|n* z;!<OlK5{ekDzRS@{WQk3e_M>{Rn>iEj?=}NgwK?jB`gzFUTt>Q=4^=(*Pa8H=YL3B z`Rfi_-C+--1CQn<hD~TZtESjLH{0ynv^PBOHq9wmWPFIZooQ>8(`$o;%lTC}H!iKa z?BrONv%oq|VB?#T4LaZ6&waA>M#dIvMSr%R8#1(JMLhZJETNtMoiT}Zj<d~aTO~c~ z`KEJnYGaRxmnt#aG@KPXet3Ew6N|^AO*-4tnr|Hb{rBgJLq&U{;*^_|vbgSBwyMZ+ zT>GZPzR&-SOY26?YfW}1&$gOGx2kP>{B*(PCp|YCQ+65X{hFlCmd3?=)5U&Qap6LH z<1D2uX0aMeHrKA0Us!uk_{HXeQ>UXoT(h6LXm_pNW`(PsdHZHI>z#Nlp?Gi`%atGf z$LcK#G%vBN`&b?IqVS}u!fdhFo9Y1^a_;j}nS3T4xRH1|_x(ki)O!o(`S`n*etq`6 zZM$q2*HS-Kvq|Un37q=GD6+{kb@8Hwx3f)kC%kw%@#zz$#u;pF!V@dviXLa`Kji!( z8{TXb<G(R{>7wnYLbKLuWnA3boSS#hYjYm!lLeY*MYrsTm)xGgYV@Ga{_mE%>#{TV zJgEyl6KikHGJp18QQ^6_E%^lXLqdyY?Xgu3@vu1`9JF6vjO~eDfZ6`N%S~RT2R?e+ z6)36CxIw}?IQy@T11H-bF9G8Yx6>c$h5!H2N>e`gaMsmZe^!*P&AJjd_4t&$_BFBj z60!!5ry5@Jw`N>5>0^_O<6YZ^ytk(guZqxndVkt%r|T6b{Z5_mim;rl`=W2z)z{8$ z^<_!!tAu<dIj%13Pf5(JxUUdsZ|5}SaB7Ii`!?;e>ycmf&v<5+8?C$WSboFvw*ij1 zHPLq$ef(hT>HWNamQLO>ufK0Tojz&d?zrP;+JcIj_iy+w+ADNRs#Kh@e(<R=O>Db5 z*ItvQVWtkN-!yG`9y{&#QNAPdY-)cQ9pHPP?mt<1O%_XBQHhkIbMVL1<^J=h2=pCw z?X$0Z^+mKpJm;07b?vJwsSc-oHk`P4zfj4{bzb{vzq$LSFzcuNXPT!lX+i%?h1ZJq z+e@l;TzH<ql)Cng--=Ir7OSqhVEJ~}gtRZyHux#rGP=JdraMHKM@Y1DrnczHx(yr} zmeV}=#Ow-=-b?LZz3^wEljq(`Y2j>>+U4)>h;g?NYJIxbxbbrHw6r4^lKU6)1zoxD zL&&9CeE-@P!k1qkken5{>+6eWUvDQdI4)N|w@&Q(e&soPKGtaOI`=TZpa0j4b$KuE zY%P3!?_78tW8<;@GMUpRN*vkWLT5f*_rCqcqtr?FcTEf1{BuR`)o&a2tqO53xVh2# z@HX!(z3fAeJ>D*oja|-TF}M1*V$yfr$V2RX>-03sT~Dg%pIB7bV!d<qorg;fEnK3< zBayVmc;d9mKGSWbqGsF&nnWh(p0|&VU&qhqT(CXmOS%!?@sr-~Z<lt2xVKC`xgmK| z>hfJ>(d|or@bD=<eBtmvXyM1h$M!Q^*t%q1u1veW(7f$Umi=p<ZoAsOd~(A|KR5Mj zdM6gA9(rrwc=^-(_niwS?)tfL#<?vCJKgkW=!)ykv{G$cDXurm?az~Uf8A5Rt<8TL zwl-GqQOey%7Q2f+ohaH?Qm0rKE;T)@?grDjsJYx1e)t%*pW!~5@9Nz9?w*h8<n&sP zDwCFk|BZ@AMEztgRW4Z@z1ihyg$}FG>eV^x54{VlJsQ&KU;gvhoetl+yIZ-eZ_Um6 zqj59S+SBt)t6_u9$?A~5EOPGA9V(oLkxiW;A>pnr28>V3T6woC9IuIE&XIrrR(j@{ z@4aSedrLlZb6n36asRbj{aDrK$sgw1KHjqRpYTkB0R5ML<afVP{u}!>Fke>ArSOWk zic6!U>SBKWZ)rKx`uub&rU!3d>KZ2yllE?7Q<1gluCSvl*F~=WG}3pd%21g6(sS98 z<}0EmS5~GO?LB#=^V25%sWrEi>}DRnz5R~ZX@9?;H-pq`F4~((F@>!D7<@hW{DdQY zy*r<Gue)owv#@Qt+9m00s%zQb=hhrEFTGgF$+^wP#J10};^J3}PwT$cl$jSiy!tM_ z;@{P{__WJ!wBM+zNM{&so?7s;^fZs4AWwkb-8J=d7H?HDJ#hPv-Tia^^B#Zy5@o%A z8_Ui)&(*SzUOVAn`{K9#+FUOCUt2d!x&MiI`G#%3^#3y$x>(k!-I{vCJXq@4ZlkYN z%ev+D*51`w6DJk$Dt(_iZ|tS$_${dwr#&JC6y9wr=-dB&*SvYL+4q+h-;sHKe`>ea zqw@?cj~3kdvCSqzgrP%)q4Ml4DfWX0x6G~iystk;>MW0n-S3&t;_mo<OENb;bVfjG zhJ^0dPds^{au+#H?KD@}ui!f`;_udLYG>lg=EwejaP+iG;m3=c-|jZojb!@Qy}cz> zdE={q3C-bm&K`>|O{#dX%g|Ax`YfOFU+v%F$Hd>B>3hdH_4vBa+r$nxJm0M@GBNX| zfBlWf{olUM{qo_DW$owx^N%jbcayMdz4z*0l&J0bI;M+R*6nSQdD|jq%$qgqnN9_J z75lBwCyFlr9=i$N+SdE8&bI5|`HS<)c&t6XO!)f2qDwc*<#s*S{-*o|;&)F)P2ASJ zz2-{EipnFL+mG*3{?v8VQFuqv!EYyD9Ccc9SiowxQ{sbH%4W}REmJ=^*KCsY&*+V{ z<~Mwm)0!O251gF0LR3bQ&7gU8_zA(1(lz=UDmYu5W9K&cy)R(=!?e%Wz;$&*>b1>z z*>9cdl3Fhc-}as1#k2l_msi328B6=~wHbq^Et=WcbY!B_h150gn^fntR0uxx%4@Z` zG$Ve&bDI-3)%#*!URfi1?9w9zDV2wYoNxWVavGfd?Qz95U0_N82k+h}>o)r(vWH*D zub11sP4?BIZ-@Su=URVxUVmWQZqc-d=`XTdPFbCh(Y1enRr~4f3Z*x-4_|&x)9Nl! zdgk`!)8Eg1iDBCwMy=zvv=!WY!}|Y{xnF<Vsr~#V`K`r#Tf{Ou`}K8AS-UwLJk_-x z&OG&}rAmxt>fMQ+9B*dsFHUX@Z97=L;Q7o2){8ST@~(R2wXM}%GHJ@bnNg-58&7Z_ zX=oL{>Ctl4V9t>_w=6E)=y&BQkSgZCA-(jTc3<qT#oiay1;lO|tFz29Kbrg{EG%oy zX<Lzqzi<7S3~roVHCN%&L8X7+v>r~V-J5ybe*M3VYg2YzeC#(}dY{(HX^ZtzKiLN= zt?~YKzdSQ==fk~;H?L|+Z{9t5Mci(CnH!q}U+u7)<mtZd{RFA&SNBJ(uNQooUDot| zUGUvz^SSO*j*E9j?R+YdZC`cx(LeUdO%rN1)PGF9|If|J_g`g@;9SKYFBffP`+U7| zhL*1V?u`Z!FMhHwJiMc%UuzD#{gFBRhs^W~f3z3OOS<z(z3p0j#9pbjF|jYyvzsr< z-8;_cxUAyY-5XyS>mI*;@jAZQYORRs<9hDBvpt?}S?ynv=G6BfX;qkCP<hp{&7DP_ z2fuExWKq@>*Vg2I{%KwJ?7B%?EtR{(R|)NMbm(L$Saoy7EH|aXHGIZjs~&Im?+##J z^I!(gd9A=AhEl-?>;FqV*lXLMn#ocuvs>u@)#pK)pYo^ujAlK3X~hvGh9i@hCI7Fz zv@Wtj{&Jz&D_i$grgeLEsV!U|r#|JCTwqsjT7_wbo$k)^3_W?fng0BtHupU@ikf(u zntSaE6>>II{4v3GkIFpdsXNpHl`sBqX<p*~@us(Y3-4uqMy1bjjHead3R!ObIy-mz zTbt5}2Z{>*%Wl8d|NY5tlUtAS_Z-@Ez^mrh1K;ZKdWl5aBZ}ea3~@Jhc_!rVpLxMP zrrMO-<ILCG&yDQ13;+1<vb$TdTB*x!LHnV{a<iP;8r}!l#9j`2Rl9oDokh0GcFeuJ zTE9QRQSz3wukNjLTCAyiPxk6Odr&t2ZpEFCclqu-5<C~<FBNeA$*sxkEF#?T($md* z*<2ip8tk`*)!aUuXY(re(XC(`i%AMXAEG4QsZ|%x3RCa@_H72wyy>Ui4d2|__&L}| zvnaOH!{OYt+ZWFSsRur~v~2a`1+~wN<<*vQ?z<fxuC@B)^!K69d*zi)uei%RDU@t^ z#nK@2-cwMZztQMo{ib@S#^kTzbL-w;U$ow1jm-QK-@Q8jqdtj7SA5&#Qp}^%a`*2J zl}A^j%zvKx(-OJY?ci54-`j;Y&!d;GZp!=OFuh)@S?@&GiU+G(>o_kgSa@6K%vqkq z$_@OA6MnU>j*JXRab$mYYTi1zO@8lOtp08Ds-3?n`}#`npKm5QItT3gle%5yp-REQ zx7wQz1&J!2`*8A#ZA^8-A(0lZqjz~#jr>~+F3nAuCv0fsFV&^^yIybdozjbE^m}K; z?|1ut(8irhe@o04xo%&xo$kSbclk0`1)sKgv~^+4jOZnLcDJsYZ?1fuy7ews!qQt; z#n16)E}3~C(mhi_I*M_fv06tjyQ|{0lZ{O$O@D|Tl3-G8J#5o3VPe^DzO}nkJY6;} z>ip<D=lr+xYjn@0urSCKducLAEY4@-UGQtkOX;$5Q7ikeE6+Jye<!_6b^b}ES&b+D zv{e<{x)pu&tivDQl}9SpzS+7yFLizHw!TAL&qTj?P7lxIm=$+it#-@&%Lk&HJOzK8 zO1Q>Vw#2+O#B=ud1ci#ipA()$Un%~%OyGRxECsH&>CAus|GMeiv6CZgfziz7?{{{* z+tIc{r2eXnkN%Dq7bfm3-r`tpm@Fy#^6a$uPphlk=eIB_mE|!^xt?9Ir})C$KWW}c z%w4ZGPb=5d%2;~lb<F?zOPk-V(BCF+*KPOu(<H&}PjAw0t;*gPHv9MLx#gN4{EXKh zy6pIKo89H^S#?{pcAmSo>Wd(|`H{<t&L7;X9?5VhC>meA_}*P@(g{iN_nl=+F3Vn= z$0t`JJmJZ7%aiY?Tin!VWa8sI;Z)<!A2Yo#Qd4dw<BJ1^g<4ZjeBr3d^6GiW$1!7O z)-j$18zmJd*wuY<^%hwx?k^Y4dsh7y>+JcDn3jbz#+5$bIb~<_niHbYryQ?r@q09* zsL`wPppEY4Yjqi&&-Iu5S@iddwAWdt+*6XN{g<b$RLQ&VXmC>Z)(oZGW#Mf1zqw7_ zTfJoYrofBO#hYU~(!Z*8l}zLRYP~UMSF`!A_}aS<tS?Pi`RzzVi^=WW4W=zOBJx#c zojjtnKKDiEkq1jN*a{<@w46HLYpV*slvA9b^Y!DCn5`$AQqH6W&sDOxm}6+%d-39w zr8^VX9r2j^Ps?yp!Q;4DQ>A>j&wBLk(2?lekbCP=8vZW&ePtO>u;Qn(721i}I(D}& z&$c>W_VkW_Mbq^2wfjDB2HbsavAA0C@R9^kEyHUup>Y>(Pg?QxTH)76|4&Wd_<>cW z`;A0*e&SzS9WBw|O<5*+555W<^Jwko%4C(W`0US-R^RZi&u#KYnaZs!@8)dY`mEJf z&XD)&B<9LsUJ)zb(95A>nex9TJYHbExXtU^wsjJAp%<*1+g=4nJYha*V!~Da|IPY~ zzAd-kq|HzWyc9cKccb&(+Bb<8L^4h_Pv`p{B^jx^_4{`luKc!_FYLLpHf;OH(HoPs zNvlaq>Ds)whsGQJ-3h;R>BFmY4;Yt-FiDu)?)h!0cpy5$pvl`Rbft0J$Nt$5v+|D} zDOGv;d(vsIBi|peGrW0hWzcT;`gyw8UB-wvscU83625$jYZeyaIL6LoljLeUSN`cl z`yigQ|4YO;1?`Q$Yv1d0@fEe&_we1j_{SDE?{?2%=j7`uxn6no4QEKsOG~|Lm(QM^ zk$>H2+v3N%u}T)_li$VW+fPcXo3dbSexQl9pUlo%)1F_?T59oE%%tz@W6|v2%PuXF znX^T=$0F*^`cD&iW5V`To$BP%`WRBUvS&g~!N&Q|H|~0^C-22O=X~A1svHM9kEQc+ ztb~|Mcink#iE(knhw|xGT|fWcUbE14YM)DcJOktUxTR%NJbq1>8|ZLeEJAm|S6+7I z7sd=pidGWOA_Od4k8x~Fo6)`Tf^Y|K*SW4mudZKtWprs3d*q(_RtZ_{bsP?lwL=5C zrk&j^^C)D$l<ThyjR)q<MN9V2<NvARH}~8st!06kJq(-^3v}M8S7^+fruDMy!pTeO zdS}hj>Yo+e&rIVze85KPi}JpgXB910CyVdYz4A%&-c)<j^66(*=K0-J^=_0qY!^0< zL%~u1dv0d}XT#<<7kd>FnjFI}O^BF3OX|cI$>0N=CtNrtOYDBj|6=Rfm#S$R8Lq~s z4zBRnV7#zp(!-^%)3>>P@tSs7MWj=YkulL>O%_Mvxg3+7ySfBiA{w3jj);r=7GEn> zRpnU{yKQ;-``A-U#Z^{JiL{G$_|I@(<x&a%;gVgJ-*Ol4i~PPbVe!+`zUn)VznrBz z<($pKi_07@v5K#rXKV8$Nbk<wmkKIndhdByYEJ9hPdx4RorU#&#r8$)M|W`*+LaWn z>|&nrbV-hA=WG3Yo07BA9UeG;mywjHoj>`&X#p{pe{&^`Icm}>tEzO&wyImsc&6Wz z-rRZ0NK(00S<R><R>8jD#rcpYk4087-Vb{e@-<`ab|V45G^gjWak@HLe~x<i2%05K z=vw)~sHt<_&HslEzc_v7?ipd8$F_zSww#o=QZ~O3wz}$~*stX?KYOUZ4n0v(#%Z~{ zWA)Y$fnEQO{)`S5@G*Cv@TGj`s_7~(syL118Y?5jo>fSloY1^yw?N*z9OL`S=F<c$ z<Cw%Yu<q$?R*e-n`9`(g-9nMwy2fhzTIKGFZS7A5(^QW%-3p8_-BoHaCBD#F{CV!Q z)p_DSf{TI#8vWfC?^~m9FXHdvY;2U_?y#brZIkwH*=eGw^N%g8m}~qfT4)aE@4giW zw07PwtqF2ayAdJ0V^2q9p2a;`zWjZkYRmR5Km43uZBggK?O)VuWSn9SxSUuXv9~i~ z*_HU%y%taWKQw%3EZ@X*+^>kyqHxk{A1g)gXIC<$G`rhxtmk@jVME2;CCRC4H9YJb z4{}&IeE8<gvesQP{w}u!1AD;9tDNZ<OOO1o5It<7Tk$E;`{^wAy0aaNPMgnubHUl< z>!L`e_m8e+R_44^x1L|Qt#Y}v{)czB>R2THGD;?^K0l$vZE@O(QDpMz(?a>4GIwuC z^0j|j#2}RK-E<)7$R|aWwVx9^H>dWwKXI>lY~5hN=zUU8Q1QM{-dQi7pNsb^E%un8 zT9fVJ=5b`TY0tY4OGW;dH2vk&nyapOq4;9sjC+m-N0vvZ{AMoNwcNS?r>@b2#JftI z!ltTmJ*+}Zd_L+s>U~RiTSAnlb$%2qb6{y{R%<uWiHzk`&G<d%)hq@l8@aWsWL^Cq z|MM@C`Dn6P`VNPz@9hVgt=qhh-#weZd(H%%%zK-peoOz>-%@$gEMlJV`Wx>)=k7oB zq(Wv(s-49w-UE*X)U28qto3<+F(f8`p33+7a>VmfXRW#qh~L>_qR%XO*W9|Zt;5&W z;o7y!_Ad%T;>-7Z&9T2?(qCHDP|D@zC1`mqqJAwahe3B`=kr71`4=MnLTY~gEtL#8 zylkoO?@tBWUv00r^z(~VQ-T=d=}nDa)thyWN7sd(UK1egZ#HjBu7&)$@bHuv-n3Z{ zQkXu9XdQYJJXhB|d?V}Bmyd1k%{aN!k@Hsetv36{<IO8)oz>FluGFizDaOno@W`Nj zTa4HfmeZ~QCO!fc2mZ}n*fedfVy#G@Qs(2UV){z+4o|t*T>90mxj67@V&jWPtNPkH z;;vqQk}ze>-7m(!WOIyOsLjq?#jp3ku4{5_u#wQ)1r3ht-k<-i@#_n3czdCPSj6jF zU)fHt{kXyL!-j7DMGUtq!XJBf3Gmk*ocuaBGPZnH$&=Y3&W2lh7OZxa@>}(cFJkRn zZvS*;eTn>u=YA)CW^Y>A+29@X-09&=+4V~uuBhoX-4uP@ys!B2SDhy(1ANTu8ruvG zubJULRb=n_g`SS(aq=IhUeh|OeAB$uB~s{S>y=#vfqVG!qudMb##l|C@PFS{p}sY` z3m){F%=^I+yXyMehPVZ1-|f13GVgzNT940W&f;UC!nw<Bwbhbuh7~)#3$Y3Fe*SnR z|A$1)XSYi$Uo1M28y~an*U5Q#j@K*Z{atQcu8?4?rT=kF?}Q0jCmmC7E@IARe(`?s zA{G6E)o(7#&zP}OeYRle{Jw{uH98|@-rU)x<g@SKku`5-$LuX{J?JSkUn+2h+7aOw zx6g1`DsGI-h}LpQQZ@BIRK<1r&gT=h-IeDqJB2gVceWc(exJbV$lbxj^QNij`0PX7 z%ab1KY^prF|J#R2lJm@;1bI1}NIS`Lh3Aj=LCeqQZZo`|rNn(;9kXVQ&Z;z5xx&OF z*^4#TeEt{ueEqyHCw0s;rMcFB*x^3O;ZI@L<AljfGlKTTWC~64c9Lrmc^q;#!+M#Q z$@ke@>+X~|h_d|Af6=vhLCLQNRiOfZ_f=+JxU0Nidj{LVmow#q<~-Y`XD{vNt~x(S zCxV0jxZDwz<EFt4W{%9~Ihro_2?ZM17T8Wc!@BF0;p^uWUzW0`hFvKM%=q(l-7)hh ziElq$9dA~A*s5{utz*dtD@IAJg9VSjzn0q1CC|!#bkd{A=h_}V{rvN@#z6zu4PV_N zw@f&fqGQ#ad6MhLgD&%PYvr9dER-Bve>CLUe{j2Lb|?R~Z{AO(#_c|-Il;~6{x~|$ zUZl11_MvaSd5^b#72Q|(g8$Ur<GWX1eP{BgEjE^4@^13;X$N+!HoopHeCyeUU*a9h z|NT)2tiP|}ce`I*r!si=wri~YdkfFVJ>z=Kq_sYG&C*MELoKGgbj}yq>wL4|l3|s5 zp-xxedhw0F?AMu1o^?6x&VsbLpL4ceQ+_l%s^=<)60bnPjN{+eE_rkF5sS`}-)gBp z5`vo<%{+Q_eC)L4uUQ`HPFk{Uk<Otx?^qsw%g|h&X_RK8z4yTGgNEfBbbEC_h2+n= zGk>$ie2sN``g=|>GO->$KdZU(>eH<q8lU!j{NPpY;g@i7#=BP&W(LmkH!BtLpR8K^ zN#v1*S?rtYtP|`Hnm?t;OL`w=lg<9=JR^!zDr*Ms>8sX9K6OPMQD?}v*}=AvBe*Jw z@rdQkcW1RCzRJBgFx$>W@VTXYY|6D~Mpgfr>kerhP~x=T5+hPOr~S}9&6#H^Rx|TC z<xF_IGOFjAO~wbkf78NU1$1X8PB54HB{uUqkL3G1#*fdnKC!pR{gYo`AZl07cgE&V zdss%%xBL@6MkW6Za_2L(UT2;?uR>3<J#O*zXXg+9u2{uZ<8&prZ>sQJqcsJSJEi+g z<i3`MAL7_(Blq(2VZ$90;{H`Uw%lm0TD<3M=AtdX)=k`Kq4qygylzdC&>9V<_1D=% z4m71|EKpIhV`x#FHtnwZ_9hdPb*F{ocO<*E&lhJ6OmZ%Nr&io4y!Q{MlHe<z!%II~ zHJ-U^W~E=@<iMXYOVBEuWy|*P%ZrNCCoenC)x4iatH`dk&_<iNyQM)jXsT`a`$?v9 z0)7#<s?#e%ABXLoaDb!2_nnkHgUY|w=6g%N^=^vU8J*iApX|ujCD5#L?BtZr2>DZ+ z*2D{a|G)G6_ukmLX=jz>yU&F5sbzIJP8Xl>b;a)27nf;^pV=nou6|+JYq8MD`=9LS zyYu9s%}$f26H+4-%hg3%PE-Ylgxi%ZbTyRS|2xA_yHhIt^PD-aM5WK0&MTJLWwY;} z;E~N7t=f0@9b4S%e)4F8{FKI7eiwRv9C&B#yvC*ATza3FI`bZt*N>ei{T7p%U>taW z<AAv5gwW#ai{Gs~Ze_G_mxJJ1_Ge68dWY`z_xp+$OrG>&Q$^y*WxWn|)BOJJnk{a} zC6Rch$Y$B=gGIGR<*r8ex0^*770h^?I`0qb&09YvY&XdAFXfo<B14HgBhT}qb))+f zTc?1WKi<tR<YumTtH=NB&*^t(T{j-%mf+sgws>dt^q-b*^rqas$m-eAsWvI%+>W(^ z^P;oZ44G5zUR%`j`<f`*D!KDwLB+qDb?()ySO0tcnP>5ugO?9-%RKz6lgqTLZ{BQG z*KOAe=cJjM1%y3d?^+wJWa;U>DF6BVSsa-X-|TMbdTe1A=Zs2HR*gEy@%)?MF8RCM zHfe$Z%27`ByDqyeKlW>ias8>UIziUUFScE@o8shgp{x7PzX&DKYb=|tY*bfg?R%QS zs8IXb&))wQGxNz6I_{I18E+ll|9G28!hsowb&gMBo>8-D|HmLJ^^HejQ$o8FPia5y z4d)O&b7@cV`Fu(D&rQd6ZnF)V{XEqFyms!^=RJanaUX7G=Diaue6eBfQJqGvZ+i}G zvUwz$UGKtt;nB^H3!KhHemh#*r1++K<JDK6x89DsaX9~_&*mJR#TpyqHf?v}vTBY{ zIqW`N@ysnN^+iDeyB2?pFZY->(LrhXZ5_AM^Cv%jKJEPLhDo1iPq$nBH?pkZ>F%IY zGgnW|=$-ychV`!72ByvbTk{H(_uZU!%=g*MEU7f6^A$GT3g(lyd3f_ONvU`3JI9ps z{@f|A0A8l7Jx4lc`KQQN3H<xi_&fOLQ|$}Urm~wKo^AiWhBtbd*4&*fe>z&HZunH6 z@U&0;zHfL+%{Tjt%rCrsS|guEh4js~dTnd6e(G8C_dl!GhGx3|-}tgJCAQXTu7CC0 zg22=}jG`)ga<Vo>KXthp?_=S4&0@!~`?_*=Ys+(QlrZPV*+c~%x_w>WE<a1*2|wo@ zkrwf%C58!6AJ(pu(>UEa?^nq7Rlnw3acI|F>Aj8f!TxtHg&%jHzr9p|D{9&)`MHw$ zHXBn8yqxvI#Cn@`$A@o6mieyJV_o6*Vb;P3)!Q0ZYwEjaZ(R1-X;q|}^YTrMigG6z z@_+x{U+(knsl2q#a&xwf#53&se)?W(_-rxpsUZ922hWPU8;!3^><O1YtY9v@%;2{S z*8(<UuNBqiM^jHPeU)_9S@PyJ$y3j4=3JY#Q}wKnuGg;6g|Z%se+)aG%e@aTn|u2y zmttu}jA`l-Mxj-AlUKL7?G~Eh&at^eY#Mi$=4lU(Z)$5?QtpTBJ5VH}&SSARR(Z~u zB8~VPHO^~{qbH_{F>GY`$&~fO)K2k-rPxO1{JpRGzNg7ZHZIzzwtmB|Q|dw;ynOd6 zFE*Y&{a3X2pZJb*Yo4vnzqfgN*(<$-b2jh4s4b4}oz7g#_sC$u<nIO@E6?uh$#*_) zU?r^h<GkSh&IfJ(T6kufoVxzVBHkoR+2dHU(XFk&jb+rsQ|J9Yv#$M5v$zh^5A~jZ zE)Of8*1pfK33w1OO*rB7?^74w&fg<+_%^GS{P(kU47Pn?hKJYLuME=(o2}pSS>wXd zM|Y-{{oH+d&!d}nf7_L6r?@W?-`H0BsYr3jnteA!>OXQ>RzDSAv@u&NuT|gL^PJwE zTb7?9e16`Qoga2!bpumE;fD{K_(Ut8d%Ruoo?CN9?kcS{|EJa7&HJ{JJ@xdp=n0{h z*If9dvT%3vvvnqu3tzOyS)P^Me`jaO=`eYxeY(5zr|H?bWqf{;>f{mYs`!u9^7m1h zBg_4*GFX%TzTQ5EZ^pLwo6cIRGIa8E#xCgBQFW+(p1VLZa`y!z{fB%U###qo{@K;8 zePUfh>V}>NkCv91HZNa#<O2(rvF*BTch?zY%bl6pyQ6x2?9^>HtF7ucU+bw;JjrwF zf{vSV{0Ya;*=P5ZYg+o--ksyw=CtR7tjn4Iv-9O={pT@#_W$hi<!cj?K5*6C{;JM( zH0w08<F`#0zHHz5>Fl<Od%Y)?{G6uTk@I2aj2`U=MWW_%4AQzU<S(lne6=CbXyT4Z z+mprgCI2dmbv=LdqBMHpVJ@|Y{`r32JuQ;UH2M~ONl;BobMXB>XT#S3kLl~`<{opn zvCxcnrZ4k8_iuSKlCEm%)i8Aio?BXZS+A*QZu4~c8)6&2`TNX0^|#`6w0VA|b`AT& z)%^47JLP+OWos8m<<xv%8@+vBsW$W5-SghgTfgi2>i15Cd&<g8|Jm<2^yJx&)hBm! zIWVT)y7)hBmYg&H$MhPjIX?}>O6N8wyEjTCG@a$n=RP6BA}-(ZYOa{}W3Pb627l^I z#TuK}*P6;~WbG8yn-F>8-Vezs6{^}N-c?I``0U}EuWmO%w4~<vW^o<;75C4X>qSkw z;8U1sE3hW=|C=X9Gk4k?zqZ=j;s1f3tIL+}GTQaRWy$C1FRuRLI(wyZLUY~!)Z4<2 zbtTD(1z(S{>A%=5zWLC+g_=8eWUSG++2>R3{_yj5`HmBRINTaP%l5@@I@(@n*MH-x zY++&Ur5pQ|j4m5)c5Yn#=~3IplW*&;yt#fd!AiYMX5WDlLF>%m$@Z4H-YaB_v(BaZ z@jpJbcG2U?^9$bQbnE5UZTao}bKZA3PLA7tDUVJs4|~z@$9zut!DCMS<(a8-W3;|J z@V*wtT;yMOcngDQ?#-b31zXe<=5~4?eCTTwHCyw=vx&M}GF5Gs$BK&Zx3)Ot_P;o? zR9D?YVqazA`Uh*~OVlmg=k4_GhnnEk+U%Mgms0Ip)7V(D;}0JD)%xXC6<da$b(K`@ z)U24f%a(IK$(oW{Ast?D_qd%(g1YN`?T&e$=2x0Aa4705NR%s_#Ky(#{eF(!=lKgV zHm&4rY7;zOxTxpdp#>crfxnrr+3(x*k$HlMiV?Tghne;P)%`Qr(_AaszJ$)Sc<Vdy zzDbK$={e&CcT|5a^ZBXPv2CFZtIVT_iM(1IC)sw+7k+YrcmL^`3CfL64UC?;<u7*U zvpRc1vWoF-lGTa7d+#2uXcN0}FR8g-^oOmTtjq`Hlj}K!R18jAZ#rXI7i=Bzl25^K zLAK2+cRLkDN2|}gj;5}BQpe-=BsjBY{Yv|PT2|F(tHJlL349^F(~P?dMgL@8P!`gd zT0L#krZ*pS%B24H9+{!Bkn6*P%S(-Wxex4^E9x8i!v3?phse^Mk~Ly;-Icw{to)lU zmIR-TJW=94OZLR+|BHPV?F?+49BZ^eU}w@tqsO!QTTU#zqpJAey6pU2RX;Z{c<|So z+Er}kKREB-jcL9Oe~z>MzqP*2_nrQ}1N=Vj>{i)-#Q!yApX=?}-yNo9+#)_hOrJxp ze)+Aa)<q@nQq|syhc4KC_v2gs|6iQ>ezF~1AhzbqhlASTmo8q^%dgmzcl_Je;^xiM ztba{PZNB#)ZkggPq1u^MFYivVI4#@AV`zWl@yhpCmaKR(EAr93`Cnoxo=flK^ZPXQ zG0Wn#NY{O-%_|H1r+0krthoM1E#AU%&!YXub6-flWlOHyu;q2J{hCixdl{Enz1Th} z_U_x$-ODB&-VyX=;_7+fpIPMEZ%Y;hWj}X5SJ>CJ`>9TGoz}#o`BS(2^=7{0plWL= zDF0&qO{G<nib}FqdYtEOovC}MGo#@8TA{9)Qzr@9?oblBHsx-4b$WZ4iRK^4WsTDe z_xkS6id!Zod&@Q8x2I@v{;^ZOu3wj~Zj|;pQFQ5<t9R<}bFaVMJXy!5qp9;#IirJN zyV-%MWqs<8JKu$Bu}w{V8~bzLn?)brGS7)R`MU2>CHwgYoIg|_u9u!wygoGgWk}(~ zPiMdVnXR);A;2!{*NvjJCS9u+ub8r^VL68z%l(C^bNJn+74OZ7>B~yIyYcF&s$SvH zz_}7H-o)+-e358ebVz*jBB{&+9m2_c=dC;6IptPZakl6FKJy@dv73h7UfCZ^eaYSC z6}`e2BK*a<T1_fHH6(|f_&PyA<@(Kwa&LZ=z7)4rVyS6+753zh_B@B{6R)l@xXiLS zzr?lmdUfPw`M9j7rE$+oKFm@1aBlOyHz%*=PfB6aTG%}|WSTxpN!+!#Vn5$T-*e4* zIq!JCtlM?B@Z8RVVwD){eBX4v&|43jIaqpAw{l-Us(kgXaJNy@wi1P<8q?Oij}+ma zUcUC#sipB(*KfK0_WJ%fanmK=)?1%gJvGi(cgal+>7=PUsuhKwD#-W$vXa^_@unk8 z?4#Gx<IB&!SH7MxKSpVRMB;S4dJlsH!@28@MQynqR%`u9I{mh3$b@;tlc%lnD_;0~ z!!yG$8TFi~msXXP_4Nz?f0`WIwIo}|-A-uV%Via7l<O}0o|_q(H-Gp0hpA?_uGikw zymeaL+WfA_sU^-!m^U>kdUob>b|+PM$4oT2%8)Rzqi?oMx}5pBn!CC7Z<t$D(zRa- za!DQcou-=0^X;Bs+rL}2?h;$w<N6;wFzwv1{`0;K#}>76Zb+}Mm-w_->$|A=_rLiP z_8(vIY*Fmo%&nlPzW&~m;)aHvN|(gU!=iO(?b^<tSaw!fV1q(Y+o!{orO%3QPjx)P zBzsWyMWveS)_LcC=4U29J0l|R?(EgaTk=$#!Q}nc+_o;ijqki~Us$yGdQ7#&OeS76 z%ZF$D+$US!d-LLr=CtEh2{UuAha9e*JX`Ve1@?EV?*yzeF|(8SaQ{bGT+Sb_O)9d@ zSu9h{TIQ>)zIOl7q`7l_?6yBxn|&y|VfVZV!lfApXZmwoYTCYmHI6yRV!=wG?>}ZA z5L$BL&-6`y3lw#NH<xb~ej#z$QC0i3sOa;!Ui~=dHO1%LzSPD}{;_?}){nk%lT^0M zKe{IEMb_hbDf>namlKOFecQe-HEy@moa_6HQXcruwm;#e^^#4Rk>{$&Pxt%(ZdhA< z{5o6g(EUrVe+6zkx?t9e6c)SEb;oRHDHe%LI_59+fAOnb$4<-KTIMmS=-J;n47bnS ztckiFGO_x2a(?}k=}oH+K00<>wJUe!$HJcTSD*dzzUQBjsCsw*1)&><n$}E>vEFpM zMpMsfF>7V@?OEAP`#RsJRXX<;1^sV4*1yVKHgJ;5^L6WOZ%d0?Y`GNh^u|Qh$DDjk ztL<baPff_G{94lCtPmvO;&9P4`0wJCW-?c9nao;a+xJXnLC)<5UwX<v-CUg==-2Vx z?)TQ+XA}N)t4r_aDh#~(;Q&`p-pm_mi&IW`^nUYS+o^PcsqnzWi_e1{mvRajS#f#y z8GOFycH@2JHn+g7KccQrOWwXWQuF-mt=}(iZ<_j2y3fw}$I;F5!n(;XTelsPE`K+{ z?wd|(`u}aF8$V7fDOxDsZTju}lV8FceZw;zRIac1d!S2o-g~a&95S`*ay{Ctm%rAU zpIyEB-<!z)t^MwzA9C-OXnpDAw_y8zvGqaClwT_tGRxn*);sd^^tLruZ(7QWKGSe$ z-N8QL`SZ-r9d+T)e<W`ZI<vKMP4(a2MJtnT%gFbn?PhCtTV&u9_27l{!5C$gZ=7-K zEl(t~e6maX(SPLeoEr<~-WTwb)zWKAys_y*alXXv{rfLZmDZY=!!s-Wvd;hHHBt%| zWzl=W)y(JC>t4SvZ%`#=`n*oXLahJY_BBsWo8A>m{8{vz_oh?teD*)5rxmFg?MU^W zx<K{flBrKmJI*@%cSrO_a}V2Dm9{$qnhG>+OU(>xY8@CZ9{*V8zHfWX+>XO;xASV& zePr5oaND^aE1UeIpZ8A9vgM0D*~*)Etwm5mG2+^ZBM;7$*DyveF`7{qY>_tWigfCy zxPQ&_Ud?fzcDAC$IDc=tOiAtI)??h;&KBotWW+o=!#8__qS&@c8{f`axX31;O4+cJ zohPm)a?4uFoBU^jjDDz}$cjn{*(G7&a9#T;pU1f`SI*87oWfWr#h&RQxn|bng^F#5 z`EDd^t`nPh`yaDqa^u%`?C<{am~VRN`1alw7r&qvzDK4yGW-c?V86bYalc#lp@+u* z6F$@&*t<~F?sIh8!#m~g`WI_Uws#uGx;U?@n3EUhSnn<U_KNWn7lvOs(?#|=ELgU; zL1E*RxxdZ`hj~^$_-obh?;$(0tawgkyu`t{lDCVw4y4u{aTMC3EG(}QC-HM(_Cp4f zx)Y4Q-u~XV%JIYB@7g>4p6=sk5BR=p|3-Jkl{O{3{IVTi9?HiU7d(^m;LNW&z%ID( zBlEAWsg(iCXS^$RcyshTi{eq0y$jw&E_9h6c)$EQ`}S$73fi%(pP9Ml>=c}``Jh?p z>1aPa%M<4FDsKBW6+CA8vy?MlGI`n_JCg@YkB{;0+;d!cwdteP${#HKjALb<&-TB% zey;4L)Yt2F735YVe0g!-<X)N2_tdm$cX^v-c=}{)t3o(ZjZXdU|5uuFccS+7)9KA} zlaiYmO)RRO<jYyUa+&^aPu1~DyZ7r&*ez>mwI$>G&+a$Jj`#gDm6nhY7JFcEddfLl z?R+Dbe^x!*wZ=ZvtbfaBz3z+okdU7C?0)>VWzx<px19S^IG)(OTchxuHz(FpvG(Wv zzmIzrneJ?x>ODU;Z}uT4s}lyy&lfar3h#1sWWIj??aWi@?eB}v+k82}ZvW@PV)-1K z_<5_|ufM+QJX^$@#&o+sC;ry|Qatc@>B7#JPUW#5Hm#N@S^ImA_%aun?&9;myOY<; z%>HL<uTkCq<2UCIf%FaQ_cW=n-_4wTr<uQ@Mf9M^#b*AZw9h*^uTR|lvvco(V7_@u zd$d9qo+~Yxds=Z$fJ7Xd<#Hjvj~ASarhmHNTvoAe+PptTj&(0ncc*{y-6|XEUYMz; z!=j(rCjRbYckb$Cl7frwq<7S~cwY<*zO}2E<@-Iya6MCHAI+-oT8XTVKN9>}r><j6 z@1Db=%}{Go^NjQR^GT{%Gt{^1RK-R7(fGK=O}rxUt7W%N>csp{SBp-UIovfq@al!@ z_tkHg=l+?=elNIq9&75i<10E$jxC7`{ZN$3TBpZ9ldD4g{i@AZrCKWNze}Il^yB)T zct!W7hPu=9Y;MF`7o1+?x?MrC_(%AnRUP|ND&_vRT@QI@{^BqDuhs1NGiUB>4eK&~ zpBUHpwWmMmK~1sQ_9BD3TOvO*@AsZMdz$9l>JG*!%KuiZTJ0RVYD>?FRiV)rwX)-s zO7FGL%F<K)u&nn(QQ!8TF^LKM+8#zWoUsQLGL*XCaqDV*=nyrH=)JG&&D6&D$Ivfu zNB>11nbz<fcN?~U{idMfQLx$e;$h~OEe~q{{FKRDx?9Wix9p!(kz^Jn<#vw0Q;gRn zY;rySeeT)Maqp(N-`NtgY*wjwpLcYcp|`Q`$Jq-%sxz=(Xi4#ux&7n7tV8#6?>1FL zhw$<p{{4T~4zX?AGd3T+zn@j$&HopD_iH~(Gu)TqPW+LiSoQUSfW?VziT6Wgnd6-V z<bFTfzK`?O!@8()>)+?kX#d!mc31cFt*q$3cf!ww<yNoTe2b}{siyAXOZE82`3hSO z)LmTK%D3#j>6Z(Y=Pv)e!lXa{ZwjMq>bWY91v@5M9;suHpLaOugQ-M=dBM|Ttuq?V z&;2d)ntQ@Ui{f>`Y%|2uS$|00{99K1J@{Je60eArCud2u9PG3c%Wf0y`n^us`rna{ z@@=wz_RP;e_U&YBNzru9BJsJ2JIv;1Kbv--<@B9C`Es9kzh3i9`y;iFD}J`OY+{Ut zi#S(rBF~}fJsXW(?Ekv?{pFJ^3VVLx{NerkZ^%x#{PFX<8H=o!oqt@vXTnDvc3TcF zzo%a!k3ZPQ`z3w#teu)EXVzC<dT3$I*KhE0TKUqq>vCsbEf#FDowe@TvHPF<A2-YI z)11d&ydb;o|I7N5=XFlS|C%`Kf5n0IY}3BSD3{6be^qx0`^4Uq|N24Y{db{`;Y=~d z{SL^+U2B(qw=wu+rKp-_`3hGHiI4Ui&IUggoL|poDF4&t@zUPQ@q6u<cDuw~{#w4* zn}5}u6)yG*pXPTObYxgG*mv%8*->AlXMWHi>+>G58@kp46+Lr9-r7hX4*x$%ly}yf z?-mNb_kXU=k&bw2d;XuKOpTa|_Y*;%14ePeJB^n|&g0eEkooAM4_n37kGGGVX5d*Q z!+Dg`-DrlyLNPBL?zt)l#a_?+Qo+L=|3sxT+s9MmP2miiryB2O=c@Xu>hg*`uz&u8 zD@p9U*a!88;_J2@X7LX7ci0xRPh$G(qN^osG3GMIO|qUZTwgDJ@2nJu)bGeyA6uox z3vRSC7rgD4e(x~x`E=dtGWI|E2^Up1TNTd|cJ0ZVT;X`}c*EPgKl8oy4hrl#KKE|< z-kTS<KDzbTG&Yhi&nQ9U`;C_(+MYHwev5cY7M;wjRpe=i4VU8QaNhATd-~EU!OwMN zb6i#^&HJxl8E#>8{=Cnzto<C*UljPNzLUStbN;^V9=FuU(yu4>-miXnwy=2Z!A-}a zg!xPV&oAHqeQDh7ca<;i`q%Ei?k26jJLf^;*NtyC@_y%!DVr&Lw_4V6Uta!~$Km%& zpPPEWi!1sXn_qW%((b((7rs_7{Z;+iU1*s!HR|mmfqefEqqAq6-tYODX`8m@<l+m_ z>!x?z5aZdldbTNxw0NPyPF0<^J{k(W-}2?UcvLE`rfbT2yYZDzpYH2nwcG2<d7oKL zib^U{O_r9A{a<VH?9=9Ajg8p4#b~Pkm1%5SPMrC+k5~D$dG5Y2CjMsoV<OGAXKsak zn-CoP<3gjDU2Kb4V)^`;;>WlAj>)<gv*Xa~%G}h#D|e!WlumX&Res9rF_%Ma_x0~z z*q1I)W&3?H(a2)qBL5zL#_L;?Y6^BZPZHj`^{4ROoe4EXyN^t@%#8GO>E~H^AW1X% z`Q&8tWlwllJD+^_@=C${)USNYmsd?%cvbqzm5-0kEv;Laet4GGy8Y*$zkWaa%={e* zDb4XSBwxLFvDW)Rm8_nE@n7v_v(qj*cUzi17Rv3?-0;+@O#JA=+k5YP<E!#Ns#N<R z*+%}tq^ru?Ep-lk%XMGnd6i?;$yXO|Pi(7fsaUg6e0}IqooRx{7{cv!H~*<#|76M& z*ZzV(yDyk;G~V>+UUFN`hCPLE?ujZ-Gu`xPp0Gy}YoHiwnA7_o?7>zie@66JILzM} z{cK0Ioo>VWAL`c&?!4tO@N~-D&AIeq()_R!=VLcLi<a!lt(#FP8?>cjx=8d!(-}8A zrg)p>>~U%2O*~*R=eT3u$HtoTO6s*!cT7;&`Ep}V?EPJ<#0=W2A8fj~x32W$JzH<f z>h~I7lw^c1cJ>BOopo+*tHIHCI**v#r|DU~N&XyH%N*mq#BavSZy6gnSIG;$U^;s@ zk@fDTV*9LTO>yS;%=fvuE}mTORW-$x<8-4yyI*vK<aI-Z3)@z4>=T)}%IjR;*W2dB z3Y%Zdj}X*;bGP?C-|v97`Ui1;4>j8v{X3DvmFN2ZR7nuO-vw#CfJJ%n`mBp0tEYXO zlC$azv*kzSZi&s4HF`tD7-Q;mmw)0=ynOy*@gIFQTh@StgdYY69xA_hKOsI%dVl*Z z2_^f?J2!SPaxYr(;Q2?xi7^e!A8Lx3zUseqaiP1stkk02#YJX}*B90&^chVLd>L@y z>8kLOwcD?644Zj-oy+NE%b%v5vfgX7{)E%~a+~+H-}0DV#waT9J-~ii^48tGH{JXe zOm;r8zSCx=czZ~%Dbt=qih*9gmo>UJE;y2`($RJOmeqqVW#)XWJ`=w@+Q%V#Q}g?! z*a(4|E=``~xF-wyr+)k((a!QuFmRGeUe&DBQpKG`XHq7rZ0<-;Ul!T<b(hJ%b)`Er zlqUYmS$FwuoJNtyB!g#$I~mIDUR|HOL_fE1zLNfd(w0+mmR*;h?Y7!&>m#e5iTz3Y zJ~S<yC3J6l`TF3VhL$?HfF;KSvO-dQ&6n2y{(j)}*41hgUVf@#RJ(Y7h3%clgy_~a zVXqwx*$jSOom*(Rg3Yz`_`SW>AtwWx_5b9ZKfZl^SAy;W^?%Qv9@zii_mF`J=e}o8 zXMMQuV)ON6`M-ykwl9jza{ckCe#fmjH3!(0<LaL7^uBjsv&G8tc@AHUnF2S?UHy~I z``(@$zc2drE*rN`|N7I7`?gI@r&MF!SLs97rJ4WqE)eS9`!MpaqR;+~C#$9gH+31E zIdwh6Z|fW`?$gU>@jm$_y>6is<BeB472D2*d9yO!xRz75*fiAFD=H$C_4&Hhvy_a# zPMoQid-=|xpv6<lzw(A_=N31=eX%}1I`2wP?c)AFg00@_cV_%K^hwz~$^Y~;o`*82 z-aLy|Yh2p7Hd(LgtJS`XH|Hdq#<wnK{jwop<wfWEBQ58*UVGqN|37NWzF8H|f{(}_ zxped8qK`M6dh{1)T>qC-wCd%~s^^n}b@mpPP4)Wx`Sd(Xh7QL^{YmlZc?>rD|4IHk z!Ikk|bL)8n?>#<7Nz1p$pIW#4%eU9^&*GPhJh{p9<>Cq96Q%qWwVx+lt<|d2S;B2( zZNPAsnK?qR<a5(j@fq(_KgoNaK6m5T%VU~rG-kvd<l1$9lHjE`3jOD5xJ3oCZ$|x| zGxaZHr)!5P%fSS}T=QqHexH4Q<`|ahKj$$GKh(Ya@E?(>KM#JLu6*HQPtpCS9YNv7 z8|t1dEURVs^<<C2@3!-slCt!k=z3+<=pFj^Tl&^Xt<MQ(441ZkEEBJNGiR2${XMxk z{EzoMsJ6?f+x=00a-kzfq>@u(?b;8!?f6gpzBTbjg#+`RB6G%5B0a0awkmzx|Nqb- zuXgn`?iZ>_y{zI-PK!N%^Y#1+D<_T#2`j9`q$IrSg+pBV9?y-qY}$Fb?!Tgr;eUN0 zTa5w+Mg|5(35JCXtl+x~m>3usBp7-b7#QUEct9c*w_*-5mn1VXFl>mwy)E~4+4*g` zAR0uTwbf;0XoxXlJ;U<TQT^c61M?NQJW@|&obX=36D4|!#foQ_)Gt=G#;<L*P2CTa zAHEl`JEEi_CF#QF_|9>k+sT0D3l$~2U!-{CCLca?Am;eA!+r<yj@2ERdid+HxrZiy z-1>o=Q|yq_qLzrs7LzM_LlksXZB=)luq=}P#PF%+lNHz0pt(lPpIW6B^DW8DxSN@s z8ULcPiv3q@Tj#}j8@oBvkIm4Y(I06S7JtpXY@+S#zfHl@FZX_)wfg60h3}^QCr^KN z`>^ek@1J{r{F~aE(w(*zOekpe(3aA*QmN8t>wcNkzhhU$hKh+lmbIv!^#0{l=5g}U zrc0uivW>Rq?0B<u&$>U3E8mL>wEA9j*y!yU$`|Gu8XWpNME>er6V9_{xdF$o&%KcR zb?TSmul>AJd4BiWB)dP>oP6lY>5^+Xrsl@y4db^w(8<-EzBcc5j`Ur#^Xs;oZ;vmX zAQLR(KG!C_`Z>pQ&ga_V7q6Z)y}tE2Z;^Si{WlLAJ^$eIJm(GdkInvc?o-_7!dm9q z{y)8cpEI3tID25#f%b&f2W=0gPf)(1yG8vBe>q2dKZo*F<-f|^izj3l?NV&(5KW$& z^f<XXng8*X3adE#eP)a*U7dxU?4Bt>GkMgrRn=9#tL$I8W#zJ!D_8E$^sg#yoA`3# z&55q*;pzI%9d?%FdCi;fetv!Qj8K-Y{o>*q6enl~@G@{+*|GzamOwaF=!AJZzs*+$ ze&!dTG=z-*KKl2CgO7PT1LzJ5P-<gfV5qoNI@xrJsH1>ue0lwyyNP%2)}|GdU;o-$ zz)|RHe$3W>hqa{N7RhxF)m}Ug&F4S&Zs+r<XRd^Vem}1Mq_IAW%RxFzQ|yJShf(;0 zY<@da1L=v2ZG1w)FS@Lfn15hKe)8-KzEceQQzpG!GUdsH8Sy#ySFTmv;AZ;K^(zO< zwLFKelg^tyW~_JIl&9+d;{CGyvL|1Ou)Uo5BBRWpj_c&ai)V7xub%l{wrk2x-zySJ zW_|53O$c}*!4{P4DPMc_+rG%EWqgbBR4&}?cvyWn<jTJJOR5#zbe*}155H9ZbW>!j zPF0-#W8*D5XS;M7=ig7Z@!V=q-d-j8SLOJPgv0p(zb7)T(Y2O5{e64Kq^z6Pzq3T5 z-QUjRyY<&?qvj>)m0SEf);~{>$UYh|Tg%pEmSJ~Y&zGmqZah2pfH~4x>g_t|kbPIw ztyA*f>^<?$y7RN^#KW?;=6b&oKO4Tbp;Go9f6*aB?g?{U&6w82r@cR*v_`?R%b4SB z)rUFHmF0f?@_FyN>`JKa#r$8a$1eL#F7DWJ_R?G_i?7b5EDN_?{^0qcf6jxA_X;-7 zO$&Z{XG&Z<*QzULAKf`RXM5X+cbsPLEY&7_xaV&gH2;OWM$z-DIp?2;d)+QOYV&n} z2=_Yw*Z;X!K7TWD%W<y%tB&tv68hD+Grjutqq=tHv(iVp?yh6^JT5lxDDNfhD+T$_ zq>p|08SyG3uygmUg~v4N+NTKh=Lqe0HlNh>sxNru<cFmTE`5{Weq;NH=a2ml*-!0f z7l6`DazaW%!o7d*xt&GY@85U-pI-cd(KUc!u>`}WdF-qew~`Z*Y7TB`Z=BlLxRTq$ z*x-vp#xZuDwjLiIhXV&07<qYk-m^;F+mqVR)L?R5gpHl8m7VJh*MD7!MKiV=f6_28 z_;TEkxl}$Wialh}fdd>2*6o5yAbWGpGw+#dD8lgJ?%UMcrDb}Xb8mlj1{H~*vT>g7 z?RD?BP5YYm{*Pqxov_60oZGwheN|LS_|3dVocnawhFNRaXCHmG$u&nZ`mEW_uiicz zcfZ-Iy?3?J`BVI#7XRVeuXn7|GilWf#k9_yNsSRaiHb@`+E^yAsQgf1j+t^Xg-6o+ z*!0fSG|Nc63Eof2c1Fuhem-&G0Rss+<wPBy4o|@gy>ULBI}PN;jvR{M@lLi})BAO! zX4%nw76R@MQs(q`e_)V1l>Xz8?8&#^)_u+UmiPVLSG&(wzi$0v|DpbiwdSW~5latB zyk-phJw5rV`SGLqedX5z4_fhkIQ&OwzuK{X4`=9$F}8CEa6fWRY6y^7ye4_$9kuev z<C?D@ToXKJm6Rmo^Xc%z|K|hwXD5iiX=YxNY;ta6U+uMzSF8@*=H4&6wdU;K?|<|6 zS%%e>&WL`t>}GD+thH&ABlE*%S*G<!rm@Z7Q|tHqWtm=3SrAzeR<P{zg`Lmu6y{l) z%f8iU|H5$Bzx?vtQun)Y+pqCnkuwe94Qvjrzv^xpcrmo&(U+!q7iD*O&dyNIUGR0w zv}u=(qMW)j6?GT<G?{nof`*jm;Y<VGC4E=sMFq#M@(W#Q6uM+m$ec?7SzP|{$LhX6 zzI%InZQkztWjk~0qn})x6umiL>;9A-nsskqZ8d3qe;~w6hk@b8O{PF_xwR(jdev<o zKG{_}!>5WYYnXZBwP}0T<-6R+x0v1i`uoJ%C92QszH6O7P%9bmvix@j_k>B+KWB#; zG#eeTJaEBjA;Zyq?^zl0>pCvJHIKOUcXj`HpE-Po`UT$qp0V29{<rJ?jIB=^Gb1&a zM56LaS`<rOSY>Fmd|2FUsj8c4IV1eSzd7qeT32seqsVhtCH!Ju(E02$FZcR49G)a* zm6e?MI#_-B>5GOLviCMd+?HG`^-gxd(h}>`#Xe@8NvG|3tW2A2Wpy;p+>W?v_x$jz zYq9LYw;KN6K6L0xy!GW{9p9qlrrF#-RAYPN=WPFTX>XYGawlf>?kVgGFLq?`eC8|a zJ9*V^<~gaqbt*5dv=fjnWU<)sw0#NVHr`LKSl7q3q)D(edgeUbkhk#0$G|;_>D}L+ zN$)wnx;lT6{NqJO<?Op2DRA5hY-p2ZiDhBj!r5QK%-+qlqRGit$)~pJ^l`hFN&8Dy zGK&aVMR>hbQ(G|ii|mdAZf)6VPd}SKb6VeeRI<BADyc&=+$egDu=DM@9jR{Cjrz>m z3^BLAo=g+c-y0<JCfH)Z+rAU2x$l;*Em2)CA+Kd;bAQH`6#{Q&7Zx}$hFg1W;CjUH zgC&NWxs22NQWkq?dO}FX`MDeW*wQ`b$}M^LM&$6cCF(B}D>n8lxT_jH<BkA}@bx~9 z#n(<{D0>?gd0N;l(QphDXYE}ja^d;J#EIWEx;57(w6#_EsP3H8{x;+A!9v${3>M4c zKQnGw!1vJNeOZS2yl>e~7qwJbJDSB(k8#R6$uRi|<nsBgGOw-+%E)KoFMJYESF~Zx zy`10qWyVW0C+?f`N?S{Ca@Bo*HFZ;|iQU3w2PPDinoB-jU--*uv0CGVoS&SR-7D@| zu=!crC3|wcUVHY8pW+u!Q%1$ipufJC=H*>e)%9u7@P6dIIO3&5+r+Zft6Y?d?#=6; ze2JCceQCGyB)4;|AAX;m-8MrY_2Di(;{e6kf~r&Nr2l8n=I>Z1mAK{>-@Sm&gP+ts zp8Yh<>yu9Y>Lmv*g?LVUDm!&b#Jx~Y`P0=}FVidIRhe~iRjdCbYpN_$HM#JE{k|Cc zRnFwMCw{y?^J0#HpRDBn$&!woGMn{}dM?<P79jcDvqtP8^Qza350f=H<xjV_^rz1K zuyKx3jn03U9}#}ScGK$BYIM>$<WILXEiFlq*Yv73X3@=Dy>qF`#)HPzt3OQa?SEls z7slYbW65lzS(E=H?7wt4<%@rnuAiH?oWG3SJkKt-tDn=GMV?;nnWtSlPqSiP*uR+0 zb^Yab>QZJ`i#Enx*~jtkcErTulg5irMZ^opU)ZyxPQ+?f@rR{ZcOr@k-dTm4lyu*D zzS4D3SUa0ZpvOMl^^bOF&NgED-|)l1dDmRa!z;o%9<sWoKIARZzVdSJF4e<_jw<HL zALHfRAaZ$T_wu_7CeCeFefez<qjTM|HMzg%a|f_|E>2ukVO<c*X|Y0aT4u`~o{dY+ z$6XibnD=IXkYjspr>pGNlQ9=2dcK}8za%|biSvoAs`<*}lZ<kN{Dd;63Fvt#S$3;< zdkA%Z?XXLq`@%(U(K**AFL(b|u|4P7yy41YCXeVjuZk3>cPx84uhU@pH{Y92mfSfy zb)GKkWW(O1^Z5rRZSlGEWlG75K<y17%kQq9ygzo6TAaz-yLp~+Kd%Z;eG#|Y>0e{9 zSkd~U*<Mb~k#~+r-@0#9&Llsr$;~J`<i)*p^EbVl5xsoPyVi~2t{JV|-$FUfMf7eN zUOi^)wm`3RX`5NWG$ot1Ip>~-9II(LeCh0h&kbG?O>J{t&)dIp(m|)YODEhnx^&h) zt4lK2<;64=+f{yNx<yM~=d5zkxnUdj&uO>o?Mbn5Pwr%L#R;-reRHdv<^G2v=J*S` z^|hV<cxBT=PW_m4EnoE9<ci}uRW9Z^$BbTW{2KSs;qm|Kb=_NTEL3PXw0+(J?}Sr5 z8<_6g-CCG^XKUg2qg!$(ScNKX{{PInP(FaqwN=1M^e`8ra-buVL@0;E;+H`^mm4^x z3_O{aElT28=xe%GC|FCY%YSxYXXZ4&3o>&v=bhW)kRFvXSGG&FwITHyXP5|6SmrL# zY!d}v=4+V;*j{tLUFAD<#<qz0nbE4tWUU-`mn^fjx@<T1r9*#VZ4ncH?v(5>Im_rN z$7M>Sx4wFza?1P89H;zqYbNfnygpNU($YACPnJd(p6_Ux7yq*8(F3Wf0%qGCSGO5P z-jh{6|9;_f{tKVo=Nj|PTflz)LbG`8>`71e8h!f1TlJ66_WuRT#}9<7KCs&U=;NCD zEp@i`O07S?KW}%gpY_FXM%LPsQ<oOkuWmQqumAd%e6kOtd&RA!5BClhFa<0&k+BeH zyJ&t*YWmU4nI?jNS&vwp7n#79w0N3fHMg7m{8_cli~5-7a=CN_w6nFW`pPeLRKoK8 zBU|s&n*Scgzhv>g>cP;R?XlBnsno)nw=-B17?Ns&U%SQYum5d$z2l>NalDIG1JAwQ z{SjP84K=py3A?>haQbIWyG>tWFD^gFJ=a#kq~mC&4aZJ~g@?2!RNP8Fz^kG#A(NGv zd9sGU`yc;#U5vjlFXU|Iyll1LhS@P&9-jYi4}7})zdrTWxr#6U*Z&t&uw$4xTOf*| z;#N{Z!h;lzq=dADl!q*v#2F1+&Yn<Udg6G)hew9zwnC0V=J5^ur_vH9B>!Me-E3rG z=;e4b$K%l+AI%=a05kb!&d-bvtDh`T&K6*OsPFeo(`t`ge0Hw&ou1tNf5WnJpP6VG zx4ye<zj;fBabQ-fQ0gz1dy^kGe^V*E>c3Ay)r7fN<i*U}DjU50b|}ob{A=ccO@&iV zEI!A1N&K8W$C|Fm8(*7PF0^5ly0o6_J*Rx(nOz00b0jOTAC0(hZ^`?;tEV*WU2OMK z|LpE9@p@PI|5rOW&fB%xn2B@Ito^OORw+rc-HM*F_VZhbSzn!vkG7|O`}X<r?(F&Y zJu!i$n$Ge6Lf<AY+9Ceu@nPwGhrS+>O3RFU8sq!V$K_1ddC?mm_g?XDi~8KsJ)Jve z!o*z#=d)cqSA4tk^q%S6bpe4HE^X_+rUhJ|SA2cSi#3e}_g)@+t{JiS%&c#|x1Pn7 z#_fK#VBh`Ex-RSIzNyMnIDDaeMfTaOtNGzplL{Z1+&)%YchY<P;w<jtA+|+zTg_@8 zuDJYK+_rC{=HFZ1ChEcQ>o^!HZsi=jyikCF!Qo={{M_5y*3Mh|CU8^k?Xvs46D=Km z1@>FFGyMCxwUzDPVG{=?4wa4sCl1w~0;LX>u8gD()xHWL50%c8AP?2v5~C9;-8n@k zRQqeVG?sKEd1)-|DbiZ8q$?|H#nQeisf;C^X;B$Vd&{g|Ea}dxda<;>j!hz^BhgJF zwWm;RMoL#^+Kkk`O0kF(&C?O*xWYDdU0su?`#R!0o0-%Bvv0*yb!8qJv;RD(SXMZ3 zddwqU{>l`E{GVwP4z_)0?5}ww8_#2Ura-yJ<Wxp-kLkGzVIPx|DZxIby~k}HTIyGv zGB*3%WxZ^6;<CuJ*~#lFpG7AubQOzETA4a6I&o=eSakB*(rdR97W<mrPFkJ2t@sk3 z_1jIi<@Vjqp8uC`#}UVMmPZoXWecwu9-mt<X|tc@+n&vL3eHuETbwc!uNP+FcN1V{ zU^t-Xyf63mwu^mtTzq1jg1n;K!u;YK13e>MLw#eNgT15O!~O3cxNzdekt=8J9J+Ms z*0F2n?j5{%^5)U2XYU@qeERnB>*wPYdb$>^wslX`;CYZ;S}7Kzcd_*PZIN?Ze)>-6 z?b-8p+mqKht^WlTwi(!#&p9*m%by!jOAMNSzA=4mWtLheb*65P$L62x*JPu<J>swb z*m{27=f^+W<}ZGf^di2_^5gV)k?s5`FI~?U+PpZ-&}Pu2dFGky`(Cx#(>^YFedY9a z^GSEJlyeV$HUECZQ%iSd(CPe)b2Aov+>#W;_q{3aOH$XF9rLFAskpT5Cg1nHy?o8b znA38qe}6M+GW1EvI;%9}(3x4{8@7n?l_YN5x>){5YT4`Tq+@qY=REsSay@mH|H;&4 z-)vKNSXH|R8E#z2zRu+9EaQz!@~-rEefgvjdHVcOR?b)F^rmL|{W|jH3)A_pi5!b{ zgJ-FPZ<oESE+RZ5&)u@8`AW@;nKL&2(>SrsM!qfEP^R)Q%j?^shaB@N*L!MZ>G_}Y zso$q3@_t9cB|CA83-PAT^;6oadc87v=koqF{nN+!O1eiX)nNNE$urA4Cxtv);PHO_ z$)`?L+ArNMFjsk8*nD1ns%hy$_F9QG(t6U4iw(GzX5@R%6`a-oNbo7kvTJ9W?Rd(R zPfq+b&D_nPQ)`}9ldJWM|LlP-0)JOEZQWX?UaQ`yc_tz6tIZ4lwx3r;rd?zDx@z9a ziCaxl1D`m(4^=+H=*g)a;eRZYDL7m95XUhCkaEMBKew7T?=0R}Wb<79k;W}?21W+P I|Nj~I0kNv}CjbBd diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ab2ad21da6fbe6c171bb869240954d0ead8f68fd GIT binary patch literal 25324 zcmXT-cQayOWME)mNP5G-2cl1IVPHs_01*T6Q88NrLz@jp6z3csK@P5_V-=0Rd>PG{ zRG2$rxLb@ESQJ=0(%AbXc^ZwRV;86&iLHK8Wc^{;pY(a<hk6UYSxm4J>RFT)7#6wd z|9^YcmlB70|1$V4er2z6+I3>z#Db2P8J`z49M)v+Gi7RLll`>z^B2aGQ+D~!RNNf0 zsPkr(r18V4TQmxyz1-h68=ZV<_^FF^Yg+uqT{g}F_XSccI*&ebI`H;I;o-`g>!<1_ z?!BA;TR}2Q|Leb9YxMsMd{E=u^gqCR#m8CiuX*~rbtU_YxVy!;y_-7a#J5bZt#g~( z7M@?(W*&I%eAHn}yLTMDwUexE?6=?hfBWB}|M5cJW{b87{*6?zJhnpSi%SOcQkRX6 zhdlgr{NDE%zx(3kcYcS_E1SJ$`g^t5?*6gkJm}=4;IN?WTIS!Gp?)#P_04*$&X(_! z<F|Exd;W~vj&jwo1HUf`=bvWgWA=Np!=foptX29Q&(ke)CQfEP>BrS{XtIE=_J;yS z$IZWI@BGJ>qP?Y4HThA)=55Rl)|bA7{)_$HlK%YfvT0ZD>Sxw!7^v8Mvp92fiigzF zxqC}3-_M(#SabZFtTYq1gig>bBOa64%q;iwb?Yb1WEFb$W$$Ly#MMWbCX}+4t@^(_ z{AYORWx05H{SMBCuLtYauj3IDoxl`7Gi3XDz6*`ck6T-6r7y88jlM7TRV;Phu2-jz zpX9&Ce><VD{?K8={CP%;1l1OPovj&csrkWWiFGL7i|KE<S;`)KE0f&qJLCR?uOI#Y z?AC2b@;Dpd)A{!ElLCu0kyhSZhNo|YLRW_>ENA?x-D<So>1NO7<v-<8&sl`Ye!2g? z^t00Yr90jUN-2APR#0)ueRPiTJNMR?VL8(CS-R6N#QwZDhv9$b*)5;bxK7G6Y00jh z#9p$gsNC#Jx}N2MvodN+?@XN}^vujXp?lY+LvErmsjVxGMGuAS`Zs@7s`Zns;N^R> z?yik(jVURAcju<>^Gi=3@H_DRYhYv!GM5N2;`nq<Xvc1UmL=(2SJ(nIEsic(Y8E8E z)o<tS=gT@bX2+J~MaN&>{_Xd)bMKx!yDYw|Yr4ed>!)H~#bvn8FiBk?ebo6xl*p;X zDJlQ1XO$}MRQ>4Vu}t^>SIf_q;_p|So7taWw7sL_d&0F70#T1Pt_d}5Jo2K~^>#&r z0ORYe*Yp41_y1dNxcF|_r=lLyjuxS!gQs8Int!YC&GvnlY6HKEZ+$J<+NfY_Ad$)_ z<NsMjh{1k`8^g7y&h}ean1ekFtL#5KzEWO)WPV|qXy*mzZ~c=>HKtvjIF(U4UxZ=7 z`a8S~lJA0@SdK{Zrj#Dx`gQgD7w0){tkaVF_wrf2nPGhC|L=L{ZNI5samzdQbm^XH z^3VCTV;x&fLyb+t3pEQp+D>E`&GXUuJpE*9)=a;$@N?6OpU#L;`9AshiS4JppH6?8 zf9m{c`w92M7+4)0g91cKSeJbW^bj#>4O$q~qBTjhs?{?w@P_D2uH}oo0#|2*>4frV zhH08<Y}5Lt$)|NMI411Rii(9xw5P5TUUfY*f7QLvzbn425NEUF{$u^&{)8(N7RR4> z_MFiu;Ayjk*1JdiJJ$V^t6|;8Zm-bue{F3`vr&ZG)I_6+XZ+QEw_iNm{^a?S_Yb5J zCRhis#y_loci?fhh;Nr_m*de>y9|$d?`V)eQ&-p(^l{D9tPa*+m(TtD_Mdy!&-L|X zX}{jgoV<SDmdv}S@~rQv)jm1=zH<9>yW827K2bNjs-k23W4DH;zx%xPT14)R1!^)9 z%#{zf>rTJyXZf;4nQwOK3C7=VjWZ_)O0V61OUriGmX8|2O8)Cg_yi9HPB`8@QD)=O zIafaX^0^;(N@(hayLp8gKbR+667=2uLxEv^MEy7W@`G-!iylrZ7pv>%&5xV;>qW2c zk;MOZw_7j%r{c`4x<gcrZI3<Mx2M%v*X^0juidEa@qQA`?=sJi$MDHfr?NTUS-x|G z8ObqB3BA%K;B$JDQd7l8QPBnWgP-Zoy);cuaIu)l{j5yWaF;*3m{tmI^tJtXG|Qov zZLyK`y$?<A4#rvR-P5?)yX3<p^~<N~3QXVJQV_l+aWK})Ai*KZf5}y=+Y8z2ODcB% zDSn}L>|~NtuKABslG}f-Z#eaIcjWh1NAKEQoMheo*}A`t>FkxwtJg}MeX4E|sAQj( z*!id2mUClr%SwrpO8Z^6g_vkdJ3d(wBM`&SBK~X}|IW)lEhOcaC%cPX`VcYo`PR+9 zQd%DBd^sY=tm?XU5tom{o0am;b7K!&n8Nn!-0z||xz=mfMLdtVzSoR85PCe<I!0sB zCDWB<e-HEfJ^Aw5xywj0SMd2;0qg0{#E$G~RKL!6F)%6j_*bo03r=2S2<YfEylo;X z(4#-0qssfxzD4)mZsAmTyKSe%u}^<)&iLYK_~Frx9ij&l&YjF!lx>&UvDKtgChI`E zVvxrh!yOa4yY?+tUBTKM_hoz0rRc7%^tm6uzHeFkdecu=J{@aCGmGNgwr0ww^2GND z=V#BWvf#>k^C{JL^P=WHW|QZ;xAw-)oW-#9PU*uVT|2%c*cL_0Bv(%C_L?sEbEQ?P z*00;*75_~|Y$R^SZd$lTtEytZ?7jNPhgSDxKhL}8&e(K+#|@*F(3fpHg_W-#`d;M6 z|8P-5SAWE>bzU{sf9Bs!x%{%KGI)iIy7Gw)ZxU{uu*_a*)WX;p<@tk8mmy|@p(1Br zU82|T{aYB8b8Y!;8ZaZt>GqT}9bHOtuBVqbYKyys?p6QyuVw2GVb%YgTdkK>t8#HH zN_z2Wf=i`~R%L6*=NVT%X{~&2dg;V#m2=W6Cuaw%w)|Rn<<#%>jse2^?geG+F1%0_ z)K`0_x?+><x1W{Xg<X?BZ1j!bFJlxD`Ps&!S){?GF)Lupf(+-2jf=Ql`Mc~)teIw| zq(1(0V#NZ{c<Y?QoaPQPPqRy#c>4Rw`_G>iIlwcqM`i8lxxY>=ePN?+T&%A3?MB`< z*&~_TS7as%y_?;BZcl!gUVbive}I49BaxiV+4>4RGN-$g6#hHTl-xhz>!yiJ_V)VG z4$YEft{WcNFX+0xV!erI`K~~B*Tq}P#aTN`uJo#D<Y`{c|9t=Vwqu-$$L~J=HjB@i zQ!ggw^4)5M3HKkqN&3G*Z&kp@?^`WyomFO@wTD?hWq;ePkf~820ZZiU_S(O+-N{oO zaejGT_vfFhUhd6l7uXpPX4Jb!HGh@F`<G|jm(&_0>xay&GP5zaJW`==9&p#c=~QIo zvdp`svkHD?JQa+pm@6nOvcdI;1V{YW6!x+UM=H5L<!R3@)vuZ=n^*j^flb;e_UwWs zk^b{-zIde6aBXnxNcib-M#j){*~QOyc}%4~uG`UlAmq^6b<Yki+kQU!41?b6mtjjT zT-sYx!*fKO&%kb{<cmDTJ+D}Tm|23Ve@|FgT+E%ZMsM<yexvWPd!F1Wy{-Q>Y|Wp- z^#}Ieh$!QI=kB-l<ofHz?@L}UIyOt#*RRsy*|N!=;hkH|@3tNO*~GSW&1^pZ#S^Tq zyvv?@?!V|}9=7@ic06CF_pY&?ubq6)V3V<Nf<DK>&5g!Al{2mMrxnOQ|J6ME&j*IQ zyPe!Y8LO)mpXbLqFkX;;WTvL~Ec1JKywZoSv5vi&dRl>pr%ya{uDSYI>_LVDTMmZy zv71d0XqzK<a^v~qTsK^tW)%H2ej})^a)vc0kTFs7#Z)f;nzxPj8rW}eRi*Rqu37(0 zVwwPpUw4sAfhXf+RhCv`EwwiVXK!D(s$g(7P}68oy<k?s;J)MeA^~}u$5-1<Z2w&& zQgY$3oU@^ykQ(a~EhY;?2UXi7HqEDj$4(b<^t}*}TdC|Ym*HjQyeWD*v5~trevxXb zVqQ`1@QZQsMRoUhncCtn!cD(eSJ)r;_<zQSY}?gu7jH9raO`8T!23Nj`!aY|=9I5y ze^tGTg^}aUu{4FNj@4}sn2*ZI_f;}|F=trL!XU8kAdk&g(HZ7#8^j6~)@mHfDzxQi z;-9KwrtK@WTjD@>Mc}SDt}~Bcv?Ph}iM%+;AoM<5Y0ZupsoPbo{vT{ET$&{1=)!Qc zm) CZ>M&K;i6&sYTm1CW(3Zh^!FbufaRLzjeXi)!m2og|4?RUngKxc;^4N)7$Q@ zcz#;x@S&-JUw`DRij(<0+3fk@17c;<3~t?6aQ#L^zosSEoU@;fsc2l^S{XT&H{E!n z-;cFrH}`Fm$&*-j@MGKEf>VtzCOl-l`mt>7g)F%i^KDD7ZxW81_fn28U#HA$UG()& z)7iE%U4MB^|JCJ%+3}Gxnv7=MG_g_r)pzrW4EOR^JN(X7J`<L_5a+S@N6PZ^YqI$b z`lL&XzulU-w8F=zde6R1ORoQ@f3p5tijhtAzl8pIiS@-3pWhVTZxI)>H)p;$Z?d=9 z_nrD@?$(CwdKa14aW3t`WXID<O6&N3v+q5)@p^KJLEiHouJ+2x0M4WzJEzaRSnz~D z)4p@B)zr8p!m-^Qf{`tgJ3e+?S~dCC*8@*(yLq)J&gp1fxS=xe^UUxMN2=U>Wu~01 zdm3{!Gx~jIi0oPYSc_uQ$a(KJ@qO04dgxpXmz$gZqUamJjBIz*rv#`Rv;P<Kr$TOd z!{n2}_I`5?mo?aEX8d|Da%lZj3AYJclg$76smyDb!LjzJz}<qD=O33ETdLo2Pv~#% z{!sX-_R9KP*M@1=eeZ8Ox#^5|%reW(Z6E(HV>14`Bw><f!tyrGb14~nH4n8tJ-Tuu z`^RbJg-*;5t`;bHAMi90f8X}zqO9RTsk2rEGA9`>X0!0VlHrX#u|<>7YX6C*47I}T zk|GyZi|)5@Fv>Z7zCm3<%j0hOgs-=6<aYLK2z}w$a-se~O^iTXj9V9*!-Brpi)}gj z)mtlfzs_BnvTo+SALk98>#8mOp|$4~!$sM|sLm~O++UemnMjzKGgLi2ck=e!W$|U5 zwYn+^h7GQ2IVz8jE^{gJwpgMTa-Hj~yV6`6t}B+S&X;ePetYG?&1Z62MGpBku24As z(8Ofw@)uE41ii|#RDVotcbd4*I)zKf*h8<?xbVr7b=xn#O3mNwWP8C_s%QPnx*C~9 z4-ykZZ>}wEoi6j;WZEQyR-bbd)DJY3zh^S(3==G$^r3+5MZ?C54%q~S!>#c=IzlSV zGGgy4tJK*iI$bWiI(_oiBG!+Q2e(TfDd2mV`D{&-Wx#`1O^G{m*G_-h8^$lM{^j4_ zQw*6+-T#jpE`03ZxVu2|k>uV8k7<7vm_{@FTq=FTbfJ^nl7wsJe|de|*<4<*Tl!8h zUKsytP9LMsf0ZE9_Lf_6-!5HV6`SDed*z6_;lo7&y!?k*GG{k1y3ASS^qY6$5!Ef+ zGMRT>;ysqnU^WiBw3YM6(||W?S;I;;UHx)cu<YZtf1h@QpL2U!GU@cgbpB1!E5CkG zTpB!okDFAC8Mp0G+4dzur<Ob9qzJpYafO?T>n+^U-yYggey?%EO2umqv%FWnIP~f2 z4i5F@Q!jKpxoXhl*rIU!dL>)Mn~>Vd{VyweQrw#taZU*H-Fs@?9QB*K3=1Zi*}4{O z43@g_xV3}rQu{vzeTLWs&fNwrhqtE+RlNV$cIu+)LbHs3Gin7)-J4vWT!>DR2%6?0 z*db{oy!hQglb5sfzx_4V_F4V@%v94Ef(u2T-q1|>Y<lE@_YLMLhL*EFIqjdj+r=#J z^$L#Ni%;F=N(#EH)pR%R-O6mg6SfNC3jdkT|2b5c5HI}jcvt<~gr5~G*;80HcUG^? z%HDX2?a4yjtVwPm#nzf<93H4FTK9I=hJXcne<#_uJvv<<zCirQ`TD+S-AOmU9PO|B z6@2Q<_E{e|ouBTm4>0-H-`eiieruML>2se)zt&H&?T%cf_RQwZ)~|wRSLZyvxX0mO z|G7hxCj|MPxFGP@BPyMj&0+p6^T?;Rjz5gI9c4Mdea>5iDXYXSdBU<j1Jmbr-<-Ox zoZakGZ*%Xnm`2v3z~>zdy193pSLHH(eszPpNT$;xK<HDl-VP0e|LqKZ4Pgb-4*Y%a z`s;PQNz#8$8OK~<XTLE!_{`MjlD2PlT}{}gVR!1m^b0rB`j`@qPIYl(%(Sl!uB;N{ zHr}HbXLmG-u|bWy??Bq!Z>B1W`xS(9)`iUemb1XgXTlWu4oBsOoxhti)ZM(<R_)SK zzwEx=|9Ag#?}ZCr7G#yH<XtmuuCUEDRsZm0pY5ynUhRh!9tT`dNMD(KM57_U%X?FD zh(YysOU=jI{@e`S+sNjBheLS6p{s{P>$XY0nJTz-S&@xJ{^4zN)*Ue^m^)eU+tMo& z19x3AGWzgtMPcOm3GG$iR{wk;FU=<An7T<SqAUM%Lf(=;E0#`GYq@^>uX{n)`&o-V z{^b3!FK=mH!@gUy0^&}&ho1@k!TV{_gEM;WyL@dv+|IUh+kUaUiRpY#L*VzG#Nw&R zPbwyDsd+r-=(m%B{wta9ob+|9QRY1MBHtqZzochkd}xfM%HdzrO_JjyFI{*i=zAmn zoOz#ZM#GFpI}J0vH%>81N-EZpOH`P+S|fT&Uxd*mslu4P9YI}P5gz)-c3!%^d*Ld< z_wG{bC-D5ZaeZRXrqnuf>4|=iy`N}nE-`qWsHUg&{lv8m8@7gPGo~*s4Yt{1_HnC9 z@g1MP$1>w9nNIp=a#l<1;hgKcaiNI%QJw#de0e@?N4ogsw@YjO{9HL9r68<l(=5iM zY>kowFFB^pzvuOCW#~&IaZRn5k5d+9t=$rLag82ZCHE1oj7fWWeOhNa`+IJe={@lv zBXRDd2{TU4`Bx%7H@T`n!a{*}*;Venh5CoPoa1U1$cAiV$=DwuAz>vkz5KrR!wJ#R z2Nrf7-4v?yy<6tFa;Sduj9q7AlXJGcZgX0H@bb_52K$ov=kbatpAYgkxcft0P$0{t zNM(KJom2BAoA)mNCjLiwa-_tBbC!$j9<6-j+j>tel&R7D*yH(ZI$nNLs~_fT9^Lag zn(<k6a@5r5);&3fmp8s(&~#u7UU^48^zWAc(gupl<kde~ty)-{VPpNBQ^F?I|H|bV zS?da?HLa01XQ;|y{l}%Yk@>T+@swUg){Fm>E>!rmAA9Vo|2Sg##IV|`qoqqWFEHn+ z`SIal=Yq;)A>;2>Q;Za>tX)p8x~xC5@g?_$?GAmuN4~w#{Ws;^#`er8y_ZM#<S3i6 z%4{f|`@dl83+}IHYQx+Z_iyXja)@Pe?3?IT#U=8ex5SAgx>;GCUU*_rum5(f)-~a0 z^d%WNU)uOhY2RAC#pLSi1>V1Hgmj*@D!X$97A|8C6u<XkuD5&O{_pn;Il06v9zT<l z4cZ;RaC&0X9?@6lGSt$i#oX91JI8Ng->+t+05<L|M|2-@&$0BM82BeLOnq5v{`0^E zt|rm0b-l^?_MYdJ-<V}f&;HhExTG^-CU=u(>xO*ihI7(O%D6bTO9+T;Kb0?$9rU-^ z=k<LDp607Ln>v~}u5a{aO*!0cxM=s<h}`8jY<)dc`ULsaC!E_SbWX*~Xw5^Z|BMR+ z?%h4NSn2Sr|GcjC{H&(a!z$O-sEBV&tN(mJUvbhm=`;U16CS#*Ju0@^a^H&Ei~TQ& zp1dvbKf-UJK&__Yh6U05cMg5bOx<y4oi^kBaEo16(?w?8o?YW5x@yY)hsHiP7j0JB z+4P60Ui|NOrq2@f43+nnG_VJ?cx9h`b@y1F=D#53m6N|4vf7H}zm0W^DrXP;_1^G& z*7XaD(F$C*g3Tx1Yf}4`U2$C~z-0sb_Sr@@%ulohc0~w!7{B*bKA4y;zx%D~yBOQ# zg9n=*{PR^w&@6rt-E$@GVxC!>(BX48W2`Eb*?1RZUfizpH0XWs{XCPk;+Kzcd%9jW zwrxFFJY^w|_Z1uWDM}okaaT{LF}*(N=df{w(C!JRKYlX*bBAxM_EW!z&zWV?+<Mhp z|MlEqY1Y_Nd0>7)c=pA0OYc`qatZ3SKb&_xV#{}_d$aX-f1Nt{-8{B_{*9}f*z#p% zYxv!DxawwI-%@>VveeFpyUjK(Uj1sjowg@a@Ub0Edf9$^zq?NNu9vCT7cgDFa^_=w z*5<EX&F-I~^j^+%R&$sx$K7DoXA`j{wyn#??%M9>R}_=(Ut~@csL>6Ovr=GJdU5-s ztWlKJ#A_+KwZXY_h4wlhXxZ|0`KO!W87Ct}Ot&#)UX5yubx8XXz$A8V*_~$=vroK? zU2pKAT=?)KfgS5oCh(-a`z#>SeQNW~^X0XlE7)}>D9<gKwWw$6HLEf?)dtfA${UQ- zO?F96`S&Tbw}So9^5xdoHa=v@^Y{KC9(nU^@8%B&L`<|^Cx5rlPnOK`yyRRIQM&wR z(ed;hk9<25XMPhC&N?7*E$*4DUV+t#&*r~QOx<)gY5&$HR^GYSWDSp`P0V6$WHyv~ zFniUV50}@cbcbzRZtoX(?9k-ryDcvLN&38KUi^;>hu-!#UpiORxISe;?j62;cBx$V zGhA+pdo(QKTfRA7PAvN1y5s|2-MsWdBRkzDZ1PA>%(6b(dPGfYro_>(IFZ8_>tv3$ zvRStX2WT_8q%X{KVt=L7Vp_HKboK9!S)mV^lBR$3317cy!-CGL$7#QemOR~&7TtR1 z@(M>;w~Dl9?J-CHFx?YA^Z4@XCZm^HujX_dUQ&{#vo!EnuTu}NjOf}=yC2*QOcXw9 zari>^y*A&9O(HA@Z(o@4@KktRI&Z6pZs?cyE0s>2?#pq=`)c1Q|1NoTrvJ@T46Vyz zGd$Wtwnh1h`7Oz3KgIZ@WxKRXZ=TPRTlW&S9a~<?YFTQ^I`?wtqnx56E=z1qtly~n zZM8L@LxRfIx7-&6HDY*!o``feir#axYh=~vSS7ygXYdW#*EihRCaG?k_O1Q(AHKRH zxl4A>ZhG4rzo+tW-K8&${4&g0_p?=Z?caa1?tOK?vy@!|^As0x!EEQo6wdXl_i;Es zJ@0(M?c1Hg#a;UoBQAV!$`@Y#%zF8~Hv;OnU*GL**l=+7^LGbN?_C~#{Q|dP{+Guq zXP>+#EIna6pGcnB>4?J?c~8S_!oBi*1h;goi88tuywv0D`FFn3`$aU~$yYZocz1l- z>X^AtZ`VJPIMZ0sD;TKt=_#+?wfFu-g4u4ZcUjzB<D)zxmHqZOWiXuPf4^#?a+7_U zk>rPxRRR5SvdQlQN-g#3c6Vn^YmwZp+<#ojzB^dqSLFBesfRu?EYkT}yjPixM?l;{ zGIjsbo&&FHcl@vwmllf&TfnXNt!v)&h*=^6cf=HGn4Z4&kUr5b$SrGlz}M_bn+<E} z1LF`Eks}X!O$-8Boo3ZtQDdGF_vrS5)87Lfj-*BY;a$sgX+sO!hpoctjUF>&Z67eE zCVumcdwR%f|1OouRcF(iE_kJ}H)VYgHfcM`vvun9B2m}b-1lF|SVa7P(XJ8Fs#2nJ z`G@%bZz0F{4n-cBv8iuMf<(|Nt|hx_78P?$<9F~>ESi<L^7iS84tW=^KQwzdbxmGT zlVz9l)1_OTxP(Q1L@GIzzP)^4<}!}_MZ5Rjm=(Xcdfm2py3Yf3#rAuy^P2X){A%Fk z-VJ+SXYoCJJ#W^tRjv{~eqo{7lQ!SJ@i0+y!H&}l7>z!&|5(hwvd@A4)YoZ()21ge z+?2h@^ub*Gi*8}b^)2=OPrX(ix?<k&$1_qwMW6ejLBofe58|UzRPyo{om5^EUq6d2 zd4BlDi9ff$`My5fIz7|W`uwuDudCCFzwOF-v>;Qmu%F@EcGn%epA@&PVSV#w;r3~K z6B>kS?;h8@Ip?z6;;i|?mXH56vU`Wc{r*>=lx}pmrZsVG`n4yLE9zWc-j!UkYo#Ce z1Er0O4qB4oo)_}AH8@M%5@^y5s+tmP-1#yj+9i_7?BLT|!Hge+nIk@ViCM5sJK(JR zMB}boH1qDeRjr1~3p@+tMIMA&ElvMf(p|A+<4QqRwcCrXs#MRFyQk^VYu)FtnuGUv zRp9DC=GaWjRaaVGcSm|3n3ZU;_gT-355WxgLrl1>jjvACjlOyEM5KkcXbacNIMuD5 z1tr!#Rfau(6^$wserx}}QYCnCwau)_8`wO2AAC^hI=wwYL%DlJ5{Jym9~(O^xq0PO zEZLe8`*K=mgG1!>F9Gh}zvHsEEZVkV@oeK`p(=eJba>c*ymJ0@sv_F{&ha*r$gVbt ze0$?(S9d6MToAH<`e5n#nSsylmEQRf@JzBNqcfn`a98cw9gd=pg?oxaE<Rbmp>9v( z=GQ`sq1#;Q;vMo-pE+OhEI$-p9AM+|#VR@>mi>=$N#~83jY+Ax>5M`jHfwrZx_L<0 zZ%@gkllpIkQr<iLI>E?sIlpsN22()K=au$9E_)x-yu9Y8Yhb_pkzF|}_~tp?;!HX9 zs?qAlF{?8Xl5xqoGX>5~Tm4-jZQI?PK&}q%%pB+0doC>By<~Fg`iy0Lj4!YGznUSt zQ}s@(YTMFlSNc9N-|b!S@=AXj>%p~5hi0wWGEGHeYe%Q@2R*fK3RB!YZr$)VT*`Im z8kYiB>*S&(8nc}w<6Pe#`+M+4Nm<9u2Rr8Zu32(}=}(D{)bd+D&qw@HZ(6rAbv9$# zM9!y7$&I$FB!ccHNNeo0+)y!BNP1ED0e_|0CxW81!#yAWJMioDdZRi`vlG*gEu8fs zqTBK+vsr-4t58ML`h{-=c|BHd?1`NFQe(;UeM05O&3&z`8k<CJn*Z|A<h%63YPbEw zbtmd9!!+7sxK67tbnVv3y%M;p`?1do(Y1=MSL4rB)Oa+`{%p12aMr!;va@c5Dl@6q zeF(XCZqKuC@oh&QJ%}*m%jvbfa(9>T<^J1W*Hs;xFy&)BixGpLwF}cDmiz4&jz}*x zSo@ia>tXu#Aj!GQeqUX$y~kU>JHL#<YTnd@JLi_3JCiK7FuBD~sbgWHUC;k!$)={p zhm&?Z{u23~!Eeu>2?zHrYOPFJe4!v#xpepavs34P=RW#<LEaYMe@e6J1tX>IF0fi0 zaI$TM;%D>t-u-N63}(rlpT~IYn3@~owbnmpAG*oSyb)V)yJB7S>)CJ9K09~3yr1#v z<(|H~O`FsY$uGQkW9PnIM}yxOSxzrKeCVjb4DIVa*M7Z^*j{A5LGaz<oPxyrJ`G2% z6<ykA{H<wDb`EpQ$({|*Uj1>F-l(}~OWZ9bcA*6oUG3ags*Z2JGc~fdT%XtBk1&s) z$@`Y5b6(Dyw?Ap^Oh1+KB6IrDSLS8Ur|PxLwSV0!`TS#RycZk$+qFNZeA%aV(s=LO zr~F?gyj%OCP^6<N{OPHy3ypasyKk-E^>L0K=ZX4TVYM^67wu?B*>d!3jMZI*E&CrZ ziNDR!pZ`|!`O);ZWikET`2t4f&r1qt3%}0eSsj=C^Rbn|t%j+qTX}^4XK$UmP9>^Q zaw@aq{abU?e|YtOmVNkDy>;eh>8ISAy=Gh0uH)c7BtC1|WZ~zg6ACtk?airMu#81K zZR-X(zI^-AtGWC$r4PM2{m@<ZzMue`Q>3>-Q}*^4#h9G3Ij@(LcFnLUOkDNt^&{=& zXQWKB*Q!hHW3tlPc{R4=aoBRpgsaav_r*Ts@p^m5@#QZYQLBv){;(~y-dvbt{Fc8w zwEmUb)E^E0hl|BmPS&$-*xxIBdsEKgj!n)VUE(~VzW(&ss1w7<f7M8)(saEWlj2#< zX+`Whdg2z!RstE3HqGAxWz^**Cxy(KVYl~7&B@N52XF69xX`#I@vfTF`R$cIuN|{D zdvhsS_|HWrlSPke+)|$~|5?4K{rKWWcb?E03Bit2d=GGHc18a4ar^X%W76tk9^U*5 zhK9<U?^wG8_{UmtrfgZHbYA$t)w2cy5k=G79(u$jK3UV%!|9Ofm_M0KP4BXi$oj0w zR!_J#O!q0c87t<V^tf*Fr+=;=-39k+&hvQKq19SF@u%UBijxm)r*;2TGOd06z?&=n zTHK5a(~A$f@3NPTJ2pvJlwYgn)328^MRqRRuac_&d{XU|uPbX-|8~8RsIT|ty~En` zDtDITTCVi@*u};F=f6OySE10^?{k7fE*Y-Yn&`iJoA?*u%rhktbDFNMS|K=5VC5Sn zg~wc3cina#G5g+Jq_k!GrO3Tbg&QK7TW?f0U5GH)y-RI=wv@MaCclSs_1fQ+YDsxk za}WOWJ|X<1w^MBC_AQJ1!X@m^6@C{}_`R?wY=iYQyN8n%D>wesI=X-5^-~Ro0)|QT zzXV?<E4beY+Hqp;OPxJ#2QFy#WFC^O-TL=8pGn&vo81>vYT8XcGAuMqiM*`&OV{-E zM=i$8zih4ViY7UBBrq-X&J56~J++4IB&TYJ>cVXCk4!1=z5k^%GsGu(&1Sf{%&dWR z;<bbWX-n&4wcgG6p)M5jSd0H_V^CJ#`AXf`H^x7Cwl;lmJM>qBcc1pTkM~~m9@ss9 zg6YZ+0uOqpeY<||nB65gn*(wz$4hoiTf26*c6_!{LFd8^bAC!Z?*6ynX^Z5wX2D5@ zs_TM8nH+9>Jus0iu~Koxi(gaL^!Bd*=FV|urO$TVsEe;}zWq~CrewXSG4+(Z2fuNd zlX=Ic{t}`7Q>Ud<Gv*wT?cA*Q$$W`Ki@f8lKNIZdG^!@A`+m8d|LM}pM<&_6p74<O z2*<i@OWucac<pyOrt1`KIoYJ!G~wtL>uRH9vzgB}S128HJ<gFL-Bz~Cf2Q#9)2j{H z-mIU$V(#Ueziua{ER@Kue>weO?q~g5Q|pVJIJ$iP%-z4}ukPZ#AHC}rzd32KMkeI= z*9{+L?!579>VCsIi;U>Npg+=+s#>>nPrh?4>;C_<_DkzeGZrT8{h(_pcs_RKw<G^A zy}dKNS%1qxCfC1C+e{Ae>@5*p^7*o^yZ1p({|fF~OE2566Mt&I;ufpeLw5&dvwvD@ zI{u+6P5%n*(}|rbrN(@$^sBp{vM>Xm_ZdH#)6XtlQph?U_da&xxgQ4RQzF~;8qcmh z%WEio^X=BxtG)<@J8W{hwd8B)66u*cS67`%5!IKE{g{we^YZ?D{WSKr%Kqx_-;Hc$ z{Qcx1;ZX5;VFaIFg`M2J_WDE9+2!Kr{B@ndC6ZlWwrti@hrGgdcEQPVyoLwv&$_sG z$xq&MCA#fguiA}o3e8`h|6xtqpT%tzPEVyKOZ|IpzIpkag`!grrB6~6{jmL7=<FWD z`Xh4=ZCIaj@%XGgQ&zG)tv*`IdYfyxby?H`xsW#%SuX!JFL|$db$^|s-5wdEQwwL@ z*f{rqUvNy0VL?H`{1ZVea<1=MYm_`z-`vr-R;BA)_@U>s;wD5-J5YO2_2BaKseiY% zPnmuC;<3VNi<P0ZmO?c_iYphs=g3{O^TCnDui5_3lq=^}zy3sa<&^0b%h!H*b513{ zu<w0C>UHkQ=Sk8sb61749x>Fu@@BFg_sK(kbAvxL{*HHi(f`BVcWvmNSLtr~O*a!B z`vyO<@V<KfZ1%J15*~kLl(sQ{eUc}?L(1gB-2A_HeobAq`|dxE&l>XLCdV(H{-{&m zspxv+&OdLh4-tOB{muQ_-#0!;xD<Q3C;PF(+OQuD>&mabU(7$T>BX*)#mU+}*B^^E z9@$>JB*y)zv&<9IDO&5#p8K`@$L;IwmydnB^D4a9>9^aG^S`g`xpqU}RQspv(LMP+ z$wxJhCNR~1uekBSTdC7+%}>dfQJY^?`xMnJEjqehe3{9nhM6;dE!$I)!s-4w%)=n# z(1C4P`=)d;9}QAs|Ff}#p;REyWv#s6{Bv)cf3@saHMsps$>vV@b<t^-X<tIKQ;qa3 zy<Q!avwU|qZ1*Fn>P((<8A`hp&HTcHs;VC5l;5&778jaoBirg{b#Csu(^{u9*N541 zJu+jSm=idG$8YCen|mc$o@$%sEnF<NX<O&7O%I<=6?WV|eKPxph#PIoZrW!%UUYb@ z@YcUstLvHP9@l?*cRr<Y7cRG(x6^u2)3IAj`M0>ux9S~@*4eQ8*!ljd=2c7vasQ3( z_i=yMIFwnjbmsSs&R(4}EGCK8Gj5;v{OO^EE(@0?GKGF?<hdoMv`zWTCKdey>p!Iw zshl(Tq+@jS%za*sFW)Ll3Yw}pN_xZl+cwYE38^g&{vFG1wd&9&7I#m(=5U62zgBc! zNPX?TwQWYc#FwAOY`<?g=7}uW{z&%0LNDG25nEpJPg%kpc1ixm3-f|+Q(v4D*|<SD zg*B<#wD04ZO&@Km(!84krZRa(^Sg#csHtcl4(EC-(NaC7EpIJn*`^YM?BL{9mE51E zNo+l*UB1{=rV7>^ZaAqpr|<Py{Y5f$N6aMK1bCjX{X8`z?g*cCe~Ut@y11*O?;ITq z4h5mK2Ul{w$~}t8s=WVYk@Q{`txusc{{trHWyc>l`NOnknVgxfUjELF@o^928+iYA zUb3ye_;L9UxwY?R@QIY2dQo(AtExe(?B%|LY`SWFN0V+dEK6Gb)ShKUozL(2i@Y|) zhrdkP^k}K`qEBCzFmJiZf8xZ!`k$4HG&rP$IGNvNN2OaoJy^*$-SM>Ifz+i7CLaG< zH-)EyZ{Jkz@828Mrd&S69VxxZ?OMyarv{cfvCrfSQbRp*9sD08OqqV#WoEC;=~Jal za$zz2uO=(jN!|Y>`>4V1gmd@x2Gf%VSBITm&~*NRk%r}x#!A;6)8Y(wUE+Ho9dkwF zuuA4!mp@UuGr4bGn{jsGbd3Oa>xC?rZ|ppo7Jar$L{L$xUx}CdRcgdiw#nircWf0u zvgqR<#s#MTe@X0|b#}$)NtZj<Z2T6nd^u0ka$ddexX8y-qPLe#P3F7TH0^!L)2F-t zmFmgu<etpE?PCV>)PGjtyGq!aJPM*8L<F8lTv=(i{@7&me9pWw_3%ww4yk_Iv);nz zfXb)JU(cWAwYfMwTsyO*jpNb#YuE0ob}y}E-}L1o=jX7~yJr0Hz2#WTzIFeX8Sm3q zadFrFl@oh%r`hs^MyqU2S3v6LPr19c1f(aQelu-tX72y!!dK^ge;yay^XPvmkD5*Y ze$9?a0c>6?Smt<$Y!_Mj=&I<%vy*=s$}PYCX}-R3%9|C6R{xGAKYhRN%)(FMEp{_+ z|JN?6d*;Elv32HVevybt(n+%dUi;2c4(#CYdeeDdX^Ad><m|74e`10xCYsDY=dpRV z@s1yUlINbC@E1!?-)}c>=f}D~|Ng3~Kb0wqJoRYz9LMYuk);28ZKfOxKc3Oix~27R zLHUoTZrk{~zubJj@T;)E_UzA>rk_u=>+m_ed|^!-^OZ@fbC+}EeNgT7c3QY};n{zG z^nYH-%JtSelKo(D{l_2v8}%}a?Om7I&b6sy&ri#b+7~&K@%OiLAKIEEEO?sO<l+-b z4&0CLIK1{>pzNjpn+-LOAK&nhhf}ihMAXt+i>VqX`dc`x6yyJ@9=dUTRj#W{-pi)l zQdwUXl^?C^F=oz*{3@LCZn9#}$|b>kdAq-C{m*b}it%5UmRgQdTkpG7SK7Z9M%`g+ zRo$2Us^UjnVKZ~AMBJk;%a!jlVx~&{a5Oo}QdJr~E#v}IQu#mDO3ed`aVL0})V%b% zZ1{2E{Q9=&w=r{eYuUbI@Sf0d^66oVqUZKk*8~OczvKS3bf3CYe(Ah_&r}y@ri97Y z+30SJ-2d><12c;-&WA2%z8iN`xV&Lr9C|fZ*8cyw+lro>ma8V8JMPl@F<j+$d2w~# zw%x`r{S9wfE%|FTd%Evsj!%KN3({g|$Hj|_f2ch6T+6py{o|Lv3eExLPJ4by%@m&T z_}GP&`X}|j9q?rAo3Y`(Gqb;TGSj&eqMJF``2838?AhwmBfqcw$GkI36^#TpUR!Y} z@2=LN?o(YK{NH^%?tj}`jN#M+^G|C(Ma(>NWs<<(4|f#fCUmJql$nLUo0BDx#CiF` zO`!>^A4`OW$(NTcd!N7aYR$P@J)83S4&C1_<>m2!LHxO8-0ka84`*h)HMsg}XLie` z$duq;%#JH8TmDvNZtz&>W3k8Y=InrP^=WI?&s<yjYq_4ER$p=cT#4$^8GL_TK6w>Y zw-n7jQy(P8l{bU=i2J(#*Y@kME-5cL_VWL_w~S@Nsq;=qP08WPonHQ?CT-#!W3EqG zmTV&Ghl-eVrV6dlUdAD!$2qGZtiwek|NP0)hh|>+76!sU?G>jg-rFQm`(mEVtHbN3 zCjC8nJ?zbYm8B|Tn>Wjxz9Y(NdvfFKshh6q@|8ZHqI*o%FFRg%{>1*Rr-HXLHNKCS z9(p#W-`YtzgwG(BNx5>qntIxj3w^5RP91I$+}+mEZE)h%jg4j(45DWn+zFog<|I$< zU4@YMzpho*H~-$A6Wys98l^J1<g^pRYF(q$_uN-@&WqLMKYJ=OqQY*&pY@yminQP4 z(Jq}SQyTDN=asTuwPkgA|DBFX)hsh{U;4@_Zok*<PZM|q6;8ygKaspAujOHs8-r`L z?mWgBBA?ApmmTG3wiHUemv@6{=e{e<hBis7wlZcPJ!N`hK_$z{^BG5e6t?~PCB6J% zzkU9L&s?d8tCT{-gQxADDWj&|x%;Kl%<QVbLpwtEhen=HD2n*2oxI3xMvq`?>h4VG zP2ZnCv67trKQDPrGVlN61$z}YeEm2tafZux!z{yj*IsC+N9{N#a(NMlpjr7t>79pk z92lN=C#-yPi23n*hpE5VPg$>jWGo$j&-~`r%@_B-IlklT@pAvQQatgZ0t@cOpRxYE z>E+bF;psOX|FcWdtUkN)rQs@rXLGNvQQjS?eUh=Y^X_J;vRj4=m;>TYX7BoRPHNfg zH`9MtZ7QCbpwKUy_BpvQH{-uR%r>u^{jd2_XRNwEbCOz5P}8%jto(qFFES*4Exsu- zAz9#;zR}-{JO?jcw2+P6FPr-4Vd8~r=G@Ode`b^s>w8`o&b??__Vk0M|D8m>I{i6) z{BK^8`>*FtjMI;-mYCM``h5Ma>`(QYOA5Od|CImJT3xz3TFHIU>QmnJWjhZzus$nZ zZ9M-zgVfBcR}&V@a5v^zG&^sv$?V*KxL3x9U+xgQ%ETPK@7M(9ErPeCvf_eV{cHbN zbsM{_@3<H}=k?zx@0%01o!?T@Z{zYVQFMlnt7|s@-I<QZ4Hj|)>K~b3!);>!>-as} zb+TJT@9ucwk&*hgl5O6DxLB18-|eq9bssot;^$^*$RErT!==3_<@;QF&0`-FWP~lx z323Lf%w8_@wEpbL8BK*uB1%sLraiuApuex7<JUhP!9t}c{%8HlW@)H@T62D)^R8s; zo}Oz~sV+C(fAfsprTgfoeCRLxKg*XhRaOX`<DN6?+y7+IzBOF$U*3*=o^e_*=V%LW z;7-kXa$66pPcG=4@%#2V!L_e%?wq1radPFW502fuUsuom>F^@%&0)v;;)e})1<tW8 zpTYR&*H;#+cWX+ydy6h@Irv`FXw~g)&Ib?dwbDNq@aD#{<dg5G+&7Fql4juQ+1NDU zE7#t>&h4*n6)wv=pSR<ZlKZU?{^jwHXDSCb{Cl+ib>TPfb_sjK$iG!gyyt(uWs>E8 zS(p7HzI~R`cf(&NbkCJ`mc4I#St>TCZ{3oAEq!s#Co6*6m#<9GPPx6@*j=ivFSh$g z=8H=weSK^kI31r0dOVhz|M}601@m28e0Hjt9FukL)v1~4C;a%#au!Ls3pPvK-yV^+ zzq7zkAoJKc=T><=mR)^MO8uS&Ebrdb$0WmK{6$fKNlrm*cJ+^@dG^IG3?@Imx_L*^ z4(CR_3fVPQl`FN2u4EZ}wK#V96vwIbef%$%1Z|36bDneE6}i}xw|2K1`|t(?Medc1 zES-1rfUWjT<J&izXILCRE^+N&$((oVRuw;w>hSYuyAg8k^xdpg>-nc1NHjLR<{)`B z_x8HQ&jbsfPZ8a<_gMJNJ-5xDS@*7G-5tuTweQO#LGCDH$6Xd@d9&Wz@0cTFEI8Bo zVphN}COxSK_vBInXRKck<|M($7XLx{%ItR&H&wV7ONTZT+${KcTY2`LT{9;=QrBwd ze|kaq`1+T(n*aBm=5e04AkLMy#XwxnBk;i_<p&3^x!j&&)_L#xzq?oW|84T0I^_&Y z>*Z@2+wwS{vcJDu-NLv`Q&)veIkENh;fC()kUul#?7h>OS@F7(C)+2Yr&V*q)yyBp z_U~3*d;M|Fe7pUrek^f&RyxdB?KjUnooRD-q{0P@@IbE8LiNR$bCTZXwVpYkn^$z= zyINSZj*FM}%3uFyon^O-3dt6c7ngimGw<5rCCe&5#q3%v81%mQaM{i`u5p%UADrj@ zrMRTha((>8MBdenb5Du6xN--?Nw@nKw|aZLKk3rM_o>eDo6?^7iY)FcwzBogZ#2~@ z&_0)0|NLzk-#$}=HB(<KHw?%Yl<~9>`abv91F4yhB=hs@Z{LiF?W*}xCp7uHW`)Dj z7ndJj?(Z@SIMDk#PUfUtQp^iWzk{~gi)R1-VqPM(sL1Lsulk30X&Z~!jalrcj&Prr z52^WdEHbx!-=8|gK9v`7fhEBfFD~jQ7{y%@e3|TfOY>xt>|D0Sf)(PWZMsn_B35uj zKXJ*u!7^3#!n%S3lh!PmYj^G2iJ&=se0}^zA3qdiTz@y^<&>9uzRyZ#etU=a>Z6Xe zRU1BQOXdAoS+%1obcdqe?z9p|-=(G10o;8pcaF?)H4e~qoAdALt8?>L{%BZjx?J?v zvox=V`}+RIY3vm1_ex%QE@sBX2^Tq9-5+?&Ogeo{$DrW0_1-7F&vs5ry1V6^*RR#p zhjcYroz*QArb;beC~I0QvS(*y{`=S4#R4|7O_1`OY%;6N=>%gyJd;ZEO&+!5GyQ~h z{x4q1HpxrVz?~s5AjDevQPSQ{mlIPs)uwkzB&%@seEIveB;L!}+nH<9FU8<vN231f z*VYzDw>BD8I#1xRZs_P+_9pxPL5FFoZz50K+$!<Rp(VIqZmyDpjEX8(zf;@^k?zML z?M2>~U!Cprx>Yi5&HR>6LUp~NFFg8LgI336eezz>ry*N$d6$atx;K?89`<s$7=K#Y zy`=r4>Glm}8H@{g5_K1Q^ot00aSA-j=hRved*yaQ&+1=g!G4XJhI=1yXI5DFuTOon z`_t=9lQQn^f3n`7r8Xiyr#$G&>s~><^0rf|fxiPM|M~J#)@I+HSzPKG+QM&-PS>9F z>(zVdvv-eYKT+Eot!C$6)i_1IagB#!)Y_dNr+Y1&@AXh$bAp4x*VVO3>vju?hiulp zTKRHI-Tgh+wY1EBDR-wcN55Du*XAg{>Zj+P`<;>b<^j9Z_v`azmR{tR?%p~1*4pS5 zk(!xllP0gb^}XyCOZX{8$Ni6v%iNpFyCzBVT4>$^UG1;6yT0qIeoprKa_17O`HCH` z`G<TxO+LnRfAA5y)0Oi|JH%tRkoD4i*EtSGX&WkTll}hcbK#OUQ7Orb_in^apI{OC zxb#oqCpVe0Xz?@l>IaUQw(0fpTwDKS(d)%~U-86qs-`a5e7Iuy%!At8Cp1^EtlfD< zC_62pRa5VfNVwcFrE4x%*UGUOF_}y?*qJ5~csY6LF@@7h_WN*!*C-0Ro%(URuw`1D z;mRl6v#%L4_dBegsF))4Ci2R()0S$RZYlBqXqYI-?Kd|&w@|TNRN3PR(|wKTQ+k3C z8yr>@Elyp?(d`<;awP2Qy_Tkm1sxlr+`=AMJgxZKw6n`sX1+=bU$>;i(mJcf_f(Ys z$0shIQRnUT+Urbj*8~%fzwJwJ*tZx~F=@~Jeef+?@D_&#^|NOScG;N+b_MUxQtIFI zrCNdIeErum?<`&)>Mfg7v}XzD(noLfAFcVg&8xPXb@>@n^ScWcJm&V~c<0LJ8uMW8 z?V>}C>*ZCQJ><m8b=TDIVsG4jG-~#mz7uEPUA|kw7IRa-QB94fd~-lnrKy`%_T8P% zmD5E-c21Vw_NYs1{Swt?@%5|azNvf@eaQJNZPw=7wz)j}9@NZBvnqNU@qJ^qyU#CO zk(aMSWLpw;TwYOfy+n7n)%}%mpAUTa_ge4w?R@czMaS1%s@nS7_1}e}rJ8r2EX?7S zvlI>dd;flKY3|&qA=|#RPW^YZW3&3bu5XLts&w2R*QmZ--J4~zQ0uTz*sd^VN&W+C z|J`Zjnqjo=_=?jfma?*1<gP1k6c3(WFvEvSL1V4(`MQr^o#k4uKX`RsUrg%d^EF-O zonI!*N%da5u9In{$<Dwio!S$J&UIaAyMFA4##hrA=iY!Am1n+lPI}ZYof5Vor6^i) zao_Rlue9XmI4;|(^XKi>AGdlFlsFE(`^{P=%$%~rNwt7o<b3CJuDfj?uVx0i{CwXZ z%Ifjpb!tlyQ_&k0rdh}H**7qEl{<UpFr94QoS^L+`p#Wrx&Qs#jD*>q5>Ld|-<&>2 za@~UR+5-Xm3mjF1-QCWgdwS!R;2o_V@0f{eviV<_xMYO0ytp-4IQ$6bT8pPUmY4Q* zWiQ%Y@|I=AJ82G~&VrPOH+R}Bu`jfAKJ@kUs`_~TMLW3qrX?s$?A*hBG^XlG!}^_$ z+iNs6_6eA5j#!m?;N)@bV9{$WRo7?wP1EH5nf`O7MdgMKQcE8s8Tx2cv+b<qnb<8< z@Z|MQqwflm>utXI6*L{p)I4!i^Z0710Ihf8N^K98D1>U%EZ%Zrm6GMnWgexwvVS)( z|FQ5*mcZtcsJ2HQdAk26EU?PTG&0<`{;|Ek*L9sU0V*xh`(FOgSmoS2IW}J8wY+IP zw|4Jy3r5MLTFLlDAH>ty1J8J<a4wTq3Ak73zI*!dh7AX&v-7uad$u%FY}w)oAzcjT zL?w2Xc-kFKU&P4V{<V^=yyM^X?Jv?+bJRtB<*Q|nU;HD>Rw9ahRp;8wJHP5KCGMSb zxIy8-g970gl>^$wtWO%OL_TM@HkWgs>p1AO?TS0k#ts(+n>4<Cd|V=|4|ZApm?0q0 zspIiRIk|ailhu>6`rBH1YJO>6JNY=@(P;nFZuWU=ZhqbLHC1&<W#{=D^LTz7*NDup zUEX!2eZ?;A#%ND{`<Slysx00)RU&S7C+*8(e<n>0SZJYrIXAE%Sf^BIrhnbW`a0Kj z3d>JeTB+P$DLLh@4-e<PQ%#Sy${8gJb#YD*^mx_j&{&!o$)^}HZ#~cXxH+04_Ts-% ze61Q;s|DNZt8cCsEoQV(;o%AJbdD$qv6yzSn5+47+)u@bqIAy_J1*E;seO6f)uZmW z?EW_9*Yo`Agl8%*JEHuhT;qTLjQ!I!<uru-w``27Fc!TpEw9D2kN3wXX0N=}iW(CZ zJ`=2zW4wPjJNM~l2j%|$H}N|+EhyVRU72^I&u`TaNmu7=zgf4J@r3^d4fhwtmGiUj zr+V#E;!|JHbK+}`{EV4LDx7!7uK)C0##v6ywNrcl0#?C?(~DStty#OKF!GUjpi5s# zv`V#@snWsX?pOW6A2Md{D)HXFDy09r(9V7KhwUCK`Je9hFAq>)Pf=lyQN9|tN95pv z<^ngl=Kp>NzH7Qp>B(%l-H^yKhoO~=(Xst`O})V;?M>WV+=t_H6|@(#C$lL^KW$pS zzvWPOX7=lh_b*<&X$whlocmfj*WG<aUUmBNH&0v{=PNuZtqFedgp-pe-bPb6Gxhq8 zZP!F)n2fZqr#TAz`7PJ!m~}G0=M3+8yD9gBGrvB~P{?@q@mjk}?5~&ea{g_rxY@Ay z&Gr4SH<j(oVN#mD;p>FAN92^3H_N>=Gxm!4d8h08gSY$N{b~JNxP1vn?i}w57D2xE z#`#zEb~$dlxb48!bu1|x=d0X#Hz&X2bjPjDY+p4+7e0Ku&RTfxqblw~=ger|%rD2! z78yqC%o6A3e6oJyyBj+9|McXGY)KN!x>odg;;|F=ILwnAQ|eq+{8yhP=ehRNp394_ z7u>x+J=DA+d*|d^y3sR^tl83|(|%!&-NC2PJt2OTB~{hUx@uZWddh+~g~iF8x^z-z z*I|`?O><^WTli0sWs=tE<C|uk-20`!qmw=Qy+?}iDT&azJyPY-J`cY52TlK+$!gy+ zhnM%ZfW)^o{>kbU*G@b>F7@j5HK%X#_c){E<!UT#UU+0YFrM|NX`4>-gR=sEtc~7y zzBR6P+wx6VQIS0_#<sHebXP(4Iag+(BU(2KZPlx{&kitn7H6MRV{A~mZ|Rfv3XkXK z7PRi?b6zHw)U0wRL9zYA&2m${Nfob7RbAY4RdMMnpYM(5Ee>_~Ec!j$+U3Oe^pdqt zLl(`7{j%iLkJ^yco1@n)-1=R@q<7Eln^LalPO(mX8RE@mU2M<E?_ln<_P3q+x^-5s z%5=|pU)Z{3&sQ~9&sVoLWH{DTp4v2BJW6=?Zr{${&pKPK<hTjDY+fbytW(C?_vnqy zU!u0$ar5|9Dw+GZY1+?SpP#IW&M(}cqR#fBwf;{c?@U>NJ-YJurz+jtw=7mI<!R;q zuXg{EgTFO=IdGsN;oJV{<=H%$(Qmfjoh~n#-(~EqU}s=^LC(Om%Y*0Rw<kVXA}9ZQ zc(j^!`d1k5zvk4n=#Yxyp7V>GWkNqavo=~KdG&MTs>)CwZ~I9LoSpuj%<lSJQ1$me zi_nrcPbV^WUJq~k!SMFjgnFBxN1jZY9hZev7YJvxzTm&6nCx>yOUAN3>h<HryO-qL zUb1cey`A3omNr?NX}?|U{<+93m&fz{zS|YcL~CwxX>eO6O0sv|DyjZ8<M;KBTiY|( zWRD)wVVyc}di4~|cQ?KTe$;>ZXU@sG&sO_4KE0&5G%1VOJ?izDSmtv31ES)hKmP8x z^ylKXuE!~RSpMyanOe!+!MaZLW#jzmhg2<OV>cQHb^MR|_4{S`&c4+z!`HPw_BdmD z%5;Ui)3<KLCAXB0*4g~ZGMVP~VU20sA2U7kQy<;W7=L~uZ8FDUF^hbNoV4w}^r%XM z8BWR%nCy8&7qxsmV)McH-@~9!R~-H&duF&)FB4)4&=bA5t?C$?LVBxR?d3#{r(J1J z_;#xlcxknIa475Fp4vTQSJ&-uJ&85l+Z%iLt`-ws_^?-C;hdQ2X%pY)KM<dN<-(dp zKF)68vv)-Cn#*7L681xW(rm66&N<A2zgIe```hPasi#fa?ziSp<hoZ`V*9d^v}ex9 z%#y$Md5+Voe;v#oQ{PQho)PNjdp+#ZrOC#(j4w?NzqHO&boYyADxL5Ca~fCOd*bHq zX#M`;gryblL|^!Kl;x|tNdK^kTzvmmVE%*!yDq*ws#D^&Z^^6LuGSXQGsP2=luBL( zoqoTWSLV=>^9xxgFgt5Z`@VWwhI+uYM=vj0aVYkEQ|T}FpSWPgj8Kap2IimbF-(38 zmwb=fTz3`Vn8^P2*d=pc)0=B~pB>GYsCf6sZ~nAPDp9->RXY|)CK=s!;%!dR5Qr)H z*k$g?$f#cMRGz8ny7v9k$$=fe8tm?0`jxtBvu=9m=~uPh%)dISxVpE8zx%3G@A@#% zeoCtHkJpvI{Tcr(;D35-Lf-V%&!2Sh%T3S>j;?;{;S!$zUy}dU%1K&37n$`5?%ero zxwHMgg9&jQTi0?eY?fvE8gAk`Z+E`O`ncNDDlztT+WWiS8vnE8ta!NfP{>Y^Z~XOY z4^9QQW+&<^)Y`p!-G6M+zkQG8l?8Z>6@pr)Upi)GpSXC_&5+wHuWgo|J>4+l-xD22 zUHjSXH8y=q>^@xm8MLncvRq2Uti`Q@yZqEzqg<YyC@EpN_DpB5!k5e27*Yhk+>MFb z<8Aj+`;T6iL*0X<MLK1V=Cm;%+$S&k=xX;gvAQSR&N63rO3KGaF1mC6d85CR+5RWG zJ2~a;Pc2JcF`wn{?{@RI?y(EP{J7UvZSS}DQk1)(nQ-jF#T)wDGbeOTbeVE6^~3VI zl|C+!>Gk{5t{Kh{X#VOZ^8N5({bn|~SFAVpEn}O*v2~ww@)oD#kxSxCZY^zp%OWP# zSirN~cly)S3WrvyN@}H=uIHF4$MybKw4ci5nSOT<%WulI<cNQ_uwZ9aann<Y(62L{ z+iT};Q9h^cCu1$Vkk{kqT>Co`-^}|Hzh2(U|Idnjud`B}<A%w`hwsl2FYP-W^!cn} z(qc2G*AM3w=9de3NZp#WUu>UE{eh{kb-o$Kn_Vuylx!-v@5J+@om_4&XK5{qeKDKG z^~UKNvv%&-v+P75|Jz@zj7=YpRU8uCw`TL^vMUEXMb3I}kUk&Q{`i&mKi;dXX;nM# zefhV&IR47wf~_{nyfW4LKm6~XDKeFPbj<F`N4-DAKQpE$X(@<=%)5Lc=-*etlTsGb zR=f#lwys~D<I2$K*eILXbVSB@#pK;{KCRgLoV9j)-9`7dJ!gIY^BRQ|3K=*u*nE9c zEv`BzHD!6@jhQx^`z^H_)VcgVuMAi-^XryhSM=Dk%U4d>lf}0`HkE(F-h|ihf4_Wt z_ui+jE1667XxcDj@0^+v`&URjd$-$p#R&p?>%&~jQ`SD;(OTDYAaSD8Bwc1h!^43p z_m|$})!q1Rf>LeZm;by*sf`;dV#A%Eq_n(b(5rdn9v(e+1&_%V%cEu!c8L6(=ya;R zT|r49;=!dq45bQhUf$8+<P+K{E-O>_M!)Xa`CChWys-23o}=}_f7*sSw*=PCZa%s7 zb?qYO$n@uVEytHFReyGTW>wUiNmErWnYt`6Jr*MVMrl%Z(e00&l^h=@-R^kz^Y7v{ z8B#AVt9dBNE|BzD%yKN%XrrUFzuUChYkz$mZUy)*YTNWwai(2*gNMMI{idmkoO>Uq z*?4<1y<8aj^?}8OJt2(p?0um#r<!;vabJ5J`0%{K57jj@xL#|k*D7DPGG4LdPm*iT z8I|}um#(i^u&#Joz)9VUULx0awK^}F8hNtZNoCj8n@>%G>`t|P-4XqlmnHqGdzTaY zzs&ek-w)auPyRYH^HbK0aOL#lZyZ+sIV;%N%rx!m618OW>9?19`0tQ-wVwHyS)rBI zmUk?>XLbEpyKb&u$ZMm7op)_nn`Y}gJImx)&OdGS`Kih0=IULUn$Y<-Tb*Ik)-OwQ z_Nhvpe)g^G!zKmAHCIj*wHIx6z1e+xj)vl`L+ScUH}47U68T*g5LPE7TGF`b)7zEb zyjsOy{CD#%d&iR462W|bZR-o;ISe~bH#{rREBpK-g+p;s%;GZ#3O`$kFScxxs#|}J zfBlWE%pweFZkwlSiLMko?fvsD(@&>VR_z@Bjp2&=*&gh3AGnBb@7xqB6O}Bazk0j! z>~7a+2cbl!Oj(w9&I&yfa?;cLZ+xBm`v*hqlZH29uG<WDE%BXk*LSg=-#p%f;oA1+ zc&CQ$x;SZ@j!3f4#P_nR{u&ql5c|r@^>wmPvA9lDfSu)?!iN(~E$<ra&8yik?;w-U zk)=P2*12;DbFj?SichqEELD_Q6xg$^VQS#Y&HWQsIR0K^G+EvFU;c!cuf8sJU;LhK zOY}9J`BQlEz8!i^0h2^sckWpdnDg)Vn@$TmAFVSxf5fIa?LDectf(P=bE&uX`2^hs zi5csTnLe>vyn*?z$Y<8(7~S7h>!P_1yEOUDUBBV$&Q>1No1Ez<ro4Z@xY@qLdG@P= zntcl%ElSV1Ic3_R7KtNM@?XdoUHN@K_yl{gP*zaa+WYn<XP)1YdmS13JUQ+_qvE9( zc0Lzad!GOQWo0ib{xs&CUytK9&*T5<uO~Em#o9Fd@^r{wylH1HyW-+)tP_+rne3l4 zk+XQ+GnFF;>-N2H*to^7{rQ9HbGs!3A3D12^xk*yp+vrEcHq9Hb{hf(vi?_n*3p>y zSEr)#bH1XPV{*dYR{x~Zt%4d$uSJ_X*|eOPJF#BBmn}X0;IsA4Z$(QF`JW6B%1NGW z^u#$vcB0Fpy{CV^v(#YN$#i)8`K{H4LY*rf^PMbC2+4e%G|}qLH|L!FxphAURy^l! zs9U$z;()e#Tid@aOPaMe9CbYL;xX^-HwwP$4;CNwUGTEbchzf4nYG^AzTMdDcA@4* zQfVo}@kO>@0^Juj9C>qV#=flH+Pm7@nXfiFE>nBhIq^l%hl|!X{w=*dd*!Ky*&lDu zZ+IIx$Bl1)><jf~kzHNcvdQnKIWo@p#QuBf-_W+}rzFmt+4B9q-cQF)R)^I0eWfzB zEGPf8yj9pb@$#b$&AHNY?*+STqVn9QE%Ns7G2!%eY<cu8%GH@!{QixjDx6%hi@(@* zbG>}dqrPP&XN}SJw#S!>EMCh>zcV*&QY$DC4=7}QV%0p^!KK*ha^d`w$r=|M<jo?B zuSIV=D5<r&``M;dMh|kQNqachpV)Hniltek*S6b=Hv2WYPQ?C937W%t)@Y~G@3>Fh z8jrQ-?+-e3N#Co^f3?KB-&-<%iP}tSpP2Ffq(f^>k!wKU>4Jq@HkG?B)BRUd81-b` zn~=q-D+-E!e4NM@V<hXPB2YQQ+w4RotNtv#+;E@yHZziEnXK}k`PI-eIo;vl{wSu4 zhjp2ry5HZHRl1W&Z+%1Fic7h>c)|(~tUA4YOa951tTyWu!k63TueQ0`VHP&eDt~u> ziGSJpBgcQ|djH%Q^u2Jhiq^9&Ib~1ZNdNxK<-9vRoM{6n$6UErsIOqYXPv={n3+3M z*^)J0Djjtz=AV33c<V{SXFpyXy`iB}yn;LT^0(;+n)s9b%$tO-d{umSEu{9<iAbTR zZ@xS2bkX_~?%?}qmhDeT4(lCT`>t-xY3xhpsyP|?M(gEb%SvwbUbCNdfzFMJ)+a*} zH81|Z@OR1fV^89LSeqoAVy^w4tT&I_qTAC+r{9`!+qwJG6c#1FeJLFHii`QB72A)G zb6Dl;R){vu{cl*Hw#j>f>yZTi$_vkqDtG?AEaH)L!Ptq9ozL@_%_`N$DZAPl-`qO- zRU>X{&z6dc*!cG=dakkCd7L|OB0^&08DS}toVhW<jw?1CdiCvt>CVr!(}GtuY`J@z zqw+%VwtO8Q6^9ACbZcZg?msl1Y4S3-Xu+2QmfNq|$XUPJHm`WP%ngyRHk%fF>)FWO zw(rg=wyE{~dkV`~dAVME&+T+Nn7crGV%c%;ml@u&X>U^x?Em*I<iYv};WIA2jt}~I zy!LT`ddBp9H@6=NK7Y&ZNpz(^$qn9ndH&j`=gxheR_0O3RG+rodi$1)377V75H$Hv z$&_5JzT%C=ytZvulBb1L)>nS`@p^9vd&c5<CNJt7oCRmEO`dg*GbX-&{-*N|*B&JX zH%#mLRCz*s?<VeZM!y(xnBp%t%n7e(zVLIpKL4bj#Ww$wUVQxg-1gwQB>Q`Xc9-5) z*O{KzesCxB{?mZU?(PYP_MJIi$9|>y)2dnPj+#Eb%KbS~|Hswv|9LXm{e`w+xhGHG zp7eX+j@U0hO&LASlOqf!vp9eHcwNM{A)Bo?TuRURo05=azt7pVw}XC*pJkb{tnU0y ziIXSRFT1g}!Pq={o6*``AwIl8lZ0-y+A*i*6iYfeC7sdCvo7vCUh3G`nCxY?d$q#f z-5;7-&d9th^>y<Wy&jkHrHE%~tJ<u#n0*`<FSod*2W2HSrZ_0bWGDPO)4;xbk0Sdk z@xL+i;~$HzQvLS-&Bi%Jn*x-QcK+U@T59?5dwKeFziNx$S^^6{AADx<fp1=9(2pju zOOL)>-~DRg8UD4BV$Z_otmt`R-?smbb;Hr!JiA%`tU6N=$`T%azR=t@rl>DxgLtyt zxnFZV8!Bw#5|ZyoiMPA#^=f=jYoa0*vB|ycmF)jhbqrrlmsA+vxDfH@AbY&e#|^$m z{ND>(v&^YAo*-)c`c}t{xQ}nGANgw3b4}SC+0f|_CpOvokX^jFQfH9*Q?AU}XHV2` z?49@d;#S9V^*e1H<asA5h<%V;=y-AK>mAdk2F}hrbVsFh?$3LVuNyPnvT%%E=V6jy zz}j@=>D@%Nc<EceS4F>QQjjs3d^0k98w>BpbMXpO(_hZ6{o<V?IJa~O_w&kxT+dmo zXU<#2{J49Xwdu{Ls20g7_dlj|C&_KUrc>mi7T)o_S(y8;=LH7sTlcTs^V2+duj|(z zmH*RB)90!2y?oXE;Pk7dlU#ph8um&*uYObT!zH@nkmQ8tOXH4utqzOO&|fj}<qh-V z>+{>C@5;IJH&;#Y)X$EXE&p_O;H$bL^{=vIN)<w#ZO?377M@zzaqPsR{POox*t{=$ z#fbd9sj*05jmnBAei01!fA~i@icJ(uejD$Zn$KKWAGm(eB37ST-^Sh&Ua4)Z()};; zeEs5M+}E5=Jd&awxACAYo`UDKVvHfmm(B^<jqSlr_4)wjjZ_MVyXrbU}&tIPfq z-=|NgViELeUVrqcbjnvzoh?tKPJHIEP1zEA+~~O6i&c_`KD<%uzn#8gr-hZW%3>F} zr#$=nehR#rd1S@vNnb>@qKzVhq-@i_aIQ#+k~gl6Y|kv&cdTA|<DHC8(tbLfe%x_k zt5yW+?ocY@IkY)+jh$7MWXAqSn-eacc(ci@eEN%^iX%&TWi+Or?K6-Rn7rcpj4i95 zFrQ_<p=<v?n!#b&tF12<S*}?deZ1t-mdlCCbDO@|ToXE|6BW8~m#mj-yZ^z5mlvEj zRMuRu<=#%Wc?!o2W&}Oq_RMe(-nwSjLEC-K#U8Ic4Hit^uq@!?$!`H?pOzgnJtbA* zEnGeMmD2Obp1PXNOY7v9Hu~453v)jFx!SGtqUXPDLL%C1r(Jc-CL0R9y}>!{Mn$Qz zoqIxadVQSg^mabMBTIHIi<w<qx_RgGf=<5hrx__OYSRxY&rk9Dw7qM4_x72uPq;2P z`{qb(JI_wnfO`j@7)aVa<8D!43tFYFDZ!ki^!QlKaYv&C&3fC8y=toAYpR#^v1|@I zwEnz#x{B^pmYCVUReURVw79uT?yKs0n^fBF@*=N6tGa9Pi<L3Vu^%m`eSFpIX1iiS zmx9`XUjDefjYk|~xib%0OghC~Fnh)%g__v+ryXAUX6=zE{#{$q7{DF!$F}HNi1cIa z{$s!QeKN5-et`2r)*+oc%e3}AOxm%f<+apHy_7HW8IJRoWZC`fFS2mHTD1F0P5Q?p zh96Relb>tNXYHFX;g{IwJL}Gr`5m9>ysU37!&<jE=eMpN6@9a=6s*p8VSWCEI&0!j z6_(Gu8CNreYaYKoru@Rfb%M#2i<^sn|NQZzq$fXk?a{)Sr!ytDMpnu#RBTV*+_x;T zW;gE*cl{#P*aK<XZ#x{exVOJT$f4%7uaMFQ{yW05vy}>`F8ae{dx8Di^g@<x-Ac+Q zrk{v1+_*#K|9z!+*0zW(JM{zRb8#K|Bp9?b#&sn(?-FL#KkBSZ`+O(Q*N>NBYF>0& z!;JL@lg{hdW+y!_UdzSvm{=aoPv|W4KH<^PnDTS&qxvs%s}*dr{r|pxu=Dh8$v-P> z7r!{zJg3)WYuB-x1wTGW{BEtEYyG0ZyJT+sM1|(+%*nGeygldE#TR)PNp>2B&Hs2Y zXLn3r!1Nrcx2a*>f-~o^oV;bVe7^Tme%TpOzl-9cr_6k$_%(Lr1KC?n(hk1_qUuvO zt+}-3$kDSiCrUq*-)?p#et(?##TyNG!Xvt-OK`27wl!OMebmDL;pP%6=J8I57CpA9 zsOh_`&-ZO#v#)pT-mD}gma6Vosw5&CwKCXzn)ri^8^12A`_D^zIoa;l3eKaqI%`}v zt(OnK@$K%GZKkgGKFL}arPLIC`|#w&!|-Fv)8e-sxcJ{CQ$A$*3*{#9H7rkWTzNJ3 z-y5@DTlVi4OpN?j{C&IKceaw|2A?e*VrISe(K1_}z5KDxc%>b)oKA_B)Z2Y~7tHhj zzsUFYw3qz}%`p;Z=B;_OwxrbjYn0;rOW87I8I9L&PCQw|uCHxsZoK@p=WJ%DRj;KV z&)?6krpos3WAwYlwQctQLn>!i*8g3ZYyD#7zXjWF8Jnb-tVu9tm#IHpA2@^c$pQU? zlR27Rv8;>;@R5pp&$(T0YH;ThQ;u4uS$eGx4*Z#r(BZJpN3qC^r%ZCP{mI7yn$u6R zaCq4-s9KrR)VD@a*x}E-db^fY_t^u!vVXW5TC*x}a=D`NpMPhMR!VJeYv$O+svbCr z$10*ScVc{+%fX{slAaqh%1k(aeNf)<in*h3%Q^!dizMD@*Wbr&{ZqPpxlosS*Y_oi ztdF+|yxRUipXtH=^XFGAzZX$A+asZ<MTs+e=Q87GtZ@_m{M@uEX5XvaZ>-*5b<O$i z{g10ndo!7-?OEq9a|YcIyG(_%?d`_D?}ZkyPBAyWnRD#+#%<TX>+YTX=Xm1&#%H_l z@tQGBJ)5>^|En9Hw#Ki$7;^hm%~lh$x7rChoGvqr=IbB(mSI{Zx#L)xhQyKsk8+p$ zYsXd{Oa1z3;o1cfBA+z1UKD+DzcwRo%1z<D#k!6DN4n~ZDo?A&>IrNvlYcqmgT)F< zwgbt_G&1!B&Q4qP{Mq(}ihVEI&&PDvx2<ogt}b<wo9KUIr<v6ix8*mia>6IRyuL+& zQ>QwpJGU}6Gj>OmvW&3UI_7^q&${>U&MsfNXZr$2H*b~6;p|lf>glD=rL(Q4r}tdi zJeh0qi*sLkrLUFO{R%KBQ8(P&w0jMseS-T;iKCXHTYg+Nt>(9p;EX(FzW(v-W^wxu zug}`V$ZmRao581Wny^Nuh^(~Pl<E^J0;EOOh%QR;x6Da+{lxz7leVLOU41;iPvp>Z z^7P&ibHdlP%ywFY*13&8+W+u8YuZ|RZlXr?y4$y^cglb9dvSK(Ev{|nu55U@{relv zmFJEy?ws+?$B%!GeB@gBy&}7q9+$VpNS*MzYb8Hpj$e7#(|eb1J-MQ!EnUcB^;UBI z-)q1B{hE8<H2qO&Tz;%m$L1JaPhEpA=`QJOHZEh?+9WK$L*QI>{jnRbuk)LSsV<nI zb-ZzBSkK?{*LTECzQ<>}Ci>;mxUgs3nTKkgroQ``yLY?4PS7^iH%CMY7#hUp&yL(} zdTVce?D<ITk|#%-WQD!YzO&VCTxhJmaMD|EWBoNJ3UzgsM|L!Mr88||o1`6fRrrZY z@z(20*UvO6$`a}3NXe@Gq*=DNDC*@uoAvjyJXc45;MT9>(%Jo^Dx%2kmFL6_8j8~T z5+`FBYlJtf-*CWJCQxeIx@M92n#<J>YZ>ffY`b?ddr|ct#=6Pcjgp)af=sa+_ja}= zt474zYjspRC8;dRcj#I#-Fn<>L#?rdi?uzgZB)>5#>v3}bC<<27hRjMDw);Cs!^u@ z)BG5o*A5b#88wq;R=;|bGUtVVOWt!y9$Du()>WBNLW*6#(?10CaT!b5h*a5x9ZSBk zc+$z^e(M5wgI7P`m@8@e=yt4@$)?O*21cy4OJ?%#wk>w}`Ta|X)z`QE54NwrFhhnd zUt`6mz@x!_M<-joT_k%!V8(yz>C5NyXngR$?UmqWwBg!zuJy)8D%tk4-IsEZEK>U# zx}EvhwRY>rN38@{V!b=cHeBTY|0AvcNN)AF-%I@F^qo3YRCnsT!<>U@OAq?9{_A*e z*LS|_S#`7c`t|N!mFp`lZQKj5uQSpuDC(%QjJqD%+&k;#PTyt0i__nFeo<FpaCBd) zGxc?QO0@80_q~n#XW3s+%xrOqS<f*0iksW3rqYQMKkcn)oPK(B>!vKlIJK>g7pj_W z&Qa(uyZdX6;S?XY@2BEd#!Y!}-&nC{ue#sI*(_am?%O|%`z+U}n7P*_?EV|~7fmZ} zJUB0-H&w`Q#xuP)uMc?3n}l`!kY&=V4or;_k~}m?dPBuKE9SI-iWNQ^v*X?NYA_qD zWQ=?1yFH0zO6I&T!W$AI#H)+~oSsW>SbI~LbDmXf*sS@v(}Z@+nHM(Yv4Kj4Gs}^X z{$HPz(tq0<JhzYLF@LFfNY>M_+1WGF;bh2+fP>d<R2rsQu6Pk8#VNgM3jg|FTfhDF zlxt=FaOQjS*-g3=jkd}91Y3UHs<y3k$*T_&&-eZ7Nm!M*G;F`<%eUXxi%*=}yEB^g zaiaEmhd*iFi}xzYTEv*}u`+gtUOF<b#q=1Dn5$mM{j1k=Z%j}<a_~%&_QeZne!6Z) zHpFnhRLpb?c)0dyZ-`s;oP?DZTD%s$xqf)<9sS!~x%X3bjCVV`3vTJ(&H3d_-RqV; z^=0pGE#>BB|GuSk=EZVeJJX8VC!6J*B%PjVg{Nes?&rJRm{qMk(J8HOPEp|9%kFv( z$Fy!PH#+v$mV3@Q9qD^}yRvO>hx|Qx(oCh0L1|e?{Yxe9`gbjw7axB~N;l!SJU@8% zy!z*lswO%;eKGZFOxA*?xt@_8I_9&k=Z2r-Sp4Dl!+U$KG-Ry3xw(49)%V%G_oln} zMsNko_&Oihn#eS5r7MfnJ5!C%6O<26`W~>l!^w7@jgr*Kz@+r=r}p(bZELhy6VDiU zGD5O`x%lSWS-(E#DV+FImwkBi&FovgDu?fstm)}<_*whiILy%VUPR8J;Ad{{OP}-q zI~1Q=zcr%e^5fTn9gco4IEpp4Z8BPTZ=IBDD&v;N`3ss2N?P{Umn`n^Uh!17%5Q1; zQ{GK;+Jcr|y!}e|p^#<LLjUiHVtN6qmKCt73oVG$UOlPm!<iME%_7$Yy^fr=l;>*k z)+QJAfH!Klt_u9mdKuOsxNQ;7Ubi!PQ>3Qd$bNfDr@%w2*mKI}PX^zgrZg?({*>K$ z)lNxa=T?dRz0uzvr?MDMd(N=O|6A|Z<&}5SubyGk4CM$?;q+wfRM2=~C;l^Bva;Lj z$c@W|i9x>KV`tpkod3AnShVKI9_Az4!#qBhw5(}ij3`xoDtTz_uB?{l2j48b7TEq< zL@Ppm#r;P%{}%Q1?DV@iKRmg}S^2QYM@35)`+d&4S1!J}zE{IxsoXLh?flNAvsP}l z@pqOF3jHYdKT6~;mq1-{GLMW!^3JYxEF0BW6edgjFX^1Nhx6hdtKTcrnm>nlaDKRd z{*&)RwfPHw|E;e(T=#N<#20P*j;G(G`Ccqe*JN%nd2=X@dt*~;NZo9fMKTk$(kwNs zRhx}|=Ctfl?Ry@2GbHt0Wu<gt!I2`l$YTwezuIm@yxe$0Wd6pM6K@?pUXobf^Drb- zA$Zv$9=F_7N1vZ=Y@(~9n`>IMJ@@nKbv)6mG+lCYTl$K|ANzNTOh2wMd;0&#EYEd2 zB0G2NVclv}b$hFagVwKCU(}4n*IYW)w2f!wvg*LBHN2KfKI~q7uh{=G`z_<%E5d9I z9Iw}VGO=mQU;2xarNCkDtT-ks1$q5ag|>XzF6BK}8;}0j?z~lH{?=J5np1tJ{9Bjn zZ1>Xo#M6_kC0f2LoR13M*T|mD5^mA=IL&`*#z`mBBB>`<Tt=PJwywtx+P!5xo6#L+ z@<`J*e}kh$jZf13Y2J2b`}oekE%7-2yelTmIrRF24l!n}n`=59JUh(-^uOA~_q8lr z#Q8^L-FneP&6f+#O`H<dHMKO;O7OhTcBZ4Z&r7P#xHgw-wzjZY<ay6`N0}miN*(r1 zkIVSs9&u1G;#Ab8$VAzBqR~qYw(Y-c7<uIB<VBMv<%Tsax+Z+G>E^+SpEjKkGUtqw ze--eKvGtOmqmbvx)x91OMq8X?6I4#KB^qv8cK<?{+3e+EDJ8XSX7jvGH2>oWIcO$6 zQH!%~lNraVpJI~BPR-Jl2<h9V5|tvO<{$hd%eq5Qd41uQ%8he2y(lf-dZ%XFs%=&7 zTdki~-CZ1f^j^i&MUAKbT8f02l<@fI<j63zB(NMUV4HmOSwUq@V}QyukJO^pprzL` zN@sqPx14oGZ1vf91-tIZtv|nh!HPADRxMk%aOKjqi&rntPsm8gNy<vgOUz8oP0mi| zXP4e~ut)K+o$)L6<gnY1dos&qOLdOe#?R_Xnz3|upy|tLZ+C#q;cpP=Ss-!mV^~$h zcE8nkv)50aaWbiRhs{0*4I%F(MmwEW24!!t+Iuj=D0+?A?!~%7v3dR5<!kF$T~(ic z+qk7O)Hl{S*n79EQR&w&)(Xcjtmu^3-nnw-&eo+<xAv}`YwM#h>4b<@@419cH)Qns z^#!_)2(9#a_u$2oH;-PW9ax~K%@dtDRdDs%jn}MR=We+8g4^g_mgf5f4eNz=%XLcS z#;(q~y`fBedCXnjmqJo+fBe(nth{&PubXYw8Tt3Kwwz17Tz)BEW36TLxysn-=0bZX zG%E&3Y>M7K@dE4Vxi3Gc9I7*UwQNJ&wU-~FpOpLO&h-0i)cQGxH~QU`8?*UZdv7nV zvk%*J^iCZ6@(;&<h#BP1$!GlB#;IO5J@1m_woIA62Uk)(^zJq<mt%OtcfQCvYr@oX zlOnzTAF%He-SfEOq&1(<8~@tA)9W7oyC`&a>7JtOhO*<uyCUo#sObtP_4Vp)W{Z5z zd-7cT?Fk0$dAF8leQcZkyf;@rM)9EElXQm4WU1{>e0SXvYQB1%f#+<B@b4QU)9-CJ z=5H^Uo@F$92J<EEk~IwLfBd|AadT;Pvzy^f)7J0Xk50U?Xe(3R+o|8fzFm5`{N(h5 zlgjh{w0)0uIi<+g#ldtpPiLL5V}kbjc%cK*m2nlN=jtx<-<w!GmF4jj*9XQ=t!KO~ z(7&=H^~Bz^he9mYYaU$4{y6XMj$;BIBHPu9D&nM12DfF@<jQVq<9xU~?ZmAT$u;pi zRD?Io+51e};%k_MOrwis^45yQX}{iypD$-=|KeXzDHo^s<-g^_2h-$sRkJ?%+NqcD z_vnw4vyL9?IP+S!c|C8?_4LvP(IsN4Ul#Cv`N99Yf#J+@wca_c(<lEgfBq_U?e5RX z4KD>|JfFVb?)`7$UyjYQULCzYHSXuP^uv$%4wUU@f8M_Gnth@DpGDUcj{Fi}U|;|M Dh1v`w literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff deleted file mode 100644 index 67807b0bd4f867853271f5917fb3adf377f93f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19412 zcmXT-cXMN4WME)m@V>&p2cjEJK=>dwD)tZ7H)3FL2w`Ag2x4GhNN~H@`64+tv4DZW zVFd#N!!-s5Mw|LH)p^NfB?=4-9#<F`7|a+L7^0XqOGc#?q~|g)I5sdau<c=B;NwZs z`&*NqSX{us;C+UHfq?^x1=4dW(-;^ST^JZ_R2djji<pn!e36lwn8LtdHw9{*SqhWW zlZ=eiL<R;269xtbc?Jds6%JG8c^SDS6$}h^XBZe5(-|0;*xbTwm*?asCo(YD_AoFo zvVm~<ytrk#i4_G547NE83=9e&%xJ`SATKdDm4U&Nhk=1{2?GO5PohZug@XLz5(WmZ z4Gav7QVa}?y@`4LA_YaM1q=)xHVh05GZ+{cHl-e7YOA<)bua6jnCny3W1c^Hys9eV z%#}N=u~(PmZM~ATNkS+3iA3tQ)E=I|8Iu#|U1&3#eKV(k-T2Iw!)HGKW}73+v-0cR z@2^6`x#y$?ajts5xcb~r`906=TmzPfcDmHDSqjQLoakYFukZTpk43Me-(_u`Q2aGN z>I3tmIoDm4K4^ZqJh3E2MX7ezj6kIorfj;`H(EN+*;uqPZuZL=d-Jwmk8*me_l>{v z;;l12%dfYxca^r>Yn<?Anc!=Nwd#!tJTH#c<OZwS8clSxkM%NcUB6dMxJ6_62dhV6 zmJA23-e0}^b@5Y^+_cAnhLh!6oL{(pndzZrq?~3HWU#`1@}!EY?QhvWKYW-|_2{JS zwYsm)6V8Q-xu2eTcI!=zR4M0UFW3B@zFoq(Ow-z|d)e!1zjHk&3|j+Qrkq{=B)b3C z=9;%#RsVPzp8l=W-yLc9=|Gz6nN6?GH%{N#c<SF0md$DFek;z2-hTJpSF6MFM;1OP zw@%pJDB~|9&ts9)P`qCD-mKeitCq|Bx&7`Tci-nr-PO}&nqM0B#Q$IT@H+GFnVFl6 z)7_8D)m`{s_VZ|9?YvaePQkNBa!M!fd%MA6ws%Ok_X#~W^SfoUAJ4H?KWAV3<HL&? zKRyfEzVrI9PW|+mE2@3__kGlUw(ao8gUt`8GoS2^x_(3>?SxPD$3TY<=hRP0%$_B3 zeCyLM$pUx0=KQn!zrI;e=;x2E^AFlL{Ik2%m(xF|&qm^+x%T%tmK%~Y)pREY+}Uf# zZnORFt5WA@8#uUkN_L)MIkay2pTuL4clpk}E=_02w)|}Wg)N}u=<=&a%L<M^>?|lK zt6WmumvwW_-p7s0`6Rj)9T(Vn%WTF2(KfaasjS@RlbHIpTD|I9CZVUVu|;Jir)`$i z2l2CMg|Aj*-FoA<x=?Mo)0af&t#_uKK9#9Gt?0qGx1W!f$8<C&zO~5NutP1l>}tw1 zwLmswgI1L(i@l03A6mGhWDU=!#oesgQ&;YM^-h?7!P?Ec%WWPc70AuF^CiWXE#mj0 z#OUDuXOp5g-K%Y{)!Fy=mi7<VFUAwiUG~K$e6-D9H`Dp9sQm3>+5fL6aPO^Ju+46> z&HRJ^E;g)v6tFywd&eQ?zVG_0S#`>C^5>R*-DQ8s`O2^9*R#Ji9DTI8<<ukhLVFGN za^cAwM<dohoZIOXR{X&tKciLt_qG1F^QX?4)*@IgXXA2arLNJcqrsgu#~xOh1bWW$ z+$pMUI>E+%-uYyf6V588-#+x`>SqTm+TxU@<tsAjXV^+Jb>#yWW79UxO=#npv1Ivm zJ;fd&PBHdKUsuhm3>VUk;#SV}m{b@r{d?xojo$w6bKZXDYBxW*YSN`Shb|sZX<3$C zRHK)evNy%~SjfdwCyh;)#-tpJ2xny|xpYF}?3F9cZ|6?hZlNqJtZt+-(N|>Fp-D%1 zO7pzBp9$+MQ(7X*y>@FoL;I|Vpw<u7EJ}hMf8=DE_&K;Ib!_mL6p1@~>}OieJ@d$= zr<{`Q3?fhMymKJQ_v&|<x%@ekk8HoE_xpS8ebc_Q*0iTbY8NZK^UnPr_ILKoM|E$f zJ^$s;!OFEdQ`U2)ve&o!cKIhSN=$p?{n+2+ZRIy}wh51p_OCfp!*c4lY2OO5x9j%& zUtKO!cRKTAeb6(hcK>emrL|lKmM^&c?y%<_D=mcw$qV_XNkw=%2fd4aaqpwwVFTW# zE1TD^omwUI%XsRF{@Q<s-rxV(_}NIH`PA|MZ+74RaX{Kn;-7GxWYi1aN1WR`)!&@x zP>)!;tN->ll}|4}ew^)W%=pY{N72W%`4)Q^c3X;^TW;4mr{UR!hA$SspDUd`*gav6 ze}ZQEOewjwif06LtqS>X#hiN0J!RGUqM)0f{HvxNoW07FS?%hQF4e=jMduQ?@XfrW z)L$Jo<>BcmR+l&yM9<&aIqUCcKBf8h^7ns}{UKr{x{|BvEC<h)8RE{b^OfZ?W?j{6 zKeza~aCh13w53d<$A9+ax7&L3trmMzbAGq&<l5WYudj-5TK-6?`nff;vd@cK?;l0@ zG;=ZC+^E8H|5Ki-*1Xy`w}euZ-gAFgq4e=hoO^+x$+|}i=Q_Oqo8N!lv@GcHfjP%k zF3nx-X6&_Y(@w+sGsR}Mc1pVqSMF6lTIqS`bI6nX2Shh08y5QW{`|!K;JJ58;XCF( zi8`_Sd{VnT*6-~py`bUdvaDK_$zclz$9t*9lqbxB&UYNYSw7nR`$EZ1zU28QIe#rH znq}HLP0KR$T%VB7mYHt;F|);IeMoGSD=yG&v0Jh}=1@DwwY{F(4fg)3RC&4Wh^3SD z#-4w6>rRLK{N<@~wA65Mzkq3zlKA?)P3soqcO7ZwSefEo*W%*6Fgla}Ozz$9djC8a zY8I9~En=|Ns2BUPk~zL(zWwC9H&#D_CqI34ZH4iy#U}F&9-YduG&B|bAL3T^?UMe{ zzPXV*{@1em?G2I46`d_#wQN$^rO>t~ClA&C;kWae*Y7f+Z=dR=FQ$9^rza~Pc{}a; z{FeMfteuTbKN#DtK0Nch?7;R1%<*Mq?;3Wm)CsnmRkfh(-WL@YfwyJ)Ztlx{PjO6K zoILsWZmD0>B%*&eZ?$J{=}4L_!mKbk&5)60K8x7lDMz-<V6m7N&sp+q!-LCvoBYL( zzEM+&f99P2j<;r#e%*S}Uo3?x7RMqpz8zV9CH(5FAMfT1);Ud=y|u3F{tlLMd5hKI zU5`KS-TO5r_E(y5*o?~4F2>8%=A2^PK4;4&32%*w%UX_|(+{|7@M>*q(wx^)6DP0h z5zyGY^;*`k+tY*B#1@7{Y+NnWb+a_Kf0>4v&gHv&%a3(^uHLr9)MMY;aP4Q-yY~cz zIksdMDK2AJe(cg+BZZv-te*0hITgH?OtfAVd^MsZ?WE<~Hw<?3=FLml)$4U~&8f*g zW`*wMS&!#(aP-u2+Uix5Z+{T$)zsT~!Rqr4^ODnzq3<uhD?ak|P{vCBy}Qnz@;gxR zaN^;L<IkhD4Ne|jz{R!n*poYdLyY|T`yL))Wlfv=M><d6vUi@(vDck7_mVk0w?)s= zRzDMQXVo<UcP-Van#NPZLvufWv<&Z56YVRUl(lY7+xvCmw=Q=Zu9!Am_whop=3Dzt zeta4mk~!5hJICzxGB;J088cP|`n`!fV<pC{;Ik_6$P=%`lv}yEr=LFNbiOLmX(3$b zKL7hg)9PH#sTa)M%Q*Q`Yu;SmXDa@MWun^yliHYw!yU5}&oQ6l=sL=f|C7Du_=Ce5 z9M@%!J(w`P@2K$Bq{`V#Gj^q=-N>IeCCIbY(lYGdg}-XEBQ`A5nX10|YD`mrkASn4 z!<wm=OLPKP{yVxwd3}!Cq;ouS-GwJRF7hAjjOklEMY%Hk+P<=CkppS@n<h#A-mU5o zaZGJ;22a}78ksj!7QCA@;lHZm-1qN~v0rIT+NJkTisSRHGi&M#7OVYyB)93HJoCO% z`&lx+qN_bMUx~dwx<jmd@5wE;Q>Q=K;rV27$EjbR-p#G{byQf+vbulYzOIRasWmxS z|L5M>Rb!NXv}~=<xu=t6dP*{O?^>6)tbhI|x5_oE5}ru!UOa=zce%vEWe2ZRe|)2( z@J8m&Tu=F09Y1A_BG-UlGaRbaH$_KWK703L(}rae4H$Ss@9?GBZIE=1`kmPN!IyF3 z9x<asg44<m%$567dT*g&)Fihs-P04*ZmsprbL*a75h)q@R`+Vy#6Y><^L{Tr|G?9D z)(s_JG2_(mk4EbP{AWt|H66I`+kdJfsO8B{w^IHMZp$o;LT5zGop5^31fO2}i6-)P zW!G;{;ntq_B}O;+?xfx3&!!b`nqph(e(m_H*{!O7DizP_I?Xcni=Tb^>7@w*iRamt zt=BjIe_35YLZsyJgFAk<9JeE9D$3a}SULN>Z@^98Bs=47L6yxdTDNkJcWduDrc%AC zUGxoq(qm!wpDu+y?peQ+r4(5Tms{&4x1<)m-`mhw*uH#mk)CI&PVPaiMROECpTA}o zDYaTaH|*b;`^OlSEIv(G@T5+0ZP5~S6aSxYw(TraKDcqg30aB7Q7__tF>$TrR8d#a zdcpVbb=AE0vW^l94UE3Low9?uW~ITQx%vAx{O)O+u&vy6mEr4`kGX%ImD1UD^$k<k zqhh&*N2GEm@0t?-`(*HDc2R{ZndcToEamLKvHRGWJDu*&)3)|(D_Wv)T`c(ByXzSz zRaeQ)**LfVjAp~OqbrtpZj4#FsCVt&uNMxn1U}l782YNp>ckQ~?vOZ<5;Nu1OjBoD zEsj)qv>>25M*qv3!#8T0gSkWXB-;88q`X+-#Q$Bp^ALygjH8d1zRgq8?=261y|%DA zd#h#q)9H?DuiP)vnL7XWHIqcM*H34yn&-7eXydUZOKY?y&+tg-F_6{_)!XD&SaZH} z?orpv%}2_gOzBpCU$^(@th2iFSo)WLiZm~NADJFfC~sq?r@{4Tx$%eQi5V*D8eYeq za7a}>3CoE5@YV3@b>ppq*I8N9v%2~7I@T+Mp6+@6SmM;pUx#kR$I0ipPUuiDZ#^$1 zeE!s|?KNWG|6a8^ob~nVj-U^DkDKi+!|yMuIDJgz>82xR!pu@n*~IS2<J*6GhW(6H zGPfk98IOcScK4a8TWYa?oq3}9htM9&MJ_Ui(^q&k?fk*7&34d4w(c+MdBqLVWtQiz ze)|=EL%rY2@#dp`_V^>Q_0e~JnJ)6$rd||u=j(%enXGGnXE;6*;92-V_WVc1%`Q=| zJ;N<~B%GD)PHd~a7IFRhl|^xm-{#$KOwOrHIr3$ef4acbhFhs^9Bh$c!Y!YV6s~&j z?W+5y>_d`GR__^;xf1$*OW9h@e;n))_s!es-By#Bx#rTEcO?d<iy8zxk8&KB5a^VY z6)*Gesgkl{+?aF5S29fb)ya=eg;{U)&8IvMc*1;rUr)S?y@;iZrM^YM@r!P^o;#>7 zQ2O&@0{^0#`}^~Bc)le6H;@-*W%~cXz(iyY7eA}og>;{cE493bHuuMCn3d&inzY)L z|KE$H+8c{liyypuI6c1VORN~{;k>i8f9!UztSeC4mcPqrS43FaGrl=No6^Pk?}ToO zU81ABV3Wc#VZY^b^tTz`{5dVCS>C#SeM-;klUF~VKK(y)7H67(^35HuQ#M_hZM*0D z30BTI*L}<1{U~?kpC0+}!@QuUE06vv<nc(1?|vn;;V%DO)5-e#Htf6>wWhZH!G&`k zEd3lkIh;1P&s{Z?uXMGS5WgAa9kJW!dDAil)>pzepZl9HFcxa7TDJLIzrnoiug<Jz z{`SCsQr9I3)}9ydpMKsld&-KCvhQ!YDyJkniDYXX6|iZ%+BD03gN2ck2xsETXLGgZ zpM1UaqU~e#W4@Zl73RMvOUsZERpDW1*x-~j?TCRBf3mLEx_!bNi?q%r`7j9FDX+}C z{q%rzj+ltvVt<bNdrgZ1Dw_9Ni|tCb5}URud)C}b4tL%<Tv-_VrRHFJ>x#NU1sl#5 z?<Z&S+J7}zH#ypMGzq;(PyD@2*e<eX^8J6ZUu|7(Uq1Po#dw|E_7!vP-MuCH_p*Ip zXZ;?|_%wI^^v}D?PP=c)%AfN$VIzmS->SE|-aJAHiy9onl^Na(p3Qx?t%RXv&(n;M z(<=OaPeWN;c+WXpe(`d-pu+2KMM;Toqo*zU@pU~r%Z(k@Ois*k2lL(Sg>Gu^`IRKv z_Ch{k>vosuyVt4?$h~sl__ATy%dd{_Z#d@KTHJe`v?=r9-s9Gl-_LwpynB{d!bio9 zz(?7;=2ZWeH2(R+eCMPYzt8;ES2^|B`t*{E3K6Ad+?Ryfo^|s*=>INLo$&dz`z?09 zcNzLglEw-R9Y^*q*3bCyr}K|X`L7f2n9C(qCNJM<<75@NyG_%nN5V0++SB7Zr{dkJ zl+6d;Kgl@eurTGc^F^*(Y)1^`Dh@|!oUM{nw&poJZASis8pS^U3HwCqABHcfo`0#x z{zFmGqx<$n{A|aVF8<ZLzj0UX@gIS|Ws3{1&o^;WP|p{c^W_cm<-6MRKWi|sPI%)G z!jN6R_uF+2%jv7tr_7pnY0i$QPupA+4rH>{TAXk>FYV}hSmw&zzb{3dy+!(XHhryY zd!oHWU$c6{uZ!nbda3^Bk$ZGi{A+-3H}ktK_TSSa<{wzKzI;X65`+F#dJ`j!W?OIe z*tPLzr$%Uu=Bfv}5}tXJ3{M%mwgiUB25)~i#m`T~O~8%CyGv!=ZhqyTug<q><mWMl zFq&NOS+&7_!KNRcGpD~+-X!!lm*r`z#bU0=-{NoLlhSj-+c)<2D>AH&wsj6U^XIkb z&(%{V2z+dc)^3XC`&BTZTJG}t=ht}8e5y3{JT9=^^1ZRrml_R=gZA+sR>g?V>0Ts# zCgT4GtLe)$Cu=%)Do$20&FoJzUc>%#PWa{`wNM+weN8i@w3FwpUGmAsi{s4s@4UB5 z-gREA);Ydhlz)eFr;NF!l)>@2)921f_K@JH`;|GNH&^ZR<tba&2U;GR(la^W;mj{y zI$h=xduFH{PkB=O?C<q`E%((-{`JhC+Wf%Bl;Mcm)Nh@8ruwxn;F`PGcm?m*HU*wZ z+v4`K#Bck3j4Af!*Avxz7GBJ^znAX&EE1li{O7<4-(7vPE}!xCn!bHI*SnpIzxuLW z+<J4T-J4}a-(wAo1AC`_mR&F>S8ne8*DllhMAp2oNhzDpvS52&z`q%rf3A=)_t)9` zuA=&XV^CDq*0whc0&n~S{&06pQ(Bn!w|9fkd9HbHE<Q}Vt<RDB_2@aa)1iAm{Frp0 zrGAgC4WsgJwK+UfR;K^tj{6bnf8&M9nrnw|exB^8x%%drwD=m$*}Qy$I;+p^{d$Y_ zG&g_VZ9}_@>=!a#{ks(#Hs{+_?y$HT&aid%Y2QNMvlX|nm2ObiZ~P(4BP|pw|8DkD z#RZEFhCX6Y%FZ^I|FH8`r^^M$gI6mLUJXn>a8*ECG5YYOZ*1!-%Ql>-sJ-}pa+7xX zuLuUOHRptHR`0cIoqKMZZ1823C!N(B1NYzl*0kA5vG(B^0jGy&n4H$B^Dj==SF9BO zYs!rGT{GU-NFIt=8GkRk@?c8sR|D6LkE)ca?gmUtUJ+l%*<T;NZrVlxHit>i6F8sF zvZ^X84EAU@{(a?R&aMBAr;|KYqB_*q->LjvlJ@Yp_st_)xHuS!7p!G#w|6&K!hGoc zpZU-9^INa(T|D#ElRpec_p3aszqwvb(eS^AeH*_|okMHxu6xHeX+3ZLv+a5E%+{l4 z1m^tpsZg$P-v3i8>!8fS-~WUnBYF?t{drbvvc^)cJu?GerO&I=m(omdWn7vv-)inE z7sJpqn=Z~}e0M~PYZi<A$`+5p=kxYD3-H^%3s7yC6t+3SN&c^e?~z3<hNnunYh^s| zY*Otr+Wo#|>w9Mo!;`}PFSBjJb2|5YP-5tPsmWTa_`y2i*iuH5yrqH?3(eyc^DCIA z?a1}4)nnI~DI7Cz-`2G|PKvdJ3K-@rxUliwl2_9=^)C}<Ogw#>>5BK(!@+fH13V9A zDy=vCDxIP0RvQxCt6kZXQxqyy<y61#$?hXH^F=;?{guu4mtpVi%}yHphZWA3u{!Nq z7N7XFe&140?dj{xGoSIin!e-Lcc-s>$KEkGJ-q3j)DmEN-*7u`s^&G1kQj~RinqT{ zcX+;-`Fw($S6RY&k1P9DN9`<@<;wr@()?-2gH4Zx`o0}Lm6m!iwMAgvasKC<ez!{G z_G#Qmc$B!HHS|k*_}uv|CwP=Z7^I~m#8zEmVANpDw*NkRa^VAsz_vi?mgv~sUXscQ zza4JA(Cy>u+htx{!t5M-{uNj6%B!{CCHZ(CK3u=_hDMBR>+Bl06Pvbe&6QR4pL=qW zeS@(_mYT_#Bl<c=`JWg6=5cq5DcpV`|MSi1XC`gkUtM<fjr8A5#UHLpIA7bQRMD2u zqPg8xWYJ0c_pg2%9_v`NaqE<A2e<te{QAAK=b_B6haIvr1q4g4@`m>vT6OSP#I30O zSdP`H%&ram_MiQ>fBbwurC0mA&BEpL><eFY=X<<}UOwyRlq0;!8>jiqpY5wQ`J=eL z?z_s{;wBg3D;5}kez1S$42Lg!O|H$ZKKpWJRO+UnRVQ1Q-%5YiwLszCYtETEZr{2i zb0g<P^nYHjpU1n|B96}|>BQIB%vSb4(rXN!I=-lH(mK+Aw(e8<6xr?B4U6(^(q(KX zr3E@Qz3Bhpx2-Nw;NZdcpVrPkZnXDmigD)5KxMlN@rx1;^PgzYJ8z_}Dqk1k{-L1g zpuw+)a)%EuID4MU?vKXAqLXt!uS-9|y3&d3bfbvX#N>&^O4)lKANdyNcTi~-_w;wy zUY8pu9xIz%vm<%;!hjDOo?M(hb-Nr(yP@K@nU7hH3Vc!ZRP`#UY0oi}_K?<}TakN9 zy36?Qvdu;fvkLMr&)A!5x=?<O|ICj@&Z%ur*Y@V!x^Vo|GZokUht&5>j7sF0ZFD%z zu>6+G=g++1hiZNYRaZ7YnE&Gl2cyCX<Ltm6i|77cS-Zl_@Y^xX+xMcM2378QdLm+V z&ia})x$Eb?O|doas&VPC_&&km$lQtQtV-`}&5N~NSTg?{Te@PyvC6+p_Z2ul2y5kS z&hMGYxT<O5?8eW^_RkewPFyr`zLjifRhaWa&Sry0%Q(EB9-sQ9zUP?Nt!I)EO{F$> zV{P;KKYYn9N!@tham$u(>8F)v>1b@vKP1AoVSC!Aw;!k4Bu`cS$u-mQ*A_p4#5*f{ zC0+>Teoo6hl*IB^`;Jup^y1mcg({w3z0!16Rkz7Dp70Db|1bDu@kHyEySL{t$Y&>> z-My_acKzGUdOYo3Ull}kr!z(H&Xipi=cnnh<EX4l=*IIO|5X<Ff4^W+#XW0AZ&-i% ztY0fLIn5GJzE)ZlAvXO(@Z4M@Dc9TOF8#-&@=xvl)oLkusd7~@pNenDF^zBGyhql* zJ=&Sfy;*IFqxGG&ee-6Y>+$eSnQ&ii(vggbdv{nY^*p;no}=e(eD2=WhmKnoO`f6f z&7($T;spjnsjYAJzFd+2_y630{nZzLE4Q<VYt_D%7tmLE*L_FJIB!D3p~S2>4&G{u z8|Rm_1oIl5THxFF<?fU7%Ti92y<v#dJH9P+*1WmfV<VGisKzS2cbnqKEakG2VbX@z z0+Jh4xJqv?67_5|myj@6WaJ;8X&NuR-KT3|Oyz4a1IHxJbge)WN#Q?__xJC7|NX=J zpK^SHlF^%AuKaRKd-lCptz>(jLsp3^-oLI3kNACGJgOuhAe%Q_WBLX2F6P5in+(F% zO+WHH?Y+2_J=^|@kG&FGXK&~GnD)$I*NiFmtvt^+E_~*dbN6-XcQ;wijgQ2t_)qQA zuY0#e{A&HjZgY3H{a?eEiP`dfyX{kPk==ayy5iD|w~Te)Dji?ub9vRr2JF((=;i+< z@M~eQ=8H`aY&<3#^6d`2_L5Io>A0D!pxM=5SIU^9KK9=*n%FbVnPbgfhmF(DC9yg$ zzPRGGQCQMs@k!}wsWY2b_mz~#-ReGBF)7HaBC+0TD{JkcFT(YHAFjR^Tg>3XHlscA zLD88h22M^Vj1;z&&9eR0d_JgWhs^fhk^k~zs#|MJdw#vUR=e}z*S52XQ>0cc+CT3N zYj4Td2TNvejym@HdBoPnjh_$gQBM(c&N#4;PpI|$zjBM~+TkAeKO9v%ulBCQ)=5%Q za;mDQ-0M4@0z$`|-}Ih-_V($enF@=iu0F`Q+wR1);Ff@uuio8VXC0v$(w7_bVgKJP zBCee(lRUq^{;MxyYiCl=arA&0XIu5Veb48`s_(1M;ki5EePF|b2gMW83X_f;nq=6$ za@vvyTkpsHuJrxJp2Brs^YYf_gZvXWtol;hwEDeBOl+q^1SkKSxZUb1`3j7+4@08f z_Iiq~UY{PhHg5h|=D-{gmdA@vte@4PaOb=9Q@aV%Ja(JvtYV3~bzn}k`H|}%#Nz~* zPR%-I<@v^Uhr7etpw4Wj`maYe9!~4hYN~(d)K^&a@}!@5e{XVVnvPjr`K!G1$LjKD zXce|RTNrhNDd)^*MfV1;GrRT{sLboiIy3kDX_nq|XK#Ib`qA+IVors5>%z{lo?`jX z7CI+O_1yspMzddjtO^1>%7tC=bwAJMht_iE{d%T)F7){HBiosKrj#ePsOEju^^chM zkmK-?XR6nue}@$Cd%wKBBwjG+hpb}jXD6<m`$XDy=0v+ZeElbOk@OGiwnMDZ4>x-~ z>WYdlS)0ft|Efx4<AUES;%7LtzpZ}#UB#>E&&;$vm+slwd8P8~GY(y{vbyFT=Z0se z9(Ntr__M3Qn%&pwNQeBHH%2yVyt*vk3$@+<xGjXskJYVj5@WCRy^r(e9}ih3WhTJx zppiEF68Frj5pPyE1lWf^{5wTnD<<j1Vfj7p?Or^-$!+qt=Ruq5j*XrL%KbIFO<#C@ zUOVl1xQY2RlV+W@{B|5o;?I~@iCAf$2>iBGzj4ihsHO||&V6}zH&RVqc9D#u$G_>T zIUL+Rly`=d$lNW{YSr*qHEl_b_Ah~>4w~m5uHNq<VDR`2XM4Bj_t)E48eU}TEMR?e z!fsWvS7*<Emoxv4m@?kous`@y>Pt@MB(~nUi8G?oI{1y16Hm{pWz(p>cpyYtcJ;pP zL903YluzyR66LDrt!Fd&kjU5iJ?8J3>OYz(f=8LmukX{F_w`xtc_zgqkqs(ax(_Ah zYNQ=1zHYzf)4i;<ZK3}YU%Wqh`I=Dn&4-sC*k)Y+P{^R>^g`lSjLOsRlOHXJZ~D04 z^ve9E=9rWTe`*EyI>vM+A2{J|IQ`>f2ZO#SA;%Xdayu5<1WHu$a2%X&FnMNT<Ab|D zv+euzVt-HX(3_`_JimNVsYcE^5q_)n!9UcUm&gCr3Og<&V|aF|;G&5fLg96iw!HR| znQq&D|J5><F1Fa;y=(s>;gJ0`>2m9SZ$F%Rzu?lG$VAhM8)uZyF=d{AyLNAQ$5qXr zQF*@0x<gs24kg>HQ{fCRF%Euw%`0|ZZNPei)f3Do7qV|T_C_LD>e9!(?tJzu6{n~& zBrJ*fcdR_q<kXwV>smZ?f=~9X$e45Wp;K)8o}F9X7MxsiRW5(e`Q@+e9K#uF)r^F0 zYQ2b(@y=Va`Z@co*In|jT5NN8<yF@7u#0d`x>l{SYr$K~M$htD4NJ6ViD+0Hx}P+| zV)}fkyY-XA=fAvn@pM>(T7Yl3(5bhnx2o=JTbjJv*ZSjad#=Q%jSQ0(z4)0vH@W)L z&-_@A!*jVkC#iK^>X4WAR!iCy=pUYMt?=Zxlw&Wuz1+-i+Fu?2hJ@T<Z<Q*aaE<q~ z)p5SyeP8$d?mw=6etpK2OumL~k8gjwyE=GY&Go&<zBwgsnseg1*UdK>hYTK{?+H86 zw9Go>(l$NaV`noI>z^AJ-I89pWmBH=>BVK*n~PH$=3M9G%kPsBm9g6pb?d~#e|Pp= z>s|A%|MrZ(+nG;(3G>UmmNC;=Y2(D7=RWz}J@Wo%{^3xyjcb%=&#^Y2z<P9s%g?Ll z13vHPi!bMX75qVXVo^#|fPGkTsr_=E4k@nGySLY;Tg~};h-LTPD5v_W4~P0nXYQ$v z&)y$icRcp<@0B~#e<ty*tPk~=R<w6b^z8X(?aLE1r+B6P`t#?`KI`bqf!V>g0*~)| zk+x{%XPY?DvbR&SZKnvt@*HRJ%Uk`UY{CDG<xg3;cX<5SD))zX*P8XrJ_bAMd=JRW zpR0COT)2DA8FfoV&(`M-eH%s2oC}In>(J2=Ft@5pTl&Cn+N7U0iDK!6X9S{d%FJ=t zzDBJpaJ|93;592#FV3E(p<?Nv`cXFLSH-)#iTZksJm((&oXlz-os};1RL5xT?%qv0 zYvt=+UhZCgTzqlHp18c9muBp|=DOKQ>g)+K#oniW*Bl;Zg?VIl9N(vLXxi??>RjuP zcaHs^k6qQRIQ!y?^4A?QXQ#ir-Lhz}*7>7%-u$uI5#CqpA8ann+U`=U+|3p=|GcX4 zY!jo|{n}njC!DtGE7rL0bzNL7+FN9k$-FO1_Wvw?q5F1rVdb&Ysvjacd*eNyuj2d7 zE#_|+a>BmwNPl+Ok1)wvwG%q4Z?$c$sNQ=rZ&~);psg0$+viR^{3ZKF#_oG(zOJ0H zd+AIUCnM3-YcAb<Y@Qvuv7@lM^mW}LAB#zu%N9+!ZR2RsCp&j;RHxpdn@hH@)R?%s z=#IDcrf<^=-dMFximQ_pSatT?>du?X(--fWnKhe7u=B*`<I%ktkAJtk*%tqsYftQj zRqo$@y#5p@7kOV?{L;Z6Rr{Cx(91|_{J49a&gJ)gU#<C%E)TnRBZRZpW!tQf2&4Ny z&%8KsWKqwD6s3cV-e*lF3VR-UdolECmLBtgCtK|8<|-ClQoroBcF%0dry8?0eD->; zY4Dh&xcK?B>9WqpzVtY<>RvpSTX;vt*~t0BpU(m^JB_`VwZfHO+=`EReegF+ZC1+k z1?xkn34D5Lc_;qJ@7Pi{Ug!0*qfa>pHF^JO{C8{1&DJj=iZkbHRkd1NE!u3T;Lx$; zM3c&PoA8zTVV9?6ns~m+&<}l4b@618QM+ji<KsZ-{cQ`Xi!a|y**5dHtn*xbLDt}w z2|FBf*Ck917EONtZRh++>f5ty@>Ne?-Z>@xm)+^e2@hpE1(wccN#*CcCcNj8?+%%& zaI=g=-cKhAqOYA<a7)50;ODw)dj&T({R=qc_;9V<h9{Eh)-G=@aQd4E-dR`n>FTd@ z69wm-=of1cmwuLH>9wU@SA}_c%))sgn`S<k6cu-E!!c{?Ougi!<5NPzy>2S@wA;=4 zcSHPZ#M)f-4-22EP4X0RmzZkwD<<;rw@o6~({^fYZo0a`QfbmOi?@kaW+$=689gef zNDnHlooiS0_H+UJFP{x;w>(+wYA%Fc-o<xPkuC46+nGAQ$xAAD1elsc-<_5cFJIwS zskmzS+#jdT>QwTtQA^D>4&-2!Iq*r6JKfe=aR2`sVGh!oyfz6eEq-;9|NAy9Ki|1? zT~yM#upN#IYhs@sIKA-euNCH7tnS}<cZNsn%xgZ?42gIB?twe9q+E=h=GUJre;pJf zcq`-Raj!$B&p6yz{PnWlZJQ-%u66dO?!H<h!JtX&R`ThD#6+w(d-3SL-e%WB2QzQ% zOyZpVt}$}j<HFYP$$sm?m@8&QHlClpNcgL!WWi+RgcS=Hu9;-MH|KuURuk4ONsIR7 z?Y~u;xWB6Luk-&UFIUXiBw6)2T0zQt*Y?xr)3=9AnEmzmzQ@*qTh0f6(L8uLxM?}} ze^Z;k`kOxOZ%%zb?dz-61+Vru>ih3Fy0dtD+KD%7JNg$WG}&q@MVK4CdT-?AA}Ayy z@hzDD>>Z!u+?;${Y;!E?y#Jo+6#Qq!|M7_Qx#L3eev6-fdn<WzSww$D(LQnE`w2;} z6F10R3tIZ;?R1_JSMQ@@^KS0U{PVLW$&732lOLa1>(xGHd%xH+;qbQ;oQ9JRTUWaY zY`-Qct+#usnMk(SgcW<vl;n$qDXi{o+a-5nZNaU7Yb@VLNH=;}39s4rv`l@w6z8dw zWygfOH;IN?<_JuQJ~1s!>(iTQQ`4S*JG;EcIc@he?n7aFr_Jj&)MR`g7r%&wL+k6O z`gQN(XLvE2zHOXi#VOt2)!8ps^>${e?A`0SJWSUYovwMM&+%$|XU%%in~E#qUro7U z5ES)(O5WP+PhVe8ke0H#eRsj1>;AoaCge5R?l3T|dcb0~{*LpSw7cHdLYM8+T@tT# z<GtbJDalS(Lz-3lr0>4jBA1`Ach>jGOKbef``&J!TkRUlk;=PDD`eNN)rZR_IjS!| z@Wyh-{!ss``<G{ZOq#Uh@4e*#`_)=v{=RbmJ?)n$TO(tsdFvjwN77SYO#d2^WP4+# zzV@jY=Sj=N)Wdi)H%&U>e|u@m+ln0#OZPmy!CY!7tabQM9_Limu(i*8m)|<6GK=%} zh0{-Z-}l~HxiHM($%+r0^_tK2s64x4QafM3AebRz$F!p2ig%xDYX2Tl&$BiAk(2kN zL`Ye))o;?Jh`e71|ArQCd7!pAF74nnk-X{E=O$VG-P`&pC41APGZQUq1IsdFSh-iu zy>;VCU)xmOp5<$O!X!I2XDJnWUe!8%^33L#nOdRIJFlEbxF_$rzWa^9XTP?2_79>r zu!&9kar^Mw)o1Qa@RnF{-%#v}<fDD>xl8`!TU(!cDtMMz@AuUFYjX^IeX`?}g6&*V zW-1w3Hfp;%_;kN~Ea@_FNv7waz^o!~uUEaV@~gR-W=5+m-Th5KdveiM^Y-1p88Y8j z*<M_-qHD))A5)*B6>Ik0o#^zWrhCGn&WHE3=YKpr*W-HbX8wc5Th2Uk*)0Bw$GJ~p zuVx*m*%xUJtNZshFLgO|#VJEGWd4ml6C0!Ti!vO8mrwRI-OJp$+hh;V8#hVkU^a~{ z*=cH9SL#%E2EHscem~Ff%N}!~2fl@i&)KnRRi4}+<$g>(c=n^9zN8ZdvZ9wcBYvA+ zc#>jfDYU3K{Opy}n=)T0zE%D(x$)Wx>2H(TzC|#+zShGL`*&CIEY9yo|EDgLdF++- zJ;LaF{+mrl*YbKcUtZnopJ&!}&dF!Kyz-7YSqJ^gq^6!ddgtA4-LGDyzh8#M$Uft+ zcHewi+3)3%cbCkj{VRw$t@dbUjJnV<^}ZQj=RW**JJIGWd$ewR?I&~3f@9OKHE0~a zcjJOYP@A54@zYmZV&AKDMZ4!#W__Dnc5<4R=G5T4!u`(@WV1|LM0#g=g}usjSke7w z!r_zW6sMdyo}3j@YTLHFw8G|cZoi4W!7lTqsv)_r&K`ZM-fCdoC(X5a>+R`Ff_JTc zY+;=?IWqEZt{%%w5#fK?>vm6VTH?C5bF${v3Fc0m^Mqd5YF8945xO;@;MK#tX2q|G zjT%$#C!GGV;ZafW8`*2AztY=+{_{oqM`r2u3ZBS1wKZK=Y38H}28QR)Nvj{P+-tni zCeZhZy6Ar&&(iL^qGf_p*_I#e`@ZFfV_{r%(ar74CUb90dh>I4?n#rKt5VEZD@BcV z{a#WSHh=b-uST6OS$ajkzUsVw^iIWjueS6p-!e|vr|vSF?CGP*oL6$u^I-4fCTZ`P z2eqE+CKhbg(_gGAlINYG;c{t0&b{=$`CB`j4K}|{&~I^Aapu~(i2>7lC#~}9pT1;M z%4(%KUMUaq=Ik%NeeJWPo#Lw8c_RJ#ewJ)ZJ;j$!O?$U{9kWC6R7ZKH<<d?wk54TZ z`))pAwy*k+TdqGn)?YF{Q)K*F)TZ;Dh7XJH)7p9?<qZ?~lg}7_sC|&|JGOf7?8?3T z>N!bowl+WIy%v92hC$8bv0~p2gVzsd<;|G*WtY9JUD7JQrD?_|r>uOF#<|q1>e;`U zA^QIonV4!SUkjS>WZrw#q>V|(CX`N17gn(dJa?{l&6y=>9AP)TGTVf7-9kA-)Y;@u zB~J5DQWczPFj-~!hNnkbt{>s*Qa5zo^yJJt*PdN!su3%_IzDC;=Pj{*=(~79<vha! zL3^HX<~2zD)cs;Krz3=Y+uEpG3CHgC-u7}%WIy8Edwb@`kTVRuYTcsB*6V`TW$|q7 zuGE~R|9sI)&cEApI+weZb~2O&DR0VJQKGeW(U$0NWe%PYhv^s6UC+Jm)HrRHcj{-g z^uFect5sfa-Wu|AdYbl1ukF)TEx7#jX40-p+RME*ADqw8wE5Az-xvK|A5CoAk#4!R zss21~w3t&uxmu<s$GL0feTO!GUF*6s;=r$U-}Jg`r3}(SlC(0H?3l6FWL@Tq-R=!f zH|>g%%w4gO>1a;^3qw`dR36QDTse1(b2;q<HY%AOJUi)G@#VC0Y}@77wEyufue$%` z+f45Az%$}4MPJ@Y8|uudwODDqbK(_2*OaVD8XUJ97GItg+MgYATIht^SBt*MdW#wa zdKCiAJ11mrTvw|4$<OiU?fU^qC*E7^-1*k6Mko8l;x5<5H;mKTr4@hh&b5_GOV+r< zanb%<bFa|D^uu-?7izb(PW@nR?YR6%v$)-s>J7@8!Et5ZmTk{6Tj-TFxykNV;`ybU zdL-L;mXv-J4|^kW_=;yL-xe;{a=(x~P4zzSl!&P%zL!<JmPXWA%{}W>{P|kaEzk7S zBa<G+b#9%}xN??kbI!M1>uuTv*IIYh7XA!M)D+uy;6VJlv<4LhX&s-ZGfo;T;`*tq zljx^XYrJ}z$xZ!JlF!s8E4VD(8m`hAt$O$ApOfm0FZ)7s-V_K*=PXIk3XbWUU&S-8 zqG^$uf<>*RZ0*hWHr4mHo_{QUAzbP039k+DS=V2EI+Mb~9l{s?RVXaK>1+0t)!mbh zeN~P8Sk9oh?_OD2b?gVLf2}olCqC?SE_;2pf8Wn-S9iQSBB)q6H(`n%6Pwe;unXJH z*Sx=(RrdUz=rXs(KmKlAs~&C^&Q++kpYzPFn(ueZ?+4$Wtzm06-DAncsdLZk=KuWh zc6V{##G-&Xr`LqI&Jfu0DZ{bu)uV;Gd1u}BpP_bo%AN3c+w|vIM@Q<^2$b2!XxMze z^ZESsC0{Pj<re>2dZb?L-m~CE-``ET(Ai#-udI`4keZ!5ckf;G?dJV=79JLqKkxsI zy;j)S-nd5eqSg9e_Sa7-_Ft$nwA=A)YijKEr!PvFs){3~YVK}HJ-PQai&M|hm*;ke z9GU8Sdf%4Sh01P%MsoKo_pY3@J*c%J=5g2@FN?5{B_A!ik9nHP-c32q8<d$<wrbB5 zziYeyab27^af<AE9md^E77;s^-^hIW?d>v#<j1q#y!<Gvo;<}>I?N_r)3o$o#quZ# z?-{D*ryhBmg(pu6opbt`(dB6qBR4+koFjW%?C;I3^>c0RM0l(YwvLXJ4{mo!*{)=B zW6g>4{M<fo@9#{F>wmCM{(Z4hNs9CHvlTZT65j}Eyf#Q%Y0M#8AOC#i`kSXUBp6?A z+kNuXxqQFU)CaEW={d18?<_Oc{dwoEZbC}Yn*%{UoyV`{>aY9K5!tJH!K9|9vQTHC z<jd>V&#bQBc43C6i~5Hb+n=gt)>Yo#78|SDmU-uNn)lBYGrhKEd+4e?-MCU!IWN#N zQg>s|%I6Q?U5ii(Uv}ZczL-@a&;B<TznD46|M$7<d`JI<ekoCFR>}%&$&ZiBQDtlo zv%4_qwU=tmg&UGL?j$zde#^J@WMNcOuC2+L%d8VF#2s6)&c8?d@q+!&lg`Mj%r3B2 z?BaEI%o9l3`}f`q%fM?7Zg{Ws(cC=YtBJ#lOV;s*k2_21YR+^m_EamJdbaH9M`yA6 z57wnigezEFMZ5HxF5Q^xfA4o+!kdHNkM_Qqcr`Z2kLk<3&yQ4XJs!1{XWW05WyAFM zRsD>u;%tJa>+9G4pZk9;YhA_t`tVTuPnj1(zbY>L$?vj`WB!*r&U4$|_hxS`+F|`B z?Dq?cX#EPl?Y!)_4chWfiJw=IbMD!`yLQF>4UD|yO#S8=OXZ$v{&=hr?&&Z7cUnNi z&6!cMCr!<AwpH^w{|UFVym@EZ-ao!3`!XL+7T5my?#d1J`ko?@Dzzq$E16-^HTTx` zna5hoFMajn7oX`j_s79HZGAfLb&i^gwwRkP4t_kv!EWJU@11KuTClC!o>ji){o%>~ zJb8bup7H0==4I1&{{M3Fx5_z2gNeWRI@P#t`kbA1aqfGTH4)u~c6atH6H5p-<^0v> zoPTHApBpZltit|m^k2p$sB>-Zf4=nx^tp8--$r-HdcU>c)^V{ta$G^`gXQi*&827N z^tvs|sy;mLT|n}x#L`*SjoTL7j=L=QIo5XjbBQjyGMks7$*X_v6+fRoGpugmrCC>A z>}y^)H6l2wchSmO>sWtzD9_*EJ|Wt}@>y=>qnFmwFIR2hRL*>OMeg*z*Ry5$Ze*Na z>vFavX}e#7UU@-+%DK{vi(gh9=bw^m73P&+`&wVc=!)(7X2q*Yf&#BSV=Ejp&ZPaf zb?Gd~o$&D?)1@k{?AvVo#y@-i9c^Ex5z+8ydf>55(qg>|Q8VVv$b0)O)kQV(xo^_l z&1b%D{CP5H(SwH{RrYZ!S7@zRq{DlyTV&o`-6y*q&j^Y%d+W4v_CL+aw04%>tbKC} zjc>j%<9lzk<-hD)g9)wS7c##b^N6!K$oE?E?X{{YZ_3YXT(C`STjqPU?@V<wwL~<} z7)U)Xb)9_Ua)-i+Uy28%t8M$VZ?LyKzBxs>h9$UlN^{-ndN<WCGP?x!u=cQ?f3-iW zV8zD<-l-Sme=zQ6@{-gljMPnPVTn9ir!ExJRPXZq0>9fE>3dI){>fZ7UH9US>8CH3 zOHA@9<y?5Zko#}KwbeIL<d?JDwmQsXf4qm|fW;r-KfNy)J{<Xb=IbdBfpiwva}%m0 z@|V3`5ptUOkbtrg^URCKJ2l>_FJFA>6q7;U;)q2Jf>w?^^~+d)SXHf!*st}geA-`Y z{?)9B*B|lf^7HhaxxURuJw!>`GizS-lXJ4EvWb>yCmQa}THn9Ra_-R`_pFy3JQs3t zif&|3!JYFd`<r5Z$W3%~J$ku<B`-=aZG&d~+%*Y11LV(pp3r@^%2!ltXOOqsL=Gpx z5QqBz_owPEyz;*#hcm>aInHgq<g<An?DfC97~fa;*`x5`f%Xg4i*xhcRyBQ_W4oZX zV~xOnbN+*t+n-F+c`0|OGH4M)w0-SkhF||`&Ur^%%5?AuU(qxFkvU&W_2Yd#b}~0# zg+Kn^U45llYxaN6IM$5&TlT(r_V)RQt6%3{?Pw^tzR@?f!q`S|jp>X|_2WnGWqy`^ zuXFsH$0mWZ1xzgK{@LBx!RRBPuxS>DU3XnnM)1AoDW?wDsXJFc+PUofo+QPZr}IJ& zAH0440`n9pn`TRA`LGMOrf$8SJTv)+_^Na2-}CH0$?pHq{bD&oqszK^i{||LH*wMX z)K6FCck|CGxB1j9kP^23f%uVgIpGyMjq6ly<Se;rASC0mS9<oo7aQWAwq4H*j5ob) z`*7Xikg^ls;`|F{TS|Xd-}2Brtbb0G;`D9q|6ehG-+MH8#c#)o@6*ouL`T^ei0T_f z<ZStt<EvKw{N^qHsUNBt1)YM`CQEl%ZaP`QcD?uJi{_PUy^XD>Z{PF1-Cst-zuV%$ zDgBz;>lVwbI@|89?|<^<ZmE^iX4?Nf9C|d#h_TPa$1wE6@79JT7Q5??Z0E6VP58HY z!b!76o%9=@Pdi1wtXFX8p3wi?@~y*39-9L}H}2hZ`s!zYn5Tks^Tyjjw|ka2bxb-j z+o-YnXpT`PYvrn-b0>wCI&4shT&}HJ&&_w$%}tTF|J*sPwJM4-j2b!~`x+VC{Ed1< zHhnw#{@=R=Q!U+IY&iLIt;F9avEmtL?z_Hl|Eqo^zWTy%<x;`3do)sNe@|?6Gdi)T z^+MXIefj+M=5LfFEz0iYf6-n)J(1}Z^I5)a%iFuxG&+BZO4M8|aObqWn3Ur3w|vRh z@}&Q+^!Z}{BeJt#O`_ki&O6_>>T!B5nh|)a<F!Qo#ShZ=Iye`X1<4=u>APvza)e{5 zu->!_9E(mG$MGvxzV*NUZ^{Z$7u8t4I4;IBKiA6l2Wx3JFeWRVl=&AVxm1X)$0zJ6 zr<2Q4dF7rT=RV!gV^{w6`-Z^t*M&`;efAy_p&L}{%p?~H{Zx1sVE9qo;N$uO|L1kj zG+r(eY>*J}rpdqchuFKDfBv_m?uvb|yw3ZyNS-r)&PDSZ`{ZN3_4?n+*m&XoiiNg9 zWv`yu{(9Ib9>445i?wGXcC0N=*p+v$H@-34T7t9ssD9V1TV?yDRX_M|Uo*Ax;q2X& z9lZz7t?SkJ)H^?a&)>yA&Lz&}-ukSYU-s@^>4)$CmHl~PJo9eyVoSf7i(d*^y_>$d zuKaCzN0-QrE`Qk&#f}Mfh8kfHcf_c4=ephdl;*~{?~jav!X=N|^}Q2aCVVPa5in8Z zQuy;Qzc9e`#n!$*GZ(yGe5goHuq5|neoeP;<qnQJ*V)hC+%X|^p402os%($eziU~e z_opm5Yqy)oB(I{owq~9)CZ&omipbN;y?5*8vY?~hLOf??M9q`)Z_GORv@yP_s_2pD zb)F-8_iPDokB^_RegzBT)2OthR^}P`Et9h6Wo|Po@3wMo=*%)muKbs0v~T-|Z_>3Q zKKVjoPaZctvs65Nd1CiO@fOydUrzkA{+9k%c0prwEWh&My;18o+1h6O;wg9J`+n5w zTj_;oH3g;XpFV%^`ronFS5IwyAolIU-4oxJsHFa9oh!97f44Jp?Ckm6<@(lpPq(^H z=HwJ~nLf>QzQQ5vr`A3#Q*s}#7T=Nf#Zt}p>AYQ2^1hg+|1_O&+HuR}OR9I*{Ig7F zQ4lx1^K8kv*7jZE0w=m37b;JUzoX9l+UMRMukOBS&tw{;eumzAu=w`dNw+eEZrn%} z(7N{B=Ch8%lI_;5E@oO$x&{Kj&is)H*n9VM#kOf*w!SE5dA?u$PW08+zZWg6<k<GT zrQ2Wnp4^KTnb|LA&COToDSL4?FNeKH=~)g-dS|1JgUE|r9}5mo*_n6B#A;_l_JRyq z&U5yT>ym4J6g4iJE)<gaWE)f3$xO8)%DY$PNN=uR$itGLrZ>03VvFXEt4`0}opM<? zZL2Vc^fVvFB{xI1PQN?%2*-o7=I?j@K6(4S`+*Bbj4%H1WK~?0Zs<|=J>1yfi8cSG zmFg_|{+ws`-hSVD;n&WE3%>l?XTi9W(frqj?4Nshf7<l)vc12^TNcSXx$T47_3+S( z+nmLZZ*a7*-E8i-lF6uWQjb#0Y|~y<qpq4aAJ5zW`X=!*<-6(Pr-xcvI-i`l^1Xrg zw%d|=*^OoW6_Koqx6iA6U-??^_mw%G0s^Zx@dtD&sqMQmv(rE!Zex{quhZ9m$^0^R z#EZ+{&$hW?=x)F;b&IF8@~X#|g@r}_thO`?zrSt$-dw|3yI#EiEKqq-RYLyV=M8bC z^VwHOn^ieHS$ZP;M0;NC()^?GmoyhXI<-1GeEq$Wx8e^C_K4Q1ow${JXS&af=DT;+ z-D>?9lWL<cy5!lR7i*4b8voh8>#+UQqNRO36LyB~xxROyL3i8x(*N;a_f?2gvhpqV z@BF<?*;a6O|MX;;y{FFP%K7a5!P|Fm<%BiYo<+@H^Wgt=hR4$mI~Rq2pY!G#>rSs9 z|MTut{rKPeU-rp=_Vb!zvq4*_LHn$m7-liBfH(|H3=9ks4805t403!tU=aoeAt(%I zSjFhY_<`v((|2Ya=2+&dEW#|dEO9I~EQ?uQu$r@8WlLkb%I?L!heMHLD#t%g6V58m zrCe%U+qpHkm-C48)bI-PF5uJRyUMT2-z(rCFhkH$@PH7vP_wXz@LmxIk?o>7qLan! z#2Ljq#GgyZN`y$XN-UD(lPs0oFJ&jyDa|UKEB#m|SmuCixa?ZFaJg&p((<zu*cB2L z_A06<E>irf)U3><+^Hg<;;Z7TQm(RH<%{Y8HAl5q>KW>fH0(5fYgTLC)Z)@|&`Q$k z(%P=|PMc5LPrFC^oQ|PRuFh}WWIbuUdHP)XEe4JT&kZXLrx|WBd~C#TlxDP(fdRb# zoRNXy->JXc@%%Pl8TgrBK*I-4{eSwOjpY~9Pw>8RP)IT`FjU;qoxt2P&r!tn{h6A; zT<ul4x3}f)=FO5We7nJ{S<7#C+Kz8*+4FDynLNkl%-PAOuEg6Idmox^xz@OBdfg6l zD>nT*iLu7gQ!^fYWw~|J@|XWRvz<quHBL+BpYWQ)`k{sn$4}>n26I}yH%RwY+v+Sk zX86eBjq&!l;8^?KQsocjSzC0kL`bhLeAhB>*JP>eM<y5YE*L!8_-*zvwzz7cX)h*b zcb&T}DwVFEJu`dx^}P8)D<p+uLQKkJT5j%-a=yPbExELHZt|=P)wQ~3xA2;^{yF<B zt<<he;G@Ww$rqOk`5WHdGNIaM+3}Qrd-fUr<Xy($yGv|laMY2zYLjQbX?e^3_vh(v zTYX~dqjQ+A-&y0j`Dkdi)NcEY+gEenthW2Q>{s1E#aflPe7}p+Ef?C>x868>LD*`c zcB%Z@n%In&`G;~o*VtZfjrQ{XTf1U&Ta3{+Rx`Qk3-2XuE@)=`X>v(BcfDUKBcV`; zq2g9@LP|oyub=aK6}wXJ{a^lHJED%!HNa7sVVgbsO|X1Y&6zFjjZ+&NS8{t88+>ud zIL6M?*5kwDv7oW>;a-Nrv$q@6In2uDYG!V3YSP(!sGhq`W7&M3{UQ<)zaGzM+{JIa zmO(2pA%TU#e1~8)C~ix7R3lgd8CufsdmX=P`tV)nKgYu>zce{7di?HPo^1aP>%EEj zl1mcG7r$j!U|7NM#y;$4l`kjTgg%oO1`pa@RFtKEYB;j)GVICJNtSirafEr^lmgY@ zBVD{3mHm$Fj9PEDIyY<it+n4)HoxlFzIS`~c6QDK(u^K%T19~wt&=|<j1-T4<S}Pu zsl5gBs}0-dZr{A!`egLI53|DeJYn_UdCIb{xZ&)YL{sm`BOJH(wa&6l+a8&J?Id@l zR{zt5HWR8p)lUB(Q#IkI!dpkK3)4dw8FF}&B0>II6L!7owhy1|s-59eMV2+pJn`DJ zz3cK_?&Dj`?tcA!V(k*u=XKw;&L60i40u`oJA-?|r0SouLk*gZ4p<(z;Ixq8=)U)? z4Ec2(7vGvk-1@t^|Gdu}zC-;2?|;u&?QZ|ub$`azCykkr8cZTlc_l51B`>TpG+I6^ zZnjj_&9s~me&OGo^&zdRH?C3SxvLU>F)!$R_L-M^{TmKX60^!mPJA7#KK=AX!wlJb z8zXK@u9bQxyI^UFb?Ratv(BW`_B>Xm&9<^S8fR`tT(x_Cc-FO8cHvtM|8E~UbS2*U z^0AI@QF7C4?jNeLz43Fl|GBg`%z3#JvwHUw_JtQaGI&1o74@CGYB%$o)ZaRlmsZ*d zNEfnL?0DL~gmD}1r&p}&<66=rSQ<TZ9&X56c;jQ>p2YO-Z_lLn9A90XzexV^qN8&5 zU5^wvZUr{9$+E<<FmB=OFJWfy=33F@WUJ&;TXp)l-OHr?B`cXlgsdXGUaF}rnEOR` z#{svt?6jw!&7V1~Z#^p6-6NIMp&4!zy++vicHNFtH|s`yW^IO;+h0$n3F+?*l6ezs zvEXgriPYS8%h#5uE|`$lva`8AW6KJGH?s>192mo`y*6+?V)(%l!_8dAX?`h-Jv2Qb zB;)+tjeTtC9&_cEJbWW^c-j*67m5`ddluYPjh=BwfJOLvAIIWrr!thi4U0T2?3QRa z28y%xt`fQMd}89n?;72jYZKbqDtuIT&S`&}arj`N>pBLDW$~XGw=Cd$Xz{)*!+hSi zY^RG_s;nK&VyVYCWu0W0`~-6O{8pJ)*9B$dv+x%_38*XDu;yOQ@BA|3rI{1=&3UD* zB{;e2zQ3Bfsno=7;j#l0ib~BTAFnU`<+NC>aYD{d&dcr<cP-fbtnHFLxn8e5d&W=k zi>E20VrI}^-%IoIuBqz!v}kxg@?ISAQlf2Q+3Hm;N=5hP^-sRU%J06kTX~Y(xz-QA z&(3a}A&~lTm!5He;%q_Hsddu-vuE>ntdmMybBpg@K<B|vY9G&jn&$OMCx7*l1D8TP zCq9*(Iwj&>sHgntYOR;)mGP>~I=QOVf08v-mZ_Rt_`!Z(jQuKS^4k+X-k*6f$G}fk z^8aK>M^2f|`bRw%>`M!feC}Bz_K<niYsQDknw;{d+gtim=YH5YN2x~VzsrvZKViFR z^=dUb=^XN>+nSb^B*<%eRU5PDX0G13RAu8qW9!u)CieEfu(Jze@ZGUww$ZG~e-idz zI-K&wze?B7&0Ef2#%`Wxm)q6P>CGZfFZayTuAQe@F)!?2Oy|1(ayxY?v#UiL<F4%E z_;)*EV)04i#it_T1>`U6SyCrrHLLi;(yTiXMFsDy!c9uL?>t}Wx+tuj%_PucpYHlc zJ2Yn-G5v4&;o!V$uI1qsVI2=yT~i<O7HMC3Id_-p;X_9ibLEfma&8d0JhOZG-31fp zwyVDUwujNVZrPgL-}AWxSUwjguBxyuh~>0cp*StG<qprrCFkR=3v|qTvp>kOJ-5?U zcI(NQ3llwGPnchlo~*?A#8%aO<?%^IIYNFynbQRHyp$}vRlGffy1#bVrO$ogqPOUr z>ywwef2-J@b8X&m<uQ{-^qf~kiqkumJ)PHSu>70v%_mFl9GyB(mvypXZ_@ev1CzG+ zT>3Jl<VB$NhLGiVS5Mv_yGbq1<n7%&Pr090g{QuV+wJtPu~@8V{n2bMr{>5zN2G7v zH!5e6pVs7NlpXTo-n#jl-pz<!zUE!)#&Fk+R_<@1oaQ2Ww+ycyGj>~`SGu&#tYDgw zP1~Gv&qI#Yv>d*4cERTcuZX6$Ij`sKUpeWZ)7_;L?i*b?YoFC68SL_6nu_fzzcbyU zC9iW<x#--m4g2S`+x7OO*tjQmGP&XeS+BmiRnBt%LlJZQ1>O4E&VRhJ=^>|nOuCjY zdTw&Xah)m`^PFQwuQq;-`{?lafAzZVEjJb_G#uJKZ-IBhsh$l?ckXU2%)Ya=@cYp% zxf85H6*vEXW?d*Bz~|a3U?qB(i%~hykx3$yLt^pEpq|SOoKgm!%*z%faV+#TT`Lr< zrPbv>JFqizn%@PPxta6MZE;ACN|`I$rP|t%dW|zogefd@muR+$f-m#6%mZw%x!<nx zojPM%#Qe-?)n&3)j=M{i*;-w;oBPtCzp%E5i9dHrc9@)H^pxW=CDL18y-+#jeP@nS z{<$?1cUWGZDLrXvoWUncqYKY>w9JctS@h_ER8;}9?T)M43?uK!DxZJ9@Hzj5&+c=L z`Q|NPKYyWFJa_h_r+bY){o$?p$7lQhg5~1}!c`wwZGZG}P5qWSTYII}pWmOiJJ-+p zVmKpf?a8T2i|bdn8}HYDeM>&shta*_R?>%i2Md@27MsXe2((=^za};PXy!~4!N06W zEY6Ee;7eLO&9Iu=O@98Y+U7-l%yYS1Is)3+T2_7KmpUq8`Tmiu_i4?459435cwhBk z=+5@oX|z;oVa?katO*QBHNmgl;`P`6HoV^PQNB3dMXQ15Uhn=0uA_z;+xCRr-YGc! zv!>mqFR>SwpW~iuD`C=cG}DG-C&R)++7l{nB_H5bQJ9d)%FH}jL*V`Y|8g$IA<PRo zn>jD<`fopDo1xs#|Bv^}M$}0M$Q?3g{>b=8Nkke{7bhhoJV?<<N=QpcdC0O!oYAo5 z><I;?CyqCKc#?Q-E95A=JX*kZDlPFsl1THWNXa=8vI}y|R0`vki5yeYnB9M{<)<X` zg3wI?y&4@!FAgT|Pr9&c_wL=|y07)tyuWY0<lU(ViK5AsJM(*uM6HU>PEvE8>tJ43 zRnlj)#_({%#g4Fqxhkf`-Yn-jxYb)9-}+s;IoZbJiT6{%WAam%mu^@0yRu6ANUM;F z=BhgXA2B~>N%OUAezeAGx5J^j(nW_NALYE-=5jYZbe^X*@2|U?quy)s+GN>=|FZi$ zX~~``9ebITd9u!OUNsGRWLh%qWW-^~3ntl7**){*%NG3qZM)%|jc&hVs^n6=zjMx+ zHCrf)J^ft2x9a7L<2q}f&v}0C@29+pUw1Ptf3bT`dhqUDzi(VTpcojcZvWzuf?#j) z@|ee!cV`B8tx!$7`ZevrJ4;i`TdNi4Y^eTFJ!##&#Q5ieqQ&#I-`fWlynFwjJF4#H z?tP6KzV*(I)jqr5%~KWH`j|`oSZUhQrSCFATG~yrj@;eKRr=6zx44|K+#`>#zxS`) z$=a}Si%`X_oP*5^ofsJy4*cGhd;9(EZJTy_@y2nNESFpn$||*Tf#+tiwYRpszOppB zKd$x{uY^g;jgG+NW4<#?Qg8J{7C+OC+Lm;6R;jdE?#*q<*XPx;^T~3`SQoxJvy*%J zx|rRCug^8R`^W96`uy(ja{c>te|~+|SJ6?@Qqxn^RMl11R$m{Z&asY5fQ^Bn<K9EP znLiIMWi&Z(J!PHmw|TPXax``pB_E&5F6bXu)|vU{X1Rl#pQF>$3lo#o{pMPhKfE+G z`(Dit;SW#EbHZm$&rEob!LY2i=d9wE&8kz%S}ysmdDppfXJ^8^jY~PRJ>0T9m1g@V z<pp^u1-qyPJE&zBq*(<xW;hn6`PIo4JGiM8I~1z9G%r?V@Qro)1@1R7{{PRw4*<aw BF9QGo diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-BoldItalic.woff2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff deleted file mode 100644 index 6f43b594b6c1d863a0e3f93b001f8dd503316464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19676 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 TD9v!_wyPDWf64g&KLbAiuRWmC diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b50920e138807f385d0b0359f4f0f09891f18406 GIT binary patch literal 16988 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 H7#J7;7N@=P literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff deleted file mode 100644 index 21f5812968c42392a3eaea9b0c6320870b6b8b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30772 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 f$bo?4N&(@jz??dI=TW@q9FPgvQ!i=EW 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ℜ4yZG);t54r^Fz@dTb5B{i((<Nw{{rXVZXbXC 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..eb24a7ba282b03d830fa6c63ee897d92a5188736 GIT binary patch literal 26272 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%0ACeACI`&#sA>Bh*mvJpSZ)T<Ht`?b#L7YCT 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 C52o7y literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff deleted file mode 100644 index 0ae390d74c9f665cf8b1e5ea5483395da7513444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18668 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%0Ar7d#NKeiZ9ez|H6H~x$3hy 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 W*>U;iD{=qI)H9$y6662>4EzA1RV=Xp diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..29657023adc09956249f6295746c8ce4469b50d3 GIT binary patch literal 16400 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 NY-VqDQe<FY003$KtYH8E literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff deleted file mode 100644 index eb5159d4c1ca83fb92b3190223698427df0e010c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18748 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 VF5i45?q8XD2Gl=f{QsYU9{?ZMyAJ>W diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Math-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..215c143fd7805a5c2b222bd7892a1a2b09610020 GIT binary patch literal 16440 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 N&g=IVUf^V4006N1@|^$x literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff deleted file mode 100644 index 8d47c02d9408d34b2a9d566c0fe0d42bf82fb735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14408 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 B?6Uv> diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cfaa3bda59246b49e94298478d6de3b3208066c8 GIT binary patch literal 12216 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 J5*%-s82~RyX?_3z literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff deleted file mode 100644 index 7e02df963621a5e26d53d510f0b4992eebde1c60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14112 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 TbQxnm+N}rocNqWwXW$0_CFiHf diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..349c06dc609f896392fd5bc8b364d3bc3efc9330 GIT binary patch literal 12028 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 RzrM!4x@H_?lf03e0RUf*@-+Ye literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff deleted file mode 100644 index 31b84829b42edae20d0148eeec0d922dad2108c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12316 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 BE-C;3 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_SansSerif-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a90eea85f6f7bded69ff5d40114447a6d8b48cfe GIT binary patch literal 10344 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 Ip4HMQo z?}`>n{K>FcuDh;V<bI5buz~(O`IA;hL#?i@+r5QP@7}7vpK^3Ritsz!_Y{8V@*sCn z&F!~;e|Ua0dwF*^1D|zOp!Tfyi|5MQ%WZn5CK}MGF0dz(Wx=dlyVKvRDW`X4yow5A zT`g2po%b;;qIT=Mw&?%g8suJkaeWo@FP!&iI%9Uk)U9)ux7yl1mHYpD|6bb%-<_?+ z{nBPHUG7~OSi^9(dUauWmWEKSS>NuDZ||>8n8g@1wQ5>{tMB(7vl%wAZ>HPt-|Z=N zQg23H+~1XbMsJT^<73|Dy=UW>)uPLv{t5X0NHQQj{R4ZP*Cp>y;@`P8#JL|nVicIV zYjgBV{cHV3Wsfbw*R3{Dx7hJ+YjsGI$kll_moaI*6gk!Vk2h?kV2MQQ%?lsHA8zJ4 zTf6Plp=tBy8(ub9x?{a+>Ea6e(}(>OBa6;0E`DX)ICb&Wi%$c0*uJWH#P1n(b?cXt z648M-^D@p(p564SAa6$EocU&JZ%kN!Oua5B&Hu&mjUO2<xjP7)Y1>?0y5;?E$Cyfq zZC0Cu?7KbtXHV5};$H9b{AvI3%Y2F7a`;8&9NeMgDIzmpPBHxGMB6Z(&Wxvft-muI z-u2Zwy?*vuV}>VLPY>SNS#0xTb*RG9-ZiE^DV0;33^a`oa7fFZeq)i*a3tnz(woUI zyKmQBIsMIW(|dDOE7{|(l8q*5P584r@VRkV<5X#nEq!0UMDK~V-+oW->b!Z46|a*g z`e&TH^}3#&WkP6uW@hYi0jA$CG}pHG%yT*UM&Dm~Z*K9{qxRdT?*DVR;p=RvPj@ZP z<#w^WTIB7-9b8!T_E4qjp{M#c1YHu(oH69Ser@5t2QG(BRjtc!y0&uemoJ_VPG9!6 zyR2lI?lv{Ld((dI$@(+X1bii&7tcOo_w&hyh*g_{jLR!?m#S6Yui9{M=Z!Ui{MzL? zs>+qz^M4<0wLB{7x>M-uy@@%E3{s7|c5Y!lwB`ECpttMU&zKqrm;0?&JY@g4@KXa* z`csjW9sOw@+DB4soyz^*m6y*t``L-3R`JTV&8Gsk?o2bzk@y|_|NI=?y%kKaB0gB; z7r6+fxUYXMcA|GeQdigO<)14)W{O&PXv}$Kuz&q0C+*LwJIzIA>ZCWU-dZAS-1X|T zmQ01h%{>um#+`x}`)oqJj9C6o4SvNF@YX<&&7mw|rHi4}<LP%bg<^v>{GBhUct4r= zTy?fnuvFh}p%pP+JbPH>x0Upr340)Wa^<UKfqd`h9=jB3^Ukfc_1xKKytmJN_;_~a z6b12cOUtkSmMN#Q&#-2k^xft5&6LUJ)0X!>4k|vp_1h8!k##F#Bu;+wd$BQ6{Y%Bo ziQJ-7AM&W$FS@W{iOQBBC28%`k;;>0?pMXnnj9W^CFiM6a_O0%3F3a$bK*bkUpn#A zD`#~nX;H1{o!M$UhCeC-e@v`htYiP+Q}T!GceiG?$4~z*AiCy;Q{K&=t1ch9xp5Lx zD8pLk)1RK(J}#ZReEF=DKMaw*RW^+d2llVB-g+x}@5;$}ftuo84lgeYC;F>51uSCl z-)s8PCTps5U{nJ?PrujgpthuCn@(x^$?lvsK_J~rb=||Op{HhMOXx4>ICn93%arMH zMQoM-()a64FaCM(Yw*G<wq-LvEjqySUVB2|sX2|crGhy=&Yyk%y*NE>J99F3)YJ=m z6Kr1d%dSooy6W5Ye%_Xav-Y$uZ&0mIzHS=5^=9V#X^(EI7CSwXueX*z+Iv;ao?pi; z`CbiA$|lcuoq1|=rZ1Oy<hbL}+^V0ybq{Tvvnk_zNsGbde-ZoR4mAFE+w1&!T2n%L zi;H#if!lLK?oIT_$P{(CeYHo$<GG&X2IFOo)3#YDU+B$Pn=pOe$LGfdgHr$WHzl$8 z&k6i^?Ir8N@K<x*c`TZ6QYBsV?fQ;MhOcBYCT_fOBX>EsPwF4ZOH91KZ$(<z@XGGV zzyDnR!j<0pSMFt*l}{{8T6FWs?QZ8g&f4J(=dBO1mtFoHapy$EFO%Jiecmpv-zU_Q zeLKr=>C82yW#t!_Yii|}{(QqOcBS$QPuT~B9Sh7>yyxR(Qh#JqC3AbT^q;v|9#a*I zuOy}3_+!|1pTj!K$Z2M|^dmMu-&eY81;eE-Px)iCzN`Jg;Tnfk*QT)?dKI%|-`CiK zua-`|<K0obLUXIq*35IOw6AoW-m})(<Ia^kRe2^(7k>0qt(|z@`{e1<ty0Tg%leo; zlH-zPVLxkn_wsYQkSv82|Knct_dPpn%Wgh1_j8_DZMlhAb1A>B$JYxn$~6twHmAKU zoRS%_aYcI>gV{OhPo51O-@J>8o1*`hhPdw3-c@wG^KamUh^8Iw(+)2#z8&V_{hYn# z_<!FODW^96>uhy=a{jGXqgv1+h0<A8+}X!eMOwb<-oAdW;z(CTh_}AJ{~Z0o@@KIe z`rE&(>B;%9_UMfLlTIYDuS_iVE<c+my?OTGcgH0D-Ca?gaZ%~R&gNSem-Fi{*Sx*D z^hMBm?Hc#!xvVpk&xi$FKb2C+G3Sk@p@z9&$7wE~&&NI*Uvc+rTBj8*$~|k@sq21K z?M&W(|G$#7xnawjRr%R$cd|=Z(!5JIx7>C-m?2bsFKgz`^~O5{xuZ`#(?~FE+136` zpDB2DmCfQekCL)`o2+;IU2#S4Yp&2~h9^<4V>T;&FL?btEMaf{TBgl8I?K9r6WX&c z9zJuc*7RZg(V&^<SFOk_dcE}VqTg#*YQ5L^XSHq7^^7t}mR5nqd@5dNQ!nl`3Vo(m zW+D4u^V6f_{99MN^0o<9Yfnnsp^;X|;koMQs|_b7H|#%Y?k{CqQ8=J_w4&EZ{@ zl>OAukoV7*Gv7^ia^#2{zF<1L{@HV(&n&0ERzD7GDHAz&dUnMV^I3dt9QW0G=iL`v zd-`14%=hNu9JgCUxnJ+Am3O`*BNr_$TykYs@ka(l-$!5BSKoB2_jx?y?21mA)~I9e zHr>}a)o@opri9(bvSwS^sdN|HuY2$8SG9V=U(uA;vTj9C#njNQRfW;#rbom(KJI;c zZsUcv+Vi^>9(kv0c`Hbq<*e*1Ym0StnTLZku1{I{P2aUZUS3NuJg+iG<%#2kzH8fL zm5v@t`|w_G!onlZ{vKHOoaax4|7}Mn6W?R?#cY+%HW4oGikf${P7B{Ty?>2fR|M}R z!TYQK^GV3eINY#dyA<D?`aIWZY*WSdUQ#kwXR@=4Q@H-`@sC&9jZ9uHZqoB41m4HF zI=L!6yDI%`!Ru=k!R4_<1-sZ)L@jylMCQ6W$<Gs&Yz}|Ze|5hPhoOXkvFQA%5@$Vp z*4@qS=v{C}N6(_^T}<Mn5LYoiu`klxeRrm0i|<l8%_b3aK;TE)9`6Uu6CeNZ@tK}K zOKa;ME1&Zh&p0|Wt8!&0zJ3*JaF#(;WrJ#D;N^8*x{HfikKH;YvDWCR6N}vOB%?Hy zDIa++&Y1Qpf9VX4z>6+jtScjBpUZyg42w12xIFXFWZ&o4M7|61ADI!7$#QsWL>7x? z<x%Ufe_t5blUvKT=aesA{dlWWcFEjnQdx_o9w|qB6iME&S!nIzoA>4&Hr=%8Lm>Mj zL)%cFt=cYOPLhll8&>xl7Y0B4ct1~lLCg6T^|iM(H)b50(a53et(Je$>{~_km8h)| zZW#w<vPC*nm)=q-t$vo4`FE>mtM_S!FVmYAyGcnE)Ht&JGnR?xy?gd*Th^6DY@(OX z`s|Bf%vo^UYj?M5v1Pydv{@TCRsDDLq?G=+{XaZklq<|4oTDYB_sUEO@sEsk=hmEg zf9z`E3c=mJflqRom%o|2CP41S*2CKcbB@GcQh$2qyOQzppKW_OyzYG|yLPgD@8K1% z{{?SOPu(HTsyyN8nfRHR{K*##Qdy=<C^3xWTG*y|Jz>GYjO^_<45nLW9)G-q^Wddb z^)r@zU|n8!%U=E>Z)N+0H~A{3CrR_~($0Q+^eK1v#oCn5bJ$FcLZdv>StM@O|5JL- z-KKtaUGKZFK<29^sos0izckEt={>Gva_cA8)U_dtULAK*?^{whf7hdnb5Cn8ar{=Y zvu4}P%=ya}C9gSES$m;=-^qI%5ucV!Sh+)Yd#{%6>QkpTo^|{gUUSvhL_<|9dV5Xj z!t#0V&z(B$W-&|Qx{vnF58vlpIl;M#$9dbPOUl|IyDrokPxX?%==E;n%J2^k_4~hb zw~JZ+ox9bDFDvJQ`s$_6SFPA+zfNIqPOkT>$60ek)tpnA#NEx;Us)1*;=iYJviaQV z$Pf<=JL%vR*J>6!OmwQRu>6zfYB<&IiciRMz8=%8jhf#yH*ej1yumO~c-E9HxgM%d zC%hN1$k;zQ<KAL*zlhh;-<GjmUBqX1KFZmpFUOki!J3>ICs(zKHEIRTk^6S&w!gxb z;7}*&$uATpevtb6dv)KAE_dIF77lM0hKtlmzU<>w>kp27`kX`d;tww&C69UPF*Z}? z*)H1EHRsRo$Dh9*-Ia9r+VoZ{PLG-UpYL3}?^FNzg<rpNU0?sGkU9Ow(sdV3&ORX- zP`dROSHq^G^S9PLNE7OOk>gNhWUP47<mDDMuevF#ID}pF4kqw43n-U-@e?{*_1Z5~ zrj28FDet6ju3tBE*~{{)NgRLjWzF1Oo7okvy`S{yv}>U29u-5wAQ#hsNuN#`FDjj0 zxMX1tn>*8dh83k}cD>bH>He*FrOCNA{h&+J)<3_n;`Yizfk}x`(!T<WC%Gy#l)64~ zu-T>}d+nu>z}*ey5}s>z>OaU7$x$-g6E13h<EE?c=k*cGtp5oX9R20BPiK**srmWP zN6o5Y^1@v!<Sr&K9sTi9<Vf9=m)c*?YqqZwIB;2JWuHTx(M@R<6=p}Z&8BBgo!BlS z6~xNI?Ac)PIQQyALEo^$S}soxx4bx1o^y5X8y$}Yac4iqz2PmDz1y%hn%n8b_R!fj zx%cC3&8rzo#F_4<<{0aJx)yF--rF#HN4B&~#=h*Y6X!1r*fryppw8ArUDX3(n_t}Z zy1jme+I?4B8R_yJ(|3LpsAXEY^^c%__4)a?SWWN7zP{V@?nKY6PZ75tC3N42cyTt6 zMT+?eYiR7eV}AbA+0Py4`Z(v)Px*xrBJ;$bim%HJD>8O9nDn%$zi5AFDerEFg}d+g zmdQPp%gtJo;quAW+)Mc3yq|ly&p5vMXKT=Kc)H#i`S&xkUfPyO#uO^-y>z3q@XnRs zB`YuOzHe6hds&y|_0GrjH)i(yI`K?v`K*uKvt}*%dZ9$YF0nw!Dd3vL*%bLn*DpE5 z8*g1#_3?_;F<%XR^9x<xmeyvbtNor|73=x0A$DEr#Oc}{vV8Joss=JKg3}+a@T#)9 zv3QQ3!1Vb(SJf`_#`GoC*xxMs<om!^eDAxzatToepY)ivw<;MwP~fqfEa|!A--Jt7 z#WH>$6})EC7$n{N#jUoC`<TKU$7!eKZ`pD*Ib_ZVPT19#QDNA|`_=dK>Z~iNa#BWG z2j?c9F<AR^>VX9Z=5N$Jx4mSJ(#gLm<za{a2}?$#A4twG7Cz1KrAPSpW~nlJ&!Wd7 zU$*;k|2F<%d}w{Pk<Y5SO-|y94)6NTym8EXTKy^gQ|{hL@s`$H+$<B~|2+J^we865 zw74IYvH45|W&bX0R`~Gh-*h+C$BCK86ehbhoY;_%%XsT%GV9LBnHMYOm^eF{P7^<E zG-(G9i@+-3AF<0m?O2}p%AEh$<rljAB{zi~j~Qj$jP3uqT|^*#=BlQrn|ju4Tgf~} z()7}ouzgnxMVVNm{=}cFI@_UXa&=AWEPlla^L}m6-(>PE+m!jC^_>d~>Qxh2|8GuQ z+Hzr0=DK>BgpEaao%jA&wS3mL{YLfdrtZD-0w3It?c-ePaL~wjQ%A@Yr<IDYpRhdN zDwnFdJkU6yFeg3g=n<#(q($>qiNx=InV`ZjMQw+@{muAm+yBb0-obox)w)?fS)DKc z7jy1TTw29cdo@HV(3mS|g6%6o1=Z({U)MjGlA?Tir_VZlanCX-<xR$B{ahg#JX7^s zs@k27zHa$etfuKA|16qG|7U&PEzMSuX&?Xpn(?Lb*2EB%^fl^I{Z&h^T=2RT7}mp+ zJ2U<E71OB_p3V;*7yezm`uBRjznxZVh2GgSG<43EuAjjCOX|}0S9S~m1`KJI!X<G_ z_dDx72>rO)^kDWxz1`00Pf8;*{N3k0+AbtwAUbvJ^Gk;xp48cO<nz*fpVZjbCA&E! zzGH3q6vDji*BAbdndXYTl1jC`N12Yk6@PlYij_0z+tan03wG2!)nhLROMLYD^NsL1 zQSUAtHOlhXcD%4ud&RUHiG3%oYqO+H7Z$u4ce1qO^(?=9Hmf=r$#};J^I1%lEh<mN z$T`$=bTNF9oOWVD!ciBksNDLvxYvxO8uI(z{pV?4`dTAu)}f%UA2wW;m|3KHk>}9M zZ}Jzi?X9>A`kra9t>TS7wkI$>(kRD4q$~8wgJmqK1#CH-xfZXk-}hMk)#~_E1=-CR ztQ&=1?)cI8eER2S!itx;4=cB9w)d}TdH*X=c&maB2XjMuqWwRfsSQRADJC)*9V{Dk zE996vH|O&7yxVMOp=RHA@U+(%38v7J&q`Yix4dc)vkA3|+`sJF%F`B$O|!2o5s#mx zptyaCkg)cYnFXC^pI=^ao%yk><aXDzh4a|c^|V6XW_{i?p_Omq1V_f}-$VC11RVS0 zG$q@-?;pc&lkHJvYVQ-b*2!ik+<nvgYs*LRjYV^9w@&|XaZ;4N``MtX;;s)zbrg(e zPIkEJ=^C@-+zgknM@OaK_wHGE{<p=om73Se6&Cg}erVdFTFh~G!x9(HE{~o||EHb4 zbS^*1H)=-z*=CDcPcKf{YqPfe3Oi8qFLq;y-XfR%X;VY&R%P)|t2t9s$8mq<<IgjH zY&}0u+3=50O4*v{?={clN}F`lO<yR`dh)hJptGQ3=brZs0zGa^3#M+qXjE`$4R@GI zNu6_|z*c32EjmkYO`G}nvov#7vBy{LjM>xsyI)P87O-hf<V+2xGC}2gsg>W<FDkFF zKV7;0X=Fo^lgIt9n`cfnKCpPhb>lw<$}2sE|7$wF*e_i3yh%xM@q$GQxep%@=~HEr zW*7HgqH!_lNY~-%8lIa(m{wlmSbADvlBTzrA?HdNqn)3gXa}tD*cj+FB`6^1qDJsK zCskcpTV`cp<DS;3y>pu<ch7DQpPFU&??A#t$#uI0WOlqr`yjyRbU-vbw)kYPfTD<! zV@d~8prVvZ`ymCl8GRO6Ck*AKW!}Ed5bK^QDXDSx<ol&@U*A1@FR1nB?c0ALE9W># z9=sQF|Ft_$>Q9Fg{JUo-u9=yTotHDMsN}23_R_Kk8<ssg@-5*VvsQTHKW2;Smv%gk z-Rt-q>k}V;E0GZ3?_b8K^Y=!LK@|7l!%tEwx)Q=QFFn*$I>2neRq8CsCn6$he~59` z^prW(5ABxBc<txWvFvF7;)L#*FIT@feA{#K<QE|qCOmty;IG=gceMs#$$SUDeBu9T SkiF$YtLM4vEdop?#~A>2{>~Tx literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff deleted file mode 100644 index 0e7da821eee0dd05a0a6f0b16c2c1345dc573a84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10588 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 a%U++2czI-a8Dej6d|+T?VEq4|fgb?%z@O6q diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Script-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b3048fc115681ee6c1bc86b0aa158cfbbf59daa3 GIT binary patch literal 9644 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 LGJK6_yG%3ydA5SF literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff deleted file mode 100644 index 7f292d91184f257054ef77cc1cd3443db757c9cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6496 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c5a8462fbfe2c39a7c1857b9e296e62500a8a8a5 GIT binary patch literal 5468 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 literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff deleted file mode 100644 index d241d9be2d317f7b39b401d96c8b18836acea0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6188 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 T+Zrt2fttUJ42=K(Gw=fdP0}$u diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1bccfe2403a4ed770c1697ae7c15b9e1cd9bc4e GIT binary patch literal 5208 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 MKK&xuDN&RG0M5MhEdT%j literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff deleted file mode 100644 index e6e9b658dcf1cd031ac82b6b8f312444c55d4fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4420 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 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size3-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..249a28662218a7a17ad8bd1fe072169ecb666a49 GIT binary patch literal 3624 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 Chs$~Z literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff deleted file mode 100644 index e1ec5457664f438ce5a1cc6dd8409bf60ca7804b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5980 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 O1_lO32FCyY8TbJo4e0#< diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Size4-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..680c13085076a2f6c5a7e695935ec3f21cddb65f GIT binary patch literal 4928 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 Ok}2{ROFyhw#|8iuTqTeI literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff deleted file mode 100644 index 2432419f28936aff53ddfa2a732d027e6a6648fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16028 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 MU}RwY|DS;$0K_&)oB#j- diff --git a/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 b/plugins/tiddlywiki/katex/files/fonts/KaTeX_Typewriter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..771f1af705f5cef5f578b3a1e7d8eff66f9b76b0 GIT binary patch literal 13568 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 literal 0 HcmV?d00001 diff --git a/plugins/tiddlywiki/katex/files/katex.min.css b/plugins/tiddlywiki/katex/files/katex.min.css index 0d08a4db69..3fffaffb92 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.css +++ b/plugins/tiddlywiki/katex/files/katex.min.css @@ -1 +1 @@ -@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.0"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} +@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.28"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/plugins/tiddlywiki/katex/files/katex.min.js b/plugins/tiddlywiki/katex/files/katex.min.js index a919bd4407..ffdd3a1f35 100644 --- a/plugins/tiddlywiki/katex/files/katex.min.js +++ b/plugins/tiddlywiki/katex/files/katex.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Qn}});var r=function e(t,r){this.position=void 0;var n,a="KaTeX parse error: "+t,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;n=i.start;var s=i.end;n===o.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var l=o.slice(n,s).replace(/[^]/g,"$&\u0332");a+=(n>15?"\u2026"+o.slice(n-15,n):o.slice(0,n))+l+(s+15<o.length?o.slice(s,s+15)+"\u2026":o.slice(s))}var h=new Error(a);return h.name="ParseError",h.__proto__=e.prototype,h.position=n,h};r.prototype.__proto__=Error.prototype;var n=r,a=/([A-Z])/g,i={"&":"&",">":">","<":"<",'"':""","'":"'"},o=/[&><"']/g;var s=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(o,(function(e){return i[e]}))},hyphenate:function(e){return e.replace(a,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){var t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:function(e){return"#"+e}},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:function(e,t){return t.push(e),t}},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:function(e){return Math.max(0,e)},cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:function(e){return Math.max(0,e)},cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:function(e){return Math.max(0,e)},cli:"-e, --max-expand <n>",cliProcessor:function(e){return"Infinity"===e?1/0:parseInt(e)}},globalGroup:{type:"boolean",cli:!1}};function m(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var c=function(){function e(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},h)if(h.hasOwnProperty(t)){var r=h[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:m(r)}}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new n("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=l.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),u=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return p[d[this.id]]},t.sub=function(){return p[f[this.id]]},t.fracNum=function(){return p[g[this.id]]},t.fracDen=function(){return p[v[this.id]]},t.cramp=function(){return p[b[this.id]]},t.text=function(){return p[y[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new u(0,0,!1),new u(1,0,!0),new u(2,1,!1),new u(3,1,!0),new u(4,2,!1),new u(5,2,!0),new u(6,3,!1),new u(7,3,!0)],d=[4,5,4,5,6,7,6,7],f=[5,5,5,5,7,7,7,7],g=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],x={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},w=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var k=[];function S(e){for(var t=0;t<k.length;t+=2)if(e>=k[t]&&e<=k[t+1])return!0;return!1}w.forEach((function(e){return e.blocks.forEach((function(e){return k.push.apply(k,e)}))}));var M=80,z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),T={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},B={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},C={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function q(e,t,r){if(!T[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=T[t][n];if(!a&&e[0]in C&&(n=C[e[0]].charCodeAt(0),a=T[t][n]),a||"text"!==r||S(n)&&(a=T[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var N={};var I=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],R=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],O=function(e,t){return t.size<2?e:I[e-1][t.size-1]},H=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=R[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return new e(r)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:O(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:R[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var r=O(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!N[t=e>=5?0:e>=3?1:2]){var r=N[t]={cssEmPerMu:B.quad[t]/18};for(var n in B)B.hasOwnProperty(n)&&(r[n]=B[n][t])}return N[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();H.BASESIZE=6;var E=H,L={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},D={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in L||e in D||"ex"===e},F=function(e,t){var r;if(e.unit in L)r=L[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},V=function(e){return+e.toFixed(4)+"em"},G=function(e){return e.filter((function(e){return e})).join(" ")},U=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},Y=function(e){var t=document.createElement(e);for(var r in t.className=G(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},X=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+l.escape(G(this.classes))+'"');var r="";for(var n in this.style)this.style.hasOwnProperty(n)&&(r+=l.hyphenate(n)+":"+this.style[n]+";");for(var a in r&&(t+=' style="'+l.escape(r)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+l.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},W=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"span")},t.toMarkup=function(){return X.call(this,"span")},e}(),_=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"a")},t.toMarkup=function(){return X.call(this,"a")},e}(),j=function(){function e(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var r in this.style)this.style.hasOwnProperty(r)&&(t+=l.hyphenate(r)+":"+this.style[r]+";");return t&&(e+=' style="'+l.escape(t)+'"'),e+="'/>"},e}(),$={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},Z=function(){function e(e,t,r,n,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<w.length;t++)for(var r=w[t],n=0;n<r.blocks.length;n++){var a=r.blocks[n];if(e>=a[0]&&e<=a[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=$[this.text])}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=V(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=G(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=l.escape(G(this.classes)),t+='"');var r="";for(var n in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(n)&&(r+=l.hyphenate(n)+":"+this.style[n]+";");r&&(e=!0,t+=' style="'+l.escape(r)+'"');var a=l.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),K=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e='<svg xmlns="http://www.w3.org/2000/svg"';for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</svg>"},e}(),J=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",z[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+z[this.pathName]+"'/>"},e}(),Q=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function ee(e){if(e instanceof Z)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var te={bin:1,close:1,inner:1,open:1,punct:1,rel:1},re={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ne={math:{},text:{}},ae=ne;function ie(e,t,r,n,a,i){ne[e][a]={font:t,group:r,replace:n},i&&n&&(ne[e][n]=ne[e][a])}var oe="math",se="text",le="main",he="ams",me="accent-token",ce="bin",ue="close",pe="inner",de="mathord",fe="op-token",ge="open",ve="punct",be="rel",ye="spacing",xe="textord";ie(oe,le,be,"\u2261","\\equiv",!0),ie(oe,le,be,"\u227a","\\prec",!0),ie(oe,le,be,"\u227b","\\succ",!0),ie(oe,le,be,"\u223c","\\sim",!0),ie(oe,le,be,"\u22a5","\\perp"),ie(oe,le,be,"\u2aaf","\\preceq",!0),ie(oe,le,be,"\u2ab0","\\succeq",!0),ie(oe,le,be,"\u2243","\\simeq",!0),ie(oe,le,be,"\u2223","\\mid",!0),ie(oe,le,be,"\u226a","\\ll",!0),ie(oe,le,be,"\u226b","\\gg",!0),ie(oe,le,be,"\u224d","\\asymp",!0),ie(oe,le,be,"\u2225","\\parallel"),ie(oe,le,be,"\u22c8","\\bowtie",!0),ie(oe,le,be,"\u2323","\\smile",!0),ie(oe,le,be,"\u2291","\\sqsubseteq",!0),ie(oe,le,be,"\u2292","\\sqsupseteq",!0),ie(oe,le,be,"\u2250","\\doteq",!0),ie(oe,le,be,"\u2322","\\frown",!0),ie(oe,le,be,"\u220b","\\ni",!0),ie(oe,le,be,"\u221d","\\propto",!0),ie(oe,le,be,"\u22a2","\\vdash",!0),ie(oe,le,be,"\u22a3","\\dashv",!0),ie(oe,le,be,"\u220b","\\owns"),ie(oe,le,ve,".","\\ldotp"),ie(oe,le,ve,"\u22c5","\\cdotp"),ie(oe,le,xe,"#","\\#"),ie(se,le,xe,"#","\\#"),ie(oe,le,xe,"&","\\&"),ie(se,le,xe,"&","\\&"),ie(oe,le,xe,"\u2135","\\aleph",!0),ie(oe,le,xe,"\u2200","\\forall",!0),ie(oe,le,xe,"\u210f","\\hbar",!0),ie(oe,le,xe,"\u2203","\\exists",!0),ie(oe,le,xe,"\u2207","\\nabla",!0),ie(oe,le,xe,"\u266d","\\flat",!0),ie(oe,le,xe,"\u2113","\\ell",!0),ie(oe,le,xe,"\u266e","\\natural",!0),ie(oe,le,xe,"\u2663","\\clubsuit",!0),ie(oe,le,xe,"\u2118","\\wp",!0),ie(oe,le,xe,"\u266f","\\sharp",!0),ie(oe,le,xe,"\u2662","\\diamondsuit",!0),ie(oe,le,xe,"\u211c","\\Re",!0),ie(oe,le,xe,"\u2661","\\heartsuit",!0),ie(oe,le,xe,"\u2111","\\Im",!0),ie(oe,le,xe,"\u2660","\\spadesuit",!0),ie(oe,le,xe,"\xa7","\\S",!0),ie(se,le,xe,"\xa7","\\S"),ie(oe,le,xe,"\xb6","\\P",!0),ie(se,le,xe,"\xb6","\\P"),ie(oe,le,xe,"\u2020","\\dag"),ie(se,le,xe,"\u2020","\\dag"),ie(se,le,xe,"\u2020","\\textdagger"),ie(oe,le,xe,"\u2021","\\ddag"),ie(se,le,xe,"\u2021","\\ddag"),ie(se,le,xe,"\u2021","\\textdaggerdbl"),ie(oe,le,ue,"\u23b1","\\rmoustache",!0),ie(oe,le,ge,"\u23b0","\\lmoustache",!0),ie(oe,le,ue,"\u27ef","\\rgroup",!0),ie(oe,le,ge,"\u27ee","\\lgroup",!0),ie(oe,le,ce,"\u2213","\\mp",!0),ie(oe,le,ce,"\u2296","\\ominus",!0),ie(oe,le,ce,"\u228e","\\uplus",!0),ie(oe,le,ce,"\u2293","\\sqcap",!0),ie(oe,le,ce,"\u2217","\\ast"),ie(oe,le,ce,"\u2294","\\sqcup",!0),ie(oe,le,ce,"\u25ef","\\bigcirc",!0),ie(oe,le,ce,"\u2219","\\bullet",!0),ie(oe,le,ce,"\u2021","\\ddagger"),ie(oe,le,ce,"\u2240","\\wr",!0),ie(oe,le,ce,"\u2a3f","\\amalg"),ie(oe,le,ce,"&","\\And"),ie(oe,le,be,"\u27f5","\\longleftarrow",!0),ie(oe,le,be,"\u21d0","\\Leftarrow",!0),ie(oe,le,be,"\u27f8","\\Longleftarrow",!0),ie(oe,le,be,"\u27f6","\\longrightarrow",!0),ie(oe,le,be,"\u21d2","\\Rightarrow",!0),ie(oe,le,be,"\u27f9","\\Longrightarrow",!0),ie(oe,le,be,"\u2194","\\leftrightarrow",!0),ie(oe,le,be,"\u27f7","\\longleftrightarrow",!0),ie(oe,le,be,"\u21d4","\\Leftrightarrow",!0),ie(oe,le,be,"\u27fa","\\Longleftrightarrow",!0),ie(oe,le,be,"\u21a6","\\mapsto",!0),ie(oe,le,be,"\u27fc","\\longmapsto",!0),ie(oe,le,be,"\u2197","\\nearrow",!0),ie(oe,le,be,"\u21a9","\\hookleftarrow",!0),ie(oe,le,be,"\u21aa","\\hookrightarrow",!0),ie(oe,le,be,"\u2198","\\searrow",!0),ie(oe,le,be,"\u21bc","\\leftharpoonup",!0),ie(oe,le,be,"\u21c0","\\rightharpoonup",!0),ie(oe,le,be,"\u2199","\\swarrow",!0),ie(oe,le,be,"\u21bd","\\leftharpoondown",!0),ie(oe,le,be,"\u21c1","\\rightharpoondown",!0),ie(oe,le,be,"\u2196","\\nwarrow",!0),ie(oe,le,be,"\u21cc","\\rightleftharpoons",!0),ie(oe,he,be,"\u226e","\\nless",!0),ie(oe,he,be,"\ue010","\\@nleqslant"),ie(oe,he,be,"\ue011","\\@nleqq"),ie(oe,he,be,"\u2a87","\\lneq",!0),ie(oe,he,be,"\u2268","\\lneqq",!0),ie(oe,he,be,"\ue00c","\\@lvertneqq"),ie(oe,he,be,"\u22e6","\\lnsim",!0),ie(oe,he,be,"\u2a89","\\lnapprox",!0),ie(oe,he,be,"\u2280","\\nprec",!0),ie(oe,he,be,"\u22e0","\\npreceq",!0),ie(oe,he,be,"\u22e8","\\precnsim",!0),ie(oe,he,be,"\u2ab9","\\precnapprox",!0),ie(oe,he,be,"\u2241","\\nsim",!0),ie(oe,he,be,"\ue006","\\@nshortmid"),ie(oe,he,be,"\u2224","\\nmid",!0),ie(oe,he,be,"\u22ac","\\nvdash",!0),ie(oe,he,be,"\u22ad","\\nvDash",!0),ie(oe,he,be,"\u22ea","\\ntriangleleft"),ie(oe,he,be,"\u22ec","\\ntrianglelefteq",!0),ie(oe,he,be,"\u228a","\\subsetneq",!0),ie(oe,he,be,"\ue01a","\\@varsubsetneq"),ie(oe,he,be,"\u2acb","\\subsetneqq",!0),ie(oe,he,be,"\ue017","\\@varsubsetneqq"),ie(oe,he,be,"\u226f","\\ngtr",!0),ie(oe,he,be,"\ue00f","\\@ngeqslant"),ie(oe,he,be,"\ue00e","\\@ngeqq"),ie(oe,he,be,"\u2a88","\\gneq",!0),ie(oe,he,be,"\u2269","\\gneqq",!0),ie(oe,he,be,"\ue00d","\\@gvertneqq"),ie(oe,he,be,"\u22e7","\\gnsim",!0),ie(oe,he,be,"\u2a8a","\\gnapprox",!0),ie(oe,he,be,"\u2281","\\nsucc",!0),ie(oe,he,be,"\u22e1","\\nsucceq",!0),ie(oe,he,be,"\u22e9","\\succnsim",!0),ie(oe,he,be,"\u2aba","\\succnapprox",!0),ie(oe,he,be,"\u2246","\\ncong",!0),ie(oe,he,be,"\ue007","\\@nshortparallel"),ie(oe,he,be,"\u2226","\\nparallel",!0),ie(oe,he,be,"\u22af","\\nVDash",!0),ie(oe,he,be,"\u22eb","\\ntriangleright"),ie(oe,he,be,"\u22ed","\\ntrianglerighteq",!0),ie(oe,he,be,"\ue018","\\@nsupseteqq"),ie(oe,he,be,"\u228b","\\supsetneq",!0),ie(oe,he,be,"\ue01b","\\@varsupsetneq"),ie(oe,he,be,"\u2acc","\\supsetneqq",!0),ie(oe,he,be,"\ue019","\\@varsupsetneqq"),ie(oe,he,be,"\u22ae","\\nVdash",!0),ie(oe,he,be,"\u2ab5","\\precneqq",!0),ie(oe,he,be,"\u2ab6","\\succneqq",!0),ie(oe,he,be,"\ue016","\\@nsubseteqq"),ie(oe,he,ce,"\u22b4","\\unlhd"),ie(oe,he,ce,"\u22b5","\\unrhd"),ie(oe,he,be,"\u219a","\\nleftarrow",!0),ie(oe,he,be,"\u219b","\\nrightarrow",!0),ie(oe,he,be,"\u21cd","\\nLeftarrow",!0),ie(oe,he,be,"\u21cf","\\nRightarrow",!0),ie(oe,he,be,"\u21ae","\\nleftrightarrow",!0),ie(oe,he,be,"\u21ce","\\nLeftrightarrow",!0),ie(oe,he,be,"\u25b3","\\vartriangle"),ie(oe,he,xe,"\u210f","\\hslash"),ie(oe,he,xe,"\u25bd","\\triangledown"),ie(oe,he,xe,"\u25ca","\\lozenge"),ie(oe,he,xe,"\u24c8","\\circledS"),ie(oe,he,xe,"\xae","\\circledR"),ie(se,he,xe,"\xae","\\circledR"),ie(oe,he,xe,"\u2221","\\measuredangle",!0),ie(oe,he,xe,"\u2204","\\nexists"),ie(oe,he,xe,"\u2127","\\mho"),ie(oe,he,xe,"\u2132","\\Finv",!0),ie(oe,he,xe,"\u2141","\\Game",!0),ie(oe,he,xe,"\u2035","\\backprime"),ie(oe,he,xe,"\u25b2","\\blacktriangle"),ie(oe,he,xe,"\u25bc","\\blacktriangledown"),ie(oe,he,xe,"\u25a0","\\blacksquare"),ie(oe,he,xe,"\u29eb","\\blacklozenge"),ie(oe,he,xe,"\u2605","\\bigstar"),ie(oe,he,xe,"\u2222","\\sphericalangle",!0),ie(oe,he,xe,"\u2201","\\complement",!0),ie(oe,he,xe,"\xf0","\\eth",!0),ie(se,le,xe,"\xf0","\xf0"),ie(oe,he,xe,"\u2571","\\diagup"),ie(oe,he,xe,"\u2572","\\diagdown"),ie(oe,he,xe,"\u25a1","\\square"),ie(oe,he,xe,"\u25a1","\\Box"),ie(oe,he,xe,"\u25ca","\\Diamond"),ie(oe,he,xe,"\xa5","\\yen",!0),ie(se,he,xe,"\xa5","\\yen",!0),ie(oe,he,xe,"\u2713","\\checkmark",!0),ie(se,he,xe,"\u2713","\\checkmark"),ie(oe,he,xe,"\u2136","\\beth",!0),ie(oe,he,xe,"\u2138","\\daleth",!0),ie(oe,he,xe,"\u2137","\\gimel",!0),ie(oe,he,xe,"\u03dd","\\digamma",!0),ie(oe,he,xe,"\u03f0","\\varkappa"),ie(oe,he,ge,"\u250c","\\@ulcorner",!0),ie(oe,he,ue,"\u2510","\\@urcorner",!0),ie(oe,he,ge,"\u2514","\\@llcorner",!0),ie(oe,he,ue,"\u2518","\\@lrcorner",!0),ie(oe,he,be,"\u2266","\\leqq",!0),ie(oe,he,be,"\u2a7d","\\leqslant",!0),ie(oe,he,be,"\u2a95","\\eqslantless",!0),ie(oe,he,be,"\u2272","\\lesssim",!0),ie(oe,he,be,"\u2a85","\\lessapprox",!0),ie(oe,he,be,"\u224a","\\approxeq",!0),ie(oe,he,ce,"\u22d6","\\lessdot"),ie(oe,he,be,"\u22d8","\\lll",!0),ie(oe,he,be,"\u2276","\\lessgtr",!0),ie(oe,he,be,"\u22da","\\lesseqgtr",!0),ie(oe,he,be,"\u2a8b","\\lesseqqgtr",!0),ie(oe,he,be,"\u2251","\\doteqdot"),ie(oe,he,be,"\u2253","\\risingdotseq",!0),ie(oe,he,be,"\u2252","\\fallingdotseq",!0),ie(oe,he,be,"\u223d","\\backsim",!0),ie(oe,he,be,"\u22cd","\\backsimeq",!0),ie(oe,he,be,"\u2ac5","\\subseteqq",!0),ie(oe,he,be,"\u22d0","\\Subset",!0),ie(oe,he,be,"\u228f","\\sqsubset",!0),ie(oe,he,be,"\u227c","\\preccurlyeq",!0),ie(oe,he,be,"\u22de","\\curlyeqprec",!0),ie(oe,he,be,"\u227e","\\precsim",!0),ie(oe,he,be,"\u2ab7","\\precapprox",!0),ie(oe,he,be,"\u22b2","\\vartriangleleft"),ie(oe,he,be,"\u22b4","\\trianglelefteq"),ie(oe,he,be,"\u22a8","\\vDash",!0),ie(oe,he,be,"\u22aa","\\Vvdash",!0),ie(oe,he,be,"\u2323","\\smallsmile"),ie(oe,he,be,"\u2322","\\smallfrown"),ie(oe,he,be,"\u224f","\\bumpeq",!0),ie(oe,he,be,"\u224e","\\Bumpeq",!0),ie(oe,he,be,"\u2267","\\geqq",!0),ie(oe,he,be,"\u2a7e","\\geqslant",!0),ie(oe,he,be,"\u2a96","\\eqslantgtr",!0),ie(oe,he,be,"\u2273","\\gtrsim",!0),ie(oe,he,be,"\u2a86","\\gtrapprox",!0),ie(oe,he,ce,"\u22d7","\\gtrdot"),ie(oe,he,be,"\u22d9","\\ggg",!0),ie(oe,he,be,"\u2277","\\gtrless",!0),ie(oe,he,be,"\u22db","\\gtreqless",!0),ie(oe,he,be,"\u2a8c","\\gtreqqless",!0),ie(oe,he,be,"\u2256","\\eqcirc",!0),ie(oe,he,be,"\u2257","\\circeq",!0),ie(oe,he,be,"\u225c","\\triangleq",!0),ie(oe,he,be,"\u223c","\\thicksim"),ie(oe,he,be,"\u2248","\\thickapprox"),ie(oe,he,be,"\u2ac6","\\supseteqq",!0),ie(oe,he,be,"\u22d1","\\Supset",!0),ie(oe,he,be,"\u2290","\\sqsupset",!0),ie(oe,he,be,"\u227d","\\succcurlyeq",!0),ie(oe,he,be,"\u22df","\\curlyeqsucc",!0),ie(oe,he,be,"\u227f","\\succsim",!0),ie(oe,he,be,"\u2ab8","\\succapprox",!0),ie(oe,he,be,"\u22b3","\\vartriangleright"),ie(oe,he,be,"\u22b5","\\trianglerighteq"),ie(oe,he,be,"\u22a9","\\Vdash",!0),ie(oe,he,be,"\u2223","\\shortmid"),ie(oe,he,be,"\u2225","\\shortparallel"),ie(oe,he,be,"\u226c","\\between",!0),ie(oe,he,be,"\u22d4","\\pitchfork",!0),ie(oe,he,be,"\u221d","\\varpropto"),ie(oe,he,be,"\u25c0","\\blacktriangleleft"),ie(oe,he,be,"\u2234","\\therefore",!0),ie(oe,he,be,"\u220d","\\backepsilon"),ie(oe,he,be,"\u25b6","\\blacktriangleright"),ie(oe,he,be,"\u2235","\\because",!0),ie(oe,he,be,"\u22d8","\\llless"),ie(oe,he,be,"\u22d9","\\gggtr"),ie(oe,he,ce,"\u22b2","\\lhd"),ie(oe,he,ce,"\u22b3","\\rhd"),ie(oe,he,be,"\u2242","\\eqsim",!0),ie(oe,le,be,"\u22c8","\\Join"),ie(oe,he,be,"\u2251","\\Doteq",!0),ie(oe,he,ce,"\u2214","\\dotplus",!0),ie(oe,he,ce,"\u2216","\\smallsetminus"),ie(oe,he,ce,"\u22d2","\\Cap",!0),ie(oe,he,ce,"\u22d3","\\Cup",!0),ie(oe,he,ce,"\u2a5e","\\doublebarwedge",!0),ie(oe,he,ce,"\u229f","\\boxminus",!0),ie(oe,he,ce,"\u229e","\\boxplus",!0),ie(oe,he,ce,"\u22c7","\\divideontimes",!0),ie(oe,he,ce,"\u22c9","\\ltimes",!0),ie(oe,he,ce,"\u22ca","\\rtimes",!0),ie(oe,he,ce,"\u22cb","\\leftthreetimes",!0),ie(oe,he,ce,"\u22cc","\\rightthreetimes",!0),ie(oe,he,ce,"\u22cf","\\curlywedge",!0),ie(oe,he,ce,"\u22ce","\\curlyvee",!0),ie(oe,he,ce,"\u229d","\\circleddash",!0),ie(oe,he,ce,"\u229b","\\circledast",!0),ie(oe,he,ce,"\u22c5","\\centerdot"),ie(oe,he,ce,"\u22ba","\\intercal",!0),ie(oe,he,ce,"\u22d2","\\doublecap"),ie(oe,he,ce,"\u22d3","\\doublecup"),ie(oe,he,ce,"\u22a0","\\boxtimes",!0),ie(oe,he,be,"\u21e2","\\dashrightarrow",!0),ie(oe,he,be,"\u21e0","\\dashleftarrow",!0),ie(oe,he,be,"\u21c7","\\leftleftarrows",!0),ie(oe,he,be,"\u21c6","\\leftrightarrows",!0),ie(oe,he,be,"\u21da","\\Lleftarrow",!0),ie(oe,he,be,"\u219e","\\twoheadleftarrow",!0),ie(oe,he,be,"\u21a2","\\leftarrowtail",!0),ie(oe,he,be,"\u21ab","\\looparrowleft",!0),ie(oe,he,be,"\u21cb","\\leftrightharpoons",!0),ie(oe,he,be,"\u21b6","\\curvearrowleft",!0),ie(oe,he,be,"\u21ba","\\circlearrowleft",!0),ie(oe,he,be,"\u21b0","\\Lsh",!0),ie(oe,he,be,"\u21c8","\\upuparrows",!0),ie(oe,he,be,"\u21bf","\\upharpoonleft",!0),ie(oe,he,be,"\u21c3","\\downharpoonleft",!0),ie(oe,le,be,"\u22b6","\\origof",!0),ie(oe,le,be,"\u22b7","\\imageof",!0),ie(oe,he,be,"\u22b8","\\multimap",!0),ie(oe,he,be,"\u21ad","\\leftrightsquigarrow",!0),ie(oe,he,be,"\u21c9","\\rightrightarrows",!0),ie(oe,he,be,"\u21c4","\\rightleftarrows",!0),ie(oe,he,be,"\u21a0","\\twoheadrightarrow",!0),ie(oe,he,be,"\u21a3","\\rightarrowtail",!0),ie(oe,he,be,"\u21ac","\\looparrowright",!0),ie(oe,he,be,"\u21b7","\\curvearrowright",!0),ie(oe,he,be,"\u21bb","\\circlearrowright",!0),ie(oe,he,be,"\u21b1","\\Rsh",!0),ie(oe,he,be,"\u21ca","\\downdownarrows",!0),ie(oe,he,be,"\u21be","\\upharpoonright",!0),ie(oe,he,be,"\u21c2","\\downharpoonright",!0),ie(oe,he,be,"\u21dd","\\rightsquigarrow",!0),ie(oe,he,be,"\u21dd","\\leadsto"),ie(oe,he,be,"\u21db","\\Rrightarrow",!0),ie(oe,he,be,"\u21be","\\restriction"),ie(oe,le,xe,"\u2018","`"),ie(oe,le,xe,"$","\\$"),ie(se,le,xe,"$","\\$"),ie(se,le,xe,"$","\\textdollar"),ie(oe,le,xe,"%","\\%"),ie(se,le,xe,"%","\\%"),ie(oe,le,xe,"_","\\_"),ie(se,le,xe,"_","\\_"),ie(se,le,xe,"_","\\textunderscore"),ie(oe,le,xe,"\u2220","\\angle",!0),ie(oe,le,xe,"\u221e","\\infty",!0),ie(oe,le,xe,"\u2032","\\prime"),ie(oe,le,xe,"\u25b3","\\triangle"),ie(oe,le,xe,"\u0393","\\Gamma",!0),ie(oe,le,xe,"\u0394","\\Delta",!0),ie(oe,le,xe,"\u0398","\\Theta",!0),ie(oe,le,xe,"\u039b","\\Lambda",!0),ie(oe,le,xe,"\u039e","\\Xi",!0),ie(oe,le,xe,"\u03a0","\\Pi",!0),ie(oe,le,xe,"\u03a3","\\Sigma",!0),ie(oe,le,xe,"\u03a5","\\Upsilon",!0),ie(oe,le,xe,"\u03a6","\\Phi",!0),ie(oe,le,xe,"\u03a8","\\Psi",!0),ie(oe,le,xe,"\u03a9","\\Omega",!0),ie(oe,le,xe,"A","\u0391"),ie(oe,le,xe,"B","\u0392"),ie(oe,le,xe,"E","\u0395"),ie(oe,le,xe,"Z","\u0396"),ie(oe,le,xe,"H","\u0397"),ie(oe,le,xe,"I","\u0399"),ie(oe,le,xe,"K","\u039a"),ie(oe,le,xe,"M","\u039c"),ie(oe,le,xe,"N","\u039d"),ie(oe,le,xe,"O","\u039f"),ie(oe,le,xe,"P","\u03a1"),ie(oe,le,xe,"T","\u03a4"),ie(oe,le,xe,"X","\u03a7"),ie(oe,le,xe,"\xac","\\neg",!0),ie(oe,le,xe,"\xac","\\lnot"),ie(oe,le,xe,"\u22a4","\\top"),ie(oe,le,xe,"\u22a5","\\bot"),ie(oe,le,xe,"\u2205","\\emptyset"),ie(oe,he,xe,"\u2205","\\varnothing"),ie(oe,le,de,"\u03b1","\\alpha",!0),ie(oe,le,de,"\u03b2","\\beta",!0),ie(oe,le,de,"\u03b3","\\gamma",!0),ie(oe,le,de,"\u03b4","\\delta",!0),ie(oe,le,de,"\u03f5","\\epsilon",!0),ie(oe,le,de,"\u03b6","\\zeta",!0),ie(oe,le,de,"\u03b7","\\eta",!0),ie(oe,le,de,"\u03b8","\\theta",!0),ie(oe,le,de,"\u03b9","\\iota",!0),ie(oe,le,de,"\u03ba","\\kappa",!0),ie(oe,le,de,"\u03bb","\\lambda",!0),ie(oe,le,de,"\u03bc","\\mu",!0),ie(oe,le,de,"\u03bd","\\nu",!0),ie(oe,le,de,"\u03be","\\xi",!0),ie(oe,le,de,"\u03bf","\\omicron",!0),ie(oe,le,de,"\u03c0","\\pi",!0),ie(oe,le,de,"\u03c1","\\rho",!0),ie(oe,le,de,"\u03c3","\\sigma",!0),ie(oe,le,de,"\u03c4","\\tau",!0),ie(oe,le,de,"\u03c5","\\upsilon",!0),ie(oe,le,de,"\u03d5","\\phi",!0),ie(oe,le,de,"\u03c7","\\chi",!0),ie(oe,le,de,"\u03c8","\\psi",!0),ie(oe,le,de,"\u03c9","\\omega",!0),ie(oe,le,de,"\u03b5","\\varepsilon",!0),ie(oe,le,de,"\u03d1","\\vartheta",!0),ie(oe,le,de,"\u03d6","\\varpi",!0),ie(oe,le,de,"\u03f1","\\varrho",!0),ie(oe,le,de,"\u03c2","\\varsigma",!0),ie(oe,le,de,"\u03c6","\\varphi",!0),ie(oe,le,ce,"\u2217","*",!0),ie(oe,le,ce,"+","+"),ie(oe,le,ce,"\u2212","-",!0),ie(oe,le,ce,"\u22c5","\\cdot",!0),ie(oe,le,ce,"\u2218","\\circ",!0),ie(oe,le,ce,"\xf7","\\div",!0),ie(oe,le,ce,"\xb1","\\pm",!0),ie(oe,le,ce,"\xd7","\\times",!0),ie(oe,le,ce,"\u2229","\\cap",!0),ie(oe,le,ce,"\u222a","\\cup",!0),ie(oe,le,ce,"\u2216","\\setminus",!0),ie(oe,le,ce,"\u2227","\\land"),ie(oe,le,ce,"\u2228","\\lor"),ie(oe,le,ce,"\u2227","\\wedge",!0),ie(oe,le,ce,"\u2228","\\vee",!0),ie(oe,le,xe,"\u221a","\\surd"),ie(oe,le,ge,"\u27e8","\\langle",!0),ie(oe,le,ge,"\u2223","\\lvert"),ie(oe,le,ge,"\u2225","\\lVert"),ie(oe,le,ue,"?","?"),ie(oe,le,ue,"!","!"),ie(oe,le,ue,"\u27e9","\\rangle",!0),ie(oe,le,ue,"\u2223","\\rvert"),ie(oe,le,ue,"\u2225","\\rVert"),ie(oe,le,be,"=","="),ie(oe,le,be,":",":"),ie(oe,le,be,"\u2248","\\approx",!0),ie(oe,le,be,"\u2245","\\cong",!0),ie(oe,le,be,"\u2265","\\ge"),ie(oe,le,be,"\u2265","\\geq",!0),ie(oe,le,be,"\u2190","\\gets"),ie(oe,le,be,">","\\gt",!0),ie(oe,le,be,"\u2208","\\in",!0),ie(oe,le,be,"\ue020","\\@not"),ie(oe,le,be,"\u2282","\\subset",!0),ie(oe,le,be,"\u2283","\\supset",!0),ie(oe,le,be,"\u2286","\\subseteq",!0),ie(oe,le,be,"\u2287","\\supseteq",!0),ie(oe,he,be,"\u2288","\\nsubseteq",!0),ie(oe,he,be,"\u2289","\\nsupseteq",!0),ie(oe,le,be,"\u22a8","\\models"),ie(oe,le,be,"\u2190","\\leftarrow",!0),ie(oe,le,be,"\u2264","\\le"),ie(oe,le,be,"\u2264","\\leq",!0),ie(oe,le,be,"<","\\lt",!0),ie(oe,le,be,"\u2192","\\rightarrow",!0),ie(oe,le,be,"\u2192","\\to"),ie(oe,he,be,"\u2271","\\ngeq",!0),ie(oe,he,be,"\u2270","\\nleq",!0),ie(oe,le,ye,"\xa0","\\ "),ie(oe,le,ye,"\xa0","\\space"),ie(oe,le,ye,"\xa0","\\nobreakspace"),ie(se,le,ye,"\xa0","\\ "),ie(se,le,ye,"\xa0"," "),ie(se,le,ye,"\xa0","\\space"),ie(se,le,ye,"\xa0","\\nobreakspace"),ie(oe,le,ye,null,"\\nobreak"),ie(oe,le,ye,null,"\\allowbreak"),ie(oe,le,ve,",",","),ie(oe,le,ve,";",";"),ie(oe,he,ce,"\u22bc","\\barwedge",!0),ie(oe,he,ce,"\u22bb","\\veebar",!0),ie(oe,le,ce,"\u2299","\\odot",!0),ie(oe,le,ce,"\u2295","\\oplus",!0),ie(oe,le,ce,"\u2297","\\otimes",!0),ie(oe,le,xe,"\u2202","\\partial",!0),ie(oe,le,ce,"\u2298","\\oslash",!0),ie(oe,he,ce,"\u229a","\\circledcirc",!0),ie(oe,he,ce,"\u22a1","\\boxdot",!0),ie(oe,le,ce,"\u25b3","\\bigtriangleup"),ie(oe,le,ce,"\u25bd","\\bigtriangledown"),ie(oe,le,ce,"\u2020","\\dagger"),ie(oe,le,ce,"\u22c4","\\diamond"),ie(oe,le,ce,"\u22c6","\\star"),ie(oe,le,ce,"\u25c3","\\triangleleft"),ie(oe,le,ce,"\u25b9","\\triangleright"),ie(oe,le,ge,"{","\\{"),ie(se,le,xe,"{","\\{"),ie(se,le,xe,"{","\\textbraceleft"),ie(oe,le,ue,"}","\\}"),ie(se,le,xe,"}","\\}"),ie(se,le,xe,"}","\\textbraceright"),ie(oe,le,ge,"{","\\lbrace"),ie(oe,le,ue,"}","\\rbrace"),ie(oe,le,ge,"[","\\lbrack",!0),ie(se,le,xe,"[","\\lbrack",!0),ie(oe,le,ue,"]","\\rbrack",!0),ie(se,le,xe,"]","\\rbrack",!0),ie(oe,le,ge,"(","\\lparen",!0),ie(oe,le,ue,")","\\rparen",!0),ie(se,le,xe,"<","\\textless",!0),ie(se,le,xe,">","\\textgreater",!0),ie(oe,le,ge,"\u230a","\\lfloor",!0),ie(oe,le,ue,"\u230b","\\rfloor",!0),ie(oe,le,ge,"\u2308","\\lceil",!0),ie(oe,le,ue,"\u2309","\\rceil",!0),ie(oe,le,xe,"\\","\\backslash"),ie(oe,le,xe,"\u2223","|"),ie(oe,le,xe,"\u2223","\\vert"),ie(se,le,xe,"|","\\textbar",!0),ie(oe,le,xe,"\u2225","\\|"),ie(oe,le,xe,"\u2225","\\Vert"),ie(se,le,xe,"\u2225","\\textbardbl"),ie(se,le,xe,"~","\\textasciitilde"),ie(se,le,xe,"\\","\\textbackslash"),ie(se,le,xe,"^","\\textasciicircum"),ie(oe,le,be,"\u2191","\\uparrow",!0),ie(oe,le,be,"\u21d1","\\Uparrow",!0),ie(oe,le,be,"\u2193","\\downarrow",!0),ie(oe,le,be,"\u21d3","\\Downarrow",!0),ie(oe,le,be,"\u2195","\\updownarrow",!0),ie(oe,le,be,"\u21d5","\\Updownarrow",!0),ie(oe,le,fe,"\u2210","\\coprod"),ie(oe,le,fe,"\u22c1","\\bigvee"),ie(oe,le,fe,"\u22c0","\\bigwedge"),ie(oe,le,fe,"\u2a04","\\biguplus"),ie(oe,le,fe,"\u22c2","\\bigcap"),ie(oe,le,fe,"\u22c3","\\bigcup"),ie(oe,le,fe,"\u222b","\\int"),ie(oe,le,fe,"\u222b","\\intop"),ie(oe,le,fe,"\u222c","\\iint"),ie(oe,le,fe,"\u222d","\\iiint"),ie(oe,le,fe,"\u220f","\\prod"),ie(oe,le,fe,"\u2211","\\sum"),ie(oe,le,fe,"\u2a02","\\bigotimes"),ie(oe,le,fe,"\u2a01","\\bigoplus"),ie(oe,le,fe,"\u2a00","\\bigodot"),ie(oe,le,fe,"\u222e","\\oint"),ie(oe,le,fe,"\u222f","\\oiint"),ie(oe,le,fe,"\u2230","\\oiiint"),ie(oe,le,fe,"\u2a06","\\bigsqcup"),ie(oe,le,fe,"\u222b","\\smallint"),ie(se,le,pe,"\u2026","\\textellipsis"),ie(oe,le,pe,"\u2026","\\mathellipsis"),ie(se,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u22ef","\\@cdots",!0),ie(oe,le,pe,"\u22f1","\\ddots",!0),ie(oe,le,xe,"\u22ee","\\varvdots"),ie(oe,le,me,"\u02ca","\\acute"),ie(oe,le,me,"\u02cb","\\grave"),ie(oe,le,me,"\xa8","\\ddot"),ie(oe,le,me,"~","\\tilde"),ie(oe,le,me,"\u02c9","\\bar"),ie(oe,le,me,"\u02d8","\\breve"),ie(oe,le,me,"\u02c7","\\check"),ie(oe,le,me,"^","\\hat"),ie(oe,le,me,"\u20d7","\\vec"),ie(oe,le,me,"\u02d9","\\dot"),ie(oe,le,me,"\u02da","\\mathring"),ie(oe,le,de,"\ue131","\\@imath"),ie(oe,le,de,"\ue237","\\@jmath"),ie(oe,le,xe,"\u0131","\u0131"),ie(oe,le,xe,"\u0237","\u0237"),ie(se,le,xe,"\u0131","\\i",!0),ie(se,le,xe,"\u0237","\\j",!0),ie(se,le,xe,"\xdf","\\ss",!0),ie(se,le,xe,"\xe6","\\ae",!0),ie(se,le,xe,"\u0153","\\oe",!0),ie(se,le,xe,"\xf8","\\o",!0),ie(se,le,xe,"\xc6","\\AE",!0),ie(se,le,xe,"\u0152","\\OE",!0),ie(se,le,xe,"\xd8","\\O",!0),ie(se,le,me,"\u02ca","\\'"),ie(se,le,me,"\u02cb","\\`"),ie(se,le,me,"\u02c6","\\^"),ie(se,le,me,"\u02dc","\\~"),ie(se,le,me,"\u02c9","\\="),ie(se,le,me,"\u02d8","\\u"),ie(se,le,me,"\u02d9","\\."),ie(se,le,me,"\xb8","\\c"),ie(se,le,me,"\u02da","\\r"),ie(se,le,me,"\u02c7","\\v"),ie(se,le,me,"\xa8",'\\"'),ie(se,le,me,"\u02dd","\\H"),ie(se,le,me,"\u25ef","\\textcircled");var we={"--":!0,"---":!0,"``":!0,"''":!0};ie(se,le,xe,"\u2013","--",!0),ie(se,le,xe,"\u2013","\\textendash"),ie(se,le,xe,"\u2014","---",!0),ie(se,le,xe,"\u2014","\\textemdash"),ie(se,le,xe,"\u2018","`",!0),ie(se,le,xe,"\u2018","\\textquoteleft"),ie(se,le,xe,"\u2019","'",!0),ie(se,le,xe,"\u2019","\\textquoteright"),ie(se,le,xe,"\u201c","``",!0),ie(se,le,xe,"\u201c","\\textquotedblleft"),ie(se,le,xe,"\u201d","''",!0),ie(se,le,xe,"\u201d","\\textquotedblright"),ie(oe,le,xe,"\xb0","\\degree",!0),ie(se,le,xe,"\xb0","\\degree"),ie(se,le,xe,"\xb0","\\textdegree",!0),ie(oe,le,xe,"\xa3","\\pounds"),ie(oe,le,xe,"\xa3","\\mathsterling",!0),ie(se,le,xe,"\xa3","\\pounds"),ie(se,le,xe,"\xa3","\\textsterling",!0),ie(oe,he,xe,"\u2720","\\maltese"),ie(se,he,xe,"\u2720","\\maltese");for(var ke='0123456789/@."',Se=0;Se<ke.length;Se++){var Me=ke.charAt(Se);ie(oe,le,xe,Me,Me)}for(var ze='0123456789!@*()-=+";:?/.,',Ae=0;Ae<ze.length;Ae++){var Te=ze.charAt(Ae);ie(se,le,xe,Te,Te)}for(var Be="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ce=0;Ce<Be.length;Ce++){var qe=Be.charAt(Ce);ie(oe,le,de,qe,qe),ie(se,le,xe,qe,qe)}ie(oe,he,xe,"C","\u2102"),ie(se,he,xe,"C","\u2102"),ie(oe,he,xe,"H","\u210d"),ie(se,he,xe,"H","\u210d"),ie(oe,he,xe,"N","\u2115"),ie(se,he,xe,"N","\u2115"),ie(oe,he,xe,"P","\u2119"),ie(se,he,xe,"P","\u2119"),ie(oe,he,xe,"Q","\u211a"),ie(se,he,xe,"Q","\u211a"),ie(oe,he,xe,"R","\u211d"),ie(se,he,xe,"R","\u211d"),ie(oe,he,xe,"Z","\u2124"),ie(se,he,xe,"Z","\u2124"),ie(oe,le,de,"h","\u210e"),ie(se,le,de,"h","\u210e");for(var Ne="",Ie=0;Ie<Be.length;Ie++){var Re=Be.charAt(Ie);ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56320+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56372+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56424+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56580+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56736+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56788+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56840+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56944+Ie)),ie(se,le,xe,Re,Ne),Ie<26&&(ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56632+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56476+Ie)),ie(se,le,xe,Re,Ne))}ie(oe,le,de,"k",Ne=String.fromCharCode(55349,56668)),ie(se,le,xe,"k",Ne);for(var Oe=0;Oe<10;Oe++){var He=Oe.toString();ie(oe,le,de,He,Ne=String.fromCharCode(55349,57294+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57314+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57324+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57334+Oe)),ie(se,le,xe,He,Ne)}for(var Ee="\xd0\xde\xfe",Le=0;Le<Ee.length;Le++){var De=Ee.charAt(Le);ie(oe,le,de,De,De),ie(se,le,xe,De,De)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ve=function(e,t,r){return ae[r][e]&&ae[r][e].replace&&(e=ae[r][e].replace),{value:e,metrics:q(e,t,r)}},Ge=function(e,t,r,n,a){var i,o=Ve(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||n&&"mathit"===n.font)&&(l=0),i=new Z(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new Z(e,0,0,0,0,0,a);if(n){i.maxFontSize=n.sizeMultiplier,n.style.isTight()&&i.classes.push("mtight");var h=n.getColor();h&&(i.style.color=h)}return i},Ue=function(e,t){if(G(e.classes)!==G(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var a in t.style)if(t.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;return!0},Ye=function(e){for(var t=0,r=0,n=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>n&&(n=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Xe=function(e,t,r,n){var a=new W(e,t,r,n);return Ye(a),a},We=function(e,t,r,n){return new W(e,t,r,n)},_e=function(e){var t=new A(e);return Ye(t),t},je=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},$e={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ze={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ke={fontMap:$e,makeSymbol:Ge,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Ve(e,"Main-Bold",t).metrics?Ge(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===ae[t][e].font?Ge(e,"Main-Regular",t,r,n):Ge(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Xe,makeSvgSpan:We,makeLineSpan:function(e,t,r){var n=Xe([e],[],t);return n.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=V(n.height),n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var a=new _(e,t,r,n);return Ye(a),a},makeFragment:_e,wrapFragment:function(e,t){return e instanceof A?Xe([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,a=n,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,r.push({type:"kern",size:s}),r.push(t[i])}return{children:r,depth:n}}var l;if("top"===e.positionType){for(var h=e.positionData,m=0;m<e.children.length;m++){var c=e.children[m];h-="kern"===c.type?c.size:c.elem.height+c.elem.depth}l=h}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),n=r.children,a=r.depth,i=0,o=0;o<n.length;o++){var s=n[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var h=Xe(["pstrut"],[]);h.style.height=V(i);for(var m=[],c=a,u=a,p=a,d=0;d<n.length;d++){var f=n[d];if("kern"===f.type)p+=f.size;else{var g=f.elem,v=f.wrapperClasses||[],b=f.wrapperStyle||{},y=Xe(v,[h,g],void 0,b);y.style.top=V(-i-p-g.depth),f.marginLeft&&(y.style.marginLeft=f.marginLeft),f.marginRight&&(y.style.marginRight=f.marginRight),m.push(y),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var x,w=Xe(["vlist"],m);if(w.style.height=V(u),c<0){var k=Xe([],[]),S=Xe(["vlist"],[k]);S.style.height=V(-c);var M=Xe(["vlist-s"],[new Z("\u200b")]);x=[Xe(["vlist-r"],[w,M]),Xe(["vlist-r"],[S])]}else x=[Xe(["vlist-r"],[w])];var z=Xe(["vlist-t"],x);return 2===x.length&&z.classes.push("vlist-t2"),z.height=u,z.depth=-c,z},makeOrd:function(e,t,r){var a=e.mode,i=e.text,o=["mord"],s="math"===a||"text"===a&&t.font,l=s?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var h=function(e,t){var r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,a="math"===t?0:1;if(119808<=r&&r<120484){var i=Math.floor((r-119808)/26);return[Pe[i][2],Pe[i][a]]}if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[Fe[o][2],Fe[o][a]]}if(120485===r||120486===r)return[Pe[0][2],Pe[0][a]];if(120486<r&&r<120782)return["",""];throw new n("Unsupported character: "+e)}(i,a),m=h[0],c=h[1];return Ge(i,m,a,t,o.concat(c))}if(l){var u,p;if("boldsymbol"===l){var d=function(e,t,r,n,a){return"textord"!==a&&Ve(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a,0,0,r);u=d.fontName,p=[d.fontClass]}else s?(u=$e[l].fontName,p=[l]):(u=je(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ve(i,u,a).metrics)return Ge(i,u,a,t,o.concat(p));if(we.hasOwnProperty(i)&&"Typewriter"===u.substr(0,10)){for(var f=[],g=0;g<i.length;g++)f.push(Ge(i[g],u,a,t,o.concat(p)));return _e(f)}}if("mathord"===r)return Ge(i,"Math-Italic",a,t,o.concat(["mathnormal"]));if("textord"===r){var v=ae[a][i]&&ae[a][i].font;if("ams"===v){var b=je("amsrm",t.fontWeight,t.fontShape);return Ge(i,b,a,t,o.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==v&&v){var y=je(v,t.fontWeight,t.fontShape);return Ge(i,y,a,t,o.concat(y,t.fontWeight,t.fontShape))}var x=je("textrm",t.fontWeight,t.fontShape);return Ge(i,x,a,t,o.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:function(e,t){var r=Xe(["mspace"],[],t),n=F(e,t);return r.style.marginRight=V(n),r},staticSvg:function(e,t){var r=Ze[e],n=r[0],a=r[1],i=r[2],o=new J(n),s=new K([o],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=We(["overlay"],[s],t);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},svgData:Ze,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var r=e[t],n=e[t+1];r instanceof Z&&n instanceof Z&&Ue(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,e.splice(t+1,1),t--)}return e}},Je={number:3,unit:"mu"},Qe={number:4,unit:"mu"},et={number:5,unit:"mu"},tt={mord:{mop:Je,mbin:Qe,mrel:et,minner:Je},mop:{mord:Je,mop:Je,mrel:et,minner:Je},mbin:{mord:Qe,mop:Qe,mopen:Qe,minner:Qe},mrel:{mord:et,mop:et,mopen:et,minner:et},mopen:{},mclose:{mop:Je,mbin:Qe,mrel:et,minner:Je},mpunct:{mord:Je,mop:Je,mrel:et,mopen:Je,mclose:Je,mpunct:Je,minner:Je},minner:{mord:Je,mop:Je,mbin:Qe,mrel:et,mopen:Je,mpunct:Je,minner:Je}},rt={mord:{mop:Je},mop:{mord:Je,mop:Je},mbin:{},mrel:{},mopen:{},mclose:{mop:Je},mpunct:{},minner:{mop:Je}},nt={},at={},it={};function ot(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:void 0===n.allowedInMath||n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l<r.length;++l)nt[r[l]]=s;t&&(i&&(at[t]=i),o&&(it[t]=o))}function st(e){ot({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var lt=function(e){return"ordgroup"===e.type&&1===e.body.length?e.body[0]:e},ht=function(e){return"ordgroup"===e.type?e.body:[e]},mt=Ke.makeSpan,ct=["leftmost","mbin","mopen","mrel","mop","mpunct"],ut=["rightmost","mrel","mclose","mpunct"],pt={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT},dt={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ft=function(e,t,r,n){void 0===n&&(n=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=wt(e[i],t);if(o instanceof A){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(Ke.tryCombineChars(a),!r)return a;var h=t;if(1===e.length){var m=e[0];"sizing"===m.type?h=t.havingSize(m.size):"styling"===m.type&&(h=t.havingStyle(pt[m.style]))}var c=mt([n[0]||"leftmost"],[],t),u=mt([n[1]||"rightmost"],[],t),p="root"===r;return gt(a,(function(e,t){var r=t.classes[0],n=e.classes[0];"mbin"===r&&l.contains(ut,n)?t.classes[0]="mord":"mbin"===n&&l.contains(ct,r)&&(e.classes[0]="mord")}),{node:c},u,p),gt(a,(function(e,t){var r=yt(t),n=yt(e),a=r&&n?e.hasClass("mtight")?rt[r][n]:tt[r][n]:null;if(a)return Ke.makeGlue(a,h)}),{node:c},u,p),a},gt=function e(t,r,n,a,i){a&&t.push(a);for(var o=0;o<t.length;o++){var s=t[o],l=vt(s);if(l)e(l.children,r,n,null,i);else{var h=!s.hasClass("mspace");if(h){var m=r(s,n.node);m&&(n.insertAfter?n.insertAfter(m):(t.unshift(m),o++))}h?n.node=s:i&&s.hasClass("newline")&&(n.node=mt(["leftmost"])),n.insertAfter=function(e){return function(r){t.splice(e+1,0,r),o++}}(o)}}a&&t.pop()},vt=function(e){return e instanceof A||e instanceof _||e instanceof W&&e.hasClass("enclosing")?e:null},bt=function e(t,r){var n=vt(t);if(n){var a=n.children;if(a.length){if("right"===r)return e(a[a.length-1],"right");if("left"===r)return e(a[0],"left")}}return t},yt=function(e,t){return e?(t&&(e=bt(e,t)),dt[e.classes[0]]||null):null},xt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return mt(t.concat(r))},wt=function(e,t,r){if(!e)return mt();if(at[e.type]){var a=at[e.type](e,t);if(r&&t.size!==r.size){a=mt(t.sizingClasses(r),[a],t);var i=t.sizeMultiplier/r.sizeMultiplier;a.height*=i,a.depth*=i}return a}throw new n("Got group of unknown type: '"+e.type+"'")};function kt(e,t){var r=mt(["base"],e,t),n=mt(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function St(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var n,a=ft(e,t,"root");2===a.length&&a[1].hasClass("tag")&&(n=a.pop());for(var i,o=[],s=[],l=0;l<a.length;l++)if(s.push(a[l]),a[l].hasClass("mbin")||a[l].hasClass("mrel")||a[l].hasClass("allowbreak")){for(var h=!1;l<a.length-1&&a[l+1].hasClass("mspace")&&!a[l+1].hasClass("newline");)l++,s.push(a[l]),a[l].hasClass("nobreak")&&(h=!0);h||(o.push(kt(s,t)),s=[])}else a[l].hasClass("newline")&&(s.pop(),s.length>0&&(o.push(kt(s,t)),s=[]),o.push(a[l]));s.length>0&&o.push(kt(s,t)),r?((i=kt(ft(r,t,!0))).classes=["tag"],o.push(i)):n&&o.push(n);var m=mt(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=V(m.height+m.depth),m.depth&&(c.style.verticalAlign=V(-m.depth))}return m}function Mt(e){return new A(e)}var zt=function(){function e(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=G(this.classes));for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=l.escape(this.attributes[t]),e+='"');this.classes.length>0&&(e+=' class ="'+l.escape(G(this.classes))+'"'),e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map((function(e){return e.toText()})).join("")},e}(),At=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return l.escape(this.toText())},t.toText=function(){return this.text},e}(),Tt={MathNode:zt,TextNode:At,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",V(this.width)),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+V(this.width)+'"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:Mt},Bt=function(e,t,r){return!ae[t][e]||!ae[t][e].replace||55349===e.charCodeAt(0)||we.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(e=ae[t][e].replace),new Tt.TextNode(e)},Ct=function(e){return 1===e.length?e[0]:new Tt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var a=e.text;return l.contains(["\\imath","\\jmath"],a)?null:(ae[n][a]&&ae[n][a].replace&&(a=ae[n][a].replace),q(a,Ke.fontMap[r].fontName,n)?Ke.fontMap[r].variant:null)},Nt=function(e,t,r){if(1===e.length){var n=Rt(e[0],t);return r&&n instanceof zt&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var a,i=[],o=0;o<e.length;o++){var s=Rt(e[o],t);if(s instanceof zt&&a instanceof zt){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var h;(h=a.children).push.apply(h,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var m=s.children[0];if(m instanceof At&&"."===m.text){var c;(c=a.children).push.apply(c,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof At&&"\u0338"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var p=s.children[0];p instanceof At&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),a=s}return i},It=function(e,t,r){return Ct(Nt(e,t,r))},Rt=function(e,t){if(!e)return new Tt.MathNode("mrow");if(it[e.type])return it[e.type](e,t);throw new n("Got group of unknown type: '"+e.type+"'")};function Ot(e,t,r,n,a){var i,o=Nt(e,r);i=1===o.length&&o[0]instanceof zt&&l.contains(["mrow","mtable"],o[0].type)?o[0]:new Tt.MathNode("mrow",o);var s=new Tt.MathNode("annotation",[new Tt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var h=new Tt.MathNode("semantics",[i,s]),m=new Tt.MathNode("math",[h]);m.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&m.setAttribute("display","block");var c=a?"katex":"katex-mathml";return Ke.makeSpan([c],[m])}var Ht=function(e){return new E({style:e.displayMode?x.DISPLAY:x.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Et=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Ke.makeSpan(r,[e])}return e},Lt=function(e,t,r){var n,a=Ht(r);if("mathml"===r.output)return Ot(e,t,a,r.displayMode,!0);if("html"===r.output){var i=St(e,a);n=Ke.makeSpan(["katex"],[i])}else{var o=Ot(e,t,a,r.displayMode,!1),s=St(e,a);n=Ke.makeSpan(["katex"],[o,s])}return Et(n,r)},Dt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,n,a){var i,o=e.height+e.depth+r+n;if(/fbox|color|angl/.test(t)){if(i=Ke.makeSpan(["stretchy",t],[],a),"fbox"===t){var s=a.color&&a.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new K(l,{width:"100%",height:V(o)});i=Ke.makeSvgSpan([],[h],a)}return i.height=o,i.style.height=V(o),i},Vt=function(e){var t=new Tt.MathNode("mo",[new Tt.TextNode(Dt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Gt=function(e,t){var r=function(){var r=4e5,n=e.label.substr(1);if(l.contains(["widehat","widecheck","widetilde","utilde"],n)){var a,i,o,s="ordgroup"===(d=e.base).type?d.body.length:1;if(s>5)"widehat"===n||"widecheck"===n?(a=420,r=2364,o=.42,i=n+"4"):(a=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===n||"widecheck"===n?(r=[0,1062,2364,2364,2364][h],a=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=n+h):(r=[0,600,1033,2339,2340][h],a=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var m=new J(i),c=new K([m],{width:"100%",height:V(o),viewBox:"0 0 "+r+" "+a,preserveAspectRatio:"none"});return{span:Ke.makeSvgSpan([],[c],t),minWidth:0,height:o}}var u,p,d,f=[],g=Pt[n],v=g[0],b=g[1],y=g[2],x=y/1e3,w=v.length;if(1===w)u=["hide-tail"],p=[g[3]];else if(2===w)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==w)throw new Error("Correct katexImagesData or update code here to support\n "+w+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var k=0;k<w;k++){var S=new J(v[k]),M=new K([S],{width:"400em",height:V(x),viewBox:"0 0 "+r+" "+y,preserveAspectRatio:p[k]+" slice"}),z=Ke.makeSvgSpan([u[k]],[M],t);if(1===w)return{span:z,minWidth:b,height:x};z.style.height=V(x),f.push(z)}return{span:Ke.makeSpan(["stretchy"],f,t),minWidth:b,height:x}}(),n=r.span,a=r.minWidth,i=r.height;return n.height=i,n.style.height=V(i),a>0&&(n.style.minWidth=V(a)),n};function Ut(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Yt(e){var t=Xt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Xt(e){return e&&("atom"===e.type||re.hasOwnProperty(e.type))?e:null}var Wt=function(e,t){var r,n,a;e&&"supsub"===e.type?(r=(n=Ut(e.base,"accent")).base,e.base=r,a=function(e){if(e instanceof W)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(wt(e,t)),e.base=n):r=(n=Ut(e,"accent")).base;var i=wt(r,t.havingCrampedStyle()),o=0;if(n.isShifty&&l.isCharacterBox(r)){var s=l.getBaseElem(r);o=ee(wt(s,t.havingCrampedStyle())).skew}var h,m="\\c"===n.label,c=m?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Gt(n,t),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+V(2*o)+")",marginLeft:V(2*o)}:void 0}]},t);else{var u,p;"\\vec"===n.label?(u=Ke.staticSvg("vec",t),p=Ke.svgData.vec[1]):((u=ee(u=Ke.makeOrd({mode:n.mode,text:n.label},t,"textord"))).italic=0,p=u.width,m&&(c+=u.depth)),h=Ke.makeSpan(["accent-body"],[u]);var d="\\textcircled"===n.label;d&&(h.classes.push("accent-full"),c=i.height);var f=o;d||(f-=p/2),h.style.left=V(f),"\\textcircled"===n.label&&(h.style.top=".2em"),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:h}]},t)}var g=Ke.makeSpan(["mord","accent"],[h],t);return a?(a.children[0]=g,a.height=Math.max(g.height,a.height),a.classes[0]="mord",a):g},_t=function(e,t){var r=e.isStretchy?Vt(e.label):new Tt.MathNode("mo",[Bt(e.label,e.mode)]),n=new Tt.MathNode("mover",[Rt(e.base,t),r]);return n.setAttribute("accent","true"),n},jt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((function(e){return"\\"+e})).join("|"));ot({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var r=lt(t[0]),n=!jt.test(e.funcName),a=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:function(e,t){var r=t[0],n=e.parser.mode;return"math"===n&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:function(e,t){var r=wt(e.base,t),n=Gt(e,t),a="\\utilde"===e.label?.12:0,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var r=Vt(e.label),n=new Tt.MathNode("munder",[Rt(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var $t=function(e){var t=new Tt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};ot({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=e.funcName;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder:function(e,t){var r,n=t.style,a=t.havingStyle(n.sup()),i=Ke.wrapFragment(wt(e.body,a,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(a=t.havingStyle(n.sub()),(r=Ke.wrapFragment(wt(e.below,a,t),t)).classes.push(o+"-arrow-pad"));var s,l=Gt(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Ke.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder:function(e,t){var r,n=Vt(e.label);if(n.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var a=$t(Rt(e.body,t));if(e.below){var i=$t(Rt(e.below,t));r=new Tt.MathNode("munderover",[n,i,a])}else r=new Tt.MathNode("mover",[n,a])}else if(e.below){var o=$t(Rt(e.below,t));r=new Tt.MathNode("munder",[n,o])}else r=$t(),r=new Tt.MathNode("mover",[n,r]);return r}});var Zt={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Kt=function(e){return"textord"===e.type&&"@"===e.text};function Jt(e,t,r){var n=Zt[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var a={type:"atom",text:n,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[a],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}ot({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder:function(e,t){var r=t.havingStyle(t.style.sup()),n=Ke.wrapFragment(wt(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mrow",[Rt(e.label,t)]);return(r=new Tt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Tt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),ot({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:function(e,t){return{type:"cdlabelparent",mode:e.parser.mode,fragment:t[0]}},htmlBuilder:function(e,t){var r=Ke.wrapFragment(wt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:function(e,t){return new Tt.MathNode("mrow",[Rt(e.fragment,t)])}}),ot({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var r=e.parser,a=Ut(t[0],"ordgroup").body,i="",o=0;o<a.length;o++){i+=Ut(a[o],"textord").text}var s,l=parseInt(i);if(isNaN(l))throw new n("\\@char has non-numeric argument "+i);if(l<0||l>=1114111)throw new n("\\@char with invalid code point "+i);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var Qt=function(e,t){var r=ft(e.body,t.withColor(e.color),!1);return Ke.makeFragment(r)},er=function(e,t){var r=Nt(e.body,t.withColor(e.color)),n=new Tt.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};ot({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler:function(e,t){var r=e.parser,n=Ut(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:ht(a)}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,a=Ut(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=r[0],i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&Ut(a,"size").value}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(F(e.size,t)))),r},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(F(e.size,t)))),r}});var tr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},rr=function(e){var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new n("Expected a control sequence",e);return t},nr=function(e,t,r,n){var a=e.gullet.macros.get(r.text);null==a&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};ot({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler:function(e){var t=e.parser,r=e.funcName;t.consumeSpaces();var a=t.fetch();if(tr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=tr[a.text]),Ut(t.parseFunction(),"internal");throw new n("Invalid token after macro prefix",a)}}),ot({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,a=t.gullet.popToken(),i=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new n("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new n('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new n('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new n("Expected a macro definition");l[s].push(a.text)}var h=t.gullet.consumeArg().tokens;return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(i,{tokens:h,numArgs:s,delimiters:l},r===tr[r]),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken());t.gullet.consumeSpaces();var a=function(e){var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t}(t);return nr(t,n,a,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return nr(t,n,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var ar=function(e,t,r){var n=q(ae.math[e]&&ae.math[e].replace||e,t,r);if(!n)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return n},ir=function(e,t,r,n){var a=r.havingBaseStyle(t),i=Ke.makeSpan(n.concat(a.sizingClasses(r)),[e],r),o=a.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},or=function(e,t,r){var n=t.havingBaseStyle(r),a=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=V(a),e.height-=a,e.depth+=a},sr=function(e,t,r,n,a,i){var o=function(e,t,r,n){return Ke.makeSymbol(e,"Size"+t+"-Regular",r,n)}(e,t,a,n),s=ir(Ke.makeSpan(["delimsizing","size"+t],[o],n),x.TEXT,n,i);return r&&or(s,n,x.TEXT),s},lr=function(e,t,r){var n;return n="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Ke.makeSpan(["delimsizinginner",n],[Ke.makeSpan([],[Ke.makeSymbol(e,t,r)])])}},hr=function(e,t,r){var n=T["Size4-Regular"][e.charCodeAt(0)]?T["Size4-Regular"][e.charCodeAt(0)][4]:T["Size1-Regular"][e.charCodeAt(0)][4],a=new J("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new K([a],{width:V(n),height:V(t),style:"width:"+V(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Ke.makeSvgSpan([],[i],r);return o.height=t,o.style.height=V(t),o.style.width=V(n),{type:"elem",elem:o}},mr={type:"kern",size:-.008},cr=["|","\\lvert","\\rvert","\\vert"],ur=["\\|","\\lVert","\\rVert","\\Vert"],pr=function(e,t,r,n,a,i){var o,s,h,m;o=h=m=e,s=null;var c="Size1-Regular";"\\uparrow"===e?h=m="\u23d0":"\\Uparrow"===e?h=m="\u2016":"\\downarrow"===e?o=h="\u23d0":"\\Downarrow"===e?o=h="\u2016":"\\updownarrow"===e?(o="\\uparrow",h="\u23d0",m="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",h="\u2016",m="\\Downarrow"):l.contains(cr,e)?h="\u2223":l.contains(ur,e)?h="\u2225":"["===e||"\\lbrack"===e?(o="\u23a1",h="\u23a2",m="\u23a3",c="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="\u23a4",h="\u23a5",m="\u23a6",c="Size4-Regular"):"\\lfloor"===e||"\u230a"===e?(h=o="\u23a2",m="\u23a3",c="Size4-Regular"):"\\lceil"===e||"\u2308"===e?(o="\u23a1",h=m="\u23a2",c="Size4-Regular"):"\\rfloor"===e||"\u230b"===e?(h=o="\u23a5",m="\u23a6",c="Size4-Regular"):"\\rceil"===e||"\u2309"===e?(o="\u23a4",h=m="\u23a5",c="Size4-Regular"):"("===e||"\\lparen"===e?(o="\u239b",h="\u239c",m="\u239d",c="Size4-Regular"):")"===e||"\\rparen"===e?(o="\u239e",h="\u239f",m="\u23a0",c="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",m="\u23a9",h="\u23aa",c="Size4-Regular");var u=ar(o,c,a),p=u.height+u.depth,d=ar(h,c,a),f=d.height+d.depth,g=ar(m,c,a),v=g.height+g.depth,b=0,y=1;if(null!==s){var w=ar(s,c,a);b=w.height+w.depth,y=2}var k=p+v+b,S=k+Math.max(0,Math.ceil((t-k)/(y*f)))*y*f,M=n.fontMetrics().axisHeight;r&&(M*=n.sizeMultiplier);var z=S/2-M,A=[];if(A.push(lr(m,c,a)),A.push(mr),null===s){var T=S-p-v+.016;A.push(hr(h,T,n))}else{var B=(S-p-v-b)/2+.016;A.push(hr(h,B,n)),A.push(mr),A.push(lr(s,c,a)),A.push(mr),A.push(hr(h,B,n))}A.push(mr),A.push(lr(o,c,a));var C=n.havingBaseStyle(x.TEXT),q=Ke.makeVList({positionType:"bottom",positionData:z,children:A},C);return ir(Ke.makeSpan(["delimsizing","mult"],[q],C),x.TEXT,n,i)},dr=.08,fr=function(e,t,r,n,a){var i=function(e,t,r){t*=1e3;var n="";switch(e){case"sqrtMain":n=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize1":n=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize2":n=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize3":n=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize4":n=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,M);break;case"sqrtTall":n=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,M,r)}return n}(e,n,r),o=new J(e,i),s=new K([o],{width:"400em",height:V(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Ke.makeSvgSpan(["hide-tail"],[s],a)},gr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],vr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],br=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],yr=[0,1.2,1.8,2.4,3],xr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],wr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"stack"}],kr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Sr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Mr=function(e,t,r,n){for(var a=Math.min(2,3-n.style.size);a<r.length&&"stack"!==r[a].type;a++){var i=ar(e,Sr(r[a]),"math"),o=i.height+i.depth;if("small"===r[a].type&&(o*=n.havingBaseStyle(r[a].style).sizeMultiplier),o>t)return r[a]}return r[r.length-1]},zr=function(e,t,r,n,a,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=l.contains(br,e)?xr:l.contains(gr,e)?kr:wr;var s=Mr(e,t,o,n);return"small"===s.type?function(e,t,r,n,a,i){var o=Ke.makeSymbol(e,"Main-Regular",a,n),s=ir(o,t,n,i);return r&&or(s,n,t),s}(e,s.style,r,n,a,i):"large"===s.type?sr(e,s.size,r,n,a,i):pr(e,t,r,n,a,i)},Ar={sqrtImage:function(e,t){var r,n,a=t.havingBaseSizing(),i=Mr("\\surd",e*a.sizeMultiplier,kr,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=fr("sqrtMain",l=(1+s+dr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",n=.833/o):"large"===i.type?(m=1080*yr[i.size],h=(yr[i.size]+s)/o,l=(yr[i.size]+s+dr)/o,(r=fr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",n=1/o):(l=e+s+dr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=fr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",n=1.056),r.height=h,r.style.height=V(l),{span:r,advanceWidth:n,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),l.contains(gr,e)||l.contains(br,e))return sr(e,t,!1,r,a,i);if(l.contains(vr,e))return pr(e,yr[t],!1,r,a,i);throw new n("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:yr,customSizedDelim:zr,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return zr(e,h,!0,n,a,i)}},Tr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Br=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Cr(e,t){var r=Xt(e);if(r&&l.contains(Br,r.text))return r;throw new n(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function qr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}ot({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:function(e,t){var r=Cr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Tr[e.funcName].size,mclass:Tr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?Ke.makeSpan([e.mclass]):Ar.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Bt(e.delim,e.mode));var r=new Tt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(Ar.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}}),ot({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new n("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Cr(t[0],e).text,color:r}}}),ot({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Cr(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=Ut(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){qr(e);for(var r,n,a=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,r="."===e.left?xt(t,["mopen"]):Ar.leftRightDelim(e.left,i,o,t,e.mode,["mopen"]),a.unshift(r),s)for(var h=1;h<a.length;h++){var m=a[h].isMiddle;m&&(a[h]=Ar.leftRightDelim(m.delim,i,o,m.options,e.mode,[]))}if("."===e.right)n=xt(t,["mclose"]);else{var c=e.rightColor?t.withColor(e.rightColor):t;n=Ar.leftRightDelim(e.right,i,o,c,e.mode,["mclose"])}return a.push(n),Ke.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){qr(e);var r=Nt(e.body,t);if("."!==e.left){var n=new Tt.MathNode("mo",[Bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if("."!==e.right){var a=new Tt.MathNode("mo",[Bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return Ct(r)}}),ot({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Cr(t[0],e);if(!e.parser.leftrightDepth)throw new n("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:function(e,t){var r;if("."===e.delim)r=xt(t,[]);else{r=Ar.sizedDelim(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},mathmlBuilder:function(e,t){var r="\\vert"===e.delim||"|"===e.delim?Bt("|","text"):Bt(e.delim,e.mode),n=new Tt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var Nr=function(e,t){var r,n,a,i=Ke.wrapFragment(wt(e.body,t),t),o=e.label.substr(1),s=t.sizeMultiplier,h=0,m=l.isCharacterBox(e.body);if("sout"===o)(r=Ke.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,h=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),u=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var p=i.height+i.depth+c+u;i.style.paddingLeft=V(p/2+c);var d=Math.floor(1e3*p*s),f="M400000 "+(n=d)+" H0 L"+n/2+" 0 l65 45 L145 "+(n-80)+" H400000z",g=new K([new J("phase",f)],{width:"400em",height:V(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Ke.makeSvgSpan(["hide-tail"],[g],t)).style.height=V(p),h=i.depth+c+u}else{/cancel/.test(o)?m||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=m?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=V(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=V(y),r.style.borderRightWidth=V(y)),h=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)a=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:h},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];a=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:h,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(a.height=i.height,a.depth=i.depth),/cancel/.test(o)&&!m?Ke.makeSpan(["mord","cancel-lap"],[a],t):Ke.makeSpan(["mord"],[a],t)},Ir=function(e,t){var r=0,n=new Tt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Rt(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};ot({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=Ut(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),ot({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\angl",body:t[0]}}});var Rr={};function Or(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<r.length;++l)Rr[r[l]]=s;i&&(at[t]=i),o&&(it[t]=o)}var Hr={};function Er(e,t){Hr[e]=t}var Lr=function(){function e(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}return e.range=function(t,r){return r?t&&t.loc&&r.loc&&t.loc.lexer===r.loc.lexer?new e(t.loc.lexer,t.loc.start,r.loc.end):null:t&&t.loc},e}(),Dr=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,r){return new e(r,Lr.range(this,t))},e}();function Pr(e){var t=[];e.consumeSpaces();for(var r=e.fetch().text;"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}var Fr=function(e){if(!e.parser.settings.displayMode)throw new n("{"+e.envName+"} can be used only in display mode.")};function Vr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function Gr(e,t,r){var a=t.hskipBeforeAndAfter,i=t.addJot,o=t.cols,s=t.arraystretch,l=t.colSeparationType,h=t.autoTag,m=t.singleRow,c=t.emptySingleRow,u=t.maxNumCols,p=t.leqno;if(e.gullet.beginGroup(),m||e.gullet.macros.set("\\cr","\\\\\\relax"),!s){var d=e.gullet.expandMacroAsText("\\arraystretch");if(null==d)s=1;else if(!(s=parseFloat(d))||s<0)throw new n("Invalid \\arraystretch: "+d)}e.gullet.beginGroup();var f=[],g=[f],v=[],b=[],y=null!=h?[]:void 0;function x(){h&&e.gullet.macros.set("\\@eqnsw","1",!0)}function w(){y&&(e.gullet.macros.get("\\df@tag")?(y.push(e.subparse([new Dr("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):y.push(Boolean(h)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(x(),b.push(Pr(e));;){var k=e.parseExpression(!1,m?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),k={type:"ordgroup",mode:e.mode,body:k},r&&(k={type:"styling",mode:e.mode,style:r,body:[k]}),f.push(k);var S=e.fetch().text;if("&"===S){if(u&&f.length===u){if(m||l)throw new n("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===S){w(),1===f.length&&"styling"===k.type&&0===k.body[0].body.length&&(g.length>1||!c)&&g.pop(),b.length<g.length+1&&b.push([]);break}if("\\\\"!==S)throw new n("Expected & or \\\\ or \\cr or \\end",e.nextToken);e.consume();var M=void 0;" "!==e.gullet.future().text&&(M=e.parseSizeGroup(!0)),v.push(M?M.value:null),w(),b.push(Pr(e)),f=[],g.push(f),x()}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:i,arraystretch:s,body:g,cols:o,rowGaps:v,hskipBeforeAndAfter:a,hLinesBeforeRow:b,colSeparationType:l,tags:y,leqno:p}}function Ur(e){return"d"===e.substr(0,1)?"display":"text"}var Yr=function(e,t){var r,a,i=e.body.length,o=e.hLinesBeforeRow,s=0,h=new Array(i),m=[],c=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,p=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(p=t.havingStyle(x.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var d="CD"===e.colSeparationType?F({number:3,unit:"ex"},t):12*u,f=3*u,g=e.arraystretch*d,v=.7*g,b=.3*g,y=0;function w(e){for(var t=0;t<e.length;++t)t>0&&(y+=.25),m.push({pos:y,isDashed:e[t]})}for(w(o[0]),r=0;r<e.body.length;++r){var k=e.body[r],S=v,M=b;s<k.length&&(s=k.length);var z=new Array(k.length);for(a=0;a<k.length;++a){var A=wt(k[a],t);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=e.rowGaps[r],B=0;T&&(B=F(T,t))>0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=f),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,h[r]=z,w(o[r+1])}var C,q,N=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],O=[];if(e.tags&&e.tags.some((function(e){return e})))for(r=0;r<i;++r){var H=h[r],E=H.pos-N,L=e.tags[r],D=void 0;(D=!0===L?Ke.makeSpan(["eqn-num"],[],t):!1===L?Ke.makeSpan([],[],t):Ke.makeSpan([],ft(L,t,!0),t)).depth=H.depth,D.height=H.height,O.push({type:"elem",elem:D,shift:E})}for(a=0,q=0;a<s||q<I.length;++a,++q){for(var P=I[q]||{},G=!0;"separator"===P.type;){if(G||((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(t.fontMetrics().doubleRuleSep),R.push(C)),"|"!==P.separator&&":"!==P.separator)throw new n("Invalid separator type: "+P.separator);var U="|"===P.separator?"solid":"dashed",Y=Ke.makeSpan(["vertical-separator"],[],t);Y.style.height=V(y),Y.style.borderRightWidth=V(c),Y.style.borderRightStyle=U,Y.style.margin="0 "+V(-c/2);var X=y-N;X&&(Y.style.verticalAlign=V(-X)),R.push(Y),P=I[++q]||{},G=!1}if(!(a>=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=l.deflt(P.pregap,p))&&((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(W),R.push(C));var _=[];for(r=0;r<i;++r){var j=h[r],$=j[a];if($){var Z=j.pos-N;$.depth=j.depth,$.height=j.height,_.push({type:"elem",elem:$,shift:Z})}}_=Ke.makeVList({positionType:"individualShift",children:_},t),_=Ke.makeSpan(["col-align-"+(P.align||"c")],[_]),R.push(_),(a<s-1||e.hskipBeforeAndAfter)&&0!==(W=l.deflt(P.postgap,p))&&((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(W),R.push(C))}}if(h=Ke.makeSpan(["mtable"],R),m.length>0){for(var K=Ke.makeLineSpan("hline",t,c),J=Ke.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:h,shift:0}];m.length>0;){var ee=m.pop(),te=ee.pos-N;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}h=Ke.makeVList({positionType:"individualShift",children:Q},t)}if(0===O.length)return Ke.makeSpan(["mord"],[h],t);var re=Ke.makeVList({positionType:"individualShift",children:O},t);return re=Ke.makeSpan(["tag"],[re],t),Ke.makeFragment([h,re])},Xr={c:"center ",l:"left ",r:"right "},Wr=function(e,t){for(var r=[],n=new Tt.MathNode("mtd",[],["mtr-glue"]),a=new Tt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i<e.body.length;i++){for(var o=e.body[i],s=[],l=0;l<o.length;l++)s.push(new Tt.MathNode("mtd",[Rt(o[l],t)]));e.tags&&e.tags[i]&&(s.unshift(n),s.push(n),e.leqno?s.unshift(a):s.push(a)),r.push(new Tt.MathNode("mtr",s))}var h=new Tt.MathNode("mtable",r),m=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);h.setAttribute("rowspacing",V(m));var c="",u="";if(e.cols&&e.cols.length>0){var p=e.cols,d="",f=!1,g=0,v=p.length;"separator"===p[0].type&&(c+="top ",g=1),"separator"===p[p.length-1].type&&(c+="bottom ",v-=1);for(var b=g;b<v;b++)"align"===p[b].type?(u+=Xr[p[b].align],f&&(d+="none "),f=!0):"separator"===p[b].type&&f&&(d+="|"===p[b].separator?"solid ":"dashed ",f=!1);h.setAttribute("columnalign",u.trim()),/[sd]/.test(d)&&h.setAttribute("columnlines",d.trim())}if("align"===e.colSeparationType){for(var y=e.cols||[],x="",w=1;w<y.length;w++)x+=w%2?"0em ":"1em ";h.setAttribute("columnspacing",x.trim())}else"alignat"===e.colSeparationType||"gather"===e.colSeparationType?h.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?h.setAttribute("columnspacing","0.2778em"):"CD"===e.colSeparationType?h.setAttribute("columnspacing","0.5em"):h.setAttribute("columnspacing","1em");var k="",S=e.hLinesBeforeRow;c+=S[0].length>0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M<S.length-1;M++)k+=0===S[M].length?"none ":S[M][0]?"dashed ":"solid ";return/[sd]/.test(k)&&h.setAttribute("rowlines",k.trim()),""!==c&&(h=new Tt.MathNode("menclose",[h])).setAttribute("notation",c.trim()),e.arraystretch&&e.arraystretch<1&&(h=new Tt.MathNode("mstyle",[h])).setAttribute("scriptlevel","1"),h},_r=function(e,t){-1===e.envName.indexOf("ed")&&Fr(e);var r,a=[],i=e.envName.indexOf("at")>-1?"alignat":"align",o="split"===e.envName,s=Gr(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Vr(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c<t[0].body.length;c++){m+=Ut(t[0].body[c],"textord").text}r=Number(m),l=2*r}var u=!l;s.body.forEach((function(e){for(var t=1;t<e.length;t+=2){var a=Ut(e[t],"styling");Ut(a.body[0],"ordgroup").body.unshift(h)}if(u)l<e.length&&(l=e.length);else{var i=e.length/2;if(r<i)throw new n("Too many math in a row: expected "+r+", but got "+i,e[0])}}));for(var p=0;p<l;++p){var d="r",f=0;p%2==1?d="l":p>0&&u&&(f=1),a[p]={type:"align",align:d,pregap:f,postgap:0}}return s.colSeparationType=u?"align":"alignat",s};Or({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new n("Unknown column alignment: "+t,e)})),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Gr(e.parser,a,Ur(e.envName))},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var i=e.parser;if(i.consumeSpaces(),"["===i.fetch().text){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,-1==="lcr".indexOf(r))throw new n("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),a.cols=[{type:"align",align:r}]}}var o=Gr(e.parser,a,Ur(e.envName)),s=Math.max.apply(Math,[0].concat(o.body.map((function(e){return e.length}))));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new n("Unknown column alignment: "+t,e)}));if(r.length>1)throw new n("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=Gr(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new n("{subarray} can contain only one column");return a},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Ur(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler:function(e){l.contains(["gather","gather*"],e.envName)&&Fr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Vr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["equation","equation*"],props:{numArgs:0},handler:function(e){Fr(e);var t={autoTag:Vr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["CD"],props:{numArgs:0},handler:function(e){return Fr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new n("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a,i,o=[],s=[o],l=0;l<t.length;l++){for(var h=t[l],m={type:"styling",body:[],mode:"math",style:"display"},c=0;c<h.length;c++)if(Kt(h[c])){o.push(m);var u=Yt(h[c+=1]).text,p=new Array(2);if(p[0]={type:"ordgroup",mode:"math",body:[]},p[1]={type:"ordgroup",mode:"math",body:[]},"=|.".indexOf(u)>-1);else{if(!("<>AV".indexOf(u)>-1))throw new n('Expected one of "<>AV=|." after @',h[c]);for(var d=0;d<2;d++){for(var f=!0,g=c+1;g<h.length;g++){if(i=u,("mathord"===(a=h[g]).type||"atom"===a.type)&&a.text===i){f=!1,c=g;break}if(Kt(h[g]))throw new n("Missing a "+u+" character to complete a CD arrow.",h[g]);p[d].body.push(h[g])}if(f)throw new n("Missing a "+u+" character to complete a CD arrow.",h[c])}}var v={type:"styling",body:[Jt(u,p,e)],mode:"math",style:"display"};o.push(v),m={type:"styling",body:[],mode:"math",style:"display"}}else m.body.push(h[c]);l%2==0?o.push(m):o.shift(),o=[],s.push(o)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}(e.parser)},htmlBuilder:Yr,mathmlBuilder:Wr}),Er("\\nonumber","\\gdef\\@eqnsw{0}"),Er("\\notag","\\nonumber"),ot({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new n(e.funcName+" valid only within array environment")}});var jr=Rr;ot({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var r=e.parser,a=e.funcName,i=t[0];if("ordgroup"!==i.type)throw new n("Invalid environment name",i);for(var o="",s=0;s<i.body.length;++s)o+=Ut(i.body[s],"textord").text;if("\\begin"===a){if(!jr.hasOwnProperty(o))throw new n("No such environment: "+o,i);var l=jr[o],h=r.parseArguments("\\begin{"+o+"}",l),m=h.args,c=h.optArgs,u={mode:r.mode,envName:o,parser:r},p=l.handler(u,m,c);r.expect("\\end",!1);var d=r.nextToken,f=Ut(r.parseFunction(),"environment");if(f.name!==o)throw new n("Mismatch: \\begin{"+o+"} matched by \\end{"+f.name+"}",d);return p}return{type:"environment",mode:r.mode,name:o,nameGroup:i}}});var $r=Ke.makeSpan;function Zr(e,t){var r=ft(e.body,t,!0);return $r([e.mclass],r,t)}function Kr(e,t){var r,n=Nt(e.body,t);return"minner"===e.mclass?r=new Tt.MathNode("mpadded",n):"mord"===e.mclass?e.isCharacterBox?(r=n[0]).type="mi":r=new Tt.MathNode("mi",n):(e.isCharacterBox?(r=n[0]).type="mo":r=new Tt.MathNode("mo",n),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}ot({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.substr(5),body:ht(a),isCharacterBox:l.isCharacterBox(a)}},htmlBuilder:Zr,mathmlBuilder:Kr});var Jr=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};ot({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:Jr(t[0]),body:ht(t[1]),isCharacterBox:l.isCharacterBox(t[1])}}}),ot({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var r,n=e.parser,a=e.funcName,i=t[1],o=t[0];r="\\stackrel"!==a?Jr(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:ht(i)},h={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:n.mode,mclass:r,body:[h],isCharacterBox:l.isCharacterBox(h)}},htmlBuilder:Zr,mathmlBuilder:Kr});var Qr=function(e,t){var r=e.font,n=t.withFont(r);return wt(e.body,n)},en=function(e,t){var r=e.font,n=t.withFont(r);return Rt(e.body,n)},tn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};ot({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=lt(t[0]),i=n;return i in tn&&(i=tn[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Qr,mathmlBuilder:en}),ot({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0],a=l.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:Jr(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:a}}}),ot({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=e.breakOnTokenText,i=r.mode,o=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Qr,mathmlBuilder:en});var rn=function(e,t){var r=t;return"display"===e?r=r.id>=x.SCRIPT.id?r.text():x.DISPLAY:"text"===e&&r.size===x.DISPLAY.size?r=x.TEXT:"script"===e?r=x.SCRIPT:"scriptscript"===e&&(r=x.SCRIPTSCRIPT),r},nn=function(e,t){var r,n=rn(e.size,t.style),a=n.fracNum(),i=n.fracDen();r=t.havingStyle(a);var o=wt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}r=t.havingStyle(i);var h,m,c,u,p,d,f,g,v,b,y=wt(e.denom,r,t);if(e.hasBarLine?(e.barSize?(m=F(e.barSize,t),h=Ke.makeLineSpan("frac-line",t,m)):h=Ke.makeLineSpan("frac-line",t),m=h.height,c=h.height):(h=null,m=0,c=t.fontMetrics().defaultRuleThickness),n.size===x.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,p=m>0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(u=t.fontMetrics().num2,p=c):(u=t.fontMetrics().num3,p=3*c),d=t.fontMetrics().denom2),h){var w=t.fontMetrics().axisHeight;u-o.depth-(w+.5*m)<p&&(u+=p-(u-o.depth-(w+.5*m))),w-.5*m-(y.height-d)<p&&(d+=p-(w-.5*m-(y.height-d)));var k=-(w-.5*m);f=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:h,shift:k},{type:"elem",elem:o,shift:-u}]},t)}else{var S=u-o.depth-(y.height-d);S<p&&(u+=.5*(p-S),d+=.5*(p-S)),f=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:o,shift:-u}]},t)}return r=t.havingStyle(n),f.height*=r.sizeMultiplier/t.sizeMultiplier,f.depth*=r.sizeMultiplier/t.sizeMultiplier,g=n.size===x.DISPLAY.size?t.fontMetrics().delim1:n.size===x.SCRIPTSCRIPT.size?t.havingStyle(x.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,v=null==e.leftDelim?xt(t,["mopen"]):Ar.customSizedDelim(e.leftDelim,g,!0,t.havingStyle(n),e.mode,["mopen"]),b=e.continued?Ke.makeSpan([]):null==e.rightDelim?xt(t,["mclose"]):Ar.customSizedDelim(e.rightDelim,g,!0,t.havingStyle(n),e.mode,["mclose"]),Ke.makeSpan(["mord"].concat(r.sizingClasses(t)),[v,Ke.makeSpan(["mfrac"],[f]),b],t)},an=function(e,t){var r=new Tt.MathNode("mfrac",[Rt(e.numer,t),Rt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var n=F(e.barSize,t);r.setAttribute("linethickness",V(n))}}else r.setAttribute("linethickness","0px");var a=rn(e.size,t.style);if(a.size!==t.style.size){r=new Tt.MathNode("mstyle",[r]);var i=a.size===x.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Tt.MathNode("mo",[new Tt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Tt.MathNode("mo",[new Tt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Ct(o)}return r};ot({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:function(e,t){var r,n=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,h="auto";switch(a){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:n.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),ot({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,r=e.parser,n=e.funcName,a=e.token;switch(n){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:a}}});var on=["display","text","script","scriptscript"],sn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};ot({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var r,n=e.parser,a=t[4],i=t[5],o=lt(t[0]),s="atom"===o.type&&"open"===o.family?sn(o.text):null,l=lt(t[1]),h="atom"===l.type&&"close"===l.family?sn(l.text):null,m=Ut(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var u="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Ut(p.body[0],"textord");u=on[Number(d.text)]}}else p=Ut(p,"textord"),u=on[Number(p.text)];return{type:"genfrac",mode:n.mode,numer:a,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:u}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ut(t[0],"size").value,token:n}}}),ot({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ut(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:nn,mathmlBuilder:an});var ln=function(e,t){var r,n,a=t.style;"supsub"===e.type?(r=e.sup?wt(e.sup,t.havingStyle(a.sup()),t):wt(e.sub,t.havingStyle(a.sub()),t),n=Ut(e.base,"horizBrace")):n=Ut(e,"horizBrace");var i,o=wt(n.base,t.havingBaseStyle(x.DISPLAY)),s=Gt(n,t);if(n.isOver?(i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Ke.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t);i=n.isOver?Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Ke.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t)};ot({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:ln,mathmlBuilder:function(e,t){var r=Vt(e.label);return new Tt.MathNode(e.isOver?"mover":"munder",[Rt(e.base,t),r])}}),ot({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],a=Ut(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:ht(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=It(e.body,t);return r instanceof zt||(r=new zt("mrow",[r])),r.setAttribute("href",e.href),r}}),ot({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:a};return{type:"href",mode:r.mode,href:n,body:ht(s)}}}),ot({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler:function(e,t){return{type:"hbox",mode:e.parser.mode,body:ht(t[0])}},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){return new Tt.MathNode("mrow",Nt(e.body,t))}}),ot({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:function(e,t){var r,a=e.parser,i=e.funcName,o=(e.token,Ut(t[0],"raw").string),s=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l={};switch(i){case"\\htmlClass":l.class=o,r={command:"\\htmlClass",class:o};break;case"\\htmlId":l.id=o,r={command:"\\htmlId",id:o};break;case"\\htmlStyle":l.style=o,r={command:"\\htmlStyle",style:o};break;case"\\htmlData":for(var h=o.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2!==c.length)throw new n("Error parsing key-value for \\htmlData");l["data-"+c[0].trim()]=c[1].trim()}r={command:"\\htmlData",attributes:l};break;default:throw new Error("Unrecognized html command")}return a.settings.isTrusted(r)?{type:"html",mode:a.mode,attributes:l,body:ht(s)}:a.formatUnsupportedCmd(i)},htmlBuilder:function(e,t){var r=ft(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push.apply(n,e.attributes.class.trim().split(/\s+/));var a=Ke.makeSpan(n,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:function(e,t){return It(e.body,t)}}),ot({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:ht(t[0]),mathml:ht(t[1])}},htmlBuilder:function(e,t){var r=ft(e.html,t,!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){return It(e.mathml,t)}});var hn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new n("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new n("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};ot({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,r){var a=e.parser,i={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Ut(r[0],"raw").string.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":l=u;break;case"width":i=hn(u);break;case"height":o=hn(u);break;case"totalheight":s=hn(u);break;default:throw new n("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Ut(t[0],"url").url;return""===l&&(l=(l=(l=p).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:a.mode,alt:l,width:i,height:o,totalheight:s,src:p}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var r=F(e.height,t),n=0;e.totalheight.number>0&&(n=F(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=F(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var o=new j(e.src,e.alt,i);return o.height=r,o.depth=n,o},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=F(e.height,t),a=0;if(e.totalheight.number>0&&(a=F(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}}),ot({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=Ut(t[0],"size");if(r.settings.strict){var i="m"===n[1],o="mu"===a.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+a.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder:function(e,t){return Ke.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=F(e.dimension,t);return new Tt.SpaceNode(r)}}),ot({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:function(e,t){var r;"clap"===e.alignment?(r=Ke.makeSpan([],[wt(e.body,t)]),r=Ke.makeSpan(["inner"],[r],t)):r=Ke.makeSpan(["inner"],[wt(e.body,t)]);var n=Ke.makeSpan(["fix"],[]),a=Ke.makeSpan([e.alignment],[r,n],t),i=Ke.makeSpan(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=Ke.makeSpan(["thinbox"],[a],t),Ke.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);if("rlap"!==e.alignment){var n="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}}),ot({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=e.funcName,n=e.parser,a=n.mode;n.switchMode("math");var i="\\("===r?"\\)":"$",o=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",body:o}}}),ot({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new n("Mismatched "+e.funcName)}});var mn=function(e,t){switch(t.style.size){case x.DISPLAY.size:return e.display;case x.TEXT.size:return e.text;case x.SCRIPT.size:return e.script;case x.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};ot({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:ht(t[0]),text:ht(t[1]),script:ht(t[2]),scriptscript:ht(t[3])}},htmlBuilder:function(e,t){var r=mn(e,t),n=ft(r,t,!1);return Ke.makeFragment(n)},mathmlBuilder:function(e,t){var r=mn(e,t);return It(r,t)}});var cn=function(e,t,r,n,a,i,o){e=Ke.makeSpan([],[e]);var s,h,m,c=r&&l.isCharacterBox(r);if(t){var u=wt(t,n.havingStyle(a.sup()),n);h={elem:u,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-u.depth)}}if(r){var p=wt(r,n.havingStyle(a.sub()),n);s={elem:p,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-p.height)}}if(h&&s){var d=n.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(s){var f=e.height-o;m=Ke.makeVList({positionType:"top",positionData:f,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},n)}else{if(!h)return e;var g=e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:g,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}var v=[m];if(s&&0!==i&&!c){var b=Ke.makeSpan(["mspace"],[],n);b.style.marginRight=V(i),v.unshift(b)}return Ke.makeSpan(["mop","op-limits"],v,n)},un=["\\smallint"],pn=function(e,t){var r,n,a,i=!1;"supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"op"),i=!0):a=Ut(e,"op");var o,s=t.style,h=!1;if(s.size===x.DISPLAY.size&&a.symbol&&!l.contains(un,a.name)&&(h=!0),a.symbol){var m=h?"Size2-Regular":"Size1-Regular",c="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(c=a.name.substr(1),a.name="oiint"===c?"\\iint":"\\iiint"),o=Ke.makeSymbol(a.name,m,"math",t,["mop","op-symbol",h?"large-op":"small-op"]),c.length>0){var u=o.italic,p=Ke.staticSvg(c+"Size"+(h?"2":"1"),t);o=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:h?.08:0}]},t),a.name="\\"+c,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var d=ft(a.body,t,!0);1===d.length&&d[0]instanceof Z?(o=d[0]).classes[0]="mop":o=Ke.makeSpan(["mop"],d,t)}else{for(var f=[],g=1;g<a.name.length;g++)f.push(Ke.mathsym(a.name[g],a.mode,t));o=Ke.makeSpan(["mop"],f,t)}var v=0,b=0;return(o instanceof Z||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(v=(o.height-o.depth)/2-t.fontMetrics().axisHeight,b=o.italic),i?cn(o,r,n,t,s,b,v):(v&&(o.style.position="relative",o.style.top=V(v)),o)},dn=function(e,t){var r;if(e.symbol)r=new zt("mo",[Bt(e.name,e.mode)]),l.contains(un,e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new zt("mo",Nt(e.body,t));else{r=new zt("mi",[new At(e.name.slice(1))]);var n=new zt("mo",[Bt("\u2061","text")]);r=e.parentIsSupSub?new zt("mrow",[r,n]):Mt([r,n])}return r},fn={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};ot({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:function(e,t){var r=e.parser,n=e.funcName;return 1===n.length&&(n=fn[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ht(n)}},htmlBuilder:pn,mathmlBuilder:dn});var gn={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};ot({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return 1===r.length&&(r=gn[r]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:pn,mathmlBuilder:dn});var vn=function(e,t){var r,n,a,i,o=!1;if("supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"operatorname"),o=!0):a=Ut(e,"operatorname"),a.body.length>0){for(var s=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=ft(s,t.withFont("mathrm"),!0),h=0;h<l.length;h++){var m=l[h];m instanceof Z&&(m.text=m.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Ke.makeSpan(["mop"],l,t)}else i=Ke.makeSpan(["mop"],[],t);return o?cn(i,r,n,t,t.style,0,0):i};function bn(e,t,r){for(var n=ft(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i<n.length;i++){var o=n[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(n[i].classes,t.sizingClasses(r)):n[i].classes[o+1]==="reset-size"+t.size&&(n[i].classes[o+1]="reset-size"+r.size),n[i].height*=a,n[i].depth*=a}return Ke.makeFragment(n)}ot({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"operatorname",mode:r.mode,body:ht(a),alwaysHandleSupSub:"\\operatornamewithlimits"===n,limits:!1,parentIsSupSub:!1}},htmlBuilder:vn,mathmlBuilder:function(e,t){for(var r=Nt(e.body,t.withFont("mathrm")),n=!0,a=0;a<r.length;a++){var i=r[a];if(i instanceof Tt.SpaceNode);else if(i instanceof Tt.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof Tt.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):n=!1;break;default:n=!1}else n=!1}if(n){var s=r.map((function(e){return e.toText()})).join("");r=[new Tt.TextNode(s)]}var l=new Tt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Tt.MathNode("mo",[Bt("\u2061","text")]);return e.parentIsSupSub?new Tt.MathNode("mrow",[l,h]):Tt.newDocumentFragment([l,h])}}),Er("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),st({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Ke.makeFragment(ft(e.body,t,!1)):Ke.makeSpan(["mord"],ft(e.body,t,!0),t)},mathmlBuilder:function(e,t){return It(e.body,t,!0)}}),ot({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=wt(e.body,t.havingCrampedStyle()),n=Ke.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]},t);return Ke.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("mover",[Rt(e.body,t),r]);return n.setAttribute("accent","true"),n}}),ot({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"phantom",mode:r.mode,body:ht(n)}},htmlBuilder:function(e,t){var r=ft(e.body,t.withPhantom(),!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){var r=Nt(e.body,t);return new Tt.MathNode("mphantom",r)}}),ot({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=Ke.makeSpan([],[wt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n<r.children.length;n++)r.children[n].height=0,r.children[n].depth=0;return r=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t),Ke.makeSpan(["mord"],[r],t)},mathmlBuilder:function(e,t){var r=Nt(ht(e.body),t),n=new Tt.MathNode("mphantom",r),a=new Tt.MathNode("mpadded",[n]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),ot({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["inner"],[wt(e.body,t.withPhantom())]),n=Ke.makeSpan(["fix"],[]);return Ke.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:function(e,t){var r=Nt(ht(e.body),t),n=new Tt.MathNode("mphantom",r),a=new Tt.MathNode("mpadded",[n]);return a.setAttribute("width","0px"),a}}),ot({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=F(e.dy,t);return Ke.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}}),ot({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:function(e){return{type:"internal",mode:e.parser.mode}}}),ot({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,r){var n=e.parser,a=r[0],i=Ut(t[0],"size"),o=Ut(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&Ut(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["mord","rule"],[],t),n=F(e.width,t),a=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=1.125*a*t.sizeMultiplier,r},mathmlBuilder:function(e,t){var r=F(e.width,t),n=F(e.height,t),a=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Tt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",V(r)),o.setAttribute("height",V(n));var s=new Tt.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});var yn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];ot({type:"sizing",names:yn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:yn.indexOf(n)+1,body:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.size);return bn(e.body,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Nt(e.body,r),a=new Tt.MathNode("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}}),ot({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=!1,i=!1,o=r[0]&&Ut(r[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var h=t[0];return{type:"smash",mode:n.mode,body:h,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var r=Ke.makeSpan([],[wt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].depth=0;var i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),ot({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder:function(e,t){var r=wt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Ke.wrapFragment(r,t);var n=t.fontMetrics().defaultRuleThickness,a=n;t.style.id<x.TEXT.id&&(a=t.fontMetrics().xHeight);var i=n+a/4,o=r.height+r.depth+i+n,s=Ar.sqrtImage(o,t),l=s.span,h=s.ruleWidth,m=s.advanceWidth,c=l.height-h;c>r.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=l.height-r.height-i-h;r.style.paddingLeft=V(m);var p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(x.SCRIPTSCRIPT),f=wt(e.index,d,t),g=.6*(p.height-p.depth),v=Ke.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),b=Ke.makeSpan(["root"],[v]);return Ke.makeSpan(["mord","sqrt"],[b,p],t)}return Ke.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Tt.MathNode("mroot",[Rt(r,t),Rt(n,t)]):new Tt.MathNode("msqrt",[Rt(r,t)])}});var xn={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT};ot({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r).withFont("");return bn(e.body,n,t)},mathmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r),a=Nt(e.body,n),i=new Tt.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var wn=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===x.DISPLAY.size||r.alwaysHandleSupSub)?pn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===x.DISPLAY.size||r.limits)?vn:null:"accent"===r.type?l.isCharacterBox(r.base)?Wt:null:"horizBrace"===r.type&&!e.sub===r.isOver?ln:null:null};st({type:"supsub",htmlBuilder:function(e,t){var r=wn(e,t);if(r)return r(e,t);var n,a,i,o=e.base,s=e.sup,h=e.sub,m=wt(o,t),c=t.fontMetrics(),u=0,p=0,d=o&&l.isCharacterBox(o);if(s){var f=t.havingStyle(t.style.sup());n=wt(s,f,t),d||(u=m.height-f.fontMetrics().supDrop*f.sizeMultiplier/t.sizeMultiplier)}if(h){var g=t.havingStyle(t.style.sub());a=wt(h,g,t),d||(p=m.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}i=t.style===x.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=V(.5/c.ptPerEm/b),w=null;if(a){var k=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(m instanceof Z||k)&&(w=V(-m.italic))}if(n&&a){u=Math.max(u,i,n.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var S=4*c.defaultRuleThickness;if(u-n.depth-(a.height-p)<S){p=S-(u-n.depth)+a.height;var M=.8*c.xHeight-(u-n.depth);M>0&&(u+=M,p-=M)}var z=[{type:"elem",elem:a,shift:p,marginRight:y,marginLeft:w},{type:"elem",elem:n,shift:-u,marginRight:y}];v=Ke.makeVList({positionType:"individualShift",children:z},t)}else if(a){p=Math.max(p,c.sub1,a.height-.8*c.xHeight);var A=[{type:"elem",elem:a,marginLeft:w,marginRight:y}];v=Ke.makeVList({positionType:"shift",positionData:p,children:A},t)}else{if(!n)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,n.depth+.25*c.xHeight),v=Ke.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:n,marginRight:y}]},t)}var T=yt(m,"right")||"mord";return Ke.makeSpan([T],[m,Ke.makeSpan(["msupsub"],[v])],t)},mathmlBuilder:function(e,t){var r,n=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(n=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var a,i=[Rt(e.base,t)];if(e.sub&&i.push(Rt(e.sub,t)),e.sup&&i.push(Rt(e.sup,t)),n)a=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;a=o&&"op"===o.type&&o.limits&&t.style===x.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===x.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;a=s&&"op"===s.type&&s.limits&&(t.style===x.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===x.DISPLAY)?"munder":"msub"}else{var l=e.base;a=l&&"op"===l.type&&l.limits&&(t.style===x.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===x.DISPLAY)?"mover":"msup"}return new Tt.MathNode(a,i)}}),st({type:"atom",htmlBuilder:function(e,t){return Ke.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[Bt(e.text,e.mode)]);if("bin"===e.family){var n=qt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var kn={mi:"italic",mn:"normal",mtext:"normal"};st({type:"mathord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mi",[Bt(e.text,e.mode,t)]),n=qt(e,t)||"italic";return n!==kn[r.type]&&r.setAttribute("mathvariant",n),r}}),st({type:"textord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var r,n=Bt(e.text,e.mode,t),a=qt(e,t)||"normal";return r="text"===e.mode?new Tt.MathNode("mtext",[n]):/[0-9]/.test(e.text)?new Tt.MathNode("mn",[n]):"\\prime"===e.text?new Tt.MathNode("mo",[n]):new Tt.MathNode("mi",[n]),a!==kn[r.type]&&r.setAttribute("mathvariant",a),r}});var Sn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Mn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};st({type:"spacing",htmlBuilder:function(e,t){if(Mn.hasOwnProperty(e.text)){var r=Mn[e.text].className||"";if("text"===e.mode){var a=Ke.makeOrd(e,t,"textord");return a.classes.push(r),a}return Ke.makeSpan(["mspace",r],[Ke.mathsym(e.text,e.mode,t)],t)}if(Sn.hasOwnProperty(e.text))return Ke.makeSpan(["mspace",Sn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Mn.hasOwnProperty(e.text)){if(Sn.hasOwnProperty(e.text))return new Tt.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return new Tt.MathNode("mtext",[new Tt.TextNode("\xa0")])}});var zn=function(){var e=new Tt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};st({type:"tag",mathmlBuilder:function(e,t){var r=new Tt.MathNode("mtable",[new Tt.MathNode("mtr",[zn(),new Tt.MathNode("mtd",[It(e.body,t)]),zn(),new Tt.MathNode("mtd",[It(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var An={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Tn={"\\textbf":"textbf","\\textmd":"textmd"},Bn={"\\textit":"textit","\\textup":"textup"},Cn=function(e,t){var r=e.font;return r?An[r]?t.withTextFontFamily(An[r]):Tn[r]?t.withTextFontWeight(Tn[r]):t.withTextFontShape(Bn[r]):t};ot({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"text",mode:r.mode,body:ht(a),font:n}},htmlBuilder:function(e,t){var r=Cn(e,t),n=ft(e.body,r,!0);return Ke.makeSpan(["mord","text"],n,r)},mathmlBuilder:function(e,t){var r=Cn(e,t);return It(e.body,r)}}),ot({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=Ke.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("munder",[Rt(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),ot({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:function(e,t){return{type:"vcenter",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ke.makeVList({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){return new Tt.MathNode("mpadded",[Rt(e.body,t)],["vcenter"])}}),ot({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=qn(e),n=[],a=t.havingStyle(t.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),n.push(Ke.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Ke.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Ke.tryCombineChars(n),a)},mathmlBuilder:function(e,t){var r=new Tt.TextNode(qn(e)),n=new Tt.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});var qn=function(e){return e.body.replace(/ /g,e.star?"\u2423":"\xa0")},Nn=nt,In=new RegExp("[\u0300-\u036f]+$"),Rn=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new Dr("EOF",new Lr(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new n("Unexpected character: '"+e[t]+"'",new Dr(e[t],new Lr(this,t,t+1)));var a=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[a]){var i=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===i?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Dr(a,new Lr(this,t,this.tokenRegex.lastIndex))},e}(),On=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new n("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])},t.endGroups=function(){for(;this.undefStack.length>0;)this.endGroup()},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n<this.undefStack.length;n++)delete this.undefStack[n][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t},e}(),Hn=Hr;Er("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Er("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Er("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Er("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Er("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Er("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Er("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var En={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Er("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=En[r.text])||a>=t)throw new n("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=En[e.future().text])&&i<t;)a*=t,a+=i,e.popToken()}return"\\@char{"+a+"}"}));var Ln=function(e,t,r){var a=e.consumeArg().tokens;if(1!==a.length)throw new n("\\newcommand's first argument must be a macro name");var i=a[0].text,o=e.isDefined(i);if(o&&!t)throw new n("\\newcommand{"+i+"} attempting to redefine "+i+"; use \\renewcommand");if(!o&&!r)throw new n("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(1===(a=e.consumeArg().tokens).length&&"["===a[0].text){for(var l="",h=e.expandNextToken();"]"!==h.text&&"EOF"!==h.text;)l+=h.text,h=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new n("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return e.macros.set(i,{tokens:a,numArgs:s}),""};Er("\\newcommand",(function(e){return Ln(e,!1,!0)})),Er("\\renewcommand",(function(e){return Ln(e,!0,!1)})),Er("\\providecommand",(function(e){return Ln(e,!0,!0)})),Er("\\message",(function(e){var t=e.consumeArgs(1)[0];return console.log(t.reverse().map((function(e){return e.text})).join("")),""})),Er("\\errmessage",(function(e){var t=e.consumeArgs(1)[0];return console.error(t.reverse().map((function(e){return e.text})).join("")),""})),Er("\\show",(function(e){var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Nn[r],ae.math[r],ae.text[r]),""})),Er("\\bgroup","{"),Er("\\egroup","}"),Er("~","\\nobreakspace"),Er("\\lq","`"),Er("\\rq","'"),Er("\\aa","\\r a"),Er("\\AA","\\r A"),Er("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Er("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Er("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Er("\u212c","\\mathscr{B}"),Er("\u2130","\\mathscr{E}"),Er("\u2131","\\mathscr{F}"),Er("\u210b","\\mathscr{H}"),Er("\u2110","\\mathscr{I}"),Er("\u2112","\\mathscr{L}"),Er("\u2133","\\mathscr{M}"),Er("\u211b","\\mathscr{R}"),Er("\u212d","\\mathfrak{C}"),Er("\u210c","\\mathfrak{H}"),Er("\u2128","\\mathfrak{Z}"),Er("\\Bbbk","\\Bbb{k}"),Er("\xb7","\\cdotp"),Er("\\llap","\\mathllap{\\textrm{#1}}"),Er("\\rlap","\\mathrlap{\\textrm{#1}}"),Er("\\clap","\\mathclap{\\textrm{#1}}"),Er("\\mathstrut","\\vphantom{(}"),Er("\\underbar","\\underline{\\text{#1}}"),Er("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Er("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Er("\\ne","\\neq"),Er("\u2260","\\neq"),Er("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Er("\u2209","\\notin"),Er("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Er("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Er("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Er("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Er("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Er("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Er("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Er("\u27c2","\\perp"),Er("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Er("\u220c","\\notni"),Er("\u231c","\\ulcorner"),Er("\u231d","\\urcorner"),Er("\u231e","\\llcorner"),Er("\u231f","\\lrcorner"),Er("\xa9","\\copyright"),Er("\xae","\\textregistered"),Er("\ufe0f","\\textregistered"),Er("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Er("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Er("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Er("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Er("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),Er("\u22ee","\\vdots"),Er("\\varGamma","\\mathit{\\Gamma}"),Er("\\varDelta","\\mathit{\\Delta}"),Er("\\varTheta","\\mathit{\\Theta}"),Er("\\varLambda","\\mathit{\\Lambda}"),Er("\\varXi","\\mathit{\\Xi}"),Er("\\varPi","\\mathit{\\Pi}"),Er("\\varSigma","\\mathit{\\Sigma}"),Er("\\varUpsilon","\\mathit{\\Upsilon}"),Er("\\varPhi","\\mathit{\\Phi}"),Er("\\varPsi","\\mathit{\\Psi}"),Er("\\varOmega","\\mathit{\\Omega}"),Er("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Er("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Er("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Er("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Er("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Er("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var Dn={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Er("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Dn?t=Dn[r]:("\\not"===r.substr(0,4)||r in ae.math&&l.contains(["bin","rel"],ae.math[r].group))&&(t="\\dotsb"),t}));var Pn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Er("\\dotso",(function(e){return e.future().text in Pn?"\\ldots\\,":"\\ldots"})),Er("\\dotsc",(function(e){var t=e.future().text;return t in Pn&&","!==t?"\\ldots\\,":"\\ldots"})),Er("\\cdots",(function(e){return e.future().text in Pn?"\\@cdots\\,":"\\@cdots"})),Er("\\dotsb","\\cdots"),Er("\\dotsm","\\cdots"),Er("\\dotsi","\\!\\cdots"),Er("\\dotsx","\\ldots\\,"),Er("\\DOTSI","\\relax"),Er("\\DOTSB","\\relax"),Er("\\DOTSX","\\relax"),Er("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Er("\\,","\\tmspace+{3mu}{.1667em}"),Er("\\thinspace","\\,"),Er("\\>","\\mskip{4mu}"),Er("\\:","\\tmspace+{4mu}{.2222em}"),Er("\\medspace","\\:"),Er("\\;","\\tmspace+{5mu}{.2777em}"),Er("\\thickspace","\\;"),Er("\\!","\\tmspace-{3mu}{.1667em}"),Er("\\negthinspace","\\!"),Er("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Er("\\negthickspace","\\tmspace-{5mu}{.277em}"),Er("\\enspace","\\kern.5em "),Er("\\enskip","\\hskip.5em\\relax"),Er("\\quad","\\hskip1em\\relax"),Er("\\qquad","\\hskip2em\\relax"),Er("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Er("\\tag@paren","\\tag@literal{({#1})}"),Er("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Er("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Er("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Er("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Er("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Er("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),Er("\\newline","\\\\\\relax"),Er("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Fn=V(T["Main-Regular"]["T".charCodeAt(0)][1]-.7*T["Main-Regular"]["A".charCodeAt(0)][1]);Er("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Er("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Er("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Er("\\@hspace","\\hskip #1\\relax"),Er("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Er("\\ordinarycolon",":"),Er("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Er("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Er("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Er("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Er("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Er("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Er("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Er("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Er("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Er("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Er("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Er("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Er("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Er("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Er("\u2237","\\dblcolon"),Er("\u2239","\\eqcolon"),Er("\u2254","\\coloneqq"),Er("\u2255","\\eqqcolon"),Er("\u2a74","\\Coloneqq"),Er("\\ratio","\\vcentcolon"),Er("\\coloncolon","\\dblcolon"),Er("\\colonequals","\\coloneqq"),Er("\\coloncolonequals","\\Coloneqq"),Er("\\equalscolon","\\eqqcolon"),Er("\\equalscoloncolon","\\Eqqcolon"),Er("\\colonminus","\\coloneq"),Er("\\coloncolonminus","\\Coloneq"),Er("\\minuscolon","\\eqcolon"),Er("\\minuscoloncolon","\\Eqcolon"),Er("\\coloncolonapprox","\\Colonapprox"),Er("\\coloncolonsim","\\Colonsim"),Er("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Er("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Er("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Er("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Er("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Er("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Er("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Er("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Er("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Er("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Er("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Er("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Er("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Er("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Er("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Er("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Er("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Er("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Er("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Er("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Er("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Er("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Er("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Er("\\imath","\\html@mathml{\\@imath}{\u0131}"),Er("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Er("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Er("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Er("\u27e6","\\llbracket"),Er("\u27e7","\\rrbracket"),Er("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Er("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Er("\u2983","\\lBrace"),Er("\u2984","\\rBrace"),Er("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Er("\u29b5","\\minuso"),Er("\\darr","\\downarrow"),Er("\\dArr","\\Downarrow"),Er("\\Darr","\\Downarrow"),Er("\\lang","\\langle"),Er("\\rang","\\rangle"),Er("\\uarr","\\uparrow"),Er("\\uArr","\\Uparrow"),Er("\\Uarr","\\Uparrow"),Er("\\N","\\mathbb{N}"),Er("\\R","\\mathbb{R}"),Er("\\Z","\\mathbb{Z}"),Er("\\alef","\\aleph"),Er("\\alefsym","\\aleph"),Er("\\Alpha","\\mathrm{A}"),Er("\\Beta","\\mathrm{B}"),Er("\\bull","\\bullet"),Er("\\Chi","\\mathrm{X}"),Er("\\clubs","\\clubsuit"),Er("\\cnums","\\mathbb{C}"),Er("\\Complex","\\mathbb{C}"),Er("\\Dagger","\\ddagger"),Er("\\diamonds","\\diamondsuit"),Er("\\empty","\\emptyset"),Er("\\Epsilon","\\mathrm{E}"),Er("\\Eta","\\mathrm{H}"),Er("\\exist","\\exists"),Er("\\harr","\\leftrightarrow"),Er("\\hArr","\\Leftrightarrow"),Er("\\Harr","\\Leftrightarrow"),Er("\\hearts","\\heartsuit"),Er("\\image","\\Im"),Er("\\infin","\\infty"),Er("\\Iota","\\mathrm{I}"),Er("\\isin","\\in"),Er("\\Kappa","\\mathrm{K}"),Er("\\larr","\\leftarrow"),Er("\\lArr","\\Leftarrow"),Er("\\Larr","\\Leftarrow"),Er("\\lrarr","\\leftrightarrow"),Er("\\lrArr","\\Leftrightarrow"),Er("\\Lrarr","\\Leftrightarrow"),Er("\\Mu","\\mathrm{M}"),Er("\\natnums","\\mathbb{N}"),Er("\\Nu","\\mathrm{N}"),Er("\\Omicron","\\mathrm{O}"),Er("\\plusmn","\\pm"),Er("\\rarr","\\rightarrow"),Er("\\rArr","\\Rightarrow"),Er("\\Rarr","\\Rightarrow"),Er("\\real","\\Re"),Er("\\reals","\\mathbb{R}"),Er("\\Reals","\\mathbb{R}"),Er("\\Rho","\\mathrm{P}"),Er("\\sdot","\\cdot"),Er("\\sect","\\S"),Er("\\spades","\\spadesuit"),Er("\\sub","\\subset"),Er("\\sube","\\subseteq"),Er("\\supe","\\supseteq"),Er("\\Tau","\\mathrm{T}"),Er("\\thetasym","\\vartheta"),Er("\\weierp","\\wp"),Er("\\Zeta","\\mathrm{Z}"),Er("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Er("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Er("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Er("\\bra","\\mathinner{\\langle{#1}|}"),Er("\\ket","\\mathinner{|{#1}\\rangle}"),Er("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Er("\\Bra","\\left\\langle#1\\right|"),Er("\\Ket","\\left|#1\\right\\rangle");var Vn=function(e){return function(t){var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=function(t){return function(r){e&&(r.macros.set("|",o),a.length&&r.macros.set("\\|",s));var i=t;!t&&a.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?a:n,numArgs:0}}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([].concat(i,h,r));return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}}};Er("\\bra@ket",Vn(!1)),Er("\\bra@set",Vn(!0)),Er("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Er("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Er("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Er("\\angln","{\\angl n}"),Er("\\blue","\\textcolor{##6495ed}{#1}"),Er("\\orange","\\textcolor{##ffa500}{#1}"),Er("\\pink","\\textcolor{##ff00af}{#1}"),Er("\\red","\\textcolor{##df0030}{#1}"),Er("\\green","\\textcolor{##28ae7b}{#1}"),Er("\\gray","\\textcolor{gray}{#1}"),Er("\\purple","\\textcolor{##9d38bd}{#1}"),Er("\\blueA","\\textcolor{##ccfaff}{#1}"),Er("\\blueB","\\textcolor{##80f6ff}{#1}"),Er("\\blueC","\\textcolor{##63d9ea}{#1}"),Er("\\blueD","\\textcolor{##11accd}{#1}"),Er("\\blueE","\\textcolor{##0c7f99}{#1}"),Er("\\tealA","\\textcolor{##94fff5}{#1}"),Er("\\tealB","\\textcolor{##26edd5}{#1}"),Er("\\tealC","\\textcolor{##01d1c1}{#1}"),Er("\\tealD","\\textcolor{##01a995}{#1}"),Er("\\tealE","\\textcolor{##208170}{#1}"),Er("\\greenA","\\textcolor{##b6ffb0}{#1}"),Er("\\greenB","\\textcolor{##8af281}{#1}"),Er("\\greenC","\\textcolor{##74cf70}{#1}"),Er("\\greenD","\\textcolor{##1fab54}{#1}"),Er("\\greenE","\\textcolor{##0d923f}{#1}"),Er("\\goldA","\\textcolor{##ffd0a9}{#1}"),Er("\\goldB","\\textcolor{##ffbb71}{#1}"),Er("\\goldC","\\textcolor{##ff9c39}{#1}"),Er("\\goldD","\\textcolor{##e07d10}{#1}"),Er("\\goldE","\\textcolor{##a75a05}{#1}"),Er("\\redA","\\textcolor{##fca9a9}{#1}"),Er("\\redB","\\textcolor{##ff8482}{#1}"),Er("\\redC","\\textcolor{##f9685d}{#1}"),Er("\\redD","\\textcolor{##e84d39}{#1}"),Er("\\redE","\\textcolor{##bc2612}{#1}"),Er("\\maroonA","\\textcolor{##ffbde0}{#1}"),Er("\\maroonB","\\textcolor{##ff92c6}{#1}"),Er("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Er("\\maroonD","\\textcolor{##ca337c}{#1}"),Er("\\maroonE","\\textcolor{##9e034e}{#1}"),Er("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Er("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Er("\\purpleC","\\textcolor{##aa87ff}{#1}"),Er("\\purpleD","\\textcolor{##7854ab}{#1}"),Er("\\purpleE","\\textcolor{##543b78}{#1}"),Er("\\mintA","\\textcolor{##f5f9e8}{#1}"),Er("\\mintB","\\textcolor{##edf2df}{#1}"),Er("\\mintC","\\textcolor{##e0e5cc}{#1}"),Er("\\grayA","\\textcolor{##f6f7f7}{#1}"),Er("\\grayB","\\textcolor{##f0f1f2}{#1}"),Er("\\grayC","\\textcolor{##e3e5e6}{#1}"),Er("\\grayD","\\textcolor{##d6d8da}{#1}"),Er("\\grayE","\\textcolor{##babec2}{#1}"),Er("\\grayF","\\textcolor{##888d93}{#1}"),Er("\\grayG","\\textcolor{##626569}{#1}"),Er("\\grayH","\\textcolor{##3b3e40}{#1}"),Er("\\grayI","\\textcolor{##21242c}{#1}"),Er("\\kaBlue","\\textcolor{##314453}{#1}"),Er("\\kaGreen","\\textcolor{##71B307}{#1}");var Gn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Un=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new On(Hn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new Rn(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.endGroups=function(){this.macros.endGroups()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.scanArgument=function(e){var t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken();var a=this.consumeArg(["]"]);n=a.tokens,r=a.end}else{var i=this.consumeArg();n=i.tokens,t=i.start,r=i.end}return this.pushToken(new Dr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArg=function(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,i=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new n("Extra }",a)}else if("EOF"===a.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:a}},t.consumeArgs=function(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;a<r.length;a++){var i=this.popToken();if(r[a]!==i.text)throw new n("Use of the macro doesn't match its definition",i)}}for(var o=[],s=0;s<e;s++)o.push(this.consumeArg(t&&t[s+1]).tokens);return o},t.expandOnce=function(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new n("Undefined control sequence: "+r);return this.pushToken(t),t}if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");var i=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new n("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new n("Not a valid argument number",l);var h;(h=i).splice.apply(h,[s,2].concat(o[+l.text-1]))}}}return this.pushTokens(i),i},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof Dr)return e.treatAsRelax&&(e.text="\\relax"),this.stack.pop()}throw new Error},t.expandMacro=function(e){return this.macros.has(e)?this.expandTokens([new Dr(e)]):void 0},t.expandTokens=function(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;){var n=this.expandOnce(!0);n instanceof Dr&&(n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(this.stack.pop()))}return t},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var n="function"==typeof t?t(this):t;if("string"==typeof n){var a=0;if(-1!==n.indexOf("#"))for(var i=n.replace(/##/g,"");-1!==i.indexOf("#"+(a+1));)++a;for(var o=new Rn(n,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:a}}return n},t.isDefined=function(e){return this.macros.has(e)||Nn.hasOwnProperty(e)||ae.math.hasOwnProperty(e)||ae.text.hasOwnProperty(e)||Gn.hasOwnProperty(e)},t.isExpandable=function(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Nn.hasOwnProperty(e)&&!Nn[e].primitive},e}(),Yn=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,Xn=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),Wn={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},_n={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},jn=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Un(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}},t.subparse=function(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new Dr("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r},t.parseExpression=function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&Nn[a.text]&&Nn[a.text].infix)break;var i=this.parseAtom(r);if(!i)break;"internal"!==i.type&&n.push(i)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)},t.handleInfixNodes=function(e){for(var t,r=-1,a=0;a<e.length;a++)if("infix"===e[a].type){if(-1!==r)throw new n("only one infix operator per group",e[a].token);r=a,t=e[a].replaceWith}if(-1!==r&&t){var i,o,s=e.slice(0,r),l=e.slice(r+1);return i=1===s.length&&"ordgroup"===s[0].type?s[0]:{type:"ordgroup",mode:this.mode,body:s},o=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===t?this.callFunction(t,[i,e[r],o],[]):this.callFunction(t,[i,o],[])]}return e},t.handleSupSubscript=function(e){var t=this.fetch(),r=t.text;this.consume(),this.consumeSpaces();var a=this.parseGroup(e);if(!a)throw new n("Expected group after '"+r+"'",t);return a},t.formatUnsupportedCmd=function(e){for(var t=[],r=0;r<e.length;r++)t.push({type:"textord",mode:"text",text:e[r]});var n={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[n]}},t.parseAtom=function(t){var r,a,i=this.parseGroup("atom",t);if("text"===this.mode)return i;for(;;){this.consumeSpaces();var o=this.fetch();if("\\limits"===o.text||"\\nolimits"===o.text){if(i&&"op"===i.type){var s="\\limits"===o.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!i||"operatorname"!==i.type)throw new n("Limit controls must follow a math operator",o);i.alwaysHandleSupSub&&(i.limits="\\limits"===o.text)}this.consume()}else if("^"===o.text){if(r)throw new n("Double superscript",o);r=this.handleSupSubscript("superscript")}else if("_"===o.text){if(a)throw new n("Double subscript",o);a=this.handleSupSubscript("subscript")}else if("'"===o.text){if(r)throw new n("Double superscript",o);var l={type:"textord",mode:this.mode,text:"\\prime"},h=[l];for(this.consume();"'"===this.fetch().text;)h.push(l),this.consume();"^"===this.fetch().text&&h.push(this.handleSupSubscript("superscript")),r={type:"ordgroup",mode:this.mode,body:h}}else{if(!Xn[o.text])break;var m=Xn[o.text],c=Yn.test(o.text);for(this.consume();;){var u=this.fetch().text;if(!Xn[u])break;if(Yn.test(u)!==c)break;this.consume(),m+=Xn[u]}var p=new e(m,this.settings).parse();c?a={type:"ordgroup",mode:"math",body:p}:r={type:"ordgroup",mode:"math",body:p}}}return r||a?{type:"supsub",mode:this.mode,base:i,sup:r,sub:a}:i},t.parseFunction=function(e,t){var r=this.fetch(),a=r.text,i=Nn[a];if(!i)return null;if(this.consume(),t&&"atom"!==t&&!i.allowedInArgument)throw new n("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new n("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new n("Can't use function '"+a+"' in math mode",r);var o=this.parseArguments(a,i),s=o.args,l=o.optArgs;return this.callFunction(a,s,l,r,e)},t.callFunction=function(e,t,r,a,i){var o={funcName:e,parser:this,token:a,breakOnTokenText:i},s=Nn[e];if(s&&s.handler)return s.handler(o,t,r);throw new n("No function handler for "+e)},t.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=[],i=[],o=0;o<r;o++){var s=t.argTypes&&t.argTypes[o],l=o<t.numOptionalArgs;(t.primitive&&null==s||"sqrt"===t.type&&1===o&&null==i[0])&&(s="primitive");var h=this.parseGroupOfType("argument to '"+e+"'",s,l);if(l)i.push(h);else{if(null==h)throw new n("Null argument, please report this as a bug");a.push(h)}}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,r){switch(t){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseArgumentGroup(r,t);case"hbox":var a=this.parseArgumentGroup(r,"text");return null!=a?{type:"styling",mode:a.mode,body:[a],style:"text"}:null;case"raw":var i=this.parseStringGroup("raw",r);return null!=i?{type:"raw",mode:"text",string:i.text}:null;case"primitive":if(r)throw new n("A primitive argument cannot be optional");var o=this.parseGroup(e);if(null==o)throw new n("Expected group as "+e,this.fetch());return o;case"original":case null:case void 0:return this.parseArgumentGroup(r);default:throw new n("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t){var r=this.gullet.scanArgument(t);if(null==r)return null;for(var n,a="";"EOF"!==(n=this.fetch()).text;)a+=n.text,this.consume();return this.consume(),r.text=a,r},t.parseRegexGroup=function(e,t){for(var r,a=this.fetch(),i=a,o="";"EOF"!==(r=this.fetch()).text&&e.test(o+r.text);)o+=(i=r).text,this.consume();if(""===o)throw new n("Invalid "+t+": '"+a.text+"'",a);return a.range(i,o)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(null==t)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new n("Invalid color: '"+t.text+"'",t);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},t.parseSizeGroup=function(e){var t,r=!1;if(this.gullet.consumeSpaces(),!(t=e||"{"===this.gullet.future().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!a)throw new n("Invalid size: '"+t.text+"'",t);var i={number:+(a[1]+a[2]),unit:a[3]};if(!P(i))throw new n("Invalid unit: '"+i.unit+"'",t);return{type:"size",mode:this.mode,value:i,isBlank:r}},t.parseUrlGroup=function(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var t=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),null==t)return null;var r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseArgumentGroup=function(e,t){var r=this.gullet.scanArgument(e);if(null==r)return null;var n=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();var a=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var i={type:"ordgroup",mode:this.mode,loc:r.loc,body:a};return t&&this.switchMode(n),i},t.parseGroup=function(e,t){var r,a=this.fetch(),i=a.text;if("{"===i||"\\begingroup"===i){this.consume();var o="{"===i?"}":"\\endgroup";this.gullet.beginGroup();var s=this.parseExpression(!1,o),l=this.fetch();this.expect(o),this.gullet.endGroup(),r={type:"ordgroup",mode:this.mode,loc:Lr.range(a,l),body:s,semisimple:"\\begingroup"===i||void 0}}else if(null==(r=this.parseFunction(t,e)||this.parseSymbol())&&"\\"===i[0]&&!Gn.hasOwnProperty(i)){if(this.settings.throwOnError)throw new n("Undefined control sequence: "+i,a);r=this.formatUnsupportedCmd(i),this.consume()}return r},t.formLigatures=function(e){for(var t=e.length-1,r=0;r<t;++r){var n=e[r],a=n.text;"-"===a&&"-"===e[r+1].text&&(r+1<t&&"-"===e[r+2].text?(e.splice(r,3,{type:"textord",mode:"text",loc:Lr.range(n,e[r+2]),text:"---"}),t-=2):(e.splice(r,2,{type:"textord",mode:"text",loc:Lr.range(n,e[r+1]),text:"--"}),t-=1)),"'"!==a&&"`"!==a||e[r+1].text!==a||(e.splice(r,2,{type:"textord",mode:"text",loc:Lr.range(n,e[r+1]),text:a+a}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var r=t.slice(5),a="*"===r.charAt(0);if(a&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new n("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:a}}_n.hasOwnProperty(t[0])&&!ae[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=_n[t[0]]+t.substr(1));var i,o=In.exec(t);if(o&&("i"===(t=t.substring(0,o.index))?t="\u0131":"j"===t&&(t="\u0237")),ae[this.mode][t]){this.settings.strict&&"math"===this.mode&&Ee.indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=ae[this.mode][t].group,h=Lr.range(e);if(te.hasOwnProperty(l)){var m=l;s={type:"atom",mode:this.mode,family:m,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(S(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:Lr.range(e),text:t}}if(this.consume(),o)for(var c=0;c<o[0].length;c++){var u=o[0][c];if(!Wn[u])throw new n("Unknown accent ' "+u+"'",e);var p=Wn[u][this.mode]||Wn[u].text;if(!p)throw new n("Accent "+u+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:Lr.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();jn.endOfExpression=["}","\\endgroup","\\end","\\right","&"];var $n=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new jn(e,t);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(delete r.gullet.macros.current["\\current@color"],delete r.gullet.macros.current["\\color"],r.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new n("\\tag works only in display equations");a=[{type:"tag",mode:"text",body:a,tag:r.subparse([new Dr("\\df@tag")])}]}return a},Zn=function(e,t,r){t.textContent="";var n=Jn(e,r).toNode();t.appendChild(n)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Zn=function(){throw new n("KaTeX doesn't work in quirks mode.")});var Kn=function(e,t,r){if(r.throwOnError||!(e instanceof n))throw e;var a=Ke.makeSpan(["katex-error"],[new Z(t)]);return a.setAttribute("title",e.toString()),a.setAttribute("style","color:"+r.errorColor),a},Jn=function(e,t){var r=new c(t);try{var n=$n(e,r);return Lt(n,e,r)}catch(t){return Kn(t,e,r)}},Qn={version:"0.16.0",render:Zn,renderToString:function(e,t){return Jn(e,t).toMarkup()},ParseError:n,SETTINGS_SCHEMA:h,__parse:function(e,t){var r=new c(t);return $n(e,r)},__renderToDomTree:Jn,__renderToHTMLTree:function(e,t){var r=new c(t);try{return function(e,t,r){var n=St(e,Ht(r)),a=Ke.makeSpan(["katex"],[n]);return Et(a,r)}($n(e,r),0,r)}catch(t){return Kn(t,e,r)}},__setFontMetrics:function(e,t){T[e]=t},__defineSymbol:ie,__defineMacro:Er,__domTree:{Span:W,Anchor:_,SymbolNode:Z,SvgNode:K,PathNode:J,LineNode:Q}};return t=t.default}()})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Wn}});class r{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;let n,o,s="KaTeX parse error: "+e;const i=t&&t.loc;if(i&&i.start<=i.end){const e=i.lexer.input;n=i.start,o=i.end,n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": ";const t=e.slice(n,o).replace(/[^]/g,"$&\u0332");let r,a;r=n>15?"\u2026"+e.slice(n-15,n):e.slice(0,n),a=o+15<e.length?e.slice(o,o+15)+"\u2026":e.slice(o),s+=r+t+a}const a=new Error(s);return a.name="ParseError",a.__proto__=r.prototype,a.position=n,null!=n&&null!=o&&(a.length=o-n),a.rawMessage=e,a}}r.prototype.__proto__=Error.prototype;var n=r;const o=/([A-Z])/g,s={"&":"&",">":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;const a=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?a(e.body[0]):e:"font"===e.type?a(e.body):e};var l={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(i,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:a,isCharacterBox:function(e){const t=a(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}};const h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function c(e){if(e.default)return e.default;const t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class m{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(const t in h)if(h.hasOwnProperty(t)){const r=h[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:c(r)}}reportNonstrict(e,t,r){let o=this.strict;if("function"==typeof o&&(o=o(e,t,r)),o&&"ignore"!==o){if(!0===o||"error"===o)throw new n("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===o?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+o+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){let n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if(e.url&&!e.protocol){const t=l.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}class p{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return u[d[this.id]]}sub(){return u[g[this.id]]}fracNum(){return u[f[this.id]]}fracDen(){return u[b[this.id]]}cramp(){return u[y[this.id]]}text(){return u[x[this.id]]}isTight(){return this.size>=2}}const u=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],d=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],f=[2,3,4,5,6,7,6,7],b=[3,3,5,5,7,7,7,7],y=[1,1,3,3,5,5,7,7],x=[0,1,2,3,2,3,2,3];var w={DISPLAY:u[0],TEXT:u[2],SCRIPT:u[4],SCRIPTSCRIPT:u[6]};const v=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];const k=[];function S(e){for(let t=0;t<k.length;t+=2)if(e>=k[t]&&e<=k[t+1])return!0;return!1}v.forEach((e=>e.blocks.forEach((e=>k.push(...e)))));const M=80,z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};var A={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}};const T={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},B={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function C(e,t,r){if(!A[t])throw new Error("Font metrics not found for font: "+t+".");let n=e.charCodeAt(0),o=A[t][n];if(!o&&e[0]in B&&(n=B[e[0]].charCodeAt(0),o=A[t][n]),o||"text"!==r||S(n)&&(o=A[t][77]),o)return{depth:o[0],height:o[1],italic:o[2],skew:o[3],width:o[4]}}const N={};const q=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],I=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],R=function(e,t){return t.size<2?e:q[e-1][t.size-1]};class H{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||H.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=I[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){const t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(const r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new H(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:R(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:I[e-1]})}havingBaseStyle(e){e=e||this.style.text();const t=R(H.BASESIZE,e);return this.size===t&&this.textSize===H.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){let e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==H.BASESIZE?["sizing","reset-size"+this.size,"size"+H.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){let t;if(t=e>=5?0:e>=3?1:2,!N[t]){const e=N[t]={cssEmPerMu:T.quad[t]/18};for(const r in T)T.hasOwnProperty(r)&&(e[r]=T[r][t])}return N[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}H.BASESIZE=6;var O=H;const E={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},L={ex:!0,em:!0,mu:!0},D=function(e){return"string"!=typeof e&&(e=e.unit),e in E||e in L||"ex"===e},V=function(e,t){let r;if(e.unit in E)r=E[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{let o;if(o=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=o.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n("Invalid unit: '"+e.unit+"'");r=o.fontMetrics().quad}o!==t&&(r*=o.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},P=function(e){return+e.toFixed(4)+"em"},F=function(e){return e.filter((e=>e)).join(" ")},G=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");const e=t.getColor();e&&(this.style.color=e)}},U=function(e){const t=document.createElement(e);t.className=F(this.classes);for(const e in this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)this.attributes.hasOwnProperty(e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},Y=/[\s"'>/=\x00-\x1f]/,X=function(e){let t="<"+e;this.classes.length&&(t+=' class="'+l.escape(F(this.classes))+'"');let r="";for(const e in this.style)this.style.hasOwnProperty(e)&&(r+=l.hyphenate(e)+":"+this.style[e]+";");r&&(t+=' style="'+l.escape(r)+'"');for(const e in this.attributes)if(this.attributes.hasOwnProperty(e)){if(Y.test(e))throw new n("Invalid attribute name '"+e+"'");t+=" "+e+'="'+l.escape(this.attributes[e])+'"'}t+=">";for(let e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t+="</"+e+">",t};class W{constructor(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,G.call(this,e,r,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return U.call(this,"span")}toMarkup(){return X.call(this,"span")}}class _{constructor(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,G.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return U.call(this,"a")}toMarkup(){return X.call(this,"a")}}class j{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(const t in this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){let e='<img src="'+l.escape(this.src)+'" alt="'+l.escape(this.alt)+'"',t="";for(const e in this.style)this.style.hasOwnProperty(e)&&(t+=l.hyphenate(e)+":"+this.style[e]+";");return t&&(e+=' style="'+l.escape(t)+'"'),e+="'/>",e}}const $={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};class Z{constructor(e,t,r,n,o,s,i,a){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=o||0,this.width=s||0,this.classes=i||[],this.style=a||{},this.maxFontSize=0;const l=function(e){for(let t=0;t<v.length;t++){const r=v[t];for(let t=0;t<r.blocks.length;t++){const n=r.blocks[t];if(e>=n[0]&&e<=n[1])return r.name}}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=$[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createTextNode(this.text);let t=null;this.italic>0&&(t=document.createElement("span"),t.style.marginRight=P(this.italic)),this.classes.length>0&&(t=t||document.createElement("span"),t.className=F(this.classes));for(const e in this.style)this.style.hasOwnProperty(e)&&(t=t||document.createElement("span"),t.style[e]=this.style[e]);return t?(t.appendChild(e),t):e}toMarkup(){let e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=l.escape(F(this.classes)),t+='"');let r="";this.italic>0&&(r+="margin-right:"+this.italic+"em;");for(const e in this.style)this.style.hasOwnProperty(e)&&(r+=l.hyphenate(e)+":"+this.style[e]+";");r&&(e=!0,t+=' style="'+l.escape(r)+'"');const n=l.escape(this.text);return e?(t+=">",t+=n,t+="</span>",t):n}}class K{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(let t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){let e='<svg xmlns="http://www.w3.org/2000/svg"';for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="'+l.escape(this.attributes[t])+'"');e+=">";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e+="</svg>",e}}class J{constructor(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}toNode(){const e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",z[this.pathName]),e}toMarkup(){return this.alternate?'<path d="'+l.escape(this.alternate)+'"/>':'<path d="'+l.escape(z[this.pathName])+'"/>'}}class Q{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){const e=document.createElementNS("http://www.w3.org/2000/svg","line");for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){let e="<line";for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="'+l.escape(this.attributes[t])+'"');return e+="/>",e}}function ee(e){if(e instanceof Z)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}const te={bin:1,close:1,inner:1,open:1,punct:1,rel:1},re={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ne={math:{},text:{}};var oe=ne;function se(e,t,r,n,o,s){ne[e][o]={font:t,group:r,replace:n},s&&n&&(ne[e][n]=ne[e][o])}const ie="math",ae="text",le="main",he="ams",ce="accent-token",me="bin",pe="close",ue="inner",de="mathord",ge="op-token",fe="open",be="punct",ye="rel",xe="spacing",we="textord";se(ie,le,ye,"\u2261","\\equiv",!0),se(ie,le,ye,"\u227a","\\prec",!0),se(ie,le,ye,"\u227b","\\succ",!0),se(ie,le,ye,"\u223c","\\sim",!0),se(ie,le,ye,"\u22a5","\\perp"),se(ie,le,ye,"\u2aaf","\\preceq",!0),se(ie,le,ye,"\u2ab0","\\succeq",!0),se(ie,le,ye,"\u2243","\\simeq",!0),se(ie,le,ye,"\u2223","\\mid",!0),se(ie,le,ye,"\u226a","\\ll",!0),se(ie,le,ye,"\u226b","\\gg",!0),se(ie,le,ye,"\u224d","\\asymp",!0),se(ie,le,ye,"\u2225","\\parallel"),se(ie,le,ye,"\u22c8","\\bowtie",!0),se(ie,le,ye,"\u2323","\\smile",!0),se(ie,le,ye,"\u2291","\\sqsubseteq",!0),se(ie,le,ye,"\u2292","\\sqsupseteq",!0),se(ie,le,ye,"\u2250","\\doteq",!0),se(ie,le,ye,"\u2322","\\frown",!0),se(ie,le,ye,"\u220b","\\ni",!0),se(ie,le,ye,"\u221d","\\propto",!0),se(ie,le,ye,"\u22a2","\\vdash",!0),se(ie,le,ye,"\u22a3","\\dashv",!0),se(ie,le,ye,"\u220b","\\owns"),se(ie,le,be,".","\\ldotp"),se(ie,le,be,"\u22c5","\\cdotp"),se(ie,le,we,"#","\\#"),se(ae,le,we,"#","\\#"),se(ie,le,we,"&","\\&"),se(ae,le,we,"&","\\&"),se(ie,le,we,"\u2135","\\aleph",!0),se(ie,le,we,"\u2200","\\forall",!0),se(ie,le,we,"\u210f","\\hbar",!0),se(ie,le,we,"\u2203","\\exists",!0),se(ie,le,we,"\u2207","\\nabla",!0),se(ie,le,we,"\u266d","\\flat",!0),se(ie,le,we,"\u2113","\\ell",!0),se(ie,le,we,"\u266e","\\natural",!0),se(ie,le,we,"\u2663","\\clubsuit",!0),se(ie,le,we,"\u2118","\\wp",!0),se(ie,le,we,"\u266f","\\sharp",!0),se(ie,le,we,"\u2662","\\diamondsuit",!0),se(ie,le,we,"\u211c","\\Re",!0),se(ie,le,we,"\u2661","\\heartsuit",!0),se(ie,le,we,"\u2111","\\Im",!0),se(ie,le,we,"\u2660","\\spadesuit",!0),se(ie,le,we,"\xa7","\\S",!0),se(ae,le,we,"\xa7","\\S"),se(ie,le,we,"\xb6","\\P",!0),se(ae,le,we,"\xb6","\\P"),se(ie,le,we,"\u2020","\\dag"),se(ae,le,we,"\u2020","\\dag"),se(ae,le,we,"\u2020","\\textdagger"),se(ie,le,we,"\u2021","\\ddag"),se(ae,le,we,"\u2021","\\ddag"),se(ae,le,we,"\u2021","\\textdaggerdbl"),se(ie,le,pe,"\u23b1","\\rmoustache",!0),se(ie,le,fe,"\u23b0","\\lmoustache",!0),se(ie,le,pe,"\u27ef","\\rgroup",!0),se(ie,le,fe,"\u27ee","\\lgroup",!0),se(ie,le,me,"\u2213","\\mp",!0),se(ie,le,me,"\u2296","\\ominus",!0),se(ie,le,me,"\u228e","\\uplus",!0),se(ie,le,me,"\u2293","\\sqcap",!0),se(ie,le,me,"\u2217","\\ast"),se(ie,le,me,"\u2294","\\sqcup",!0),se(ie,le,me,"\u25ef","\\bigcirc",!0),se(ie,le,me,"\u2219","\\bullet",!0),se(ie,le,me,"\u2021","\\ddagger"),se(ie,le,me,"\u2240","\\wr",!0),se(ie,le,me,"\u2a3f","\\amalg"),se(ie,le,me,"&","\\And"),se(ie,le,ye,"\u27f5","\\longleftarrow",!0),se(ie,le,ye,"\u21d0","\\Leftarrow",!0),se(ie,le,ye,"\u27f8","\\Longleftarrow",!0),se(ie,le,ye,"\u27f6","\\longrightarrow",!0),se(ie,le,ye,"\u21d2","\\Rightarrow",!0),se(ie,le,ye,"\u27f9","\\Longrightarrow",!0),se(ie,le,ye,"\u2194","\\leftrightarrow",!0),se(ie,le,ye,"\u27f7","\\longleftrightarrow",!0),se(ie,le,ye,"\u21d4","\\Leftrightarrow",!0),se(ie,le,ye,"\u27fa","\\Longleftrightarrow",!0),se(ie,le,ye,"\u21a6","\\mapsto",!0),se(ie,le,ye,"\u27fc","\\longmapsto",!0),se(ie,le,ye,"\u2197","\\nearrow",!0),se(ie,le,ye,"\u21a9","\\hookleftarrow",!0),se(ie,le,ye,"\u21aa","\\hookrightarrow",!0),se(ie,le,ye,"\u2198","\\searrow",!0),se(ie,le,ye,"\u21bc","\\leftharpoonup",!0),se(ie,le,ye,"\u21c0","\\rightharpoonup",!0),se(ie,le,ye,"\u2199","\\swarrow",!0),se(ie,le,ye,"\u21bd","\\leftharpoondown",!0),se(ie,le,ye,"\u21c1","\\rightharpoondown",!0),se(ie,le,ye,"\u2196","\\nwarrow",!0),se(ie,le,ye,"\u21cc","\\rightleftharpoons",!0),se(ie,he,ye,"\u226e","\\nless",!0),se(ie,he,ye,"\ue010","\\@nleqslant"),se(ie,he,ye,"\ue011","\\@nleqq"),se(ie,he,ye,"\u2a87","\\lneq",!0),se(ie,he,ye,"\u2268","\\lneqq",!0),se(ie,he,ye,"\ue00c","\\@lvertneqq"),se(ie,he,ye,"\u22e6","\\lnsim",!0),se(ie,he,ye,"\u2a89","\\lnapprox",!0),se(ie,he,ye,"\u2280","\\nprec",!0),se(ie,he,ye,"\u22e0","\\npreceq",!0),se(ie,he,ye,"\u22e8","\\precnsim",!0),se(ie,he,ye,"\u2ab9","\\precnapprox",!0),se(ie,he,ye,"\u2241","\\nsim",!0),se(ie,he,ye,"\ue006","\\@nshortmid"),se(ie,he,ye,"\u2224","\\nmid",!0),se(ie,he,ye,"\u22ac","\\nvdash",!0),se(ie,he,ye,"\u22ad","\\nvDash",!0),se(ie,he,ye,"\u22ea","\\ntriangleleft"),se(ie,he,ye,"\u22ec","\\ntrianglelefteq",!0),se(ie,he,ye,"\u228a","\\subsetneq",!0),se(ie,he,ye,"\ue01a","\\@varsubsetneq"),se(ie,he,ye,"\u2acb","\\subsetneqq",!0),se(ie,he,ye,"\ue017","\\@varsubsetneqq"),se(ie,he,ye,"\u226f","\\ngtr",!0),se(ie,he,ye,"\ue00f","\\@ngeqslant"),se(ie,he,ye,"\ue00e","\\@ngeqq"),se(ie,he,ye,"\u2a88","\\gneq",!0),se(ie,he,ye,"\u2269","\\gneqq",!0),se(ie,he,ye,"\ue00d","\\@gvertneqq"),se(ie,he,ye,"\u22e7","\\gnsim",!0),se(ie,he,ye,"\u2a8a","\\gnapprox",!0),se(ie,he,ye,"\u2281","\\nsucc",!0),se(ie,he,ye,"\u22e1","\\nsucceq",!0),se(ie,he,ye,"\u22e9","\\succnsim",!0),se(ie,he,ye,"\u2aba","\\succnapprox",!0),se(ie,he,ye,"\u2246","\\ncong",!0),se(ie,he,ye,"\ue007","\\@nshortparallel"),se(ie,he,ye,"\u2226","\\nparallel",!0),se(ie,he,ye,"\u22af","\\nVDash",!0),se(ie,he,ye,"\u22eb","\\ntriangleright"),se(ie,he,ye,"\u22ed","\\ntrianglerighteq",!0),se(ie,he,ye,"\ue018","\\@nsupseteqq"),se(ie,he,ye,"\u228b","\\supsetneq",!0),se(ie,he,ye,"\ue01b","\\@varsupsetneq"),se(ie,he,ye,"\u2acc","\\supsetneqq",!0),se(ie,he,ye,"\ue019","\\@varsupsetneqq"),se(ie,he,ye,"\u22ae","\\nVdash",!0),se(ie,he,ye,"\u2ab5","\\precneqq",!0),se(ie,he,ye,"\u2ab6","\\succneqq",!0),se(ie,he,ye,"\ue016","\\@nsubseteqq"),se(ie,he,me,"\u22b4","\\unlhd"),se(ie,he,me,"\u22b5","\\unrhd"),se(ie,he,ye,"\u219a","\\nleftarrow",!0),se(ie,he,ye,"\u219b","\\nrightarrow",!0),se(ie,he,ye,"\u21cd","\\nLeftarrow",!0),se(ie,he,ye,"\u21cf","\\nRightarrow",!0),se(ie,he,ye,"\u21ae","\\nleftrightarrow",!0),se(ie,he,ye,"\u21ce","\\nLeftrightarrow",!0),se(ie,he,ye,"\u25b3","\\vartriangle"),se(ie,he,we,"\u210f","\\hslash"),se(ie,he,we,"\u25bd","\\triangledown"),se(ie,he,we,"\u25ca","\\lozenge"),se(ie,he,we,"\u24c8","\\circledS"),se(ie,he,we,"\xae","\\circledR"),se(ae,he,we,"\xae","\\circledR"),se(ie,he,we,"\u2221","\\measuredangle",!0),se(ie,he,we,"\u2204","\\nexists"),se(ie,he,we,"\u2127","\\mho"),se(ie,he,we,"\u2132","\\Finv",!0),se(ie,he,we,"\u2141","\\Game",!0),se(ie,he,we,"\u2035","\\backprime"),se(ie,he,we,"\u25b2","\\blacktriangle"),se(ie,he,we,"\u25bc","\\blacktriangledown"),se(ie,he,we,"\u25a0","\\blacksquare"),se(ie,he,we,"\u29eb","\\blacklozenge"),se(ie,he,we,"\u2605","\\bigstar"),se(ie,he,we,"\u2222","\\sphericalangle",!0),se(ie,he,we,"\u2201","\\complement",!0),se(ie,he,we,"\xf0","\\eth",!0),se(ae,le,we,"\xf0","\xf0"),se(ie,he,we,"\u2571","\\diagup"),se(ie,he,we,"\u2572","\\diagdown"),se(ie,he,we,"\u25a1","\\square"),se(ie,he,we,"\u25a1","\\Box"),se(ie,he,we,"\u25ca","\\Diamond"),se(ie,he,we,"\xa5","\\yen",!0),se(ae,he,we,"\xa5","\\yen",!0),se(ie,he,we,"\u2713","\\checkmark",!0),se(ae,he,we,"\u2713","\\checkmark"),se(ie,he,we,"\u2136","\\beth",!0),se(ie,he,we,"\u2138","\\daleth",!0),se(ie,he,we,"\u2137","\\gimel",!0),se(ie,he,we,"\u03dd","\\digamma",!0),se(ie,he,we,"\u03f0","\\varkappa"),se(ie,he,fe,"\u250c","\\@ulcorner",!0),se(ie,he,pe,"\u2510","\\@urcorner",!0),se(ie,he,fe,"\u2514","\\@llcorner",!0),se(ie,he,pe,"\u2518","\\@lrcorner",!0),se(ie,he,ye,"\u2266","\\leqq",!0),se(ie,he,ye,"\u2a7d","\\leqslant",!0),se(ie,he,ye,"\u2a95","\\eqslantless",!0),se(ie,he,ye,"\u2272","\\lesssim",!0),se(ie,he,ye,"\u2a85","\\lessapprox",!0),se(ie,he,ye,"\u224a","\\approxeq",!0),se(ie,he,me,"\u22d6","\\lessdot"),se(ie,he,ye,"\u22d8","\\lll",!0),se(ie,he,ye,"\u2276","\\lessgtr",!0),se(ie,he,ye,"\u22da","\\lesseqgtr",!0),se(ie,he,ye,"\u2a8b","\\lesseqqgtr",!0),se(ie,he,ye,"\u2251","\\doteqdot"),se(ie,he,ye,"\u2253","\\risingdotseq",!0),se(ie,he,ye,"\u2252","\\fallingdotseq",!0),se(ie,he,ye,"\u223d","\\backsim",!0),se(ie,he,ye,"\u22cd","\\backsimeq",!0),se(ie,he,ye,"\u2ac5","\\subseteqq",!0),se(ie,he,ye,"\u22d0","\\Subset",!0),se(ie,he,ye,"\u228f","\\sqsubset",!0),se(ie,he,ye,"\u227c","\\preccurlyeq",!0),se(ie,he,ye,"\u22de","\\curlyeqprec",!0),se(ie,he,ye,"\u227e","\\precsim",!0),se(ie,he,ye,"\u2ab7","\\precapprox",!0),se(ie,he,ye,"\u22b2","\\vartriangleleft"),se(ie,he,ye,"\u22b4","\\trianglelefteq"),se(ie,he,ye,"\u22a8","\\vDash",!0),se(ie,he,ye,"\u22aa","\\Vvdash",!0),se(ie,he,ye,"\u2323","\\smallsmile"),se(ie,he,ye,"\u2322","\\smallfrown"),se(ie,he,ye,"\u224f","\\bumpeq",!0),se(ie,he,ye,"\u224e","\\Bumpeq",!0),se(ie,he,ye,"\u2267","\\geqq",!0),se(ie,he,ye,"\u2a7e","\\geqslant",!0),se(ie,he,ye,"\u2a96","\\eqslantgtr",!0),se(ie,he,ye,"\u2273","\\gtrsim",!0),se(ie,he,ye,"\u2a86","\\gtrapprox",!0),se(ie,he,me,"\u22d7","\\gtrdot"),se(ie,he,ye,"\u22d9","\\ggg",!0),se(ie,he,ye,"\u2277","\\gtrless",!0),se(ie,he,ye,"\u22db","\\gtreqless",!0),se(ie,he,ye,"\u2a8c","\\gtreqqless",!0),se(ie,he,ye,"\u2256","\\eqcirc",!0),se(ie,he,ye,"\u2257","\\circeq",!0),se(ie,he,ye,"\u225c","\\triangleq",!0),se(ie,he,ye,"\u223c","\\thicksim"),se(ie,he,ye,"\u2248","\\thickapprox"),se(ie,he,ye,"\u2ac6","\\supseteqq",!0),se(ie,he,ye,"\u22d1","\\Supset",!0),se(ie,he,ye,"\u2290","\\sqsupset",!0),se(ie,he,ye,"\u227d","\\succcurlyeq",!0),se(ie,he,ye,"\u22df","\\curlyeqsucc",!0),se(ie,he,ye,"\u227f","\\succsim",!0),se(ie,he,ye,"\u2ab8","\\succapprox",!0),se(ie,he,ye,"\u22b3","\\vartriangleright"),se(ie,he,ye,"\u22b5","\\trianglerighteq"),se(ie,he,ye,"\u22a9","\\Vdash",!0),se(ie,he,ye,"\u2223","\\shortmid"),se(ie,he,ye,"\u2225","\\shortparallel"),se(ie,he,ye,"\u226c","\\between",!0),se(ie,he,ye,"\u22d4","\\pitchfork",!0),se(ie,he,ye,"\u221d","\\varpropto"),se(ie,he,ye,"\u25c0","\\blacktriangleleft"),se(ie,he,ye,"\u2234","\\therefore",!0),se(ie,he,ye,"\u220d","\\backepsilon"),se(ie,he,ye,"\u25b6","\\blacktriangleright"),se(ie,he,ye,"\u2235","\\because",!0),se(ie,he,ye,"\u22d8","\\llless"),se(ie,he,ye,"\u22d9","\\gggtr"),se(ie,he,me,"\u22b2","\\lhd"),se(ie,he,me,"\u22b3","\\rhd"),se(ie,he,ye,"\u2242","\\eqsim",!0),se(ie,le,ye,"\u22c8","\\Join"),se(ie,he,ye,"\u2251","\\Doteq",!0),se(ie,he,me,"\u2214","\\dotplus",!0),se(ie,he,me,"\u2216","\\smallsetminus"),se(ie,he,me,"\u22d2","\\Cap",!0),se(ie,he,me,"\u22d3","\\Cup",!0),se(ie,he,me,"\u2a5e","\\doublebarwedge",!0),se(ie,he,me,"\u229f","\\boxminus",!0),se(ie,he,me,"\u229e","\\boxplus",!0),se(ie,he,me,"\u22c7","\\divideontimes",!0),se(ie,he,me,"\u22c9","\\ltimes",!0),se(ie,he,me,"\u22ca","\\rtimes",!0),se(ie,he,me,"\u22cb","\\leftthreetimes",!0),se(ie,he,me,"\u22cc","\\rightthreetimes",!0),se(ie,he,me,"\u22cf","\\curlywedge",!0),se(ie,he,me,"\u22ce","\\curlyvee",!0),se(ie,he,me,"\u229d","\\circleddash",!0),se(ie,he,me,"\u229b","\\circledast",!0),se(ie,he,me,"\u22c5","\\centerdot"),se(ie,he,me,"\u22ba","\\intercal",!0),se(ie,he,me,"\u22d2","\\doublecap"),se(ie,he,me,"\u22d3","\\doublecup"),se(ie,he,me,"\u22a0","\\boxtimes",!0),se(ie,he,ye,"\u21e2","\\dashrightarrow",!0),se(ie,he,ye,"\u21e0","\\dashleftarrow",!0),se(ie,he,ye,"\u21c7","\\leftleftarrows",!0),se(ie,he,ye,"\u21c6","\\leftrightarrows",!0),se(ie,he,ye,"\u21da","\\Lleftarrow",!0),se(ie,he,ye,"\u219e","\\twoheadleftarrow",!0),se(ie,he,ye,"\u21a2","\\leftarrowtail",!0),se(ie,he,ye,"\u21ab","\\looparrowleft",!0),se(ie,he,ye,"\u21cb","\\leftrightharpoons",!0),se(ie,he,ye,"\u21b6","\\curvearrowleft",!0),se(ie,he,ye,"\u21ba","\\circlearrowleft",!0),se(ie,he,ye,"\u21b0","\\Lsh",!0),se(ie,he,ye,"\u21c8","\\upuparrows",!0),se(ie,he,ye,"\u21bf","\\upharpoonleft",!0),se(ie,he,ye,"\u21c3","\\downharpoonleft",!0),se(ie,le,ye,"\u22b6","\\origof",!0),se(ie,le,ye,"\u22b7","\\imageof",!0),se(ie,he,ye,"\u22b8","\\multimap",!0),se(ie,he,ye,"\u21ad","\\leftrightsquigarrow",!0),se(ie,he,ye,"\u21c9","\\rightrightarrows",!0),se(ie,he,ye,"\u21c4","\\rightleftarrows",!0),se(ie,he,ye,"\u21a0","\\twoheadrightarrow",!0),se(ie,he,ye,"\u21a3","\\rightarrowtail",!0),se(ie,he,ye,"\u21ac","\\looparrowright",!0),se(ie,he,ye,"\u21b7","\\curvearrowright",!0),se(ie,he,ye,"\u21bb","\\circlearrowright",!0),se(ie,he,ye,"\u21b1","\\Rsh",!0),se(ie,he,ye,"\u21ca","\\downdownarrows",!0),se(ie,he,ye,"\u21be","\\upharpoonright",!0),se(ie,he,ye,"\u21c2","\\downharpoonright",!0),se(ie,he,ye,"\u21dd","\\rightsquigarrow",!0),se(ie,he,ye,"\u21dd","\\leadsto"),se(ie,he,ye,"\u21db","\\Rrightarrow",!0),se(ie,he,ye,"\u21be","\\restriction"),se(ie,le,we,"\u2018","`"),se(ie,le,we,"$","\\$"),se(ae,le,we,"$","\\$"),se(ae,le,we,"$","\\textdollar"),se(ie,le,we,"%","\\%"),se(ae,le,we,"%","\\%"),se(ie,le,we,"_","\\_"),se(ae,le,we,"_","\\_"),se(ae,le,we,"_","\\textunderscore"),se(ie,le,we,"\u2220","\\angle",!0),se(ie,le,we,"\u221e","\\infty",!0),se(ie,le,we,"\u2032","\\prime"),se(ie,le,we,"\u25b3","\\triangle"),se(ie,le,we,"\u0393","\\Gamma",!0),se(ie,le,we,"\u0394","\\Delta",!0),se(ie,le,we,"\u0398","\\Theta",!0),se(ie,le,we,"\u039b","\\Lambda",!0),se(ie,le,we,"\u039e","\\Xi",!0),se(ie,le,we,"\u03a0","\\Pi",!0),se(ie,le,we,"\u03a3","\\Sigma",!0),se(ie,le,we,"\u03a5","\\Upsilon",!0),se(ie,le,we,"\u03a6","\\Phi",!0),se(ie,le,we,"\u03a8","\\Psi",!0),se(ie,le,we,"\u03a9","\\Omega",!0),se(ie,le,we,"A","\u0391"),se(ie,le,we,"B","\u0392"),se(ie,le,we,"E","\u0395"),se(ie,le,we,"Z","\u0396"),se(ie,le,we,"H","\u0397"),se(ie,le,we,"I","\u0399"),se(ie,le,we,"K","\u039a"),se(ie,le,we,"M","\u039c"),se(ie,le,we,"N","\u039d"),se(ie,le,we,"O","\u039f"),se(ie,le,we,"P","\u03a1"),se(ie,le,we,"T","\u03a4"),se(ie,le,we,"X","\u03a7"),se(ie,le,we,"\xac","\\neg",!0),se(ie,le,we,"\xac","\\lnot"),se(ie,le,we,"\u22a4","\\top"),se(ie,le,we,"\u22a5","\\bot"),se(ie,le,we,"\u2205","\\emptyset"),se(ie,he,we,"\u2205","\\varnothing"),se(ie,le,de,"\u03b1","\\alpha",!0),se(ie,le,de,"\u03b2","\\beta",!0),se(ie,le,de,"\u03b3","\\gamma",!0),se(ie,le,de,"\u03b4","\\delta",!0),se(ie,le,de,"\u03f5","\\epsilon",!0),se(ie,le,de,"\u03b6","\\zeta",!0),se(ie,le,de,"\u03b7","\\eta",!0),se(ie,le,de,"\u03b8","\\theta",!0),se(ie,le,de,"\u03b9","\\iota",!0),se(ie,le,de,"\u03ba","\\kappa",!0),se(ie,le,de,"\u03bb","\\lambda",!0),se(ie,le,de,"\u03bc","\\mu",!0),se(ie,le,de,"\u03bd","\\nu",!0),se(ie,le,de,"\u03be","\\xi",!0),se(ie,le,de,"\u03bf","\\omicron",!0),se(ie,le,de,"\u03c0","\\pi",!0),se(ie,le,de,"\u03c1","\\rho",!0),se(ie,le,de,"\u03c3","\\sigma",!0),se(ie,le,de,"\u03c4","\\tau",!0),se(ie,le,de,"\u03c5","\\upsilon",!0),se(ie,le,de,"\u03d5","\\phi",!0),se(ie,le,de,"\u03c7","\\chi",!0),se(ie,le,de,"\u03c8","\\psi",!0),se(ie,le,de,"\u03c9","\\omega",!0),se(ie,le,de,"\u03b5","\\varepsilon",!0),se(ie,le,de,"\u03d1","\\vartheta",!0),se(ie,le,de,"\u03d6","\\varpi",!0),se(ie,le,de,"\u03f1","\\varrho",!0),se(ie,le,de,"\u03c2","\\varsigma",!0),se(ie,le,de,"\u03c6","\\varphi",!0),se(ie,le,me,"\u2217","*",!0),se(ie,le,me,"+","+"),se(ie,le,me,"\u2212","-",!0),se(ie,le,me,"\u22c5","\\cdot",!0),se(ie,le,me,"\u2218","\\circ",!0),se(ie,le,me,"\xf7","\\div",!0),se(ie,le,me,"\xb1","\\pm",!0),se(ie,le,me,"\xd7","\\times",!0),se(ie,le,me,"\u2229","\\cap",!0),se(ie,le,me,"\u222a","\\cup",!0),se(ie,le,me,"\u2216","\\setminus",!0),se(ie,le,me,"\u2227","\\land"),se(ie,le,me,"\u2228","\\lor"),se(ie,le,me,"\u2227","\\wedge",!0),se(ie,le,me,"\u2228","\\vee",!0),se(ie,le,we,"\u221a","\\surd"),se(ie,le,fe,"\u27e8","\\langle",!0),se(ie,le,fe,"\u2223","\\lvert"),se(ie,le,fe,"\u2225","\\lVert"),se(ie,le,pe,"?","?"),se(ie,le,pe,"!","!"),se(ie,le,pe,"\u27e9","\\rangle",!0),se(ie,le,pe,"\u2223","\\rvert"),se(ie,le,pe,"\u2225","\\rVert"),se(ie,le,ye,"=","="),se(ie,le,ye,":",":"),se(ie,le,ye,"\u2248","\\approx",!0),se(ie,le,ye,"\u2245","\\cong",!0),se(ie,le,ye,"\u2265","\\ge"),se(ie,le,ye,"\u2265","\\geq",!0),se(ie,le,ye,"\u2190","\\gets"),se(ie,le,ye,">","\\gt",!0),se(ie,le,ye,"\u2208","\\in",!0),se(ie,le,ye,"\ue020","\\@not"),se(ie,le,ye,"\u2282","\\subset",!0),se(ie,le,ye,"\u2283","\\supset",!0),se(ie,le,ye,"\u2286","\\subseteq",!0),se(ie,le,ye,"\u2287","\\supseteq",!0),se(ie,he,ye,"\u2288","\\nsubseteq",!0),se(ie,he,ye,"\u2289","\\nsupseteq",!0),se(ie,le,ye,"\u22a8","\\models"),se(ie,le,ye,"\u2190","\\leftarrow",!0),se(ie,le,ye,"\u2264","\\le"),se(ie,le,ye,"\u2264","\\leq",!0),se(ie,le,ye,"<","\\lt",!0),se(ie,le,ye,"\u2192","\\rightarrow",!0),se(ie,le,ye,"\u2192","\\to"),se(ie,he,ye,"\u2271","\\ngeq",!0),se(ie,he,ye,"\u2270","\\nleq",!0),se(ie,le,xe,"\xa0","\\ "),se(ie,le,xe,"\xa0","\\space"),se(ie,le,xe,"\xa0","\\nobreakspace"),se(ae,le,xe,"\xa0","\\ "),se(ae,le,xe,"\xa0"," "),se(ae,le,xe,"\xa0","\\space"),se(ae,le,xe,"\xa0","\\nobreakspace"),se(ie,le,xe,null,"\\nobreak"),se(ie,le,xe,null,"\\allowbreak"),se(ie,le,be,",",","),se(ie,le,be,";",";"),se(ie,he,me,"\u22bc","\\barwedge",!0),se(ie,he,me,"\u22bb","\\veebar",!0),se(ie,le,me,"\u2299","\\odot",!0),se(ie,le,me,"\u2295","\\oplus",!0),se(ie,le,me,"\u2297","\\otimes",!0),se(ie,le,we,"\u2202","\\partial",!0),se(ie,le,me,"\u2298","\\oslash",!0),se(ie,he,me,"\u229a","\\circledcirc",!0),se(ie,he,me,"\u22a1","\\boxdot",!0),se(ie,le,me,"\u25b3","\\bigtriangleup"),se(ie,le,me,"\u25bd","\\bigtriangledown"),se(ie,le,me,"\u2020","\\dagger"),se(ie,le,me,"\u22c4","\\diamond"),se(ie,le,me,"\u22c6","\\star"),se(ie,le,me,"\u25c3","\\triangleleft"),se(ie,le,me,"\u25b9","\\triangleright"),se(ie,le,fe,"{","\\{"),se(ae,le,we,"{","\\{"),se(ae,le,we,"{","\\textbraceleft"),se(ie,le,pe,"}","\\}"),se(ae,le,we,"}","\\}"),se(ae,le,we,"}","\\textbraceright"),se(ie,le,fe,"{","\\lbrace"),se(ie,le,pe,"}","\\rbrace"),se(ie,le,fe,"[","\\lbrack",!0),se(ae,le,we,"[","\\lbrack",!0),se(ie,le,pe,"]","\\rbrack",!0),se(ae,le,we,"]","\\rbrack",!0),se(ie,le,fe,"(","\\lparen",!0),se(ie,le,pe,")","\\rparen",!0),se(ae,le,we,"<","\\textless",!0),se(ae,le,we,">","\\textgreater",!0),se(ie,le,fe,"\u230a","\\lfloor",!0),se(ie,le,pe,"\u230b","\\rfloor",!0),se(ie,le,fe,"\u2308","\\lceil",!0),se(ie,le,pe,"\u2309","\\rceil",!0),se(ie,le,we,"\\","\\backslash"),se(ie,le,we,"\u2223","|"),se(ie,le,we,"\u2223","\\vert"),se(ae,le,we,"|","\\textbar",!0),se(ie,le,we,"\u2225","\\|"),se(ie,le,we,"\u2225","\\Vert"),se(ae,le,we,"\u2225","\\textbardbl"),se(ae,le,we,"~","\\textasciitilde"),se(ae,le,we,"\\","\\textbackslash"),se(ae,le,we,"^","\\textasciicircum"),se(ie,le,ye,"\u2191","\\uparrow",!0),se(ie,le,ye,"\u21d1","\\Uparrow",!0),se(ie,le,ye,"\u2193","\\downarrow",!0),se(ie,le,ye,"\u21d3","\\Downarrow",!0),se(ie,le,ye,"\u2195","\\updownarrow",!0),se(ie,le,ye,"\u21d5","\\Updownarrow",!0),se(ie,le,ge,"\u2210","\\coprod"),se(ie,le,ge,"\u22c1","\\bigvee"),se(ie,le,ge,"\u22c0","\\bigwedge"),se(ie,le,ge,"\u2a04","\\biguplus"),se(ie,le,ge,"\u22c2","\\bigcap"),se(ie,le,ge,"\u22c3","\\bigcup"),se(ie,le,ge,"\u222b","\\int"),se(ie,le,ge,"\u222b","\\intop"),se(ie,le,ge,"\u222c","\\iint"),se(ie,le,ge,"\u222d","\\iiint"),se(ie,le,ge,"\u220f","\\prod"),se(ie,le,ge,"\u2211","\\sum"),se(ie,le,ge,"\u2a02","\\bigotimes"),se(ie,le,ge,"\u2a01","\\bigoplus"),se(ie,le,ge,"\u2a00","\\bigodot"),se(ie,le,ge,"\u222e","\\oint"),se(ie,le,ge,"\u222f","\\oiint"),se(ie,le,ge,"\u2230","\\oiiint"),se(ie,le,ge,"\u2a06","\\bigsqcup"),se(ie,le,ge,"\u222b","\\smallint"),se(ae,le,ue,"\u2026","\\textellipsis"),se(ie,le,ue,"\u2026","\\mathellipsis"),se(ae,le,ue,"\u2026","\\ldots",!0),se(ie,le,ue,"\u2026","\\ldots",!0),se(ie,le,ue,"\u22ef","\\@cdots",!0),se(ie,le,ue,"\u22f1","\\ddots",!0),se(ie,le,we,"\u22ee","\\varvdots"),se(ae,le,we,"\u22ee","\\varvdots"),se(ie,le,ce,"\u02ca","\\acute"),se(ie,le,ce,"\u02cb","\\grave"),se(ie,le,ce,"\xa8","\\ddot"),se(ie,le,ce,"~","\\tilde"),se(ie,le,ce,"\u02c9","\\bar"),se(ie,le,ce,"\u02d8","\\breve"),se(ie,le,ce,"\u02c7","\\check"),se(ie,le,ce,"^","\\hat"),se(ie,le,ce,"\u20d7","\\vec"),se(ie,le,ce,"\u02d9","\\dot"),se(ie,le,ce,"\u02da","\\mathring"),se(ie,le,de,"\ue131","\\@imath"),se(ie,le,de,"\ue237","\\@jmath"),se(ie,le,we,"\u0131","\u0131"),se(ie,le,we,"\u0237","\u0237"),se(ae,le,we,"\u0131","\\i",!0),se(ae,le,we,"\u0237","\\j",!0),se(ae,le,we,"\xdf","\\ss",!0),se(ae,le,we,"\xe6","\\ae",!0),se(ae,le,we,"\u0153","\\oe",!0),se(ae,le,we,"\xf8","\\o",!0),se(ae,le,we,"\xc6","\\AE",!0),se(ae,le,we,"\u0152","\\OE",!0),se(ae,le,we,"\xd8","\\O",!0),se(ae,le,ce,"\u02ca","\\'"),se(ae,le,ce,"\u02cb","\\`"),se(ae,le,ce,"\u02c6","\\^"),se(ae,le,ce,"\u02dc","\\~"),se(ae,le,ce,"\u02c9","\\="),se(ae,le,ce,"\u02d8","\\u"),se(ae,le,ce,"\u02d9","\\."),se(ae,le,ce,"\xb8","\\c"),se(ae,le,ce,"\u02da","\\r"),se(ae,le,ce,"\u02c7","\\v"),se(ae,le,ce,"\xa8",'\\"'),se(ae,le,ce,"\u02dd","\\H"),se(ae,le,ce,"\u25ef","\\textcircled");const ve={"--":!0,"---":!0,"``":!0,"''":!0};se(ae,le,we,"\u2013","--",!0),se(ae,le,we,"\u2013","\\textendash"),se(ae,le,we,"\u2014","---",!0),se(ae,le,we,"\u2014","\\textemdash"),se(ae,le,we,"\u2018","`",!0),se(ae,le,we,"\u2018","\\textquoteleft"),se(ae,le,we,"\u2019","'",!0),se(ae,le,we,"\u2019","\\textquoteright"),se(ae,le,we,"\u201c","``",!0),se(ae,le,we,"\u201c","\\textquotedblleft"),se(ae,le,we,"\u201d","''",!0),se(ae,le,we,"\u201d","\\textquotedblright"),se(ie,le,we,"\xb0","\\degree",!0),se(ae,le,we,"\xb0","\\degree"),se(ae,le,we,"\xb0","\\textdegree",!0),se(ie,le,we,"\xa3","\\pounds"),se(ie,le,we,"\xa3","\\mathsterling",!0),se(ae,le,we,"\xa3","\\pounds"),se(ae,le,we,"\xa3","\\textsterling",!0),se(ie,he,we,"\u2720","\\maltese"),se(ae,he,we,"\u2720","\\maltese");const ke='0123456789/@."';for(let e=0;e<14;e++){const t=ke.charAt(e);se(ie,le,we,t,t)}const Se='0123456789!@*()-=+";:?/.,';for(let e=0;e<25;e++){const t=Se.charAt(e);se(ae,le,we,t,t)}const Me="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(let e=0;e<52;e++){const t=Me.charAt(e);se(ie,le,de,t,t),se(ae,le,we,t,t)}se(ie,he,we,"C","\u2102"),se(ae,he,we,"C","\u2102"),se(ie,he,we,"H","\u210d"),se(ae,he,we,"H","\u210d"),se(ie,he,we,"N","\u2115"),se(ae,he,we,"N","\u2115"),se(ie,he,we,"P","\u2119"),se(ae,he,we,"P","\u2119"),se(ie,he,we,"Q","\u211a"),se(ae,he,we,"Q","\u211a"),se(ie,he,we,"R","\u211d"),se(ae,he,we,"R","\u211d"),se(ie,he,we,"Z","\u2124"),se(ae,he,we,"Z","\u2124"),se(ie,le,de,"h","\u210e"),se(ae,le,de,"h","\u210e");let ze="";for(let e=0;e<52;e++){const t=Me.charAt(e);ze=String.fromCharCode(55349,56320+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56372+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56424+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56580+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56684+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56736+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56788+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56840+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56944+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),e<26&&(ze=String.fromCharCode(55349,56632+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,56476+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze))}ze=String.fromCharCode(55349,56668),se(ie,le,de,"k",ze),se(ae,le,we,"k",ze);for(let e=0;e<10;e++){const t=e.toString();ze=String.fromCharCode(55349,57294+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,57314+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,57324+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze),ze=String.fromCharCode(55349,57334+e),se(ie,le,de,t,ze),se(ae,le,we,t,ze)}const Ae="\xd0\xde\xfe";for(let e=0;e<3;e++){const t=Ae.charAt(e);se(ie,le,de,t,t),se(ae,le,we,t,t)}const Te=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Be=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]];class Ce{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createDocumentFragment();for(let t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){let e="";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}toText(){return this.children.map((e=>e.toText())).join("")}}const Ne=function(e,t,r){return oe[r][e]&&oe[r][e].replace&&(e=oe[r][e].replace),{value:e,metrics:C(e,t,r)}},qe=function(e,t,r,n,o){const s=Ne(e,t,r),i=s.metrics;let a;if(e=s.value,i){let t=i.italic;("text"===r||n&&"mathit"===n.font)&&(t=0),a=new Z(e,i.height,i.depth,t,i.skew,i.width,o)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),a=new Z(e,0,0,0,0,0,o);if(n){a.maxFontSize=n.sizeMultiplier,n.style.isTight()&&a.classes.push("mtight");const e=n.getColor();e&&(a.style.color=e)}return a},Ie=(e,t)=>{if(F(e.classes)!==F(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){const t=e.classes[0];if("mbin"===t||"mord"===t)return!1}for(const r in e.style)if(e.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;for(const r in t.style)if(t.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;return!0},Re=function(e){let t=0,r=0,n=0;for(let o=0;o<e.children.length;o++){const s=e.children[o];s.height>t&&(t=s.height),s.depth>r&&(r=s.depth),s.maxFontSize>n&&(n=s.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},He=function(e,t,r,n){const o=new W(e,t,r,n);return Re(o),o},Oe=(e,t,r,n)=>new W(e,t,r,n),Ee=function(e){const t=new Ce(e);return Re(t),t},Le=function(e,t,r){let n,o="";switch(e){case"amsrm":o="AMS";break;case"textrm":o="Main";break;case"textsf":o="SansSerif";break;case"texttt":o="Typewriter";break;default:o=e}return n="textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular",o+"-"+n},De={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ve={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]};var Pe={fontMap:De,makeSymbol:qe,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Ne(e,"Main-Bold",t).metrics?qe(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===oe[t][e].font?qe(e,"Main-Regular",t,r,n):qe(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:He,makeSvgSpan:Oe,makeLineSpan:function(e,t,r){const n=He([e],[],t);return n.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=P(n.height),n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){const o=new _(e,t,r,n);return Re(o),o},makeFragment:Ee,wrapFragment:function(e,t){return e instanceof Ce?He([],[e],t):e},makeVList:function(e,t){const{children:r,depth:n}=function(e){if("individualShift"===e.positionType){const t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth;let o=n;for(let e=1;e<t.length;e++){const n=-t[e].shift-o-t[e].elem.depth,s=n-(t[e-1].elem.height+t[e-1].elem.depth);o+=n,r.push({type:"kern",size:s}),r.push(t[e])}return{children:r,depth:n}}let t;if("top"===e.positionType){let r=e.positionData;for(let t=0;t<e.children.length;t++){const n=e.children[t];r-="kern"===n.type?n.size:n.elem.height+n.elem.depth}t=r}else if("bottom"===e.positionType)t=-e.positionData;else{const r=e.children[0];if("elem"!==r.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)t=-r.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");t=-r.elem.depth}}return{children:e.children,depth:t}}(e);let o=0;for(let e=0;e<r.length;e++){const t=r[e];if("elem"===t.type){const e=t.elem;o=Math.max(o,e.maxFontSize,e.height)}}o+=2;const s=He(["pstrut"],[]);s.style.height=P(o);const i=[];let a=n,l=n,h=n;for(let e=0;e<r.length;e++){const t=r[e];if("kern"===t.type)h+=t.size;else{const e=t.elem,r=t.wrapperClasses||[],n=t.wrapperStyle||{},a=He(r,[s,e],void 0,n);a.style.top=P(-o-h-e.depth),t.marginLeft&&(a.style.marginLeft=t.marginLeft),t.marginRight&&(a.style.marginRight=t.marginRight),i.push(a),h+=e.height+e.depth}a=Math.min(a,h),l=Math.max(l,h)}const c=He(["vlist"],i);let m;if(c.style.height=P(l),a<0){const e=He([],[]),t=He(["vlist"],[e]);t.style.height=P(-a);const r=He(["vlist-s"],[new Z("\u200b")]);m=[He(["vlist-r"],[c,r]),He(["vlist-r"],[t])]}else m=[He(["vlist-r"],[c])];const p=He(["vlist-t"],m);return 2===m.length&&p.classes.push("vlist-t2"),p.height=l,p.depth=-a,p},makeOrd:function(e,t,r){const o=e.mode,s=e.text,i=["mord"],a="math"===o||"text"===o&&t.font,l=a?t.font:t.fontFamily;let h="",c="";if(55349===s.charCodeAt(0)&&([h,c]=function(e,t){const r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,o="math"===t?0:1;if(119808<=r&&r<120484){const e=Math.floor((r-119808)/26);return[Te[e][2],Te[e][o]]}if(120782<=r&&r<=120831){const e=Math.floor((r-120782)/10);return[Be[e][2],Be[e][o]]}if(120485===r||120486===r)return[Te[0][2],Te[0][o]];if(120486<r&&r<120782)return["",""];throw new n("Unsupported character: "+e)}(s,o)),h.length>0)return qe(s,h,o,t,i.concat(c));if(l){let e,n;if("boldsymbol"===l){const t=function(e,t,r,n,o){return"textord"!==o&&Ne(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(s,o,0,0,r);e=t.fontName,n=[t.fontClass]}else a?(e=De[l].fontName,n=[l]):(e=Le(l,t.fontWeight,t.fontShape),n=[l,t.fontWeight,t.fontShape]);if(Ne(s,e,o).metrics)return qe(s,e,o,t,i.concat(n));if(ve.hasOwnProperty(s)&&"Typewriter"===e.slice(0,10)){const r=[];for(let a=0;a<s.length;a++)r.push(qe(s[a],e,o,t,i.concat(n)));return Ee(r)}}if("mathord"===r)return qe(s,"Math-Italic",o,t,i.concat(["mathnormal"]));if("textord"===r){const e=oe[o][s]&&oe[o][s].font;if("ams"===e){const e=Le("amsrm",t.fontWeight,t.fontShape);return qe(s,e,o,t,i.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==e&&e){const r=Le(e,t.fontWeight,t.fontShape);return qe(s,r,o,t,i.concat(r,t.fontWeight,t.fontShape))}{const e=Le("textrm",t.fontWeight,t.fontShape);return qe(s,e,o,t,i.concat(t.fontWeight,t.fontShape))}}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:(e,t)=>{const r=He(["mspace"],[],t),n=V(e,t);return r.style.marginRight=P(n),r},staticSvg:function(e,t){const[r,n,o]=Ve[e],s=new J(r),i=new K([s],{width:P(n),height:P(o),style:"width:"+P(n),viewBox:"0 0 "+1e3*n+" "+1e3*o,preserveAspectRatio:"xMinYMin"}),a=Oe(["overlay"],[i],t);return a.height=o,a.style.height=P(o),a.style.width=P(n),a},svgData:Ve,tryCombineChars:e=>{for(let t=0;t<e.length-1;t++){const r=e[t],n=e[t+1];r instanceof Z&&n instanceof Z&&Ie(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,e.splice(t+1,1),t--)}return e}};const Fe={number:3,unit:"mu"},Ge={number:4,unit:"mu"},Ue={number:5,unit:"mu"},Ye={mord:{mop:Fe,mbin:Ge,mrel:Ue,minner:Fe},mop:{mord:Fe,mop:Fe,mrel:Ue,minner:Fe},mbin:{mord:Ge,mop:Ge,mopen:Ge,minner:Ge},mrel:{mord:Ue,mop:Ue,mopen:Ue,minner:Ue},mopen:{},mclose:{mop:Fe,mbin:Ge,mrel:Ue,minner:Fe},mpunct:{mord:Fe,mop:Fe,mrel:Ue,mopen:Fe,mclose:Fe,mpunct:Fe,minner:Fe},minner:{mord:Fe,mop:Fe,mbin:Ge,mrel:Ue,mopen:Fe,mpunct:Fe,minner:Fe}},Xe={mord:{mop:Fe},mop:{mord:Fe,mop:Fe},mbin:{},mrel:{},mopen:{},mclose:{mop:Fe},mpunct:{},minner:{mop:Fe}},We={},_e={},je={};function $e(e){let{type:t,names:r,props:n,handler:o,htmlBuilder:s,mathmlBuilder:i}=e;const a={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:void 0===n.allowedInMath||n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:o};for(let e=0;e<r.length;++e)We[r[e]]=a;t&&(s&&(_e[t]=s),i&&(je[t]=i))}function Ze(e){let{type:t,htmlBuilder:r,mathmlBuilder:n}=e;$e({type:t,names:[],props:{numArgs:0},handler(){throw new Error("Should never be called.")},htmlBuilder:r,mathmlBuilder:n})}const Ke=function(e){return"ordgroup"===e.type&&1===e.body.length?e.body[0]:e},Je=function(e){return"ordgroup"===e.type?e.body:[e]},Qe=Pe.makeSpan,et=["leftmost","mbin","mopen","mrel","mop","mpunct"],tt=["rightmost","mrel","mclose","mpunct"],rt={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT},nt={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ot=function(e,t,r,n){void 0===n&&(n=[null,null]);const o=[];for(let r=0;r<e.length;r++){const n=ct(e[r],t);if(n instanceof Ce){const e=n.children;o.push(...e)}else o.push(n)}if(Pe.tryCombineChars(o),!r)return o;let s=t;if(1===e.length){const r=e[0];"sizing"===r.type?s=t.havingSize(r.size):"styling"===r.type&&(s=t.havingStyle(rt[r.style]))}const i=Qe([n[0]||"leftmost"],[],t),a=Qe([n[1]||"rightmost"],[],t),l="root"===r;return st(o,((e,t)=>{const r=t.classes[0],n=e.classes[0];"mbin"===r&&tt.includes(n)?t.classes[0]="mord":"mbin"===n&&et.includes(r)&&(e.classes[0]="mord")}),{node:i},a,l),st(o,((e,t)=>{const r=lt(t),n=lt(e),o=r&&n?e.hasClass("mtight")?Xe[r][n]:Ye[r][n]:null;if(o)return Pe.makeGlue(o,s)}),{node:i},a,l),o},st=function(e,t,r,n,o){n&&e.push(n);let s=0;for(;s<e.length;s++){const n=e[s],i=it(n);if(i){st(i.children,t,r,null,o);continue}const a=!n.hasClass("mspace");if(a){const o=t(n,r.node);o&&(r.insertAfter?r.insertAfter(o):(e.unshift(o),s++))}a?r.node=n:o&&n.hasClass("newline")&&(r.node=Qe(["leftmost"])),r.insertAfter=(t=>r=>{e.splice(t+1,0,r),s++})(s)}n&&e.pop()},it=function(e){return e instanceof Ce||e instanceof _||e instanceof W&&e.hasClass("enclosing")?e:null},at=function(e,t){const r=it(e);if(r){const e=r.children;if(e.length){if("right"===t)return at(e[e.length-1],"right");if("left"===t)return at(e[0],"left")}}return e},lt=function(e,t){return e?(t&&(e=at(e,t)),nt[e.classes[0]]||null):null},ht=function(e,t){const r=["nulldelimiter"].concat(e.baseSizingClasses());return Qe(t.concat(r))},ct=function(e,t,r){if(!e)return Qe();if(_e[e.type]){let n=_e[e.type](e,t);if(r&&t.size!==r.size){n=Qe(t.sizingClasses(r),[n],t);const e=t.sizeMultiplier/r.sizeMultiplier;n.height*=e,n.depth*=e}return n}throw new n("Got group of unknown type: '"+e.type+"'")};function mt(e,t){const r=Qe(["base"],e,t),n=Qe(["strut"]);return n.style.height=P(r.height+r.depth),r.depth&&(n.style.verticalAlign=P(-r.depth)),r.children.unshift(n),r}function pt(e,t){let r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);const n=ot(e,t,"root");let o;2===n.length&&n[1].hasClass("tag")&&(o=n.pop());const s=[];let i,a=[];for(let e=0;e<n.length;e++)if(a.push(n[e]),n[e].hasClass("mbin")||n[e].hasClass("mrel")||n[e].hasClass("allowbreak")){let r=!1;for(;e<n.length-1&&n[e+1].hasClass("mspace")&&!n[e+1].hasClass("newline");)e++,a.push(n[e]),n[e].hasClass("nobreak")&&(r=!0);r||(s.push(mt(a,t)),a=[])}else n[e].hasClass("newline")&&(a.pop(),a.length>0&&(s.push(mt(a,t)),a=[]),s.push(n[e]));a.length>0&&s.push(mt(a,t)),r?(i=mt(ot(r,t,!0)),i.classes=["tag"],s.push(i)):o&&s.push(o);const l=Qe(["katex-html"],s);if(l.setAttribute("aria-hidden","true"),i){const e=i.children[0];e.style.height=P(l.height+l.depth),l.depth&&(e.style.verticalAlign=P(-l.depth))}return l}function ut(e){return new Ce(e)}class dt{constructor(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){const e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=F(this.classes));for(let t=0;t<this.children.length;t++)if(this.children[t]instanceof gt&&this.children[t+1]instanceof gt){let r=this.children[t].toText()+this.children[++t].toText();for(;this.children[t+1]instanceof gt;)r+=this.children[++t].toText();e.appendChild(new gt(r).toNode())}else e.appendChild(this.children[t].toNode());return e}toMarkup(){let e="<"+this.type;for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=l.escape(this.attributes[t]),e+='"');this.classes.length>0&&(e+=' class ="'+l.escape(F(this.classes))+'"'),e+=">";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e+="</"+this.type+">",e}toText(){return this.children.map((e=>e.toText())).join("")}}class gt{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return l.escape(this.toText())}toText(){return this.text}}var ft={MathNode:dt,TextNode:gt,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);{const e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",P(this.width)),e}}toMarkup(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+P(this.width)+'"/>'}toText(){return this.character?this.character:" "}},newDocumentFragment:ut};const bt=function(e,t,r){return!oe[t][e]||!oe[t][e].replace||55349===e.charCodeAt(0)||ve.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=oe[t][e].replace),new ft.TextNode(e)},yt=function(e){return 1===e.length?e[0]:new ft.MathNode("mrow",e)},xt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";let o=e.text;if(["\\imath","\\jmath"].includes(o))return null;oe[n][o]&&oe[n][o].replace&&(o=oe[n][o].replace);return C(o,Pe.fontMap[r].fontName,n)?Pe.fontMap[r].variant:null};function wt(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof gt&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){const t=e.children[0];return t instanceof gt&&","===t.text}return!1}const vt=function(e,t,r){if(1===e.length){const n=St(e[0],t);return r&&n instanceof dt&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}const n=[];let o;for(let r=0;r<e.length;r++){const s=St(e[r],t);if(s instanceof dt&&o instanceof dt){if("mtext"===s.type&&"mtext"===o.type&&s.getAttribute("mathvariant")===o.getAttribute("mathvariant")){o.children.push(...s.children);continue}if("mn"===s.type&&"mn"===o.type){o.children.push(...s.children);continue}if(wt(s)&&"mn"===o.type){o.children.push(...s.children);continue}if("mn"===s.type&&wt(o))s.children=[...o.children,...s.children],n.pop();else if(("msup"===s.type||"msub"===s.type)&&s.children.length>=1&&("mn"===o.type||wt(o))){const e=s.children[0];e instanceof dt&&"mn"===e.type&&(e.children=[...o.children,...e.children],n.pop())}else if("mi"===o.type&&1===o.children.length){const e=o.children[0];if(e instanceof gt&&"\u0338"===e.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){const e=s.children[0];e instanceof gt&&e.text.length>0&&(e.text=e.text.slice(0,1)+"\u0338"+e.text.slice(1),n.pop())}}}n.push(s),o=s}return n},kt=function(e,t,r){return yt(vt(e,t,r))},St=function(e,t){if(!e)return new ft.MathNode("mrow");if(je[e.type]){return je[e.type](e,t)}throw new n("Got group of unknown type: '"+e.type+"'")};function Mt(e,t,r,n,o){const s=vt(e,r);let i;i=1===s.length&&s[0]instanceof dt&&["mrow","mtable"].includes(s[0].type)?s[0]:new ft.MathNode("mrow",s);const a=new ft.MathNode("annotation",[new ft.TextNode(t)]);a.setAttribute("encoding","application/x-tex");const l=new ft.MathNode("semantics",[i,a]),h=new ft.MathNode("math",[l]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");const c=o?"katex":"katex-mathml";return Pe.makeSpan([c],[h])}const zt=function(e){return new O({style:e.displayMode?w.DISPLAY:w.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},At=function(e,t){if(t.displayMode){const r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Pe.makeSpan(r,[e])}return e},Tt=function(e,t,r){const n=zt(r);let o;if("mathml"===r.output)return Mt(e,t,n,r.displayMode,!0);if("html"===r.output){const t=pt(e,n);o=Pe.makeSpan(["katex"],[t])}else{const s=Mt(e,t,n,r.displayMode,!1),i=pt(e,n);o=Pe.makeSpan(["katex"],[s,i])}return At(o,r)};const Bt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Ct={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]};var Nt=function(e,t,r,n,o){let s;const i=e.height+e.depth+r+n;if(/fbox|color|angl/.test(t)){if(s=Pe.makeSpan(["stretchy",t],[],o),"fbox"===t){const e=o.color&&o.getColor();e&&(s.style.borderColor=e)}}else{const e=[];/^[bx]cancel$/.test(t)&&e.push(new Q({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&e.push(new Q({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));const r=new K(e,{width:"100%",height:P(i)});s=Pe.makeSvgSpan([],[r],o)}return s.height=i,s.style.height=P(i),s},qt=function(e){const t=new ft.MathNode("mo",[new ft.TextNode(Bt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},It=function(e,t){const{span:r,minWidth:n,height:o}=function(){let r=4e5;const n=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(n)){const s="ordgroup"===(o=e.base).type?o.body.length:1;let i,a,l;if(s>5)"widehat"===n||"widecheck"===n?(i=420,r=2364,l=.42,a=n+"4"):(i=312,r=2340,l=.34,a="tilde4");else{const e=[1,1,2,2,3,3][s];"widehat"===n||"widecheck"===n?(r=[0,1062,2364,2364,2364][e],i=[0,239,300,360,420][e],l=[0,.24,.3,.3,.36,.42][e],a=n+e):(r=[0,600,1033,2339,2340][e],i=[0,260,286,306,312][e],l=[0,.26,.286,.3,.306,.34][e],a="tilde"+e)}const h=new J(a),c=new K([h],{width:"100%",height:P(l),viewBox:"0 0 "+r+" "+i,preserveAspectRatio:"none"});return{span:Pe.makeSvgSpan([],[c],t),minWidth:0,height:l}}{const e=[],o=Ct[n],[s,i,a]=o,l=a/1e3,h=s.length;let c,m;if(1===h){c=["hide-tail"],m=[o[3]]}else if(2===h)c=["halfarrow-left","halfarrow-right"],m=["xMinYMin","xMaxYMin"];else{if(3!==h)throw new Error("Correct katexImagesData or update code here to support\n "+h+" children.");c=["brace-left","brace-center","brace-right"],m=["xMinYMin","xMidYMin","xMaxYMin"]}for(let n=0;n<h;n++){const o=new J(s[n]),p=new K([o],{width:"400em",height:P(l),viewBox:"0 0 "+r+" "+a,preserveAspectRatio:m[n]+" slice"}),u=Pe.makeSvgSpan([c[n]],[p],t);if(1===h)return{span:u,minWidth:i,height:l};u.style.height=P(l),e.push(u)}return{span:Pe.makeSpan(["stretchy"],e,t),minWidth:i,height:l}}var o}();return r.height=o,r.style.height=P(o),n>0&&(r.style.minWidth=P(n)),r};function Rt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Ht(e){const t=Ot(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Ot(e){return e&&("atom"===e.type||re.hasOwnProperty(e.type))?e:null}const Et=(e,t)=>{let r,n,o;e&&"supsub"===e.type?(n=Rt(e.base,"accent"),r=n.base,e.base=r,o=function(e){if(e instanceof W)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(ct(e,t)),e.base=n):(n=Rt(e,"accent"),r=n.base);const s=ct(r,t.havingCrampedStyle());let i=0;if(n.isShifty&&l.isCharacterBox(r)){const e=l.getBaseElem(r);i=ee(ct(e,t.havingCrampedStyle())).skew}const a="\\c"===n.label;let h,c=a?s.height+s.depth:Math.min(s.height,t.fontMetrics().xHeight);if(n.isStretchy)h=It(n,t),h=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:i>0?{width:"calc(100% - "+P(2*i)+")",marginLeft:P(2*i)}:void 0}]},t);else{let e,r;"\\vec"===n.label?(e=Pe.staticSvg("vec",t),r=Pe.svgData.vec[1]):(e=Pe.makeOrd({mode:n.mode,text:n.label},t,"textord"),e=ee(e),e.italic=0,r=e.width,a&&(c+=e.depth)),h=Pe.makeSpan(["accent-body"],[e]);const o="\\textcircled"===n.label;o&&(h.classes.push("accent-full"),c=s.height);let l=i;o||(l-=r/2),h.style.left=P(l),"\\textcircled"===n.label&&(h.style.top=".2em"),h=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-c},{type:"elem",elem:h}]},t)}const m=Pe.makeSpan(["mord","accent"],[h],t);return o?(o.children[0]=m,o.height=Math.max(m.height,o.height),o.classes[0]="mord",o):m},Lt=(e,t)=>{const r=e.isStretchy?qt(e.label):new ft.MathNode("mo",[bt(e.label,e.mode)]),n=new ft.MathNode("mover",[St(e.base,t),r]);return n.setAttribute("accent","true"),n},Dt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((e=>"\\"+e)).join("|"));$e({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=Ke(t[0]),n=!Dt.test(e.funcName),o=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:o,base:r}},htmlBuilder:Et,mathmlBuilder:Lt}),$e({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=t[0];let n=e.parser.mode;return"math"===n&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Et,mathmlBuilder:Lt}),$e({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:o}},htmlBuilder:(e,t)=>{const r=ct(e.base,t),n=It(e,t),o="\\utilde"===e.label?.12:0,s=Pe.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:o},{type:"elem",elem:r}]},t);return Pe.makeSpan(["mord","accentunder"],[s],t)},mathmlBuilder:(e,t)=>{const r=qt(e.label),n=new ft.MathNode("munder",[St(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});const Vt=e=>{const t=new ft.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};$e({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){let{parser:n,funcName:o}=e;return{type:"xArrow",mode:n.mode,label:o,body:t[0],below:r[0]}},htmlBuilder(e,t){const r=t.style;let n=t.havingStyle(r.sup());const o=Pe.wrapFragment(ct(e.body,n,t),t),s="\\x"===e.label.slice(0,2)?"x":"cd";let i;o.classes.push(s+"-arrow-pad"),e.below&&(n=t.havingStyle(r.sub()),i=Pe.wrapFragment(ct(e.below,n,t),t),i.classes.push(s+"-arrow-pad"));const a=It(e,t),l=-t.fontMetrics().axisHeight+.5*a.height;let h,c=-t.fontMetrics().axisHeight-.5*a.height-.111;if((o.depth>.25||"\\xleftequilibrium"===e.label)&&(c-=o.depth),i){const e=-t.fontMetrics().axisHeight+i.height+.5*a.height+.111;h=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:c},{type:"elem",elem:a,shift:l},{type:"elem",elem:i,shift:e}]},t)}else h=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:c},{type:"elem",elem:a,shift:l}]},t);return h.children[0].children[0].children[1].classes.push("svg-align"),Pe.makeSpan(["mrel","x-arrow"],[h],t)},mathmlBuilder(e,t){const r=qt(e.label);let n;if(r.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){const o=Vt(St(e.body,t));if(e.below){const s=Vt(St(e.below,t));n=new ft.MathNode("munderover",[r,s,o])}else n=new ft.MathNode("mover",[r,o])}else if(e.below){const o=Vt(St(e.below,t));n=new ft.MathNode("munder",[r,o])}else n=Vt(),n=new ft.MathNode("mover",[r,n]);return n}});const Pt=Pe.makeSpan;function Ft(e,t){const r=ot(e.body,t,!0);return Pt([e.mclass],r,t)}function Gt(e,t){let r;const n=vt(e.body,t);return"minner"===e.mclass?r=new ft.MathNode("mpadded",n):"mord"===e.mclass?e.isCharacterBox?(r=n[0],r.type="mi"):r=new ft.MathNode("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new ft.MathNode("mo",n),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}$e({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){let{parser:r,funcName:n}=e;const o=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Je(o),isCharacterBox:l.isCharacterBox(o)}},htmlBuilder:Ft,mathmlBuilder:Gt});const Ut=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};$e({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){let{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:Ut(t[0]),body:Je(t[1]),isCharacterBox:l.isCharacterBox(t[1])}}}),$e({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){let{parser:r,funcName:n}=e;const o=t[1],s=t[0];let i;i="\\stackrel"!==n?Ut(o):"mrel";const a={type:"op",mode:o.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:Je(o)},h={type:"supsub",mode:s.mode,base:a,sup:"\\underset"===n?null:s,sub:"\\underset"===n?s:null};return{type:"mclass",mode:r.mode,mclass:i,body:[h],isCharacterBox:l.isCharacterBox(h)}},htmlBuilder:Ft,mathmlBuilder:Gt}),$e({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){let{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:Ut(t[0]),body:Je(t[0])}},htmlBuilder(e,t){const r=ot(e.body,t,!0),n=Pe.makeSpan([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){const r=vt(e.body,t),n=new ft.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});const Yt={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xt=e=>"textord"===e.type&&"@"===e.text;function Wt(e,t,r){const n=Yt[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},o={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[o],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}$e({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){let{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){const r=t.havingStyle(t.style.sup()),n=Pe.wrapFragment(ct(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=P(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){let r=new ft.MathNode("mrow",[St(e.label,t)]);return r=new ft.MathNode("mpadded",[r]),r.setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new ft.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),$e({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){let{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){const r=Pe.wrapFragment(ct(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new ft.MathNode("mrow",[St(e.fragment,t)])}}),$e({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){let{parser:r}=e;const o=Rt(t[0],"ordgroup").body;let s="";for(let e=0;e<o.length;e++){s+=Rt(o[e],"textord").text}let i,a=parseInt(s);if(isNaN(a))throw new n("\\@char has non-numeric argument "+s);if(a<0||a>=1114111)throw new n("\\@char with invalid code point "+s);return a<=65535?i=String.fromCharCode(a):(a-=65536,i=String.fromCharCode(55296+(a>>10),56320+(1023&a))),{type:"textord",mode:r.mode,text:i}}});const _t=(e,t)=>{const r=ot(e.body,t.withColor(e.color),!1);return Pe.makeFragment(r)},jt=(e,t)=>{const r=vt(e.body,t.withColor(e.color)),n=new ft.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};$e({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){let{parser:r}=e;const n=Rt(t[0],"color-token").color,o=t[1];return{type:"color",mode:r.mode,color:n,body:Je(o)}},htmlBuilder:_t,mathmlBuilder:jt}),$e({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){let{parser:r,breakOnTokenText:n}=e;const o=Rt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",o);const s=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:o,body:s}},htmlBuilder:_t,mathmlBuilder:jt}),$e({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){let{parser:n}=e;const o="["===n.gullet.future().text?n.parseSizeGroup(!0):null,s=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:s,size:o&&Rt(o,"size").value}},htmlBuilder(e,t){const r=Pe.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=P(V(e.size,t)))),r},mathmlBuilder(e,t){const r=new ft.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",P(V(e.size,t)))),r}});const $t={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Zt=e=>{const t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new n("Expected a control sequence",e);return t},Kt=(e,t,r,n)=>{let o=e.gullet.macros.get(r.text);null==o&&(r.noexpand=!0,o={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,o,n)};$e({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){let{parser:t,funcName:r}=e;t.consumeSpaces();const o=t.fetch();if($t[o.text])return"\\global"!==r&&"\\\\globallong"!==r||(o.text=$t[o.text]),Rt(t.parseFunction(),"internal");throw new n("Invalid token after macro prefix",o)}}),$e({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){let{parser:t,funcName:r}=e,o=t.gullet.popToken();const s=o.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new n("Expected a control sequence",o);let i,a=0;const l=[[]];for(;"{"!==t.gullet.future().text;)if(o=t.gullet.popToken(),"#"===o.text){if("{"===t.gullet.future().text){i=t.gullet.future(),l[a].push("{");break}if(o=t.gullet.popToken(),!/^[1-9]$/.test(o.text))throw new n('Invalid argument number "'+o.text+'"');if(parseInt(o.text)!==a+1)throw new n('Argument number "'+o.text+'" out of order');a++,l.push([])}else{if("EOF"===o.text)throw new n("Expected a macro definition");l[a].push(o.text)}let{tokens:h}=t.gullet.consumeArg();return i&&h.unshift(i),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h),h.reverse()),t.gullet.macros.set(s,{tokens:h,numArgs:a,delimiters:l},r===$t[r]),{type:"internal",mode:t.mode}}}),$e({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){let{parser:t,funcName:r}=e;const n=Zt(t.gullet.popToken());t.gullet.consumeSpaces();const o=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(t);return Kt(t,n,o,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),$e({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){let{parser:t,funcName:r}=e;const n=Zt(t.gullet.popToken()),o=t.gullet.popToken(),s=t.gullet.popToken();return Kt(t,n,s,"\\\\globalfuture"===r),t.gullet.pushToken(s),t.gullet.pushToken(o),{type:"internal",mode:t.mode}}});const Jt=function(e,t,r){const n=C(oe.math[e]&&oe.math[e].replace||e,t,r);if(!n)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return n},Qt=function(e,t,r,n){const o=r.havingBaseStyle(t),s=Pe.makeSpan(n.concat(o.sizingClasses(r)),[e],r),i=o.sizeMultiplier/r.sizeMultiplier;return s.height*=i,s.depth*=i,s.maxFontSize=o.sizeMultiplier,s},er=function(e,t,r){const n=t.havingBaseStyle(r),o=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=P(o),e.height-=o,e.depth+=o},tr=function(e,t,r,n,o,s){const i=function(e,t,r,n){return Pe.makeSymbol(e,"Size"+t+"-Regular",r,n)}(e,t,o,n),a=Qt(Pe.makeSpan(["delimsizing","size"+t],[i],n),w.TEXT,n,s);return r&&er(a,n,w.TEXT),a},rr=function(e,t,r){let n;n="Size1-Regular"===t?"delim-size1":"delim-size4";return{type:"elem",elem:Pe.makeSpan(["delimsizinginner",n],[Pe.makeSpan([],[Pe.makeSymbol(e,t,r)])])}},nr=function(e,t,r){const n=A["Size4-Regular"][e.charCodeAt(0)]?A["Size4-Regular"][e.charCodeAt(0)][4]:A["Size1-Regular"][e.charCodeAt(0)][4],o=new J("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),s=new K([o],{width:P(n),height:P(t),style:"width:"+P(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),i=Pe.makeSvgSpan([],[s],r);return i.height=t,i.style.height=P(t),i.style.width=P(n),{type:"elem",elem:i}},or={type:"kern",size:-.008},sr=["|","\\lvert","\\rvert","\\vert"],ir=["\\|","\\lVert","\\rVert","\\Vert"],ar=function(e,t,r,n,o,s){let i,a,l,h,c="",m=0;i=l=h=e,a=null;let p="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?i=l="\u23d0":"\\Downarrow"===e?i=l="\u2016":"\\updownarrow"===e?(i="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(i="\\Uparrow",l="\u2016",h="\\Downarrow"):sr.includes(e)?(l="\u2223",c="vert",m=333):ir.includes(e)?(l="\u2225",c="doublevert",m=556):"["===e||"\\lbrack"===e?(i="\u23a1",l="\u23a2",h="\u23a3",p="Size4-Regular",c="lbrack",m=667):"]"===e||"\\rbrack"===e?(i="\u23a4",l="\u23a5",h="\u23a6",p="Size4-Regular",c="rbrack",m=667):"\\lfloor"===e||"\u230a"===e?(l=i="\u23a2",h="\u23a3",p="Size4-Regular",c="lfloor",m=667):"\\lceil"===e||"\u2308"===e?(i="\u23a1",l=h="\u23a2",p="Size4-Regular",c="lceil",m=667):"\\rfloor"===e||"\u230b"===e?(l=i="\u23a5",h="\u23a6",p="Size4-Regular",c="rfloor",m=667):"\\rceil"===e||"\u2309"===e?(i="\u23a4",l=h="\u23a5",p="Size4-Regular",c="rceil",m=667):"("===e||"\\lparen"===e?(i="\u239b",l="\u239c",h="\u239d",p="Size4-Regular",c="lparen",m=875):")"===e||"\\rparen"===e?(i="\u239e",l="\u239f",h="\u23a0",p="Size4-Regular",c="rparen",m=875):"\\{"===e||"\\lbrace"===e?(i="\u23a7",a="\u23a8",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(i="\u23ab",a="\u23ac",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(i="\u23a7",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(i="\u23ab",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(i="\u23a7",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(i="\u23ab",h="\u23a9",l="\u23aa",p="Size4-Regular");const u=Jt(i,p,o),d=u.height+u.depth,g=Jt(l,p,o),f=g.height+g.depth,b=Jt(h,p,o),y=b.height+b.depth;let x=0,v=1;if(null!==a){const e=Jt(a,p,o);x=e.height+e.depth,v=2}const k=d+y+x,S=k+Math.max(0,Math.ceil((t-k)/(v*f)))*v*f;let M=n.fontMetrics().axisHeight;r&&(M*=n.sizeMultiplier);const z=S/2-M,A=[];if(c.length>0){const e=S-d-y,t=Math.round(1e3*S),r=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(c,Math.round(1e3*e)),o=new J(c,r),s=(m/1e3).toFixed(3)+"em",i=(t/1e3).toFixed(3)+"em",a=new K([o],{width:s,height:i,viewBox:"0 0 "+m+" "+t}),l=Pe.makeSvgSpan([],[a],n);l.height=t/1e3,l.style.width=s,l.style.height=i,A.push({type:"elem",elem:l})}else{if(A.push(rr(h,p,o)),A.push(or),null===a){const e=S-d-y+.016;A.push(nr(l,e,n))}else{const e=(S-d-y-x)/2+.016;A.push(nr(l,e,n)),A.push(or),A.push(rr(a,p,o)),A.push(or),A.push(nr(l,e,n))}A.push(or),A.push(rr(i,p,o))}const T=n.havingBaseStyle(w.TEXT),B=Pe.makeVList({positionType:"bottom",positionData:z,children:A},T);return Qt(Pe.makeSpan(["delimsizing","mult"],[B],T),w.TEXT,n,s)},lr=.08,hr=function(e,t,r,n,o){const s=function(e,t,r){t*=1e3;let n="";switch(e){case"sqrtMain":n=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize1":n=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize2":n=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize3":n=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize4":n=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,M);break;case"sqrtTall":n=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,M,r)}return n}(e,n,r),i=new J(e,s),a=new K([i],{width:"400em",height:P(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Pe.makeSvgSpan(["hide-tail"],[a],o)},cr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],mr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],pr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],ur=[0,1.2,1.8,2.4,3],dr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],gr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],fr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],br=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},yr=function(e,t,r,n){for(let o=Math.min(2,3-n.style.size);o<r.length&&"stack"!==r[o].type;o++){const s=Jt(e,br(r[o]),"math");let i=s.height+s.depth;if("small"===r[o].type){i*=n.havingBaseStyle(r[o].style).sizeMultiplier}if(i>t)return r[o]}return r[r.length-1]},xr=function(e,t,r,n,o,s){let i;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),i=pr.includes(e)?dr:cr.includes(e)?fr:gr;const a=yr(e,t,i,n);return"small"===a.type?function(e,t,r,n,o,s){const i=Pe.makeSymbol(e,"Main-Regular",o,n),a=Qt(i,t,n,s);return r&&er(a,n,t),a}(e,a.style,r,n,o,s):"large"===a.type?tr(e,a.size,r,n,o,s):ar(e,t,r,n,o,s)};var wr={sqrtImage:function(e,t){const r=t.havingBaseSizing(),n=yr("\\surd",e*r.sizeMultiplier,fr,r);let o=r.sizeMultiplier;const s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness);let i,a,l=0,h=0,c=0;return"small"===n.type?(c=1e3+1e3*s+80,e<1?o=1:e<1.4&&(o=.7),l=(1+s+lr)/o,h=(1+s)/o,i=hr("sqrtMain",l,c,s,t),i.style.minWidth="0.853em",a=.833/o):"large"===n.type?(c=1080*ur[n.size],h=(ur[n.size]+s)/o,l=(ur[n.size]+s+lr)/o,i=hr("sqrtSize"+n.size,l,c,s,t),i.style.minWidth="1.02em",a=1/o):(l=e+s+lr,h=e+s,c=Math.floor(1e3*e+s)+80,i=hr("sqrtTall",l,c,s,t),i.style.minWidth="0.742em",a=1.056),i.height=h,i.style.height=P(l),{span:i,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,o,s){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),cr.includes(e)||pr.includes(e))return tr(e,t,!1,r,o,s);if(mr.includes(e))return ar(e,ur[t],!1,r,o,s);throw new n("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:ur,customSizedDelim:xr,leftRightDelim:function(e,t,r,n,o,s){const i=n.fontMetrics().axisHeight*n.sizeMultiplier,a=5/n.fontMetrics().ptPerEm,l=Math.max(t-i,r+i),h=Math.max(l/500*901,2*l-a);return xr(e,h,!0,n,o,s)}};const vr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},kr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Sr(e,t){const r=Ot(e);if(r&&kr.includes(r.text))return r;throw new n(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Mr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}$e({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=Sr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:vr[e.funcName].size,mclass:vr[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?Pe.makeSpan([e.mclass]):wr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{const t=[];"."!==e.delim&&t.push(bt(e.delim,e.mode));const r=new ft.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");const n=P(wr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}}),$e({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{const r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new n("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Sr(t[0],e).text,color:r}}}),$e({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{const r=Sr(t[0],e),n=e.parser;++n.leftrightDepth;const o=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);const s=Rt(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:o,left:r.text,right:s.delim,rightColor:s.color}},htmlBuilder:(e,t)=>{Mr(e);const r=ot(e.body,t,!0,["mopen","mclose"]);let n,o,s=0,i=0,a=!1;for(let e=0;e<r.length;e++)r[e].isMiddle?a=!0:(s=Math.max(r[e].height,s),i=Math.max(r[e].depth,i));if(s*=t.sizeMultiplier,i*=t.sizeMultiplier,n="."===e.left?ht(t,["mopen"]):wr.leftRightDelim(e.left,s,i,t,e.mode,["mopen"]),r.unshift(n),a)for(let t=1;t<r.length;t++){const n=r[t].isMiddle;n&&(r[t]=wr.leftRightDelim(n.delim,s,i,n.options,e.mode,[]))}if("."===e.right)o=ht(t,["mclose"]);else{const r=e.rightColor?t.withColor(e.rightColor):t;o=wr.leftRightDelim(e.right,s,i,r,e.mode,["mclose"])}return r.push(o),Pe.makeSpan(["minner"],r,t)},mathmlBuilder:(e,t)=>{Mr(e);const r=vt(e.body,t);if("."!==e.left){const t=new ft.MathNode("mo",[bt(e.left,e.mode)]);t.setAttribute("fence","true"),r.unshift(t)}if("."!==e.right){const t=new ft.MathNode("mo",[bt(e.right,e.mode)]);t.setAttribute("fence","true"),e.rightColor&&t.setAttribute("mathcolor",e.rightColor),r.push(t)}return yt(r)}}),$e({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{const r=Sr(t[0],e);if(!e.parser.leftrightDepth)throw new n("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{let r;if("."===e.delim)r=ht(t,[]);else{r=wr.sizedDelim(e.delim,1,t,e.mode,[]);const n={delim:e.delim,options:t};r.isMiddle=n}return r},mathmlBuilder:(e,t)=>{const r="\\vert"===e.delim||"|"===e.delim?bt("|","text"):bt(e.delim,e.mode),n=new ft.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const zr=(e,t)=>{const r=Pe.wrapFragment(ct(e.body,t),t),n=e.label.slice(1);let o,s=t.sizeMultiplier,i=0;const a=l.isCharacterBox(e.body);if("sout"===n)o=Pe.makeSpan(["stretchy","sout"]),o.height=t.fontMetrics().defaultRuleThickness/s,i=-.5*t.fontMetrics().xHeight;else if("phase"===n){const e=V({number:.6,unit:"pt"},t),n=V({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;const a=r.height+r.depth+e+n;r.style.paddingLeft=P(a/2+e);const l=Math.floor(1e3*a*s),c="M400000 "+(h=l)+" H0 L"+h/2+" 0 l65 45 L145 "+(h-80)+" H400000z",m=new K([new J("phase",c)],{width:"400em",height:P(l/1e3),viewBox:"0 0 400000 "+l,preserveAspectRatio:"xMinYMin slice"});o=Pe.makeSvgSpan(["hide-tail"],[m],t),o.style.height=P(a),i=r.depth+e+n}else{/cancel/.test(n)?a||r.classes.push("cancel-pad"):"angl"===n?r.classes.push("anglpad"):r.classes.push("boxpad");let s=0,l=0,h=0;/box/.test(n)?(h=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),s=t.fontMetrics().fboxsep+("colorbox"===n?0:h),l=s):"angl"===n?(h=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),s=4*h,l=Math.max(0,.25-r.depth)):(s=a?.2:0,l=s),o=Nt(r,n,s,l,t),/fbox|boxed|fcolorbox/.test(n)?(o.style.borderStyle="solid",o.style.borderWidth=P(h)):"angl"===n&&.049!==h&&(o.style.borderTopWidth=P(h),o.style.borderRightWidth=P(h)),i=r.depth+l,e.backgroundColor&&(o.style.backgroundColor=e.backgroundColor,e.borderColor&&(o.style.borderColor=e.borderColor))}var h;let c;if(e.backgroundColor)c=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:i},{type:"elem",elem:r,shift:0}]},t);else{const e=/cancel|phase/.test(n)?["svg-align"]:[];c=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:o,shift:i,wrapperClasses:e}]},t)}return/cancel/.test(n)&&(c.height=r.height,c.depth=r.depth),/cancel/.test(n)&&!a?Pe.makeSpan(["mord","cancel-lap"],[c],t):Pe.makeSpan(["mord"],[c],t)},Ar=(e,t)=>{let r=0;const n=new ft.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[St(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){const r=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+r+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};$e({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){let{parser:n,funcName:o}=e;const s=Rt(t[0],"color-token").color,i=t[1];return{type:"enclose",mode:n.mode,label:o,backgroundColor:s,body:i}},htmlBuilder:zr,mathmlBuilder:Ar}),$e({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){let{parser:n,funcName:o}=e;const s=Rt(t[0],"color-token").color,i=Rt(t[1],"color-token").color,a=t[2];return{type:"enclose",mode:n.mode,label:o,backgroundColor:i,borderColor:s,body:a}},htmlBuilder:zr,mathmlBuilder:Ar}),$e({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){let{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),$e({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){let{parser:r,funcName:n}=e;const o=t[0];return{type:"enclose",mode:r.mode,label:n,body:o}},htmlBuilder:zr,mathmlBuilder:Ar}),$e({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){let{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});const Tr={};function Br(e){let{type:t,names:r,props:n,handler:o,htmlBuilder:s,mathmlBuilder:i}=e;const a={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:o};for(let e=0;e<r.length;++e)Tr[r[e]]=a;s&&(_e[t]=s),i&&(je[t]=i)}const Cr={};function Nr(e,t){Cr[e]=t}class qr{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new qr(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class Ir{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new Ir(t,qr.range(this,e))}}function Rr(e){const t=[];e.consumeSpaces();let r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}const Hr=e=>{if(!e.parser.settings.displayMode)throw new n("{"+e.envName+"} can be used only in display mode.")};function Or(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function Er(e,t,r){let{hskipBeforeAndAfter:o,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:h,singleRow:c,emptySingleRow:m,maxNumCols:p,leqno:u}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!a){const t=e.gullet.expandMacroAsText("\\arraystretch");if(null==t)a=1;else if(a=parseFloat(t),!a||a<0)throw new n("Invalid \\arraystretch: "+t)}e.gullet.beginGroup();let d=[];const g=[d],f=[],b=[],y=null!=h?[]:void 0;function x(){h&&e.gullet.macros.set("\\@eqnsw","1",!0)}function w(){y&&(e.gullet.macros.get("\\df@tag")?(y.push(e.subparse([new Ir("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):y.push(Boolean(h)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(x(),b.push(Rr(e));;){let t=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),t={type:"ordgroup",mode:e.mode,body:t},r&&(t={type:"styling",mode:e.mode,style:r,body:[t]}),d.push(t);const o=e.fetch().text;if("&"===o){if(p&&d.length===p){if(c||l)throw new n("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===o){w(),1===d.length&&"styling"===t.type&&0===t.body[0].body.length&&(g.length>1||!m)&&g.pop(),b.length<g.length+1&&b.push([]);break}if("\\\\"!==o)throw new n("Expected & or \\\\ or \\cr or \\end",e.nextToken);{let t;e.consume()," "!==e.gullet.future().text&&(t=e.parseSizeGroup(!0)),f.push(t?t.value:null),w(),b.push(Rr(e)),d=[],g.push(d),x()}}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:s,arraystretch:a,body:g,cols:i,rowGaps:f,hskipBeforeAndAfter:o,hLinesBeforeRow:b,colSeparationType:l,tags:y,leqno:u}}function Lr(e){return"d"===e.slice(0,1)?"display":"text"}const Dr=function(e,t){let r,o;const s=e.body.length,i=e.hLinesBeforeRow;let a=0,h=new Array(s);const c=[],m=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),p=1/t.fontMetrics().ptPerEm;let u=5*p;if(e.colSeparationType&&"small"===e.colSeparationType){u=t.havingStyle(w.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778}const d="CD"===e.colSeparationType?V({number:3,unit:"ex"},t):12*p,g=3*p,f=e.arraystretch*d,b=.7*f,y=.3*f;let x=0;function v(e){for(let t=0;t<e.length;++t)t>0&&(x+=.25),c.push({pos:x,isDashed:e[t]})}for(v(i[0]),r=0;r<e.body.length;++r){const n=e.body[r];let s=b,l=y;a<n.length&&(a=n.length);const c=new Array(n.length);for(o=0;o<n.length;++o){const e=ct(n[o],t);l<e.depth&&(l=e.depth),s<e.height&&(s=e.height),c[o]=e}const m=e.rowGaps[r];let p=0;m&&(p=V(m,t),p>0&&(p+=y,l<p&&(l=p),p=0)),e.addJot&&(l+=g),c.height=s,c.depth=l,x+=s,c.pos=x,x+=l+p,h[r]=c,v(i[r+1])}const k=x/2+t.fontMetrics().axisHeight,S=e.cols||[],M=[];let z,A;const T=[];if(e.tags&&e.tags.some((e=>e)))for(r=0;r<s;++r){const n=h[r],o=n.pos-k,s=e.tags[r];let i;i=!0===s?Pe.makeSpan(["eqn-num"],[],t):!1===s?Pe.makeSpan([],[],t):Pe.makeSpan([],ot(s,t,!0),t),i.depth=n.depth,i.height=n.height,T.push({type:"elem",elem:i,shift:o})}for(o=0,A=0;o<a||A<S.length;++o,++A){let i,c=S[A]||{},p=!0;for(;"separator"===c.type;){if(p||(z=Pe.makeSpan(["arraycolsep"],[]),z.style.width=P(t.fontMetrics().doubleRuleSep),M.push(z)),"|"!==c.separator&&":"!==c.separator)throw new n("Invalid separator type: "+c.separator);{const e="|"===c.separator?"solid":"dashed",r=Pe.makeSpan(["vertical-separator"],[],t);r.style.height=P(x),r.style.borderRightWidth=P(m),r.style.borderRightStyle=e,r.style.margin="0 "+P(-m/2);const n=x-k;n&&(r.style.verticalAlign=P(-n)),M.push(r)}A++,c=S[A]||{},p=!1}if(o>=a)continue;(o>0||e.hskipBeforeAndAfter)&&(i=l.deflt(c.pregap,u),0!==i&&(z=Pe.makeSpan(["arraycolsep"],[]),z.style.width=P(i),M.push(z)));let d=[];for(r=0;r<s;++r){const e=h[r],t=e[o];if(!t)continue;const n=e.pos-k;t.depth=e.depth,t.height=e.height,d.push({type:"elem",elem:t,shift:n})}d=Pe.makeVList({positionType:"individualShift",children:d},t),d=Pe.makeSpan(["col-align-"+(c.align||"c")],[d]),M.push(d),(o<a-1||e.hskipBeforeAndAfter)&&(i=l.deflt(c.postgap,u),0!==i&&(z=Pe.makeSpan(["arraycolsep"],[]),z.style.width=P(i),M.push(z)))}if(h=Pe.makeSpan(["mtable"],M),c.length>0){const e=Pe.makeLineSpan("hline",t,m),r=Pe.makeLineSpan("hdashline",t,m),n=[{type:"elem",elem:h,shift:0}];for(;c.length>0;){const t=c.pop(),o=t.pos-k;t.isDashed?n.push({type:"elem",elem:r,shift:o}):n.push({type:"elem",elem:e,shift:o})}h=Pe.makeVList({positionType:"individualShift",children:n},t)}if(0===T.length)return Pe.makeSpan(["mord"],[h],t);{let e=Pe.makeVList({positionType:"individualShift",children:T},t);return e=Pe.makeSpan(["tag"],[e],t),Pe.makeFragment([h,e])}},Vr={c:"center ",l:"left ",r:"right "},Pr=function(e,t){const r=[],n=new ft.MathNode("mtd",[],["mtr-glue"]),o=new ft.MathNode("mtd",[],["mml-eqn-num"]);for(let s=0;s<e.body.length;s++){const i=e.body[s],a=[];for(let e=0;e<i.length;e++)a.push(new ft.MathNode("mtd",[St(i[e],t)]));e.tags&&e.tags[s]&&(a.unshift(n),a.push(n),e.leqno?a.unshift(o):a.push(o)),r.push(new ft.MathNode("mtr",a))}let s=new ft.MathNode("mtable",r);const i=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);s.setAttribute("rowspacing",P(i));let a="",l="";if(e.cols&&e.cols.length>0){const t=e.cols;let r="",n=!1,o=0,i=t.length;"separator"===t[0].type&&(a+="top ",o=1),"separator"===t[t.length-1].type&&(a+="bottom ",i-=1);for(let e=o;e<i;e++)"align"===t[e].type?(l+=Vr[t[e].align],n&&(r+="none "),n=!0):"separator"===t[e].type&&n&&(r+="|"===t[e].separator?"solid ":"dashed ",n=!1);s.setAttribute("columnalign",l.trim()),/[sd]/.test(r)&&s.setAttribute("columnlines",r.trim())}if("align"===e.colSeparationType){const t=e.cols||[];let r="";for(let e=1;e<t.length;e++)r+=e%2?"0em ":"1em ";s.setAttribute("columnspacing",r.trim())}else"alignat"===e.colSeparationType||"gather"===e.colSeparationType?s.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?s.setAttribute("columnspacing","0.2778em"):"CD"===e.colSeparationType?s.setAttribute("columnspacing","0.5em"):s.setAttribute("columnspacing","1em");let h="";const c=e.hLinesBeforeRow;a+=c[0].length>0?"left ":"",a+=c[c.length-1].length>0?"right ":"";for(let e=1;e<c.length-1;e++)h+=0===c[e].length?"none ":c[e][0]?"dashed ":"solid ";return/[sd]/.test(h)&&s.setAttribute("rowlines",h.trim()),""!==a&&(s=new ft.MathNode("menclose",[s]),s.setAttribute("notation",a.trim())),e.arraystretch&&e.arraystretch<1&&(s=new ft.MathNode("mstyle",[s]),s.setAttribute("scriptlevel","1")),s},Fr=function(e,t){-1===e.envName.indexOf("ed")&&Hr(e);const r=[],o=e.envName.indexOf("at")>-1?"alignat":"align",s="split"===e.envName,i=Er(e.parser,{cols:r,addJot:!0,autoTag:s?void 0:Or(e.envName),emptySingleRow:!0,colSeparationType:o,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display");let a,l=0;const h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){let e="";for(let r=0;r<t[0].body.length;r++){e+=Rt(t[0].body[r],"textord").text}a=Number(e),l=2*a}const c=!l;i.body.forEach((function(e){for(let t=1;t<e.length;t+=2){const r=Rt(e[t],"styling");Rt(r.body[0],"ordgroup").body.unshift(h)}if(c)l<e.length&&(l=e.length);else{const t=e.length/2;if(a<t)throw new n("Too many math in a row: expected "+a+", but got "+t,e[0])}}));for(let e=0;e<l;++e){let t="r",n=0;e%2==1?t="l":e>0&&c&&(n=1),r[e]={type:"align",align:t,pregap:n,postgap:0}}return i.colSeparationType=c?"align":"alignat",i};Br({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){const r=(Ot(t[0])?[t[0]]:Rt(t[0],"ordgroup").body).map((function(e){const t=Ht(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new n("Unknown column alignment: "+t,e)})),o={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Er(e.parser,o,Lr(e.envName))},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){const t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")];let r="c";const o={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){const t=e.parser;if(t.consumeSpaces(),"["===t.fetch().text){if(t.consume(),t.consumeSpaces(),r=t.fetch().text,-1==="lcr".indexOf(r))throw new n("Expected l or c or r",t.nextToken);t.consume(),t.consumeSpaces(),t.expect("]"),t.consume(),o.cols=[{type:"align",align:r}]}}const s=Er(e.parser,o,Lr(e.envName)),i=Math.max(0,...s.body.map((e=>e.length)));return s.cols=new Array(i).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[s],left:t[0],right:t[1],rightColor:void 0}:s},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){const t=Er(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){const r=(Ot(t[0])?[t[0]]:Rt(t[0],"ordgroup").body).map((function(e){const t=Ht(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new n("Unknown column alignment: "+t,e)}));if(r.length>1)throw new n("{subarray} can contain only one column");let o={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if(o=Er(e.parser,o,"script"),o.body.length>0&&o.body[0].length>1)throw new n("{subarray} can contain only one column");return o},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=Er(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Lr(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Fr,htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&Hr(e);const t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Or(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Er(e.parser,t,"display")},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Fr,htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Hr(e);const t={autoTag:Or(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Er(e.parser,t,"display")},htmlBuilder:Dr,mathmlBuilder:Pr}),Br({type:"array",names:["CD"],props:{numArgs:0},handler(e){return Hr(e),function(e){const t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();const r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new n("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}let r=[];const o=[r];for(let a=0;a<t.length;a++){const l=t[a];let h={type:"styling",body:[],mode:"math",style:"display"};for(let t=0;t<l.length;t++)if(Xt(l[t])){r.push(h),t+=1;const o=Ht(l[t]).text,a=new Array(2);if(a[0]={type:"ordgroup",mode:"math",body:[]},a[1]={type:"ordgroup",mode:"math",body:[]},"=|.".indexOf(o)>-1);else{if(!("<>AV".indexOf(o)>-1))throw new n('Expected one of "<>AV=|." after @',l[t]);for(let e=0;e<2;e++){let r=!0;for(let h=t+1;h<l.length;h++){if(i=o,("mathord"===(s=l[h]).type||"atom"===s.type)&&s.text===i){r=!1,t=h;break}if(Xt(l[h]))throw new n("Missing a "+o+" character to complete a CD arrow.",l[h]);a[e].body.push(l[h])}if(r)throw new n("Missing a "+o+" character to complete a CD arrow.",l[t])}}const c={type:"styling",body:[Wt(o,a,e)],mode:"math",style:"display"};r.push(c),h={type:"styling",body:[],mode:"math",style:"display"}}else h.body.push(l[t]);a%2==0?r.push(h):r.shift(),r=[],o.push(r)}var s,i;return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:"math",body:o,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(o[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(o.length+1).fill([])}}(e.parser)},htmlBuilder:Dr,mathmlBuilder:Pr}),Nr("\\nonumber","\\gdef\\@eqnsw{0}"),Nr("\\notag","\\nonumber"),$e({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new n(e.funcName+" valid only within array environment")}});var Gr=Tr;$e({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){let{parser:r,funcName:o}=e;const s=t[0];if("ordgroup"!==s.type)throw new n("Invalid environment name",s);let i="";for(let e=0;e<s.body.length;++e)i+=Rt(s.body[e],"textord").text;if("\\begin"===o){if(!Gr.hasOwnProperty(i))throw new n("No such environment: "+i,s);const e=Gr[i],{args:t,optArgs:o}=r.parseArguments("\\begin{"+i+"}",e),a={mode:r.mode,envName:i,parser:r},l=e.handler(a,t,o);r.expect("\\end",!1);const h=r.nextToken,c=Rt(r.parseFunction(),"environment");if(c.name!==i)throw new n("Mismatch: \\begin{"+i+"} matched by \\end{"+c.name+"}",h);return l}return{type:"environment",mode:r.mode,name:i,nameGroup:s}}});const Ur=(e,t)=>{const r=e.font,n=t.withFont(r);return ct(e.body,n)},Yr=(e,t)=>{const r=e.font,n=t.withFont(r);return St(e.body,n)},Xr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};$e({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=Ke(t[0]);let s=n;return s in Xr&&(s=Xr[s]),{type:"font",mode:r.mode,font:s.slice(1),body:o}},htmlBuilder:Ur,mathmlBuilder:Yr}),$e({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{let{parser:r}=e;const n=t[0],o=l.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:Ut(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:o}}}),$e({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{let{parser:r,funcName:n,breakOnTokenText:o}=e;const{mode:s}=r,i=r.parseExpression(!0,o);return{type:"font",mode:s,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:i}}},htmlBuilder:Ur,mathmlBuilder:Yr});const Wr=(e,t)=>{let r=t;return"display"===e?r=r.id>=w.SCRIPT.id?r.text():w.DISPLAY:"text"===e&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===e?r=w.SCRIPT:"scriptscript"===e&&(r=w.SCRIPTSCRIPT),r},_r=(e,t)=>{const r=Wr(e.size,t.style),n=r.fracNum(),o=r.fracDen();let s;s=t.havingStyle(n);const i=ct(e.numer,s,t);if(e.continued){const e=8.5/t.fontMetrics().ptPerEm,r=3.5/t.fontMetrics().ptPerEm;i.height=i.height<e?e:i.height,i.depth=i.depth<r?r:i.depth}s=t.havingStyle(o);const a=ct(e.denom,s,t);let l,h,c,m,p,u,d,g,f,b;if(e.hasBarLine?(e.barSize?(h=V(e.barSize,t),l=Pe.makeLineSpan("frac-line",t,h)):l=Pe.makeLineSpan("frac-line",t),h=l.height,c=l.height):(l=null,h=0,c=t.fontMetrics().defaultRuleThickness),r.size===w.DISPLAY.size||"display"===e.size?(m=t.fontMetrics().num1,p=h>0?3*c:7*c,u=t.fontMetrics().denom1):(h>0?(m=t.fontMetrics().num2,p=c):(m=t.fontMetrics().num3,p=3*c),u=t.fontMetrics().denom2),l){const e=t.fontMetrics().axisHeight;m-i.depth-(e+.5*h)<p&&(m+=p-(m-i.depth-(e+.5*h))),e-.5*h-(a.height-u)<p&&(u+=p-(e-.5*h-(a.height-u)));const r=-(e-.5*h);d=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:u},{type:"elem",elem:l,shift:r},{type:"elem",elem:i,shift:-m}]},t)}else{const e=m-i.depth-(a.height-u);e<p&&(m+=.5*(p-e),u+=.5*(p-e)),d=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:u},{type:"elem",elem:i,shift:-m}]},t)}return s=t.havingStyle(r),d.height*=s.sizeMultiplier/t.sizeMultiplier,d.depth*=s.sizeMultiplier/t.sizeMultiplier,g=r.size===w.DISPLAY.size?t.fontMetrics().delim1:r.size===w.SCRIPTSCRIPT.size?t.havingStyle(w.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,f=null==e.leftDelim?ht(t,["mopen"]):wr.customSizedDelim(e.leftDelim,g,!0,t.havingStyle(r),e.mode,["mopen"]),b=e.continued?Pe.makeSpan([]):null==e.rightDelim?ht(t,["mclose"]):wr.customSizedDelim(e.rightDelim,g,!0,t.havingStyle(r),e.mode,["mclose"]),Pe.makeSpan(["mord"].concat(s.sizingClasses(t)),[f,Pe.makeSpan(["mfrac"],[d]),b],t)},jr=(e,t)=>{let r=new ft.MathNode("mfrac",[St(e.numer,t),St(e.denom,t)]);if(e.hasBarLine){if(e.barSize){const n=V(e.barSize,t);r.setAttribute("linethickness",P(n))}}else r.setAttribute("linethickness","0px");const n=Wr(e.size,t.style);if(n.size!==t.style.size){r=new ft.MathNode("mstyle",[r]);const e=n.size===w.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",e),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new ft.MathNode("mo",[new ft.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(r),null!=e.rightDelim){const r=new ft.MathNode("mo",[new ft.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}return yt(t)}return r};$e({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0],s=t[1];let i,a=null,l=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":i=!0;break;case"\\\\atopfrac":i=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=!1,a="(",l=")";break;case"\\\\bracefrac":i=!1,a="\\{",l="\\}";break;case"\\\\brackfrac":i=!1,a="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:r.mode,continued:!1,numer:o,denom:s,hasBarLine:i,leftDelim:a,rightDelim:l,size:h,barSize:null}},htmlBuilder:_r,mathmlBuilder:jr}),$e({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0],s=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:o,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),$e({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){let t,{parser:r,funcName:n,token:o}=e;switch(n){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:o}}});const $r=["display","text","script","scriptscript"],Zr=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};$e({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){let{parser:r}=e;const n=t[4],o=t[5],s=Ke(t[0]),i="atom"===s.type&&"open"===s.family?Zr(s.text):null,a=Ke(t[1]),l="atom"===a.type&&"close"===a.family?Zr(a.text):null,h=Rt(t[2],"size");let c,m=null;h.isBlank?c=!0:(m=h.value,c=m.number>0);let p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){const e=Rt(u.body[0],"textord");p=$r[Number(e.text)]}}else u=Rt(u,"textord"),p=$r[Number(u.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:c,barSize:m,leftDelim:i,rightDelim:l,size:p}},htmlBuilder:_r,mathmlBuilder:jr}),$e({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){let{parser:r,funcName:n,token:o}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Rt(t[0],"size").value,token:o}}}),$e({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0],s=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Rt(t[1],"infix").size),i=t[2],a=s.number>0;return{type:"genfrac",mode:r.mode,numer:o,denom:i,continued:!1,hasBarLine:a,barSize:s,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:_r,mathmlBuilder:jr});const Kr=(e,t)=>{const r=t.style;let n,o;"supsub"===e.type?(n=e.sup?ct(e.sup,t.havingStyle(r.sup()),t):ct(e.sub,t.havingStyle(r.sub()),t),o=Rt(e.base,"horizBrace")):o=Rt(e,"horizBrace");const s=ct(o.base,t.havingBaseStyle(w.DISPLAY)),i=It(o,t);let a;if(o.isOver?(a=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:i}]},t),a.children[0].children[0].children[1].classes.push("svg-align")):(a=Pe.makeVList({positionType:"bottom",positionData:s.depth+.1+i.height,children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:s}]},t),a.children[0].children[0].children[0].classes.push("svg-align")),n){const e=Pe.makeSpan(["mord",o.isOver?"mover":"munder"],[a],t);a=o.isOver?Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:e},{type:"kern",size:.2},{type:"elem",elem:n}]},t):Pe.makeVList({positionType:"bottom",positionData:e.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:e}]},t)}return Pe.makeSpan(["mord",o.isOver?"mover":"munder"],[a],t)};$e({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){let{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:Kr,mathmlBuilder:(e,t)=>{const r=qt(e.label);return new ft.MathNode(e.isOver?"mover":"munder",[St(e.base,t),r])}}),$e({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;const n=t[1],o=Rt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:o})?{type:"href",mode:r.mode,href:o,body:Je(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{const r=ot(e.body,t,!1);return Pe.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{let r=kt(e.body,t);return r instanceof dt||(r=new dt("mrow",[r])),r.setAttribute("href",e.href),r}}),$e({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;const n=Rt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");const o=[];for(let e=0;e<n.length;e++){let t=n[e];"~"===t&&(t="\\textasciitilde"),o.push({type:"textord",mode:"text",text:t})}const s={type:"text",mode:r.mode,font:"\\texttt",body:o};return{type:"href",mode:r.mode,href:n,body:Je(s)}}}),$e({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler(e,t){let{parser:r}=e;return{type:"hbox",mode:r.mode,body:Je(t[0])}},htmlBuilder(e,t){const r=ot(e.body,t,!1);return Pe.makeFragment(r)},mathmlBuilder(e,t){return new ft.MathNode("mrow",vt(e.body,t))}}),$e({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{let{parser:r,funcName:o,token:s}=e;const i=Rt(t[0],"raw").string,a=t[1];let l;r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");const h={};switch(o){case"\\htmlClass":h.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":h.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":h.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{const e=i.split(",");for(let t=0;t<e.length;t++){const r=e[t],o=r.indexOf("=");if(o<0)throw new n("\\htmlData key/value '"+r+"' missing equals sign");const s=r.slice(0,o),i=r.slice(o+1);h["data-"+s.trim()]=i}l={command:"\\htmlData",attributes:h};break}default:throw new Error("Unrecognized html command")}return r.settings.isTrusted(l)?{type:"html",mode:r.mode,attributes:h,body:Je(a)}:r.formatUnsupportedCmd(o)},htmlBuilder:(e,t)=>{const r=ot(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));const o=Pe.makeSpan(n,r,t);for(const t in e.attributes)"class"!==t&&e.attributes.hasOwnProperty(t)&&o.setAttribute(t,e.attributes[t]);return o},mathmlBuilder:(e,t)=>kt(e.body,t)}),$e({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Je(t[0]),mathml:Je(t[1])}},htmlBuilder:(e,t)=>{const r=ot(e.html,t,!1);return Pe.makeFragment(r)},mathmlBuilder:(e,t)=>kt(e.mathml,t)});const Jr=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};{const t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new n("Invalid size: '"+e+"' in \\includegraphics");const r={number:+(t[1]+t[2]),unit:t[3]};if(!D(r))throw new n("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r}};$e({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{let{parser:o}=e,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(r[0]){const e=Rt(r[0],"raw").string.split(",");for(let t=0;t<e.length;t++){const r=e[t].split("=");if(2===r.length){const e=r[1].trim();switch(r[0].trim()){case"alt":l=e;break;case"width":s=Jr(e);break;case"height":i=Jr(e);break;case"totalheight":a=Jr(e);break;default:throw new n("Invalid key: '"+r[0]+"' in \\includegraphics.")}}}}const h=Rt(t[0],"url").url;return""===l&&(l=h,l=l.replace(/^.*[\\/]/,""),l=l.substring(0,l.lastIndexOf("."))),o.settings.isTrusted({command:"\\includegraphics",url:h})?{type:"includegraphics",mode:o.mode,alt:l,width:s,height:i,totalheight:a,src:h}:o.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:(e,t)=>{const r=V(e.height,t);let n=0;e.totalheight.number>0&&(n=V(e.totalheight,t)-r);let o=0;e.width.number>0&&(o=V(e.width,t));const s={height:P(r+n)};o>0&&(s.width=P(o)),n>0&&(s.verticalAlign=P(-n));const i=new j(e.src,e.alt,s);return i.height=r,i.depth=n,i},mathmlBuilder:(e,t)=>{const r=new ft.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);const n=V(e.height,t);let o=0;if(e.totalheight.number>0&&(o=V(e.totalheight,t)-n,r.setAttribute("valign",P(-o))),r.setAttribute("height",P(n+o)),e.width.number>0){const n=V(e.width,t);r.setAttribute("width",P(n))}return r.setAttribute("src",e.src),r}}),$e({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){let{parser:r,funcName:n}=e;const o=Rt(t[0],"size");if(r.settings.strict){const e="m"===n[1],t="mu"===o.value.unit;e?(t||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+o.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):t&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:o.value}},htmlBuilder(e,t){return Pe.makeGlue(e.dimension,t)},mathmlBuilder(e,t){const r=V(e.dimension,t);return new ft.SpaceNode(r)}}),$e({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:o}},htmlBuilder:(e,t)=>{let r;"clap"===e.alignment?(r=Pe.makeSpan([],[ct(e.body,t)]),r=Pe.makeSpan(["inner"],[r],t)):r=Pe.makeSpan(["inner"],[ct(e.body,t)]);const n=Pe.makeSpan(["fix"],[]);let o=Pe.makeSpan([e.alignment],[r,n],t);const s=Pe.makeSpan(["strut"]);return s.style.height=P(o.height+o.depth),o.depth&&(s.style.verticalAlign=P(-o.depth)),o.children.unshift(s),o=Pe.makeSpan(["thinbox"],[o],t),Pe.makeSpan(["mord","vbox"],[o],t)},mathmlBuilder:(e,t)=>{const r=new ft.MathNode("mpadded",[St(e.body,t)]);if("rlap"!==e.alignment){const t="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",t+"width")}return r.setAttribute("width","0px"),r}}),$e({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){let{funcName:r,parser:n}=e;const o=n.mode;n.switchMode("math");const s="\\("===r?"\\)":"$",i=n.parseExpression(!1,s);return n.expect(s),n.switchMode(o),{type:"styling",mode:n.mode,style:"text",body:i}}}),$e({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new n("Mismatched "+e.funcName)}});const Qr=(e,t)=>{switch(t.style.size){case w.DISPLAY.size:return e.display;case w.TEXT.size:return e.text;case w.SCRIPT.size:return e.script;case w.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};$e({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{let{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Je(t[0]),text:Je(t[1]),script:Je(t[2]),scriptscript:Je(t[3])}},htmlBuilder:(e,t)=>{const r=Qr(e,t),n=ot(r,t,!1);return Pe.makeFragment(n)},mathmlBuilder:(e,t)=>{const r=Qr(e,t);return kt(r,t)}});const en=(e,t,r,n,o,s,i)=>{e=Pe.makeSpan([],[e]);const a=r&&l.isCharacterBox(r);let h,c,m;if(t){const e=ct(t,n.havingStyle(o.sup()),n);c={elem:e,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-e.depth)}}if(r){const e=ct(r,n.havingStyle(o.sub()),n);h={elem:e,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-e.height)}}if(c&&h){const t=n.fontMetrics().bigOpSpacing5+h.elem.height+h.elem.depth+h.kern+e.depth+i;m=Pe.makeVList({positionType:"bottom",positionData:t,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:h.elem,marginLeft:P(-s)},{type:"kern",size:h.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:P(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(h){const t=e.height-i;m=Pe.makeVList({positionType:"top",positionData:t,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:h.elem,marginLeft:P(-s)},{type:"kern",size:h.kern},{type:"elem",elem:e}]},n)}else{if(!c)return e;{const t=e.depth+i;m=Pe.makeVList({positionType:"bottom",positionData:t,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:P(s)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}}const p=[m];if(h&&0!==s&&!a){const e=Pe.makeSpan(["mspace"],[],n);e.style.marginRight=P(s),p.unshift(e)}return Pe.makeSpan(["mop","op-limits"],p,n)},tn=["\\smallint"],rn=(e,t)=>{let r,n,o,s=!1;"supsub"===e.type?(r=e.sup,n=e.sub,o=Rt(e.base,"op"),s=!0):o=Rt(e,"op");const i=t.style;let a,l=!1;if(i.size===w.DISPLAY.size&&o.symbol&&!tn.includes(o.name)&&(l=!0),o.symbol){const e=l?"Size2-Regular":"Size1-Regular";let r="";if("\\oiint"!==o.name&&"\\oiiint"!==o.name||(r=o.name.slice(1),o.name="oiint"===r?"\\iint":"\\iiint"),a=Pe.makeSymbol(o.name,e,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),r.length>0){const e=a.italic,n=Pe.staticSvg(r+"Size"+(l?"2":"1"),t);a=Pe.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:0},{type:"elem",elem:n,shift:l?.08:0}]},t),o.name="\\"+r,a.classes.unshift("mop"),a.italic=e}}else if(o.body){const e=ot(o.body,t,!0);1===e.length&&e[0]instanceof Z?(a=e[0],a.classes[0]="mop"):a=Pe.makeSpan(["mop"],e,t)}else{const e=[];for(let r=1;r<o.name.length;r++)e.push(Pe.mathsym(o.name[r],o.mode,t));a=Pe.makeSpan(["mop"],e,t)}let h=0,c=0;return(a instanceof Z||"\\oiint"===o.name||"\\oiiint"===o.name)&&!o.suppressBaseShift&&(h=(a.height-a.depth)/2-t.fontMetrics().axisHeight,c=a.italic),s?en(a,r,n,t,i,c,h):(h&&(a.style.position="relative",a.style.top=P(h)),a)},nn=(e,t)=>{let r;if(e.symbol)r=new dt("mo",[bt(e.name,e.mode)]),tn.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new dt("mo",vt(e.body,t));else{r=new dt("mi",[new gt(e.name.slice(1))]);const t=new dt("mo",[bt("\u2061","text")]);r=e.parentIsSupSub?new dt("mrow",[r,t]):ut([r,t])}return r},on={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};$e({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{let{parser:r,funcName:n}=e,o=n;return 1===o.length&&(o=on[o]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:o}},htmlBuilder:rn,mathmlBuilder:nn}),$e({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{let{parser:r}=e;const n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Je(n)}},htmlBuilder:rn,mathmlBuilder:nn});const sn={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};$e({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){let{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:rn,mathmlBuilder:nn}),$e({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){let{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:rn,mathmlBuilder:nn}),$e({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(e){let{parser:t,funcName:r}=e,n=r;return 1===n.length&&(n=sn[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:rn,mathmlBuilder:nn});const an=(e,t)=>{let r,n,o,s,i=!1;if("supsub"===e.type?(r=e.sup,n=e.sub,o=Rt(e.base,"operatorname"),i=!0):o=Rt(e,"operatorname"),o.body.length>0){const e=o.body.map((e=>{const t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),r=ot(e,t.withFont("mathrm"),!0);for(let e=0;e<r.length;e++){const t=r[e];t instanceof Z&&(t.text=t.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}s=Pe.makeSpan(["mop"],r,t)}else s=Pe.makeSpan(["mop"],[],t);return i?en(s,r,n,t,t.style,0,0):s};function ln(e,t,r){const n=ot(e,t,!1),o=t.sizeMultiplier/r.sizeMultiplier;for(let e=0;e<n.length;e++){const s=n[e].classes.indexOf("sizing");s<0?Array.prototype.push.apply(n[e].classes,t.sizingClasses(r)):n[e].classes[s+1]==="reset-size"+t.size&&(n[e].classes[s+1]="reset-size"+r.size),n[e].height*=o,n[e].depth*=o}return Pe.makeFragment(n)}$e({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{let{parser:r,funcName:n}=e;const o=t[0];return{type:"operatorname",mode:r.mode,body:Je(o),alwaysHandleSupSub:"\\operatornamewithlimits"===n,limits:!1,parentIsSupSub:!1}},htmlBuilder:an,mathmlBuilder:(e,t)=>{let r=vt(e.body,t.withFont("mathrm")),n=!0;for(let e=0;e<r.length;e++){const t=r[e];if(t instanceof ft.SpaceNode);else if(t instanceof ft.MathNode)switch(t.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":{const e=t.children[0];1===t.children.length&&e instanceof ft.TextNode?e.text=e.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):n=!1;break}default:n=!1}else n=!1}if(n){const e=r.map((e=>e.toText())).join("");r=[new ft.TextNode(e)]}const o=new ft.MathNode("mi",r);o.setAttribute("mathvariant","normal");const s=new ft.MathNode("mo",[bt("\u2061","text")]);return e.parentIsSupSub?new ft.MathNode("mrow",[o,s]):ft.newDocumentFragment([o,s])}}),Nr("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),Ze({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Pe.makeFragment(ot(e.body,t,!1)):Pe.makeSpan(["mord"],ot(e.body,t,!0),t)},mathmlBuilder(e,t){return kt(e.body,t,!0)}}),$e({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){let{parser:r}=e;const n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){const r=ct(e.body,t.havingCrampedStyle()),n=Pe.makeLineSpan("overline-line",t),o=t.fontMetrics().defaultRuleThickness,s=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*o},{type:"elem",elem:n},{type:"kern",size:o}]},t);return Pe.makeSpan(["mord","overline"],[s],t)},mathmlBuilder(e,t){const r=new ft.MathNode("mo",[new ft.TextNode("\u203e")]);r.setAttribute("stretchy","true");const n=new ft.MathNode("mover",[St(e.body,t),r]);return n.setAttribute("accent","true"),n}}),$e({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;const n=t[0];return{type:"phantom",mode:r.mode,body:Je(n)}},htmlBuilder:(e,t)=>{const r=ot(e.body,t.withPhantom(),!1);return Pe.makeFragment(r)},mathmlBuilder:(e,t)=>{const r=vt(e.body,t);return new ft.MathNode("mphantom",r)}}),$e({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;const n=t[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{let r=Pe.makeSpan([],[ct(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(let e=0;e<r.children.length;e++)r.children[e].height=0,r.children[e].depth=0;return r=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t),Pe.makeSpan(["mord"],[r],t)},mathmlBuilder:(e,t)=>{const r=vt(Je(e.body),t),n=new ft.MathNode("mphantom",r),o=new ft.MathNode("mpadded",[n]);return o.setAttribute("height","0px"),o.setAttribute("depth","0px"),o}}),$e({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{let{parser:r}=e;const n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{const r=Pe.makeSpan(["inner"],[ct(e.body,t.withPhantom())]),n=Pe.makeSpan(["fix"],[]);return Pe.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{const r=vt(Je(e.body),t),n=new ft.MathNode("mphantom",r),o=new ft.MathNode("mpadded",[n]);return o.setAttribute("width","0px"),o}}),$e({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){let{parser:r}=e;const n=Rt(t[0],"size").value,o=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:o}},htmlBuilder(e,t){const r=ct(e.body,t),n=V(e.dy,t);return Pe.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){const r=new ft.MathNode("mpadded",[St(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}}),$e({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){let{parser:t}=e;return{type:"internal",mode:t.mode}}}),$e({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){let{parser:n}=e;const o=r[0],s=Rt(t[0],"size"),i=Rt(t[1],"size");return{type:"rule",mode:n.mode,shift:o&&Rt(o,"size").value,width:s.value,height:i.value}},htmlBuilder(e,t){const r=Pe.makeSpan(["mord","rule"],[],t),n=V(e.width,t),o=V(e.height,t),s=e.shift?V(e.shift,t):0;return r.style.borderRightWidth=P(n),r.style.borderTopWidth=P(o),r.style.bottom=P(s),r.width=n,r.height=o+s,r.depth=-s,r.maxFontSize=1.125*o*t.sizeMultiplier,r},mathmlBuilder(e,t){const r=V(e.width,t),n=V(e.height,t),o=e.shift?V(e.shift,t):0,s=t.color&&t.getColor()||"black",i=new ft.MathNode("mspace");i.setAttribute("mathbackground",s),i.setAttribute("width",P(r)),i.setAttribute("height",P(n));const a=new ft.MathNode("mpadded",[i]);return o>=0?a.setAttribute("height",P(o)):(a.setAttribute("height",P(o)),a.setAttribute("depth",P(-o))),a.setAttribute("voffset",P(o)),a}});const hn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];$e({type:"sizing",names:hn,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{let{breakOnTokenText:r,funcName:n,parser:o}=e;const s=o.parseExpression(!1,r);return{type:"sizing",mode:o.mode,size:hn.indexOf(n)+1,body:s}},htmlBuilder:(e,t)=>{const r=t.havingSize(e.size);return ln(e.body,r,t)},mathmlBuilder:(e,t)=>{const r=t.havingSize(e.size),n=vt(e.body,r),o=new ft.MathNode("mstyle",n);return o.setAttribute("mathsize",P(r.sizeMultiplier)),o}}),$e({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{let{parser:n}=e,o=!1,s=!1;const i=r[0]&&Rt(r[0],"ordgroup");if(i){let e="";for(let t=0;t<i.body.length;++t){if(e=i.body[t].text,"t"===e)o=!0;else{if("b"!==e){o=!1,s=!1;break}s=!0}}}else o=!0,s=!0;const a=t[0];return{type:"smash",mode:n.mode,body:a,smashHeight:o,smashDepth:s}},htmlBuilder:(e,t)=>{const r=Pe.makeSpan([],[ct(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(let e=0;e<r.children.length;e++)r.children[e].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(let e=0;e<r.children.length;e++)r.children[e].depth=0;const n=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t);return Pe.makeSpan(["mord"],[n],t)},mathmlBuilder:(e,t)=>{const r=new ft.MathNode("mpadded",[St(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),$e({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){let{parser:n}=e;const o=r[0],s=t[0];return{type:"sqrt",mode:n.mode,body:s,index:o}},htmlBuilder(e,t){let r=ct(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Pe.wrapFragment(r,t);const n=t.fontMetrics().defaultRuleThickness;let o=n;t.style.id<w.TEXT.id&&(o=t.fontMetrics().xHeight);let s=n+o/4;const i=r.height+r.depth+s+n,{span:a,ruleWidth:l,advanceWidth:h}=wr.sqrtImage(i,t),c=a.height-l;c>r.height+r.depth+s&&(s=(s+c-r.height-r.depth)/2);const m=a.height-r.height-s-l;r.style.paddingLeft=P(h);const p=Pe.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+m)},{type:"elem",elem:a},{type:"kern",size:l}]},t);if(e.index){const r=t.havingStyle(w.SCRIPTSCRIPT),n=ct(e.index,r,t),o=.6*(p.height-p.depth),s=Pe.makeVList({positionType:"shift",positionData:-o,children:[{type:"elem",elem:n}]},t),i=Pe.makeSpan(["root"],[s]);return Pe.makeSpan(["mord","sqrt"],[i,p],t)}return Pe.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new ft.MathNode("mroot",[St(r,t),St(n,t)]):new ft.MathNode("msqrt",[St(r,t)])}});const cn={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};$e({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){let{breakOnTokenText:r,funcName:n,parser:o}=e;const s=o.parseExpression(!0,r),i=n.slice(1,n.length-5);return{type:"styling",mode:o.mode,style:i,body:s}},htmlBuilder(e,t){const r=cn[e.style],n=t.havingStyle(r).withFont("");return ln(e.body,n,t)},mathmlBuilder(e,t){const r=cn[e.style],n=t.havingStyle(r),o=vt(e.body,n),s=new ft.MathNode("mstyle",o),i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return s.setAttribute("scriptlevel",i[0]),s.setAttribute("displaystyle",i[1]),s}});Ze({type:"supsub",htmlBuilder(e,t){const r=function(e,t){const r=e.base;if(r)return"op"===r.type?r.limits&&(t.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?rn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===w.DISPLAY.size||r.limits)?an:null:"accent"===r.type?l.isCharacterBox(r.base)?Et:null:"horizBrace"===r.type&&!e.sub===r.isOver?Kr:null;return null}(e,t);if(r)return r(e,t);const{base:n,sup:o,sub:s}=e,i=ct(n,t);let a,h;const c=t.fontMetrics();let m=0,p=0;const u=n&&l.isCharacterBox(n);if(o){const e=t.havingStyle(t.style.sup());a=ct(o,e,t),u||(m=i.height-e.fontMetrics().supDrop*e.sizeMultiplier/t.sizeMultiplier)}if(s){const e=t.havingStyle(t.style.sub());h=ct(s,e,t),u||(p=i.depth+e.fontMetrics().subDrop*e.sizeMultiplier/t.sizeMultiplier)}let d;d=t.style===w.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;const g=t.sizeMultiplier,f=P(.5/c.ptPerEm/g);let b,y=null;if(h){const t=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(i instanceof Z||t)&&(y=P(-i.italic))}if(a&&h){m=Math.max(m,d,a.depth+.25*c.xHeight),p=Math.max(p,c.sub2);const e=4*c.defaultRuleThickness;if(m-a.depth-(h.height-p)<e){p=e-(m-a.depth)+h.height;const t=.8*c.xHeight-(m-a.depth);t>0&&(m+=t,p-=t)}const r=[{type:"elem",elem:h,shift:p,marginRight:f,marginLeft:y},{type:"elem",elem:a,shift:-m,marginRight:f}];b=Pe.makeVList({positionType:"individualShift",children:r},t)}else if(h){p=Math.max(p,c.sub1,h.height-.8*c.xHeight);const e=[{type:"elem",elem:h,marginLeft:y,marginRight:f}];b=Pe.makeVList({positionType:"shift",positionData:p,children:e},t)}else{if(!a)throw new Error("supsub must have either sup or sub.");m=Math.max(m,d,a.depth+.25*c.xHeight),b=Pe.makeVList({positionType:"shift",positionData:-m,children:[{type:"elem",elem:a,marginRight:f}]},t)}const x=lt(i,"right")||"mord";return Pe.makeSpan([x],[i,Pe.makeSpan(["msupsub"],[b])],t)},mathmlBuilder(e,t){let r,n,o=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(o=!0,r=e.base.isOver)),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);const s=[St(e.base,t)];let i;if(e.sub&&s.push(St(e.sub,t)),e.sup&&s.push(St(e.sup,t)),o)i=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;i=r&&"op"===r.type&&r.limits&&t.style===w.DISPLAY||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.style===w.DISPLAY||r.limits)?"munderover":"msubsup"}else{const r=e.base;i=r&&"op"===r.type&&r.limits&&(t.style===w.DISPLAY||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.style===w.DISPLAY)?"munder":"msub"}else{const r=e.base;i=r&&"op"===r.type&&r.limits&&(t.style===w.DISPLAY||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.style===w.DISPLAY)?"mover":"msup"}return new ft.MathNode(i,s)}}),Ze({type:"atom",htmlBuilder(e,t){return Pe.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){const r=new ft.MathNode("mo",[bt(e.text,e.mode)]);if("bin"===e.family){const n=xt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});const mn={mi:"italic",mn:"normal",mtext:"normal"};Ze({type:"mathord",htmlBuilder(e,t){return Pe.makeOrd(e,t,"mathord")},mathmlBuilder(e,t){const r=new ft.MathNode("mi",[bt(e.text,e.mode,t)]),n=xt(e,t)||"italic";return n!==mn[r.type]&&r.setAttribute("mathvariant",n),r}}),Ze({type:"textord",htmlBuilder(e,t){return Pe.makeOrd(e,t,"textord")},mathmlBuilder(e,t){const r=bt(e.text,e.mode,t),n=xt(e,t)||"normal";let o;return o="text"===e.mode?new ft.MathNode("mtext",[r]):/[0-9]/.test(e.text)?new ft.MathNode("mn",[r]):"\\prime"===e.text?new ft.MathNode("mo",[r]):new ft.MathNode("mi",[r]),n!==mn[o.type]&&o.setAttribute("mathvariant",n),o}});const pn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},un={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Ze({type:"spacing",htmlBuilder(e,t){if(un.hasOwnProperty(e.text)){const r=un[e.text].className||"";if("text"===e.mode){const n=Pe.makeOrd(e,t,"textord");return n.classes.push(r),n}return Pe.makeSpan(["mspace",r],[Pe.mathsym(e.text,e.mode,t)],t)}if(pn.hasOwnProperty(e.text))return Pe.makeSpan(["mspace",pn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){let r;if(!un.hasOwnProperty(e.text)){if(pn.hasOwnProperty(e.text))return new ft.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return r=new ft.MathNode("mtext",[new ft.TextNode("\xa0")]),r}});const dn=()=>{const e=new ft.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};Ze({type:"tag",mathmlBuilder(e,t){const r=new ft.MathNode("mtable",[new ft.MathNode("mtr",[dn(),new ft.MathNode("mtd",[kt(e.body,t)]),dn(),new ft.MathNode("mtd",[kt(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});const gn={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},fn={"\\textbf":"textbf","\\textmd":"textmd"},bn={"\\textit":"textit","\\textup":"textup"},yn=(e,t)=>{const r=e.font;return r?gn[r]?t.withTextFontFamily(gn[r]):fn[r]?t.withTextFontWeight(fn[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(bn[r]):t};$e({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){let{parser:r,funcName:n}=e;const o=t[0];return{type:"text",mode:r.mode,body:Je(o),font:n}},htmlBuilder(e,t){const r=yn(e,t),n=ot(e.body,r,!0);return Pe.makeSpan(["mord","text"],n,r)},mathmlBuilder(e,t){const r=yn(e,t);return kt(e.body,r)}}),$e({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){let{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){const r=ct(e.body,t),n=Pe.makeLineSpan("underline-line",t),o=t.fontMetrics().defaultRuleThickness,s=Pe.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:o},{type:"elem",elem:n},{type:"kern",size:3*o},{type:"elem",elem:r}]},t);return Pe.makeSpan(["mord","underline"],[s],t)},mathmlBuilder(e,t){const r=new ft.MathNode("mo",[new ft.TextNode("\u203e")]);r.setAttribute("stretchy","true");const n=new ft.MathNode("munder",[St(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),$e({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){let{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){const r=ct(e.body,t),n=t.fontMetrics().axisHeight,o=.5*(r.height-n-(r.depth+n));return Pe.makeVList({positionType:"shift",positionData:o,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){return new ft.MathNode("mpadded",[St(e.body,t)],["vcenter"])}}),$e({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){const r=xn(e),n=[],o=t.havingStyle(t.style.text());for(let t=0;t<r.length;t++){let s=r[t];"~"===s&&(s="\\textasciitilde"),n.push(Pe.makeSymbol(s,"Typewriter-Regular",e.mode,o,["mord","texttt"]))}return Pe.makeSpan(["mord","text"].concat(o.sizingClasses(t)),Pe.tryCombineChars(n),o)},mathmlBuilder(e,t){const r=new ft.TextNode(xn(e)),n=new ft.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const xn=e=>e.body.replace(/ /g,e.star?"\u2423":"\xa0");var wn=We;const vn="[ \r\n\t]",kn="(\\\\[a-zA-Z@]+)"+vn+"*",Sn="[\u0300-\u036f]",Mn=new RegExp(Sn+"+$"),zn="("+vn+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+Sn+"*|[\ud800-\udbff][\udc00-\udfff]"+Sn+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+kn+"|\\\\[^\ud800-\udfff])";class An{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(zn,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new Ir("EOF",new qr(this,t,t));const r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new n("Unexpected character: '"+e[t]+"'",new Ir(e[t],new qr(this,t,t+1)));const o=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[o]){const t=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===t?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=t+1,this.lex()}return new Ir(o,new qr(this,t,this.tokenRegex.lastIndex))}}class Tn{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new n("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const e=this.undefStack.pop();for(const t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(let t=0;t<this.undefStack.length;t++)delete this.undefStack[t][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!t.hasOwnProperty(e)&&(t[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var Bn=Cr;Nr("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Nr("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Nr("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Nr("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Nr("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Nr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Nr("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const Cn={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Nr("\\char",(function(e){let t,r=e.popToken(),o="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if(r=e.popToken(),"\\"===r.text[0])o=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");o=r.text.charCodeAt(0)}else t=10;if(t){if(o=Cn[r.text],null==o||o>=t)throw new n("Invalid base-"+t+" digit "+r.text);let s;for(;null!=(s=Cn[e.future().text])&&s<t;)o*=t,o+=s,e.popToken()}return"\\@char{"+o+"}"}));const Nn=(e,t,r,o)=>{let s=e.consumeArg().tokens;if(1!==s.length)throw new n("\\newcommand's first argument must be a macro name");const i=s[0].text,a=e.isDefined(i);if(a&&!t)throw new n("\\newcommand{"+i+"} attempting to redefine "+i+"; use \\renewcommand");if(!a&&!r)throw new n("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");let l=0;if(s=e.consumeArg().tokens,1===s.length&&"["===s[0].text){let t="",r=e.expandNextToken();for(;"]"!==r.text&&"EOF"!==r.text;)t+=r.text,r=e.expandNextToken();if(!t.match(/^\s*[0-9]+\s*$/))throw new n("Invalid number of arguments: "+t);l=parseInt(t),s=e.consumeArg().tokens}return a&&o||e.macros.set(i,{tokens:s,numArgs:l}),""};Nr("\\newcommand",(e=>Nn(e,!1,!0,!1))),Nr("\\renewcommand",(e=>Nn(e,!0,!1,!1))),Nr("\\providecommand",(e=>Nn(e,!0,!0,!0))),Nr("\\message",(e=>{const t=e.consumeArgs(1)[0];return console.log(t.reverse().map((e=>e.text)).join("")),""})),Nr("\\errmessage",(e=>{const t=e.consumeArgs(1)[0];return console.error(t.reverse().map((e=>e.text)).join("")),""})),Nr("\\show",(e=>{const t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),wn[r],oe.math[r],oe.text[r]),""})),Nr("\\bgroup","{"),Nr("\\egroup","}"),Nr("~","\\nobreakspace"),Nr("\\lq","`"),Nr("\\rq","'"),Nr("\\aa","\\r a"),Nr("\\AA","\\r A"),Nr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Nr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Nr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Nr("\u212c","\\mathscr{B}"),Nr("\u2130","\\mathscr{E}"),Nr("\u2131","\\mathscr{F}"),Nr("\u210b","\\mathscr{H}"),Nr("\u2110","\\mathscr{I}"),Nr("\u2112","\\mathscr{L}"),Nr("\u2133","\\mathscr{M}"),Nr("\u211b","\\mathscr{R}"),Nr("\u212d","\\mathfrak{C}"),Nr("\u210c","\\mathfrak{H}"),Nr("\u2128","\\mathfrak{Z}"),Nr("\\Bbbk","\\Bbb{k}"),Nr("\xb7","\\cdotp"),Nr("\\llap","\\mathllap{\\textrm{#1}}"),Nr("\\rlap","\\mathrlap{\\textrm{#1}}"),Nr("\\clap","\\mathclap{\\textrm{#1}}"),Nr("\\mathstrut","\\vphantom{(}"),Nr("\\underbar","\\underline{\\text{#1}}"),Nr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Nr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Nr("\\ne","\\neq"),Nr("\u2260","\\neq"),Nr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Nr("\u2209","\\notin"),Nr("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Nr("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Nr("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Nr("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Nr("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Nr("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Nr("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Nr("\u27c2","\\perp"),Nr("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Nr("\u220c","\\notni"),Nr("\u231c","\\ulcorner"),Nr("\u231d","\\urcorner"),Nr("\u231e","\\llcorner"),Nr("\u231f","\\lrcorner"),Nr("\xa9","\\copyright"),Nr("\xae","\\textregistered"),Nr("\ufe0f","\\textregistered"),Nr("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Nr("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Nr("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Nr("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Nr("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Nr("\u22ee","\\vdots"),Nr("\\varGamma","\\mathit{\\Gamma}"),Nr("\\varDelta","\\mathit{\\Delta}"),Nr("\\varTheta","\\mathit{\\Theta}"),Nr("\\varLambda","\\mathit{\\Lambda}"),Nr("\\varXi","\\mathit{\\Xi}"),Nr("\\varPi","\\mathit{\\Pi}"),Nr("\\varSigma","\\mathit{\\Sigma}"),Nr("\\varUpsilon","\\mathit{\\Upsilon}"),Nr("\\varPhi","\\mathit{\\Phi}"),Nr("\\varPsi","\\mathit{\\Psi}"),Nr("\\varOmega","\\mathit{\\Omega}"),Nr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Nr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Nr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Nr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Nr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Nr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Nr("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Nr("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");const qn={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Nr("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in qn?t=qn[r]:("\\not"===r.slice(0,4)||r in oe.math&&["bin","rel"].includes(oe.math[r].group))&&(t="\\dotsb"),t}));const In={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Nr("\\dotso",(function(e){return e.future().text in In?"\\ldots\\,":"\\ldots"})),Nr("\\dotsc",(function(e){const t=e.future().text;return t in In&&","!==t?"\\ldots\\,":"\\ldots"})),Nr("\\cdots",(function(e){return e.future().text in In?"\\@cdots\\,":"\\@cdots"})),Nr("\\dotsb","\\cdots"),Nr("\\dotsm","\\cdots"),Nr("\\dotsi","\\!\\cdots"),Nr("\\dotsx","\\ldots\\,"),Nr("\\DOTSI","\\relax"),Nr("\\DOTSB","\\relax"),Nr("\\DOTSX","\\relax"),Nr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Nr("\\,","\\tmspace+{3mu}{.1667em}"),Nr("\\thinspace","\\,"),Nr("\\>","\\mskip{4mu}"),Nr("\\:","\\tmspace+{4mu}{.2222em}"),Nr("\\medspace","\\:"),Nr("\\;","\\tmspace+{5mu}{.2777em}"),Nr("\\thickspace","\\;"),Nr("\\!","\\tmspace-{3mu}{.1667em}"),Nr("\\negthinspace","\\!"),Nr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Nr("\\negthickspace","\\tmspace-{5mu}{.277em}"),Nr("\\enspace","\\kern.5em "),Nr("\\enskip","\\hskip.5em\\relax"),Nr("\\quad","\\hskip1em\\relax"),Nr("\\qquad","\\hskip2em\\relax"),Nr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Nr("\\tag@paren","\\tag@literal{({#1})}"),Nr("\\tag@literal",(e=>{if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Nr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Nr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Nr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Nr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Nr("\\newline","\\\\\\relax"),Nr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");const Rn=P(A["Main-Regular"]["T".charCodeAt(0)][1]-.7*A["Main-Regular"]["A".charCodeAt(0)][1]);Nr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Rn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Nr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Rn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Nr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Nr("\\@hspace","\\hskip #1\\relax"),Nr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Nr("\\ordinarycolon",":"),Nr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Nr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Nr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Nr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Nr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Nr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Nr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Nr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Nr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Nr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Nr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Nr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Nr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Nr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Nr("\u2237","\\dblcolon"),Nr("\u2239","\\eqcolon"),Nr("\u2254","\\coloneqq"),Nr("\u2255","\\eqqcolon"),Nr("\u2a74","\\Coloneqq"),Nr("\\ratio","\\vcentcolon"),Nr("\\coloncolon","\\dblcolon"),Nr("\\colonequals","\\coloneqq"),Nr("\\coloncolonequals","\\Coloneqq"),Nr("\\equalscolon","\\eqqcolon"),Nr("\\equalscoloncolon","\\Eqqcolon"),Nr("\\colonminus","\\coloneq"),Nr("\\coloncolonminus","\\Coloneq"),Nr("\\minuscolon","\\eqcolon"),Nr("\\minuscoloncolon","\\Eqcolon"),Nr("\\coloncolonapprox","\\Colonapprox"),Nr("\\coloncolonsim","\\Colonsim"),Nr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Nr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Nr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Nr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Nr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Nr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Nr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Nr("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Nr("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Nr("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Nr("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Nr("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Nr("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Nr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Nr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Nr("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Nr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Nr("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Nr("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Nr("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Nr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Nr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Nr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Nr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Nr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Nr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Nr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Nr("\\imath","\\html@mathml{\\@imath}{\u0131}"),Nr("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Nr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Nr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Nr("\u27e6","\\llbracket"),Nr("\u27e7","\\rrbracket"),Nr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Nr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Nr("\u2983","\\lBrace"),Nr("\u2984","\\rBrace"),Nr("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Nr("\u29b5","\\minuso"),Nr("\\darr","\\downarrow"),Nr("\\dArr","\\Downarrow"),Nr("\\Darr","\\Downarrow"),Nr("\\lang","\\langle"),Nr("\\rang","\\rangle"),Nr("\\uarr","\\uparrow"),Nr("\\uArr","\\Uparrow"),Nr("\\Uarr","\\Uparrow"),Nr("\\N","\\mathbb{N}"),Nr("\\R","\\mathbb{R}"),Nr("\\Z","\\mathbb{Z}"),Nr("\\alef","\\aleph"),Nr("\\alefsym","\\aleph"),Nr("\\Alpha","\\mathrm{A}"),Nr("\\Beta","\\mathrm{B}"),Nr("\\bull","\\bullet"),Nr("\\Chi","\\mathrm{X}"),Nr("\\clubs","\\clubsuit"),Nr("\\cnums","\\mathbb{C}"),Nr("\\Complex","\\mathbb{C}"),Nr("\\Dagger","\\ddagger"),Nr("\\diamonds","\\diamondsuit"),Nr("\\empty","\\emptyset"),Nr("\\Epsilon","\\mathrm{E}"),Nr("\\Eta","\\mathrm{H}"),Nr("\\exist","\\exists"),Nr("\\harr","\\leftrightarrow"),Nr("\\hArr","\\Leftrightarrow"),Nr("\\Harr","\\Leftrightarrow"),Nr("\\hearts","\\heartsuit"),Nr("\\image","\\Im"),Nr("\\infin","\\infty"),Nr("\\Iota","\\mathrm{I}"),Nr("\\isin","\\in"),Nr("\\Kappa","\\mathrm{K}"),Nr("\\larr","\\leftarrow"),Nr("\\lArr","\\Leftarrow"),Nr("\\Larr","\\Leftarrow"),Nr("\\lrarr","\\leftrightarrow"),Nr("\\lrArr","\\Leftrightarrow"),Nr("\\Lrarr","\\Leftrightarrow"),Nr("\\Mu","\\mathrm{M}"),Nr("\\natnums","\\mathbb{N}"),Nr("\\Nu","\\mathrm{N}"),Nr("\\Omicron","\\mathrm{O}"),Nr("\\plusmn","\\pm"),Nr("\\rarr","\\rightarrow"),Nr("\\rArr","\\Rightarrow"),Nr("\\Rarr","\\Rightarrow"),Nr("\\real","\\Re"),Nr("\\reals","\\mathbb{R}"),Nr("\\Reals","\\mathbb{R}"),Nr("\\Rho","\\mathrm{P}"),Nr("\\sdot","\\cdot"),Nr("\\sect","\\S"),Nr("\\spades","\\spadesuit"),Nr("\\sub","\\subset"),Nr("\\sube","\\subseteq"),Nr("\\supe","\\supseteq"),Nr("\\Tau","\\mathrm{T}"),Nr("\\thetasym","\\vartheta"),Nr("\\weierp","\\wp"),Nr("\\Zeta","\\mathrm{Z}"),Nr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Nr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Nr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Nr("\\bra","\\mathinner{\\langle{#1}|}"),Nr("\\ket","\\mathinner{|{#1}\\rangle}"),Nr("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Nr("\\Bra","\\left\\langle#1\\right|"),Nr("\\Ket","\\left|#1\\right\\rangle");const Hn=e=>t=>{const r=t.consumeArg().tokens,n=t.consumeArg().tokens,o=t.consumeArg().tokens,s=t.consumeArg().tokens,i=t.macros.get("|"),a=t.macros.get("\\|");t.macros.beginGroup();const l=t=>r=>{e&&(r.macros.set("|",i),o.length&&r.macros.set("\\|",a));let s=t;if(!t&&o.length){"|"===r.future().text&&(r.popToken(),s=!0)}return{tokens:s?o:n,numArgs:0}};t.macros.set("|",l(!1)),o.length&&t.macros.set("\\|",l(!0));const h=t.consumeArg().tokens,c=t.expandTokens([...s,...h,...r]);return t.macros.endGroup(),{tokens:c.reverse(),numArgs:0}};Nr("\\bra@ket",Hn(!1)),Nr("\\bra@set",Hn(!0)),Nr("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Nr("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Nr("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Nr("\\angln","{\\angl n}"),Nr("\\blue","\\textcolor{##6495ed}{#1}"),Nr("\\orange","\\textcolor{##ffa500}{#1}"),Nr("\\pink","\\textcolor{##ff00af}{#1}"),Nr("\\red","\\textcolor{##df0030}{#1}"),Nr("\\green","\\textcolor{##28ae7b}{#1}"),Nr("\\gray","\\textcolor{gray}{#1}"),Nr("\\purple","\\textcolor{##9d38bd}{#1}"),Nr("\\blueA","\\textcolor{##ccfaff}{#1}"),Nr("\\blueB","\\textcolor{##80f6ff}{#1}"),Nr("\\blueC","\\textcolor{##63d9ea}{#1}"),Nr("\\blueD","\\textcolor{##11accd}{#1}"),Nr("\\blueE","\\textcolor{##0c7f99}{#1}"),Nr("\\tealA","\\textcolor{##94fff5}{#1}"),Nr("\\tealB","\\textcolor{##26edd5}{#1}"),Nr("\\tealC","\\textcolor{##01d1c1}{#1}"),Nr("\\tealD","\\textcolor{##01a995}{#1}"),Nr("\\tealE","\\textcolor{##208170}{#1}"),Nr("\\greenA","\\textcolor{##b6ffb0}{#1}"),Nr("\\greenB","\\textcolor{##8af281}{#1}"),Nr("\\greenC","\\textcolor{##74cf70}{#1}"),Nr("\\greenD","\\textcolor{##1fab54}{#1}"),Nr("\\greenE","\\textcolor{##0d923f}{#1}"),Nr("\\goldA","\\textcolor{##ffd0a9}{#1}"),Nr("\\goldB","\\textcolor{##ffbb71}{#1}"),Nr("\\goldC","\\textcolor{##ff9c39}{#1}"),Nr("\\goldD","\\textcolor{##e07d10}{#1}"),Nr("\\goldE","\\textcolor{##a75a05}{#1}"),Nr("\\redA","\\textcolor{##fca9a9}{#1}"),Nr("\\redB","\\textcolor{##ff8482}{#1}"),Nr("\\redC","\\textcolor{##f9685d}{#1}"),Nr("\\redD","\\textcolor{##e84d39}{#1}"),Nr("\\redE","\\textcolor{##bc2612}{#1}"),Nr("\\maroonA","\\textcolor{##ffbde0}{#1}"),Nr("\\maroonB","\\textcolor{##ff92c6}{#1}"),Nr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Nr("\\maroonD","\\textcolor{##ca337c}{#1}"),Nr("\\maroonE","\\textcolor{##9e034e}{#1}"),Nr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Nr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Nr("\\purpleC","\\textcolor{##aa87ff}{#1}"),Nr("\\purpleD","\\textcolor{##7854ab}{#1}"),Nr("\\purpleE","\\textcolor{##543b78}{#1}"),Nr("\\mintA","\\textcolor{##f5f9e8}{#1}"),Nr("\\mintB","\\textcolor{##edf2df}{#1}"),Nr("\\mintC","\\textcolor{##e0e5cc}{#1}"),Nr("\\grayA","\\textcolor{##f6f7f7}{#1}"),Nr("\\grayB","\\textcolor{##f0f1f2}{#1}"),Nr("\\grayC","\\textcolor{##e3e5e6}{#1}"),Nr("\\grayD","\\textcolor{##d6d8da}{#1}"),Nr("\\grayE","\\textcolor{##babec2}{#1}"),Nr("\\grayF","\\textcolor{##888d93}{#1}"),Nr("\\grayG","\\textcolor{##626569}{#1}"),Nr("\\grayH","\\textcolor{##3b3e40}{#1}"),Nr("\\grayI","\\textcolor{##21242c}{#1}"),Nr("\\kaBlue","\\textcolor{##314453}{#1}"),Nr("\\kaGreen","\\textcolor{##71B307}{#1}");const On={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class En{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Tn(Bn,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new An(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new Ir("EOF",r.loc)),this.pushTokens(n),new Ir("",qr.range(t,r))}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){const t=[],r=e&&e.length>0;r||this.consumeSpaces();const o=this.future();let s,i=0,a=0;do{if(s=this.popToken(),t.push(s),"{"===s.text)++i;else if("}"===s.text){if(--i,-1===i)throw new n("Extra }",s)}else if("EOF"===s.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[a]:"}")+"'",s);if(e&&r)if((0===i||1===i&&"{"===e[a])&&s.text===e[a]){if(++a,a===e.length){t.splice(-a,a);break}}else a=0}while(0!==i||r);return"{"===o.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:o,end:s}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");const r=t[0];for(let e=0;e<r.length;e++){const t=this.popToken();if(r[e]!==t.text)throw new n("Use of the macro doesn't match its definition",t)}}const r=[];for(let n=0;n<e;n++)r.push(this.consumeArg(t&&t[n+1]).tokens);return r}countExpansion(e){if(this.expansionCount+=e,this.expansionCount>this.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){const t=this.popToken(),r=t.text,o=t.noexpand?null:this._getExpansion(r);if(null==o||e&&o.unexpandable){if(e&&null==o&&"\\"===r[0]&&!this.isDefined(r))throw new n("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);let s=o.tokens;const i=this.consumeArgs(o.numArgs,o.delimiters);if(o.numArgs){s=s.slice();for(let e=s.length-1;e>=0;--e){let t=s[e];if("#"===t.text){if(0===e)throw new n("Incomplete placeholder at end of macro body",t);if(t=s[--e],"#"===t.text)s.splice(e+1,1);else{if(!/^[1-9]$/.test(t.text))throw new n("Not a valid argument number",t);s.splice(e,2,...i[+t.text-1])}}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Ir(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return this.countExpansion(t.length),t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new An(r,this.settings),n=[];let o=t.lex();for(;"EOF"!==o.text;)n.push(o),o=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||wn.hasOwnProperty(e)||oe.math.hasOwnProperty(e)||oe.text.hasOwnProperty(e)||On.hasOwnProperty(e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:wn.hasOwnProperty(e)&&!wn[e].primitive}}const Ln=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,Dn=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),Vn={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Pn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class Fn{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new En(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{const e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new Ir("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){const r=[];for(;;){"math"===this.mode&&this.consumeSpaces();const n=this.fetch();if(-1!==Fn.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&wn[n.text]&&wn[n.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&r.push(o)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){let t,r=-1;for(let o=0;o<e.length;o++)if("infix"===e[o].type){if(-1!==r)throw new n("only one infix operator per group",e[o].token);r=o,t=e[o].replaceWith}if(-1!==r&&t){let n,o;const s=e.slice(0,r),i=e.slice(r+1);let a;return n=1===s.length&&"ordgroup"===s[0].type?s[0]:{type:"ordgroup",mode:this.mode,body:s},o=1===i.length&&"ordgroup"===i[0].type?i[0]:{type:"ordgroup",mode:this.mode,body:i},a="\\\\abovefrac"===t?this.callFunction(t,[n,e[r],o],[]):this.callFunction(t,[n,o],[]),[a]}return e}handleSupSubscript(e){const t=this.fetch(),r=t.text;let o;this.consume(),this.consumeSpaces();do{var s;o=this.parseGroup(e)}while("internal"===(null==(s=o)?void 0:s.type));if(!o)throw new n("Expected group after '"+r+"'",t);return o}formatUnsupportedCmd(e){const t=[];for(let r=0;r<e.length;r++)t.push({type:"textord",mode:"text",text:e[r]});const r={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]}}parseAtom(e){const t=this.parseGroup("atom",e);if("internal"===(null==t?void 0:t.type))return t;if("text"===this.mode)return t;let r,o;for(;;){this.consumeSpaces();const e=this.fetch();if("\\limits"===e.text||"\\nolimits"===e.text){if(t&&"op"===t.type){const r="\\limits"===e.text;t.limits=r,t.alwaysHandleSupSub=!0}else{if(!t||"operatorname"!==t.type)throw new n("Limit controls must follow a math operator",e);t.alwaysHandleSupSub&&(t.limits="\\limits"===e.text)}this.consume()}else if("^"===e.text){if(r)throw new n("Double superscript",e);r=this.handleSupSubscript("superscript")}else if("_"===e.text){if(o)throw new n("Double subscript",e);o=this.handleSupSubscript("subscript")}else if("'"===e.text){if(r)throw new n("Double superscript",e);const t={type:"textord",mode:this.mode,text:"\\prime"},o=[t];for(this.consume();"'"===this.fetch().text;)o.push(t),this.consume();"^"===this.fetch().text&&o.push(this.handleSupSubscript("superscript")),r={type:"ordgroup",mode:this.mode,body:o}}else{if(!Dn[e.text])break;{const t=Ln.test(e.text),n=[];for(n.push(new Ir(Dn[e.text])),this.consume();;){const e=this.fetch().text;if(!Dn[e])break;if(Ln.test(e)!==t)break;n.unshift(new Ir(Dn[e])),this.consume()}const s=this.subparse(n);t?o={type:"ordgroup",mode:"math",body:s}:r={type:"ordgroup",mode:"math",body:s}}}}return r||o?{type:"supsub",mode:this.mode,base:t,sup:r,sub:o}:t}parseFunction(e,t){const r=this.fetch(),o=r.text,s=wn[o];if(!s)return null;if(this.consume(),t&&"atom"!==t&&!s.allowedInArgument)throw new n("Got function '"+o+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!s.allowedInText)throw new n("Can't use function '"+o+"' in text mode",r);if("math"===this.mode&&!1===s.allowedInMath)throw new n("Can't use function '"+o+"' in math mode",r);const{args:i,optArgs:a}=this.parseArguments(o,s);return this.callFunction(o,i,a,r,e)}callFunction(e,t,r,o,s){const i={funcName:e,parser:this,token:o,breakOnTokenText:s},a=wn[e];if(a&&a.handler)return a.handler(i,t,r);throw new n("No function handler for "+e)}parseArguments(e,t){const r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};const o=[],s=[];for(let i=0;i<r;i++){let r=t.argTypes&&t.argTypes[i];const a=i<t.numOptionalArgs;(t.primitive&&null==r||"sqrt"===t.type&&1===i&&null==s[0])&&(r="primitive");const l=this.parseGroupOfType("argument to '"+e+"'",r,a);if(a)s.push(l);else{if(null==l)throw new n("Null argument, please report this as a bug");o.push(l)}}return{args:o,optArgs:s}}parseGroupOfType(e,t,r){switch(t){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseArgumentGroup(r,t);case"hbox":{const e=this.parseArgumentGroup(r,"text");return null!=e?{type:"styling",mode:e.mode,body:[e],style:"text"}:null}case"raw":{const e=this.parseStringGroup("raw",r);return null!=e?{type:"raw",mode:"text",string:e.text}:null}case"primitive":{if(r)throw new n("A primitive argument cannot be optional");const t=this.parseGroup(e);if(null==t)throw new n("Expected group as "+e,this.fetch());return t}case"original":case null:case void 0:return this.parseArgumentGroup(r);default:throw new n("Unknown group type as "+e,this.fetch())}}consumeSpaces(){for(;" "===this.fetch().text;)this.consume()}parseStringGroup(e,t){const r=this.gullet.scanArgument(t);if(null==r)return null;let n,o="";for(;"EOF"!==(n=this.fetch()).text;)o+=n.text,this.consume();return this.consume(),r.text=o,r}parseRegexGroup(e,t){const r=this.fetch();let o,s=r,i="";for(;"EOF"!==(o=this.fetch()).text&&e.test(i+o.text);)s=o,i+=s.text,this.consume();if(""===i)throw new n("Invalid "+t+": '"+r.text+"'",r);return r.range(s,i)}parseColorGroup(e){const t=this.parseStringGroup("color",e);if(null==t)return null;const r=/^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new n("Invalid color: '"+t.text+"'",t);let o=r[0];return/^[0-9a-f]{6}$/i.test(o)&&(o="#"+o),{type:"color-token",mode:this.mode,color:o}}parseSizeGroup(e){let t,r=!1;if(this.gullet.consumeSpaces(),t=e||"{"===this.gullet.future().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size"),!t)return null;e||0!==t.text.length||(t.text="0pt",r=!0);const o=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!o)throw new n("Invalid size: '"+t.text+"'",t);const s={number:+(o[1]+o[2]),unit:o[3]};if(!D(s))throw new n("Invalid unit: '"+s.unit+"'",t);return{type:"size",mode:this.mode,value:s,isBlank:r}}parseUrlGroup(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);const t=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),null==t)return null;const r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}}parseArgumentGroup(e,t){const r=this.gullet.scanArgument(e);if(null==r)return null;const n=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();const o=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();const s={type:"ordgroup",mode:this.mode,loc:r.loc,body:o};return t&&this.switchMode(n),s}parseGroup(e,t){const r=this.fetch(),o=r.text;let s;if("{"===o||"\\begingroup"===o){this.consume();const e="{"===o?"}":"\\endgroup";this.gullet.beginGroup();const t=this.parseExpression(!1,e),n=this.fetch();this.expect(e),this.gullet.endGroup(),s={type:"ordgroup",mode:this.mode,loc:qr.range(r,n),body:t,semisimple:"\\begingroup"===o||void 0}}else if(s=this.parseFunction(t,e)||this.parseSymbol(),null==s&&"\\"===o[0]&&!On.hasOwnProperty(o)){if(this.settings.throwOnError)throw new n("Undefined control sequence: "+o,r);s=this.formatUnsupportedCmd(o),this.consume()}return s}formLigatures(e){let t=e.length-1;for(let r=0;r<t;++r){const n=e[r],o=n.text;"-"===o&&"-"===e[r+1].text&&(r+1<t&&"-"===e[r+2].text?(e.splice(r,3,{type:"textord",mode:"text",loc:qr.range(n,e[r+2]),text:"---"}),t-=2):(e.splice(r,2,{type:"textord",mode:"text",loc:qr.range(n,e[r+1]),text:"--"}),t-=1)),"'"!==o&&"`"!==o||e[r+1].text!==o||(e.splice(r,2,{type:"textord",mode:"text",loc:qr.range(n,e[r+1]),text:o+o}),t-=1)}}parseSymbol(){const e=this.fetch();let t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();let e=t.slice(5);const r="*"===e.charAt(0);if(r&&(e=e.slice(1)),e.length<2||e.charAt(0)!==e.slice(-1))throw new n("\\verb assertion failed --\n please report what input caused this bug");return e=e.slice(1,-1),{type:"verb",mode:"text",body:e,star:r}}Pn.hasOwnProperty(t[0])&&!oe[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Pn[t[0]]+t.slice(1));const r=Mn.exec(t);let o;if(r&&(t=t.substring(0,r.index),"i"===t?t="\u0131":"j"===t&&(t="\u0237")),oe[this.mode][t]){this.settings.strict&&"math"===this.mode&&Ae.indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);const r=oe[this.mode][t].group,n=qr.range(e);let s;if(te.hasOwnProperty(r)){const e=r;s={type:"atom",mode:this.mode,family:e,loc:n,text:t}}else s={type:r,mode:this.mode,loc:n,text:t};o=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(S(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),o={type:"textord",mode:"text",loc:qr.range(e),text:t}}if(this.consume(),r)for(let t=0;t<r[0].length;t++){const s=r[0][t];if(!Vn[s])throw new n("Unknown accent ' "+s+"'",e);const i=Vn[s][this.mode]||Vn[s].text;if(!i)throw new n("Accent "+s+" unsupported in "+this.mode+" mode",e);o={type:"accent",mode:this.mode,loc:qr.range(e),label:i,isStretchy:!1,isShifty:!0,base:o}}return o}}Fn.endOfExpression=["}","\\endgroup","\\end","\\right","&"];var Gn=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");const r=new Fn(e,t);delete r.gullet.macros.current["\\df@tag"];let o=r.parse();if(delete r.gullet.macros.current["\\current@color"],delete r.gullet.macros.current["\\color"],r.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new n("\\tag works only in display equations");o=[{type:"tag",mode:"text",body:o,tag:r.subparse([new Ir("\\df@tag")])}]}return o};let Un=function(e,t,r){t.textContent="";const n=Xn(e,r).toNode();t.appendChild(n)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Un=function(){throw new n("KaTeX doesn't work in quirks mode.")});const Yn=function(e,t,r){if(r.throwOnError||!(e instanceof n))throw e;const o=Pe.makeSpan(["katex-error"],[new Z(t)]);return o.setAttribute("title",e.toString()),o.setAttribute("style","color:"+r.errorColor),o},Xn=function(e,t){const r=new m(t);try{const t=Gn(e,r);return Tt(t,e,r)}catch(t){return Yn(t,e,r)}};var Wn={version:"0.16.28",render:Un,renderToString:function(e,t){return Xn(e,t).toMarkup()},ParseError:n,SETTINGS_SCHEMA:h,__parse:function(e,t){const r=new m(t);return Gn(e,r)},__renderToDomTree:Xn,__renderToHTMLTree:function(e,t){const r=new m(t);try{return function(e,t,r){const n=pt(e,zt(r)),o=Pe.makeSpan(["katex"],[n]);return At(o,r)}(Gn(e,r),0,r)}catch(t){return Yn(t,e,r)}},__setFontMetrics:function(e,t){A[e]=t},__defineSymbol:se,__defineFunction:$e,__defineMacro:Nr,__domTree:{Span:W,Anchor:_,SymbolNode:Z,SvgNode:K,PathNode:J,LineNode:Q}};return t=t.default}()})); \ No newline at end of file diff --git a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css index 66f9cb175f..860d652474 100644 --- a/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css +++ b/plugins/tiddlywiki/katex/files/katex.without-font-face.min.css @@ -1 +1 @@ -.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.15.3"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} +.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.28"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/plugins/tiddlywiki/katex/files/tiddlywiki.files b/plugins/tiddlywiki/katex/files/tiddlywiki.files index 506a0f4482..5eed947ada 100644 --- a/plugins/tiddlywiki/katex/files/tiddlywiki.files +++ b/plugins/tiddlywiki/katex/files/tiddlywiki.files @@ -2,11 +2,11 @@ "directories": [ { "path": "./fonts/", - "filesRegExp": "^.*\\.woff$", + "filesRegExp": "^.*\\.woff2$", "isTiddlerFile": false, "fields": { "title": {"source": "filename", "prefix": "$:/plugins/tiddlywiki/katex/fonts/"}, - "type": "font/woff" + "type": "font/woff2" } } ], diff --git a/plugins/tiddlywiki/katex/readme.tid b/plugins/tiddlywiki/katex/readme.tid index 1a73d46cd2..76cdd2dce3 100644 --- a/plugins/tiddlywiki/katex/readme.tid +++ b/plugins/tiddlywiki/katex/readme.tid @@ -1,6 +1,6 @@ title: $:/plugins/tiddlywiki/katex/readme -This is a TiddlyWiki plugin for mathematical and chemical typesetting based on [ext[KaTeX from Khan Academy|https://katex.org/]] (v0.16) and [ext[mhchem|https://github.com/mhchem/MathJax-mhchem]] through a [ext[Katex extension|https://github.com/KaTeX/KaTeX/tree/master/contrib/mhchem]]. +This is a TiddlyWiki plugin for mathematical and chemical typesetting based on [ext[KaTeX from Khan Academy|https://katex.org/]] (v0.16.28) and [ext[mhchem|https://github.com/mhchem/MathJax-mhchem]] through a [ext[Katex extension|https://github.com/KaTeX/KaTeX/tree/master/contrib/mhchem]]. It is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js. diff --git a/plugins/tiddlywiki/katex/styles.tid b/plugins/tiddlywiki/katex/styles.tid index afb3288870..cf2b660b05 100644 --- a/plugins/tiddlywiki/katex/styles.tid +++ b/plugins/tiddlywiki/katex/styles.tid @@ -28,141 +28,161 @@ tags: [[$:/tags/Stylesheet]] /* Override font URLs */ @font-face { + font-display: block; font-family: KaTeX_AMS; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Caligraphic; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff2'>>) format('woff2'); font-weight: 700; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Caligraphic; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Fraktur; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff2'>>) format('woff2'); font-weight: 700; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Fraktur; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Main; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff2'>>) format('woff2'); font-weight: 700; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Main; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff2'>>) format('woff2'); font-weight: 700; font-style: italic; } @font-face { + font-display: block; font-family: KaTeX_Main; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff2'>>) format('woff2'); font-weight: 400; font-style: italic; } @font-face { + font-display: block; font-family: KaTeX_Main; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Math; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff2'>>) format('woff2'); font-weight: 700; font-style: italic; } @font-face { + font-display: block; font-family: KaTeX_Math; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff2'>>) format('woff2'); font-weight: 400; font-style: italic; } @font-face { + font-display: block; font-family: KaTeX_SansSerif; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff2'>>) format('woff2'); font-weight: 700; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_SansSerif; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff2'>>) format('woff2'); font-weight: 400; font-style: italic; } @font-face { + font-display: block; font-family: KaTeX_SansSerif; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Script; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Size1; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Size2; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Size3; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Size4; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } @font-face { + font-display: block; font-family: KaTeX_Typewriter; - src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff'>>) format('woff'); + src: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff2'>>) format('woff2'); font-weight: 400; font-style: normal; } From f6fd5ff261c1fe8473daa4110221ae66c4f647b7 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Wed, 4 Feb 2026 12:12:16 +0100 Subject: [PATCH 437/458] Fixes bug in correctly resolving functions in text substitutions (#9598) * fix: correctly resolve functions in text substitutions * docs: added changenote * fix: remove commented code --- core/modules/wiki.js | 7 ++-- .../FunctionSubstituteResolution.tid | 38 +++++++++++++++++++ .../tiddlers/releasenotes/5.4.0/#9598.tid | 11 ++++++ 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 editions/test/tiddlers/tests/data/functions/FunctionSubstituteResolution.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9598.tid diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 03b0626066..ccf782396a 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1122,15 +1122,16 @@ Parse a block of text of a specified MIME type Options include: substitutions: an optional array of substitutions */ -exports.getSubstitutedText = function(text,widget,options) { +exports.getSubstitutedText = function(text,thisWidget,options) { options = options || {}; text = text || ""; var self = this, + widgetClass = widget.widget, substitutions = options.substitutions || [], output; // Evaluate embedded filters and substitute with first result output = text.replace(/\$\{([\S\s]+?)\}\$/g, function(match,filter) { - return self.filterTiddlers(filter,widget)[0] || ""; + return self.filterTiddlers(filter,thisWidget)[0] || ""; }); // Process any substitutions provided in options $tw.utils.each(substitutions,function(substitute) { @@ -1138,7 +1139,7 @@ exports.getSubstitutedText = function(text,widget,options) { }); // Substitute any variable references with their values return output.replace(/\$\((.+?)\)\$/g, function(match,varname) { - return widget.getVariable(varname,{defaultValue: ""}); + return widgetClass.evaluateVariable(thisWidget,varname, {defaultValue: ""})[0]; }); }; diff --git a/editions/test/tiddlers/tests/data/functions/FunctionSubstituteResolution.tid b/editions/test/tiddlers/tests/data/functions/FunctionSubstituteResolution.tid new file mode 100644 index 0000000000..b75be6d63b --- /dev/null +++ b/editions/test/tiddlers/tests/data/functions/FunctionSubstituteResolution.tid @@ -0,0 +1,38 @@ +title: Functions/FunctionResolutionInSubstitute +description: Functions should resolve correctly in the substitute operator +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\whitespace trim + +\function getIndex() [<index>add[1]] + +\procedure template-with-var() $(getIndex)$ + +\procedure template-with-filteredexpression() ${ [<getIndex>] }$ + +\function test-with-substitute-variable() +[[abc]split[]] :map[<template-with-var>substitute[]] :and[join[ / ]] +\end + +\function test-with-substitute-filteredexpression() +[[abc]split[]] :map[<template-with-filteredexpression>substitute[]] :and[join[ / ]] +\end + +\function test-with-function() +[[abc]split[]] :map[function[getIndex]substitute[]] :and[join[ / ]] +\end + + + +<<test-with-substitute-variable>>| +<<test-with-substitute-filteredexpression>>| +<<test-with-function>> + + ++ +title: ExpectedResult + +<p>1 / 2 / 3|1 / 2 / 3|1 / 2 / 3</p> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9598.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9598.tid new file mode 100644 index 0000000000..1b56958f13 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9598.tid @@ -0,0 +1,11 @@ +change-category: filters +change-type: bugfix +created: 20260120145005984 +description: Fixes a bug with the resolution of functions within the substitute operator, where the function did not have access to variables set in the filter run. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9598 +modified: 20260120145321774 +release: 5.4.0 +tags: +title: $:/changenotes/5.4.0/#9598 +type: text/vnd.tiddlywiki \ No newline at end of file From 891e4fcb2b3633dd730930b3f8f6d31ae01ba933 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Wed, 4 Feb 2026 12:12:42 +0100 Subject: [PATCH 438/458] Fixes a regression in correctly evaluating default param values for functions (#9614) * Fix: bug in multivalue default params * Enhance release notes for version 5.4.0 Updated GitHub links and contributors for release notes. * Add FunctionDefaultValues test for default parameters * Update function default values in FunctionDefaultValues.tid * Update #8972.tid * fix: correctly resolve default values for functions * Update #8972.tid --- core/modules/widgets/widget.js | 8 +++++--- .../data/functions/FunctionDefaultValues.tid | 16 ++++++++++++++++ .../tiddlers/releasenotes/5.4.0/#8972.tid | 4 ++-- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 editions/test/tiddlers/tests/data/functions/FunctionDefaultValues.tid diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 67d32e9768..804d5a1539 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -160,7 +160,7 @@ Widget.prototype.getVariableInfo = function(name,options) { }); // Parameters are an array of {name:, value:, multivalue:} pairs (name and multivalue are optional) $tw.utils.each(params,function(param) { - if(param.multiValue) { + if(param.multiValue && param.multiValue.length) { variables[param.name] = param.multiValue; } else { variables[param.name] = param.value || ""; @@ -233,8 +233,10 @@ Widget.prototype.resolveVariableParameters = function(formalParams,actualParams) paramMultiValue = typeof param === "string" ? [param] : (param.multiValue || [paramValue]); } // If we've still not got a value, use the default, if any - paramValue = paramValue || paramInfo["default"] || ""; - paramMultiValue = paramMultiValue || [paramValue]; + if(!paramValue) { + paramValue = paramInfo["default"] || ""; + paramMultiValue = [paramValue]; + } // Store the parameter name and value results.push({name: paramInfo.name, value: paramValue, multiValue: paramMultiValue}); } diff --git a/editions/test/tiddlers/tests/data/functions/FunctionDefaultValues.tid b/editions/test/tiddlers/tests/data/functions/FunctionDefaultValues.tid new file mode 100644 index 0000000000..03c3a8a43c --- /dev/null +++ b/editions/test/tiddlers/tests/data/functions/FunctionDefaultValues.tid @@ -0,0 +1,16 @@ +title: Functions/FunctionDefaultValues +description: Use defaults for missing parameters in functions in filters +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\whitespace trim +\function .test(prefix:Default) [[ Content]addprefix<prefix>] + +<$text text={{{ [.test[Special]] }}}/>,<$text text={{{ [.test[]] }}}/> + ++ +title: ExpectedResult + +<p>Special Content,Default Content</p> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8972.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8972.tid index 45203e0ebd..bebbb5a6e1 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8972.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8972.tid @@ -4,8 +4,8 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: enhancement change-category: hackability -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8972 -github-contributors: Jermolene +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8972 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9614 +github-contributors: Jermolene saqimtiaz This PR introduces a new filter run prefix `:let` that assigns the result of the filter run to a variable that is made available for the remaining filter runs of the filter expression. It solves the problem that previously it was impossible to compute values for filter operator parameters; parameters could only be a literal string, text reference or variable reference. From 2e76cc08a13658a5950adc5f42cabcc3226e9492 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Wed, 4 Feb 2026 12:12:58 +0100 Subject: [PATCH 439/458] Extends image widget with support for data-attributes and on load actions (#9050) * feat: support for data-attributes and on load actions * feat: support for data-attributes and on load actions * fix: typo * fix: simplify variable assignment * docs: added changenote --- core/modules/widgets/image.js | 34 ++++++++++++++++--- .../tiddlers/releasenotes/5.4.0/#9050.tid | 13 +++++++ .../tw5.com/tiddlers/widgets/ImageWidget.tid | 19 ++++++++++- 3 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9050.tid diff --git a/core/modules/widgets/image.js b/core/modules/widgets/image.js index a8fddc7892..e4a382c46b 100644 --- a/core/modules/widgets/image.js +++ b/core/modules/widgets/image.js @@ -45,7 +45,7 @@ ImageWidget.prototype.render = function(parent,nextSibling) { this.execute(); // Create element // Determine what type of image it is - var tag = "img", src = "", + var tag = "img", src = "", self = this, tiddler = this.wiki.getTiddler(this.imageSource); if(!tiddler) { // The source isn't the title of a tiddler, so we'll assume it's a URL @@ -115,11 +115,21 @@ ImageWidget.prototype.render = function(parent,nextSibling) { if(this.lazyLoading && tag === "img") { domNode.setAttribute("loading",this.lazyLoading); } + this.assignAttributes(domNode,{ + sourcePrefix: "data-", + destPrefix: "data-" + }); // Add classes when the image loads or fails $tw.utils.addClass(domNode,"tc-image-loading"); - domNode.addEventListener("load",function() { + domNode.addEventListener("load",function(event) { $tw.utils.removeClass(domNode,"tc-image-loading"); $tw.utils.addClass(domNode,"tc-image-loaded"); + if(self.loadedActions) { + var variables = $tw.utils.collectDOMVariables(domNode,null,event); + variables["img-natural-width"] = domNode.naturalWidth.toString(); + variables["img-natural-height"] = domNode.naturalHeight.toString(); + self.invokeActionString(self.loadedActions,self,event,variables); + } },false); domNode.addEventListener("error",function() { $tw.utils.removeClass(domNode,"tc-image-loading"); @@ -143,17 +153,31 @@ ImageWidget.prototype.execute = function() { this.imageTooltip = this.getAttribute("tooltip"); this.imageAlt = this.getAttribute("alt"); this.lazyLoading = this.getAttribute("loading"); + this.loadedActions = this.getAttribute("loadActions"); }; /* Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering */ ImageWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(); - if(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes["class"] || changedAttributes.usemap || changedAttributes.tooltip || changedTiddlers[this.imageSource]) { + var changedAttributes = this.computeAttributes(), + hasChangedAttributes = $tw.utils.count(changedAttributes) > 0; + if(changedAttributes.source || changedAttributes["class"] || changedAttributes.usemap || changedAttributes.tooltip || changedTiddlers[this.imageSource] ||changedAttributes.loadActions) { this.refreshSelf(); return true; - } else { + } else if(hasChangedAttributes) { + this.assignAttributes(this.domNodes[0],{ + sourcePrefix: "data-", + destPrefix: "data-" + }); + if(changedAttributes.width) { + this.domNodes[0].setAttribute("width",this.getAttribute("width")); + } + if(changedAttributes.height) { + this.domNodes[0].setAttribute("height",this.getAttribute("height")); + } + } + else { return false; } }; diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9050.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9050.tid new file mode 100644 index 0000000000..2bc6bd63a2 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9050.tid @@ -0,0 +1,13 @@ +change-category: widget +change-type: enhancement +created: 20260126112805413 +description: Allow actions to be invoked when an image is loaded +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9050 +modified: 20260126113146914 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9050 +type: text/vnd.tiddlywiki + +Adds support to the image widget for optional actions that are invoked when an image has completed loading. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/ImageWidget.tid b/editions/tw5.com/tiddlers/widgets/ImageWidget.tid index 105a713113..89d3376914 100644 --- a/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ImageWidget.tid @@ -1,6 +1,6 @@ caption: image created: 20140416160234142 -modified: 20231121114351165 +modified: 20260126114209242 tags: Widgets title: ImageWidget type: text/vnd.tiddlywiki @@ -22,9 +22,26 @@ Any content of the `<$image>` widget is ignored. |class |CSS classes to be assigned to the `<img>` element | |loading|<<.from-version "5.2.3">>Optional. Set to `lazy` to enable lazy loading of images loaded from an external URI | |usemap|<<.from-version "5.3.2">>Optional usemap attribute to be assigned to the `<img>` element for use with HTML image maps | +|loadActions|<<.from-version "5.4.0">>Optional actions invoked when the image has completed loading. See below for variables passed to the actions.| The width and the height can be specified as pixel values (eg "23" or "23px") or percentages (eg "23%"). They are both optional; if not provided the browser will use CSS rules to size the image. + +'' The following variables are accessible in the //loadActions//:'' +<<.from-version 5.4.0>> + +|!Variables |!Description | +|`dom-*` |All DOM attributes of the image are made available as variables, with the prefix `dom-` | +|`tv-popup-coords` |A relative co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the image| +|`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the image (see [[Coordinate Systems]] for more information) | +|`tv-selectednode-posx` |`x` offset position of the image DOM node | +|`tv-selectednode-posy` |`y` offset position of the image DOM node | +|`tv-selectednode-width` |`offsetWidth` of the image DOM node | +|`tv-selectednode-height` |`offsetHeight` of the image DOM node | +|`img-natural-width` |Original intrinsic width of the image | +|`img-natural-height` |Original intrinsic height of the image | + + ! Responsive images and `<map>` [[Image maps area|https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area]] coordinates are numbers of CSS pixels, therefore they do not scale. If you want to use responsive images, you can use a `svg` and `foreignObject`: From 42a39289609e4f88d3894ff24da724b2550e1d00 Mon Sep 17 00:00:00 2001 From: yaisog <m@rcuswinter.de> Date: Wed, 4 Feb 2026 12:13:53 +0100 Subject: [PATCH 440/458] Refactor code for EditTemplate fields (#9582) * Refactored fields.tid * Add changenote * Optimize indentation and remove unneeded variable * Consolidate some variables, procedures and functions * Streamlined conditional and reveal structures * Eliminate the fieldmangler widget * Add tc-edit-field-exists to new field name input if applicable * Call save-tiddler-actions on Ctrl-Enter in name input field --- core/ui/EditTemplate/fields.tid | 306 ++++++++++-------- .../tiddlers/releasenotes/5.4.0/#9582.tid | 10 + 2 files changed, 175 insertions(+), 141 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9582.tid diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index 9eedad1fa7..dfa36c9ae7 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -1,157 +1,181 @@ title: $:/core/ui/EditTemplate/fields tags: $:/tags/EditTemplate -\procedure lingo-base() $:/language/EditTemplate/ -\function tf.config-title() [[$:/config/EditTemplateFields/Visibility/]addsuffix[$(currentField)$]substitute[]get[text]] - -\function tf.config-filter() [[hide]] :except[title<tf.config-title>] - -<!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 --> -\procedure get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>] -\procedure get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] - -\procedure prefix.bracket() [ -\procedure suffix.bracket() ] - -\function tf.current-tiddler-new-field-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<currentTiddlerCSSescaped>addsuffix[$(suffix.bracket)$]substitute[]] .tc-edit-field-add-name-wrapper input :and[join[ ]] - -\procedure new-field-actions() \whitespace trim -<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/> -<$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> > - <$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/> -</$set> -<$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/> -\end + +\procedure lingo-base() $:/language/EditTemplate/ \procedure delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/> -\procedure cancel-search-actions-inner() -\whitespace trim -<$list - filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" - variable="ignore" - emptyMessage="<<cancel-delete-tiddler-actions 'cancel'>>"> -<<delete-state-tiddlers>> -</$list> +\procedure focus-new-field-input() <$action-sendmessage $message="tm-focus-selector" $param=`[data-tiddler-title="$(storyTiddler)$"] .tc-edit-field-add-name-wrapper input` /> + +\procedure new-field-actions() + <$action-setfield $tiddler=<<storyTiddler>> $field={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}} /> + <$action-deletetiddler $filter="[prefix[$:/temp/NewFieldValue]prefix<newFieldValueTiddlerPrefix>]"/> + <<delete-state-tiddlers>> + <<focus-new-field-input>> +\end + +\procedure delete-field-actions() + <$action-deletefield $field=<<currentField>>/> + <<focus-new-field-input>> \end \procedure cancel-search-actions() -\whitespace trim -<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}> -<$list - filter="[<newFieldNameTiddler>get[text]!match<userInput>]" - emptyMessage="<<cancel-search-actions-inner>>"> -<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/> -</$list> -</$set> + <$let userInput={{{ [<storeTitle>get[text]] }}}> + <%if [<newFieldNameTiddler>get[text]!match<userInput>] %> + <$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/> + <$action-setfield $tiddler=<<refreshTitle>> text="yes"/> + <%else%> + <%if [<storeTitle>has[text]] [<newFieldNameTiddler>has[text]] %> + <<delete-state-tiddlers>> + <%else%> + <<cancel-delete-tiddler-actions 'cancel'>> + <%endif%> + <%endif%> + </$let> \end \procedure new-field() -\whitespace trim -<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}> -<$reveal type="nomatch" text="" default=<<name>>> -<$button tooltip={{$:/language/EditTemplate/Fields/Add/Button/Hint}}> -<$action-sendmessage $message="tm-add-field" -$name=<<name>> -$value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/> -<$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> > - <$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/> -</$set> -<<lingo Fields/Add/Button>> -</$button> -</$reveal> -<$reveal type="match" text="" default=<<name>>> -<$button> -<<lingo Fields/Add/Button>> -</$button> -</$reveal> -</$vars> + <%if [<newFieldNameTiddler>get[text]!is[blank]] %> + <$button actions="<<new-field-actions>>" tooltip={{$:/language/EditTemplate/Fields/Add/Button/Hint}}> + <<lingo Fields/Add/Button>> + </$button> + <%else%> + <$button> + <<lingo Fields/Add/Button>> + </$button> + <%endif%> \end -\whitespace trim -<$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> > -<div class="tc-edit-fields"> -<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] :and[count[]!match[0]] :and[then[tc-edit-fields]] :else[[tc-edit-fields tc-edit-fields-small]] }}}> -<tbody> -<$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop"> -<$list filter=<<tf.config-filter>> variable="temp"> -<tr class="tc-edit-field"> -<td class="tc-edit-field-name"> -<$text text=<<currentField>>/>:</td> -<td class="tc-edit-field-value"> -<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/></$set>"""> -<$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} /> -</$keyboard> -</td> -<td class="tc-edit-field-remove"> -<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}> -<$action-deletefield $field=<<currentField>>/> -{{$:/core/images/delete-button}} -</$button> -</td> -</tr> -</$list> -</$list> -</tbody> -</table> -</div> +\function tf.config-filter() [lookup:show[$:/config/EditTemplateFields/Visibility/]!match[hide]] -<$fieldmangler> -<div class="tc-edit-field-add"> -<em class="tc-edit tc-small-gap-right"> -<<lingo Fields/Add/Prompt>> -</em> -<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>> -<div class="tc-edit-field-add-name-wrapper"> -<$transclude $variable="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>> - selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} - focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} - focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} cancelPopups="yes" - configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> /> -<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> -<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default=""> -<div class="tc-block-dropdown tc-edit-type-dropdown"> -<$set name="tv-show-missing-links" value="yes"> -<$linkcatcher to=<<newFieldNameTiddler>>> -<div class="tc-dropdown-item"> -<<lingo Fields/Add/Dropdown/User>> -</div> -<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}> -<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] :except[[created]] :except[[creator]] :except[[draft.of]] :except[[draft.title]] :except[[modified]] :except[[modifier]] :except[[tags]] :except[[text]] :except[[title]] :except[[type]]" variable="currentField"> -<$list filter="[<currentField>addsuffix[-primaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>"""> -<$link to=<<currentField>>> -<$text text=<<currentField>>/> -</$link> -</$list> -</$list> -<div class="tc-dropdown-item"> -<<lingo Fields/Add/Dropdown/System>> -</div> -<$list filter="[fields[]search:title<newFieldName>sort[]] :except[!is[shadow]!is[system]fields[]]" variable="currentField"> -<$list filter="[<currentField>addsuffix[-secondaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>"""> -<$link to=<<currentField>>> -<$text text=<<currentField>>/> -</$link> -</$list> -</$list> -</$set> -</$linkcatcher> -</$set> -</div> -</$reveal> -</div> -<$let currentTiddlerCSSescaped={{{ [<currentTiddler>escapecss[]] }}} currentTiddler={{{ [subfilter<get-field-value-tiddler-filter>] }}} currentField="text" currentFieldName={{{ [<newFieldNameTiddler>get[text]] }}}> -<span class="tc-edit-field-add-value tc-small-gap-right"> -<$keyboard key="((add-field))" actions=<<new-field-actions>>> -<$transclude tiddler={{{ [subfilter<get-field-editor-filter>] }}} /> -</$keyboard> -</span> -<span class="tc-edit-field-add-button"> -<$transclude $variable="new-field"/> -</span> -</$let> -</$vars> -</div> -</$fieldmangler> -</$set> \ No newline at end of file +\function tf.field-cascade() + [<currentField>] + :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] + :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] +\end + +\function tf.get-field-editor() + [<newFieldNameTiddler>get[text]else[]] + :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] + :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] +\end + +\function tf.primary-list-exceptions() created creator draft.of draft.title modified modifier tags text title type + +\function tf.list-selection-class(listSuffix) [<searchListState>get[text]removesuffix<listSuffix>match<currentField>then[tc-list-item-selected]] + + +<$let newFieldValueTiddlerPrefix={{{ [<newFieldValueTiddlerPrefix>!is[blank]else<qualify "$:/temp/NewFieldValue">] }}} > + <div class="tc-edit-fields"> + <!-- table of user fields of the current tiddler --> + <table class=`tc-edit-fields ${ [all[current]fields[]] :filter[tf.config-filter[]] :and[count[]match[0]then[tc-edit-fields-small]] }$`> + <tbody> + <$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop"> + <%if [<currentField>tf.config-filter[]] %> + <tr class="tc-edit-field"> + <td class="tc-edit-field-name"> + <$text text=<<currentField>>/>: + </td> + <td class="tc-edit-field-value"> + <$keyboard key="((delete-field))" actions="<<delete-field-actions>>"> + <$transclude tiddler=<<tf.field-cascade>> /> + </$keyboard> + </td> + <td class="tc-edit-field-remove"> + <$button actions="<<delete-field-actions>>" + aria-label={{$:/language/EditTemplate/Field/Remove/Caption}} + class="tc-btn-invisible" + tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} + > + {{$:/core/images/delete-button}} + </$button> + </td> + </tr> + <%endif%> + </$list> + </tbody> + </table> + </div> + + <!-- input control for new field name with selection dropdown --> + <div class="tc-edit-field-add"> + <em class="tc-edit tc-small-gap-right"> + <<lingo Fields/Add/Prompt>> + </em> + <$let refreshTitle=<<qualify "$:/temp/fieldname/refresh">> + storeTitle=<<newFieldNameInputTiddler>> + searchListState=<<newFieldNameSelectionTiddler>> + > + <div class="tc-edit-field-add-name-wrapper"> + <$transclude $variable="keyboard-driven-input" + cancelPopups="yes" + class=`tc-edit-texteditor tc-popup-handle ${ [<newFieldNameTiddler>get[text]] :intersection[<storyTiddler>fields[]] :then[[tc-edit-field-exists]] }$` + configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" + default="" + focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} + focusPopup=<<qualify "$:/state/popup/field-dropdown">> + inputAcceptVariantActions=<<save-tiddler-actions>> + inputCancelActions=<<cancel-search-actions>> + placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} + refreshTitle=<<refreshTitle>> + selectionStateTitle=<<searchListState>> + storeTitle=<<storeTitle>> + tag="input" + tabindex={{$:/config/EditTabIndex}} + tiddler=<<newFieldNameTiddler>> + /> + <$button aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}} + class="tc-btn-invisible tc-btn-dropdown tc-small-gap" + popup=<<qualify "$:/state/popup/field-dropdown">> + tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} + > + {{$:/core/images/down-arrow}} + </$button> + <$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="" tag="div" class="tc-block-dropdown tc-edit-type-dropdown"> + <$let tv-show-missing-links="yes"> + <$linkcatcher to=<<newFieldNameTiddler>>> + <div class="tc-dropdown-item"> + <<lingo Fields/Add/Dropdown/User>> + </div> + <$let newFieldName={{{ [<storeTitle>get[text]] }}} + primaryListFields={{{ [!is[shadow]!is[system]fields[]format:titlelist[]join[ ]] }}} + > + <$list filter="[enlist<primaryListFields>search:title<newFieldName>sort[]] :except[tf.primary-list-exceptions[]]" variable="currentField"> + <$link to=<<currentField>> class=<<tf.list-selection-class "-primaryList">> > + <$text text=<<currentField>>/> + </$link> + </$list> + <div class="tc-dropdown-item"> + <<lingo Fields/Add/Dropdown/System>> + </div> + <$list filter="[fields[]search:title<newFieldName>!enlist<primaryListFields>sort[]]" variable="currentField"> + <$link to=<<currentField>> class=<<tf.list-selection-class "-secondaryList">>> + <$text text=<<currentField>>/> + </$link> + </$list> + </$let> + </$linkcatcher> + </$let> + </$reveal> + </div> + + <!-- input control for new field content --> + <$let currentFieldName={{{ [<newFieldNameTiddler>get[text]] }}} + fieldEditor=<<tf.get-field-editor>> + newFieldValueTiddler={{{ [<newFieldValueTiddlerPrefix>] [[/]] [<fieldEditor>sha256[16]] :and[join[]] }}} + currentTiddler=<<newFieldValueTiddler>> + > + <span class="tc-edit-field-add-value tc-small-gap-right"> + <$keyboard key="((add-field))" actions="<<new-field-actions>>"> + <$transclude $tiddler=<<fieldEditor>> /> + </$keyboard> + </span> + <span class="tc-edit-field-add-button"> + <$transclude $variable="new-field"/> + </span> + </$let> + </$let> + </div> +</$let> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9582.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9582.tid new file mode 100644 index 0000000000..2ee141dda1 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9582.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9582 +description: Refactor code for EditTemplate fields +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9582 +github-contributors: yaisog + +Refactored the EditTemplate fields.tid template to improve code maintainability and readability \ No newline at end of file From 196683915cced7f9cbe7fbedc7567d062471c72c Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 19:17:10 +0800 Subject: [PATCH 441/458] Replace window.eval with Function (#9611) * Replace window.eval with Function * Add back comment --- boot/boot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/boot.js b/boot/boot.js index c5aa254641..442f5845af 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -613,7 +613,7 @@ $tw.utils.evalGlobal = function(code,context,filename,sandbox,allowGlobals) { // Compile the code into a function var fn; if($tw.browser) { - fn = window["eval"](code + "\n\n//# sourceURL=" + filename); // eslint-disable-line no-eval -- See https://github.com/TiddlyWiki/TiddlyWiki5/issues/6839 + fn = Function("return " + code + "\n\n//# sourceURL=" + filename)(); // See https://github.com/TiddlyWiki/TiddlyWiki5/issues/6839 } else { if(sandbox){ fn = vm.runInContext(code,sandbox,filename) From 486d3bd3265a539a96961d361b5b21cbd205affc Mon Sep 17 00:00:00 2001 From: lin onetwo <linonetwo012@gmail.com> Date: Wed, 4 Feb 2026 19:19:56 +0800 Subject: [PATCH 442/458] Fix sitemap plugin can't provide xml content type in GET route (#9203) * Update get-tiddler-html.js * Create #9203.tid --- core-server/server/routes/get-tiddler-html.js | 4 ++-- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9203.tid | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9203.tid diff --git a/core-server/server/routes/get-tiddler-html.js b/core-server/server/routes/get-tiddler-html.js index b7a8aa8f62..0f4d89a7c8 100644 --- a/core-server/server/routes/get-tiddler-html.js +++ b/core-server/server/routes/get-tiddler-html.js @@ -33,8 +33,8 @@ exports.handler = function(request,response,state) { } var text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}}); - // Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS - state.sendResponse(200,{},text,"utf8"); + var headers = {"Content-Type": renderType}; + state.sendResponse(200,headers,text,"utf8"); } else { response.writeHead(404); response.end(); diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9203.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9203.tid new file mode 100644 index 0000000000..13ef89ad71 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9203.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9203 +description: Fix not provide content-type header in GET routes +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: nodejs +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9203 +github-contributors: linonetwo + +Fixed an issue which prevented plugins like the sitemap plugin from setting the correct MIME types (e.g., application/xml). From 9d5be2e9f8d9521ea6c6d5d4706ca38841ef2c91 Mon Sep 17 00:00:00 2001 From: Cameron Fischer <crf.git@nym.hush.com> Date: Wed, 4 Feb 2026 06:21:16 -0500 Subject: [PATCH 443/458] Recurse exception handling to better handle '{{}}' in place of recently installed fix (#9548) * Introduced preliminary idea for infinite recurse exception * Better handling of infinite recursion But it could be better still... * the TransclusionError is a proper error Moved the magic number to be on the error's class. Not sure if that's a great idea. * Fixed minor minor issue that came up in conflict The minor fix to the jasmine regexp that escaped a '+' somehow broke some random test. * Removing patch fix for recursion errors * Fixed issue where buttton and other widgets don't clean up * Added release notes for #9548 * Update test-widget.js If I don't fix those indentations, the entire TW codebase will explode or soemthing. * Update test-widget.js These lint problems are wasting my time. * Fixed all core widgets to not leak when renderChildren fails * Updated release notes to reflect what I'm actually fixing * Update test-widget.js Added warning not to use for-of loop for defining tests. The iterating variable needs to have its own method scope, or it risks being the same value for all tests. --- core/modules/editor/factory.js | 2 +- .../wikiparser/rules/transcludeblock.js | 21 --------------- .../wikiparser/rules/transcludeinline.js | 21 --------------- core/modules/utils/errors.js | 1 + core/modules/widgets/browse.js | 2 +- core/modules/widgets/button.js | 2 +- core/modules/widgets/checkbox.js | 2 +- core/modules/widgets/diff-text.js | 4 +-- core/modules/widgets/draggable.js | 2 +- core/modules/widgets/droppable.js | 2 +- core/modules/widgets/element.js | 2 +- core/modules/widgets/eventcatcher.js | 2 +- core/modules/widgets/keyboard.js | 2 +- core/modules/widgets/link.js | 4 +-- core/modules/widgets/password.js | 2 +- core/modules/widgets/radio.js | 2 +- core/modules/widgets/reveal.js | 2 +- core/modules/widgets/scrollable.js | 2 +- core/modules/widgets/select.js | 2 +- core/modules/widgets/transclude.js | 22 +++++++++++----- editions/test/tiddlers/tests/test-widget.js | 26 +++++++++++++++++++ .../tiddlers/releasenotes/5.4.0/#9548.tid | 10 +++++++ 22 files changed, 71 insertions(+), 66 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9548.tid diff --git a/core/modules/editor/factory.js b/core/modules/editor/factory.js index 2fd323c0bb..7ae54e2278 100644 --- a/core/modules/editor/factory.js +++ b/core/modules/editor/factory.js @@ -48,8 +48,8 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) { this.toolbarNode = this.document.createElement("div"); this.toolbarNode.className = "tc-editor-toolbar"; parent.insertBefore(this.toolbarNode,nextSibling); - this.renderChildren(this.toolbarNode,null); this.domNodes.push(this.toolbarNode); + this.renderChildren(this.toolbarNode,null); } // Create our element var editInfo = this.getEditInfo(), diff --git a/core/modules/parsers/wikiparser/rules/transcludeblock.js b/core/modules/parsers/wikiparser/rules/transcludeblock.js index 5c5367cb49..525113d5d7 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeblock.js +++ b/core/modules/parsers/wikiparser/rules/transcludeblock.js @@ -23,27 +23,6 @@ exports.init = function(parser) { this.matchRegExp = /\{\{([^\{\}\|]*)(?:\|\|([^\|\{\}]+))?(?:\|([^\{\}]+))?\}\}(?:\r?\n|$)/mg; }; -/* -Reject the match if we don't have a template or text reference -*/ -exports.findNextMatch = function(startPos) { - this.matchRegExp.lastIndex = startPos; - this.match = this.matchRegExp.exec(this.parser.source); - if(this.match) { - var template = $tw.utils.trim(this.match[2]), - textRef = $tw.utils.trim(this.match[1]); - // Bail if we don't have a template or text reference - if(!template && !textRef) { - return undefined; - } else { - return this.match.index; - } - } else { - return undefined; - } - return this.match ? this.match.index : undefined; -}; - exports.parse = function() { // Move past the match this.parser.pos = this.matchRegExp.lastIndex; diff --git a/core/modules/parsers/wikiparser/rules/transcludeinline.js b/core/modules/parsers/wikiparser/rules/transcludeinline.js index 57def3e33e..4ae58e6175 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeinline.js +++ b/core/modules/parsers/wikiparser/rules/transcludeinline.js @@ -23,27 +23,6 @@ exports.init = function(parser) { this.matchRegExp = /\{\{([^\{\}\|]*)(?:\|\|([^\|\{\}]+))?(?:\|([^\{\}]+))?\}\}/mg; }; -/* -Reject the match if we don't have a template or text reference -*/ -exports.findNextMatch = function(startPos) { - this.matchRegExp.lastIndex = startPos; - this.match = this.matchRegExp.exec(this.parser.source); - if(this.match) { - var template = $tw.utils.trim(this.match[2]), - textRef = $tw.utils.trim(this.match[1]); - // Bail if we don't have a template or text reference - if(!template && !textRef) { - return undefined; - } else { - return this.match.index; - } - } else { - return undefined; - } - return this.match ? this.match.index : undefined; -}; - exports.parse = function() { // Move past the match this.parser.pos = this.matchRegExp.lastIndex; diff --git a/core/modules/utils/errors.js b/core/modules/utils/errors.js index 40e0a4f8f6..b955e094f1 100644 --- a/core/modules/utils/errors.js +++ b/core/modules/utils/errors.js @@ -6,6 +6,7 @@ module-type: utils Custom errors for TiddlyWiki. \*/ + function TranscludeRecursionError() { Error.apply(this,arguments); this.signatures = Object.create(null); diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index b0173f6e21..47df1f3b7c 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -80,8 +80,8 @@ BrowseWidget.prototype.render = function(parent,nextSibling) { }); // Insert element parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; /* diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index e946b7da96..0a5f955e36 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -135,8 +135,8 @@ ButtonWidget.prototype.render = function(parent,nextSibling) { } // Insert element parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; /* diff --git a/core/modules/widgets/checkbox.js b/core/modules/widgets/checkbox.js index 7fe62fb42a..f32fd7fd7b 100644 --- a/core/modules/widgets/checkbox.js +++ b/core/modules/widgets/checkbox.js @@ -64,8 +64,8 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) { ]); // Insert the label into the DOM and render any children parent.insertBefore(this.labelDomNode,nextSibling); - this.renderChildren(this.spanDomNode,null); this.domNodes.push(this.labelDomNode); + this.renderChildren(this.spanDomNode,null); }; CheckboxWidget.prototype.getValue = function() { diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index 5aa1344d60..d91d4b96ad 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -59,6 +59,8 @@ DiffTextWidget.prototype.render = function(parent,nextSibling) { var domContainer = this.document.createElement("div"), domDiff = this.createDiffDom(diffs); parent.insertBefore(domContainer,nextSibling); + // Save our container + this.domNodes.push(domContainer); // Set variables this.setVariable("diff-count",diffs.reduce(function(acc,diff) { if(diff[0] !== dmp.DIFF_EQUAL) { @@ -70,8 +72,6 @@ DiffTextWidget.prototype.render = function(parent,nextSibling) { this.renderChildren(domContainer,null); // Render the diff domContainer.appendChild(domDiff); - // Save our container - this.domNodes.push(domContainer); }; /* diff --git a/core/modules/widgets/draggable.js b/core/modules/widgets/draggable.js index 0bb2fc169a..fbc935fb2c 100644 --- a/core/modules/widgets/draggable.js +++ b/core/modules/widgets/draggable.js @@ -56,6 +56,7 @@ DraggableWidget.prototype.render = function(parent,nextSibling) { }); // Insert the node into the DOM and render any children parent.insertBefore(domNode,nextSibling); + this.domNodes.push(domNode); this.renderChildren(domNode,null); // Add event handlers if(this.dragEnable) { @@ -70,7 +71,6 @@ DraggableWidget.prototype.render = function(parent,nextSibling) { selector: self.dragHandleSelector }); } - this.domNodes.push(domNode); }; /* diff --git a/core/modules/widgets/droppable.js b/core/modules/widgets/droppable.js index 72f1a67f75..7f88ac223b 100644 --- a/core/modules/widgets/droppable.js +++ b/core/modules/widgets/droppable.js @@ -57,8 +57,8 @@ DroppableWidget.prototype.render = function(parent,nextSibling) { } // Insert element parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); // Stack of outstanding enter/leave events this.currentlyEntered = []; }; diff --git a/core/modules/widgets/element.js b/core/modules/widgets/element.js index 8b0a88e868..cb1f9d2436 100755 --- a/core/modules/widgets/element.js +++ b/core/modules/widgets/element.js @@ -77,8 +77,8 @@ ElementWidget.prototype.render = function(parent,nextSibling) { // Allow hooks to manipulate the DOM node. Eg: Add debug info $tw.hooks.invokeHook("th-dom-rendering-element", domNode, this); parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; /* diff --git a/core/modules/widgets/eventcatcher.js b/core/modules/widgets/eventcatcher.js index 3268f6cab1..2579858b18 100644 --- a/core/modules/widgets/eventcatcher.js +++ b/core/modules/widgets/eventcatcher.js @@ -106,8 +106,8 @@ EventWidget.prototype.render = function(parent,nextSibling) { }); // Insert element parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; /* diff --git a/core/modules/widgets/keyboard.js b/core/modules/widgets/keyboard.js index bc452b9deb..132ef9a18c 100644 --- a/core/modules/widgets/keyboard.js +++ b/core/modules/widgets/keyboard.js @@ -45,8 +45,8 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) { ]); // Insert element parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; KeyboardWidget.prototype.handleChangeEvent = function(event) { diff --git a/core/modules/widgets/link.js b/core/modules/widgets/link.js index d2c5995424..cb9225197d 100755 --- a/core/modules/widgets/link.js +++ b/core/modules/widgets/link.js @@ -50,8 +50,8 @@ LinkWidget.prototype.render = function(parent,nextSibling) { destPrefix: "aria-" }); parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); } }; @@ -157,8 +157,8 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) { }); // Insert the link into the DOM and render any children parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; LinkWidget.prototype.handleClickEvent = function(event) { diff --git a/core/modules/widgets/password.js b/core/modules/widgets/password.js index 59b084940d..f429f881e5 100644 --- a/core/modules/widgets/password.js +++ b/core/modules/widgets/password.js @@ -42,8 +42,8 @@ PasswordWidget.prototype.render = function(parent,nextSibling) { ]); // Insert the label into the DOM and render any children parent.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); }; PasswordWidget.prototype.handleChangeEvent = function(event) { diff --git a/core/modules/widgets/radio.js b/core/modules/widgets/radio.js index 4587df65fe..33e4aa58ea 100644 --- a/core/modules/widgets/radio.js +++ b/core/modules/widgets/radio.js @@ -59,8 +59,8 @@ RadioWidget.prototype.render = function(parent,nextSibling) { ]); // Insert the label into the DOM and render any children parent.insertBefore(this.labelDomNode,nextSibling); - this.renderChildren(this.spanDomNode,null); this.domNodes.push(this.labelDomNode); + this.renderChildren(this.spanDomNode,null); }; RadioWidget.prototype.getValue = function() { diff --git a/core/modules/widgets/reveal.js b/core/modules/widgets/reveal.js index 5c2580f9ef..e66b0fb791 100755 --- a/core/modules/widgets/reveal.js +++ b/core/modules/widgets/reveal.js @@ -40,6 +40,7 @@ RevealWidget.prototype.render = function(parent,nextSibling) { domNode.setAttribute("style",this.style); } parent.insertBefore(domNode,nextSibling); + this.domNodes.push(domNode); this.renderChildren(domNode,null); if(!domNode.isTiddlyWikiFakeDom && this.type === "popup" && this.isOpen) { this.positionPopup(domNode); @@ -48,7 +49,6 @@ RevealWidget.prototype.render = function(parent,nextSibling) { if(!this.isOpen) { domNode.setAttribute("hidden","true"); } - this.domNodes.push(domNode); }; RevealWidget.prototype.positionPopup = function(domNode) { diff --git a/core/modules/widgets/scrollable.js b/core/modules/widgets/scrollable.js index 42705a61bf..265c6f7d85 100644 --- a/core/modules/widgets/scrollable.js +++ b/core/modules/widgets/scrollable.js @@ -168,8 +168,8 @@ ScrollableWidget.prototype.render = function(parent,nextSibling) { this.outerDomNode.className = this["class"] || ""; // Insert element parent.insertBefore(this.outerDomNode,nextSibling); - this.renderChildren(this.innerDomNode,null); this.domNodes.push(this.outerDomNode); + this.renderChildren(this.innerDomNode,null); // If the scroll position is bound to a tiddler if(this.scrollableBind) { // After a delay for rendering, scroll to the bound position diff --git a/core/modules/widgets/select.js b/core/modules/widgets/select.js index b05af5dbbe..07c959550f 100644 --- a/core/modules/widgets/select.js +++ b/core/modules/widgets/select.js @@ -63,8 +63,8 @@ SelectWidget.prototype.render = function(parent,nextSibling) { domNode.setAttribute("title",this.selectTooltip); } this.parentDomNode.insertBefore(domNode,nextSibling); - this.renderChildren(domNode,null); this.domNodes.push(domNode); + this.renderChildren(domNode,null); this.setSelectValue(); if(this.selectFocus == "yes") { this.getSelectDomNode().focus(); diff --git a/core/modules/widgets/transclude.js b/core/modules/widgets/transclude.js index 9bec28b076..f1ed74e348 100755 --- a/core/modules/widgets/transclude.js +++ b/core/modules/widgets/transclude.js @@ -32,16 +32,26 @@ TranscludeWidget.prototype.render = function(parent,nextSibling) { } catch(error) { if(error instanceof $tw.utils.TranscludeRecursionError) { // We were infinite looping. - // We need to try and abort as much of the loop as we can, so we will keep "throwing" upward until we find a transclusion that has a different signature. - // Hopefully that will land us just outside where the loop began. That's where we want to issue an error. - // Rendering widgets beneath this point may result in a freezing browser if they explode exponentially. + // We need to try and abort as much of the loop as we + // can, so we will keep "throwing" upward until we find + // a transclusion that has a different signature. + // Hopefully that will land us just outside where the + // loop began. That's where we want to issue an error. + // Rendering widgets beneath this point may result in a + // freezing browser if they explode exponentially. var transcludeSignature = this.getVariable("transclusion"); if(this.getAncestorCount() > $tw.utils.TranscludeRecursionError.MAX_WIDGET_TREE_DEPTH - 50) { - // For the first fifty transcludes we climb up, we simply collect signatures. - // We're assuming that those first 50 will likely include all transcludes involved in the loop. + // For the first fifty transcludes we climb up, + // we simply collect signatures. + // We're assuming those first 50 will likely + // include all transcludes involved in the loop. error.signatures[transcludeSignature] = true; } else if(!error.signatures[transcludeSignature]) { - // Now that we're past the first 50, let's look for the first signature that wasn't in the loop. That'll be where we print the error and resume rendering. + // Now that we're past the first 50, look for + // the first signature that wasn't in that loop. + // That's where we print the error and resume + // rendering. + this.removeChildDomNodes(); this.children = [this.makeChildWidget({type: "error", attributes: { "$message": {type: "string", value: $tw.language.getString("Error/RecursiveTransclusion")} }})]; diff --git a/editions/test/tiddlers/tests/test-widget.js b/editions/test/tiddlers/tests/test-widget.js index 7d1cbc329b..2600afb7fc 100755 --- a/editions/test/tiddlers/tests/test-widget.js +++ b/editions/test/tiddlers/tests/test-widget.js @@ -177,6 +177,32 @@ describe("Widget module", function() { expect(wrapper.innerHTML).toBe("<span class=\"tc-error\">Recursive transclusion error in transclude widget</span> <span class=\"tc-error\">Recursive transclusion error in transclude widget</span>"); }); + // Do NOT use a for-of or for-in here. Each jasmine test must be + // defined in its own function context, or the `tag` variable will + // end up being the same value for all iterations of the test. + $tw.utils.each(["div","$button","$checkbox","$diff-text","$draggable","$droppable","dropzone","$eventcatcher","$keyboard","$link","$list filter=x variable=x","$radio","$reveal type=nomatch","$scrollable","$select","$view field=x"],function(tag) { + it(`${tag} cleans itself up if children rendering fails`, function() { + var wiki = new $tw.Wiki(); + wiki.addTiddler({title: "TiddlerOne", text: `<$tiddler tiddler='TiddlerOne'><${tag}><$transclude />`}); + var parseTreeNode = {type: "widget", children: [ + {type: "transclude", attributes: { + "tiddler": {type: "string", value: "TiddlerOne"} + }} + ]}; + // Construct the widget node + var widgetNode = createWidgetNode(parseTreeNode,wiki); + // Render the widget node to the DOM + var wrapper = renderWidgetNode(widgetNode); + // We don't actually care exactly what the HTML contains, + // only that it's reasonably sized. If it's super large, + // that means the widget containing the bad transclusion + // didn't figure out how to clean itself up, and it cloned a bunch. + var html = wrapper.innerHTML; + expect(html).toContain("Recursive transclusion error in transclude widget"); + expect(html.length).toBeLessThan(256, "CONTENTS: " + html); + }); + }); + it("should handle many-tiddler recursion with branching nodes", function() { var wiki = new $tw.Wiki(); // Add a tiddler diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9548.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9548.tid new file mode 100644 index 0000000000..50a2b6afdf --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9548.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9548 +description: Better infinite transclude recursion handling +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: bugfix +change-category: widget +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9458 +github-contributors: Flibbles + +Fixed issue where exceptions occurring during widget rendering could result in junk DOM nodes remaining in widget tree. This was very obvious when max recursion depth exceptions occurred. From 9c09841eda0e796a56fe855db5d628c242ba838c Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 19:21:54 +0800 Subject: [PATCH 444/458] Make draft title translatable (#8891) * Make draft title translatable * Update change note * Improve number handling Now generates "Draft of '...' 2" instead of "Draft 2 of '...'" * Improve whitespace handling We no longer needs to add whitespace in languages. We now handle it in javascript. * Update language naming * Update zh-Hans translation * Update change note * Refactor logic to make it less complex Since we don't need to care about draft numbers, we can have two different templates for draft title with and without attribution. No need to trim the string now. Also, we can reuse the getSubstitutedText method * Update translators edition * fixup! Update translators edition * Switch to transclude and variable mechanism * Adapt translators to the new mechanism * Update change note * Further simplify the logic $tw.language.getString can already wikify translatable strings. No need for this.renderText --- core/language/en-GB/Draft.multids | 4 +++ core/modules/wiki.js | 12 ++++---- .../tiddlers/Instructions for Translators.tid | 1 + .../tiddlers/system/$__status_UserName.tid | 3 ++ editions/translators/tiddlywiki.info | 1 + .../releasenotes/5.4.0/draft-i18n.tid | 15 ++++++++++ languages/zh-Hans/Draft.multids | 4 +++ .../output-file-templates/Draft.multids.tid | 3 ++ .../output-file-templates/Misc.multids.tid | 1 + .../tiddlywiki/translators/ui/group/Draft.tid | 28 +++++++++++++++++++ .../translators/ui/group/Miscellaneous.tid | 1 + 11 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 core/language/en-GB/Draft.multids create mode 100644 editions/translators/tiddlers/system/$__status_UserName.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/draft-i18n.tid create mode 100644 languages/zh-Hans/Draft.multids create mode 100644 plugins/tiddlywiki/translators/output-file-templates/Draft.multids.tid create mode 100644 plugins/tiddlywiki/translators/ui/group/Draft.tid diff --git a/core/language/en-GB/Draft.multids b/core/language/en-GB/Draft.multids new file mode 100644 index 0000000000..5fc50f1158 --- /dev/null +++ b/core/language/en-GB/Draft.multids @@ -0,0 +1,4 @@ +title: $:/language/Draft/ + +Attribution: Draft of '<<draft-title>>' by {{$:/status/UserName}} +Title: Draft of '<<draft-title>>' \ No newline at end of file diff --git a/core/modules/wiki.js b/core/modules/wiki.js index ccf782396a..0100e4600a 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1664,12 +1664,14 @@ exports.addToStory = function(title,fromTitle,storyTitle,options) { Generate a title for the draft of a given tiddler */ exports.generateDraftTitle = function(title) { - var c = 0, - draftTitle, - username = this.getTiddlerText("$:/status/UserName"), - attribution = username ? " by " + username : ""; + let c = 0, + draftTitle; + const username = this.getTiddlerText("$:/status/UserName"); do { - draftTitle = "Draft " + (c ? (c + 1) + " " : "") + "of '" + title + "'" + attribution; + draftTitle = username ? $tw.language.getString("Draft/Attribution", {variables: {"draft-title": title}}) : $tw.language.getString("Draft/Title", {variables: {"draft-title": title}}); + if(c) { + draftTitle = draftTitle.concat(" ", (c + 1).toString()); + } c++; } while(this.tiddlerExists(draftTitle)); return draftTitle; diff --git a/editions/translators/tiddlers/Instructions for Translators.tid b/editions/translators/tiddlers/Instructions for Translators.tid index 11d2c7dd55..d3927f1062 100644 --- a/editions/translators/tiddlers/Instructions for Translators.tid +++ b/editions/translators/tiddlers/Instructions for Translators.tid @@ -48,6 +48,7 @@ Prioritise the groups to translate first. A translation can be useful without be * Buttons * Control Panel * Date +* Draft * Edit Template * Getting Started * Import diff --git a/editions/translators/tiddlers/system/$__status_UserName.tid b/editions/translators/tiddlers/system/$__status_UserName.tid new file mode 100644 index 0000000000..0dd5451f95 --- /dev/null +++ b/editions/translators/tiddlers/system/$__status_UserName.tid @@ -0,0 +1,3 @@ +title: $:/status/UserName + +Jermolene diff --git a/editions/translators/tiddlywiki.info b/editions/translators/tiddlywiki.info index 7fd4056420..7c9ea39619 100644 --- a/editions/translators/tiddlywiki.info +++ b/editions/translators/tiddlywiki.info @@ -51,6 +51,7 @@ "--render","$:/plugins/tiddlywiki/translators/templates/ControlPanel.multids","language/ControlPanel.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/CoreReadMe.tid","language/CoreReadMe.tid","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Dates.multids","language/Dates.multids","text/plain", + "--render","$:/plugins/tiddlywiki/translators/templates/Draft.multids","language/Draft.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/EditTemplate.multids","language/EditTemplate.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Exporters.multids","language/Exporters.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Fields.multids","language/Fields.multids","text/plain", diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/draft-i18n.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/draft-i18n.tid new file mode 100644 index 0000000000..794f6aa9ca --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/draft-i18n.tid @@ -0,0 +1,15 @@ +title: $:/changenotes/5.4.0/#8891 +description: Draft title internationalization +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: internal +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8891 +github-contributors: Leilei332 + +The title of the draft tiddler is now translatable. These new language strings are provided: + +* `$:/language/Draft/Title` The template of the title of a draft tiddler without attribution. The `draft-title` variable represents the title of the new tiddler. +* `$:/language/Draft/Attribution` The template of the title of a draft tiddler without attribution. + +The translators plugin is also updated. \ No newline at end of file diff --git a/languages/zh-Hans/Draft.multids b/languages/zh-Hans/Draft.multids new file mode 100644 index 0000000000..5833bf2bc8 --- /dev/null +++ b/languages/zh-Hans/Draft.multids @@ -0,0 +1,4 @@ +title: $:/language/Draft/ + +Attribution: {{$:/status/UserName}}撰写的“<<draft-title>>”的草稿 +Title: “<<draft-title>>”的草稿 \ No newline at end of file diff --git a/plugins/tiddlywiki/translators/output-file-templates/Draft.multids.tid b/plugins/tiddlywiki/translators/output-file-templates/Draft.multids.tid new file mode 100644 index 0000000000..52352b8fde --- /dev/null +++ b/plugins/tiddlywiki/translators/output-file-templates/Draft.multids.tid @@ -0,0 +1,3 @@ +title: $:/plugins/tiddlywiki/translators/templates/Draft.multids + +{{$:/language/Draft/||$:/plugins/tiddlywiki/translators/templates/multids}} \ No newline at end of file diff --git a/plugins/tiddlywiki/translators/output-file-templates/Misc.multids.tid b/plugins/tiddlywiki/translators/output-file-templates/Misc.multids.tid index 43ec9daf8e..2d7c7a2d69 100644 --- a/plugins/tiddlywiki/translators/output-file-templates/Misc.multids.tid +++ b/plugins/tiddlywiki/translators/output-file-templates/Misc.multids.tid @@ -4,6 +4,7 @@ title: $:/plugins/tiddlywiki/translators/templates/Misc.multids -[all[tiddlers]prefix[$:/language/Buttons/]] -[all[tiddlers]prefix[$:/language/ControlPanel/]] -[all[tiddlers]prefix[$:/language/Date/]] +-[all[tiddlers]prefix[$:/language/Draft/]] -[all[tiddlers]prefix[$:/language/Docs/]] -[all[tiddlers]prefix[$:/language/EditTemplate/]] -[all[tiddlers]prefix[$:/language/Exporters/]] diff --git a/plugins/tiddlywiki/translators/ui/group/Draft.tid b/plugins/tiddlywiki/translators/ui/group/Draft.tid new file mode 100644 index 0000000000..3a9f798ba0 --- /dev/null +++ b/plugins/tiddlywiki/translators/ui/group/Draft.tid @@ -0,0 +1,28 @@ +title: $:/plugins/tiddlywiki/translators/ui/group/Draft +caption: Draft +tags: $:/tags/TranslationGroup + +\procedure translatableTiddlerTitles() +[all[tiddlers+shadows]prefix[$:/language/Draft/]] ++[sort[title]] +\end +\procedure shortenTitle() +[all[current]removeprefix[$:/language/Draft/]] +\end + +! Draft + +Template for the title of draft tiddlers. + +Substitution result: + +<$let draft-title="Motovun Jack"> +<$wikify name="draft-with-attribution" text={{$:/language/Draft/Attribution}} output="text"> +<$wikify name="draft-without-attribution" text={{$:/language/Draft/Title}} output="text"> +<$codeblock code=<<draft-with-attribution>>/> +<$codeblock code=<<draft-without-attribution>>/> +</$wikify> +</$wikify> +</$let> + +<<translatableStringEditor>> diff --git a/plugins/tiddlywiki/translators/ui/group/Miscellaneous.tid b/plugins/tiddlywiki/translators/ui/group/Miscellaneous.tid index 19b6400325..dcf0920231 100644 --- a/plugins/tiddlywiki/translators/ui/group/Miscellaneous.tid +++ b/plugins/tiddlywiki/translators/ui/group/Miscellaneous.tid @@ -6,6 +6,7 @@ tags: $:/tags/TranslationGroup [all[tiddlers+shadows]prefix[$:/language/]] -[all[tiddlers+shadows]prefix[$:/language/Buttons/]] -[all[tiddlers+shadows]prefix[$:/language/ControlPanel/]] +-[all[tiddlers+shadows]prefix[$:/language/Draft/]] -[all[tiddlers+shadows]prefix[$:/language/Date/]] -[all[tiddlers+shadows]prefix[$:/language/Docs/]] -[all[tiddlers+shadows]prefix[$:/language/EditTemplate/]] From dc764b3a4ac97d1e2108badbff33366bdbf0772e Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 19:22:32 +0800 Subject: [PATCH 445/458] Replace fill rules in tw5.com edition (#9624) --- .../tiddlers/_tw_shared/doc-utilities/doc-styles.tid | 6 ++---- editions/tw5.com/tiddlers/cards/card-styles.tid | 1 - editions/tw5.com/tiddlers/features/Core Icons.tid | 2 +- editions/tw5.com/tiddlers/hire-jeremy/HireJeremyStyles.tid | 2 +- editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid | 2 +- editions/tw5.com/tiddlers/system/tw5.com-styles.tid | 1 - .../tiddlers/variables/examples/tv-config-toolbar-class.tid | 2 +- 7 files changed, 6 insertions(+), 10 deletions(-) diff --git a/editions/tw5.com/tiddlers/_tw_shared/doc-utilities/doc-styles.tid b/editions/tw5.com/tiddlers/_tw_shared/doc-utilities/doc-styles.tid index 55ae579932..e48f80f8aa 100644 --- a/editions/tw5.com/tiddlers/_tw_shared/doc-utilities/doc-styles.tid +++ b/editions/tw5.com/tiddlers/_tw_shared/doc-utilities/doc-styles.tid @@ -193,11 +193,11 @@ tr.doc-table-subheading { } .doc-block-icon .tc-image-tip { - fill: <<colour primary>>; + color: <<colour primary>>; } .doc-block-icon .tc-image-warning { - fill: <<colour alert-highlight>>; + color: <<colour alert-highlight>>; } a.doc-from-version { @@ -215,7 +215,6 @@ a.doc-from-version.doc-from-version-new { } a.doc-from-version svg { - fill: currentColor; vertical-align: sub; } @@ -224,7 +223,6 @@ a.doc-deprecated-version.tc-tiddlylink { border-radius: 1em; background: red; color: <<colour background>>; - fill: <<colour background>>; padding: 0 0.4em; font-size: 0.7em; text-transform: uppercase; diff --git a/editions/tw5.com/tiddlers/cards/card-styles.tid b/editions/tw5.com/tiddlers/cards/card-styles.tid index 7321ac1297..8279f69d47 100644 --- a/editions/tw5.com/tiddlers/cards/card-styles.tid +++ b/editions/tw5.com/tiddlers/cards/card-styles.tid @@ -36,7 +36,6 @@ type: text/vnd.tiddlywiki border-radius: 6px; padding: 0.5em; color: <<colour background>>; - fill: <<colour background>>; } .tc-cards.tc-action-card .tc-card-button svg { diff --git a/editions/tw5.com/tiddlers/features/Core Icons.tid b/editions/tw5.com/tiddlers/features/Core Icons.tid index 9799f48d7e..f28c98eb1f 100644 --- a/editions/tw5.com/tiddlers/features/Core Icons.tid +++ b/editions/tw5.com/tiddlers/features/Core Icons.tid @@ -37,5 +37,5 @@ Some icons take further parameters to customise how they are rendered. For examp The core icons are implemented as embedded [[SVG elements|Using SVG]], and not as full-blown SVG images. This means that they can be styled using CSS. For example, the CSS property `fill` can be used to change the colour of the icons. For example: -<<wikitext-example-without-html """<span style="fill: red;">{{$:/core/images/opacity}}</span> +<<wikitext-example-without-html """<span style="color: red;">{{$:/core/images/opacity}}</span> """>> diff --git a/editions/tw5.com/tiddlers/hire-jeremy/HireJeremyStyles.tid b/editions/tw5.com/tiddlers/hire-jeremy/HireJeremyStyles.tid index 5761e8c4fa..4e7c0ca7b3 100644 --- a/editions/tw5.com/tiddlers/hire-jeremy/HireJeremyStyles.tid +++ b/editions/tw5.com/tiddlers/hire-jeremy/HireJeremyStyles.tid @@ -81,7 +81,7 @@ type: text/vnd.tiddlywiki } [data-tiddler-title="Hire the founder of TiddlyWiki"] .tc-btn-big-green svg { - fill: #cece86; + color: #cece86; } .yellow-note-sidebar-wrapper { diff --git a/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid index 70e5d19b54..95e46c0b94 100644 --- a/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid +++ b/editions/tw5.com/tiddlers/saving/SavingThumbnailsStyles.tid @@ -68,6 +68,6 @@ tags: $:/tags/Stylesheet .tc-thumbnail-tabs .tc-btn-pushed { background-color: <<colour foreground>>; - fill: <<color background>>; + color: <<color background>>; } diff --git a/editions/tw5.com/tiddlers/system/tw5.com-styles.tid b/editions/tw5.com/tiddlers/system/tw5.com-styles.tid index 9d4bad68fb..4c103b39ee 100644 --- a/editions/tw5.com/tiddlers/system/tw5.com-styles.tid +++ b/editions/tw5.com/tiddlers/system/tw5.com-styles.tid @@ -97,7 +97,6 @@ type: text/vnd.tiddlywiki font-size: 1.2em; line-height: 1.4em; color: #fff; - fill: #fff; } .tc-btn-download:active { diff --git a/editions/tw5.com/tiddlers/variables/examples/tv-config-toolbar-class.tid b/editions/tw5.com/tiddlers/variables/examples/tv-config-toolbar-class.tid index af53064ead..320b92358a 100644 --- a/editions/tw5.com/tiddlers/variables/examples/tv-config-toolbar-class.tid +++ b/editions/tw5.com/tiddlers/variables/examples/tv-config-toolbar-class.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki <style> .green-background { background-color: green; - fill: white; + color: white; } </style> From 6bc77cf3e27526e6e07b311d1963d710361a0c7e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Wed, 4 Feb 2026 11:24:06 +0000 Subject: [PATCH 446/458] Dynamic parameters for macro/procedure/function calls (#9055) * Initial commit The idea is to extend the macro call syntax to accept dynamic parameter values (ie thing:{{more}} etc). Eventually, this will work in all the contexts in which the double angle bracket syntax is valid. This initial commit gets the tests passing, but doesn't yet activate the new functionality. * Test for standalone macro calls with dynamic parameters * Parse attribute macros with the new parser This fixes the tests * Test for attribute macros * Add some examples * Tweak examples * Fix test * Temporarily disable a broken serializer test * Fix/dynamic macro calls test (#9459) * Revert "Temporarily disable a broken serializer test" This reverts commit b3144300ee1c28a2983c659c8e29a6776923d6a2. * restore synamic parameter parse result * lint * lint * remove duplicate * Update core/modules/parsers/parseutils.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: mixed qouted and unquoted --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix unneeded diff * Minor docs update * Genuflecting to the linter * Remove debug logging * Add change note * Allow single closing square brackets within double square brackets quoted strings * Only allow new style parameter values if the separator is an equals sign * On reflection, new style values should not be allowed for anonymous parameters Backwards compatibility * Docs updates * Docs updates --------- Co-authored-by: lin onetwo <linonetwo012@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- core/modules/parsers/parseutils.js | 180 +++++++++-- .../parsers/wikiparser/rules/macrodef.js | 2 +- core/modules/widgets/widget.js | 16 +- ...tw5.com_railroad_macro-parameter-value.tid | 4 +- editions/fr-FR/tiddlers/Macro_Call_Syntax.tid | 2 +- .../tiddlers/Macro_Definition_Syntax.tid | 2 +- .../data/macros/dynamic-macros/Attribute.tid | 26 ++ .../data/macros/dynamic-macros/Standalone.tid | 23 ++ .../data/serialize/DynamicMacroMixed.tid | 9 + .../data/serialize/DynamicMacroParams.tid | 9 + .../data/serialize/DynamicWidgetAttribute.tid | 7 + .../tests/data/serialize/MacroCallBlock.tid | 4 + .../tests/data/serialize/MacroCallInline.tid | 2 + .../test/tiddlers/tests/test-html-parser.js | 302 +++++++++++++++++- .../tiddlers/tests/test-wikitext-parser.js | 18 +- .../tw5.com/tiddlers/filters/function.tid | 4 +- .../tw5.com/tiddlers/functions/Functions.tid | 11 +- .../tiddlers/macros/syntax/Call Syntax.tid | 43 +++ ...ameterValue.tid => CallParameterValue.tid} | 6 +- .../macros/syntax/Macro Call Syntax.tid | 30 +- .../macros/syntax/Macro Definition Syntax.tid | 2 +- .../macros/syntax/Procedure Call Syntax.tid | 31 +- .../syntax/Procedure Definition Syntax.tid | 4 +- .../macros/syntax/Procedure Syntax.tid | 2 +- .../tiddlers/procedures/Procedure Calls.tid | 53 +-- .../tiddlers/procedures/Procedures.tid | 4 +- .../tiddlers/procedures/calls/Calls.tid | 56 ++++ .../tiddlers/releasenotes/5.4.0/#9055.tid | 42 +++ .../v5.4.0/Improvements to Macro Calls.tid | 48 +++ ...pends on how the variable was declared.tid | 52 +++ ...pends on how the variable was declared.tid | 52 +-- ...ed via filter expression function call.tid | 2 +- .../tw5.com/tiddlers/wikitext/Macro Calls.tid | 53 +-- .../rules/macrocallblock.js | 2 +- .../wikitext-serialize/utils/parsetree.js | 54 +++- 35 files changed, 880 insertions(+), 277 deletions(-) create mode 100644 editions/test/tiddlers/tests/data/macros/dynamic-macros/Attribute.tid create mode 100644 editions/test/tiddlers/tests/data/macros/dynamic-macros/Standalone.tid create mode 100644 editions/test/tiddlers/tests/data/serialize/DynamicMacroMixed.tid create mode 100644 editions/test/tiddlers/tests/data/serialize/DynamicMacroParams.tid create mode 100644 editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid create mode 100644 editions/tw5.com/tiddlers/macros/syntax/Call Syntax.tid rename editions/tw5.com/tiddlers/macros/syntax/{MacroParameterValue.tid => CallParameterValue.tid} (61%) create mode 100644 editions/tw5.com/tiddlers/procedures/calls/Calls.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9055.tid create mode 100644 editions/tw5.com/tiddlers/v5.4.0/Improvements to Macro Calls.tid create mode 100644 editions/tw5.com/tiddlers/variables/Behaviour of called variables depends on how the variable was declared.tid diff --git a/core/modules/parsers/parseutils.js b/core/modules/parsers/parseutils.js index 05a85e1ec7..250a82baed 100644 --- a/core/modules/parsers/parseutils.js +++ b/core/modules/parsers/parseutils.js @@ -107,13 +107,14 @@ exports.parseStringLiteral = function(source,pos) { type: "string", start: pos }; - var reString = /(?:"""([\s\S]*?)"""|"([^"]*)")|(?:'([^']*)')/g; + var reString = /(?:"""([\s\S]*?)"""|"([^"]*)")|(?:'([^']*)')|\[\[((?:[^\]]|\](?!\]))*)\]\]/g; reString.lastIndex = pos; var match = reString.exec(source); if(match && match.index === pos) { node.value = match[1] !== undefined ? match[1] :( - match[2] !== undefined ? match[2] : match[3] - ); + match[2] !== undefined ? match[2] : ( + match[3] !== undefined ? match[3] : match[4] + )); node.end = pos + match[0].length; return node; } else { @@ -173,7 +174,7 @@ exports.parseMacroParameter = function(source,pos) { start: pos }; // Define our regexp - const reMacroParameter = /(?:([A-Za-z0-9\-_]+)\s*:)?(?:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[([^\]]*)\]\]|((?:(?:>(?!>))|[^\s>"'])+)))/y; + const reMacroParameter = /(?:([A-Za-z0-9\-_]+)\s*:)?(?:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[((?:[^\]]|\](?!\]))*)\]\]|((?:(?:>(?!>))|[^\s>"'])+)))/y; // Skip whitespace pos = $tw.utils.skipWhiteSpace(source,pos); // Look for the parameter @@ -206,28 +207,152 @@ exports.parseMacroParameter = function(source,pos) { Look for a macro invocation. Returns null if not found, or {type: "transclude", attributes:, start:, end:} */ exports.parseMacroInvocationAsTransclusion = function(source,pos) { - var node = $tw.utils.parseMacroInvocation(source,pos); - if(node) { - var positionalName = 0, - transclusion = { - type: "transclude", - start: node.start, - end: node.end - }; - $tw.utils.addAttributeToParseTreeNode(transclusion,"$variable",node.name); - $tw.utils.each(node.params,function(param) { - var name = param.name; - if(name) { - if(name.charAt(0) === "$") { - name = "$" + name; - } - $tw.utils.addAttributeToParseTreeNode(transclusion,{name: name,type: "string", value: param.value, start: param.start, end: param.end}); - } else { - $tw.utils.addAttributeToParseTreeNode(transclusion,{name: (positionalName++) + "",type: "string", value: param.value, start: param.start, end: param.end}); - } - }); - return transclusion; + var node = { + type: "transclude", + start: pos, + attributes: {}, + orderedAttributes: [] + }; + // Define our regexps + var reVarName = /([^\s>"'=:]+)/g; + // Skip whitespace + pos = $tw.utils.skipWhiteSpace(source,pos); + // Look for a double opening angle bracket + var token = $tw.utils.parseTokenString(source,pos,"<<"); + if(!token) { + return null; } + pos = token.end; + // Get the variable name for the macro + token = $tw.utils.parseTokenRegExp(source,pos,reVarName); + if(!token) { + return null; + } + $tw.utils.addAttributeToParseTreeNode(node,"$variable",token.match[1]); + pos = token.end; + // Check that the tag is terminated by a space or >> + if(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === ">" && source.charAt(pos + 1) === ">") ) { + return null; + } + // Process attributes + pos = $tw.utils.parseMacroParametersAsAttributes(node,source,pos); + // Skip whitespace + pos = $tw.utils.skipWhiteSpace(source,pos); + // Look for a double closing angle bracket + token = $tw.utils.parseTokenString(source,pos,">>"); + if(!token) { + return null; + } + node.end = token.end; + return node; +}; + +/* +Parse macro parameters as attributes. Returns the position after the last attribute +*/ +exports.parseMacroParametersAsAttributes = function(node,source,pos) { + var position = 0, + attribute = $tw.utils.parseMacroParameterAsAttribute(source,pos); + while(attribute) { + if(!attribute.name) { + attribute.name = (position++) + ""; + attribute.isPositional = true; + } + node.orderedAttributes.push(attribute); + node.attributes[attribute.name] = attribute; + pos = attribute.end; + // Get the next attribute + attribute = $tw.utils.parseMacroParameterAsAttribute(source,pos); + } + node.end = pos; + return pos; +}; + +/* +Parse a macro parameter as an attribute. Returns null if not found, otherwise returns {name:, type: "filtered|string|indirect|macro", value|filter|textReference:, start:, end:,}, with the name being optional +*/ +exports.parseMacroParameterAsAttribute = function(source,pos) { + var node = { + start: pos + }; + // Define our regexps + var reAttributeName = /([^\/\s>"'`=:]+)/g, + reUnquotedAttribute = /((?:(?:>(?!>))|[^\s>"'])+)/g, + reFilteredValue = /\{\{\{([\S\s]+?)\}\}\}/g, + reIndirectValue = /\{\{([^\}]+)\}\}/g, + reSubstitutedValue = /(?:```([\s\S]*?)```|`([^`]|[\S\s]*?)`)/g; + // Skip whitespace + pos = $tw.utils.skipWhiteSpace(source,pos); + // Get the attribute name and the separator token + var nameToken = $tw.utils.parseTokenRegExp(source,pos,reAttributeName), + namePos = nameToken && $tw.utils.skipWhiteSpace(source,nameToken.end), + separatorToken = nameToken && $tw.utils.parseTokenRegExp(source,namePos,/=|:/g), + isNewStyleSeparator = false; // If there is no separator then we don't allow new style values + // If we have a name and a separator then we have a named attribute + if(nameToken && separatorToken) { + node.name = nameToken.match[1]; + // key value separator is `=` or `:` + node.assignmentOperator = separatorToken.match[0]; + pos = separatorToken.end; + isNewStyleSeparator = (node.assignmentOperator === "="); + } + // Skip whitespace + pos = $tw.utils.skipWhiteSpace(source,pos); + // Look for a string literal + var stringLiteral = $tw.utils.parseStringLiteral(source,pos); + if(stringLiteral) { + pos = stringLiteral.end; + node.type = "string"; + node.value = stringLiteral.value; + // Mark the value as having been quoted in the source + node.quoted = true; + } else { + // Look for a filtered value + var filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue); + if(filteredValue && isNewStyleSeparator) { + pos = filteredValue.end; + node.type = "filtered"; + node.filter = filteredValue.match[1]; + } else { + // Look for an indirect value + var indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue); + if(indirectValue && isNewStyleSeparator) { + pos = indirectValue.end; + node.type = "indirect"; + node.textReference = indirectValue.match[1]; + } else { + // Look for a unquoted value + var unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute); + if(unquotedValue) { + pos = unquotedValue.end; + node.type = "string"; + node.value = unquotedValue.match[1]; + } else { + // Look for a macro invocation value + var macroInvocation = $tw.utils.parseMacroInvocationAsTransclusion(source,pos); + if(macroInvocation && isNewStyleSeparator) { + pos = macroInvocation.end; + node.type = "macro"; + node.value = macroInvocation; + } else { + var substitutedValue = $tw.utils.parseTokenRegExp(source,pos,reSubstitutedValue); + if(substitutedValue && isNewStyleSeparator) { + pos = substitutedValue.end; + node.type = "substituted"; + node.rawValue = substitutedValue.match[1] || substitutedValue.match[2]; + } else { + } + } + } + } + } + } + // Bail if we don't have a value + if(!node.type) { + return null; + } + // Update the end position + node.end = pos; return node; }; @@ -296,7 +421,7 @@ exports.parseFilterVariable = function(source) { }; /* -Look for an HTML attribute definition. Returns null if not found, otherwise returns {type: "attribute", name:, type: "filtered|string|indirect|macro", value|filter|textReference:, start:, end:,} +Look for an HTML attribute definition. Returns null if not found, otherwise returns {name:, type: "filtered|string|indirect|macro", value|filter|textReference:, start:, end:,} */ exports.parseAttribute = function(source,pos) { var node = { @@ -354,7 +479,7 @@ exports.parseAttribute = function(source,pos) { node.value = unquotedValue.match[1]; } else { // Look for a macro invocation value - var macroInvocation = $tw.utils.parseMacroInvocation(source,pos); + var macroInvocation = $tw.utils.parseMacroInvocationAsTransclusion(source,pos); if(macroInvocation) { pos = macroInvocation.end; node.type = "macro"; @@ -375,6 +500,7 @@ exports.parseAttribute = function(source,pos) { } } } else { + // If there is no equals sign or colon, then this is an attribute with no value, defaulting to "true" node.type = "string"; node.value = "true"; } diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index 72cd4b434b..ccfa5df17b 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -37,7 +37,7 @@ exports.parse = function() { var paramString = this.match[2], params = []; if(paramString !== "") { - var reParam = /\s*([A-Za-z0-9\-_]+)(?:\s*:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[([^\]]*)\]\]|([^"'\s]+)))?/mg, + var reParam = /\s*([A-Za-z0-9\-_]+)(?:\s*:\s*(?:"""([\s\S]*?)"""|"([^"]*)"|'([^']*)'|\[\[((?:[^\]]|\](?!\]))*)\]\]|([^"'\s]+)))?/mg, paramMatch = reParam.exec(paramString); while(paramMatch) { // Save the parameter details diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 804d5a1539..09b5364e00 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -416,7 +416,21 @@ Widget.prototype.computeAttribute = function(attribute,options) { value = [value]; } } else if(attribute.type === "macro") { - var variableInfo = this.getVariableInfo(attribute.value.name,{params: attribute.value.params}); + // Get the macro name + var macroName = attribute.value.attributes["$variable"].value; + // Collect macro parameters + var params = []; + $tw.utils.each(attribute.value.orderedAttributes,function(attr) { + var param = { + value: self.computeAttribute(attr) + }; + if(attr.name && !attr.isPositional) { + param.name = attr.name; + } + params.push(param); + }); + // Invoke the macro + var variableInfo = this.getVariableInfo(macroName,{params: params}); if(options.asList) { value = variableInfo.resultList; } else { diff --git a/editions/fr-FR/tiddlers/$__editions_tw5.com_railroad_macro-parameter-value.tid b/editions/fr-FR/tiddlers/$__editions_tw5.com_railroad_macro-parameter-value.tid index 49dfdb8c55..68e0360862 100644 --- a/editions/fr-FR/tiddlers/$__editions_tw5.com_railroad_macro-parameter-value.tid +++ b/editions/fr-FR/tiddlers/$__editions_tw5.com_railroad_macro-parameter-value.tid @@ -1,11 +1,13 @@ created: 20150220191009000 modified: 20150602092431500 -title: $:/editions/tw5.com/railroad/macro-parameter-value +title: $:/editions/tw5.com/railroad/call-parameter-value type: text/vnd.tiddlywiki.railroad ( '"""' [:{/'tout sauf """'/}] '"""' | '"' [:{/'tout sauf "'/}] '"' | "'" [:{/"tout sauf '"/}] "'" | "[[" [:{/"tout sauf ]"/}] "]]" +| "`" [:{/"tout sauf `"/}] "`" +| "```" [:{/"tout sauf ```"/}] "```" | {/"""tout sauf ' " ou espacevierge"""/} ) diff --git a/editions/fr-FR/tiddlers/Macro_Call_Syntax.tid b/editions/fr-FR/tiddlers/Macro_Call_Syntax.tid index 56b93e8eaf..04f2be34b8 100644 --- a/editions/fr-FR/tiddlers/Macro_Call_Syntax.tid +++ b/editions/fr-FR/tiddlers/Macro_Call_Syntax.tid @@ -25,4 +25,4 @@ The <<.place param-nom>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits ( The <<.place valeur>> is specified as follows<<dp>> -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<$railroad text={{$:/editions/tw5.com/railroad/call-parameter-value}}/> diff --git a/editions/fr-FR/tiddlers/Macro_Definition_Syntax.tid b/editions/fr-FR/tiddlers/Macro_Definition_Syntax.tid index bbb92864b0..20f096c941 100644 --- a/editions/fr-FR/tiddlers/Macro_Definition_Syntax.tid +++ b/editions/fr-FR/tiddlers/Macro_Definition_Syntax.tid @@ -33,7 +33,7 @@ parametre.nom [: [:espace] ":" [:espace] defaut ] La valeur par <<.place défaut>> d'un paramètre est spécifiée comme suit<<:>> -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<$railroad text={{$:/editions/tw5.com/railroad/call-parameter-value}}/> La définition de la <<.place suite>> se fait comme suit<<:>> diff --git a/editions/test/tiddlers/tests/data/macros/dynamic-macros/Attribute.tid b/editions/test/tiddlers/tests/data/macros/dynamic-macros/Attribute.tid new file mode 100644 index 0000000000..2d7313861e --- /dev/null +++ b/editions/test/tiddlers/tests/data/macros/dynamic-macros/Attribute.tid @@ -0,0 +1,26 @@ +title: Macros/Dynamic/Attribute +description: Attribute macrocall with dynamic paramters +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\define mamacromamacro(param:"red") +It is $param$ +\end + +<$text text=<<mamacromamacro>>/> +- +<$text text=<<mamacromamacro param={{{ [[a]addprefix[b]] }}}>>/> +- +<$text text=<<mamacromamacro param>>/> + ++ +title: ExpectedResult + +<p>It is red +- +It is ba +- +It is param +</p> \ No newline at end of file diff --git a/editions/test/tiddlers/tests/data/macros/dynamic-macros/Standalone.tid b/editions/test/tiddlers/tests/data/macros/dynamic-macros/Standalone.tid new file mode 100644 index 0000000000..bdce9484d5 --- /dev/null +++ b/editions/test/tiddlers/tests/data/macros/dynamic-macros/Standalone.tid @@ -0,0 +1,23 @@ +title: Macros/Dynamic/Standalone +description: Standalone macrocall with dynamic paramters +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Output + +\whitespace trim + +\define mamacro(one:"red",two:"green") +It is $one$ and $two$ or <<__one__>> and <<__two__>>. +\end + +<<mamacro>> + +<<mamacro one={{{ [[b]addprefix[a]] }}}>> + + +<<mamacro one>> ++ +title: ExpectedResult + +<p>It is red and green or red and green.</p><p>It is ab and green or ab and green.</p><p>It is one and green or one and green.</p> \ No newline at end of file diff --git a/editions/test/tiddlers/tests/data/serialize/DynamicMacroMixed.tid b/editions/test/tiddlers/tests/data/serialize/DynamicMacroMixed.tid new file mode 100644 index 0000000000..66d7855d1a --- /dev/null +++ b/editions/test/tiddlers/tests/data/serialize/DynamicMacroMixed.tid @@ -0,0 +1,9 @@ +tags: $:/tags/wikitext-serialize-test-spec +title: Serialize/DynamicMacroMixed +type: text/vnd.tiddlywiki + +<<mymacro static:"value" dynamic={{reference}} filter={{{ [tag[test]] }}}>> + +<$macrocall $name="mymacro" static="value" dynamic=<<inner>>/> + +<<mymacro `substituted $(var)$`>> diff --git a/editions/test/tiddlers/tests/data/serialize/DynamicMacroParams.tid b/editions/test/tiddlers/tests/data/serialize/DynamicMacroParams.tid new file mode 100644 index 0000000000..0ec1999703 --- /dev/null +++ b/editions/test/tiddlers/tests/data/serialize/DynamicMacroParams.tid @@ -0,0 +1,9 @@ +tags: $:/tags/wikitext-serialize-test-spec +title: Serialize/DynamicMacroParams +type: text/vnd.tiddlywiki + +<<mymacro param={{Something}}>> + +<<mymacro param={{{ [<myvar>addprefix[https:]] }}}>> + +<$macrocall $name="outermacro" inner=<<innermacro arg="value">>/> diff --git a/editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid b/editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid new file mode 100644 index 0000000000..c00895eb04 --- /dev/null +++ b/editions/test/tiddlers/tests/data/serialize/DynamicWidgetAttribute.tid @@ -0,0 +1,7 @@ +tags: $:/tags/wikitext-serialize-test-spec +title: Serialize/DynamicWidgetAttribute +type: text/vnd.tiddlywiki + +<div class=<<mymacro param={{Something}}>>>content</div> + +<$button actions=<<myactions target={{!!title}}>>/> diff --git a/editions/test/tiddlers/tests/data/serialize/MacroCallBlock.tid b/editions/test/tiddlers/tests/data/serialize/MacroCallBlock.tid index 4bd30d4513..f4316efd00 100644 --- a/editions/test/tiddlers/tests/data/serialize/MacroCallBlock.tid +++ b/editions/test/tiddlers/tests/data/serialize/MacroCallBlock.tid @@ -7,3 +7,7 @@ type: text/vnd.tiddlywiki <<.def "macro calls">> <<alert "primary" "primary alert" width:"60%">> + +<<john one:val1 two:val2 three:"quoted value">> + +<<test unquoted:value quoted:"value" number:123>> diff --git a/editions/test/tiddlers/tests/data/serialize/MacroCallInline.tid b/editions/test/tiddlers/tests/data/serialize/MacroCallInline.tid index 09127dce09..c8d2a71fc0 100644 --- a/editions/test/tiddlers/tests/data/serialize/MacroCallInline.tid +++ b/editions/test/tiddlers/tests/data/serialize/MacroCallInline.tid @@ -3,3 +3,5 @@ title: Serialize/MacroCallInline type: text/vnd.tiddlywiki These are macro calls in a line: <<name "value" "value2">> and <<.def "macro calls">> <<alert "primary" "primary alert" width:"60%">> + +Testing unquoted parameters: <<john one:val1 two:val2>> and <<test param:value other:"quoted">>. diff --git a/editions/test/tiddlers/tests/test-html-parser.js b/editions/test/tiddlers/tests/test-html-parser.js index c6c160bb35..c8a6bcbb59 100644 --- a/editions/test/tiddlers/tests/test-html-parser.js +++ b/editions/test/tiddlers/tests/test-html-parser.js @@ -235,11 +235,307 @@ describe("HTML tag new parser tests", function() { expect(parser.parseTag("< $mytag attrib1='something' attrib2=else thing>",0)).toEqual( null ); - expect(parser.parseTag("<$mytag attrib3=<<myMacro one:two three:'four and five'>>>",0)).toEqual( - { type : "mytag", start : 0, attributes : { attrib3 : { type : "macro", start : 7, name : "attrib3", value : { type : "macrocall", start : 16, params : [ { type : "macro-parameter", start : 25, value : "two", name : "one", end : 33 }, { type : "macro-parameter", start : 33, value : "four and five", name : "three", end : 55 } ], name : "myMacro", end : 57 }, end : 57 } }, orderedAttributes: [ { type : "macro", start : 7, name : "attrib3", value : { type : "macrocall", start : 16, params : [ { type : "macro-parameter", start : 25, value : "two", name : "one", end : 33 }, { type : "macro-parameter", start : 33, value : "four and five", name : "three", end : 55 } ], name : "myMacro", end : 57 }, end : 57 } ], tag : "$mytag", end : 58 } + expect(parser.parseTag("<$mytag attrib3=<<myMacro one:two three:'four and five'>>>", 0)).toEqual( + { + "type": "mytag", + "start": 0, + "attributes": { + "attrib3": { + "start": 7, + "name": "attrib3", + "type": "macro", + "value": { + "type": "transclude", + "start": 16, + "attributes": { + "$variable": { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + "one": { + "start": 25, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 33 + }, + "three": { + "start": 33, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 55 + } + }, + "orderedAttributes": [ + { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + { + "start": 25, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 33 + }, + { + "start": 33, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 55 + } + ], + "end": 57 + }, + "end": 57 + } + }, + "orderedAttributes": [ + { + "start": 7, + "name": "attrib3", + "type": "macro", + "value": { + "type": "transclude", + "start": 16, + "attributes": { + "$variable": { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + "one": { + "start": 25, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 33 + }, + "three": { + "start": 33, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 55 + } + }, + "orderedAttributes": [ + { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + { + "start": 25, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 33 + }, + { + "start": 33, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 55 + } + ], + "end": 57 + }, + "end": 57 + } + ], + "tag": "$mytag", + "end": 58 + } ); expect(parser.parseTag("<$mytag attrib1='something' attrib2=else thing attrib3=<<myMacro one:two three:'four and five'>>>",0)).toEqual( - { type : "mytag", start : 0, attributes : { attrib1 : { type : "string", start : 7, name : "attrib1", value : "something", end : 27 }, attrib2 : { type : "string", start : 27, name : "attrib2", value : "else", end : 40 }, thing : { type : "string", start : 40, name : "thing", value : "true", end : 47 }, attrib3 : { type : "macro", start : 47, name : "attrib3", value : { type : "macrocall", start : 55, params : [ { type : "macro-parameter", start : 64, value : "two", name : "one", end : 72 }, { type : "macro-parameter", start : 72, value : "four and five", name : "three", end : 94 } ], name : "myMacro", end : 96 }, end : 96 } }, orderedAttributes: [ { type : "string", start : 7, name : "attrib1", value : "something", end : 27 }, { type : "string", start : 27, name : "attrib2", value : "else", end : 40 }, { type : "string", start : 40, name : "thing", value : "true", end : 47 }, { type : "macro", start : 47, name : "attrib3", value : { type : "macrocall", start : 55, params : [ { type : "macro-parameter", start : 64, value : "two", name : "one", end : 72 }, { type : "macro-parameter", start : 72, value : "four and five", name : "three", end : 94 } ], name : "myMacro", end : 96 }, end : 96 } ], tag : "$mytag", end : 97 } + { + "type": "mytag", + "start": 0, + "attributes": { + "attrib1": { + "start": 7, + "name": "attrib1", + "type": "string", + "value": "something", + "end": 27 + }, + "attrib2": { + "start": 27, + "name": "attrib2", + "type": "string", + "value": "else", + "end": 40 + }, + "thing": { + "start": 40, + "name": "thing", + "type": "string", + "value": "true", + "end": 47 + }, + "attrib3": { + "start": 47, + "name": "attrib3", + "type": "macro", + "value": { + "type": "transclude", + "start": 55, + "attributes": { + "$variable": { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + "one": { + "start": 64, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 72 + }, + "three": { + "start": 72, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 94 + } + }, + "orderedAttributes": [ + { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + { + "start": 64, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 72 + }, + { + "start": 72, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 94 + } + ], + "end": 96 + }, + "end": 96 + } + }, + "orderedAttributes": [ + { + "start": 7, + "name": "attrib1", + "type": "string", + "value": "something", + "end": 27 + }, + { + "start": 27, + "name": "attrib2", + "type": "string", + "value": "else", + "end": 40 + }, + { + "start": 40, + "name": "thing", + "type": "string", + "value": "true", + "end": 47 + }, + { + "start": 47, + "name": "attrib3", + "type": "macro", + "value": { + "type": "transclude", + "start": 55, + "attributes": { + "$variable": { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + "one": { + "start": 64, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 72 + }, + "three": { + "start": 72, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 94 + } + }, + "orderedAttributes": [ + { + "name": "$variable", + "type": "string", + "value": "myMacro" + }, + { + "start": 64, + "name": "one", + "assignmentOperator": ":", + "type": "string", + "value": "two", + "end": 72 + }, + { + "start": 72, + "name": "three", + "assignmentOperator": ":", + "type": "string", + "value": "four and five", + "quoted": true, + "end": 94 + } + ], + "end": 96 + }, + "end": 96 + } + ], + "tag": "$mytag", + "end": 97 + } ); }); diff --git a/editions/test/tiddlers/tests/test-wikitext-parser.js b/editions/test/tiddlers/tests/test-wikitext-parser.js index 59172f8675..1fffad01a7 100644 --- a/editions/test/tiddlers/tests/test-wikitext-parser.js +++ b/editions/test/tiddlers/tests/test-wikitext-parser.js @@ -261,7 +261,7 @@ describe("WikiText parser tests", function() { ); expect(parse("text <<john one:val1 two: 'val \"2\"' three: \"val '3'\" four: \"\"\"val 4\"5'\"\"\" five: [[val 5]] >>")).toEqual( - [{"type":"element","tag":"p",rule:"parseblock","children":[{"type":"text","text":"text ","start":0,"end":5},{"type":"transclude","start":5,"end":92,"rule":"macrocallinline","attributes":{"$variable":{"name":"$variable","type":"string","value":"john"},"one":{"name":"one","type":"string","value":"val1","start":11,"end":20},"two":{"name":"two","type":"string","value":"val \"2\"","start":20,"end":35},"three":{"name":"three","type":"string","value":"val '3'","start":35,"end":52},"four":{"name":"four","type":"string","value":"val 4\"5'","start":52,"end":73},"five":{"name":"five","type":"string","value":"val 5","start":73,"end":89}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"one","type":"string","value":"val1","start":11,"end":20},{"name":"two","type":"string","value":"val \"2\"","start":20,"end":35},{"name":"three","type":"string","value":"val '3'","start":35,"end":52},{"name":"four","type":"string","value":"val 4\"5'","start":52,"end":73},{"name":"five","type":"string","value":"val 5","start":73,"end":89}]}],"start":0,"end":92}] + [{"type":"element","tag":"p",rule:"parseblock","children":[{"type":"text","text":"text ","start":0,"end":5},{"type":"transclude","start":5,"end":92,"rule":"macrocallinline","attributes":{"$variable":{"name":"$variable","type":"string","value":"john"},"one":{"name":"one","assignmentOperator":":","type":"string","value":"val1","start":11,"end":20},"two":{"name":"two","assignmentOperator":":","type":"string","value":"val \"2\"","quoted":true,"start":20,"end":35},"three":{"name":"three","assignmentOperator":":","type":"string","value":"val '3'","quoted":true,"start":35,"end":52},"four":{"name":"four","assignmentOperator":":","type":"string","value":"val 4\"5'","quoted":true,"start":52,"end":73},"five":{"name":"five","assignmentOperator":":","type":"string","value":"val 5","quoted":true,"start":73,"end":89}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"one","assignmentOperator":":","type":"string","value":"val1","start":11,"end":20},{"name":"two","assignmentOperator":":","type":"string","value":"val \"2\"","quoted":true,"start":20,"end":35},{"name":"three","assignmentOperator":":","type":"string","value":"val '3'","quoted":true,"start":35,"end":52},{"name":"four","assignmentOperator":":","type":"string","value":"val 4\"5'","quoted":true,"start":52,"end":73},{"name":"five","assignmentOperator":":","type":"string","value":"val 5","quoted":true,"start":73,"end":89}]}],"start":0,"end":92}] ); expect(parse("ignored << carrots <<john>>")).toEqual( @@ -287,7 +287,7 @@ describe("WikiText parser tests", function() { ); expect(parse("text <<outie one:'my <<innie>>' >>")).toEqual( - [{"type":"element","tag":"p",rule:"parseblock","children":[{"type":"text","text":"text ","start":0,"end":5},{"type":"transclude","start":5,"end":34,"rule":"macrocallinline","attributes":{"$variable":{"name":"$variable","type":"string","value":"outie"},"one":{"name":"one","type":"string","value":"my <<innie>>","start":12,"end":31}},"orderedAttributes":[{"name":"$variable","type":"string","value":"outie"},{"name":"one","type":"string","value":"my <<innie>>","start":12,"end":31}]}],"start":0,"end":34}] + [{"type":"element","tag":"p",rule:"parseblock","children":[{"type":"text","text":"text ","start":0,"end":5},{"type":"transclude","start":5,"end":34,"rule":"macrocallinline","attributes":{"$variable":{"name":"$variable","type":"string","value":"outie"},"one":{"name":"one","assignmentOperator":":","type":"string","value":"my <<innie>>","quoted":true,"start":12,"end":31}},"orderedAttributes":[{"name":"$variable","type":"string","value":"outie"},{"name":"one","assignmentOperator":":","type":"string","value":"my <<innie>>","quoted":true,"start":12,"end":31}]}],"start":0,"end":34}] ); @@ -301,7 +301,7 @@ describe("WikiText parser tests", function() { ); expect(parse("<<john one:val1 two: 'val \"2\"' three: \"val '3'\" four: \"\"\"val 4\"5'\"\"\" five: [[val 5]] >>")).toEqual( - [{"type":"transclude","start":0,"end":87,"rule":"macrocallblock","attributes":{"$variable":{"name":"$variable","type":"string","value":"john"},"one":{"name":"one","type":"string","value":"val1","start":6,"end":15},"two":{"name":"two","type":"string","value":"val \"2\"","start":15,"end":30},"three":{"name":"three","type":"string","value":"val '3'","start":30,"end":47},"four":{"name":"four","type":"string","value":"val 4\"5'","start":47,"end":68},"five":{"name":"five","type":"string","value":"val 5","start":68,"end":84}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"one","type":"string","value":"val1","start":6,"end":15},{"name":"two","type":"string","value":"val \"2\"","start":15,"end":30},{"name":"three","type":"string","value":"val '3'","start":30,"end":47},{"name":"four","type":"string","value":"val 4\"5'","start":47,"end":68},{"name":"five","type":"string","value":"val 5","start":68,"end":84}],"isBlock":true}] + [{"type":"transclude","start":0,"end":87,"rule":"macrocallblock","attributes":{"$variable":{"name":"$variable","type":"string","value":"john"},"one":{"name":"one","assignmentOperator":":","type":"string","value":"val1","start":6,"end":15},"two":{"name":"two","assignmentOperator":":","type":"string","value":"val \"2\"","quoted":true,"start":15,"end":30},"three":{"name":"three","assignmentOperator":":","type":"string","value":"val '3'","quoted":true,"start":30,"end":47},"four":{"name":"four","assignmentOperator":":","type":"string","value":"val 4\"5'","quoted":true,"start":47,"end":68},"five":{"name":"five","assignmentOperator":":","type":"string","value":"val 5","quoted":true,"start":68,"end":84}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"one","assignmentOperator":":","type":"string","value":"val1","start":6,"end":15},{"name":"two","assignmentOperator":":","type":"string","value":"val \"2\"","quoted":true,"start":15,"end":30},{"name":"three","assignmentOperator":":","type":"string","value":"val '3'","quoted":true,"start":30,"end":47},{"name":"four","assignmentOperator":":","type":"string","value":"val 4\"5'","quoted":true,"start":47,"end":68},{"name":"five","assignmentOperator":":","type":"string","value":"val 5","quoted":true,"start":68,"end":84}],"isBlock":true}] ); expect(parse("<< carrots\n\n<<john>>")).toEqual( @@ -321,12 +321,12 @@ describe("WikiText parser tests", function() { ); expect(parse("<<multiline arg:\"\"\"\n\nwikitext\n\"\"\" >>")).toEqual( - [{"type":"transclude","start":0,"end":36,"rule":"macrocallblock","attributes":{"$variable":{"name":"$variable","type":"string","value":"multiline"},"arg":{"name":"arg","type":"string","value":"\n\nwikitext\n","start":11,"end":33}},"orderedAttributes":[{"name":"$variable","type":"string","value":"multiline"},{"name":"arg","type":"string","value":"\n\nwikitext\n","start":11,"end":33}],"isBlock":true}] + [{"type":"transclude","start":0,"end":36,"rule":"macrocallblock","attributes":{"$variable":{"name":"$variable","type":"string","value":"multiline"},"arg":{"name":"arg","assignmentOperator":":","type":"string","value":"\n\nwikitext\n","quoted":true,"start":11,"end":33}},"orderedAttributes":[{"name":"$variable","type":"string","value":"multiline"},{"name":"arg","assignmentOperator":":","type":"string","value":"\n\nwikitext\n","quoted":true,"start":11,"end":33}],"isBlock":true}] ); expect(parse("<<outie one:'my <<innie>>' >>")).toEqual( - [ { type: "transclude", start: 0, rule: "macrocallblock", attributes: { $variable: {name: "$variable", type:"string", value: "outie"}, one: {name: "one", type:"string", value: "my <<innie>>", start: 7, end: 26} }, orderedAttributes: [ {name: "$variable", type:"string", value: "outie"}, {name: "one", type:"string", value: "my <<innie>>", start: 7, end: 26} ], end: 29, isBlock: true } ] + [ { type: "transclude", start: 0, rule: "macrocallblock", attributes: { $variable: {name: "$variable", type:"string", value: "outie"}, one: {name: "one", assignmentOperator: ":", type:"string", value: "my <<innie>>", quoted: true, start: 7, end: 26} }, orderedAttributes: [ {name: "$variable", type:"string", value: "outie"}, {name: "one", assignmentOperator: ":", type:"string", value: "my <<innie>>", quoted: true, start: 7, end: 26} ], end: 29, isBlock: true } ] ); }); @@ -334,23 +334,23 @@ describe("WikiText parser tests", function() { it("should parse tricky macrocall parameters", function() { expect(parse("<<john pa>am>>")).toEqual( - [{"type":"transclude","start":0,"end":14,"attributes":{"0":{"name":"0","type":"string","value":"pa>am","start":6,"end":12},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"pa>am","start":6,"end":12}],"isBlock":true,"rule":"macrocallblock"}] + [{"type":"transclude","start":0,"end":14,"attributes":{"0":{"name":"0","type":"string","value":"pa>am","start":6,"end":12,"isPositional":true},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"pa>am","start":6,"end":12,"isPositional":true}],"isBlock":true,"rule":"macrocallblock"}] ); expect(parse("<<john param> >>")).toEqual( - [{"type":"transclude","start":0,"end":16,"attributes":{"0":{"name":"0","type":"string","value":"param>","start":6,"end":13},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"param>","start":6,"end":13}],"isBlock":true,"rule":"macrocallblock"}] + [{"type":"transclude","start":0,"end":16,"attributes":{"0":{"name":"0","type":"string","value":"param>","start":6,"end":13,"isPositional":true},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"param>","start":6,"end":13,"isPositional":true}],"isBlock":true,"rule":"macrocallblock"}] ); expect(parse("<<john param>>>")).toEqual( - [{"type":"element","tag":"p",rule:"parseblock","children":[{"type":"transclude","start":0,"end":14,"rule":"macrocallinline","attributes":{"0":{"name":"0","type":"string","value":"param","start":6,"end":12},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"param","start":6,"end":12}]},{"type":"text","text":">","start":14,"end":15}],"start":0,"end":15}] + [{"type":"element","rule":"parseblock","tag":"p","children":[{"type":"transclude","start":0,"end":14,"rule":"macrocallinline","attributes":{"0":{"name":"0","type":"string","value":"param","start":6,"end":12,"isPositional":true},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"param","start":6,"end":12,"isPositional":true}]},{"type":"text","text":">","start":14,"end":15}],"start":0,"end":15}] ); // equals signs should be allowed expect(parse("<<john var>=4 >>")).toEqual( - [{"type":"transclude","start":0,"end":16,"attributes":{"0":{"name":"0","type":"string","value":"var>=4","start":6,"end":13},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"var>=4","start":6,"end":13}],"isBlock":true,"rule":"macrocallblock"}] + [{"type":"transclude","start":0,"end":16,"attributes":{"0":{"name":"0","type":"string","value":"var>=4","start":6,"end":13,"isPositional":true},"$variable":{"name":"$variable","type":"string","value":"john"}},"orderedAttributes":[{"name":"$variable","type":"string","value":"john"},{"name":"0","type":"string","value":"var>=4","start":6,"end":13,"isPositional":true}],"isBlock":true,"rule":"macrocallblock"}] ); diff --git a/editions/tw5.com/tiddlers/filters/function.tid b/editions/tw5.com/tiddlers/filters/function.tid index f86d21f4fd..d3fa3279bb 100644 --- a/editions/tw5.com/tiddlers/filters/function.tid +++ b/editions/tw5.com/tiddlers/filters/function.tid @@ -1,6 +1,6 @@ caption: function created: 20220909111836951 -modified: 20230419103154328 +modified: 20260130210336084 op-input: a [[selection of titles|Title Selection]] passed as input to the function <<.place F>> op-output: the [[selection of titles|Title Selection]] returned from the function <<.place F>> op-parameter: first parameter is the [[function name|Functions]], subsequent parameters are passed to the function by position @@ -10,7 +10,7 @@ tags: [[Filter Operators]] title: function Operator type: text/vnd.tiddlywiki -<<.from-version "5.3.0">> The <<.op function>> operator applies a named [[function|Functions]] to the input titles, and returns the results from the function. The function is invoked once with all of the input titles (in contrast, the [[filter Operator]] invokes its function separately for each input title). +<<.from-version "5.3.0">> The <<.op function>> operator applies a named [[function|Functions]] to the input titles, and returns the results from the function. The function is called once with all of the input titles (in contrast, the [[filter Operator]] calls its function separately for each input title). The first parameter of the <<.op function>> operator specifies the name of the function to be called. Subsequent parameters are passed to the function. diff --git a/editions/tw5.com/tiddlers/functions/Functions.tid b/editions/tw5.com/tiddlers/functions/Functions.tid index 0911fdd6d3..cb0799b58a 100644 --- a/editions/tw5.com/tiddlers/functions/Functions.tid +++ b/editions/tw5.com/tiddlers/functions/Functions.tid @@ -16,12 +16,13 @@ Functions are usually defined with the [[Pragma: \function]]: \end ``` -Functions can be invoked in several ways: +Functions can be called in several ways: -* Directly transclude functions with the syntax `<<myfun param:"value">>` -* Assign functions to widget attributes with the syntax `<div class=<<myfun param:"value">>>` -* Invoke functions via the [[function Operator]] with the syntax `[function[myfun],[value],...]` -* Directly invoke functions whose names contain a period as custom filter operators with the syntax `[my.fun[value]]` or `[.myfun[value]]` +* Using the [[Calls]] syntax: +** Directly transclude functions with the syntax `<<myfun param:"value">>` +** Assign functions to widget attributes with the syntax `<div class=<<myfun param:"value">>>` +* Call functions via the [[function Operator]] with the syntax `[function[myfun],[value],...]` +* Directly call functions whose names contain a period as custom filter operators with the syntax `[my.fun[value]]` or `[.myfun[value]]` !! How Functions Work diff --git a/editions/tw5.com/tiddlers/macros/syntax/Call Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Call Syntax.tid new file mode 100644 index 0000000000..8a13a7cea8 --- /dev/null +++ b/editions/tw5.com/tiddlers/macros/syntax/Call Syntax.tid @@ -0,0 +1,43 @@ +created: 20240310165023000 +modified: 20260125212303316 +tags: [[Call Syntax]] +title: Call Syntax +type: text/vnd.tiddlywiki + +<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for procedure/function/macro calls, using [[railroad diagrams|Railroad Diagrams]].""">> + +!! callee-name + +<$railroad text=""" +"<<" [[ callee-name |Calls]] [: [[whitespace|"Filter Whitespace"]] [:{param-value}] ]">>" +"""/> + +* The <<.place callee-name>> is a sequence of non-whitespace characters other than `(` or `>`. + +* <<.place whitespace>> denotes a sequence of [[whitespace characters|Filter Whitespace]]. + +!!! param-value + +Each ''individual'' <<.place param-value>> has the following syntax: + +<$railroad text=""" +\start none +\end none +( +value +| +param-name [:space] ( +":" [:space] value [: space] +| +"=" [:space] new-value [: space] +) +) +"""/> + +* The <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`). + +* The <<.place value>> is specified as follows: + +<$railroad text={{$:/editions/tw5.com/railroad/call-parameter-value}}/> + +* <<.from-version 5.4.0>> The <<.place new-value>> can either be a plain <<.place value>> or a full <<.place callee-name>> call, allowing for dynamic parameter values. diff --git a/editions/tw5.com/tiddlers/macros/syntax/MacroParameterValue.tid b/editions/tw5.com/tiddlers/macros/syntax/CallParameterValue.tid similarity index 61% rename from editions/tw5.com/tiddlers/macros/syntax/MacroParameterValue.tid rename to editions/tw5.com/tiddlers/macros/syntax/CallParameterValue.tid index 81ad3b116e..6f1f174434 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/MacroParameterValue.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/CallParameterValue.tid @@ -1,11 +1,13 @@ created: 20150220191009000 -modified: 20150221111554000 -title: $:/editions/tw5.com/railroad/macro-parameter-value +modified: 20260125212303316 +title: $:/editions/tw5.com/railroad/call-parameter-value type: text/vnd.tiddlywiki.railroad ( '"""' [:{/'anything but """'/}] '"""' | '"' [:{/'anything but "'/}] '"' | "'" [:{/"anything but '"/}] "'" | "[[" [:{/"anything but ]"/}] "]]" +| "`" [:{/"anything but `"/}] "`" +| "```" [:{/"anything but ```"/}] "```" | {/"""anything but ' " or whitespace"""/} ) diff --git a/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid index f070bbeac7..d759c996c3 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid @@ -1,31 +1,7 @@ created: 20150221105732000 -modified: 20150221222352000 -tags: [[Macro Syntax]] $:/deprecated +modified: 20260125212303316 +tags: $:/deprecated title: Macro Call Syntax type: text/vnd.tiddlywiki -<<.deprecated-since "5.3.0" "Procedure Call Syntax">> - ----------- - -<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for macro calls, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Calls in WikiText]] is also available.""">> - -<$railroad text=""" -"<<" name [: space [:{param-value}] ]">>" -"""/> - -<<.place space>> denotes a sequence of [[whitespace characters|Filter Whitespace]]. - -The [[macro|Macros]]'s <<.place name>> is a sequence of non-whitespace characters other than `(` or `>`. - -Each individual <<.place param-value>> has the following syntax: - -<$railroad text=""" -[: param-name [:space] ":" [:space] ] value [: space] -"""/> - -The <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`). - -The <<.place value>> is specified as follows: - -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<<.deprecated-since "5.3.0" "Call Syntax">> diff --git a/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid index ecc389d54f..2071555ec0 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid @@ -37,7 +37,7 @@ param-name [: [:space] ":" [:space] default ] The optional <<.place default>> value of a parameter is specified as follows: -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<$railroad text={{$:/editions/tw5.com/railroad/call-parameter-value}}/> The <<.place rest>> of the definition has the following syntax: diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid index c7ab07644a..6d3649fdd2 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid @@ -1,33 +1,6 @@ created: 20240310165023000 -modified: 20240310172648116 -tags: [[Procedure Syntax]] +modified: 20260125212303316 title: Procedure Call Syntax type: text/vnd.tiddlywiki -<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for procedure calls, using [[railroad diagrams|Railroad Diagrams]].""">> - -!! procedure-name - -<$railroad text=""" -"<<" [[ procedure-name |Procedures]] [: [[whitespace|"Filter Whitespace"]] [:{param-value}] ]">>" -"""/> - -* The [[procedure's|Procedures]] <<.place procedure-name>> is a sequence of non-whitespace characters other than `(` or `>`. - -* <<.place whitespace>> denotes a sequence of [[whitespace characters|Filter Whitespace]]. - -!!! param-value - -Each ''individual'' <<.place param-value>> has the following syntax: - -<$railroad text=""" -\start none -\end none -[: param-name [:[[whitespace|"Filter Whitespace"]]] ":" [:[[whitespace|"Filter Whitespace"]]] ] value [: [[whitespace|"Filter Whitespace"]] ] -"""/> - -* The <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`). - -* The <<.place value>> is specified as follows: - -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<<.deprecated-since "5.4.0" "Call Syntax">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid index 7a621ee597..9577470956 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid @@ -1,6 +1,6 @@ created: 20240310165023000 modified: 20240310175033730 -tags: [[Procedure Syntax]] +tags: [[Call Syntax]] title: Procedure Definition Syntax type: text/vnd.tiddlywiki @@ -73,7 +73,7 @@ Each ''individual'' <<.place parameter>> has the following syntax: * <<.place default>> is an optional value of a parameter is specified as follows: -<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> +<$railroad text={{$:/editions/tw5.com/railroad/call-parameter-value}}/> !! body diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid index 2ef519fcce..a99ac80289 100644 --- a/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid +++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid @@ -6,6 +6,6 @@ type: text/vnd.tiddlywiki Plain text description can be found at [[Procedures]] -<<list-links filter:"[tag[Procedure Syntax]]">> +<<list-links filter:"[tag[Call Syntax]]">> <<.tip "The railroad boxes in the linked tiddlers can be used to navigate.">> diff --git a/editions/tw5.com/tiddlers/procedures/Procedure Calls.tid b/editions/tw5.com/tiddlers/procedures/Procedure Calls.tid index 0078d53963..0327a69566 100644 --- a/editions/tw5.com/tiddlers/procedures/Procedure Calls.tid +++ b/editions/tw5.com/tiddlers/procedures/Procedure Calls.tid @@ -1,56 +1,7 @@ caption: Procedure Calls created: 20221007130006705 -modified: 20230419103154329 -tags: WikiText Procedures +modified: 20260125212303316 title: Procedure Calls type: text/vnd.tiddlywiki -!! Introduction - -This tiddler describes the different ways in which [[procedure|Procedures]] can be called. - -!! Procedure Call Transclusion Shortcut - -To call a [[procedure|Procedures]], place `<<`double angle brackets`>>` around the name and any parameter values. - -``` -<<my-procedure param:"This is the parameter value">> -``` - -By default, parameters are listed in the same order as in the procedure definition. A parameter can be labelled with its name and a colon to allow them to be listed in a different order. - -If no value is specified for a parameter, the default value given for that parameter in the [[procedure definition|Procedure Definitions]] is used instead. (If no default value was defined, the parameter is blank). - -Each parameter value can be enclosed in `'`single quotes`'`, `"`double quotes`"`, `"""`triple double quotes`"""` or `[[`double square brackets`]]`. Triple double quotes allow a value to contain almost anything. If a value contains no spaces or single or double quotes, it requires no delimiters. - -See the discussion about [[parser modes|WikiText parser mode: macro examples]] - -!! Procedure Calls with <<.wlink TranscludeWidget>> Widget - -The shortcut syntax expands to the <<.wlink TranscludeWidget>> widget with the `$variable` attribute specifying the name of the procedure to transclude. - -``` -<$transclude $variable="my-procedure" param="This is the parameter value"/> -``` - -The widget itself offers greater flexibility than the shortcut syntax, including the ability to specify dynamic parameter values. - -!! Assigning Procedure Calls to Attribute Values - -The text of a procedure can be directly assigned to an attribute of a widget or HTML element. The result of the procedure is not wikified, which means that [[parameter handling|Procedure Parameter Handling]] does not take place. - -``` -<div class=<<myclasses>>> -... -</div> -``` - -!! Using Procedure Calls in Filters - -Procedure calls can be used in filters. The text is not wikified which again means that the parameters will be ignored. - -``` -<$list filter="[<my-procedure>]"> -... -</$list> -``` \ No newline at end of file +<<.deprecated-since "5.4.0" "Calls">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/procedures/Procedures.tid b/editions/tw5.com/tiddlers/procedures/Procedures.tid index 1643fac186..6d0c81ab5f 100644 --- a/editions/tw5.com/tiddlers/procedures/Procedures.tid +++ b/editions/tw5.com/tiddlers/procedures/Procedures.tid @@ -33,6 +33,6 @@ Procedures are implemented as a special kind of [[variable|Variables]]. The only !! Using Procedures * [[Procedure Definitions]] describes how to create procedures -* [[Procedure Calls]] describes how to use procedures +* [[Calls]] describes how to use procedures * [[Procedure Parameter Handling]] describes how procedure parameters work -* [[Procedure Syntax]] is a formal syntax description using railroad diagrams +* [[Call Syntax]] is a formal syntax description using railroad diagrams diff --git a/editions/tw5.com/tiddlers/procedures/calls/Calls.tid b/editions/tw5.com/tiddlers/procedures/calls/Calls.tid new file mode 100644 index 0000000000..48822120af --- /dev/null +++ b/editions/tw5.com/tiddlers/procedures/calls/Calls.tid @@ -0,0 +1,56 @@ +caption: Calls +created: 20221007130006705 +modified: 20260125212303316 +tags: WikiText Procedures Functions Macros +title: Calls +type: text/vnd.tiddlywiki + +!! Introduction + +This tiddler describes the different ways in which [[procedures|Procedures]], [[functions|Functions]] and [[macros|Macros]] can be called. See [[Call Syntax]] for a formal description of the syntax. + +!! Call Transclusion Shortcut + +To perform a call, place `<<`double angle brackets`>>` around the callee name and any parameter values. + +``` +<<my-procedure param="This is the parameter value">> +``` + +By default, parameters are interpreted as being in the same order as in the definition. A parameter value can be labelled with its name and an equals sign to allow them to be listed in a different order. + +If no value is specified for a parameter, the default value given for that parameter in the [[procedure definition|Procedure Definitions]], [[function definition|Function Definitions]] or [[macro definition|Macro Definitions]] is used instead. (If no default value was defined, the parameter is blank). + +Each parameter value can be enclosed in `'`single quotes`'`, `"`double quotes`"`, `"""`triple double quotes`"""` or `[[`double square brackets`]]`. Triple double quotes allow a value to contain almost anything. If a value contains no spaces or single or double quotes, it requires no delimiters. [[Substituted Attribute Values]] enclosed in single or triple back quotes are also supported. + +See the discussion about [[parser modes|WikiText parser mode: macro examples]] + +!! Calls with <<.wlink TranscludeWidget>> Widget + +The shortcut syntax expands to the <<.wlink TranscludeWidget>> widget with the `$variable` attribute specifying the name of the procedure to transclude. + +``` +<$transclude $variable="my-procedure" param="This is the parameter value"/> +``` + +The widget itself offers greater flexibility than the shortcut syntax, including the ability to override it with a custom widget. + +!! Assigning Results of Calls to Attribute Values + +The text returned from a call can be directly assigned to an attribute of a widget or HTML element. The result of the call is not wikified, which means that [[parameter handling|Procedure Parameter Handling]] does not take place. + +``` +<div class=<<myclasses>>> +... +</div> +``` + +!! Using Calls in Filters + +Calls can be used in filters. The text is not wikified which again means that the parameters will be ignored. + +``` +<$list filter="[<my-procedure>]"> +... +</$list> +``` \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9055.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9055.tid new file mode 100644 index 0000000000..f94c897edb --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9055.tid @@ -0,0 +1,42 @@ +title: $:/changenotes/5.4.0/#9055 +description: Dynamic parameters for macro/procedure/function calls +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: enhancement +change-category: hackability +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9055 +github-contributors: Jermolene + +This PR extends the handling of macro/procedure/function made via the `<<..>>` syntax to allow parameters to be specified dynamically instead of just as static strings. To indicate the new syntax the colon that usually separates a parameter name from its value is replaced by an equals sign. + +For example, by it is now possible to do things like this: + +``` +<<mymacro param={{Something}}>> +``` + +Or even this: + +``` +<div class=<<mymacro param={{Something}}>>> +``` + +Or this: + +``` +<div class=<<mymacro param={{{ [<myvar>addprefix[https:] }}}>>> +``` + +Parameters can also be specified for the inner call: + +``` +<div class=<<mymacro param={{{ [<innermacro p={{Something}}>addprefix[https:] }}}>>> +``` + +The extended syntax can be used in three different settings: + +* As a standalone construction +* As a widget attribute value +* As a filter operand value + +In all cases, it is now possible to use an equals sign instead of a colon to allow parameter values to be passed as a transclusion, filter expression or nested call. diff --git a/editions/tw5.com/tiddlers/v5.4.0/Improvements to Macro Calls.tid b/editions/tw5.com/tiddlers/v5.4.0/Improvements to Macro Calls.tid new file mode 100644 index 0000000000..c46bd93dca --- /dev/null +++ b/editions/tw5.com/tiddlers/v5.4.0/Improvements to Macro Calls.tid @@ -0,0 +1,48 @@ +title: Improvements to Macro Calls in v5.4.0 +tags: v5.4.0 + +<$macrocall $name='wikitext-example-without-html' +src="""\define testmacro(one) +Result: $one$. +\end testmacro + +<<testmacro one={{{ [[There]addprefix[Hello]] }}}>> +"""/> + +<$macrocall $name='wikitext-example-without-html' +src="""\function testfunction(one) +[<one>addprefix[Hello]] +\end testfunction + +<<testfunction one={{{ [[re]addprefix[The]] }}}>> +"""/> + +<$macrocall $name='wikitext-example-without-html' +src="""\define testmacro(one) +Result: $one$. +\end testmacro + +<$text text=<<testmacro one={{{ [[There]addprefix[Hello]] }}}>>/> +"""/> + +<$macrocall $name='wikitext-example-without-html' +src="""\function testfunction(one) +[<one>addprefix[Hello]] +\end testfunction + +<$text text=<<testfunction one={{{ [[re]addprefix[The]] }}}>>/> +"""/> + +<$macrocall $name='wikitext-example' +src="""\define innermacro(one) +:$one$:$one$: +\end innermacro + +\define mymacro(param) +|$param$|$param$| +\end mymacro + +<div class=<<mymacro param={{{ [<innermacro one={{$:/palette}}>addprefix[The palette named ]] }}}>>> +Content +</div> +"""/> diff --git a/editions/tw5.com/tiddlers/variables/Behaviour of called variables depends on how the variable was declared.tid b/editions/tw5.com/tiddlers/variables/Behaviour of called variables depends on how the variable was declared.tid new file mode 100644 index 0000000000..e7895140e2 --- /dev/null +++ b/editions/tw5.com/tiddlers/variables/Behaviour of called variables depends on how the variable was declared.tid @@ -0,0 +1,52 @@ +created: 20230726145210484 +modified: 20260130210336084 +tags: [[Variable Usage]] +title: Behaviour of called variables depends on how the variable was declared +type: text/vnd.tiddlywiki + +\define m1(a1) $a1$ - <<__a1__>> - <<a1>> +\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>> +\function f1(a1) "$a1$" "-" [<__a1__>] ="-" [<a1>] :and[join[ ]] + +Called in normal wikitext context: `<$transclude $variable=myvar/>` or `<<myvar>>` + +{{Behaviour of variables called via normal wikitext}} + +Called via widget attribute: `<div class=<<myvar>>/>` + +{{Behaviour of variables called via widget attributes}} + +Called via filter operator parameter: `[<myvar>]` + +{{Behaviour of variables called via filter operator parameter}} + +Called via function call in a filter expression: `[function[.myfun]]` + +{{Behaviour of variables called via filter expression function call}} + +!! Examples + +Below is an example macro, procedure and function definition. All three forms of parameter substitution `$a1$`, `<<__a1__>>`, and `<<a1>>` are included in each definition. The output helps illustrate when each form of substitution will or will not have affect. + +``` +\define m1(a1) $a1$ - <<__a1__>> - <<a1>> +\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>> +\function f1(a1) $a1$ "-" [<__a1__>] ="-" [<a1>] :and[join[ ]] +``` + +| !Variable transclusion|!output | +| `<<m1 foo>>`|<<m1 foo>>| +| `<<p1 foo>>`|<<p1 foo>>| +| `<<f1 foo>>`|<<f1 foo>>| +| !Widget attribute|!output | +| `<$text text=<<m1 foo>>/>`|<$text text=<<m1 foo>>/>| +| `<$text text=<<p1 foo>>/>`|<$text text=<<p1 foo>>/>| +| `<$text text=<<f1 foo>>/>`|<$text text=<<f1 foo>>/>| +| !Filter operator parameter|!output | +| `[<m1 foo>]`|<$text text={{{[<m1 foo>]}}}/>| +| `[<p1 foo>]`|<$text text={{{[<p1 foo>]}}}/>| +| `[<f1 foo>]`|<$text text={{{[<f1 foo>]}}}/>| +| !Function call in filter expression|!output | +| `[function[m1],[foo]]`|<$text text={{{[function[m1],[foo]]}}}/>| +| `[function[p1],[foo]]`|<$text text={{{[function[p1],[foo]]}}}/>| +| `[function[f1],[foo]]`|<$text text={{{[function[f1],[foo]]}}}/>| \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid b/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid index 98fbf6b28f..91b9d27822 100644 --- a/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid +++ b/editions/tw5.com/tiddlers/variables/Behaviour of invoked variables depends on how the variable was declared.tid @@ -1,52 +1,6 @@ created: 20230726145210484 -modified: 20240619211734149 -tags: [[Variable Usage]] -title: Behaviour of invoked variables depends on how the variable was declared +modified: 20260130210336084 +title: Behaviour of called variables depends on how the variable was declared type: text/vnd.tiddlywiki -\define m1(a1) $a1$ - <<__a1__>> - <<a1>> -\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>> -\function f1(a1) "$a1$" "-" [<__a1__>] ="-" [<a1>] :and[join[ ]] - -Invoked in normal wikitext context: `<$transclude $variable=myvar/>` or `<<myvar>>` - -{{Behaviour of variables invoked via normal wikitext}} - -Invoked via widget attribute: `<div class=<<myvar>>/>` - -{{Behaviour of variables invoked via widget attributes}} - -Invoked via filter operator parameter: `[<myvar>]` - -{{Behaviour of variables invoked via filter operator parameter}} - -Invoked via function call in a filter expression: `[function[.myfun]]` - -{{Behaviour of variables invoked via filter expression function call}} - -!! Examples - -Below is an example macro, procedure and function definition. All three forms of parameter substitution `$a1$`, `<<__a1__>>`, and `<<a1>>` are included in each definition. The output helps illustrate when each form of substitution will or will not have affect. - -``` -\define m1(a1) $a1$ - <<__a1__>> - <<a1>> -\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>> -\function f1(a1) $a1$ "-" [<__a1__>] ="-" [<a1>] :and[join[ ]] -``` - -| !Variable transclusion|!output | -| `<<m1 foo>>`|<<m1 foo>>| -| `<<p1 foo>>`|<<p1 foo>>| -| `<<f1 foo>>`|<<f1 foo>>| -| !Widget attribute|!output | -| `<$text text=<<m1 foo>>/>`|<$text text=<<m1 foo>>/>| -| `<$text text=<<p1 foo>>/>`|<$text text=<<p1 foo>>/>| -| `<$text text=<<f1 foo>>/>`|<$text text=<<f1 foo>>/>| -| !Filter operator parameter|!output | -| `[<m1 foo>]`|<$text text={{{[<m1 foo>]}}}/>| -| `[<p1 foo>]`|<$text text={{{[<p1 foo>]}}}/>| -| `[<f1 foo>]`|<$text text={{{[<f1 foo>]}}}/>| -| !Function call in filter expression|!output | -| `[function[m1],[foo]]`|<$text text={{{[function[m1],[foo]]}}}/>| -| `[function[p1],[foo]]`|<$text text={{{[function[p1],[foo]]}}}/>| -| `[function[f1],[foo]]`|<$text text={{{[function[f1],[foo]]}}}/>| \ No newline at end of file +See [[Behaviour of called variables depends on how the variable was declared]]. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid b/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid index 52d44c9fd5..96ce17682e 100644 --- a/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid +++ b/editions/tw5.com/tiddlers/variables/Behaviour of variables invoked via filter expression function call.tid @@ -6,5 +6,5 @@ type: text/vnd.tiddlywiki |tc-first-col-min-width|k |!how declared|!behaviour| -|\define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Every function is a variable, but only variables defined using \function are invokable using the <<.olink function>> filter operator. Attempts to use a non-function variable is the same as if the function doesn't exist. The behavior in this case is like the identity function. All filter input is passed unchanged to the output.| +|\define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Every function is a variable, but only variables defined using \function are callable using the <<.olink function>> filter operator. Attempts to use a non-function variable is the same as if the function doesn't exist. The behavior in this case is like the identity function. All filter input is passed unchanged to the output.| |\function|The body text of the function is treated as a filter expression and evaluated. This filter expression can itself contain a function call. Filter expressions can be factored out into functions arbitrarily deep.| \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/wikitext/Macro Calls.tid b/editions/tw5.com/tiddlers/wikitext/Macro Calls.tid index eddf282007..3ae3a3cbef 100644 --- a/editions/tw5.com/tiddlers/wikitext/Macro Calls.tid +++ b/editions/tw5.com/tiddlers/wikitext/Macro Calls.tid @@ -1,58 +1,7 @@ caption: Macro Calls created: 20150220182252000 modified: 20230419103154328 -tags: WikiText Macros title: Macro Calls type: text/vnd.tiddlywiki -!! Introduction - -This tiddler describes the different ways in which [[macros|Macros]] can be called. - -!! Macro Call Transclusion Shortcut - -To call a [[macro|Macros]], place `<<`double angle brackets`>>` around the name and any parameter values. - -``` -<<mymacro param:"This is the parameter value">> -``` - -By default, parameters are listed in the same order as in the macro's definition. A parameter can be labelled with its name and a colon to allow them to be listed in a different order. - -If no value is specified for a parameter, the default value given for that parameter in the [[macro definition|Macro Definitions]] is used instead. (If no default value was defined, the parameter is blank). - -Each parameter value can be enclosed in `'`single quotes`'`, `"`double quotes`"`, `"""`triple double quotes`"""` or `[[`double square brackets`]]`. Triple double quotes allow a value to contain almost anything. If a value contains no spaces or single or double quotes, it requires no delimiters. - -A more formal [[presentation|Macro Call Syntax]] of this syntax is also available. - -See some [[examples|Macro Calls in WikiText (Examples)]] and discussion about [[parser modes|WikiText parser mode: macro examples]]. - -!! Macro Calls with <<.wlink TranscludeWidget>> Widget - -The shortcut syntax expands to the <<.wlink TranscludeWidget>> widget with the `$variable` attribute specifying the name of the macro to transclude. - -``` -<$transclude $variable="mymacro" param="This is the parameter value"/> -``` - -The widget itself offers greater flexibility than the shortcut syntax, including the ability to specify parameter values. - -!! Assigning Macro Calls to Attribute Values - -The result of a macro can be directly assigned to an attribute of a widget or HTML element. The result of the macro is not wikified, but the [[parameter substitution|Macro Parameter Handling]] is performed. - -``` -<div class=<<myclasses "Horizontal">>> -... -</div> -``` - -!! Using Macro Calls in Filters - -Macro calls can be used in filters: - -``` -<$list filter="[<mymacro param:'value'>]"> -... -</$list> -``` \ No newline at end of file +<<.deprecated-since "5.4.0" "Calls">> \ No newline at end of file diff --git a/plugins/tiddlywiki/wikitext-serialize/rules/macrocallblock.js b/plugins/tiddlywiki/wikitext-serialize/rules/macrocallblock.js index fff204891b..6e3499cf2d 100644 --- a/plugins/tiddlywiki/wikitext-serialize/rules/macrocallblock.js +++ b/plugins/tiddlywiki/wikitext-serialize/rules/macrocallblock.js @@ -18,7 +18,7 @@ exports.serialize = function (node) { if(node.orderedAttributes) { node.orderedAttributes.forEach(function (attribute) { if(attribute.name !== "$variable") { - result += " " + $tw.utils.serializeAttribute(attribute,{assignmentSymbol:":"}); + result += " " + $tw.utils.serializeAttribute(attribute); } }); } diff --git a/plugins/tiddlywiki/wikitext-serialize/utils/parsetree.js b/plugins/tiddlywiki/wikitext-serialize/utils/parsetree.js index fb1c4e47bc..456bf747d7 100644 --- a/plugins/tiddlywiki/wikitext-serialize/utils/parsetree.js +++ b/plugins/tiddlywiki/wikitext-serialize/utils/parsetree.js @@ -62,14 +62,27 @@ exports.serializeAttribute = function(node,options) { } // If name is number, means it is a positional attribute and name is omitted var positional = parseInt(node.name) >= 0, - // `=` in a widget and might be `:` in a macro - assign = positional ? "" : (options.assignmentSymbol || "="), + // Use the original assignment operator if available, otherwise default to '=' + assign = positional ? "" : (node.assignmentOperator || "="), attributeString = positional ? "" : node.name; if(node.type === "string") { if(node.value === "true") { return attributeString; } - attributeString += assign + '"' + node.value + '"'; + // For macro parameters (using ':' separator), preserve unquoted values + // For widget attributes (using '=' separator), always use quotes + if(assign === ":" && !node.quoted) { + attributeString += assign + node.value; + } else if(assign === "") { + // Positional parameter + if(!node.quoted) { + attributeString += node.value; + } else { + attributeString += '"' + node.value + '"'; + } + } else { + attributeString += assign + '"' + node.value + '"'; + } } else if(node.type === "filtered") { attributeString += assign + "{{{" + node.filter + "}}}"; } else if(node.type === "indirect") { @@ -77,11 +90,36 @@ exports.serializeAttribute = function(node,options) { } else if(node.type === "substituted") { attributeString += assign + "`" + node.rawValue + "`"; } else if(node.type === "macro") { - if(node.value && typeof node.value === "object" && node.value.type === "macrocall") { - var params = node.value.params.map(function(param) { - return param.value; - }).join(" "); - attributeString += assign + "<<" + node.value.name + " " + params + ">>"; + if(node.value && typeof node.value === "object") { + if(node.value.type === "transclude") { + // Handle the transclude-based macro call structure + var macroName = node.value.attributes && node.value.attributes["$variable"] ? + node.value.attributes["$variable"].value : ""; + if(!macroName) { + return null; + } + var params = []; + if(node.value.orderedAttributes) { + node.value.orderedAttributes.forEach(function(attr) { + if(attr.name !== "$variable") { + var paramStr = exports.serializeAttribute(attr); + if(paramStr) { + params.push(paramStr); + } + } + }); + } + attributeString += assign + "<<" + macroName + (params.length > 0 ? " " + params.join(" ") : "") + ">>"; + } else if(node.value.type === "macrocall") { + // Handle the classical macrocall structure for backwards compatibility + var params = node.value.params.map(function(param) { + return param.value; + }).join(" "); + attributeString += assign + "<<" + node.value.name + " " + params + ">>"; + } else { + // Unsupported macro structure + return null; + } } else { // Unsupported macro structure return null; From d15398fc094ff516e6aaf845e5d5da2dfdc3a522 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 4 Feb 2026 12:26:31 +0100 Subject: [PATCH 447/458] Simple TOC level parameter (#9612) * Add toc level parameter * Update TOC documentation * Add toc level release note * Update releasenote number and GH links * Update releasenote number and GH links --- core/wiki/macros/toc.tid | 37 ++++++++++++++--- .../TableOfContentsMacro Simple Example.tid | 40 +++++++++++++++++-- .../tiddlers/macros/TableOfContentsMacro.tid | 5 ++- .../releasenotes/5.4.0/#9612-toc-level.tid | 14 +++++++ 4 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9612-toc-level.tid diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 4238c3a46e..bfe9b6cb3b 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -15,7 +15,18 @@ tags: $:/tags/Macro </span> \end -\define toc-body(tag,sort:"",itemClassFilter,exclude,path) +\define toc-level-indicator() +\whitespace trim +<%if [<__level__>compare:number:gt[0]]%> + <%if [<currentTiddler>tagging[]] %> + <span class="tc-tiny-gap-left">{{$:/core/images/new-button}}</span> + <%else%> + <span class="tc-tiny-gap-left">{{$:/core/images/blank}}</span> + <%endif%> +<% endif %> +\end + +\define toc-body(tag,sort:"",itemClassFilter,exclude,path,level) \whitespace trim <ol class="tc-toc"> <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> @@ -23,10 +34,26 @@ tags: $:/tags/Macro <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]"> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item"> <li class=<<toc-item-class>>> - <$list filter="[all[current]toc-link[no]]" emptyMessage="<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><<toc-caption>></$link>"> + <$list filter="[all[current]toc-link[no]]" > + <$list-empty> + <!-- link to target-field or currentTiddler --> + <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}> + <<toc-level-indicator>> + <<toc-caption>> + </$link> + </$list-empty> + <!-- toc-link = no --> + <<toc-level-indicator>> <<toc-caption>> </$list> - <$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/> + <$let _level={{{ [<__level__>subtract[1]] }}}> + <%if [<_level>compare:number:gt[0]]%> + <$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>> level=<<_level>>/> + <%elseif [<_level>match[-1]]%> + <!-- show full toc, no level defined --> + <$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/> + <%endif%> + </$let> </li> </$set> </$set> @@ -35,10 +62,10 @@ tags: $:/tags/Macro </ol> \end -\define toc(tag,sort:"",itemClassFilter:"", exclude) +\define toc(tag,sort:"",itemClassFilter:"",exclude,level) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} > - <$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/> + <$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> level=<<__level__>>/> </$let> \end diff --git a/editions/tw5.com/tiddlers/demonstrations/TableOfContentsMacro Simple Example.tid b/editions/tw5.com/tiddlers/demonstrations/TableOfContentsMacro Simple Example.tid index 5e6ab1c530..24631d4000 100644 --- a/editions/tw5.com/tiddlers/demonstrations/TableOfContentsMacro Simple Example.tid +++ b/editions/tw5.com/tiddlers/demonstrations/TableOfContentsMacro Simple Example.tid @@ -1,11 +1,43 @@ -created: 20150221201838000 -modified: 20150221203742000 -title: Example Table of Contents: Simple caption: Simple -tags: table-of-contents-example +created: 20150221201838000 +modified: 20260124125915331 order: 1 +tags: table-of-contents-example +title: Example Table of Contents: Simple +type: text/vnd.tiddlywiki <$macrocall $name=".example" n="1" eg="""<div class="tc-table-of-contents"> <<toc "Contents">> </div>"""/> + +--- + +<<.tip"""If you use several parameters in a macro call, it is advised to use ''named parameters'' for all of them""">> + +<$macrocall $name=".example" n="2" +eg="""<div class="tc-table-of-contents"> +<<toc tag:"Contents" level:"1">> +</div>"""/> + +<$macrocall $name=".example" n="3" +eg="""<div class="tc-table-of-contents"> +<<toc tag:"Contents" level:"2">> +</div>"""/> + +<$macrocall $name=".example" n="4" +eg="""<div class="tc-table-of-contents"> +<<toc tag:"Contents" level:"4">> +</div>"""/> + +* If you want to ''change'' or ''remove'' the indicator, you can locally overwrite the `toc-level-indicator` macro. +* It is globally defined at: $:/core/macros/toc tiddler. Eg: + +<$macrocall $name=".example" n="5" +eg="""\define toc-level-indicator() +<!-- remove the indicator --> +\end + +<div class="tc-table-of-contents"> +<<toc tag:"Contents" level:"1">> +</div>"""/> diff --git a/editions/tw5.com/tiddlers/macros/TableOfContentsMacro.tid b/editions/tw5.com/tiddlers/macros/TableOfContentsMacro.tid index f21b08c94a..061736dcac 100644 --- a/editions/tw5.com/tiddlers/macros/TableOfContentsMacro.tid +++ b/editions/tw5.com/tiddlers/macros/TableOfContentsMacro.tid @@ -1,5 +1,5 @@ created: 20140919155729620 -modified: 20240624102502089 +modified: 20260124130054271 tags: Macros [[Core Macros]] title: Table-of-Contents Macros type: text/vnd.tiddlywiki @@ -74,6 +74,9 @@ These two parameters are combined into a single [[filter expression|Filter Expre ; exclude <<.from-version "5.3.0">> : This optional parameter can be used to exclude tiddlers from the TOC list. It allows a [[Title List]] or a <<.olink subfilter>>. Eg: `exclude:"HelloThere [[Title with spaces]]"` or `exclude:"[has[excludeTOC]]"`. Where the former will exclude two tiddlers and the later would exclude every tiddler that has a field <<.field excludeTOC>> independent of its value.<br>''Be aware'' that eg: `[prefix[H]]` is a shortcut for `[all[tiddlers]prefix[H]]`, which can have a performance impact, if used carelessly. So use $:/AdvancedSearch -> ''Filters'' tab to test the <<.param exclude>> parameter +; level <<.from-version "5.4.0">> +: This optional parameter can be used to define how many toc levels are shown by the toc-macro. By default all levels are shown. + !! Custom Icons <<.from-version "5.2.4">> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9612-toc-level.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9612-toc-level.tid new file mode 100644 index 0000000000..833e00c4c2 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9612-toc-level.tid @@ -0,0 +1,14 @@ +change-category: usability +change-type: enhancement +created: 20260124121646761 +description: The simple toc macro now supports a level parameter +github-contributors: pmario +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9612 +modified: 20260124131646761 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9612 +type: text/vnd.tiddlywiki + +* The [[toc-macro|Table-of-Contents Macros]] now supports a ''level'' parameter, that allows us to limit the [[toc-levels|Table-of-Contents Macros (Examples)]], that are listed. +* If the level parameter is active, levels, which have children will show a level indicator at the front. By default it uses the core "+" icon From b236373064c3d74ab1f24dcc7ad58d2fb37d8a64 Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 19:37:04 +0800 Subject: [PATCH 448/458] Intergrate tiddlywiki palette colors and settings to custom CSS properties (#9333) * Expose tiddlywiki palette colors and settings to custom CSS properties * Rename & use --tc prefix * Add colors and CSS settings * Make CSS settings properties' name readable * Add all CSS settings * Add all palette colors * Remove macrocallblock rule * Indent with tabs * Use --tc-color prefix * Update docs * Use --tpc prefix * Add change note * Simplify palette color rules with list widget * Update docs * Hardcode custom properties * Update docs * Remove cascades * Update docs * Add more docs * Update docs * Update docs * Add --tp-animation-duration * Update change note The previous example actually doesn't work at all * Update docs about limits of CSS variables --- core/stylesheets/custom-properties.tid | 30 ++++++++ core/ui/PageStylesheet.tid | 2 + .../tw5.com/tiddlers/Core CSS Variables.tid | 11 +++ .../Writing stylesheets in vanilla CSS.tid | 69 +++++++++++++++++++ .../--tp-animation-duration CSS Variable.tid | 8 +++ .../--tp-body-font-size Variable.tid | 8 +++ .../--tp-body-line-height Variable.tid | 8 +++ .../--tp-code-font-family Variable.tid | 8 +++ .../--tp-code-wrapping Variable.tid | 8 +++ .../--tp-editor-font-family Variable.tid | 8 +++ .../--tp-font-family Variable.tid | 8 +++ .../css-variables/--tp-font-size Variable.tid | 8 +++ .../--tp-line-height Variable.tid | 8 +++ .../--tp-sidebar-breakpoint CSS Variable.tid | 8 +++ .../--tp-sidebar-width CSS Variable.tid | 8 +++ .../--tp-story-left CSS Variable.tid | 8 +++ .../--tp-story-right CSS Variable.tid | 8 +++ .../--tp-story-top CSS Variable.tid | 8 +++ .../--tp-story-width CSS Variable.tid | 8 +++ .../--tp-tiddler-width CSS Variable.tid | 8 +++ .../css-variables/--tpc-_ variables.tid | 16 +++++ .../tiddlers/releasenotes/5.4.0/#9333.tid | 49 +++++++++++++ 22 files changed, 305 insertions(+) create mode 100644 core/stylesheets/custom-properties.tid create mode 100644 editions/tw5.com/tiddlers/Core CSS Variables.tid create mode 100644 editions/tw5.com/tiddlers/Writing stylesheets in vanilla CSS.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-animation-duration CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-body-font-size Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-body-line-height Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-code-font-family Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-code-wrapping Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-editor-font-family Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-font-family Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-font-size Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-line-height Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-sidebar-breakpoint CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-sidebar-width CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-story-left CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-story-right CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-story-top CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-story-width CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tp-tiddler-width CSS Variable.tid create mode 100644 editions/tw5.com/tiddlers/css-variables/--tpc-_ variables.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9333.tid diff --git a/core/stylesheets/custom-properties.tid b/core/stylesheets/custom-properties.tid new file mode 100644 index 0000000000..7d0b164c8e --- /dev/null +++ b/core/stylesheets/custom-properties.tid @@ -0,0 +1,30 @@ +title: $:/core/stylesheets/custom-properties + +\rules only transcludeinline macrocallinline html transcludeblock + +/* Tiddlywiki's CSS properties */ + +:root { + <$list filter="[[$:/palettes/Vanilla]indexes[]]"> + --tpc-<<currentTiddler>>: <$transclude $variable="colour" $mode="inline" name=<<currentTiddler>>/>; + </$list> + + /* CSS settings */ + --tp-code-wrapping: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}}; + --tp-font-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}}; + --tp-code-font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}}; + --tp-editor-font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}}; + --tp-font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}}; + --tp-line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}}; + --tp-body-font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}}; + --tp-body-line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}}; + --tp-story-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}}; + --tp-story-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}}; + --tp-story-right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}}; + --tp-story-width: {{$:/themes/tiddlywiki/vanilla/metrics/storyrwidth}}; + --tp-tiddler-width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}}; + --tp-sidebar-breakpoint: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}; + --tp-sidebar-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}}; + + --tp-animation-duration: {{{ [{$:/config/AnimationDuration}addsuffix[ms]] }}}; +} \ No newline at end of file diff --git a/core/ui/PageStylesheet.tid b/core/ui/PageStylesheet.tid index f21909f09a..f58181d086 100644 --- a/core/ui/PageStylesheet.tid +++ b/core/ui/PageStylesheet.tid @@ -8,6 +8,8 @@ code-body: yes <$set name="languageTitle" value={{!!name}}> +<$transclude $tiddler="$:/core/stylesheets/custom-properties" $mode="block"/> + <$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]"> <$transclude mode="block"/> </$list> diff --git a/editions/tw5.com/tiddlers/Core CSS Variables.tid b/editions/tw5.com/tiddlers/Core CSS Variables.tid new file mode 100644 index 0000000000..5d8b901174 --- /dev/null +++ b/editions/tw5.com/tiddlers/Core CSS Variables.tid @@ -0,0 +1,11 @@ +created: 20251108075028089 +modified: 20260130070027124 +tags: Reference +title: Core CSS Variables +type: text/vnd.tiddlywiki + +<<.from-version 5.4.0>> Tiddlywiki CSS variable definitions starts with `--tp-*` and `--tpc-*`. They are mainly used to [[Write stylesheets in vanilla CSS|Writing stylesheets in vanilla CSS]]. These prefixes ''are reserved'' for Tiddlywiki, so it should not be used for user defined CSS variables. It is also not recommended to override these core CSS variables. + +Core CSS variables are defined in [[$:/core/stylesheets/custom-properties]]. + +<<list-links "[tag[Core CSS Variables]]" class:"multi-columns">> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/Writing stylesheets in vanilla CSS.tid b/editions/tw5.com/tiddlers/Writing stylesheets in vanilla CSS.tid new file mode 100644 index 0000000000..bd681eb161 --- /dev/null +++ b/editions/tw5.com/tiddlers/Writing stylesheets in vanilla CSS.tid @@ -0,0 +1,69 @@ +created: 20251108075645447 +modified: 20260201043953311 +title: Writing stylesheets in vanilla CSS +type: text/vnd.tiddlywiki + +<<.from-version 5.4.0>> Before v5.4.0, theme developers have to mix wikitext syntax with CSS syntax when writing stylesheets to intergrate Tiddlywiki color palettes and theme settings. With the introduction of [[Core CSS Variables]] in v5.4.0, theme developers can intergrate most Tiddlywiki palettes with vanilla CSS. + +! Getting Tiddlywiki palette colors +Tiddlywiki's custom properties for colors are prefixed `--tpc-`. Before v5.4.0, theme developers have to use the following wikitext to get a color value of a palette: + +``` +.tag { + background: <<colour tag-background>>; +} +``` + +Since v5.4.0, theme developers can use the following CSS to get the palette color: + +```css +.tag { + background: var(--tp-color-tag-background); +} +``` + +! Getting and processing Tiddlywiki CSS settings +See [[Core CSS Variables]] for the available CSS variables. Before v5.4.0, theme developers have to use macros with filters to get and process theme settings: + +``` +.tc-sidebar-header { + padding: 14px; + min-height: 32px; + margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}}; + transition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out; +} +``` + +Since v5.4.0, the theme settings are also available as the CSS variables, so theme developers can use the following code: + +```css +.tc-sidebar-header { + padding: 14px; + min-height: 32px; + margin-top: var(--tp-story-top); + transition: min-height var(--tp-animation-duration) ease-in-out, padding-top var(--tp-animation-duration) ease-in-out, padding-bottom var(--tp-animation-duration) ease-in-out; +} +``` + +! Limits +CSS variables can only be used in rules, while wikitext can be used everywhere. See this example: + +Old way of using wikitext in media query definitions: + +``` +\define sidebarbreakpoint() +<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/> +\end + +@media (min-width: <<sidebarbreakpoint>>) { + /* CSS rules */ +} +``` + +While using CSS variables in media quert definitions doesn't work at all: + +```css +@media (min-width: var(--tp-sidebar-breakpoint)) { + /* Doesn't work */ +} +``` \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-animation-duration CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-animation-duration CSS Variable.tid new file mode 100644 index 0000000000..665592fb47 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-animation-duration CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-animation-duration +created: 20260130075755351 +modified: 20260130075855780 +tags: [[Core CSS Variables]] +title: --tp-animation-duration CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-animation-duration` CSS variable represents the "Animation duration" setting in the control panel. The `ms` suffix is added. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-body-font-size Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-body-font-size Variable.tid new file mode 100644 index 0000000000..1c0da6253c --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-body-font-size Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-body-font-size +created: 20260122111308483 +modified: 20260130045633904 +tags: [[Core CSS Variables]] +title: --tp-body-font-size CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-body-font-size` CSS variable represents the "Font size for tiddler body" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-body-line-height Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-body-line-height Variable.tid new file mode 100644 index 0000000000..fac0d08333 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-body-line-height Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-body-line-height +created: 20260122111249446 +modified: 20260130045720240 +tags: [[Core CSS Variables]] +title: --tp-body-line-height CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-body-line-height` CSS variable represents the "Line height for tiddler body" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-code-font-family Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-code-font-family Variable.tid new file mode 100644 index 0000000000..03a6292eef --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-code-font-family Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-code-font-family +created: 20260122110850673 +modified: 20260130045333134 +tags: [[Core CSS Variables]] +title: --tp-code-font-family CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-code-font-family` CSS variable represents the "Code font family" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-code-wrapping Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-code-wrapping Variable.tid new file mode 100644 index 0000000000..d0782c4474 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-code-wrapping Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-code-wrapping +created: 20260122110618231 +modified: 20260130045345387 +tags: [[Core CSS Variables]] +title: --tp-code-wrapping CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-code-wrapping` CSS variable represents the "Wrap long lines in code blocks" setting in Theme Tweaks. Its value is `pre` when the setting is set to "No", and `pre-wrap` when set to "Yes". \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-editor-font-family Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-editor-font-family Variable.tid new file mode 100644 index 0000000000..50ac602678 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-editor-font-family Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-editor-font-family +created: 20260122110858791 +modified: 20260130045422071 +tags: [[Core CSS Variables]] +title: --tp-editor-font-family CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-editor-font-family` CSS variable represents the "Editor font family" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-font-family Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-font-family Variable.tid new file mode 100644 index 0000000000..42457f0022 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-font-family Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-font-family +created: 20260122110741282 +modified: 20260130045301357 +tags: [[Core CSS Variables]] +title: --tp-font-family CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-font-family` CSS variable represents the "Font family" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-font-size Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-font-size Variable.tid new file mode 100644 index 0000000000..8d43114124 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-font-size Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-font-size +created: 20260122110956954 +modified: 20260130045455466 +tags: [[Core CSS Variables]] +title: --tp-font-size CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-font-size` CSS variable represents the "Font size" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-line-height Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-line-height Variable.tid new file mode 100644 index 0000000000..ddbcb9a4a6 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-line-height Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-line-height +created: 20260122111115266 +modified: 20260130045757204 +tags: [[Core CSS Variables]] +title: --tp-line-height CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-line-height` CSS variable represents the "Line height" setting in Theme Tweaks. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-breakpoint CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-breakpoint CSS Variable.tid new file mode 100644 index 0000000000..6a6db44376 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-breakpoint CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-sidebar-breakpoint +created: 20260130065756457 +modified: 20260130065841355 +tags: [[Core CSS Variables]] +title: --tp-sidebar-breakpoint CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-sidebar-breakpoint` CSS variable represents the minimum page width at which the story river and sidebar will appear side by side. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-width CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-width CSS Variable.tid new file mode 100644 index 0000000000..00ea0b794a --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-sidebar-width CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-sidebar-width +created: 20260130065850825 +modified: 20260130065925595 +tags: [[Core CSS Variables]] +title: --tp-sidebar-width CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-sidebar-width` CSS variable represents the width of the sidebar in fluid-fixed layout. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-story-left CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-story-left CSS Variable.tid new file mode 100644 index 0000000000..a682e6468c --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-story-left CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-story-left +created: 20260130065252380 +modified: 20260130065342364 +tags: [[Core CSS Variables]] +title: --tp-story-left CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-story-left` CSS variable represents how far the left margin of the story river (tiddler area) is from the left of the page. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-story-right CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-story-right CSS Variable.tid new file mode 100644 index 0000000000..1f84bc3b74 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-story-right CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-story-right +created: 20260130065417448 +modified: 20260130065457358 +tags: [[Core CSS Variables]] +title: --tp-story-right CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-story-right` CSS variable represents how far the left margin of the sidebar is from the left of the page. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-story-top CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-story-top CSS Variable.tid new file mode 100644 index 0000000000..338ed0d1c1 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-story-top CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-story-top +created: 20260130065351753 +modified: 20260130065451132 +tags: [[Core CSS Variables]] +title: --tp-story-top CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-story-top` CSS variable represents how far the top margin of the story river is from the top of the page. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-story-width CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-story-width CSS Variable.tid new file mode 100644 index 0000000000..ecdbfa157e --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-story-width CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-story-width +created: 20260130065510314 +modified: 20260130065552027 +tags: [[Core CSS Variables]] +title: --tp-story-width CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-story-width` CSS variable represents the overall width of the story river. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tp-tiddler-width CSS Variable.tid b/editions/tw5.com/tiddlers/css-variables/--tp-tiddler-width CSS Variable.tid new file mode 100644 index 0000000000..0b276d6d66 --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tp-tiddler-width CSS Variable.tid @@ -0,0 +1,8 @@ +caption: --tp-tiddler-width +created: 20260130065558913 +modified: 20260130065746707 +tags: [[Core CSS Variables]] +title: --tp-tiddler-width CSS Variable +type: text/vnd.tiddlywiki + +The `--tp-tiddler-width` CSS variable represents the tiddler width within the story river. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/css-variables/--tpc-_ variables.tid b/editions/tw5.com/tiddlers/css-variables/--tpc-_ variables.tid new file mode 100644 index 0000000000..85ac5e0ffb --- /dev/null +++ b/editions/tw5.com/tiddlers/css-variables/--tpc-_ variables.tid @@ -0,0 +1,16 @@ +caption: --tpc-* +created: 20260122104142525 +modified: 20260122104847331 +tags: [[Core CSS Variables]] +title: --tpc-* CSS Variables +type: text/vnd.tiddlywiki + +`--tpc-*` variables are CSS variables of palette colors. They can be accessed via appending the palette color names to the bottom. For example: + +```css +.code { + background-color: var(--tpc-code-background); + color: var(--tpc-code-foreground); +} +``` + diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9333.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9333.tid new file mode 100644 index 0000000000..9ab81be8c5 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9333.tid @@ -0,0 +1,49 @@ +title: $:/changenotes/5.4.0/#9333 +description: Intergrate Tiddlywiki palette colors and settings to custom CSS properties +release: 5.4.0 +tags: $:/tags/ChangeNote +change-type: feature +change-category: developer +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9333 +github-contributors: Leilei332 + +Adds `--tpc-*` (for palettes colors) and `--tp-*` (for CSS settings) [[custom CSS properties|https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/--*]] to allow writing stylesheets with vanilla CSS, for example: + +``` +/* Old way to get a palette color, which requires using wikitext */ +.tag { + background: <<colour tag-background>>; +} +``` + +```css +/* New way to get a palette color without wikitext */ +.tag { + background: var(--tp-color-tag-background); +} +``` + +``` +/* Old way to get CSS settings with transclusion */ +.tc-sidebar-header { + padding: 14px; + min-height: 32px; + margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}}; + transition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out; +} +``` + +```css +/* New way to get CSS settings */ +.tc-sidebar-header { + padding: 14px; + min-height: 32px; + margin-top: var(--tp-story-top); + transition: min-height var(--tp-animation-duration) ease-in-out, padding-top var(--tp-animation-duration) ease-in-out, padding-bottom var(--tp-animation-duration) ease-in-out; +} +``` + +See: + +* [[Writing stylesheets in vanilla CSS]] and [[Core CSS Variables]] for details. +* https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/var \ No newline at end of file From bf7c0b575c6278a0154edf24dc6064fb4b7f73ad Mon Sep 17 00:00:00 2001 From: XLBilly <LeiYiXia29@outlook.com> Date: Wed, 4 Feb 2026 19:43:40 +0800 Subject: [PATCH 449/458] Fix side effects of PR 9316 (#9568) * Fix color transition not working * Fix plugin install button * Fix remove tag button * Update change note --- core/ui/EditTemplate/tags.tid | 2 +- editions/tw5.com/tiddlers/releasenotes/5.4.0/#9316.tid | 2 +- themes/tiddlywiki/seamless/base.tid | 2 +- themes/tiddlywiki/snowwhite/base.tid | 2 +- themes/tiddlywiki/vanilla/base.tid | 5 +++++ 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/ui/EditTemplate/tags.tid b/core/ui/EditTemplate/tags.tid index 298120606d..a2bf6b4658 100644 --- a/core/ui/EditTemplate/tags.tid +++ b/core/ui/EditTemplate/tags.tid @@ -17,7 +17,7 @@ tags: $:/tags/EditTemplate <$let backgroundColor=<<colour>> > <span class="tc-tag-label tc-tag-list-item tc-small-gap-right" data-tag-title=<<currentTiddler>> - style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$;` + style=`color:$(foregroundColor)$; background-color:$(backgroundColor)$; --tp-remove-tag-button-color:$(foregroundColor)$` > <$transclude tiddler=<<icon>>/> <$view field="title" format="text"/> diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9316.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9316.tid index cb1b24d0f8..def69c2606 100644 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9316.tid +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9316.tid @@ -4,7 +4,7 @@ release: 5.4.0 tags: $:/tags/ChangeNote change-type: enhancement change-category: theme -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9316 +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9316 https://github.com/TiddlyWiki/TiddlyWiki5/pull/9568 github-contributors: Leilei332 Replaces hardcoded `fill` attributes with one `fill: currentColor` rule to solve the compatibility issues of migrating to lucide icons. \ No newline at end of file diff --git a/themes/tiddlywiki/seamless/base.tid b/themes/tiddlywiki/seamless/base.tid index 0f07c35295..4fe2371186 100644 --- a/themes/tiddlywiki/seamless/base.tid +++ b/themes/tiddlywiki/seamless/base.tid @@ -9,7 +9,7 @@ Rules copied from Snow White */ .tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg { - <<transition "fill 150ms ease-in-out">> + transition: color 150ms ease-in-out; } .tc-tiddler-controls button.tc-selected svg { diff --git a/themes/tiddlywiki/snowwhite/base.tid b/themes/tiddlywiki/snowwhite/base.tid index 051cc5e8db..ce9250e176 100644 --- a/themes/tiddlywiki/snowwhite/base.tid +++ b/themes/tiddlywiki/snowwhite/base.tid @@ -28,7 +28,7 @@ tags: [[$:/tags/Stylesheet]] } .tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg { - transition: fill 150ms ease-in-out; + transition: color 150ms ease-in-out; } .tc-tiddler-controls button.tc-selected, diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index c20aa94abb..74a93c15bc 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -852,6 +852,7 @@ button.tc-untagged-label { .tc-edit-tags button.tc-remove-tag-button svg { font-size: 0.7em; vertical-align: middle; + color: var(--tp-remove-tag-button-color); } .tc-tag-manager-table .tc-tag-label { @@ -2755,6 +2756,10 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta padding: 3px; } +.tc-install-plugin > svg { + color: white; +} + .tc-install-plugin.tc-reinstall-downgrade { background: red; } From 46fe3ca988a08a07f630805ba8603176c11c6fff Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Wed, 4 Feb 2026 12:53:14 +0100 Subject: [PATCH 450/458] Revert "Fix RSOE from filter operator errors (#9496)" (#9630) This reverts commit 86c4770a28659e0c95d05a1eb05487116191838a. --- core/modules/filters.js | 37 ++++++++----------- .../releasenotes/5.4.0/fix-base64-rsoe.tid | 10 ----- 2 files changed, 16 insertions(+), 31 deletions(-) delete mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/fix-base64-rsoe.tid diff --git a/core/modules/filters.js b/core/modules/filters.js index 7c8cb21ba7..56bc533ccc 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -88,8 +88,8 @@ function parseFilterOperation(operators,filterString,p) { rexMatch = rex.exec(filterString.substring(p)); if(rexMatch) { operator.regexp = new RegExp(rexMatch[1], rexMatch[2]); - // DEPRECATION WARNING - console.log("WARNING: Filter",operator.operator,"has a deprecated regexp operand",operator.regexp); + // DEPRECATION WARNING + console.log("WARNING: Filter",operator.operator,"has a deprecated regexp operand",operator.regexp); nextBracketPos = p + rex.lastIndex - 1; } else { @@ -232,12 +232,7 @@ exports.getFilterRunPrefixes = function() { exports.filterTiddlers = function(filterString,widget,source) { var fn = this.compileFilter(filterString); - try { - const fnResult = fn.call(this,source,widget); - return fnResult; - } catch(e) { - return [`${$tw.language.getString("Error/Filter")}: ${e}`]; - } + return fn.call(this,source,widget); }; /* @@ -319,19 +314,19 @@ exports.compileFilter = function(filterString) { // Invoke the appropriate filteroperator module results = operatorFunction(accumulator,{ - operator: operator.operator, - operand: operands.length > 0 ? operands[0] : undefined, - operands: operands, - multiValueOperands: multiValueOperands, - isMultiValueOperand: isMultiValueOperand, - prefix: operator.prefix, - suffix: operator.suffix, - suffixes: operator.suffixes, - regexp: operator.regexp - },{ - wiki: self, - widget: widget - }); + operator: operator.operator, + operand: operands.length > 0 ? operands[0] : undefined, + operands: operands, + multiValueOperands: multiValueOperands, + isMultiValueOperand: isMultiValueOperand, + prefix: operator.prefix, + suffix: operator.suffix, + suffixes: operator.suffixes, + regexp: operator.regexp + },{ + wiki: self, + widget: widget + }); if($tw.utils.isArray(results)) { accumulator = self.makeTiddlerIterator(results); } else { diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/fix-base64-rsoe.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/fix-base64-rsoe.tid deleted file mode 100644 index 71c1071cfe..0000000000 --- a/editions/tw5.com/tiddlers/releasenotes/5.4.0/fix-base64-rsoe.tid +++ /dev/null @@ -1,10 +0,0 @@ -title: $:/changenotes/5.4.0/#9496 -description: Fix RSOE from decodebase64 -release: 5.4.0 -tags: $:/tags/ChangeNote -change-type: bugfix -change-category: filters -github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9496 -github-contributors: Leilei332 - -[[decodebase64 Operator]] now outputs error to the filter operator result. \ No newline at end of file From 33b2f514fba22c7efc8873084549008a33e25a53 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Wed, 4 Feb 2026 13:41:40 +0100 Subject: [PATCH 451/458] Allow title, tags, text as focus for editing existing tiddlers (#9214) * Allow title, tags, text as focus for editing existing tiddlers * Add release note * Update description field * refresh select widget, it .default parameter is changed * remove default variable, because it is not needed anymore. select widget refresh handling deals with it * Undo select widget changes --- core/language/en-GB/ControlPanel.multids | 1 + core/ui/ControlPanel/Basics.tid | 1 + core/ui/EditTemplate/body-editor.tid | 2 +- core/ui/EditTemplate/fields.tid | 2 +- core/ui/EditTemplate/title.tid | 6 +++++- core/ui/EditTemplate/type.tid | 19 +++++++++++++++++-- core/wiki/macros/tag-picker.tid | 2 +- core/wiki/minifocuseditswitcher.tid | 8 ++++++++ .../5.4.0/#9214 - configure-edit-focus.tid | 12 ++++++++++++ 9 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 core/wiki/minifocuseditswitcher.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index ce0a5b3cf7..28534bd1ee 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -6,6 +6,7 @@ Appearance/Caption: Appearance Appearance/Hint: Ways to customise the appearance of your TiddlyWiki. Basics/AnimDuration/Prompt: Animation duration Basics/AutoFocus/Prompt: Default focus field for new tiddlers +Basics/AutoFocusEdit/Prompt: Default focus field for existing tiddlers Basics/Caption: Basics Basics/DefaultTiddlers/BottomHint: Use [[double square brackets]] for titles with spaces. Or you can choose to {{retain story ordering||$:/snippets/retain-story-ordering-button}} Basics/DefaultTiddlers/Prompt: Default tiddlers diff --git a/core/ui/ControlPanel/Basics.tid b/core/ui/ControlPanel/Basics.tid index f494c2af63..06e3662481 100644 --- a/core/ui/ControlPanel/Basics.tid +++ b/core/ui/ControlPanel/Basics.tid @@ -18,6 +18,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}} |<$link to="$:/config/NewTiddler/Tags"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler="$:/config/NewTiddler/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[<currentTiddler>tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field="text" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=""/></$button></$list></$vars> | |<$link to="$:/config/NewJournal/Tags"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler="$:/config/NewJournal/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[<currentTiddler>tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field="text" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=""/></$button></$list></$vars> | |<$link to="$:/config/AutoFocus"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} | +|<$link to="$:/config/AutoFocusEdit"><<lingo AutoFocusEdit/Prompt>></$link> |{{$:/snippets/minifocuseditswitcher}} | |<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} | |<<lingo Tiddlers/Prompt>> |<<show-filter-count "[!is[system]sort[title]]">> | |<<lingo Tags/Prompt>> |<<show-filter-count "[tags[]sort[title]]">> | diff --git a/core/ui/EditTemplate/body-editor.tid b/core/ui/EditTemplate/body-editor.tid index 374567acdd..4aca7b58f3 100644 --- a/core/ui/EditTemplate/body-editor.tid +++ b/core/ui/EditTemplate/body-editor.tid @@ -8,7 +8,7 @@ title: $:/core/ui/EditTemplate/body/editor class="tc-edit-texteditor tc-edit-texteditor-body" placeholder={{$:/language/EditTemplate/Body/Placeholder}} tabindex={{$:/config/EditTabIndex}} - focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[text]then[true]] ~[{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}} cancelPopups="yes" fileDrop={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}} diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index dfa36c9ae7..8a09f74db6 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -114,7 +114,7 @@ tags: $:/tags/EditTemplate class=`tc-edit-texteditor tc-popup-handle ${ [<newFieldNameTiddler>get[text]] :intersection[<storyTiddler>fields[]] :then[[tc-edit-field-exists]] }$` configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" default="" - focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[fields]then[true]] :else[{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> inputAcceptVariantActions=<<save-tiddler-actions>> inputCancelActions=<<cancel-search-actions>> diff --git a/core/ui/EditTemplate/title.tid b/core/ui/EditTemplate/title.tid index 5228ad7c06..2963aa7cb8 100644 --- a/core/ui/EditTemplate/title.tid +++ b/core/ui/EditTemplate/title.tid @@ -2,7 +2,11 @@ title: $:/core/ui/EditTemplate/title tags: $:/tags/EditTemplate \whitespace trim -<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/> +<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[title]then[true]] ~[{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} + tabindex={{$:/config/EditTabIndex}} + cancelPopups="yes" +/> <$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`"""> diff --git a/core/ui/EditTemplate/type.tid b/core/ui/EditTemplate/type.tid index eae2ebfee1..37e0380ecd 100644 --- a/core/ui/EditTemplate/type.tid +++ b/core/ui/EditTemplate/type.tid @@ -4,13 +4,28 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d \procedure lingo-base() $:/language/EditTemplate/ \procedure input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] :and[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list> + \whitespace trim <$set name="refreshTitle" value=<<qualify "$:/temp/type-search/refresh">>> <div class="tc-edit-type-selector-wrapper"> <em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em> <div class="tc-type-selector-dropdown-wrapper"> -<div class="tc-type-selector"><$fieldmangler> -<$transclude $variable="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle tc-keep-focus" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button> +<div class="tc-type-selector"> +<$fieldmangler> +<$transclude $variable="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> + selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} + focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle tc-keep-focus" + tabindex={{$:/config/EditTabIndex}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[type]then[true]] :else[{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} + cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" + inputCancelActions=<<input-cancel-actions>> +/> + <$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}> + {{$:/core/images/down-arrow}} + </$button> + <$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}> + {{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/> + </$button> </$fieldmangler></div> <div class="tc-block-dropdown-wrapper"> diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index 1c420e9634..5227c50639 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -118,7 +118,7 @@ The second ESC tries to close the "draft tiddler" focusPopup=<<tf.tagpicker-dropdown-id>> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>> - focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[tags]then[true]] :else[{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} cancelPopups=<<cancelPopups>> configTiddlerFilter="[[$:/core/macros/tag-picker]]" diff --git a/core/wiki/minifocuseditswitcher.tid b/core/wiki/minifocuseditswitcher.tid new file mode 100644 index 0000000000..be94d26e33 --- /dev/null +++ b/core/wiki/minifocuseditswitcher.tid @@ -0,0 +1,8 @@ +title: $:/snippets/minifocuseditswitcher + +\whitespace trim +<$select tiddler="$:/config/AutoFocusEdit" default={{$:/config/AutoFocus}}> +<$list filter="title tags text"> +<option><<currentTiddler>></option> +</$list> +</$select> \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid new file mode 100644 index 0000000000..5fd0137378 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid @@ -0,0 +1,12 @@ +change-category: usability +change-type: bugfix +created: 20260125065754439 +description: Allow title, tags, text as initial focus for editing existing tiddlers +github-contributors: pmario +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9214 +modified: 20260125065921915 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9214 +type: text/vnd.tiddlywiki + From d376ada2418c8177bb11c450d9b20bc472e7aa82 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Thu, 5 Feb 2026 17:03:40 +0100 Subject: [PATCH 452/458] Adds a widget destroy method (#9097) * feat: widget destroy method * fix: revert to original implementation * Invoke onDestroy method during widget destruction Add custom cleanup method call in destroy process * Update documentation for destroy method options * Fix formatting in widget.js comments * Refactor destroyChildren method for formatting * Fix indentation in findNextSiblingDomNode method * docs: added changenote * chore: lint * fix: remove deprecated utils method --- core/modules/widgets/widget.js | 69 +++++++++++++++---- .../tiddlers/releasenotes/5.4.0/#9097.tid | 13 ++++ 2 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9097.tid diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 09b5364e00..b838f53ace 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -787,9 +787,9 @@ Widget.prototype.findNextSiblingDomNode = function(startIndex) { // Refer to this widget by its index within its parents children var parent = this.parentWidget, index = startIndex !== undefined ? startIndex : parent.children.indexOf(this); -if(index === -1) { - throw "node not found in parents children"; -} + if(index === -1) { + throw "node not found in parents children"; + } // Look for a DOM node in the later siblings while(++index < parent.children.length) { var domNode = parent.children[index].findFirstDomNode(); @@ -827,21 +827,60 @@ Widget.prototype.findFirstDomNode = function() { }; /* -Remove any DOM nodes created by this widget or its children +Entry into destroy procedure +options include: + removeDOMNodes: boolean (default true) +*/ +Widget.prototype.destroyChildren = function(options) { + $tw.utils.each(this.children,function(childWidget) { + childWidget.destroy(options); + }); +}; + +/* +Legacy entry into destroy procedure */ Widget.prototype.removeChildDomNodes = function() { - // If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case - if(this.domNodes.length > 0) { - $tw.utils.each(this.domNodes,function(domNode) { - domNode.parentNode.removeChild(domNode); - }); - this.domNodes = []; - } else { - // Otherwise, ask the child widgets to delete their DOM nodes - $tw.utils.each(this.children,function(childWidget) { - childWidget.removeChildDomNodes(); - }); + this.destroy({removeDOMNodes: true}); +}; + +/* +Default destroy +options include: +- removeDOMNodes: boolean (default true) +*/ +Widget.prototype.destroy = function(options) { + const { removeDOMNodes = true } = options || {}; + let removeChildDOMNodes = removeDOMNodes; + if(removeDOMNodes && this.domNodes.length > 0) { + // If this widget will remove its own DOM nodes, children should not remove theirs + removeChildDOMNodes = false; } + // Destroy children first + this.destroyChildren({removeDOMNodes: removeChildDOMNodes}); + this.children = []; + + // Call custom cleanup method if implemented + if(typeof this.onDestroy === "function") { + this.onDestroy(); + } + + // Remove our DOM nodes if needed + if(removeDOMNodes) { + this.removeLocalDomNodes(); + } +}; + +/* +Remove any DOM nodes created by this widget +*/ +Widget.prototype.removeLocalDomNodes = function() { + for(const domNode of this.domNodes) { + if(domNode.parentNode) { + domNode.parentNode.removeChild(domNode); + } + } + this.domNodes = []; }; /* diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9097.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9097.tid new file mode 100644 index 0000000000..8fe8db4056 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9097.tid @@ -0,0 +1,13 @@ +change-category: internal +change-type: enhancement +created: 20260120153052332 +description: Adds a destroy method for widgets allowing for clean up of resources when a widget is removed. +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9097 +modified: 20260125212701672 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9097 +type: text/vnd.tiddlywiki + +Adds a destroy method for widgets allowing for clean up of resources when a widget is removed. \ No newline at end of file From 0673426f5a640d82c672579088a4336894f9fb6d Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Thu, 5 Feb 2026 17:06:32 +0100 Subject: [PATCH 453/458] fix: remove fn wrappers and unneeded comments (#9637) --- core/modules/savers/postmessage.js | 4 ---- core/modules/utils/messaging.js | 5 ----- 2 files changed, 9 deletions(-) diff --git a/core/modules/savers/postmessage.js b/core/modules/savers/postmessage.js index 6483edc435..b41a32056c 100644 --- a/core/modules/savers/postmessage.js +++ b/core/modules/savers/postmessage.js @@ -6,10 +6,7 @@ module-type: saver Handles saving changes via window.postMessage() to the window.parent \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; /* @@ -63,4 +60,3 @@ exports.create = function(wiki) { return new PostMessageSaver(wiki); }; -})(); diff --git a/core/modules/utils/messaging.js b/core/modules/utils/messaging.js index c7467f8b9d..5a89316b7d 100644 --- a/core/modules/utils/messaging.js +++ b/core/modules/utils/messaging.js @@ -8,10 +8,7 @@ Messaging utilities for use with window.postMessage() etc. This module intentionally has no dependencies so that it can be included in non-TiddlyWiki projects \*/ -(function(){ -/*jslint node: true, browser: true */ -/*global $tw: false */ "use strict"; var RESPONSE_TIMEOUT = 2 * 1000; @@ -122,5 +119,3 @@ BrowserMessagingPublisher.prototype.close = function() { }; exports.BrowserMessagingPublisher = BrowserMessagingPublisher; - -})(); From cd8b1faa748439c7474f1f7a0cac682a3dd2ff91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Desmedt?= <34781168+DesignThinkerer@users.noreply.github.com> Date: Thu, 5 Feb 2026 20:47:15 +0100 Subject: [PATCH 454/458] UI: Show cascade filter details in Advanced info tab (#9634) * UI: Show details on cascade filters in the "Advanced info" tab * Update CascadeInfo.tid with new formatting * Remove codeblock for conciseness * Add change note for #9634 * Refactor CascadeInfo.tid for active filters Improve filter logic and names of variable * Change heading names Updated the CascadeInfo.tid to change 'Active Filter Condition' to 'Active Cascade Filter' and adjusted the corresponding variables. --- core/language/en-GB/TiddlerInfo.multids | 1 + core/ui/TiddlerInfo/Advanced/CascadeInfo.tid | 38 +++++++++++++++++++ core/wiki/tags/TiddlerInfoAdvanced.tid | 2 +- .../5.4.0/#9634-cascade-info-tab.tid | 10 +++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 core/ui/TiddlerInfo/Advanced/CascadeInfo.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9634-cascade-info-tab.tid diff --git a/core/language/en-GB/TiddlerInfo.multids b/core/language/en-GB/TiddlerInfo.multids index 0899320c6a..fb552f54fb 100644 --- a/core/language/en-GB/TiddlerInfo.multids +++ b/core/language/en-GB/TiddlerInfo.multids @@ -9,6 +9,7 @@ Advanced/ShadowInfo/NotShadow/Hint: The tiddler <$link to=<<infoTiddler>>><$text Advanced/ShadowInfo/Shadow/Hint: The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler Advanced/ShadowInfo/Shadow/Source: It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link> Advanced/ShadowInfo/OverriddenShadow/Hint: It is overridden by an ordinary tiddler +Advanced/CascadeInfo/Heading: Cascade Details Fields/Caption: Fields List/Caption: List List/Empty: This tiddler does not have a list diff --git a/core/ui/TiddlerInfo/Advanced/CascadeInfo.tid b/core/ui/TiddlerInfo/Advanced/CascadeInfo.tid new file mode 100644 index 0000000000..34e0160f03 --- /dev/null +++ b/core/ui/TiddlerInfo/Advanced/CascadeInfo.tid @@ -0,0 +1,38 @@ +title: $:/core/ui/TiddlerInfo/Advanced/CascadeInfo +tags: $:/tags/TiddlerInfo/Advanced + +\define lingo-base() $:/language/TiddlerInfo/Advanced/CascadeInfo/ +<$let infoTiddler=<<currentTiddler>>> + +''<<lingo Heading>>'' + +<table class="tc-max-width"> +<thead> +<$list filter="[[View]] [[Active Cascade Filter]] [[Template]]" variable="heading"> +<th><<heading>></th> +</$list> +</thead> +<$list filter="[[$:/tags/ViewTemplate]tagging[]]" variable="ViewTemplate"> +<tr> +<$let +view={{{ [<ViewTemplate>]+[split[/]last[]] }}} +tagFilter=`$:/tags/ViewTemplate${ [<view>titlecase[]] }$Filter` +activeCascadeFilterTiddler={{{ [all[shadows+tiddlers]tag<tagFilter>!is[draft]]:filter[<storyTiddler>subfilter{!!text}]+[first[]] }}} +activeCascadeFilter={{{ [<activeCascadeFilterTiddler>get[text]] }}} +activeTemplateTiddler={{{ [<currentTiddler>]:cascade[all[shadows+tiddlers]tag<tagFilter>!is[draft]get[text]] }}} +> +<%if [<activeCascadeFilterTiddler>!is[blank]]%> +<td> +<$link to=<<ViewTemplate>> ><<view>></$link> +</td> +<td> +<$link to=<<activeCascadeFilterTiddler>> /> +</td> +<td style="text-align:center;"> +<$link class="tc-btn-invisible" to=<<activeTemplateTiddler>>><$button class="tc-btn-invisible">{{$:/core/images/file}}</$button></$link> +</td> +<%endif%> +</$let> +</tr> +</$list> +</table> diff --git a/core/wiki/tags/TiddlerInfoAdvanced.tid b/core/wiki/tags/TiddlerInfoAdvanced.tid index 3b400464e9..b305eae557 100644 --- a/core/wiki/tags/TiddlerInfoAdvanced.tid +++ b/core/wiki/tags/TiddlerInfoAdvanced.tid @@ -1,2 +1,2 @@ title: $:/tags/TiddlerInfo/Advanced -list: [[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]] \ No newline at end of file +list: [[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]] [[$:/core/ui/TiddlerInfo/Advanced/CascadeInfo]] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9634-cascade-info-tab.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9634-cascade-info-tab.tid new file mode 100644 index 0000000000..7ccb6fdcc2 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9634-cascade-info-tab.tid @@ -0,0 +1,10 @@ +title: $:/changenotes/5.4.0/#9634 +description: Add "Cascade Details" to the Advanced tab of the Tiddler Info panel +tags: $:/tags/ChangeNote +release: 5.4.0 +change-type: enhancement +change-category: hackability +github-links: https://github.com/Jermolene/TiddlyWiki5/pull/9634 +github-contributors: DesignThinkerer + +The Tiddler Info panel's `Advanced` tab now displays the templates and filters used to render the current tiddler. \ No newline at end of file From bda54b0ad5421e0282a1d396cbe47d14ce5de14c Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Fri, 6 Feb 2026 09:16:34 +0100 Subject: [PATCH 455/458] Adds pointer capture and disabling support to eventcatcher widget (#9609) * feat: eventcatcher with pointer capture support * fix: various cleanups and improvements * chore: lint * chore: lint * docs: updated eventcatcher docs * docs: added changenote * feat: provide access to event properties via JSON blob * fix: added updated utils file * fix: guard against missing nodes and not element nodes --- core/modules/utils/utils.js | 47 +++ core/modules/widgets/eventcatcher.js | 311 +++++++++++++----- .../tiddlers/releasenotes/5.4.0/#9609.tid | 24 ++ ...vent detail variables in eventcatcher.json | 13 + .../tiddlers/widgets/EventCatcherWidget.tid | 154 ++++++--- 5 files changed, 430 insertions(+), 119 deletions(-) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609_impacts_event detail variables in eventcatcher.json diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index d5f2c9df2c..7a091cf00b 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -242,6 +242,53 @@ exports.slowInSlowOut = function(t) { return (1 - ((Math.cos(t * Math.PI) + 1) / 2)); }; +exports.copyObjectPropertiesSafe = function(object) { + const seen = new Set(), + isDOMElement = value => value instanceof Node || value instanceof Window; + + function safeCopy(obj) { + // skip circular references + if(seen.has(obj)) { + return undefined; + } + // primitives and null are safe + if(typeof obj !== "object" || obj === null) { + return obj; + } + // skip DOM elements + if(isDOMElement(obj)) { + return undefined; + } + // copy arrays, preserving positions + if(Array.isArray(obj)) { + return obj.map(item => { + const value = safeCopy(item); + return value === undefined ? null : value; + }); + } + + seen.add(obj); + const copy = {}; + let key, + value; + for(key in obj) { + try { + value = safeCopy(obj[key]); + if(value !== undefined) { + copy[key] = value; + } + } catch(e) { + // silently skip unserializable properties + } + } + return copy; + } + + const result = safeCopy(object); + seen.clear(); + return result; +}; + exports.formatTitleString = function(template,options) { var base = options.base || "", separator = options.separator || "", diff --git a/core/modules/widgets/eventcatcher.js b/core/modules/widgets/eventcatcher.js index 2579858b18..ba1f1e7794 100644 --- a/core/modules/widgets/eventcatcher.js +++ b/core/modules/widgets/eventcatcher.js @@ -39,71 +39,8 @@ EventWidget.prototype.render = function(parent,nextSibling) { this.domNode = domNode; // Assign classes this.assignDomNodeClasses(); - // Add our event handler - $tw.utils.each(this.types,function(type) { - domNode.addEventListener(type,function(event) { - var selector = self.getAttribute("selector"), - matchSelector = self.getAttribute("matchSelector"), - actions = self.getAttribute("$"+type), - stopPropagation = self.getAttribute("stopPropagation","onaction"), - selectedNode = event.target, - selectedNodeRect, - catcherNodeRect, - variables = {}; - // Firefox can fire dragover and dragenter events on text nodes instead of their parents - if(selectedNode.nodeType === 3) { - selectedNode = selectedNode.parentNode; - } - // Check that the selected node matches any matchSelector - if(matchSelector && !$tw.utils.domMatchesSelector(selectedNode,matchSelector)) { - return false; - } - if(selector) { - // Search ancestors for a node that matches the selector - while(!$tw.utils.domMatchesSelector(selectedNode,selector) && selectedNode !== domNode) { - selectedNode = selectedNode.parentNode; - } - // Exit if we didn't find one - if(selectedNode === domNode) { - return false; - } - // Only set up variables if we have actions to invoke - if(actions) { - variables = $tw.utils.collectDOMVariables(selectedNode,self.domNode,event); - } - } - // Execute our actions with the variables - if(actions) { - // Add a variable for the modifier key - variables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event); - // Add a variable for the mouse button - if("button" in event) { - if(event.button === 0) { - variables["event-mousebutton"] = "left"; - } else if(event.button === 1) { - variables["event-mousebutton"] = "middle"; - } else if(event.button === 2) { - variables["event-mousebutton"] = "right"; - } - } - variables["event-type"] = event.type.toString(); - if(typeof event.detail === "object" && !!event.detail) { - $tw.utils.each(event.detail,function(detailValue,detail) { - variables["event-detail-" + detail] = detailValue.toString(); - }); - } else if(!!event.detail) { - variables["event-detail"] = event.detail.toString(); - } - self.invokeActionString(actions,self,event,variables); - } - if((actions && stopPropagation === "onaction") || stopPropagation === "always") { - event.preventDefault(); - event.stopPropagation(); - return true; - } - return false; - },false); - }); + // Add our event handlers + this.toggleListeners(); // Insert element parent.insertBefore(domNode,nextSibling); this.domNodes.push(domNode); @@ -122,11 +59,232 @@ EventWidget.prototype.execute = function() { self.types.push(key.slice(1)); } }); + this.pointerCaptureMode = this.getAttribute("pointerCapture","no"); this.elementTag = this.getAttribute("tag"); // Make child widgets this.makeChildWidgets(); }; +/* +Cache and pre-create all event listeners, called when first needed +*/ +EventWidget.prototype.cacheEventListeners = function() { + if(this._eventListeners) { + return; + } + this._eventListeners = Object.create(null); + this._captureActiveListeners = Object.create(null); + this._dynamicOnlyEvents = ["pointerup","pointercancel","pointermove"]; + + const clearPointerCapture = event => { + if(Number.isInteger(this._capturePointerId)) { + this.stopPointerCapture(this._capturePointerId); + } + }; + + const attachDynamicOnlyListeners = () => { + this._dynamicOnlyEvents.forEach(dt => { + const listener = this._eventListeners[dt]; + if(listener) { + this._captureActiveListeners[dt] = listener; + this.domNode.addEventListener(dt, listener, false); + } + }); + }; + + // Dynamic pointer capture listeners + if(this.pointerCaptureMode === "dynamic") { + ["pointerup","pointercancel"].forEach(type => { + this._eventListeners[type] = event => { + const selectedNode = this.checkEvent(event, type); + if(selectedNode) { + clearPointerCapture(event); + } + // Remove dynamic-only listeners + this.cleanupDynamicListeners(); + return this.handleEvent(event, type, selectedNode); + }; + }); + if(!this.types.includes("pointerdown")) { + this.types.push("pointerdown"); + } + } + + // Create any listeners not already defined above + this.types.forEach(type => { + if(!this._eventListeners[type]) { + this._eventListeners[type] = event => { + const selectedNode = this.checkEvent(event, type); + if(!selectedNode) { + return false; + } + // Handle pointer capture for pointerdown + if(type === "pointerdown") { + if(this.pointerCaptureMode !== "no") { + this.startPointerCapture(event.pointerId, event.target); + } + + if(this.pointerCaptureMode === "dynamic") { + attachDynamicOnlyListeners(); + } + } else if(type === "pointerup" || type === "pointercancel") { + clearPointerCapture(event); + } + return this.handleEvent(event, type, selectedNode); + }; + } + }); +}; + +/* +Check if an event qualifies and return the matching selected node +*/ +EventWidget.prototype.checkEvent = function(event, type) { + const domNode = this.domNode; + let node = event.target; + + // Use capture target if valid + if(this._captureTarget && event.pointerId !== undefined) { + if(document.contains(this._captureTarget)) { + node = this._captureTarget; + } else { + // Clear stale reference + this.stopPointerCapture(this._capturePointerId); + node = event.target; + } + } + + if(node && node.nodeType === 3) { + node = node.parentNode; + } + if(!node || node.nodeType !== 1) { + return null; + } + + const selector = this.getAttribute("selector"), + matchSelector = this.getAttribute("matchSelector"); + + if(matchSelector && !node.matches(matchSelector)) { + return null; + } + if(selector) { + const match = node.closest(selector); + if(!match || match === domNode || !domNode.contains(match)) { + return null; + } + return match; + } + return node; +}; + +/* +Handle the event and execute actions +*/ +EventWidget.prototype.handleEvent = function(event, type, selectedNode) { + if(!selectedNode) { + return false; + } + let actions = this.getAttribute("$"+type), + stopPropagation = this.getAttribute("stopPropagation","onaction"); + + if(actions) { + let variables = $tw.utils.extend( + {}, + $tw.utils.collectDOMVariables(selectedNode, this.domNode, event), + { + "eventJSON": JSON.stringify($tw.utils.copyObjectPropertiesSafe(event)), + "modifier": $tw.keyboardManager.getEventModifierKeyDescriptor(event), + "event-type": event.type.toString() + } + ); + + if("button" in event) { + const mouseButtonMap = {0:"left",1:"middle",2:"right"}; + variables["event-mousebutton"] = mouseButtonMap[event.button]; + } + this.invokeActionString(actions, this, event, variables); + } + + if((actions && stopPropagation === "onaction") || stopPropagation === "always") { + event.preventDefault(); + event.stopPropagation(); + return true; + } + return false; +}; + +EventWidget.prototype.startPointerCapture = function(pointerId, captureTarget) { + // Start capture only if none active; pointerId can be 0 + if(!Number.isInteger(this._capturePointerId) && this.domNode && this.domNode.setPointerCapture) { + this.domNode.setPointerCapture(pointerId); + this._capturePointerId = pointerId; + this._captureTarget = captureTarget; + } +}; + +EventWidget.prototype.stopPointerCapture = function(pointerId) { + if(this.domNode && this.domNode.hasPointerCapture && this.domNode.hasPointerCapture(pointerId)) { + this.domNode.releasePointerCapture(pointerId); + } + this._capturePointerId = undefined; + this._captureTarget = undefined; +}; + +/* +Attach all relevant listeners +*/ +EventWidget.prototype.attachListeners = function() { + this.cacheEventListeners(); + const domNode = this.domNode; + Object.keys(this._eventListeners).forEach(type => { + if(this.pointerCaptureMode === "dynamic" && this._dynamicOnlyEvents.includes(type)) { + return; //skip dynamic-only events + } + domNode.addEventListener(type, this._eventListeners[type], false); + }); +}; + +/* +Remove dynamic active listeners +*/ +EventWidget.prototype.cleanupDynamicListeners = function() { + const domNode = this.domNode; + Object.keys(this._captureActiveListeners || {}).forEach(type => { + domNode.removeEventListener(type, this._captureActiveListeners[type], false); + }); + this._captureActiveListeners = Object.create(null); +}; + +/* +Remove all listeners +*/ +EventWidget.prototype.removeAllListeners = function() { + if(Number.isInteger(this._capturePointerId)) { + this.stopPointerCapture(this._capturePointerId); + } + const domNode = this.domNode; + Object.keys(this._eventListeners || {}).forEach(type => { + domNode.removeEventListener(type, this._eventListeners[type], false); + }); + this.cleanupDynamicListeners(); + this._captureTarget = null; +}; + +/* +Enable or disable listeners +*/ +EventWidget.prototype.toggleListeners = function() { + let disabled = this.getAttribute("disabled","no") === "yes"; + if(disabled) { + this.removeAllListeners(); + } else { + this.attachListeners(); + } +}; + +/* +Assign DOM node classes +*/ EventWidget.prototype.assignDomNodeClasses = function() { var classes = this.getAttribute("class","").split(" "); classes.push("tc-eventcatcher"); @@ -134,18 +292,23 @@ EventWidget.prototype.assignDomNodeClasses = function() { }; /* -Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering +Refresh widget */ EventWidget.prototype.refresh = function(changedTiddlers) { - var changedAttributes = this.computeAttributes(), - changedAttributesCount = $tw.utils.count(changedAttributes); - if(changedAttributesCount === 1 && changedAttributes["class"]) { - this.assignDomNodeClasses(); - } else if(changedAttributesCount > 0) { - this.refreshSelf(); - return true; + const changedAttributes = this.computeAttributes(), + changedKeys = Object.keys(changedAttributes), + canUpdateAttributes = changedKeys.every(key => key === "class" || key === "disabled"); + if(canUpdateAttributes) { + if(changedAttributes["class"]) { + this.assignDomNodeClasses(); + } + if(changedAttributes["disabled"]) { + this.toggleListeners(); + } + return this.refreshChildren(changedTiddlers); } - return this.refreshChildren(changedTiddlers); + this.refreshSelf(); + return true; }; exports.eventcatcher = EventWidget; diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609.tid new file mode 100644 index 0000000000..05c6f9fa3f --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609.tid @@ -0,0 +1,24 @@ +change-category: widget +change-type: enhancement +created: 20260125124838970 +description: adds support for pointer capture and enabling/disabling the widget +github-contributors: saqimtiaz +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9609 +modified: 20260125202924515 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9609 +type: text/vnd.tiddlywiki + +The [[EventCatcher|EventCatcherWidget]] widget has been updated to provide: + +1. ''Optional Pointer Capture Support'' + Adds native pointer capture handling to improve pointer event reliability and tracking outside the widget DOM nodes boundaries. When enabled, pointer events such as `pointermove`, `pointerup`, and `pointercancel` are correctly captured and routed to the widget, even if the pointer moves off-screen or outside the element. + The pointer capture logic supports two modes of event listener attachment for better performance and control. + +2. ''Widget Enable/Disable Control'' + Adds a new attribute to enable or disable the ~EventCatcher widget at runtime. This allows users to temporarily deactivate event handling without removing the widget or disrupting the DOM structure, enhancing flexibility for dynamic UIs. + +3. Access to event properties via the variable `eventJSON` in actions. + +4. Deprecation of the error-prone event-detail* variables in favour of using the new `eventJSON` variable. \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609_impacts_event detail variables in eventcatcher.json b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609_impacts_event detail variables in eventcatcher.json new file mode 100644 index 0000000000..14d717c974 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9609_impacts_event detail variables in eventcatcher.json @@ -0,0 +1,13 @@ +[ + { + "created": "20260125202948362", + "text": "", + "title": "$:/changenotes/5.4.0/#9609/impacts/event detail variables in eventcatcher", + "modified": "20260125203132149", + "tags": "$:/tags/ImpactNote", + "type": "text/vnd.tiddlywiki", + "changenote": "$:/changenotes/5.4.0/#9609", + "description": "`event-detail*` variables have been removed in favour of the new `eventJSON` variable", + "impact-type": "compatibility-break " + } +] \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid b/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid index 41a1420699..5c2371fe0c 100644 --- a/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid @@ -1,5 +1,5 @@ created: 20201123113532200 -modified: 20250817151316712 +modified: 20260125202715594 tags: Widgets TriggeringWidgets title: EventCatcherWidget type: text/vnd.tiddlywiki @@ -12,14 +12,16 @@ type: text/vnd.tiddlywiki The event catcher widget traps DOM-initiated Javascript events dispatched within its child content, and allows invoking a series of ActionWidgets in response to those events. +Use of the event catcher widget is beneficial when using large numbers of other trigger widgets such as the ButtonWidget is causing performance problems. The workflow it enables is akin to what is referred to as "event delegation" in JavaScript parlance. + In order for the events to be trapped: -* The event must be of one of the events specified in the event catcher widget's `events` attribute +* The event must be of one of the events specified in the event catcher widget's attributes * The event must target a DOM node with an ancestor that matches the widget's `selector` attribute -* <<.from-version "5.2.2">> Optionally, the DOM node targeted by the event must also match the widgets `matchSelector` attribute +* <<.from-version "5.2.2">> Optionally, the DOM node targeted by the event must also match the widget's `matchSelector` attribute * The event must support event bubbling - -Use of the event catcher widget is beneficial when using large numbers of other trigger widgets such as the ButtonWidget is causing performance problems. The workflow it enables is akin to what is referred to as "event delegation" in JavaScript parlance. +* <<.from-version "5.4.0">> The widget must be enabled (`enabled="yes"`) +* <<.from-version "5.4.0">> Pointer events may continue to be trapped outside the widget DOM boundaries if pointer capture is enabled ! Content and Attributes @@ -28,14 +30,54 @@ The content of the `<$eventcatcher>` widget is displayed normally. |!Attribute |!Description | |selector |A CSS selector. Only events originating inside a DOM node with this selector will be trapped | |matchSelector |<<.from-version "5.2.2">> An optional CSS selector. Only events targeting DOM nodes matching this selector will be trapped | -|//{any attributes starting with $}// |<<.from-version "5.2.0">> Each attribute name (excluding the $) specifies the name of an event, and the value specifies the action string to be invoked. For example: `$click=<<clickActions>>` | +|//{any attributes starting with $}// |<<.from-version "5.2.0">> Each attribute name (excluding the $) specifies the name of an event, and the value specifies the action string to be invoked. For example: `$click=<<clickActions>>` | |tag |Optional. The HTML element the widget creates to capture the events, defaults to:<br>» `span` when parsed in inline-mode<br>» `div` when parsed in block-mode | |class |Optional. A CSS class name (or names) to be assigned to the widget HTML element | -|stopPropagation |<<.from-version "5.2.0">> Optional. Set to "always" to always stop event propagation even if there are no corresponding actions to invoke, "never" to never stop event propagation, or the default value "onaction" with which event propagation is only stopped if there are corresponding actions that are invoked. | -|//events// |//(removed – see below)// Space separated list of JavaScript events to be trapped, for example "click" or "click dblclick" | -|//actions-*// |//(removed – see below)// Action strings to be invoked when a matching event is trapped. Each event is mapped to an action attribute name of the form <code>actions-<em>event</em></code> where <code><em>event</em></code> represents the type of the event. For example: `actions-click` or `actions-dblclick` | +|stopPropagation |<<.from-version "5.2.0">> Optional. Set to "always" to always stop event propagation even if there are no corresponding actions to invoke, "never" to never stop event propagation, or the default value "onaction" with which event propagation is only stopped if there are corresponding actions that are invoked | +|enabled |<<.from-version "5.4.0">> Optional. Enables or disables the event catcher widget. Set to "no" to remove all event listeners while keeping the widget’s DOM structure intact. Defaults to "yes" | +|pointerCapture |<<.from-version "5.4.0">> Optional. Enables native pointer capture for pointer events. Possible values are "no", "yes", or "dynamic". Defaults to "no" | +|events |//(removed – see below)// Space separated list of JavaScript events to be trapped, for example "click" or "click dblclick" | +|actions-* |//(removed – see below)// Action strings to be invoked when a matching event is trapped. Each event is mapped to an action attribute name of the form <code>actions-<em>event</em></code> | + +<<.from-version "5.4.0">> The attributes `events` and `actions-*` have been removed as they are no longer needed. Instead you can use attributes starting with `$` where the attribute name (excluding the `$`) specifies the name of the event and the value specifies the action string to be invoked. + +! Pointer Capture + +<<.from-version "5.4.0">> +The `pointerCapture` attribute enables native [[Pointer Events|https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events]] support using `setPointerCapture()`. This allows pointer interactions to continue to be tracked even if the pointer moves outside the widget’s DOM nodes or the browser viewport. + +This is particularly useful for drag-and-drop interfaces, sliders, drawing tools, and other pointer-driven interactions. + +!! Values + +* `no` (default) +Pointer capture is not used. Pointer events are only received while the pointer remains within the widget’s DOM nodes. + +* `yes` +Pointer capture is enabled whenever a `pointerdown` event occurs. All pointer event handlers specified on the widget remain active for the lifetime of the widget. + +* `dynamic` +Pointer capture is enabled only for the duration of an active pointer interaction. +Event handlers for `pointerup`, `pointercancel`, and optionally `pointermove` are attached only while pointer capture is active and are removed when the interaction ends. +This mode minimizes active event listeners and is recommended for performance-sensitive use cases. + +!! Notes + +* Pointer capture only applies to pointer events such as `pointerdown`, `pointermove`, `pointerup`, and `pointercancel` +* Pointer capture does not affect mouse or touch events +* Pointer capture is automatically released on `pointerup` or `pointercancel` + +! Enabling and Disabling the Widget + +<<.from-version "5.4.0">> +The `enabled` attribute allows the event catcher widget to be temporarily disabled without removing it from the DOM. + +When `enabled="no"`: + +* All event listeners are removed +* No actions are invoked +* The widget’s DOM node and child content remain unchanged -<<.from-version "5.4.0">> The attributes `events` and `actions-*` have been removed as they are no longer needed. Instead you can use attributes starting with $ where the attribute name (excluding the $) specifies the name of the event and the value specifies the action string to be invoked. If any attributes with the prefix $ are present then the `types` attribute is ignored. ! Variables @@ -43,16 +85,16 @@ The following variables are made available to the actions: |!Variables |!Description | |`dom-*` |All DOM attributes of the node matching the given selector are made available as variables, with the prefix `dom-` | -|`modifier` |The [[modifier Variable]] contains the Modifier Key held during the event (can be "normal", "ctrl", "shift", "alt" or combinations thereof) | -|`event-mousebutton` |The mouse button (if any) used to trigger the event (can be "left", "right" or "middle"). Note that not all event types support the mousebutton property. <<.infoBox """This property only guarantees to indicate which buttons are pressed during events caused by pressing or releasing one or multiple buttons. As such, it is not reliable for events such as mouseenter, mouseleave, mouseover, mouseout, or mousemove. More details at: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button""">> | -|`event-type` |The type property of the JavaScript event. | -|`event-detail-*` |Any properties in the detail attribute of the event are made available with the prefix `event-detail-` | -|`tv-popup-coords` |A relative co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) | -|`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute co-ordinate string that can be used with the ActionPopupWidget to trigger a popup at the DOM node matching the selector where the event originated (see [[Coordinate Systems]] for more information) | +|`modifier` |The [[modifier Variable]] contains the Modifier Key held during the event | +|`event-mousebutton` |The mouse button (if any) used to trigger the event (can be "left", "right" or "middle") <<.infoBox """This property is only reliable for events caused by pressing or releasing mouse buttons. It is not reliable for mouseenter, mouseleave, mouseover, mouseout, or mousemove. More details at: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button""">> | +|`event-type` |The type property of the JavaScript event. <<.deprecated-since 5.4.0>> Removed in favour of `eventJSON`| +|`event-detail-*` |Any properties in the detail attribute of the event are made available with the prefix `event-detail-`. <<.deprecated-since 5.4.0>> Removed in favour of `eventJSON` | +|`tv-popup-coords` |A relative coordinate string that can be used with the ActionPopupWidget | +|`tv-popup-abs-coords` |<<.from-version "5.2.4">> An absolute coordinate string that can be used with the ActionPopupWidget | |`tv-widgetnode-width` |<<.from-version "5.2.3">> `offsetWidth` of the DOM node created by the eventcatcher widget | |`tv-widgetnode-height` |<<.from-version "5.2.3">> `offsetHeight` of the DOM node created by the eventcatcher widget | |`tv-selectednode-posx` |`x` offset position of the selected DOM node | -|`tv-selectednode-posy` |`y` offset position of the selected DOM node | +|`tv-selectednode-posy` |`y` offset position of the selected DOM node | |`tv-selectednode-width` |`offsetWidth` of the selected DOM node | |`tv-selectednode-height` |`offsetHeight` of the selected DOM node | |`event-fromselected-posx` |`x` position of the event relative to the selected DOM node | @@ -61,37 +103,59 @@ The following variables are made available to the actions: |`event-fromcatcher-posy` |`y` position of the event relative to the event catcher DOM node | |`event-fromviewport-posx` |<<.from-version "5.2.0">> `x` position of the event relative to the viewport | |`event-fromviewport-posy` |<<.from-version "5.2.0">> `y` position of the event relative to the viewport | +|`eventJSON`|<<.from-version "5.4.0">>A stringified JSON object containing string-safe copies of the event’s own properties. Can be accessed using the [[jsonget Operator]]. | ! Example -This example uses the ActionLogWidget and will log the `data-item-id` attribute of the clicked DOM node to the browser's JavaScript [[console|Web Developer Tools]] +This example illustrates how to work with click and right click events: ``` -\define clickactions() -<$action-log item=<<dom-data-item-id>> event=<<event-type>>/> -\end - -\define contextmenu-actions() -<$action-log item=<<dom-data-item-id>> event=<<event-type>>/> -\end - -<$eventcatcher selector=".item" $click=<<clickactions>> $contextmenu=<<contextmenu-actions>> tag="div"> - -<div class="item" data-item-id="item1"> -Click events here will be trapped -</div> - -<div class="item" data-item-id="item2"> -And here too -</div> - -<div data-item-id="item3"> -Not here -</div> - -<div class="item" data-item-id="item4"> -And here -</div> - -</$eventcatcher> +\procedure card-click-actions() +<$action-setfield $tiddler="$:/temp/selected-card" text=<<dom-data-card-id>>/> +\end + +\procedure card-context-actions() +<$action-setfield $tiddler="$:/temp/context-menu" + text=`Showing context menu for card: {{!!card}}` + card=<<dom-data-card-id>> + x=<<event-fromviewport-posx>> + y=<<event-fromviewport-posy>>/> +\end + +<$eventcatcher + selector=".gallery-card" + $click=<<card-click-actions>> + $contextmenu=<<card-context-actions>> + class="card-gallery"> + +<div class="gallery-card" data-card-id="card1" style="border: 1px solid #ccc; padding: 10px; margin: 5px; cursor: pointer;"> + <h3>1: Mountain Landscape</h3> + <p>Click to select, right-click for options</p> +</div> + +<div class="gallery-card" data-card-id="card2" style="border: 1px solid #ccc; padding: 10px; margin: 5px; cursor: pointer;"> + <h3>2: Ocean View</h3> + <p>Click to select, right-click for options</p> +</div> + +<div class="gallery-card" data-card-id="card3" style="border: 1px solid #ccc; padding: 10px; margin: 5px; cursor: pointer;"> + <h3>3: City Skyline</h3> + <p>Click to select, right-click for options</p> +</div> + +</$eventcatcher> + +<!-- Display selected card info --> +<$reveal type="nomatch" state="$:/temp/selected-card" text=""> +<div style="background: #f0f0f0; padding: 10px; margin-top: 10px;"> + <strong>Selected:</strong> {{$:/temp/selected-card}} +</div> +</$reveal> + +<!-- Display context menu info --> +<$reveal type="nomatch" state="$:/temp/context-menu" text=""> +<div style="background: #ffe0e0; padding: 10px; margin-top: 10px;"> + {{$:/temp/context-menu}} +</div> +</$reveal> ``` From 9247a87e112e0d492e98e3204b6ac8011698db96 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston <jeremy@jermolene.com> Date: Fri, 6 Feb 2026 09:09:42 +0000 Subject: [PATCH 456/458] Missing release note for #8810 --- .../tw5.com/tiddlers/releasenotes/5.4.0/#8810.tid | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#8810.tid diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8810.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8810.tid new file mode 100644 index 0000000000..ab19eaa192 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#8810.tid @@ -0,0 +1,12 @@ +title: $:/changenotes/5.4.0/#8810 +description: New plugin for saving DOM nodes as an image +tags: $:/tags/ChangeNote +release: 5.4.0 +change-type: enhancement +change-category: plugin +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/8810 +github-contributors: Jermolene + +The new "dom-to-image" plugin enables almost anything that can be rendered in a web browser to be saved as an image. The motivation is to be able to save maps generated by Leaflet.js as PNG, JPEG or SVG images, which is not natively supported by Leaflet. This plugin uses the library https://github.com/1904labs/dom-to-image-more to provide the underlying functionality. + +Install the plugin from the plugin library in the usual way. From 821dcaf002dbccc24e1aa1148490ad6df2f3c96f Mon Sep 17 00:00:00 2001 From: Saq Imtiaz <saq.imtiaz@gmail.com> Date: Fri, 6 Feb 2026 11:10:47 +0100 Subject: [PATCH 457/458] Ensures that getting variable info for a function doesnt pollute parent widget (#9639) * fix: ensure getting variable info for a function doesnt pollute parent widget * fix: makeFakeWidget should not pollute upstream --- core/modules/widgets/widget.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index b838f53ace..a7cb84e01e 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -151,7 +151,7 @@ Widget.prototype.getVariableInfo = function(name,options) { } else if(variable.isFunctionDefinition) { // Function evaluations params = self.resolveVariableParameters(variable.params,actualParams); - var variables = options.variables || Object.create(null); + var variables = $tw.utils.extend({},options.variables); // Apply default parameter values $tw.utils.each(variable.params,function(param,index) { if(param["default"]) { @@ -343,7 +343,7 @@ Widget.prototype.makeFakeWidgetWithVariables = function(variables) { } } else { opts = opts || {}; - opts.variables = variables; + opts.variables = $tw.utils.extend({},variables,opts.variables); return self.getVariable(name,opts); }; }, From c96d3987125c510e81f402621cc6bdc8696cfd98 Mon Sep 17 00:00:00 2001 From: Mario Pietsch <pmariojo@gmail.com> Date: Fri, 6 Feb 2026 11:11:23 +0100 Subject: [PATCH 458/458] remove empty.hta from tiddlywiki.info build targets (#9633) --- bin/build-site.sh | 1 - editions/de-AT/tiddlywiki.info | 3 +-- editions/de-DE/tiddlywiki.info | 3 +-- editions/empty/tiddlywiki.info | 3 +-- editions/es-ES/tiddlywiki.info | 3 +-- editions/fr-FR/tiddlywiki.info | 3 +-- editions/ja-JP/tiddlywiki.info | 3 +-- editions/ko-KR/tiddlywiki.info | 3 +-- editions/tw5.com/tiddlywiki.info | 3 +-- editions/zh-Hans/tiddlywiki.info | 3 +-- editions/zh-Hant/tiddlywiki.info | 3 +-- 11 files changed, 10 insertions(+), 21 deletions(-) diff --git a/bin/build-site.sh b/bin/build-site.sh index a68dc0752b..4ad1c1bcd6 100755 --- a/bin/build-site.sh +++ b/bin/build-site.sh @@ -120,7 +120,6 @@ node $TW5_BUILD_TIDDLYWIKI \ || exit 1 # /empty.html Empty -# /empty.hta For Internet Explorer # /empty-external-core.html External core empty # /tiddlywikicore-<version>.js Core plugin javascript node $TW5_BUILD_TIDDLYWIKI \ diff --git a/editions/de-AT/tiddlywiki.info b/editions/de-AT/tiddlywiki.info index 55c72204f2..91425fd935 100755 --- a/editions/de-AT/tiddlywiki.info +++ b/editions/de-AT/tiddlywiki.info @@ -20,8 +20,7 @@ "index": [ "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico"], "static": [ diff --git a/editions/de-DE/tiddlywiki.info b/editions/de-DE/tiddlywiki.info index 5c0224f628..9dfa3853dd 100755 --- a/editions/de-DE/tiddlywiki.info +++ b/editions/de-DE/tiddlywiki.info @@ -24,8 +24,7 @@ "index": [ "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/de-AT-DE/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico"], "static": [ diff --git a/editions/empty/tiddlywiki.info b/editions/empty/tiddlywiki.info index c754aad8ae..034cca0ec0 100644 --- a/editions/empty/tiddlywiki.info +++ b/editions/empty/tiddlywiki.info @@ -10,8 +10,7 @@ "index": [ "--render","$:/core/save/all","index.html","text/plain"], "empty": [ - "--render","$:/core/save/all","empty.html","text/plain", - "--render","$:/core/save/all","empty.hta","text/plain"], + "--render","$:/core/save/all","empty.html","text/plain"], "emptyexternalcore": [ "--render","$:/core/save/offline-external-js","empty-external-core.html","text/plain", "--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"], diff --git a/editions/es-ES/tiddlywiki.info b/editions/es-ES/tiddlywiki.info index 466e87c019..aa027b845b 100644 --- a/editions/es-ES/tiddlywiki.info +++ b/editions/es-ES/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/es-ES/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/es-ES/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/es-ES/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"], diff --git a/editions/fr-FR/tiddlywiki.info b/editions/fr-FR/tiddlywiki.info index 186c610e62..b608f7237e 100644 --- a/editions/fr-FR/tiddlywiki.info +++ b/editions/fr-FR/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/fr-FR/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/fr-FR/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/fr-FR/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"], diff --git a/editions/ja-JP/tiddlywiki.info b/editions/ja-JP/tiddlywiki.info index 3b41875470..95df29b5f3 100644 --- a/editions/ja-JP/tiddlywiki.info +++ b/editions/ja-JP/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/ja-JP/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/ja-JP/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/ja-JP/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"], diff --git a/editions/ko-KR/tiddlywiki.info b/editions/ko-KR/tiddlywiki.info index 5caf6a0855..07886e1193 100644 --- a/editions/ko-KR/tiddlywiki.info +++ b/editions/ko-KR/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/ko-KR/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/ko-KR/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/ko-KR/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"], diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info index 47de3c4559..8905904c54 100644 --- a/editions/tw5.com/tiddlywiki.info +++ b/editions/tw5.com/tiddlywiki.info @@ -31,8 +31,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--render","$:/core/save/all","index.html","text/plain"], "empty": [ - "--render","$:/editions/tw5.com/download-empty","empty.html","text/plain", - "--render","$:/editions/tw5.com/download-empty","empty.hta","text/plain"], + "--render","$:/editions/tw5.com/download-empty","empty.html","text/plain"], "encrypted": [ "--password", "password", "--render", "$:/core/save/all", "encrypted.html", "text/plain", diff --git a/editions/zh-Hans/tiddlywiki.info b/editions/zh-Hans/tiddlywiki.info index d01c467d3c..9d9ceb11a1 100644 --- a/editions/zh-Hans/tiddlywiki.info +++ b/editions/zh-Hans/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/zh-Hans/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/zh-Hans/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/zh-Hans/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"], diff --git a/editions/zh-Hant/tiddlywiki.info b/editions/zh-Hant/tiddlywiki.info index 908c75fbfb..3621f66803 100644 --- a/editions/zh-Hant/tiddlywiki.info +++ b/editions/zh-Hant/tiddlywiki.info @@ -27,8 +27,7 @@ "--setfield","[tag[external-image]] [tag[external-text]]","text","","text/plain", "--rendertiddler","$:/core/save/all","index.html","text/plain"], "empty": [ - "--rendertiddler","$:/editions/zh-Hant/download-empty","empty.html","text/plain", - "--rendertiddler","$:/editions/zh-Hant/download-empty","empty.hta","text/plain"], + "--rendertiddler","$:/editions/zh-Hant/download-empty","empty.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"],