tag:blogger.com,1999:blog-34517009622710942622024-03-18T02:47:59.222-07:00RebolThis is a blog about Rebol, it's a fantastic free programming language, it permits easily to create complete software with few lines of code. It's cross-platform, so if you write it on Windows, it will work on Linux and Mac, and vice-versa. You can produce also wonderful GUI with just 3 lines of code!Anonymoushttp://www.blogger.com/profile/16436305120668198002noreply@blogger.comBlogger391125tag:blogger.com,1999:blog-3451700962271094262.post-39213532874618345972017-01-02T07:16:00.001-08:002017-01-02T07:17:38.764-08:00Rebol for Linux 64bitWow, Rebol is released also for Linux 64bit: <a href="http://www.rebol.com/downloads.html">http://www.rebol.com/downloads.html</a>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com18tag:blogger.com,1999:blog-3451700962271094262.post-84520169466101378522017-01-02T07:15:00.003-08:002017-01-02T07:17:26.154-08:00Rebol for ARMHello,<br />
I just noticed that Carl Sassenrath released Rebol 2.7.8 for ARM processors.<br />
You may download it from: <a href="http://www.rebol.com/downloads.html">http://www.rebol.com/downloads.html</a>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com4tag:blogger.com,1999:blog-3451700962271094262.post-15563538342088041462014-04-15T05:07:00.002-07:002014-04-15T05:07:19.217-07:00Hunt the WumpusThe following script is a text console game:<br />
<code>WELCOME TO 'HUNT THE WUMPUS' (love that all caps retro look)<br />
<br />
THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM HAS 3 TUNNELS LEADING TO<br />
OTHER ROOMS.<br />
<br />
HAZARDS:<br />
BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM. IF YOU GO THERE,<br />
YOU FALL INTO THE PIT (YOU LOSE!)<br />
SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU GO THERE, A BAT GRABS<br />
YOU AND TAKES YOU TO SOME OTHER ROOM AT RANDOM. (WHICH MAY BE TROUBLESOME)<br />
<br />
WUMPUS: THE WUMPUS IS NOT BOTHERED BY HAZARDS (HE HAS SUCKER FEET AND IS TOO<br />
BIG FOR A BAT TO LIFT). USUALLY HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOU<br />
SHOOTING AN ARROW OR YOU ENTERING HIS ROOM. IF THE WUMPUS WAKES HE MOVES<br />
ONE ROOM (75% chance) OR STAYS STILL (25% chance). AFTER THAT, IF HE IS<br />
WHERE YOU ARE, HE EATS YOU UP AND YOU LOSE!<br />
<br />
YOU: EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW.<br />
MOVING: YOU CAN MOVE ONE ROOM (THROUGH ONE TUNNEL).<br />
ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT.<br />
EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING THE COMPUTER<br />
THE ROOMS YOU WANT THE ARROW TO GO TO. IF THE ARROW CAN'T GO THAT WAY<br />
(I.E. NO TUNNEL) IT MOVES AT RANDOM TO THE NEXT ROOM.<br />
* IF THE ARROW HITS THE WUMPUS, YOU WIN.<br />
* IF THE ARROW HITS YOU, YOU LOSE.<br />
<br />
WARNINGS: WHEN YOU ARE ONE ROOM AWAY FROM A WUMPUS OR HAZARD, THE COMPUTER SAYS:<br />
WUMPUS: 'YOU SMELL A WUMPUS'<br />
BAT : 'YOU HEAR BATS'<br />
PIT : 'YOU FEEL A DRAFT'<br />
<br />
Press <Enter> when you're ready to start the game</code><br />
<br />
Here is the source:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL[<br />
Title: "Hunt the Wumpus"<br />
Date: 20-Jul-2003<br />
File: %wumpus.r<br />
Purpose: "A REBOL version of a retro text game. Just for fun."<br />
Author: "Gregg Irwin"<br />
EMail: greggirwin@acm.org<br />
Version: 1.0.1<br />
Comment: {<br />
I found an old version, in C (by Eric Raymond), which was adapted from<br />
an even older version, in BASIC (by Magnus Olsson), that had been found<br />
in a SIMTEL archive. It's got lineage.<br />
As of 22-Oct-2001, it appears to work, though I haven't traced the<br />
arrow path'ing logic yet, nor made it smart. Arrows can go pretty much<br />
anywhere you tell them and, yes, you can shoot yourself as in the<br />
original.<br />
I tweaked a few strings, but the instructions are almost unscathed.<br />
Ahhh, it takes me back to my Dad's HP85 with the built-in 5 inch<br />
monochrome screen, tape drive, and thermal printer...<br />
}<br />
history: [<br />
1.0.0 22-Mar-2002 [{Initial Release}]<br />
1.0.1 11-Apr-2002 [{Fixed bug where the Wumpus might eat you after you shot him. GSI} ]<br />
]<br />
]<br />
<var class="dt-cmt">; Setup<br />
</var><var class="dt-cmt">; initialize arrow count<br />
</var><var class="dt-cmt">; randomly place bats, pits, wumpus, and player<br />
</var><var class="dt-cmt">; make a working copy of the starting locations.<br />
</var><var class="dt-cmt">; Check-for-hazards<br />
</var><var class="dt-cmt">; Each Turn<br />
</var><var class="dt-cmt">; ask player to move or shoot<br />
</var><var class="dt-cmt">; if shoot<br />
</var><var class="dt-cmt">; check for hit on self and wumpus<br />
</var><var class="dt-cmt">; move wumpus<br />
</var><var class="dt-cmt">; if move<br />
</var><var class="dt-cmt">; check-for-hazards<br />
</var><var class="dt-cmt">; until player dead, wumpus dead, or out of arrows<br />
</var><br />
<var class="dt-set-word">arrow-count:</var> <var class="dt-integer">0</var><br />
<var class="dt-cmt">; indexes into location block<br />
</var><var class="dt-set-word">player:</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">wumpus:</var> <var class="dt-integer">2</var><br />
<var class="dt-set-word">pit-1:</var> <var class="dt-integer">3</var><br />
<var class="dt-set-word">pit-2:</var> <var class="dt-integer">4</var><br />
<var class="dt-set-word">bats-1:</var> <var class="dt-integer">5</var><br />
<var class="dt-set-word">bats-2:</var> <var class="dt-integer">6</var><br />
<var class="dt-function">protect</var> [player wumpus pit-1 pit-2 bats-1 bats-2]<br />
<var class="dt-set-word">start-loc:</var> []<br />
<var class="dt-set-word">loc:</var> []<br />
<var class="dt-set-word">winner:</var> none<br />
<var class="dt-set-word">finished:</var> false<br />
<var class="dt-cmt">; The cave is a dodecahedron. Each block is a room containing the<br />
</var><var class="dt-cmt">; number for the rooms it is connected to.<br />
</var><var class="dt-set-word">cave:</var> [<br />
[<var class="dt-integer">2</var> <var class="dt-integer">5</var> <var class="dt-integer">8</var>] [<var class="dt-integer">1</var> <var class="dt-integer">3</var> <var class="dt-integer">10</var>] [<var class="dt-integer">2</var> <var class="dt-integer">4</var> <var class="dt-integer">12</var>] [<var class="dt-integer">3</var> <var class="dt-integer">5</var> <var class="dt-integer">14</var>] [<var class="dt-integer">1</var> <var class="dt-integer">4</var> <var class="dt-integer">6</var>]<br />
[<var class="dt-integer">5</var> <var class="dt-integer">7</var> <var class="dt-integer">15</var>] [<var class="dt-integer">6</var> <var class="dt-integer">8</var> <var class="dt-integer">17</var>] [<var class="dt-integer">1</var> <var class="dt-integer">7</var> <var class="dt-integer">9</var>] [<var class="dt-integer">8</var> <var class="dt-integer">10</var> <var class="dt-integer">18</var>] [<var class="dt-integer">2</var> <var class="dt-integer">9</var> <var class="dt-integer">11</var>]<br />
[<var class="dt-integer">10</var> <var class="dt-integer">12</var> <var class="dt-integer">19</var>] [<var class="dt-integer">3</var> <var class="dt-integer">11</var> <var class="dt-integer">13</var>] [<var class="dt-integer">12</var> <var class="dt-integer">14</var> <var class="dt-integer">20</var>] [<var class="dt-integer">4</var> <var class="dt-integer">13</var> <var class="dt-integer">15</var>] [<var class="dt-integer">6</var> <var class="dt-integer">14</var> <var class="dt-integer">16</var>]<br />
[<var class="dt-integer">15</var> <var class="dt-integer">17</var> <var class="dt-integer">20</var>] [<var class="dt-integer">7</var> <var class="dt-integer">16</var> <var class="dt-integer">18</var>] [<var class="dt-integer">9</var> <var class="dt-integer">17</var> <var class="dt-integer">19</var>] [<var class="dt-integer">11</var> <var class="dt-integer">18</var> <var class="dt-integer">20</var>] [<var class="dt-integer">13</var> <var class="dt-integer">16</var> <var class="dt-integer">19</var>]<br />
]<br />
<var class="dt-set-word">random-room:</var> <var class="dt-function">does</var> [<var class="dt-function">random</var> <var class="dt-integer">20</var>]<br />
<var class="dt-set-word">random-direction:</var> <var class="dt-function">does</var> [<var class="dt-function">random</var> <var class="dt-integer">3</var>]<br />
<var class="dt-set-word">get-num:</var> <var class="dt-function">func</var> [prompt] [<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-function">try</var> [<var class="dt-function">return</var> <var class="dt-function">to-integer</var> <var class="dt-function">ask</var> prompt] [<var class="dt-function">return</var> <var class="dt-integer">0</var> ]<br />
]<br />
<var class="dt-set-word">print-instructions:</var> <var class="dt-function">does</var> [<br />
<var class="dt-function">print</var> <var class="dt-string">{<br />
WELCOME TO 'HUNT THE WUMPUS' (love that all caps retro look)<br />
THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM HAS 3 TUNNELS LEADING TO<br />
OTHER ROOMS.<br />
HAZARDS:<br />
BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM. IF YOU GO THERE,<br />
YOU FALL INTO THE PIT (YOU LOSE!)<br />
SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU GO THERE, A BAT GRABS<br />
YOU AND TAKES YOU TO SOME OTHER ROOM AT RANDOM. (WHICH MAY BE TROUBLESOME)<br />
WUMPUS: THE WUMPUS IS NOT BOTHERED BY HAZARDS (HE HAS SUCKER FEET AND IS TOO<br />
BIG FOR A BAT TO LIFT). USUALLY HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOU<br />
SHOOTING AN ARROW OR YOU ENTERING HIS ROOM. IF THE WUMPUS WAKES HE MOVES<br />
ONE ROOM (75% chance) OR STAYS STILL (25% chance). AFTER THAT, IF HE IS<br />
WHERE YOU ARE, HE EATS YOU UP AND YOU LOSE!<br />
YOU: EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW.<br />
MOVING: YOU CAN MOVE ONE ROOM (THROUGH ONE TUNNEL).<br />
ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT.<br />
EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING THE COMPUTER<br />
THE ROOMS YOU WANT THE ARROW TO GO TO. IF THE ARROW CAN'T GO THAT WAY<br />
(I.E. NO TUNNEL) IT MOVES AT RANDOM TO THE NEXT ROOM.<br />
* IF THE ARROW HITS THE WUMPUS, YOU WIN.<br />
* IF THE ARROW HITS YOU, YOU LOSE.<br />
WARNINGS: WHEN YOU ARE ONE ROOM AWAY FROM A WUMPUS OR HAZARD, THE COMPUTER SAYS:<br />
WUMPUS: 'YOU SMELL A WUMPUS'<br />
BAT : 'YOU HEAR BATS'<br />
PIT : 'YOU FEEL A DRAFT'<br />
}</var><br />
<var class="dt-function">ask</var> <var class="dt-string">"Press <Enter> when you're ready to start the game"</var><br />
]<br />
<var class="dt-set-word">check-for-hazards:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> i] [<br />
<var class="dt-function">print</var> <var class="dt-string">""</var><br />
<var class="dt-function">print</var> [<var class="dt-string">"You are in room "</var> loc/:player]<br />
<var class="dt-function">print</var> [<var class="dt-string">"Tunnels lead to "</var> <var class="dt-function">pick</var> cave loc/:player]<br />
<var class="dt-cmt">; Look at each of the 3 rooms around the player to see if the contain<br />
</var> <var class="dt-cmt">; the wumpus, a pit, or bats.<br />
</var> <var class="dt-function">repeat</var> i <var class="dt-integer">3</var> [<br />
<var class="dt-set-word">room:</var> <var class="dt-function">pick</var> <var class="dt-function">pick</var> cave loc/:player i<br />
<var class="dt-function">if</var> (room <var class="dt-function">=</var> loc/:wumpus) [<var class="dt-function">print</var> <var class="dt-string">" You smell a wumpus!"</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [(room <var class="dt-function">=</var> loc/:pit-1) (room <var class="dt-function">=</var> loc/:pit-2)] [<var class="dt-function">print</var> <var class="dt-string">" You feel a draft!"</var> ]<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [(room <var class="dt-function">=</var> loc/:bats-1) (room <var class="dt-function">=</var> loc/:bats-2)] [<var class="dt-function">print</var> <var class="dt-string">" You hear bats!"</var> ]<br />
]<br />
<var class="dt-function">print</var> <var class="dt-string">""</var><br />
]<br />
<var class="dt-set-word">move-or-shoot?:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> cmd] [<br />
<var class="dt-set-word">cmd:</var> <var class="dt-function">ask</var> <var class="dt-string">"Shoot or move (S/M)? "</var><br />
<var class="dt-cmt">; The default case handles bad inputs and prompts the user again.<br />
</var> <var class="dt-function">switch/default</var> cmd [<br />
<var class="dt-string">"S"</var> [<var class="dt-lit-word">'shoot</var>]<br />
<var class="dt-string">"M"</var> [<var class="dt-lit-word">'move</var>]<br />
][move-or-shoot?]<br />
]<br />
<var class="dt-set-word">move-arrow:</var> <var class="dt-function">func</var> [room <var class="dt-function">path</var> <var class="dt-refinement">/local</var> i rnd-rm] [<br />
<var class="dt-cmt">;print reduce ["move arrow" room tab path] ; FOR DEBUG USE<br />
</var> <var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">tail?</var> <var class="dt-function">path</var> [<br />
<var class="dt-cmt">; If they gave us a bogus target room, pick a random one.<br />
</var> <var class="dt-function">either</var> <var class="dt-function">find</var> cave/:room <var class="dt-function">first</var> <var class="dt-function">path</var> [<br />
<var class="dt-cmt">; Next room in path is valid<br />
</var> check-for-arrow-hit <var class="dt-function">first</var> <var class="dt-function">path</var><br />
<var class="dt-function">if</var> finished [<var class="dt-function">return</var>]<br />
<var class="dt-cmt">; Recursive call<br />
</var> move-arrow <var class="dt-function">first</var> <var class="dt-function">path</var> <var class="dt-function">next</var> <var class="dt-function">path</var><br />
][<br />
<var class="dt-cmt">; Pick a random direction<br />
</var> <var class="dt-set-word">i:</var> random-direction<br />
check-for-arrow-hit <var class="dt-set-word">rnd-rm:</var> cave/:room/:i<br />
<var class="dt-function">if</var> finished [<var class="dt-function">return</var>]<br />
<var class="dt-cmt">; Recursive call<br />
</var> move-arrow rnd-rm <var class="dt-function">next</var> <var class="dt-function">path</var><br />
]<br />
]<br />
]<br />
<var class="dt-set-word">shoot:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> <var class="dt-function">path</var>] [<br />
<var class="dt-set-word">path:</var> <var class="dt-function">to-block</var> <var class="dt-function">ask</var> <var class="dt-string">"Enter 1 to 5 room numbers for the arrow's path: "</var><br />
move-arrow loc/:player <var class="dt-function">path</var><br />
<var class="dt-function">if</var> <var class="dt-function">not</var> finished [<br />
<var class="dt-function">print</var> <var class="dt-string">"Your arrow missed"</var><br />
move-wumpus<br />
]<br />
<var class="dt-cmt">; See if the Wumpus moved onto the player<br />
</var> <var class="dt-function">if</var> finished [<var class="dt-function">return</var>]<br />
<var class="dt-set-word">arrow-count:</var> arrow-count <var class="dt-function">-</var> <var class="dt-integer">1</var><br />
<var class="dt-function">if</var> (arrow-count <var class="dt-function"><=</var> <var class="dt-integer">0</var>) [<br />
<var class="dt-function">print</var> <var class="dt-function">reduce</var> [newline <var class="dt-string">"You ran out of arrows..."</var>]<br />
<var class="dt-set-word">winner:</var> <var class="dt-lit-word">'wumpus</var><br />
<var class="dt-set-word">finished:</var> true<br />
<var class="dt-function">return</var><br />
]<br />
check-for-hazards<br />
]<br />
<var class="dt-set-word">check-for-arrow-hit:</var> <var class="dt-function">func</var> [room] [<br />
<var class="dt-function">if</var> (room <var class="dt-function">=</var> loc/:wumpus) [<br />
<var class="dt-function">print</var> <var class="dt-function">reduce</var> [newline <var class="dt-string">"You got the Wumpus!"</var>]<br />
<var class="dt-set-word">winner:</var> <var class="dt-lit-word">'player</var><br />
<var class="dt-set-word">finished:</var> true<br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> (room <var class="dt-function">=</var> loc/:player) [<br />
<var class="dt-function">print</var> <var class="dt-function">reduce</var> [newline <var class="dt-string">"You shot yourself!"</var>]<br />
<var class="dt-set-word">winner:</var> <var class="dt-lit-word">'arrow</var><br />
<var class="dt-set-word">finished:</var> true<br />
<var class="dt-function">return</var><br />
]<br />
]<br />
<var class="dt-cmt">; 75% chance that it will move<br />
</var><var class="dt-set-word">wumpus-moves?:</var> <var class="dt-function">does</var> [<var class="dt-function">either</var> (<var class="dt-function">random</var> <var class="dt-integer">4</var>) <var class="dt-function"><</var> <var class="dt-integer">4</var> [true][false]]<br />
<var class="dt-set-word">move-wumpus:</var> <var class="dt-function">does</var> [<br />
<var class="dt-function">if</var> wumpus-moves? [<var class="dt-set-path">loc/2:</var> <var class="dt-function">pick</var> (<var class="dt-function">pick</var> cave loc/:wumpus) random-direction]<br />
<var class="dt-function">if</var> (loc/:wumpus <var class="dt-function">=</var> loc/:player) [<br />
<var class="dt-set-word">winner:</var> <var class="dt-lit-word">'wumpus</var><br />
<var class="dt-set-word">finished:</var> true<br />
]<br />
]<br />
<var class="dt-set-word">move-player:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/bat-move</var> new-loc <var class="dt-refinement">/local</var> new-player-loc] [<br />
<var class="dt-function">either</var> bat-move [<br />
<var class="dt-set-path">loc/1:</var> new-loc<br />
][<br />
<var class="dt-set-word">new-player-loc:</var> get-num <var class="dt-string">"To which room? "</var><br />
<var class="dt-cmt">; Call recursively, then bail, if bad input<br />
</var> <var class="dt-function">if</var> <var class="dt-function">any</var> [(new-player-loc <var class="dt-function"><</var> <var class="dt-integer">1</var>) (new-player-loc <var class="dt-function">></var> <var class="dt-integer">20</var>)] [<br />
move-player<br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-cmt">; Call recursively, then bail, if illegal move<br />
</var> <var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">find</var> <var class="dt-function">pick</var> cave loc/:player new-player-loc [<br />
<var class="dt-function">print</var> <var class="dt-string">"You can't move there, unless you plan to dig a new tunnel."</var><br />
move-player<br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-cmt">; It was a legal move, so update the player's location.<br />
</var> <var class="dt-function">change</var> <var class="dt-function">at</var> loc player new-player-loc<br />
]<br />
<var class="dt-function">if</var> (loc/:player <var class="dt-function">=</var> loc/:wumpus) [<br />
<var class="dt-function">print</var> <var class="dt-string">"Yikes! You bumped the Wumpus!"</var><br />
move-wumpus<br />
<var class="dt-cmt">; See if the Wumpus moved onto the player<br />
</var> <var class="dt-function">if</var> finished [<var class="dt-function">return</var>]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [(loc/:player <var class="dt-function">=</var> loc/:pit-1) (loc/:player <var class="dt-function">=</var> loc/:pit-2) ] [<br />
<var class="dt-function">print</var> <var class="dt-function">reduce</var> [newline <var class="dt-string">"Aaiiiiieeeee....(you fell in a pit)"</var>]<br />
<var class="dt-set-word">winner:</var> <var class="dt-lit-word">'pit</var><br />
<var class="dt-set-word">finished:</var> true<br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [(loc/:player <var class="dt-function">=</var> loc/:bats-1) (loc/:player <var class="dt-function">=</var> loc/:bats-2) ] [<br />
<var class="dt-function">print</var> <var class="dt-string">"ZAP! Super-Bat snatch! Elsewhereville for you!"</var><br />
move-player/bat-move random-room<br />
<var class="dt-function">return</var><br />
]<br />
check-for-hazards<br />
]<br />
<var class="dt-cmt">; This is ugly, but it works for now and avoids setup collisions.<br />
</var><var class="dt-cmt">; Don't really need items for this, but I'd like to improve it and then I might.<br />
</var><var class="dt-set-word">init-locations:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> items avail-rooms result offset] [<br />
<var class="dt-function">random/seed</var> <var class="dt-function">now/time/precise</var><br />
<var class="dt-set-word">items:</var> [player wumpus pit-1 pit-2 bats-1 bats-2]<br />
<var class="dt-set-word">avail-rooms:</var> <var class="dt-function">copy</var> [<var class="dt-integer">1</var> <var class="dt-integer">2</var> <var class="dt-integer">3</var> <var class="dt-integer">4</var> <var class="dt-integer">5</var> <var class="dt-integer">6</var> <var class="dt-integer">7</var> <var class="dt-integer">8</var> <var class="dt-integer">9</var> <var class="dt-integer">10</var> <var class="dt-integer">11</var> <var class="dt-integer">12</var> <var class="dt-integer">13</var> <var class="dt-integer">14</var> <var class="dt-integer">15</var> <var class="dt-integer">16</var> <var class="dt-integer">17</var> <var class="dt-integer">18</var> <var class="dt-integer">19</var> <var class="dt-integer">20</var>]<br />
<var class="dt-set-word">result:</var> <var class="dt-function">make</var> <var class="dt-datatype">block!</var> <var class="dt-function">length?</var> items<br />
<var class="dt-function">repeat</var> i <var class="dt-function">length?</var> items [<br />
<var class="dt-cmt">; Too dense for one line?<br />
</var> <var class="dt-cmt">;append result pick avail-rooms offset: random length? avail-rooms<br />
</var> <var class="dt-set-word">offset:</var> <var class="dt-function">random/secure</var> <var class="dt-function">length?</var> avail-rooms<br />
<var class="dt-function">append</var> result <var class="dt-function">pick</var> avail-rooms offset<br />
<var class="dt-function">remove</var> <var class="dt-function">at</var> avail-rooms offset<br />
]<br />
<var class="dt-function">return</var> result<br />
]<br />
<var class="dt-set-word">setup:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/same-as-last</var>] [<br />
<var class="dt-cmt">; Initialize arrow count.<br />
</var> <var class="dt-set-word">arrow-count:</var> <var class="dt-integer">5</var><br />
<var class="dt-cmt">; If we haven't setup before, or they want the same setup,<br />
</var> <var class="dt-cmt">; there's no need to initialize.<br />
</var> <var class="dt-function">if</var> <var class="dt-function">any</var> [(<var class="dt-function">not</var> same-as-last) (start-loc <var class="dt-function">=</var> none)] [<br />
<var class="dt-cmt">; Randomly place bats, pits, wumpus, and player<br />
</var> <var class="dt-set-word">start-loc:</var> init-locations<br />
]<br />
<var class="dt-cmt">; Make a working copy of the starting locations.<br />
</var> <var class="dt-set-word">loc:</var> <var class="dt-function">copy</var> start-loc<br />
]<br />
<var class="dt-set-word">do-game:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/same-as-last</var>] [<br />
<var class="dt-function">either</var> same-as-last [<br />
setup/same-as-last<br />
][setup ]<br />
check-for-hazards<br />
<var class="dt-function">while</var> [<var class="dt-function">not</var> finished] [<br />
<var class="dt-function">either</var> move-or-shoot? <var class="dt-function">=</var> <var class="dt-lit-word">'shoot</var> [shoot][move-player]<br />
]<br />
<var class="dt-function">print</var> <var class="dt-function">switch</var> winner [<br />
wumpus [<var class="dt-string">"<SNARF> The Wumpus got you!!!"</var>]<br />
player [<var class="dt-string">"<BLARP> The Wumpus will get you next time!"</var>]<br />
pit [<var class="dt-string">"<SPLAT> Better luck next time"</var>]<br />
arrow [<var class="dt-string">"<GLURG> You really should be more careful"</var>]<br />
]<br />
<var class="dt-function">print</var> <var class="dt-string">""</var><br />
]<br />
<var class="dt-set-word">start:</var> <var class="dt-function">does</var> [<br />
<var class="dt-function">if</var> (<var class="dt-function">ask</var> <var class="dt-string">"Would you like instructions (Y/N)? "</var>) <var class="dt-function">=</var> <var class="dt-string">"Y"</var> [<br />
print-instructions<br />
]<br />
<var class="dt-set-word">play:</var> <var class="dt-string">"Y"</var><br />
<var class="dt-set-word">same-setup:</var> <var class="dt-string">"N"</var><br />
<var class="dt-function">while</var> [play <var class="dt-function">=</var> <var class="dt-string">"Y"</var>] [<br />
<var class="dt-function">either</var> same-setup <var class="dt-function">=</var> <var class="dt-string">"N"</var> [<br />
do-game<br />
][do-game/same-as-last ]<br />
<var class="dt-set-word">play:</var> <var class="dt-function">ask</var> <var class="dt-string">"Play again (Y/N)? "</var><br />
<var class="dt-function">if</var> play <var class="dt-function">=</var> <var class="dt-string">"Y"</var> [<br />
<var class="dt-set-word">winner:</var> none<br />
<var class="dt-set-word">finished:</var> false<br />
<var class="dt-set-word">same-setup:</var> <var class="dt-function">ask</var> <var class="dt-string">"Same setup (Y/N)? "</var><br />
]<br />
]<br />
]<br />
start<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com7tag:blogger.com,1999:blog-3451700962271094262.post-17404077195883627412014-04-11T06:16:00.001-07:002014-04-11T06:16:23.746-07:00Native windows requestorsIf you use windows, you may call native windows requestors. The following script permit to to call:<br />
<br />
<code>cscript/alert "This is an alert message"</code><br />
<br />
<a href="http://4.bp.blogspot.com/-7hXpblYgZ5U/U0fpOt8fd9I/AAAAAAAACUo/QcGut8SGkd0/s1600/alert.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-7hXpblYgZ5U/U0fpOt8fd9I/AAAAAAAACUo/QcGut8SGkd0/s320/alert.jpg" /></a><br />
<br />
<code>cscript/request "Do you like Rebol?"</code><br />
<br />
<a href="http://4.bp.blogspot.com/-P-s1NXLuEoM/U0fpsvC3DJI/AAAAAAAACUs/l3h_3oQfuTw/s1600/request.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-P-s1NXLuEoM/U0fpsvC3DJI/AAAAAAAACUs/l3h_3oQfuTw/s320/request.jpg" /></a><br />
<br />
<code>cscript/request-dir</code><br />
<br />
<a href="http://4.bp.blogspot.com/-A3TYv_eDNZQ/U0fqMckxp2I/AAAAAAAACU0/0S0nKNZUz2I/s1600/requestdir.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-A3TYv_eDNZQ/U0fqMckxp2I/AAAAAAAACU0/0S0nKNZUz2I/s320/requestdir.jpg" /></a><br />
<br />
<code>cscript/request-text/prompt "Digit here what you think:"</code><br />
<br />
<a href="http://3.bp.blogspot.com/-WNJ_u1ueCPo/U0fqsX4urjI/AAAAAAAACU8/2auCMfMByyI/s1600/request-text.jpg" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-WNJ_u1ueCPo/U0fqsX4urjI/AAAAAAAACU8/2auCMfMByyI/s320/request-text.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Author: "Ashley G Truter"<br />
File: %win-requestors.r<br />
Date: 29-Jun-2009<br />
Title: "Native Windows requestors"<br />
license: 'public-domain<br />
Purpose: {<br />
A set of four Windows native requestors that approximate and extend the functionality<br />
of the REBOL request* functions.<br />
}<br />
Usage: {<br />
cscript/alert text [string!]<br />
"Flashes an alert message to the user. Waits for a user response."<br />
/title title-text [string!]<br />
cscript/request text [string!]<br />
"Requests an answer to a simple question."<br />
/title title-text [string!]<br />
/ok<br />
/confirm<br />
/type [word!]<br />
cscript/request-dir<br />
"Requests a directory."<br />
/title text [string!]<br />
/dir file [file!]<br />
/no-make "No make option"<br />
cscript/request-text<br />
"Requests a text string be entered."<br />
/title title-text [string!]<br />
/prompt prompt-text [string!]<br />
/default text [string!]<br />
} <br />
]<br />
<var class="dt-set-word">cscript:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<var class="dt-set-word">*script:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [cmd [<var class="dt-datatype">string!</var>] <var class="dt-refinement">/v</var>] [<br />
<var class="dt-function">write</var> <var class="dt-file">%tmp.vbs</var> cmd<br />
<var class="dt-function">call/wait/output/shell</var> <var class="dt-string">"cscript /nologo tmp.vbs"</var> <var class="dt-set-word">v:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-function">delete</var> <var class="dt-file">%tmp.vbs</var><br />
<var class="dt-function">trim/lines</var> v<br />
]<br />
<var class="dt-set-word">alert:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">"Flashes an alert message to the user. Waits for a user response."</var><br />
text [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/title</var> title-text [<var class="dt-datatype">string!</var>]<br />
] [<br />
*script <var class="dt-function">rejoin</var> [<br />
<var class="dt-string">{WScript.Echo MsgBox(}</var><br />
<var class="dt-function">mold</var> text<br />
<var class="dt-string">{,4144,}</var> <var class="dt-cmt">; 4096 + 48<br />
</var> <var class="dt-function">mold</var> <var class="dt-function">any</var> [title-text <var class="dt-string">"Dialog"</var>]<br />
<var class="dt-string">{)}</var><br />
]<br />
true<br />
]<br />
<var class="dt-set-word">request:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">"Requests an answer to a simple question."</var><br />
text [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/title</var> title-text [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/ok</var><br />
<var class="dt-refinement">/confirm</var><br />
<var class="dt-refinement">/type</var> icon [<var class="dt-datatype">word!</var>] <var class="dt-string">"Valid values are: alert, help, info, stop"</var><br />
<var class="dt-refinement">/local</var> v opt<br />
] [<br />
<var class="dt-set-word">opt:</var> <var class="dt-integer">4096</var> <var class="dt-function">+</var> <var class="dt-function">case</var> [ <var class="dt-cmt">; System-Modal<br />
</var> OK [<var class="dt-integer">0</var>] <var class="dt-cmt">; OK,Default-Button-1,Application-Modal<br />
</var> <var class="dt-function">Confirm</var> [<var class="dt-integer">4</var>] <var class="dt-cmt">; Yes-No<br />
</var> true [<var class="dt-integer">3</var>] <var class="dt-cmt">; Yes-No-Cancel<br />
</var> ] <var class="dt-cmt">; 1 OK-Cancel 2 Abort-Retry-Ignore 5 Retry-Cancel<br />
</var> <var class="dt-set-word">opt:</var> opt <var class="dt-function">+</var> <var class="dt-function">switch/default</var> icon [<br />
<var class="dt-function">alert</var> [<var class="dt-integer">48</var>] <var class="dt-cmt">; Exclamation<br />
</var> <var class="dt-function">help</var> [<var class="dt-integer">32</var>] <var class="dt-cmt">; Question<br />
</var> info [<var class="dt-integer">64</var>] <var class="dt-cmt">; Information<br />
</var> stop [<var class="dt-integer">16</var>] <var class="dt-cmt">; Critical<br />
</var> ] [<var class="dt-integer">0</var>]<br />
<var class="dt-cmt">; 256 Default-Button-2<br />
</var> <var class="dt-cmt">; 512 Default-Button-3<br />
</var> <var class="dt-cmt">; 768 Default-Button-4<br />
</var> <var class="dt-set-word">v:</var> *script <var class="dt-function">rejoin</var> [<br />
<var class="dt-string">{WScript.Echo MsgBox(}</var><br />
<var class="dt-function">mold</var> text<br />
<var class="dt-string">{,}</var> opt <var class="dt-string">{,}</var><br />
<var class="dt-function">mold</var> <var class="dt-function">any</var> [title-text <var class="dt-string">"Dialog"</var>]<br />
<var class="dt-string">{)}</var><br />
]<br />
<var class="dt-cmt">; 1 OK<br />
</var> <var class="dt-cmt">; 2 Cancel<br />
</var> <var class="dt-cmt">; 3 Abort<br />
</var> <var class="dt-cmt">; 4 Retry<br />
</var> <var class="dt-cmt">; 5 Ignore<br />
</var> <var class="dt-cmt">; 6 Yes<br />
</var> <var class="dt-cmt">; 7 No<br />
</var> <var class="dt-function">pick</var> <var class="dt-function">reduce</var> [true none <var class="dt-lit-word">'Abort</var> <var class="dt-lit-word">'Retry</var> <var class="dt-lit-word">'Ignore</var> true false] <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> v<br />
]<br />
<var class="dt-set-word">request-dir:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">"Requests a directory."</var><br />
<var class="dt-refinement">/title</var> text [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/dir</var> file [<var class="dt-datatype">file!</var>]<br />
<var class="dt-refinement">/no-make</var> <var class="dt-string">"No make option"</var><br />
<var class="dt-refinement">/local</var> v<br />
] [<br />
<var class="dt-cmt">; &H0001 return-only-fsdirs<br />
</var> <var class="dt-cmt">; &H0002 dont-go-below-domain<br />
</var> <var class="dt-cmt">; &H0004 status-text<br />
</var> <var class="dt-cmt">; &H0008 return-fs-ancestors<br />
</var> <var class="dt-cmt">; &H0010 edit-box<br />
</var> <var class="dt-cmt">; &H0020 validate<br />
</var> <var class="dt-cmt">; &H0200 no-new-folder<br />
</var> <var class="dt-cmt">; &H1000 browse-for-computer<br />
</var> <var class="dt-cmt">; &H2000 browse-for-printer<br />
</var> <var class="dt-cmt">; &H4000 browse-include-files<br />
</var> <var class="dt-function">either</var> <var class="dt-function">empty?</var> <var class="dt-set-word">v:</var> *script <var class="dt-function">rejoin</var> [<br />
<var class="dt-string">{set s=CreateObject("Shell.Application")^/set v=s.BrowseForFolder(0,}</var><br />
<var class="dt-function">mold</var> <var class="dt-function">any</var> [text <var class="dt-string">"Select a directory:"</var>]<br />
<var class="dt-function">either</var> no-make [<var class="dt-string">{,&H0208,}</var>] [<var class="dt-string">{,&H0008,}</var>]<br />
<var class="dt-function">mold</var> <var class="dt-function">either</var> file [<var class="dt-function">to-local-file</var> file] [<var class="dt-string">"c:"</var>]<br />
<var class="dt-string">{)^/WScript.Echo v.ParentFolder.ParseName(v.Title).Path}</var><br />
] [none ] [<var class="dt-function">dirize</var> <var class="dt-function">to-rebol-file</var> v ]<br />
]<br />
<var class="dt-set-word">request-text:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">"Requests a text string be entered."</var><br />
<var class="dt-refinement">/title</var> title-text [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/prompt</var> prompt-text<br />
<var class="dt-refinement">/default</var> text<br />
] [<br />
*script <var class="dt-function">rejoin</var> [<br />
<var class="dt-string">{v=InputBox(}</var><br />
<var class="dt-function">mold</var> <var class="dt-function">any</var> [prompt-text <var class="dt-string">"Enter text below:"</var>]<br />
<var class="dt-string">{,}</var><br />
<var class="dt-function">mold</var> <var class="dt-function">any</var> [title-text <var class="dt-string">"Dialog"</var>]<br />
<var class="dt-string">{,}</var><br />
<var class="dt-function">mold</var> <var class="dt-function">any</var> [text <var class="dt-string">""</var>]<br />
<var class="dt-string">{)^/WScript.Echo v}</var><br />
]<br />
]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com4tag:blogger.com,1999:blog-3451700962271094262.post-1520609996957978232014-04-10T03:50:00.002-07:002014-04-10T03:50:26.771-07:00Wild buttonsHere is a nice example of animated buttons made with Rebol:<br />
<iframe allowfullscreen="" frameborder="0" height="344" src="//www.youtube.com/embed/Db3_mdhunDo" width="459"></iframe><br />
<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "Wild Buttons"<br />
Date: 7-Jun-2001<br />
Version: 1.0.1<br />
File: %wild-buttons.r<br />
Author: "Bohdan Lechnowsky"<br />
Purpose: {To demonstrate some easy visual button effects with REBOL/View.}<br />
Comment: {<br />
^-^-added center-face so title bar displays in Windows<br />
^-^--Larry Palmiter<br />
^-}<br />
Email: larry@ecotope.com<br />
]<br />
<var class="dt-set-word">button:</var> <var class="dt-function">make</var> face [<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">10x10</var>]<br />
<var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<br />
<var class="dt-set-word">color:</var> <var class="dt-tuple">255.255.255</var><br />
<var class="dt-set-word">size:</var> <var class="dt-integer">12</var><br />
<var class="dt-set-word">align:</var> <var class="dt-lit-word">'center</var><br />
<var class="dt-set-word">valign:</var> <var class="dt-lit-word">'center</var><br />
]<br />
<var class="dt-set-word">para:</var> <var class="dt-function">make</var> para []<br />
<var class="dt-set-word">feel:</var> <var class="dt-function">make</var> feel []<br />
]<br />
<var class="dt-set-word">pairs:</var> [<var class="dt-pair">1x1</var> <var class="dt-pair">1x0</var> <var class="dt-pair">1x-1</var> <var class="dt-pair">0x-1</var> <var class="dt-pair">-1x-1</var> <var class="dt-pair">-1x0</var> <var class="dt-pair">-1x1</var> <var class="dt-pair">0x1</var>]<br />
<var class="dt-set-word">epairs:</var> pairs<br />
<var class="dt-set-word">button:</var> <var class="dt-function">make</var> button [<br />
<var class="dt-set-word">feel:</var> <var class="dt-function">make</var> feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face act evt][<br />
<var class="dt-set-word">pairs:</var> <var class="dt-function">next</var> pairs<br />
<var class="dt-set-word">epairs:</var> <var class="dt-function">back</var> epairs<br />
<var class="dt-function">if</var> <var class="dt-function">tail?</var> pairs [<var class="dt-set-word">pairs:</var> <var class="dt-function">head</var> pairs]<br />
<var class="dt-set-path">button/effect:</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'gradient</var> <var class="dt-function">to-pair</var> <var class="dt-function">first</var> pairs <var class="dt-tuple">0.0.255</var>]<br />
<var class="dt-set-path">button/edge/effect:</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'gradient</var> <var class="dt-function">to-pair</var> <var class="dt-function">first</var> epairs <var class="dt-tuple">255.0.0</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">head?</var> epairs [<var class="dt-set-word">epairs:</var> <var class="dt-function">tail</var> pairs]<br />
<var class="dt-function">switch</var> act [up [<var class="dt-function">unview/all</var>]]<br />
<var class="dt-function">show</var> button<br />
]<br />
]<br />
<var class="dt-set-word">rate:</var> <var class="dt-integer">10</var> <var class="dt-cmt">;10 frames per second<br />
</var> <var class="dt-set-word">text:</var> <var class="dt-string">"Rotating gradient - Click me to continue"</var><br />
]<br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> <var class="dt-function">make</var> face [<var class="dt-set-word">size:</var> button/size <var class="dt-set-word">pane:</var> button <var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]]<br />
<var class="dt-set-path">button/text:</var> <var class="dt-string">"No title bar - Click me to continue"</var><br />
<var class="dt-function">view/options</var> <var class="dt-function">center-face</var> <var class="dt-function">make</var> face [<var class="dt-set-word">offset:</var> <var class="dt-pair">3x23</var> <var class="dt-set-word">size:</var> button/size <var class="dt-set-word">pane:</var> button <var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]] <var class="dt-lit-word">'no-title</var><br />
<var class="dt-set-path">button/text:</var> <var class="dt-string">"No title bar or border - Click me to continue"</var><br />
<var class="dt-function">view/options</var> <var class="dt-function">center-face</var> <var class="dt-function">make</var> face [<var class="dt-set-word">size:</var> button/size <var class="dt-set-word">pane:</var> button <var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]] [no-title no-border]<br />
<var class="dt-set-path">button/text:</var> <var class="dt-string">"Window is resizable - Click me to continue"</var><br />
<var class="dt-function">view/options</var> <var class="dt-function">center-face</var> <var class="dt-function">make</var> face [<var class="dt-set-word">size:</var> button/size <var class="dt-set-word">pane:</var> button <var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]] [resize]<br />
<var class="dt-set-word">col:</var> <var class="dt-integer">90</var><br />
<var class="dt-set-word">dir:</var> <var class="dt-integer">40</var><br />
<var class="dt-set-word">stops:</var> [<var class="dt-integer">255</var> <var class="dt-integer">155</var>]<br />
<var class="dt-set-word">button:</var> <var class="dt-function">make</var> button [<br />
<var class="dt-set-word">offset:</var> <var class="dt-pair">0x0</var><br />
<var class="dt-set-word">effect:</var> none<br />
<var class="dt-set-word">image:</var> none<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<br />
<var class="dt-set-word">effect:</var> none<br />
<var class="dt-set-word">image:</var> none<br />
]<br />
<var class="dt-set-word">feel:</var> <var class="dt-function">make</var> feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face act evt][<br />
<var class="dt-set-path">button/edge/color:</var> <var class="dt-function">to-tuple</var> <var class="dt-function">reduce</var> [col <var class="dt-integer">0</var> <var class="dt-integer">0</var>]<br />
<var class="dt-set-path">button/color:</var> <var class="dt-tuple">255.0.0</var> <var class="dt-function">-</var> button/edge/color<br />
<var class="dt-set-word">col:</var> col <var class="dt-function">+</var> dir<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [col <var class="dt-function"><</var> <var class="dt-integer">90</var> col <var class="dt-function">></var> stops/1][<br />
<var class="dt-set-word">dir:</var> <var class="dt-function">negate</var> dir<br />
<var class="dt-function">if</var> col <var class="dt-function"><</var> <var class="dt-integer">90</var> [<br />
<var class="dt-set-word">stops:</var> <var class="dt-function">next</var> stops<br />
<var class="dt-function">if</var> <var class="dt-function">tail?</var> stops [<var class="dt-set-word">stops:</var> <var class="dt-function">head</var> stops]<br />
]<br />
<var class="dt-set-word">col:</var> col <var class="dt-function">+</var> dir<br />
]<br />
<var class="dt-function">switch</var> act [up [<var class="dt-function">unview/all</var>]]<br />
<var class="dt-function">show</var> button<br />
]<br />
]<br />
<var class="dt-set-word">rate:</var> <var class="dt-integer">20</var> <var class="dt-cmt">;20 frames per second<br />
</var> <var class="dt-set-word">text:</var> <var class="dt-string">"Does REBOL/View make your heart race?"</var><br />
]<br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> <var class="dt-function">make</var> face [<var class="dt-set-word">size:</var> button/size <var class="dt-set-word">pane:</var> button <var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com4tag:blogger.com,1999:blog-3451700962271094262.post-64321561228554030462014-04-08T05:19:00.003-07:002014-04-08T05:19:47.725-07:00Web crawlerHere is a web crawler, <b>sites</b> contains all pages read:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "REBOL Web Crawler"<br />
Date: 16-Sep-1999<br />
File: %webcrawler.r<br />
Author: "Bohdan Lechnowsky"<br />
Purpose: {<br />
To crawl the web starting from any site. Does not record<br />
duplicate visits. Saves all links found in 'newlinks.<br />
}<br />
Email: bo@rebol.com<br />
Comments: {<br />
Based on my previous script, %rebol-web-miner.r<br />
}<br />
library: [<br />
level: 'advanced <br />
platform: none <br />
type: 'tool <br />
domain: [web other-net] <br />
tested-under: none <br />
support: none <br />
license: none <br />
see-also: none<br />
]<br />
]<br />
<var class="dt-set-word">find-links:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Finds 'href' links and outputs them as a block"</var><br />
url [<var class="dt-datatype">url!</var>] <var class="dt-string">"The site currently being checked"</var><br />
html [<var class="dt-datatype">string!</var>] <var class="dt-string">"The HTML text to parse"</var><br />
][<br />
<var class="dt-set-word">links:</var> <var class="dt-function">make</var> <var class="dt-datatype">block!</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">site:</var> <var class="dt-function">tail</var> <var class="dt-function">form</var> url<br />
<var class="dt-function">while</var> [(<var class="dt-function">copy/part</var> <var class="dt-set-word">site:</var> <var class="dt-function">back</var> site <var class="dt-integer">1</var>) <var class="dt-function"><></var> <var class="dt-string">"/"</var>][]<br />
<var class="dt-set-word">site:</var> <var class="dt-function">to-url</var> <var class="dt-function">head</var> <var class="dt-function">clear</var> <var class="dt-function">next</var> site<br />
<var class="dt-function">while</var> [<var class="dt-set-word">html:</var> <var class="dt-function">find</var> html <var class="dt-string">"href"</var>] [<br />
<var class="dt-set-word">link:</var> (<var class="dt-function">trim</var> (<var class="dt-function">copy/part</var> (<var class="dt-function">next</var> (<var class="dt-function">find</var> html <var class="dt-string">"="</var>)) (<var class="dt-set-word">html:</var> <var class="dt-function">find</var> html <var class="dt-string">">"</var>)))<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">found?</var> <var class="dt-function">find</var> link <var class="dt-string">"mailto:"</var> [<br />
<var class="dt-set-word">link:</var> <var class="dt-function">trim/with</var> link <var class="dt-string">{"}</var><br />
<var class="dt-function">if</var> (<var class="dt-function">copy/part</var> <var class="dt-function">form</var> link <var class="dt-integer">7</var>) <var class="dt-function"><></var> <var class="dt-string">"http://"</var> [<br />
<var class="dt-set-word">link:</var> <var class="dt-function">head</var> <var class="dt-function">clean-path</var> <var class="dt-function">join</var> site link<br />
]<br />
<var class="dt-function">append</var> links <var class="dt-function">to-url</var> link<br />
]<br />
]<br />
<var class="dt-function">return</var> links<br />
]<br />
<var class="dt-set-word">urls:</var> [<var class="dt-url">http://www.rebol.com/</var>]<br />
<var class="dt-set-word">newlinks:</var> <var class="dt-function">make</var> <var class="dt-datatype">block!</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">sites:</var> <var class="dt-function">make</var> <var class="dt-datatype">block!</var> <var class="dt-integer">0</var><br />
<var class="dt-function">while</var> [true] [<br />
<var class="dt-function">foreach</var> url urls [<br />
<var class="dt-function">either</var> <var class="dt-function">find</var> sites url [<br />
<var class="dt-function">print</var> [url <var class="dt-string">"already visited"</var>]<br />
][<br />
<var class="dt-function">print</var> [<var class="dt-string">" READING"</var> url]<br />
<var class="dt-function">append</var> newlinks url<br />
<var class="dt-function">append</var> sites url<br />
<var class="dt-function">either</var> <var class="dt-function">not</var> <var class="dt-function">error?</var> <var class="dt-function">try</var> [<var class="dt-set-word">read-url:</var> <var class="dt-function">read</var> url] [<br />
<var class="dt-function">foreach</var> link find-links url read-url [<br />
<var class="dt-function">if</var> <var class="dt-function">none?</var> <var class="dt-function">find</var> newlinks link [<br />
<var class="dt-function">append</var> newlinks link<br />
]<br />
]<br />
][<br />
<var class="dt-function">print</var> [<var class="dt-string">" Error reading"</var> url]<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">urls:</var> newlinks<br />
] <br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-75790507417458398132014-04-07T08:07:00.002-07:002014-04-07T08:07:32.555-07:00VID usageEvery rebol user should read this script, it's a guide that cover the most important aspect of rebol: <b>VID</b>. Clicking on the examples, activate them.<br />
<br />
<a href="http://3.bp.blogspot.com/-59-Mq-UQSJo/U0K-7K5KFEI/AAAAAAAACUQ/G88_jJn-5dw/s1600/VID-Usage.jpg" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-59-Mq-UQSJo/U0K-7K5KFEI/AAAAAAAACUQ/G88_jJn-5dw/s320/VID-Usage.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
File: %vid-usage.r<br />
Date: 09-Jan-2004 <br />
Title: "VID Usage"<br />
Purpose: "VID Usage Tutorial with Runnable Examples"<br />
Version: 1.2<br />
Author: "Cybarite"<br />
Source: {<br />
Based on %easy-vid.r by Carl Sassenrath.<br />
Clips from various sites including email that are attributed in the section<br />
}<br />
library: [<br />
level: 'intermediate<br />
platform: 'all<br />
type: [tutorial]<br />
domain: [gui]<br />
tested-under: [view 1.2.8.3.1 on W2K]<br />
support: none<br />
license: none<br />
see-also: none<br />
]<br />
<br />
]<br />
<br />
<var class="dt-function">flash</var> <var class="dt-string">"Fetching image..."</var><br />
<var class="dt-function">read-thru/to</var> <var class="dt-url">http://www.rebol.com/view/demos/palms.jpg</var> <var class="dt-file">%palms.jpg</var><br />
<var class="dt-function">read-thru/to</var> <var class="dt-url">http://www.rebol.com/graphics/reb-logo.gif</var> <var class="dt-file">%rebo-logo.gif</var><br />
<var class="dt-function">read-thru/to</var> <var class="dt-url">http://www.rebol.com/view/bay.jpg</var> <var class="dt-file">%bay.jpg</var><br />
<var class="dt-set-word">pic:</var> <var class="dt-file">%palms.jpg</var><br />
<var class="dt-function">unview</var><br />
<var class="dt-set-word">customer:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<var class="dt-cmt">; this sets a default customer object in case the user does not push the samples in order<br />
</var> <var class="dt-set-word">name:</var> <var class="dt-string">"Rosetta Stone"</var><br />
<var class="dt-set-word">date-of-birth:</var> <var class="dt-date">14-March-1959</var> <br />
]<br />
<var class="dt-function">stylize/master</var> [<var class="dt-set-word">text-note:</var> txt maroon bold] <var class="dt-cmt">; this sets a default for users who run the samples out of order<br />
</var><var class="dt-cmt">; polished is an image that is embedded in this script file<br />
</var><var class="dt-cmt">; so that no outside files need to be loaded.<br />
</var><var class="dt-cmt">; This technique is used in many of the REBOL samples<br />
</var><br />
<var class="dt-set-word">polished:</var> <var class="dt-function">load</var> <var class="dt-binary">#{ <br />
89504E470D0A1A0A0000000D49484452000000670000003808020000006FFB71<br />
8C0000001374455874536F667477617265005245424F4C2F566965778FD91678<br />
0000039B49444154789CCD9BD14E2B310C44F3FFFF521E2AC1C395E00589EF02<br />
5DD8D226713C339EECBD928510A4893D3EF67AB76D7B7E79FEB2D73FAFBDBD1D<br />
36FEEBAF7DBF70FEDABABD0D56F0E1B6E0B6FED7AE81050B2E4F97AF9FED6185<br />
45022048CA2C6920361F1336580B35A63C4E4F12808D378124CE9C81880B186C<br />
14175A1DE9C0C2A2E785B6B64CA62EF6C626330250A932064CB984F3358FA77F<br />
BC7F8CD657685E5FB03415A34B9E3226C1484A1ACA6DB6974597699EFB6C2F4E<br />
C44B92E17454A309F14F348DDD4D5B98195BB2AF6B7E4E545B57FEBAE0415DA0<br />
43EFE62C70B196362285D74C35F0782ECF26A0FC8492E20EAAED6CC35ACE13FC<br />
61646467C69D5715EA4F9D3725B1703BF45AB2768A9D5F59CA6E716E5A747CBF<br />
23D6A7E418C2C53C6EB440FCE803B106E6D94C8AAF4B42694871B9FB237035C8<br />
70E5A0200D4A7E4553E952A6F435BA247DD4B83A5DB18D26AA4D5E39E0CA4107<br />
7B0F86C7F19EC685B5EFE57D28E02E411CC2238C0304B5065D26DCC1DA9A02FC<br />
CE4EBD19A0C58D9BE039179086B6DB20519A1F5C8194071DBB115703B996FF37<br />
4BE0F5AA269B18CFC9C6CC1FC3D5A0D6B62C6AEA112236F38195B88DF12F9C9B<br />
B45B1C6C637B161E1D5BCF6D8807A0437366CB21D90462F2BD3E827C96CB0483<br />
D67B99916407E99E69FD12F46A50C973856268A5DC345259837D8827E00FF890<br />
452D0B5D0D38932F3C65B9614B4F720901B96565DCCBD7236B7C66B650868D08<br />
9BFA26EBB36DCAA5E3B120339E5EBE3B468E6B68FB3041E79229047367ADDC14<br />
F7B376F26B2722024A41998813A04CB91A475C11C9054536473CA3F7365C0D30<br />
9E65A0BA6D5977CFEE030BD626B9E2E5DFE76E51AFF9CADA6308F899C76E756A<br />
03D4796E80532E986D273B71CEA8D81672739E0F1B329F8E999D0D9D04080769<br />
CABC1D21260C2BB8E43D2A9D70BE3A2207D66EA09E5BCAFFB742F9F0A0C37677<br />
222CFE9B7C2865192B3FAC5988E0385747334BD8288041E0DFBF4F2AD44804B4<br />
6DADAF2BE98C5D02458059B3571CA91481B09580A9D6E827B184DD3756D6BF7E<br />
7376F81ED59E46633384296A9A4BA7D4E3B8CBD3E566F1948B754731E0EBC41B<br />
246774BD7BBBCA612D8CA7CC85A7C1ED093B75721DCED1D7E279871668830AE7<br />
B782F5E9FDE4918360C9F666A6F61647F2EDB342A2FA3F6E9B0C8AC2699B9B3F<br />
53847BB992B5707FDE5B6D721EA3EB55E3D8190D8BD998923A68917BE3FEDD32<br />
EE1BDCA216275C1CCFBD0A07F35A40A6CC05A1357E6BF512D26DC470BAC927A3<br />
B0078A42DD22E10000000049454E44AE426082<br />
}</var><br />
<var class="dt-set-word">content:</var> <var class="dt-string">{VID Usage - REBOL Visual Interfaces<br />
===Updates<br />
---09-Jan-2004<br />
* Fixed slider initialize. <br />
* Focus section was not parsed out. --- fixed<br />
* Fixed some text errors for the parsing of ===<br />
---07-Jan-2004<br />
* Revived vid-usage.r <br />
* added more examples from the script library<br />
* manage source as vid-usage.leo an outliner file<br />
---12-August-2001<br />
Added supply examples. See:<br />
!List/Supply<br />
!List With Supplied Data<br />
!Supply List With Scroll<br />
---13-August-2001<br />
!Add Subpanel example ported by Anton<br />
===Caveats<br />
---Work In Progress<br />
This is a work in progress. Whether the progress will continue depends on the feedback.<br />
---All Rights Reserved<br />
The work is based on the documentation of REBOL View provided by REBOL Technology and its mailing list.<br />
All rights to this documentation remain the property of REBOL Technology.<br />
---Plagiarized Examples<br />
Things are shamelessly plagiarized. There are many experts on the mailing list whose work is included here; most notably the examples from the REBOL documentation.<br />
---Approach<br />
The approach that this document uses is to use REBOL/View/VID to demonstrate its abilities and give a visual tutorial. To enable this some changes have been made to the core %easyvid.r program from Carl Sassenrath. A scoll bar was added to the right pane because it was just too difficult to constrain the examples to the screen real estate that was available.<br />
---Order Order<br />
The order of the items needs some work. The easyvid presentation approach today does not allow for the drilling down and expansion of an outline tree which is needed for a large amount of documentation.<br />
The preferred approach is to put a multi-level tree for navigation purposes and then allow navigation up and down the tree. <br />
===To Do<br />
* make this a true outline tree<br />
* re-organize it better<br />
* update as requested and as possible by suggestions on AltME's REBOL world under group EasyVID<br />
* correct numerous flaws<br />
* better scrolling implementation using the updates that have been used in other examples such as Didier's %delete-email.r<br />
* allow clipping to clipboard like AltME does on a row for the source examples<br />
===Introduction to VID<br />
With REBOL/View it's easy and quick to create your own user<br />
interfaces. The purpose of this tutorial is to teach you the<br />
basic concepts or REBOL/View interfaces in about 20 minutes.<br />
VID is REBOL's Visual Interface Dialect. A dialect is an<br />
extension of the REBOL language that makes it easier to express<br />
or describe information, actions, or interfaces. VID is a<br />
dialect that provides a powerful method of describing user<br />
interfaces.<br />
VID is simple to learn and provides a smooth learning curve from<br />
basic user interfaces to sophisticated distributed computing<br />
applications.<br />
---Creating VID Interfaces<br />
VID interfaces are written in plain text. You can use any text<br />
editor to create and edit your VID script. Save your script<br />
as a text file, and run it with REBOL/View.<br />
!Note: Using a word processor like Word or Wordpad is not<br />
recommended because files are not normally saved as text.<br />
If you use a word processor, be sure to save the output<br />
file as text, not as a document (.doc) file.<br />
Recommendation: Look at TextPad from http://www.textpad.com<br />
===Minimal VID Example<br />
Here is a minimal VID example. It creates a window that<br />
displays a short text message. Only one line of code<br />
is required:<br />
view layout [text "Hello REBOL World!"]<br />
You can type this line at the REBOL console prompt, or save<br />
it in a text file and run it with REBOL. If you save it<br />
as a file, the script will also need a REBOL header. The<br />
header tells REBOL that the file contains a script. Here<br />
is an example of the script file with a header:<br />
REBOL [Title: "Example VID Script"]<br />
view layout [text "VID Example!"]<br />
You can also add buttons and other gadgets to the script. The<br />
example below displays a text, list of files, and a button:<br />
view layout [<br />
h2 "File List:"<br />
text-list data read %.<br />
button "Great!"<br />
]<br />
!Click on the examples above to see how they will appear on your<br />
screen. Click on their close box to remove them. All of the<br />
examples that follow can be viewed this way.<br />
===Window Management<br />
The code that displays the examples also shows how to manage the number of windows that are open.<br />
Look at the show-example block in the code near the end of this script.<br />
The location of the example window is also managed here by keeping track of the co-ordinates for the sample. After the sample window is moved, the next use will open at the same location.<br />
===Pre-loaded Images<br />
For this script, the image which represented a Portable Network Graphic<br />
definition of an image is held in the script and loaded.<br />
For a small number of graphics, this can achieve some packaging and<br />
performance benefits.<br />
The image "polished" is used through the script to achieve the polished steel<br />
look that is one the outer frame.<br />
backtile polished orange<br />
button 200x50 "Polished Steel Look" polished <br />
===Two Basic Functions<br />
Two functions are used to create graphical user interfaces<br />
in REBOL: VIEW and LAYOUT.<br />
The LAYOUT function creates a set of graphical objects. These<br />
objects are called faces. You describe faces with words and<br />
values that are put into a block and passed to the LAYOUT function.<br />
The VIEW function displays faces that were previously created by<br />
LAYOUT. The example below shows how the result of<br />
the LAYOUT function is passed to the VIEW function, and the<br />
interface is displayed.<br />
view layout [<br />
text "Layout passes its result to View for display."<br />
button "Ok"<br />
]<br />
Click on the above example to view it.<br />
!Note: the block provided to a layout is not normal REBOL code,<br />
it is a dialect of REBOL. Using a dialect makes it much easier<br />
to express user interfaces.<br />
===Styles<br />
Styles describe faces. The examples above use the text and<br />
button styles to specify a text line and a button. REBOL has<br />
40 predefined face styles. You can also create your own custom<br />
styles. Here are a few example styles:<br />
view layout [<br />
h1 "Style Examples"<br />
box brick 240x2<br />
vtext bold "There are 40 styles built into REBOL."<br />
button "Great"<br />
toggle "Press" "Down"<br />
rotary "Click" "Several" "Times"<br />
choice "Choose" "Multiple" "Items"<br />
text-list 120x80 "this is" "a list" "of text"<br />
across<br />
check<br />
radio radio<br />
led<br />
arrow<br />
below<br />
field "Text Entry"<br />
]<br />
The words like backdrop, banner, box, text, and button are styles.<br />
===Facets<br />
Facets let you modify a style. For instance, you can change the<br />
color, size, text, font, image, edge, background, special<br />
effects, and many other facets of a style.<br />
Facets follow the style name. Here is an example that shows<br />
how you modify the text style to be bold and navy blue:<br />
view layout [txt bold navy "Facets are easy to use."]<br />
The words bold and navy are not styles. They are facets that<br />
modify a style. Facets can appear in any order so you don't<br />
have to remember which goes first. For example, the line<br />
above could be written as:<br />
view layout [txt "Facets are easy to use." navy bold]<br />
Many facets that can be specified. Here is an example that<br />
creates bold red text centered in a black box.<br />
view layout [txt 300 bold red black center "Red Text"]<br />
You can create facets that produce special effects, such<br />
as a gradient colored backdrop behind the text:<br />
view layout [<br />
vtext bold "Wild Thing" effect [gradient 200.0.0 0.0.200]<br />
]<br />
===Custom Styles<br />
Custom styles are shortcuts that save time. When you define a<br />
custom style, the facets you need go into the new style. This<br />
reduces what you need to specify each time you use the style,<br />
and it allows you to modify the look of your interface by<br />
changing the style definitions.<br />
For example, here is a layout that defines a style for red<br />
buttons. The style word defines the new style, followed by<br />
the old style name and its facets.<br />
view layout [<br />
style red-btn button red<br />
text "Testing red button style:"<br />
red-btn "Test"<br />
red-btn "Red"<br />
]<br />
So, if you wanted to create a text style for big, bold,<br />
underlined, yellow, typewriter text:<br />
view layout [<br />
style yell tt 220 bold underline yellow font-size 16<br />
yell "Hello"<br />
yell "This is big old text."<br />
yell "Goodbye"<br />
]<br />
===Master Stylesheet <br />
REBOL holds its styles in a master stylesheet. When you are<br />
sure that you want to share them without having to add the<br />
style sheet line then do it as follows:<br />
First add the style to the master sheet:<br />
button 200x50 "Define text-note as maroon bold text" [stylize/master [<br />
text-note: txt maroon bold <br />
]]<br />
button 200x50 "Define text-note as white italic text" [stylize/master [<br />
text-note: txt white italic <br />
]]<br />
Then invoke it:<br />
view layout [<br />
across<br />
size 200x200<br />
return text-note "This shows a master stylesheet style in use." <br />
return text-note "This shows another usage of the same style."<br />
return text-note "If you want to see the other style displayed, click the Add Style section again and then use the other button"<br />
]<br />
<br />
<br />
===Note About Examples<br />
!From this point forward, all examples will assume that<br />
the view and layout functions are provided. Only the layout<br />
block contents will be shown. To use these examples in your<br />
scripts, you will need to put them in a layout block, as was<br />
shown earlier.<br />
For example, code that is written as:<br />
view layout [button red "Test it"]<br />
will now appear as:<br />
button red "Test it"<br />
===Face Sizes<br />
The size of a face depends on its style. Most styles, such as<br />
buttons, toggles, boxes, checks, text-lists, and fields, have a<br />
convenient default size. Here are some examples.<br />
button "Button"<br />
toggle "Toggle"<br />
box blue<br />
field<br />
text-list<br />
If no size is given, text will automatically compute its size,<br />
and images will use whatever their source size is:<br />
text "Short text line"<br />
text "This is a much longer line of text than that above."<br />
image %palms.jpg<br />
You can change the size of any face by providing a size facet.<br />
The size can be an integer or a pair. An integer specifies<br />
the width of the face. A pair specifies both width and height.<br />
Images will be stretched to fit the size.<br />
button 200 "Big Button"<br />
button 200x100 "Huge Button"<br />
image %palms.jpg 50x50<br />
image %palms.jpg 150x50<br />
===Color Facets<br />
Most styles have a default color. For example the body of<br />
buttons will default to a teal color. To modify the color of<br />
a face, provide a color facet:<br />
button blue "Blue Button"<br />
h2 red "Red Heading"<br />
image %palms.jpg orange<br />
Colors can also be specifed as tuples. Each tuple contains three<br />
numbers: the red, green, and blue components of the color. Each<br />
component can range from 0 to 255. For example:<br />
button 200.0.200 "Red + Blue = Magenta" 200<br />
image %palms.jpg 0.200.200 "Green + Blue"<br />
Some face styles also allow more than one color. The effect of<br />
the color depends on the style. For text styles the first color<br />
will be used for the text and the second color for the background<br />
of the text:<br />
txt "Yellow on red background" yellow red<br />
banner "White on Navy Blue" white navy<br />
For other styles, the body of the face is the first color, and<br />
the second color will be used as its alternate.<br />
button "Multicolor" olive red<br />
toggle "Multicolor" blue orange<br />
===Layout Commands<br />
To drop user interface elements on the canvas according to VIDs <br />
directional layout controls <br />
---Across<br />
You are placing elements in a row orientation<br />
<br />
across <br />
return button "A" button "B" button "C"<br />
return button "D" button "E" button "F"<br />
<br />
---Below<br />
You are placing elements in a column orientation<br />
below <br />
return button "A" button "B" button "C"<br />
return button "D" button "E" button "F"<br />
---Mix<br />
You can mix the directional controls <br />
across <br />
return button "A" button "B" <br />
below button "C" <br />
across button "D" button "E" button "F"<br />
---Padding<br />
The pad keyword creates extra padding between styles. It uses a pair or integer value. When it is an integer, spacing is created either horizontally (across) or vertically (below). When it is a pair, the spacing will be created both horizontal and vertically. The following example illustrates both uses. First, the buttons "one" and "two" are padded with an integer representing 40 pixels in one direction. Then the buttons "three" and "four" are padded with a pair representing 40x40 pixels. <br />
across <br />
button "one" pad 40 button "two" return <br />
button "three" pad 40x40 button "four" <br />
Padding can be negative.<br />
<br />
backtile polished orange<br />
pad 200x200 button "A"<br />
pad -100x-100 button "B"<br />
<br />
---Guide<br />
A guide is a virtual alignment control<br />
title "Buttons Without A Guide" <br />
button "one" button "two" return <br />
button "three" button "four" return <br />
button" five" button "six" <br />
With an implicit guide location<br />
title "Buttons With An Implicit Guide Location" <br />
guide <br />
button "one" button "two" return <br />
button "three" button "four" return <br />
button" five" button "six" <br />
With an explicit guide location<br />
across title "Buttons With An Explicit Guide Location"<br />
guide 55x100 <br />
button "one" button "two" return <br />
button "three" button "four" return <br />
button" five" button "six" <br />
<br />
===Tabstops<br />
Tabs can be used for alignment.<br />
---Across<br />
tabs 200 ; sets tabs every 200 pixels <br />
across button 20 "A" tab button 20 "B" tab button 20 "C" <br />
tabs 100 ; sets tabs every 100 pixels <br />
return button 20 "D" tab button 20 "E" tab button 20 "F"<br />
<br />
---Below<br />
tabs 200 ; sets tabs every 200 pixels <br />
below button 20 "A" tab button 20 "B" tab button 20 "C" <br />
tabs 100 ; sets tabs every 100 pixels <br />
return button 20 "D" tab button 20 "E" tab button 20 "F"<br />
---Explicit Settings<br />
Tabstops can be set at explicit values <br />
tabs [100 124 166 212 300]<br />
across tab button 20 "A" tab button 20 "B" tab button 20 "C" tab button 20 "D"<br />
<br />
===Color Facets<br />
Most styles have a default color. For example the body of<br />
buttons will default to a teal color. To modify the color of<br />
a face, provide a color facet:<br />
button 200 blue "Blue Button"<br />
h2 red "Red Heading"<br />
image polished orange<br />
Colors can also be specifed as tuples. Each tuple contains three<br />
numbers: the red, green, and blue components of the color. Each<br />
component can range from 0 to 255. For example:<br />
button 200.0.200 "Red + Blue = Magenta" 200<br />
image polished 0.200.200 "Green + Blue"<br />
Some face styles also allow more than one color. The effect of the color depends on the style. For text styles the first color will be used for the text and the second color for the background of the text:<br />
txt "Yellow on red background" yellow red<br />
title "White on Navy Blue" white navy<br />
For other styles, the body of the face is the first color, and the second color will be used as its alternate.<br />
button 200 "Multicolor" olive red<br />
toggle 200 "Multicolor" blue orange<br />
From the mailing list, there was a problem reported in changing button color:<br />
view layout [<br />
b: button "New color" [<br />
b/color: random 255.255.255 <br />
show b<br />
]<br />
]<br />
<br />
And the answer was that the gradient of the color was preventing this change from working:<br />
style color-changing-button button 0.0.0 ; new style overwrites gradient effect<br />
b: color-changing-button "New color" [<br />
b/color: random 255.255.255 <br />
show b<br />
]<br />
===Text Facets<br />
Most faces will accept text to be displayed. Even graphical faces can display text. For example, the box and image faces will display text if it is provided:<br />
box blue "Box Face"<br />
image polished "Image Face"<br />
Most button faces will accept more than one text string. The strings will be shown as alternates as the face is selected.<br />
button 200 "Up" "Down"<br />
toggle 200 "Off" "On"<br />
rotary 200 "Red" "Green" "Blue" "Yellow"<br />
choice 200 "Monday" "Tuesday" "Wednesday" "Thursday" "Friday"<br />
text-list 200 "Monday" "Tuesday" "Wednesday" "Thursday" "Friday"<br />
When other datatypes need to be displayed as text, use the form function to convert them first:<br />
button 250 form now<br />
field form first read %.<br />
<br />
===Normal Text Style<br />
Normal text is light on dark and can include a number of facets to set the font, style, color, shadow, spacing, tabbing, and other attributes.<br />
text "Normal"<br />
text "Bold" bold<br />
text "Italic" italic<br />
text "Underline" underline<br />
text "Bold italic underline" bold italic underline<br />
text "Big" font-size 32<br />
text "Serif style text" font-name font-serif<br />
text "Spaced text" font [space: 5x0]<br />
Text also includes these predefined styles:<br />
title "Title" 200<br />
vh1 "vh1"<br />
vh2 "vh2"<br />
vh3 "vh3"<br />
vh4 "vh4"<br />
label "Label"<br />
<br />
<br />
===Document Text Style<br />
Document text is dark on light and can also include a number of facets to set the font, style, color, shadow, spacing, tabbing, and other attributes.<br />
txt "Normal"<br />
txt "Bold" bold<br />
txt "Italic" italic<br />
txt "Underline" underline<br />
txt "Bold italic underline" bold italic underline<br />
txt "Big" font-size 32<br />
txt "Serif style text" font-name font-serif<br />
txt "Spaced text" font [space: 5x0]<br />
Document text also includes these predefined styles:<br />
title "Centered title" 200<br />
h1 "Heading 1"<br />
h2 "Heading 2"<br />
h3 "Heading 3"<br />
h4 "Heading 4"<br />
tt "Typewriter text"<br />
===Text Entry Fields<br />
Text input fields accept text until the enter or tab key is pressed. A text input field can be created with:<br />
field<br />
To make the field larger or smaller, provide a width:<br />
field 30<br />
field 300<br />
Fields will scroll when necessary.<br />
Larger amounts of text can be entered in an area. Areas also accept an enter key and will break lines.<br />
area<br />
You can also specify the area size:<br />
area 160x200<br />
To force the text in an area to wrap rather than scroll horizontally, provide the wrap option:<br />
area wrap<br />
===Text Setting<br />
To set the value of a text field under program control, use /text: e.g.<br />
across backtile polished<br />
return t1: txt 200 "This is some original text"<br />
return f1: field 200 "Some field text" <br />
return a1: area {Some original area text.} wrap 200x80<br />
return button 200 "Change Text" [<br />
t1/text: "Some different text" <br />
f1/text: "Some new field text"<br />
a1/text: {Some wrapping text in the^/ area field to^/ show that this^/ is supported}<br />
show [t1 f1 a1]<br />
]<br />
<br />
===Text Lists<br />
Text lists are easy to create. Here is an example.<br />
text-list "Eureka" "Ukiah" "Mendocino"<br />
You can also provide it as a block:<br />
text-list data ["Eureka" "Ukiah" "Mendocino"]<br />
Almost any type of block can be provided. Here is a list of all the files in your current directory:<br />
text-list data read %.<br />
Here is a list of all the words REBOL has scanned:<br />
text-list data first system/words<br />
===Scrolling Text List<br />
A style to allow maintenance of lists from Brett Handley on the REBOL list:<br />
style updatable-text-list text-list<br />
with [<br />
update-slider: does [<br />
sld/redrag lc / max 1 length? head lines<br />
]<br />
]<br />
tl: updatable-text-list 300x100 data copy system/locale/months<br />
button 300x20 "Delete first entry on the list" [remove tl/data tl/update-slider show tl ]<br />
button 300x20 "Append the 'now' timestamp to list" [append tl/data mold now tl/update-slider show tl ]<br />
===Text List Picked Values<br />
list-of-letters: text-list "a" "b" "c" "d" "e" <br />
button 200 "Pick Item 3" [<br />
clear list-of-letters/picked <br />
append list-of-letters/picked pick list-of-letters/data 3 <br />
show list-of-letters<br />
]<br />
===Images<br />
By default an image will be scaled to fit within a face.<br />
image 60x60 polished<br />
image polished red<br />
Images can be framed in a number of ways:<br />
image 100x100 polished frame blue 5x5<br />
image 100x100 polished bevel<br />
image 100x100 polished ibevel 6x6<br />
Most other faces can accept an image as well as text:<br />
box 100x100 polished<br />
button "Button" polished purple<br />
toggle "Toggle" polished blue red<br />
field bold "This is a field." polished effect [emboss tile]<br />
field bold "This is another field." polished effect [brighten 100]<br />
The image can be provided as a filename, URL, or image data.<br />
===Backdrops<br />
A backdrop can be a color, an effect, an image, or a combination<br />
of the three. For example a backdrop color would be written as:<br />
backdrop navy<br />
title "Color Backdrop" gold<br />
To create a backdrop effect provide it on the line:<br />
backdrop effect [gradient 1x1 0.0.100 100.0.0]<br />
title "Gradient Backdrop" gold<br />
A backdrop image can be a file, URL, or image data:<br />
backdrop polished<br />
title "Image Backdrop" red<br />
The backdrop image can be colorized:<br />
size 400x500 <br />
backdrop polished blue<br />
title "Blue Image Backdrop"<br />
The image can include an effect:<br />
backdrop polished effect [fit gradcol 1x1 100.0.0 0.0.250]<br />
title "Gradient Image Backdrop"<br />
<br />
===Backtile<br />
To make a backdrop use a tile effect there are two options:<br />
backdrop polished effect [tile]<br />
banner "This shows a backdrop with a tile effect"<br />
<br />
or<br />
backtile polished<br />
banner "This demonstrates backtile"<br />
Note the difference between:<br />
size 400x500 <br />
backdrop polished<br />
banner "Here one image is stretched to cover the canvas"<br />
and<br />
size 400x500 <br />
backtile polished<br />
banner "Here one image is repeated to cover the canvas"<br />
<br />
===Effect Facets<br />
A range of effects are supported for faces. All of these effects are performed directly on the face when it is rendered. Here are examples of a few possible effects in top to bottom then left to right order:<br />
style polished-steel image 80x60 polished <br />
polished-steel effect [flip 1x1]<br />
polished-steel effect [rotate 90]<br />
polished-steel effect [reflect 1x1]<br />
polished-steel effect [crop 0x50 120x60 fit]<br />
polished-steel effect [grayscale]<br />
polished-steel effect [invert]<br />
polished-steel effect [difference 200.0.0]<br />
polished-steel effect [tint 80]<br />
return<br />
polished-steel effect [contrast 50]<br />
polished-steel effect [brighten 50]<br />
polished-steel effect [sharpen]<br />
polished-steel effect [blur]<br />
polished-steel effect [colorize 204.0.0]<br />
polished-steel effect [gradcol 1x1 150.0.0 0.0.150]<br />
polished-steel effect [gradmul 0x1 0.100.0]<br />
polished-steel effect [grayscale emboss]<br />
Effects can be used in combination to create other interesting results. However, keep in mind that the computations are performed in real time. If complex combinations are required, a temporary image should be created with the to-image function.<br />
===Actions<br />
An action can be associated with almost any face. To do so, follow the face style with a block:<br />
button "Test" [alert "test"]<br />
The block is used as the body of a function that is passed the face and the current value (if the face has one). For example:<br />
toggle "Toggle" [alert form value] <br />
rotary "A" "B" "C" [alert form value]<br />
text "Click Here" [alert face/text]<br />
If a second block is provide, it is used for the alternate<br />
actions (right key):<br />
button "Click Here" [view/new layout [txt "action"]] [view/new layout [txt "alt-action"]]<br />
Use variables to modify the contents or state of other faces. For example, the slider will update the progress bar:<br />
slider 200x16 [p1/data: value show p1]<br />
p1: progress<br />
!More action on actions needed...<br />
===Show<br />
After the state is changed for a user interface element, it must be re-drawn to be reflected on the user interface canvas.<br />
Accomplish this with the show message.<br />
backtile polished<br />
across <br />
toggle "Toggle State" <br />
[cybernetics?/data: not cybernetics?/data<br />
show cybernetics?] <br />
return label "Are you interested in cybernetics?" cybernetics?: check <br />
One show command can be used for multiple user interface elements<br />
backtile polished orange<br />
across<br />
b1: check label "Red" return<br />
b2: check label "Green" return<br />
button 200 "Change State But No Refresh" [b1/data: not b1/data b2/data: not b2/data] return<br />
button "Show" [show [b1 b2]]<br />
===Hide<br />
A user interface element can also be hidden.<br />
backtile polished orange<br />
across<br />
c1: check <br />
hide-button: button "Hide" [hide c1] return<br />
show-button: button "Show" [show [c1 d2]]<br />
The show-button action tries to show a user interface element 'd2' that does not exist.<br />
REBOL/View ignores these.<br />
===Invisible Faces<br />
To make a button invisible when the view is opened, you can define an invisible button style<br />
This approach sets the show? value to false when the user interface element is initialized.<br />
across<br />
style invisible-button button with [append init [show?: false]]<br />
late-shower: invisible-button "I'm Here" return<br />
return button 200 "Show Invisible Button" [show late-shower]<br />
<br />
This works for the other visible user interface element.<br />
===Focus<br />
A user interface element can programmatically be given the focus.<br />
across backtile polished <br />
button 200 "Set focus to Phone Field" [focus f2] <br />
return label "Name: " f1: field 100 <br />
return label "Phone: " f2: field 100 <br />
return button 200 "Remove focus from Phone Field" [unfocus f2] <br />
return button 200 "Hide the Phone Field" [hide f2] return<br />
---Focus Defect<br />
!Note that the tab function shows a hidden field. I have assumed that this is a defect. If a field is hidden, the tab button should not make it visible. This has been previously sent to feedback.<br />
===Radio Buttons<br />
A radio button is used to make a choice between mutually exclusive values. Your preferred programming language is REBOL or C++ or PL/1 or APL but it is only one of those.<br />
across backtile polished<br />
radio of 'programming-language pad 0x-4 label "REBOL" return<br />
radio of 'programming-language pad 0x-4 label "C++" return<br />
radio of 'programming-language pad 0x-4 label "PL/1" return<br />
radio of 'programming-language pad 0x-4 label "APL" return<br />
To mix two groups of radio buttons on one screen, associate them with their groups using the "of 'word". In the above, the grouping is 'programming-language.<br />
across backtile polished<br />
radio of 'programming-language pad 0x-4 label "Language: REBOL" return<br />
radio of 'programming-language pad 0x-4 label "Language: C++" return<br />
radio of 'editor pad 0x-4 label "Editor: TextPad" return<br />
radio of 'editor pad 0x-4 label "Editor: Notepad" return<br />
The padding in the above is needed to keep the label aligned with the radio button.<br />
across backtile polished orange<br />
radio of 'programming-language pad 0x-4 label "REBOL" return<br />
radio of 'programming-language label "APL" return<br />
<br />
<br />
<br />
<br />
===Radio Button Settings<br />
A radio button is not very useful unless you can find out what its setting is and change that setting under program control.<br />
across backtile polished orange<br />
rebol-radio: radio of 'programming-language [programming-language: 'rebol] pad 0x-4 label "REBOL" return<br />
apl-radio: radio of 'programming-language [programming-language: 'apl] label "APL" return<br />
button 200 "Toggle radio button" [<br />
apl-radio/data: not rebol-radio/data: not rebol-radio/data<br />
show [rebol-radio apl-radio]<br />
]<br />
<br />
===Check Box<br />
---Purpose<br />
A check box is used to allow user interface choices where the choices are not mutually exclusive.<br />
across backtile polished orange<br />
c1: check label "Likes animals" return<br />
c2: check label "Like Monkees" return<br />
c3: check label "Like The Animals"<br />
<br />
---State<br />
A check box is not much good if you can't get and set its state (on or off).<br />
across backtile polished orange<br />
c1: check label "Likes animals" return<br />
c2: check label "Like Monkees" return<br />
<br />
button "Set State" [<br />
c1/data: true <br />
show c1<br />
c2/data: false<br />
show c2<br />
]<br />
<br />
<br />
===Sensor<br />
---Purpose<br />
A sensor is an invisible user interface element. Using a sensor only makes sense in a few instances. <br />
If you want a keycode action where there is no visible user interface element to link the action to then a sensor can be used.<br />
This sensor code adds an Escape or Back or Enter action that will close the window. <br />
sensor 1x1 keycode [#"^M" #" " #"^(back)" #"^(ESC)"] [unview]<br />
Or if you want to make portions of an image 'hot' instead of putting buttons on top of the image, then a sensor will achieve this.<br />
across backtile polished orange<br />
txt "Click on the upper left section of the gray image to invoke the sensor action"<br />
return animage: image 100x100 polished ; here the image is just the polished area<br />
at animage/offset sensor 50x50 [alert "You pushed over the sensor"]<br />
<br />
===Displaying Script Values<br />
If the script has a standard format headings, including custom ones, these can be used in the application by picking them from the system/script/header.<br />
backtile polished<br />
across banner "About"<br />
return text font-size 16 rejoin ["Title: " form system/script/header/title]<br />
return text font-size 16 rejoin ["Originator: " form system/script/header/author] <br />
return text font-size 16 rejoin ["Modifier: " form system/script/header/modifier]<br />
return text font-size 16 rejoin ["Version: " form system/script/header/version]<br />
return text font-size 16 rejoin ["Updated: " form system/script/header/date]<br />
return button "OK" [unview] <br />
===Toggle<br />
A toggle button represents boolean state - either on or off. The button stays down until toggled again.<br />
Colors and text can be paired for "on" and "off" state.<br />
toggle "Up" "Down" red blue<br />
To set the state via program control, use:<br />
across backtile polished<br />
return t1: toggle "Up" "Down" red blue<br />
return button polished 204.0.0 100 "Toggle State" [<br />
t1/state: not t1/state<br />
show t1<br />
]<br />
===Rotary Buttons<br />
Rotary buttons are a different sort of user interface device. They can cause some challenges because the state is what's showing so you have to blindly "toggle" to get to a state that you want. But for quick and easy uses where the user is familiar with the options, they can be handy. If you plan to use them for a long list of items such as shown below, they might give you some usability concerns.<br />
---Example<br />
across backtile polished<br />
rotary data ["First" "Second" "Third"]<br />
---Setting State<br />
across backtile polished<br />
return r1: rotary data (my-options: ["First" "Second" "Third"])<br />
return button 200 "Change Rotary State" [<br />
r1/data: next r1/data<br />
if tail? r1/data [r1/data: head r1/data]<br />
show r1<br />
]<br />
---Example - Usability For Unfamiliar List Contents<br />
The rotary button demonstrated here contains some information unfamiliar to most (Saturn's satellites). Use it to to set the state so that "Calypso" is set. Doable but without knowing the order each re-paint has to be checked to ensure that it is not "Calypso" before clicking again. If you do click past the choice that you want, there is no back function so you have to cycle through again.<br />
return rotary data ["Pan" "Atlas" "Prometheus" "Pandora" "Epimetheus" "Janus" "Mimas" "Enceladus" "Tethys" "Telesto" "Calypso" "Dione" "Helene" "Rhea" "Titan" "Hyperion" "Iapetus" "Phoebe" ]<br />
===Arrows<br />
REBOL/View supports arrows as simple user interface elements. Actions can be associated with them.<br />
---Arrowheads And Actions<br />
By default, the arrow is 20x20<br />
across size 200x100 <br />
backtile polished<br />
at 50x50 arrow left <br />
[alert "You pressed the left arrow"] <br />
[alert "You pushed the alternate button on the left arrow"] <br />
at 70x30 arrow up<br />
at 90x50 arrow right [alert "You pressed the right arrow"]<br />
at 70x70 arrow down<br />
<br />
---Very Sharp Arrows<br />
And with a little work the arrows and boxes can be merged to look sharper. Here is a "sharp at both ends" arrow from the block diagram script by Carl:<br />
origin 0<br />
backcolor white<br />
at 0x0 box 40x40 white effect [arrow rotate 270]<br />
at 110x0 box 40x40 white effect [arrow rotate 90]<br />
at 24x10 box black 100x20<br />
<br />
---Arrow Blend<br />
So that shows you how to make an arrow blend into your background<br />
size 100x100<br />
across backdrop gray<br />
at 50x50 box 40x40 gray effect [arrow rotate 90]<br />
at 40x67 box 25x5 black<br />
<br />
===LED<br />
LEDs would be used to display state (on or off). <br />
Clicking the LED toggles its state and changes its color.<br />
LEDs do not support alternate mouse button actions.<br />
across banner "Light Emitting Diode"<br />
return <br />
l1: led 10x10 [alert "LED left mouse action"] label "Alert status"<br />
l2: led 10x10 [alert "LED left mouse action"] label "Network status"<br />
return button "Change state" [<br />
l1/data: not l1/data<br />
l2/data: not l2/data <br />
show [l1 l2] <br />
]<br />
<br />
===Box<br />
---Boxing<br />
Draw boxes of any heigth and width with the box style<br />
box "Large Box" 200x400 polished orange<br />
<br />
---Boxes As Lines<br />
If you make the box narrow enough or short enough it is a line (or a dot).<br />
across size 300x300 backtile polished<br />
at 50x0 box 3x100 gold<br />
at 0x50 b1: box 100x3 gold<br />
at 10x10 box 5x5 red<br />
<br />
---Boxes Can Grow<br />
across size 300x300 backtile polished<br />
at 150x0 b1: box 100x3 gold<br />
return pad 0x100 button "Grow Down" [<br />
for i 3 300 1 [<br />
b1/size/y: 1 + b1/size/y<br />
wait 00:00:00.01<br />
show b1<br />
]<br />
]<br />
return pad 0x100 button "Back Up" [<br />
for i 300 3 -1 [<br />
b1/size/y: b1/size/y - 1<br />
wait 00:00:00.01<br />
show b1<br />
]<br />
]<br />
You might even find a use for it.<br />
---Grid Effect<br />
Not sure of the use for this yet but here is what you can do:<br />
return box "Grid Lock" with [effect: [grid 20x20 8x8 4x3]] white 300x200<br />
<br />
return box "Grid Lock" with [effect: [grid 20x20 5x5 3x3]] white - 80 300x200<br />
<br />
===Frame<br />
Earlier versions of REBOL VID supported frames in layouts such as<br />
view layout [frame "This is the Bay" %bay.jpg]<br />
These are no longer valid.<br />
But frames can be put around some user interface devices:<br />
image 100x100 polished frame red<br />
<br />
===List<br />
A list is an iterated sub layout and takes a layout block that uses the Visual Interface Dialect. The styles in the layout will be repeated until there is no more room to fit them within the list dimensions.<br />
---Why<br />
A face can be iterated to create a number of virtual faces. For instance, when displaying a list of ten buttons, each of the buttons does not need to be created as a separate object. If the buttons only differ by a few facets (such as position, text, and action taken on selection), a model face can be created and iterated for its other position. This is useful when creating scrolling lists of files and other data sets that share the same appearance. <br />
---Supply<br />
Supply provides the data to the list for an iterated face.<br />
do [cnt: 0<br />
list-collection: [aqua sky water] <br />
]<br />
backtile polished orange<br />
across<br />
list-displayed: list 100x72 [<br />
origin 0 space 0x0 across<br />
color-field: txt bold 80x24<br />
] supply [<br />
if none? one-color: pick list-collection count [exit]<br />
face/text: do pick [one-color] index<br />
]<br />
return txt gold 180 "OK ... but not too useful"<br />
---Supply Columns<br />
Maybe adding some more columns would be better.<br />
Here I'll add a column of buttons that display the color name<br />
and a column of text strings in italic.<br />
do [<br />
cnt: 0<br />
list-collection: [aqua sky water gold silver coffee] <br />
]<br />
backtile polished orange<br />
across<br />
list-displayed: list 300x200 [<br />
origin 0 space 0x0 across<br />
color-field: txt bold 80x24<br />
color-button: button 80x24<br />
pad 5x1<br />
txt 100 italic<br />
] supply [<br />
if none? one-color: pick list-collection count [exit]<br />
face/text: do pick [<br />
[one-color]<br />
[to-string one-color]<br />
[rejoin [" " to-string one-color]]<br />
] index <br />
]<br />
<br />
return txt gold 300 {A bit more interesting but the last row repeats to fill the list size. Some of the other VID components will automatically stretch to fit the size needed (such as this txt field) but the list does not behave that way. You have to make the list size fit its data or make it smaller and add a vertical scroll capability. That is shown a little later on.}<br />
===List With Supplied Data<br />
This example is to show adding action to the list<br />
and adds a horizontal line between the rows.<br />
do [<br />
cnt: 0<br />
list-collection: [aqua sky water gold silver coffee] <br />
]<br />
backtile polished orange<br />
across<br />
list-displayed: list water edge [size: 6x6 color: silver] 350x96 [<br />
origin 0 space 0x0 across<br />
color-field: txt 60 [alert rejoin ["You pressed the " face/text " text field"]]<br />
pad 45x0 <br />
color-button: button 80 [alert rejoin ["You pressed the " face/text " button"]]<br />
pad 5x0<br />
txt 120 italic<br />
return box 350x1 white ; this causes a horizontal line to appear between each row<br />
] supply [<br />
if none? one-color: pick list-collection count [exit]<br />
face/text: do pick [<br />
[one-color]<br />
[to-string one-color]<br />
[rejoin [" " to-string one-color]]<br />
] index <br />
]<br />
===Supply List With Scroll<br />
This example shows a supplied list with a scroll capability.<br />
More colors are added to demonstrate scrolling.<br />
Note that this is a verbose list of code where I added comments<br />
for my understanding of how the scroll was linked to the list.<br />
The same effect can be accomplished with fewer lines of code.<br />
<br />
do [; first this do block creates the data definitions needed.<br />
slider-position-clicked: 0<br />
count: 0 <br />
x: 450<br />
y: 300<br />
row-y: 16 ; the row height includes the data plus any separator lines <br />
list-size: to-pair reduce [x y] ; this is the size of the display list <br />
separator-size: to-pair reduce [x 1]<br />
slider-size: to-pair reduce [24 y ]<br />
list-collection: [<br />
aqua bar-color base-color beige black blue brick brown <br />
button-color coal coffee crimson cyan forest gold gray <br />
green ivory khaki leaf linen magenta main-color maroon <br />
mint navy oldrab olive orange over-color papaya pewter <br />
pink purple rebolor red sienna silver sky snow<br />
tan teal violet water wheat white yellow <br />
] <br />
<br />
supply-style: stylize [<br />
button-fixed: button left coal to-pair reduce [80 row-y] ; these keep the row elements the same height<br />
text-fixed: txt to-pair reduce [160 row-y] <br />
]<br />
<br />
data-size: length? list-collection <br />
]<br />
<br />
backtile polished orange ; this section layouts out the list<br />
<br />
across<br />
list-position: at ; the position is captured here in order to later put the slider beside it<br />
list-displayed: list linen <br />
edge [size: 6x6 color: tan] list-size [<br />
origin 0 space 0x0 across<br />
styles supply-style<br />
text-fixed [alert rejoin ["You pressed the " face/text " text field"]]<br />
button-fixed [alert rejoin ["You pressed the " face/text " button"]]<br />
pad 5x0 <br />
text-fixed 80 italic [alert rejoin ["You pressed the italic " face/text " text field"]]<br />
return box separator-size gray ; this causes a horizontal line to appear between each row<br />
] supply [<br />
count: count + slider-position-clicked <br />
if none? one-color: pick list-collection count [exit]<br />
face/text: <br />
either count > (1 + data-size) <br />
[""]<br />
[<br />
do pick [<br />
[one-color] ; this is supplied to the first txt field (text-fixed)<br />
[to-string one-color] ; this is supplied to the button (button-fixed)<br />
[rejoin [" " to-string one-color " "]] ; this value is supplied to the last text-fixed field<br />
] index <br />
]<br />
]<br />
; now add a slider to the side of the list<br />
at list-position + (list-size * 1x0) ; this finds the top right border of the list widget<br />
vertical-slider: slider slider-size to-integer y / row-y<br />
[<br />
slider-position-clicked: vertical-slider/data ; the slider has to be bound to the size of the list <br />
* ((1 + data-size) - ((y / (1 + row-y)))) ; including the row height<br />
if slider-position-clicked <> count [<br />
count: slider-position-clicked <br />
show list-displayed<br />
]<br />
]<br />
===Slider<br />
A slider is interactive user interface element. The data of a slider varies from 0 to 1.<br />
backtile polished orange across<br />
slider-1: slider 200x40 <br />
return button 200 "Move first slider to 50%" [<br />
slider-1/data: .5 <br />
show slider-1<br />
]<br />
return txt 200 "The second slider in this example is initialized to the 80% mark." <br />
return slider 200x40 with [append init [data: .8]]<br />
<br />
===Progress Indicator<br />
The progress-1 face in this example is a progress indicator. Because it is only displaying information, it is non-interactive i.e. you can not change its value by dragging its edges. The alternate button is not supported on a progress indicator.<br />
backtile polished orange across<br />
slider 200x40 [<br />
progress-1/data: value <br />
field-1/text: join (to-integer (100 * value)) " %"<br />
show [progress-1 field-1]<br />
] <br />
return progress-1: progress<br />
return field-1: field<br />
===Panels <br />
Panels are used to create sub-panes that can be more easily managed by grouping<br />
the user interface devices on a panel. The first example below shows how to use panels for layout alignment. By creating a panel definition, all of the components defined within it are aligned relative to its origin.<br />
across backtile polished brick<br />
tabs 50<br />
return panel-1: panel 250x120 [<br />
backtile polished<br />
across<br />
return button water 200 "Button A"<br />
return button aqua 200 "Button B"<br />
return button sky 200 "Button C" <br />
]<br />
at panel-1/offset + panel-1/size panel 60x90 [; start at the bottom right corner of panel-1<br />
backtile polished<br />
across<br />
return button tan 20 "1"<br />
return button coffee 20 "2"<br />
]<br />
<br />
---Multiple SubPanels example<br />
This example from the REBOL html documentation shows how to easily hide and show sections of a user interface by displaying them on the face area of a box. <br />
do [; define two panels<br />
panel1: layout [<br />
origin 8x8<br />
h2 "Panel 1"<br />
field "Field 1"<br />
field "Field 2"<br />
button "The Answer" [alert "I know nothing."]<br />
]<br />
panel2: layout [<br />
origin 8x8<br />
h2 "Panel 2"<br />
across<br />
txt "X:"<br />
slider 150x16<br />
return<br />
txt "Y:"<br />
slider 150x16<br />
return<br />
check [panel2/color: maroon show panel2]<br />
txt "Don't click this"<br />
return <br />
check [panel2/color: silver show panel2]<br />
txt "Click this" <br />
return<br />
]<br />
panel1/offset: 0x0<br />
panel2/offset: 0x0<br />
]<br />
vh2 "Subpanel Examples" ; now demonstrate panel use<br />
guide<br />
pad 20<br />
button "Panel 1" [panels/pane: panel1 show panels]<br />
button "Panel 2" [panels/pane: panel2 show panels]<br />
button "Quit" [unview]<br />
return<br />
box 2x140 maroon<br />
return<br />
panels: box 220x140<br />
do [panels/pane: panel1]<br />
<br />
===Simple Default Style Override<br />
The style's default look can be overriden easily with one line of code. <br />
For example, to make the default button size 200x200 with a water color, use<br />
style button button 200x200 water<br />
button "Big Blue Button" [unview]<br />
To make the toggle some different default colors:<br />
style toggle toggle crimson sky<br />
toggle "Up" "Down"<br />
Note that these stay in effect until they are overridden so if you use the default values, exercise some care unless you meant to do that. <br />
===Image Maker<br />
An option used by Carl in some of his programs is to let View create specific icons so that you have portability and more control of look of the image then if you referenced an external file such as gif that was a bullet display. Here's how to do that:<br />
do [<br />
make-image: func [xy wh eff] [<br />
eff: layout [<br />
size 20x20 at xy<br />
box wh effect eff<br />
]<br />
eff/color: rebolor<br />
to-image eff<br />
]<br />
dot: make-image 6x5 9x9 [gradient 1x1 255.0.0 0.0.0 oval key 0.0.0]<br />
dot-big: make-image 8x7 12x12 [gradient 1x1 255.0.0 0.0.0 oval key 0.0.0]<br />
arr: make-image 3x3 14x14 [arrow 0.0.127 rotate 90]<br />
ard: make-image 3x3 14x14 [arrow 0.0.127 rotate 180] <br />
] ; end of "do" - it is needed here because easyvid approach is expecting vid dialect commands<br />
banner "Presentation Points"<br />
size 400x300 across<br />
style label label gold ; make a label's text be a different color than the default<br />
return image dot label "This is bullet point number 1" <br />
return image dot label "This is bullet point number 2"<br />
return image arr label "This is arrow point number 1"<br />
return image ard label "This is an arrow making a different point"<br />
return image dot-big pad 0x4 area 300x80 wrap "And because these arrows and dots are images, action can be added to them to make them 'hot' with mouse actions including 'over'."<br />
<br />
===Needs Some Work<br />
!More to come. These still need to be covered in this<br />
tutorial:<br />
text-list data [icon ]<br />
<br />
===Digital Clock<br />
origin 0<br />
banner "00:00:00" rate 1 effect [gradient 0x1 0.0.150 0.0.50]<br />
feel [engage: func [face act evt] [face/text: now/time show face]]<br />
<br />
===REBOL Logo<br />
image %rebo-logo.gif [unview]<br />
===Paint Drops<br />
REBOL one liner by Vincent Ecuyer<br />
b: box rate 9 effect[draw[pen(random snow)circle(random 99x99)2]blur]box 1x1 rate 9 effect[draw[(b/image: to-image b)]]<br />
<br />
===eMailer<br />
One line emailer by Doc Kimbel<br />
Assumes you have set up your email in set-user<br />
e: field "Email" s: field "Subject" m: area "Body" btn "Send"[send/subject to-email e/text m/text s/text alert "ok"]<br />
<br />
===Hello World<br />
text "Hello World!" button "Close" [unview]<br />
===Three Buttons<br />
button "Yes" button "Maybe" button "No"<br />
===View Web Text<br />
text 800x600 read http://www.rebol.com<br />
<br />
===View Image<br />
image %palms.jpg<br />
<br />
===View Image and File Name<br />
Here a do block is used to initialize the file variable within the layout code.<br />
do [file: %palms.jpg]<br />
image file text form file<br />
<br />
<br />
===View Image behind File Name<br />
Here a do block is used to initialize the file variable within the layout code.<br />
do [file: %palms.jpg]<br />
image file form file<br />
<br />
<br />
===Buttons From Images<br />
backdrop 40.70.140<br />
stat: text bold "Click a Button" 100x20 240.140.40 center<br />
button "Bay Test" %bay.jpg 100x100 [<br />
stat/text: "Upper" <br />
show stat<br />
]<br />
button "Blue Test" %bay.jpg 100x100 10.30.180 [<br />
stat/text: "Lower" <br />
show stat<br />
]<br />
===View List<br />
list blue 320x200 [across text white 200 text white 100] data [<br />
["John" 100] <br />
["Joe" 200] <br />
["Martin" 300]<br />
]<br />
===Movie Credits<br />
backdrop %bay.jpg effect [fit]<br />
text center bold 240x30 "REBOL, The Movie" yellow font [size: 16]<br />
credits: text {<br />
Edit This File <br />
To Add Your Own Credits <br />
<br />
It is very simple to do. <br />
Only takes a minute. <br />
Only REBOL Makes It Possible...<br />
} white bold center 240x180 rate 30 para [origin: 0x+100]<br />
feel [engage: func [f a e] [<br />
if a = 'time [f/para/origin: f/para/origin - 0x1 show f]<br />
]<br />
]<br />
===Fire Demo<br />
box 150x150 with [<br />
edge: none<br />
img: image: make image! 150x150<br />
rate: 20<br />
text: "FIREBOLEK"<br />
font: make font [size: 24 color: 255.125.0]<br />
basic: [draw [image make pair! reduce [(random 3) - 2 -1] img]]<br />
effects: reduce [<br />
append copy basic [blur luma -10]<br />
append copy basic [sharpen luma -10 blur]<br />
append copy basic [contrast 10 blur luma -5] <br />
]<br />
effect: first effects<br />
feel: make feel [<br />
engage: func [f a e][<br />
switch a [<br />
down [f/effects: next f/effects if tail? f/effects [f/effects: head f/effects] f/effect: first f/effects show f]<br />
time [show f repeat i f/size/x - 4 [poke f/image (f/size/x * f/size/y) - i - 2 (random 255.0.0 + random 0.127.0) * 3] f/img: to-image f] <br />
] <br />
]<br />
]<br />
]<br />
text 150 {classical fire demo for REBOL^/<br />
press on fire to see other effects.^/ <br />
Written by ReBolek, 2001 in 15 mins.^/<br />
We need new category on Assembly:^/<br />
less-than-kb-demo ;-)} with [font: make font [size: 9]]<br />
===Bezier <br />
Oldes Bezier Line Demo<br />
See script library for %bezier-curve.r<br />
Uses functions and data initialized at script startup<br />
The end points are draggable to change the curve!!!!<br />
Here a do block is used to allow executable lines for initialization purposes.<br />
do [<br />
draw-beziere-curve: has [result pp x0 x1 x2 x3 y0 y1 y2 y3 cx bx ax cy by ay t tx ty s] [<br />
result: make block! 120<br />
pp: p0/size/x / 2<br />
x0: p0/offset/x + pp<br />
y0: p0/offset/y + pp<br />
x1: p1/offset/x + pp<br />
y1: p1/offset/y + pp<br />
x2: p2/offset/x + pp<br />
y2: p2/offset/y + pp <br />
x3: p3/offset/x + pp<br />
y3: p3/offset/y + pp<br />
insert result compose [<br />
pen 155.0.0<br />
line (p0/offset + pp) (p1/offset + pp)<br />
line (p2/offset + pp) (p3/offset + pp)<br />
pen 255.255.255 line (p0/offset + pp)<br />
] <br />
cx: 3 * (x1 - x0)<br />
bx: 3 * (x2 - x1) - cx<br />
ax: x3 - x0 - cx - bx<br />
cy: 3 * (y1 - y0)<br />
by: 3 * (y2 - y1) - cy<br />
ay: y3 - y0 - cy - by<br />
<br />
t: s: 0.01 ;this value sets quality of the curve<br />
<br />
while [t <= 1][<br />
tx: to integer! (<br />
(ax * (t * t * t)) + (bx * (t * t)) + (cx * t) + .5<br />
) + x0<br />
ty: to integer! (<br />
(ay * (t * t * t)) + (by * (t * t)) + (cy * t) + .5<br />
) + y0<br />
t: t + s<br />
insert tail result to pair! reduce [tx ty]<br />
]<br />
return result<br />
]<br />
click?: false<br />
mouse-pos: 0x0<br />
]<br />
origin 0<br />
bkg: box black 400x400 with [effect: reduce ['draw make block! 120]]<br />
style point box 10x10 with [<br />
effect: [draw [pen 0.255.0 fill-pen 0.200.0 circle 4x4 4]]<br />
changes: [offset]<br />
feel: make feel [<br />
engage: func [f a e][<br />
if a = 'down [click?: on mouse-pos: e/offset]<br />
if a = 'up [click?: off]<br />
if find [over away] a [<br />
if click? [<br />
f/offset: f/offset + e/offset - mouse-pos<br />
bkg/effect/2: draw-beziere-curve<br />
show [bkg f]<br />
]<br />
]<br />
]<br />
]<br />
]<br />
at 300x200 p0: point<br />
at 200x100 p1: point<br />
at 200x300 p2: point<br />
at 100x200 p3: point<br />
do [bkg/effect/2: draw-beziere-curve]<br />
<br />
===Buttons Galore<br />
Buttons galore from the library script %buttons.r<br />
Here a do block is used to execute the initialization needed within the layout block.<br />
do [<br />
group: ["rotary" "test" "button"]<br />
]<br />
origin 20x10<br />
backdrop effect [gradient 0x1 100.20.0]<br />
vh1 "52 Button Click-up - Each with a different click effect..."<br />
vtext bold "Here is a small sampling of the thousands of button effects you can create. (This is 78 lines of code.)"<br />
at 20x80 guide<br />
button "simple"<br />
button form now/date<br />
button "colored" 100.0.0<br />
button "text colored" font [colors: [255.80.80 80.200.80]]<br />
button with [texts: ["up text" "down text"]]<br />
button "bi-colored" colors [0.150.100 150.20.20]<br />
button with [texts: ["up color" "down color"] colors: [0.150.100 150.20.20]]<br />
button "image" pic<br />
button "color image" pic 200.100.50<br />
button "flip color" pic with [effects: [[fit colorize 50.50.200][fit colorize 200.50.50]]]<br />
button "blink" with [rate: 2 colors: [160.40.40 40.160.40]]<br />
return<br />
button "multiply" pic with [effects: [[fit][fit multiply 128.80.60]]]<br />
button "brighten" pic with [effects: [[fit][fit luma 80]]]<br />
button "contrast" pic with [effects: [[fit][fit contrast 80]]]<br />
button "horiz flip" pic with [effects: [[fit][fit flip 1x0]]]<br />
button "vert reflect" pic with [effects: [[fit][fit reflect 0x1]]]<br />
button "invert" pic with [effects: [[fit][fit invert]]]<br />
button "vert grad" with [effects: [[gradient 0x1 0.0.0 0.200.0] [gradient 0x1 0.200.0 0.0.0]]]<br />
button "horiz grad" with [effects: [[gradient 1x0 200.0.0 200.200.200][gradient 1x0 200.200.200 200.0.0]]]<br />
button "both grad" with [effects: [[gradient 1x0 140.0.0 40.40.200] [gradient 0x1 40.40.200 140.0.0]]]<br />
button "blink grad" with [rate: 4 effects: [[gradient 1x0 0.0.0 0.0.200] [gradient 1x0 0.0.200 0.0.0]]]<br />
button "blink flip" pic with [rate: 8 effects: [[fit][fit flip 0x1]]]<br />
return<br />
button "big dull button with several lines" 100x80 0.0.100<br />
button "dual color" pic 50.50.100 100.50.50 100x80 with [edge: [color: 80.80.80]]<br />
button "big edge" pic 100x80 with [edge: [size: 5x5 color: 80.80.80] effects: [[fit colorize 50.100.50][fit]]]<br />
button "oval reflect" pic 50.100.50 100x80 with [effect: [fit reflect 1x0 oval]]<br />
return<br />
button "text on top" pic 100x80 with [font: [valign: 'top] effects: [[fit gradcol 1x1 200.0.0 0.0.200] [fit gradcol -1x-1 200.0.0 0.0.200]]]<br />
button "text on bottom" pic 100x80 50.50.100 with [font: [valign: 'bottom] effects: [[fit][fit invert]]]<br />
button "big text font" pic 100x80 with [font: [size: 24] effects: [[fit multiply 50.100.200][fit]]]<br />
button "cross flip" pic 50.100.50 100x80 with [effect: [fit flip 0x1 reflect 0x1 cross]]<br />
return<br />
toggle "toggle"<br />
toggle "toggle red" 100.0.0 <br />
toggle "toggle up" "toggle down"<br />
toggle "toggle colored" 0.150.100 150.20.20<br />
toggle "up color" "down color" 0.150.100 150.20.20<br />
toggle "toggle multiply" pic with [effects: [[fit][fit multiply 128.80.60]]]<br />
toggle "toggle contrast" pic with [effects: [[fit][fit contrast 80]]]<br />
toggle "toggle cross" pic with [effects: [[fit][fit cross]]]<br />
toggle "toggle v-grad" with [effects: [[gradient 0x1 0.0.0 0.200.0] [gradient 0x1 0.200.0 0.0.0]]]<br />
toggle "toggle h-grad" with [effects: [[gradient 1x0 200.0.0 200.200.200][gradient 1x0 200.200.200 200.0.0]]]<br />
toggle "toggle both" with [effects: [[gradient 1x0 140.0.0 40.40.200] [gradient 0x1 40.40.200 140.0.0]]]<br />
return<br />
rotary data group<br />
rotary data reduce [now/date now/time]<br />
rotary data group 100.0.0 0.100.0 0.0.100<br />
rotary data group with [font: [colors: [255.80.80 80.200.80]]]<br />
rotary data group with [colors: [0.150.100 150.20.20]]<br />
rotary data group pic<br />
rotary data group pic 200.100.50<br />
rotary data group pic with [effects: [[fit colorize 50.50.200][fit colorize 200.50.50]]]<br />
rotary data group with [effects: [[gradient 0x1 0.0.0 0.200.0] [gradient 0x1 0.200.0 0.0.0]]]<br />
rotary data group with [effects: [[gradient 1x0 200.0.0 200.200.200][gradient 1x0 200.200.200 200.0.0]]]<br />
rotary data group with [effects: [[gradient 1x0 140.0.0 40.40.200] [gradient 0x1 40.40.200 140.0.0]]]<br />
===Paint Program<br />
This section is a clip of the layout portion of Frank Sievertsen's remarkable paint program. Open this example to enable a quick link to the real source:<br />
button "Browse Source" [browse http://www.reboltech.com/library/html/paint.html]<br />
button "Close" [unview]<br />
In the example below, a DO block is used to execute initialize code.<br />
do [<br />
color: fill-color: start: draw-image: draw-pos: tmp: none<br />
type: 'box<br />
undos: [] redos: []<br />
draw: func [offset /local tmp] [<br />
compose [<br />
pen (color/color) fill-pen (fill-color/color)<br />
(type) (start) (either type = 'circle [<br />
tmp: offset - start<br />
to-integer square-root add tmp/x ** 2 tmp/y ** 2<br />
] [offset])<br />
]<br />
]<br />
]<br />
<br />
backdrop effect compose [gradient 1x1 (sky) (water)]<br />
across<br />
draw-image: image white 300x300 effect [draw []]<br />
feel [engage: func [face action event] [<br />
if all [type start] [<br />
if find [over away] action [<br />
append clear draw-pos draw event/offset<br />
show face<br />
]<br />
if action = 'up [<br />
append/only undos draw-pos<br />
draw-pos: tail draw-pos<br />
start: none<br />
]<br />
]<br />
if all [type action = 'down] [start: event/offset ]<br />
]]<br />
do [draw-pos: draw-image/effect/draw]<br />
guide<br />
style text text [<br />
tmp: first back find face/parent-face/pane face<br />
tmp/feel/engage tmp 'down none<br />
tmp/feel/engage tmp 'up none<br />
]<br />
label "Tool:" return<br />
radio [type: 'line] text "Line"<br />
return<br />
radio [type: 'box] on text "Box"<br />
return<br />
radio [type: 'circle] text "Circle"<br />
return<br />
style color-box box 15x15 [<br />
face/color: either face/color [request-color/color face/color] [request-color]<br />
] ibevel<br />
color: color-box 0.0.0 text "Pen"<br />
return<br />
fill-color: color-box text "Fill-pen"<br />
return<br />
button "Undo" [if not empty? undos [<br />
append/only redos copy last undos<br />
draw-pos: clear last undos<br />
remove back tail undos<br />
show draw-image<br />
]]<br />
return<br />
button "Redo" [if not empty? redos [<br />
append/only undos draw-pos<br />
draw-pos: insert draw-pos last redos<br />
remove back tail redos<br />
show draw-image<br />
]]<br />
===Font Lab<br />
Carl's Font lab<br />
Here a do block is used to initialize some values needed in the layout<br />
do [<br />
change-styles: func [style start facet subfacet value /local v][<br />
start: find style/pane start<br />
foreach f start [<br />
f: in f facet<br />
if subfacet <> 'none [f: in get f subfacet]<br />
either block? value [<br />
if not block? get f [set f either none? get f [copy []][reduce [get f]]]<br />
either v: find get f value [remove v][head insert get f value]<br />
][set f value]<br />
]<br />
show style<br />
]<br />
chg: func ['facet 'subfacet value] [change-styles external-view norm-start facet subfacet value ]<br />
shad: does [chg font shadow sdir * to-integer sl2/data * 16]<br />
sdir: 1x1<br />
sz: 180x40<br />
sx2: sz/x / 2 <br />
]<br />
style tgl toggle 60<br />
style lab vtext bold<br />
backcolor rebolor<br />
space 0x5<br />
across <br />
p: choice 180 "Sans-Serif Style" "Serif Style" "Fixed Width Style" <br />
[chg font name pick reduce [font-sans-serif font-serif font-fixed] index? p/data]<br />
return<br />
tgl "Bold" [chg font style [bold]]<br />
tgl "Italic" italic [chg font style [italic]]<br />
tgl "Lined" underline [chg font style [underline]]<br />
return<br />
tgl "Left" of 'tg1 [chg font align 'left]<br />
tgl "Center" of 'tg1 [chg font align 'center]<br />
tgl "Right" of 'tg1 [chg font align 'right]<br />
return<br />
tgl "Top" of 'tg2 [chg font valign 'top]<br />
tgl "Middle" of 'tg2 [chg font valign 'middle]<br />
tgl "Bottom" of 'tg2 [chg font valign 'bottom]<br />
return<br />
lab "Size:" 60x20 font []<br />
sl: slider 120x20 [chg font size max 8 to-integer sl/data * 40] <br />
with [append init [data: .5]]<br />
<br />
return<br />
lab "Space:" 60x20 font []<br />
sl1: slider 120x20 [chg font space (1x0 * to-integer sl1/data * 20) - 5x0]<br />
return<br />
lab "Shadow:" 60x20 font []<br />
sl2: slider 120x20 [shad] with [append init [data: .5]]<br />
return<br />
lab "Shad Dir:" 60x20<br />
arrow left [sdir: sdir * 0x1 + -1x0 shad] pad 6<br />
arrow right [sdir: sdir * 0x1 + 1x0 shad] pad 6<br />
arrow up [sdir: sdir * 1x0 + 0x-1 shad] pad 6<br />
arrow down [sdir: sdir * 1x0 + 0x1 shad] pad 6<br />
return<br />
button sx2 "Text Color" [chg font color request-color]<br />
button sx2 "Area Color" [chg color none request-color]<br />
return<br />
button sx2 "Help" [alert "Click the controls on the left to change text on the right."]<br />
button sx2 "Close" #"^Q" [unview]<br />
below<br />
at p/offset + (p/size * 1x0) + 10x0<br />
norm-start:<br />
Title "Title" sz<br />
h1 "Heading 1" sz<br />
h2 "Heading 2" sz<br />
h3 "Heading 3" sz<br />
h4 "Heading 4" sz<br />
h5 "Heading 5" sz<br />
at norm-start/offset + (norm-start/size * 1x0) + 10x0<br />
banner "Banner" sz<br />
vh1 "Video Heading 1" sz<br />
vh2 "Video Heading 2" sz<br />
vh3 "Video Heading 3" sz<br />
vtext "Video Text" sz<br />
text "Document Text" sz<br />
<br />
===Windows Clipboard<br />
---Cut or Copy to Clipboard<br />
Normal Windows cut and copy commands are supported e.g. on a field, contents can be copied to the clipboard. Programmatic access is also supported for text contents.<br />
across <br />
label "Entry field: "<br />
return input-field: field 200 "Enter your text here"<br />
return button 200 "Copy Entry field data to clipboard" [write clipboard:// input-field/text]<br />
return button 200 "Show Clipboard Contents" [alert read clipboard://] <br />
---Clearing The Clipboard<br />
across <br />
button 200 "Clear The Clipboard" [write clipboard:// ""]<br />
return button 200 "Show Clipboard Contents" [alert read clipboard://] <br />
---Paste from Clipboard<br />
Normal Windows paste commands are supported e.g. on a field, contents can be pasted. Programmatic access is also supported for text contents.<br />
across <br />
button 200 "Show Clipboard Contents" [alert read clipboard://] <br />
===Requesters<br />
REBOL View supports an assortment of requesters. <br />
The results of the request-* code are returned as its value e.g. chosen-date: request-date<br />
---Request Yes | No | Cancel<br />
Provides the user the capability to pick from choices "Yes" | "No" | "Cancel"<br />
The result is "True" | "False" | none<br />
do [user-response: none]<br />
button "Simple Request" 200 [user-response: request "Do you want to abandon your input so far?"]<br />
button "View User Response" 200 [alert form user-response]<br />
<br />
---Pick A Color<br />
do [chosen-color: gold] <br />
button "Pick Color" 200 [chosen-color: request-color]<br />
button "View Chosen Color" 200 [alert form chosen-color]<br />
---Pick An Answer<br />
The request allows a descriptive value then 1, 2, or 3 options.<br />
button "Format" 100 [request ["Your message goes here. It will wrap if it is very very long." "Choice 1" "Choice 2" "Choice 3"]]<br />
<br />
button "Example 1" 100 [request ["Pick The Color of Your New Model T" "Black"]]<br />
<br />
button "Example 2" 100 [request ["Pick one country" "England" "France"]]<br />
button "Example 3" 100 [request ["Run Extract Script?" "Yes" "No" "Cancel"]]<br />
---Pick A Date<br />
do [chosen-date: 01-Jun-1990]<br />
button "Pick Date" 200 [chosen-date: request-date]<br />
button "See Chosen Date" 200 [alert form chosen-date]<br />
---Get A LogonID and Password<br />
do [credentials: none]<br />
button "Get Credentials" 200 [credentials: request-pass]<br />
button "View Credentials" 200 [<br />
view/new layout [<br />
size 200x200 backtile polished orange <br />
across banner "Credentials" <br />
return label "LogonID: " txt pick credentials 1<br />
return label "Password: " txt pick credentials 2<br />
]<br />
]<br />
---Pick A File<br />
Format: REQUEST-FILE /title title-line button-text /file name /filter filt /keep <br />
do [filter-block: ["*.gif" "*.jpg" "*.png" "*.bmp"]]<br />
button "Pick Any File" 300 [request-file "Select"] <br />
button "Pick With A Title" 300 [request-file/title "Pick The Data File to Process" "OK"]<br />
button "Change the Action Button Name" 300 [request-file/title "Pick The Data File to Process" "OK"] <br />
button "Keep Results" 300 [request-file/title/keep "Previous Select On This Button Is Kept" "OK"]<br />
button "Filter Files" 300 [request-file/title/filter "Pick An Image File" "OK" filter-block] <br />
---Request Text Input<br />
Format: REQUEST-TEXT /offset xy /title title-text /default str<br />
<br />
button "Request Text Input - all default parameters" 300 [request-text]<br />
button "Request Text Input - with offset to window" 300 [request-text/offset 40x40]<br />
button "Request Text Input - with title" 300 [request-text/title "Input your question"]<br />
button "Request Text Input - with default" 300 [request-text/default "Key your question here"]<br />
button "Request Text Input - with all parameters" 300 [request-text/offset/title/default 100x100 "Input your question" "Key your question here"]<br />
---Request Download from Net<br />
Request a file download from the net. Show progress. Return none on error.<br />
Format: REQUEST-DOWNLOAD url /to local-file<br />
backtile polished orange <br />
button "Request File Download To local REBOL Cache" 300 [request-download http://www.rebol.com/index.html]<br />
button "Request File Download To This Directory" 300 [request-download/to http://www.rebol.com/index.html none]<br />
button "Request File Download To Specific File" 300 [request-download/to http://www.rebol.com/index.html %/c/temp.html]<br />
===Message Box<br />
button "Format" 100 [request ["Your message goes here. It will wrap if it is very very long and tedious." "Close"]] <br />
button "Example" 100 [request ["You done good!" "OK"]]<br />
---Confirmation<br />
button "Exit" 100 [<br />
request/confirm "Do you want to quit without saving?" []<br />
]<br />
<br />
===Calling the Editor<br />
The REBOL editor is now callable with the editor function<br />
backtile polished<br />
button 300 "Create a test file and edit it" [<br />
write %temp.txt "This is a test file"<br />
editor %temp.txt<br />
] frame 204.0.0 <br />
<br />
===Calling Windows<br />
With View/Pro the calling of executables is supported.<br />
Here are two simple examples that will work if you have View/Pro on a platform where a notepad and calc are avaiable.<br />
across backtile size 200x200<br />
return button "Notepad" [call ["notepad.exe"]]<br />
return button "Calculator" [call ["calc.exe"]]<br />
===Window Options<br />
Note that these are options which are ignored by the easyvid.r code that displays them in this tutorial.<br />
Copy the code out and run it standalone in REBOL/View.<br />
---Block Options: No Border and No Title<br />
view/options layout [<br />
size 200x200 <br />
banner "Window Options" <br />
button "Close" [unview]<br />
] [<br />
no-border<br />
no-title<br />
]<br />
---Word Option: No Title<br />
Note that the results of this are surprising if you run it from within a script that has a title option. It is displayed near location 0x0 of the resulting window instead of in the window frame that has been suppressed. <br />
view/options layout [<br />
size 200x200 <br />
banner "Window Options" <br />
button "Close" [unview]<br />
] 'no-title<br />
===REBOL/View Notifiers<br />
REBOL/View supports simple notifiers to send messages to a user interface<br />
---Alert<br />
button 220 polished "Send alert message" [alert "This causes a dialogue box to popup" ]<br />
---Flash<br />
Flash is provided to provide a message and keep on processing.<br />
across size 200x200<br />
return button 150 "Create Flash Message" [flash "Testing"]<br />
return button 150 "Unview Flash" [unview]<br />
---Inform<br />
inform layout [<br />
backtile polished sky <br />
across text font-size 16 bold underline red "Action complete!" <br />
return button "OK" [unview]]<br />
---Popup<br />
REBOL supports popups (see note below before running!)<br />
across size 200x200 <br />
button "Show Popup" [<br />
show-popup popup-layout: layout [<br />
across size 200x200 <br />
backtile polished<br />
banner "The Popup Worked" <br />
return button "Unview" [unview]<br />
]<br />
]<br />
return button "Hide Popup" [unview/only popup-layout]<br />
I have had some difficulties (process lockup) when using<br />
these popups so just use view layout [...] and skip the popup part.<br />
===Diagram Example<br />
Carl has created some diagrams in REBOL using styles to make an architecture diagram.<br />
This is a slightly modified version.<br />
Here again a DO block precedes the layout code for non-layout initiatiation ... here the definition of a function.<br />
Why make a diagram this way?<br />
1. One reason is that it can be interactive ... the sections are all "hot" with a few lines of code. Here they pop up REBOL Dialogs but they could do anything that can be coded even something as simple as launching a browser on a different URL for each diagram component. The "Compositor" box demonstrates this by launching your browser on the REBOL.com site.<br />
2. Very small footprint size compared to other presentation source formats.<br />
do [<br />
information: func [info [string!]][<br />
request/ok reform [ info]<br />
]<br />
]<br />
style bx box 255.255.255 0.0.0 font-size 11 font [color: 0.0.0 shadow: 0x0] edge [size: 5x2] <br />
[request/ok reform ["No information on" face/text]] <br />
style bb box bold left top para [origin: 6x10] edge [size: 2x2]<br />
[request/ok reform ["No information on" face/text]]<br />
backcolor silver + 30<br />
at 15x15 h1 486 left "Arch Structure" <br />
at 15x50 bb "Client" 506x436 160.80.80 [<br />
information "Any client machine e.g. branch or Call Centre"]<br />
at 25x252 bb "Mid-Tier" 486x68 effect [gradient 1x1 169.91.155 80.45.75]<br />
at 25x152 bb "UI" 486x96 effect [gradient 1x1 38.156.82 19.78.41]<br />
at 25x324 bb "Servers" 486x151 effect [gradient 1x1 103.96.200 50.45.100] [information "Mid-tiers servers with XYZ relational database server" ]<br />
at 130x216 bx "Compositor" 182x24 bold [browse http://www.rebol.com]<br />
at 130x60 bx "Browser" 120x24 [information "Branch standard browser"]<br />
at 130x188 bx "Sound" 182x24 bold [information "Sound services"]<br />
at 255x60 bx "Win32" 120x24 [information "Win32 App"]<br />
===Column Images<br />
Creates a layout looking (a little) like columns. It uses a gradient effect going from darker to lighter<br />
do [<br />
column: make image! layout [<br />
backdrop effect [gradient 1x0 20.20.20 250.240.230 luma 60]<br />
]<br />
column-size: 50x420<br />
area-size: 400x420 ; height should be the same as column-size<br />
]<br />
backtile polished tan<br />
across <br />
image column-size column <br />
pad -10x0 ; this brings the default VID spacing back<br />
area wrap area-size <br />
edge none ; take the edge off of area so that it more closely blends <br />
shadow 2x2<br />
pad -10x0 image column-size column ; if you want a right column<br />
===Tree View of Directory<br />
This is Didier's tree view %request-dir.r<br />
In this sample, you must be online because the code is accessed on the Rebol script server<br />
do [do http://www.rebol.org/library/scripts/request-dir.r<br />
request-dir<br />
]<br />
Note that:<br />
* the script is read from the script library but runs locally<br />
* it is showing the files in your directories<br />
===The emailer Function<br />
The function for emailing has appeared in Jan-2004 on the rebol list.<br />
It is a simple idea ... to create a standard emailer by invoking a function emailer. This window will show the source:<br />
text wrap 400x300 mold get 'emailer<br />
And it is simple to run:<br />
across size 200x200<br />
return button 150 "Run emailer" [emailer]<br />
But on my machine there is again a problem - the emailer locks up REBOL/View.<br />
Recommendation:<br />
* if it works use it if you like<br />
* use Doc Kimbel's one liner (works for me). Assumes you have set up your email in set-user<br />
e: field "Email" s: field "Subject" m: area "Body" btn "Send"[send/subject to-email e/text m/text s/text alert "ok"]<br />
* better yet, make your own... if the code for the basic is 1 line, then a custom version is not far away. Here's an example that allows selection of your frequent contacts (entered in the names-addresses series) and keeps a journal of email that you have sent (using this code) in file email-journal.txt. Assumes you have setup your user profile correctly to allow sending of email.<br />
do [<br />
names-addresses: [<br />
"Contact 1" contact1@no-such-address.com<br />
"Contact 2" contact2@no-such-address.com<br />
"Contact 3" contact3@no-such-address.com<br />
]<br />
names: copy []<br />
foreach [name address] names-addresses [append names name]<br />
journal?: false ; set to true if want to journalize sent email<br />
]<br />
e: rotary 200 data sort names<br />
s: field "Subject" <br />
m: area 500x400 wrap "Body" <br />
btn "Send"[<br />
send/subject who-to: select names-addresses e/text m/text s/text <br />
alert join "Sent email to: " form who-to<br />
<br />
if journal? [<br />
write/append %email-journal.txt rejoin [<br />
"[ When-sent: " now/precise <br />
" To: " who-to<br />
" Subject: {" s/text<br />
"} Message: {" m/text "} ] "<br />
newline<br />
]<br />
]<br />
]<br />
btn "Quit" [unview]<br />
It won't take much to change this from the rotary used to a text list allowing multiple selections.<br />
===Some More email<br />
Earlier there have been a few examples of sending email. Here are a few more that often appear in the mailing list<br />
---Simple Send<br />
This is not a runnable version because you don't need anything but REBOL/Core to run it. It has been wrapped in a DO block so it does not send errors to the console.<br />
---Quick Send Short Message<br />
do [send address@isp.com "My Message" ]<br />
<br />
---Send Longer Message <br />
Now a more complex message where there is a body to the message:<br />
do [<br />
send address@isp.com {Sample Message<br />
<br />
This is the body of the message<br />
} <br />
]<br />
---Send with One Attachment<br />
Here, so that the sample does not fail, test file(s) are created by the code before attempting the send. <br />
do [<br />
test-file: %file-attachment.txt<br />
write test-file {Just some test data to create a file}<br />
send/attach address@isp.com {Sample Message<br />
<br />
This is the body of the message<br />
} test-file<br />
]<br />
<br />
---Send with Attachments<br />
And a message with multiple attachments.<br />
Here, so that the sample does not fail, test file(s) are created by the code before attempting the send. <br />
do [<br />
files: [%file-attachment.txt %second-attachment.txt]<br />
foreach file files [write file {Just some test data to create a file}]<br />
send/attach address@isp.com {Sample Message<br />
<br />
This is the body of the message<br />
} files<br />
]<br />
<br />
---Send to Multiple Addresses<br />
Here, so that the sample does not fail, test file(s) are created by the code before attempting the send. <br />
do [<br />
files: [%file-attachment.txt %second-attachment.txt]<br />
foreach file files [write file {Just some test data to create a file}] <br />
send/attach [address@isp.com asecondAddress@isp.com] {Sample Message<br />
<br />
This is the body of the message<br />
} files<br />
]<br />
<br />
---Send/only<br />
Same send only just provide the SMTP server with one copy:<br />
Here, so that the sample does not fail, test file(s) are created by the code before attempting the send. <br />
do [<br />
files: [%file-attachment.txt %second-attachment.txt]<br />
foreach file files [write file {Just some test data to create a file}] <br />
send/only/attach [address@isp.com asecondAddress@isp.com] {Sample Message<br />
<br />
This is the body of the message<br />
} files<br />
]<br />
<br />
---Send With Header<br />
This example uses a Do block to wrap the code. If you execute the email should be sent.<br />
But it is unlikely to be delivered.<br />
The addresses for me and you should be changed in your use as well as the<br />
* Subject<br />
* Organization<br />
* Content <br />
do [<br />
me: myaddress@isp.com<br />
you: youraddress@isp.com<br />
header-object: make system/standard/email [<br />
From: me<br />
Reply-To: me<br />
Subject: "Some Stuff"<br />
Organization: "Cyberia"<br />
MIME-Version: 1.0 <br />
Content-Type: "text/plain"<br />
]<br />
send/header you {Test Message<br />
This is the message body.<br />
} <br />
header-object <br />
] <br />
---Send with CC<br />
This adds a copy value in the header-object<br />
do [<br />
me: myaddress@isp.com<br />
you: youraddress@isp.com<br />
header-object: make system/standard/email [<br />
From: me<br />
Reply-To: me<br />
Subject: "Some Stuff"<br />
Organization: "Cyberia"<br />
MIME-Version: 1.0 <br />
Content-Type: "text/plain"<br />
cc: another-address@isp.com<br />
]<br />
send/header you {Test Message<br />
This is the message body.<br />
} <br />
header-object <br />
] <br />
<br />
---Doctored Code<br />
Again Doc Kimbel's one liner that does not waste a character<br />
e: field "Email" s: field "Subject" m: area "Body" btn "Send"[send/subject to-email e/text m/text s/text alert "ok"]<br />
===Sharp Styles<br />
I really like the style that Didier has put around his email previewer<br />
do [<br />
<br />
ss-light: stylize [<br />
text: text feel none<br />
vtext: vtext feel none<br />
col-hdg: text black 255.255.204 bold middle effect []<br />
col-txt: text edge [size: 1x0 color: gray effect: 'bevel]<br />
ban: vh3 left to-pair reduce [<br />
50 logo.gif/size/y] edge [<br />
color: 0.0.0 size: 0x1] feel none with [color: black]<br />
lab: label para [origin: 2x3 margin: 0x2]<br />
labe: lab edge [size: 1x1 color: water effect: 'ibevel]<br />
inf: info 100 font-color yellow<br />
bkg: backdrop water - 10.10.10<br />
txt-big: vtext 300 font-size 18 font-color yellow center<br />
rti: vtext font-size 14 bold<br />
txt-ch: rti font-color white 170x22 para [<br />
origin: 2x3] with [font: make font [<br />
color: white] colors: [55.95.155 235.170.55]]<br />
btnb: btn 70.70.70 font-color white<br />
men: rti 264 edge [size: 1x1 color: water effect: 'bevel] para [origin: 20x2 margin: 1x4]<br />
with [color: water - 40.40.40 effect: first effects: [<br />
[draw [pen white fill-pen white polygon 5x2 13x10 5x18]] [draw [pen white fill-pen white polygon 2x5 10x13 18x5]]<br />
] feel: none] ;system/view/vid/vid-feel/hot]<br />
cbox: box 60x20 edge [size: 1x1 color: water effect: 'bevel] [<br />
if temp: request-color/color first face/data [face/color: temp change face/data temp show face]<br />
] with [append init [color: first data]]<br />
]<br />
stylesheet: ss-heavy: stylize/styles [<br />
col-hdg: col-hdg effect [gradcol 0x1 200.200.160 155.155.104]<br />
ban: ban effect [merge gradcol 150.180.200 0.0.0] with [color: none]<br />
bkg: backdrop effect [gradient 1x1 65.125.175 45.75.115 grid 2000x4 1999x4 70.130.190 blur]<br />
txt-big: vtext 300 font-size 18 font-color yellow center<br />
rti: vtext font-size 14 bold<br />
txt-ch: txt-ch effect [gradcol -1x1 105.105.105 151.151.151]<br />
men: men effect [gradcol -1x0 black water]<br />
] ss-light<br />
<br />
]<br />
<br />
styles stylesheet<br />
space 4x4 origin 4x4 across<br />
<br />
bkg<br />
pad 15 ban 235 :title para [origin: 32x0]<br />
pad -254<br />
image 30x30 %palms.jpg effect [fit key 255.0.255]<br />
<br />
<br />
<br />
}</var><br />
<var class="dt-set-word">code:</var> <var class="dt-set-word">text:</var> <var class="dt-set-word">layo:</var> <var class="dt-set-word">external-view:</var> none<br />
<var class="dt-set-word">sections:</var> []<br />
<var class="dt-set-word">layouts:</var> []<br />
<var class="dt-set-word">space:</var> <var class="dt-function">charset</var> <var class="dt-string">" ^-"</var><br />
<var class="dt-set-word">chars:</var> <var class="dt-function">complement</var> <var class="dt-function">charset</var> <var class="dt-string">" ^-^/"</var><br />
<var class="dt-set-word">rules:</var> [title some parts]<br />
<var class="dt-set-word">title:</var> [text-line (<var class="dt-set-word">title-line:</var> text)]<br />
<var class="dt-set-word">parts:</var> [<br />
newline<br />
| <var class="dt-string">"==="</var> section<br />
| <var class="dt-string">"---"</var> subsect<br />
| <var class="dt-string">"!"</var> note<br />
| example<br />
| paragraph<br />
]<br />
<var class="dt-set-word">text-line:</var> [<var class="dt-function">copy</var> text <var class="dt-function">to</var> newline newline]<br />
<var class="dt-set-word">indented:</var> [some space thru newline]<br />
<var class="dt-set-word">paragraph:</var> [<var class="dt-function">copy</var> para some [chars thru newline] (emit txt para)]<br />
<var class="dt-set-word">note:</var> [<var class="dt-function">copy</var> para some [chars thru newline] (emit-note para)]<br />
<var class="dt-set-word">example:</var> [<br />
<var class="dt-function">copy</var> code some [indented | some newline indented]<br />
(emit-code code)<br />
]<br />
<var class="dt-set-word">section:</var> [<br />
text-line (<br />
<var class="dt-function">append</var> sections text<br />
<var class="dt-function">append/only</var> layouts <var class="dt-set-word">layo:</var> <var class="dt-function">copy</var> page-template<br />
emit h1 text<br />
) newline<br />
]<br />
<var class="dt-set-word">subsect:</var> [text-line (emit h2 text)]<br />
<var class="dt-set-word">emit:</var> <var class="dt-function">func</var> [<var class="dt-lit-word">'style</var> data] [<var class="dt-function">repend</var> layo [style data]]<br />
<var class="dt-set-word">emit-code:</var> <var class="dt-function">func</var> [code] [<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> code<br />
<var class="dt-function">repend</var> layo [<var class="dt-lit-word">'code</var> <var class="dt-pair">460x-1</var> <var class="dt-function">trim/auto</var> code <var class="dt-lit-word">'show-example</var>]<br />
]<br />
<var class="dt-set-word">emit-note:</var> <var class="dt-function">func</var> [code] [<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> code<br />
<var class="dt-function">repend</var> layo [<var class="dt-lit-word">'tnt</var> <var class="dt-pair">460x-1</var> code]<br />
]<br />
<var class="dt-set-word">show-example:</var> [<br />
<var class="dt-function">if</var> external-view [<var class="dt-set-word">xy:</var> external-view/offset <var class="dt-function">unview/only</var> external-view]<br />
<var class="dt-set-word">xcode:</var> <var class="dt-function">load/all</var> face/text<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">block?</var> xcode [<var class="dt-set-word">xcode:</var> <var class="dt-function">reduce</var> [xcode]] <var class="dt-cmt">;!!! fix load/all<br />
</var> <var class="dt-function">if</var> <var class="dt-set-word">here:</var> <var class="dt-function">select</var> xcode <var class="dt-lit-word">'layout</var> [<var class="dt-set-word">xcode:</var> here]<br />
<var class="dt-set-word">external-view:</var> <var class="dt-function">view/new/offset</var> <var class="dt-function">layout</var> xcode xy<br />
]<br />
<var class="dt-set-word">page-template:</var> [<br />
size <var class="dt-pair">500x480</var> origin <var class="dt-pair">8x8</var><br />
backdrop white <var class="dt-function">-</var> <var class="dt-integer">80</var><br />
style code tt snow navy bold as-is para [<var class="dt-set-word">origin:</var> <var class="dt-set-word">margin:</var> <var class="dt-pair">12x8</var>]<br />
style tnt txt maroon bold<br />
]<br />
<var class="dt-function">parse/all</var> <var class="dt-function">detab</var> content rules<br />
<var class="dt-set-word">show-page:</var> <var class="dt-function">func</var> [i <var class="dt-refinement">/local</var> blk last-face][<br />
<var class="dt-set-word">i:</var> <var class="dt-function">max</var> <var class="dt-integer">1</var> <var class="dt-function">min</var> <var class="dt-function">length?</var> sections i<br />
<var class="dt-function">append</var> <var class="dt-function">clear</var> tl/picked <var class="dt-function">pick</var> sections i <br />
<var class="dt-function">if</var> <var class="dt-set-word">blk:</var> <var class="dt-function">pick</var> layouts <var class="dt-set-word">this-page:</var> i [<br />
<var class="dt-set-path">f-box/pane:</var> <var class="dt-function">layout/offset</var> blk <var class="dt-pair">0x0</var> <br />
<var class="dt-set-word">last-face:</var> <var class="dt-function">last</var> f-box/pane/pane <var class="dt-cmt">; bh slider<br />
</var> <var class="dt-set-path">f-box/pane/pane/1/size:</var> <var class="dt-set-path">f-box/pane/size:</var> <var class="dt-function">max</var> <var class="dt-pair">500x480</var> <var class="dt-function">add</var> <var class="dt-pair">20x20</var> <var class="dt-function">add</var> last-face/offset last-face/size <var class="dt-cmt">; bh slider<br />
</var> update-slider <var class="dt-cmt">; bh slider<br />
</var> <var class="dt-function">show</var> f-box<br />
]<br />
<var class="dt-function">show</var> tl <var class="dt-cmt">; changed to after slider update ; was not refreshing the index display<br />
</var>]<br />
<var class="dt-set-word">update-slider:</var> <var class="dt-function">does</var> [<br />
<var class="dt-set-path">sld/data:</var> <var class="dt-integer">0</var><br />
<var class="dt-function">either</var> <var class="dt-function">object?</var> f-box/pane [<br />
sld/redrag <var class="dt-function">min</var> <var class="dt-decimal">1.0</var> <var class="dt-function">divide</var> sld/size/2 f-box/pane/size/2<br />
<var class="dt-set-path">sld/action:</var> <var class="dt-function">func</var>[face event] <var class="dt-function">compose</var> [<br />
<var class="dt-set-path">f-box/pane/offset/2:</var> <var class="dt-function">multiply</var> face/data (<var class="dt-function">subtract</var> <var class="dt-integer">480</var> f-box/pane/size/2)<br />
<var class="dt-function">show</var> f-box<br />
]<br />
][<br />
sld/redrag <var class="dt-decimal">1.0</var> <var class="dt-function">show</var> sld<br />
<var class="dt-set-path">sld/action:</var> none<br />
]<br />
<var class="dt-function">show</var> sld<br />
]<br />
<var class="dt-set-word">main:</var> <var class="dt-function">layout</var> [<br />
backtile polished<br />
across<br />
vh2 title-line <var class="dt-function">return</var><br />
<var class="dt-set-word">tl:</var> text-list <var class="dt-pair">160x480</var> bold black white data sections [<br />
show-page <var class="dt-function">index?</var> <var class="dt-function">find</var> sections value<br />
]<br />
<var class="dt-set-word">h:</var> <var class="dt-function">at</var><br />
<var class="dt-set-word">f-box:</var> box <var class="dt-pair">500x480</var><br />
<var class="dt-function">at</var> h <var class="dt-function">+</var> <var class="dt-pair">500x0</var> <var class="dt-set-word">sld:</var> slider <var class="dt-pair">24x480</var> <var class="dt-cmt">; add brett's slider<br />
</var> <var class="dt-function">at</var> h <var class="dt-function">+</var> <var class="dt-pair">456x-24</var><br />
across space <var class="dt-integer">4</var><br />
arrow left keycode [up left] [show-page this-page <var class="dt-function">-</var> <var class="dt-integer">1</var>]<br />
arrow right keycode [down right] [show-page this-page <var class="dt-function">+</var> <var class="dt-integer">1</var>]<br />
pad <var class="dt-integer">-150</var><br />
txt white italic font-size <var class="dt-integer">16</var> <var class="dt-function">form</var> system/script/header/date/date<br />
]<br />
show-page <var class="dt-integer">1</var><br />
<var class="dt-set-word">xy:</var> main/offset <var class="dt-function">+</var> <var class="dt-function">either</var> system/view/screen-face/size/x <var class="dt-function">></var> <var class="dt-integer">900</var> [<br />
main/size <var class="dt-function">*</var> <var class="dt-pair">1x0</var> <var class="dt-function">+</var> <var class="dt-pair">8x0</var>][<var class="dt-pair">300x300</var>]<br />
<var class="dt-function">view</var> main<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com3tag:blogger.com,1999:blog-3451700962271094262.post-64583980546965806692014-03-19T06:05:00.002-07:002014-03-19T06:05:54.268-07:00Rebol desktop sourceThe Rebol destkop viewtop sources are here: <a href="https://mega.co.nz/#!oF4WlZzK!jDI-QPZD-fZgEomTul5orfMxN-9fj5gjAfKmrxHF-uE">https://mega.co.nz/#!oF4WlZzK!jDI-QPZD-fZgEomTul5orfMxN-9fj5gjAfKmrxHF-uE</a><br />
<br />
<a href="http://4.bp.blogspot.com/-9YLkJl0nnk8/UymVeFexSgI/AAAAAAAACTs/qj738PKraaE/s1600/Viewtop.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-9YLkJl0nnk8/UymVeFexSgI/AAAAAAAACTs/qj738PKraaE/s320/Viewtop.jpg" /></a><br />
<br />
If you want to build it you can use the Volker script: <br />
<br />
<a href="http://2.bp.blogspot.com/-3ZLPLsusqYI/UymVuuFt_rI/AAAAAAAACTw/B3D9TXB0Np4/s1600/Volker.jpg" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-3ZLPLsusqYI/UymVuuFt_rI/AAAAAAAACTw/B3D9TXB0Np4/s320/Volker.jpg" /></a><br />
<br />
Here the source of the builder script made by Volker:<br />
<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "View-Desktop packed by Volker"<br />
Date: 10-Jan-2004/9:36:17+1:00<br />
Version: 0.0.0.2<br />
Author: "Volker Nitsch (of package)"<br />
Purpose: {Make it easier to install and run open source /view-desktop}<br />
App-Header: [<br />
Title: "REBOL/View Desktop - Main Module"<br />
Version: 1.2.0.2<br />
Author: "Carl Sassenrath"<br />
Rights: "Copyright REBOL Technologies 1999-2003"<br />
Tabs: "Tabspace is 4. PLEASE KEEP IT THAT WAY."<br />
License: {<br />
This software is the property of REBOL Technologies and is<br />
licensed to you under the terms of the REBOL/View Desktop<br />
License (included in this distribution).<br />
}<br />
History: [<br />
Note {History shared for application, source and main file.}<br />
Application [<br />
"Volker Nitsch" 10-Jan-2004<br />
"desktop restartable, desktop-url-argument."<br />
"Volker Nitsch" 29-Oct-2003 12-Nov-2003<br />
"%build.r, %do.r, %zip-desktop.r added"<br />
"small changes in %vt-main.r"<br />
]<br />
Source [<br />
"Volker Nitsch" 10-Jan-2004<br />
%zip-desktop.r "%#-files removed, filelist clickable."<br />
%vt-main.r "desktop restartable, desktop-url-argument."<br />
]<br />
%vt-main.r [<br />
"Volker Nitsch" 10-Jan-2004<br />
"desktop restartable, desktop-url-argument."<br />
"Volker Nitsch" 29-Oct-2003 12-Nov-2003<br />
"prebols without sdk (#if added)"<br />
{test-mode can be command-line argument (outcommented)}<br />
"reformatted with clean-script" "(really no big stuff)"<br />
]<br />
]<br />
]<br />
File: %unzip-desktop.r<br />
Library: [<br />
level: 'advanced<br />
platform: 'all<br />
type: [demo tool]<br />
domain: [gui ui user-interface vid web]<br />
tested-under: [<br />
[view 1.2.1.4.2 on [linux windows]]<br />
[view 1.2.10.4.2 on [linux]]<br />
]<br />
support: none<br />
license: 'rvd<br />
comment: {<br />
^-^-^-This software is the property of REBOL Technologies and is<br />
^-^-^-licensed to you under the terms of the REBOL/View Desktop<br />
^-^-^-License (included in this distribution).<br />
^-^-}<br />
see-also: none<br />
]]<br />
<var class="dt-function">either</var> <var class="dt-function">exists?</var> <var class="dt-set-word">unzip:</var> <var class="dt-file">%desktop-src/</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">confirm</var> <var class="dt-function">reform</var> [<br />
<var class="dt-function">clean-path</var> unzip <var class="dt-string">"exists."</var><br />
<var class="dt-string">"There will be no overwrite questions. Continue?"</var><br />
] [<var class="dt-function">quit</var>]<br />
] [<var class="dt-function">make-dir</var> unzip]<br />
<var class="dt-function">write</var> unzip/build.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJxdUDFyhDAMrPErNJ6hBPc0V+QJKRkKB8ShHFhEFlz4fWwuuZ<br />
mLK3u9q12t4AfPbWdohMAK+E1R4wUGkgZKxaiuXfwNqwRksDOB<br />
qzjcGlDZ0KxCQWGJ1wY+mQLYVfI8Clew0M/oQ7V6nbLSDRhvym<br />
stZpx9nLLKDOy8XCOUD10tIDhsPUJb7lotnkItr+LObGEnvOfA<br />
PYeRZAF7F1KEXw4oQ4riYaQZgUc4eBPoJ6YeL7Y1xRm3EBxZlh<br />
bs28Qc8cFO0N+Y2namSCYZb1Ksry2VUeWX4zAf7rwpaVKVde2W<br />
o3pmzKuBffc7WlMkw+KR73QQ9MO/OorOdOZZxcsfxCMqLi72Qq<br />
ueBJPPD16TlV22AQAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/do.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJxVT7sOgzAM3P0VbiqkdqDsLHwIYjDEtBEhQUnaUqkfX7AKEj<br />
dYPp9fF7j1tm4ARjKuxMCkMXulfKW3AKZH5xPybGKKFUZyuvVz<br />
iVnimIp6pIFzbcImNBB4stRxQdbiugPV2bjOPjUrVNormChERu<br />
uXO6LX5D5YA/4ROWFvLEs44WUXVlRSPZTewSTezheljIqJQ+d1<br />
z74YBzMJbRqwiy35v9q9Qfcgdz+4Au3lVxD8AFYfWt4yAQAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/license.txt <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyVk1GP4jYQx9/9KUb31JNSrtf2qX0yiQFLIaa2A7eP2cSAdU<br />
mMHLOr/fYdGzjY6npVkZZ14pn//Oc3g2RzUX7aWvMKhZm+BneC<br />
0rZmnAx8nv1Cfv7hhxB9tBNMbh9eG28Az7k7vXl7OAaQURm0aY<br />
+j693BmmkGtO8h3U7gzWT8i+lm5BKIuQ2+PNgpGG86CL7pzND4<br />
r+D239MiRJoOg719PgfrRmjGDs5oG8PDo6sM7IgPZ9+aFPNsx8<br />
a/wd75YcrIqw1HcB7if3cOMLjO7m3bRMkMYlMn4wcbAlo6efdi<br />
u+jt2AT8MmTv+t692vEArRs7G5OmlDSY8Achn2fw3uT04KV1Hc<br />
adp4BdhwbfoyA0z+4lXl0hEgAYXcCBZJemehSLHd7LZampmHs3<br />
gyXbvrGD8Yjp1++aeKBwMYERp755+7ELQM5I4eCbAabQ+HA+3e<br />
t3rj0PZgzNbRyfkKvDGx8Fhgbnapt+umNM7FPm4xyTG4xzyAVD<br />
uzOWjaxR4x++/g+TmP4Oy28z0Bhw2dXg7h7M+/WJy4HXcbNsiL<br />
xQ+w1OZ39yUzLVOTNFPHCwaO7NnVPhb7oxUd92efq3ZUYd8vsM<br />
+D6p721vrnuU1tF0WRK9PV0DEqm28ThHBDXYEeHfZzXFCYW4Dm<br />
ldo7H22IwHcyVzqXGbHU7ndo1wim+k8Ce+4gqUWOgdlQzwvJFi<br />
ywtWwAeq8PkD0KrAvydgXzaSKYU3QgJfb0rOCoJZklaaM5UBr/<br />
KyLni1zGBea6iEhpKvucYMLTLQK3ZLg3saiAVZM5mv8JHOecn1<br />
U6q44LrCarDAYhQ2VGqe1yWVsKnlRigG0W7BVV5SvmbFjPAKKw<br />
LbskqDWtGyvE2C5atKlGKZiqFzrSAXlZYcTQqpYM7QJp2XLNYi<br />
sdOCS5br2ND9lCMTdFhmoDYs5/HAvjBsh8qnLOqipmJ/1RiEl6<br />
Sga7rEgj/9BxSkndeSraNrsQBVz5XmutaMLIUokmHF5JbnTP0J<br />
pVCRF9SKZVBQTVNhlEBYeI3nea14xIY0NJOy3mguqo+wEjsEgx<br />
5pHecX+YoqDRWHIuRTFI0MEv4MdiuG72VEmkjRiEAhsVw/hmE9<br />
BKgfeoSKLUu+ZFXO8JaIqLLjin3EaXEVA/il7I5izTq1HNcCXV<br />
2OD7uYpVkCXxBabHlau0swTl/x66YkZPkKLrhn5G9ewy9i8AYA<br />
AA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/prebol.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyVWG2P27gR/mz/iqmC4DbproxNgvvgoFjk0hy66F0TZJN+Mf<br />
yBlmhbXUlURWqd7ct/7zMzpCwnzhUXICuJHM77PDP0x3c/vf+F<br />
VvPZpyrUdknZh95uXE1X9H67rYrK1PRRSLDe9a6w3rs+m8/+bn<br />
tfuXZJ1/l1/mI+ezOEveuXtMremr6mO+O9bXsT9hllf3H1zvb0<br />
137wNlvPZx+GvnMewv49n80+7S25U1HdRFROb12zqVrrqRnqUH<br />
W1xSHvhr7AuZ5KEwxtqxr7VRscGfJVu6ttZOWG0A1BCHKcu22L<br />
eihBGyB1O9Q1de4A1dxW6S/J1LU7gAM9uoGCwxn7YOrBBEumfY<br />
xc7Reo6Nl+KoeeqaO+eM3pDbPwONnYfseb4F640l6KspdUNWZn<br />
/SXBiLYE15Ic1OkpPHbQzG1xUgzKie6GrnN98DjfllWAQDjpKJ<br />
2ZDMWeDEubklRiZ5QdmYmj1R2Vh596Ww6FLXFSjYo+ZWo6VGEP<br />
OaGHOztTgNElVGga2wbIhMo4pTLigb01JTICTBv3YMsc6ZIcwt<br />
J6WwzIlwd7KcGL+tkyRq4wLUek8bZ+sGJsMFUrEiHLaxyiixHG<br />
/85nH6vdPnhk0GfPYk1vNXJgiSRoXFltH8ESotWsS9rA7mbwYT<br />
67t7bTPdWaE8cUAZm2N+2Ok8NJfoxZ+aC5Pp/xedpAVAdlYCZt<br />
UkZ8ssW+dbXbVTh/OBxyWc5hQU53lv1VHJnvQ+iWiwWTSbEx2W<br />
JrbbkxxX2+D02dw8TPHmmiNfJz75rkDapRDIg7qi0UQ7jkIjB1<br />
ZfwShLNYvJ5riDmzcYg4nhr6vJ8nfqo4fO1dLaXki77qgrAp3c<br />
L0O09PRzarp4nR08QJlQzamKJwxrRsx9gJuycpV55KIfb0H7rg<br />
tytO5WdTiitNiKcdkAMy+etaT73Qx8v1CbkPUn7KN3wJv8EZIG<br />
L6x0iKjzOkpaMVf0UZ2/hFK6RDe7WpXXGvW7aSij2zjbXa20QL<br />
4jctDW1dNRW7qB2ajcLNpIgFAvABeNNS2NhjultFiKK3JmjCDV<br />
JUnKCsb/RzThd3DtDC4MHIZUoIs4cxDJcE4DTeUmPuLUAD9QIO<br />
jyzuB4bHngtjhtQuXRvLH9xzemcALynzzHZrC+gIGGcTnlTeD6<br />
yqYDCfgVMjiije2RxwKJV2mhumbV2Ud9wAajzj2obX/KMPtlm4<br />
juHMLzRyVxvDPePHV0SvE5CJZEjlrasfX83ntu+5C22HtqBV43<br />
eIR4cMQen7He1NHcA9yrtSVRPxfPY6gRadACKbQhLPnH5lYKli<br />
/4hrH20YekTRV//iHrOp72mFVqEp8Ic1ZT/xCzssMgQCRBXQR/<br />
kUraChRYtk6rtg+sAR5h0QLHAaGCQoK+Zy5lDRlMSJRqHpSIol<br />
pTl2/Hy9QuqVTlI7GSjnIjfNtjVbDbPfpQ436Wsc72OuVAFH1E<br />
wTD3M7RYUMrbfhhvBnwf3xB91EGqmeLGCmEVhlz58/z0TzTIBU<br />
OYIhixcEapF8ywzwXZeU6pD/L5XrfMYVNTV0KQJGeFkhMxKslc<br />
fxAM/aGW432noF7Lj5cjPR9F0KxQI9RDzNyzCOdxbX9Cc2i3F1<br />
pe1t0SFEyvrFOnGA6GhQFaLaX6OUqGcOFNBZ9bhuKHCbMok+OR<br />
thK52Nn3L6AsAytSuOFP5ZnjjG0pkwZg8e9pxMK9Qgoc/WN8jk<br />
e8kY5MKd5mjXm11jPKAIE0zEA7oQyOBei2TmCri9u/v8TnTh2e<br />
WZMBCgAMnWxX4MyNIJrTUNMMFo3WjfQur2tmV1I6IKpIhC8Luo<br />
NEOcl7ogn6/pdsv5yDNMS09u//b2l89/fqfl1VgZoqTnRIbbCv<br />
pMU0YSUDnLmKW8X+gCauFYAnG0ojG9Lv7h4AxpIIzkS/5Df6Rr<br />
aR6cL2LNDS2FQlI/yYi1GIcuWvHqGiHdwgvIdiia8rZBNVebqq<br />
7CozBYJ83i7AoW/xwq6Bi9CmfvBh7MlkkLjivv3Oj+SjBRy++2<br />
Ra1VZaxC2T7WfKo80W0U+zMTSb3aL5U/lSIr/oycqQBRh/PyHH<br />
8GuaVAHRzJj8hMPeORWKjWtn48hgeTZJDmlaI6aiTyb0jLOSDr<br />
MU6iX52LvkRGCcvKm76hJX/p+jd2iEaZtpZMQaGCdSZEg2SltU<br />
bnhmPEPtquNsWo6NhHpZx4yOVxOk3oasYUYLiTvFDjALJxIam5<br />
XkUhqWed3iHGxo9LxO1We73CUzxmGGyvGHAjnmN4UCns2ojicq<br />
MKx3uDdrzI4T0LPFSe7zVOohwZmO8c14Me1hf7RWm3hmkm8ZDx<br />
C4zHMUzTUp2KsEgv02LVlfPOGpH7WHXaiiZelGhHxvEh4x5L5+<br />
d4l0rD3TgVnlVEpfHKy++o9nKi2u9RKg2aKIjx/bxycfD8vYry<br />
IV159R3V0/pE06jJqSWqPp7M8mvfnkz3Ys3ZgV/nfRn38zxPdm<br />
DGWSKhO3TBtMTkXLs9I8fUQsCG5ZlValYMTel1FmwE0UV2cKLK<br />
2P6P7po20t+mxyyLu57MZKtxYEsqr/9faoh/F4x2sg4uUyfGgu<br />
dGsGudzmQXhRuAP3wjJQH2OJOftGT8Azs0K5468DYfecp4JWy/<br />
JoiDQnIm7i6NXJZFsZVOfgIGaHayuVLfno7Weo53Ij9+lfneBs<br />
58dSDA4UrbYRz79R4qF9D5HIIeKnu4YanSdVpELR0VTfR9KX3R<br />
euW1CPxrFmW3bfr15yaj7D2ik81nZ/igo4b1lFl8wczBvhgPJF<br />
1Fcvo4J3rhzQPkvz/+/MQK3GHxRIEjv6TBkWl6Ux3W4gpGWZ5R<br />
IR4XmiVlv1bxN5bRUOIxaxwKsnmyKZ24nVCmzgyq1Mq/ok78J7<br />
+jfSMgKXpGAoY0UTlON7zGdx4J8Dey3sq1UAbxSH+0Cqdk4NAW<br />
z8199dXYHpmt+e4TWzjYSradS00dvwUDkhoSsjEiku7SbdP15U<br />
O6p2IIEBDJNo/B+mw9SdKDQVniUvA/MIe9ilcVAAA=<br />
}</var><br />
<var class="dt-function">write</var> unzip/readme.txt <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJx1kM1qwzAQhO96ij0m0Lg/b9DGLoSGBJy0d9lax0tlrauVHP<br />
z2lW1oA6U6SWJn5psti5fj/v6D8Ao5ymfgHh6zp+xBbf45Sp1b<br />
EhBuwlV7hHQPLULvuUcfRuAGyskTzli3ji1fCAW0M9OkpRqdoI<br />
HAauQI0Rn0sz6g72QST4/yL9R+UcKKXG2jSRbk0iyJMiTBUxUD<br />
sVtnCY+h9qgDgoYBvaTvH6jF80qhnbVgFvc7EOp6O4KPDorD6/<br />
O2UKulxSl/A49fkTya9VwjNR3IIAxh02lymQe9rEA4+hqhIYsJ<br />
YxemwtoKQ88iVNlUkueE22ioOXklBw1Se+rDshN1g1uN0LGhZi<br />
R3mYN2h+3+PS9O0HB08yJ+WVJEhZAfJSFsyrP6BuW/ntbgAQAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-connect.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJx9Vdtu4zYQfZa+YqqnXbS27N6AeNGmbjZtgwZJkLgbFIYfaG<br />
kUsZZJlaTiGEH+vWfoS+zNoi+yJc7tnDkzvD3/9fqSpmky0aHh<br />
EWW38iH/pHlFH9kvgm2pR1ccVtYt6Mwaw0XQ1vgsTT6x8/g7om<br />
F/0B+kybgLtXWIcaZcQ3fKezZOhRqmt/qhDl6ObLt28kIxEU24<br />
qI1t7INmT8OTk5Pet4PBd/CYqLnYy0+rCibt6fs+3Vyej+/O6c<br />
/z8xu6mNDkj/GE7sd/9+FwqQs2HhCe0ySZ1LD3tgor5aJvqJla<br />
Z1t2YU22+lJ2ZUpYwrnZRCopWFrbjjpTsosRArulF3d5ecsUfL<br />
dV0DttiqYrEUQbWKOCUvvg9LwT9t730+QlnaVpsSXUPIzIWMNE<br />
HzYOsdqCfcz2arX36D0i74hq5WmqTWVn0sMPuwbFAOW2fUAhrx<br />
cG1RsOEWdRc7GInx3PbdMv7JK8DkyVddS1pQrsUaM+zE3Tw2or<br />
1QAmP+kwS5PDg+A6ThNf21XPBxU6T9nrcbY9AbgHB3S5sTur4W<br />
BAwzQp5x0yZVsgXJ5muxLwH6lYo2pHqmkEcfJ6hhdl1jStNPBN<br />
vS0WogA8f6AHNux0MSO/9oGXuQf8Jfu85Ep1TchRzdM6D+sW+O<br />
Hdi0xkq9Wqv2cnQ+pEiB6BMVX2Qu26fI9iw1jOT62QW4fQjvL8<br />
yD+Xfm3t+o5GRyykyUywROjZtWm0YRB1zBQNhZ1ENfqRT3csJ0<br />
XDykExJT/1CgVYUmVF7Jx1pzACHyXaLyQ7aWGUiuRCIIwCZedi<br />
Sdbs+2wNpgxRvUijtS5s1AsRVczlXBWLX/ag+jSplVnIkMgEJr<br />
Nd0Uulza6vjqGp5WFL3yoyZFD/Kg96yfsYO/Fkx+xU1f/R8yb7<br />
85kyxoYdvD7dY48JE3YTqP8Cr8BQ0/MZ5n4hVGSNLVSTSZk7t5<br />
fPq9qYHDQkzgNKlaneiwifO1PQtLY+QJOxB1/NKI/epFsqI8OG<br />
PBd+O8K/iX4vbkiVpdvOv5DlWy50pcFeDDZfU2kFhzKk/BpJPl<br />
7dUWPtomv7EuajJcHtOHTOYIUF3Wzn/d+OEUA2B1rYNiwdgQYQ<br />
KMoGJ22LgSljmN//uiB+ZBM8rTRY8kGe8/16gu+7OReqg17ux1<br />
jJ0AqwNVy+/4aw7KJ6JBC+X11PYgnYkMEBv9jttBB9hayNAseP<br />
VpdkUKhglMNYTVzrWlY12aaklYq7/JiI2llj0aIjPj6fCaF9RL<br />
gOjGygldKBSuMxtHmMEQW3pU7GXSaow53m+B/kgpY3xlnsxQw7<br />
G91vZDbi/vR2ybTENEJfMttIjysBfd50W3zSBNcmrkzp+4ji3g<br />
KDDnLmyue7HR/r+nGAAKtaN0zTQwy6HaGB7XoTdRbVk0SPDTwa<br />
yighjaGvX2fjC4tXaiCzWRyxkoN5EWIN/fzTTqCSNN5Tc9CymE<br />
Vwb24FfGos9BDLAPhWZiL9Dzo4zlxqCAAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-editor.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJydWW2P28YR/kz9irWC4M5JKUrn68GR0Rque26LJnFiXxMUAg<br />
usyNWJNUUy5OpOatH/3mdmdpfUy8VFActH7s7O7s4888oPt394<br />
/61ajKK7wpZmrsYfaCD5qTCP6o+m+2TrRsXqu6Iq1J3ZWXWbF7<br />
Zux6PoJ9N2RV3N1WwynUxH0ZutXdctGLzVbak+6q4zVavtGqQf<br />
ivu17WiqbvYtvSjeBRyzdVWX9X1hOjX75ptv4qvp9AVW3Okl0d<br />
OfRmdGFZ26nqgfvr198/FW/fX29gf1lzt19+c3d+rnN3+fYMG3<br />
RWaqDuf/9yiK7tag7+qVfdQtr7Vro5q2bkxr96pendtdVzkosb<br />
gUTrmytdrXW7WtctMyB2vaTUfL6eVUTFjrTqEuiyortzmYFBWo<br />
cYK86GxbLLcWIns+GUX/GaWj0as4Vros60dVWNpuaVS3bZqywM<br />
LHwq6x444m6mejUVlUn+LWlNoWDyZuINi5Wm2rTC3GH8ymfjBK<br />
KOraqlVbb5RWq6LEtUkF8piUdaZLtUpJ3Qb8ca8VuBRVnmy0zd<br />
ZC1vNZZNAX6Bc0ntKJM7uLDRAwB4tR1LRmBTU5VrTutVqE5QkR<br />
xkwzabHnA2R1ZmIU5QXU4tiudNmZUUQyi2nXuarqyqhXCkioy6<br />
01/a0clW4aIcL7bK46/Nb4rWZuFFcN281VVlcsVEggqlerzmDP<br />
6+nuGgCOuuJf2O+GXl/S+2OrwbquRlHKXOKynqtSAxQ2kbXMpr<br />
N7nMju1ANzXtZlTiyvrtQKm5EQy7rF1ospGYoCwiful6ZqU+Q5<br />
VgM2QJfCPZ89e6YyXVUQP22wI1zEM3c6PtyLq6mqYUWA1lSJeU<br />
yVztq6I/jiHOP3janGagG8V7HuUjf6vXnEYAUliDpl9B20j2EC<br />
QUzn9+Mf9YPBeIc/B/Q0Hr/pxupm6mb7HX7cFhZrfsEfVieNNz<br />
pXL2meZIPdoNKxyGhZ6uyTEnfgxPCCxAZiUqC2eCAtFtWqxgxL<br />
dKk7E7NA1dcQ8oT/ga41dttWtA2tbI1WN1fXLCnRQaU3UC094z<br />
I7k6dAUKvVwrKfuXrpBAos7K5TBT7RYohKXe3VYAAozUzC769T<br />
umTE1iqaBgQrWLRaGVPO1UZ/MvyoFq3JW/0oqORVBNWuLMi9zG<br />
74sIsOaizLmA9nZwAz6FI13U0d/hK3RS8HQn2yKvU9IYxwyjrp<br />
kSpIF7jMpruZh8zL3XXA7tJWCq7J1iBhcQ6QPCaHr0jr6n1D3g<br />
uqB5FDrFPwlJkRG4+bNa4VN3WzbVSAkGpNty0hTttuGU9hgXrT<br />
TSaTw2WeeIAxpieQISJ9X6vTrRh5kH4gfqurzJQHRKmYsxPTGY<br />
GOohV5xSV+GX5N8CNsI0eSfcUS7MRpyjOJlUUMLPV26VVws5vd<br />
UJTRS2CCrW8+JqCzIzYQ+KIzuiVfvEpYC6ssybXV4hm9RZG46Y<br />
ROay+nwZA/tzpYirZE5PzY14r8CjHFlbO1gWEKBsbfcWDIIJ7x<br />
6JXfHA8kFyF0V/lbx24ZoKjGjv3yhP3gvEE124oiQ1JX5V45ET<br />
sdubdzoM8NYT4mQ8Q1FOx4aXIsAWrYi0topGeOds56ZI7+Z1cx<br />
eAeiLjsZUF+p2W76nEZWYQSW85xN1l0p2QHG/Qtu6NglOyHj5/<br />
08DO/ZmzkS2RPLYsQqXgEyQAiIRJ7gw1nK91nhSoj1eQ2UcbhZ<br />
w7vwdWQjdiv3/T4qgdPZKTgPg2CX806xJBKzAfRdPFxrcEVqkr<br />
pQ1lKIRNAfj1loPnAmPlaKHOXtkEJk2cuZ7lvDEwM9j6piLBZt<br />
Z1W/hLeMEL8NHdO2MPl/1rCRxaMaI/kbUCZzYvFIEiIMpxycC0<br />
tJHfHBWrmZi3juWhy2eJNipTig0sXZgS/MTsKT5Bit+WVrOste<br />
KvlkTJPwk6WUWIVcBL7KlCazPrVCZKYNEc8k4vYbIamT7ZXwbw<br />
rYCb/PUgoEZIK9SfKpA7XcxIfpgeKfvkTPoAeOc5snohCmHND6<br />
i31pzaaZ2N3/KpJz0kBIliTGvXPIHbuA8P+KZpAHimyiEE1oFn<br />
FkcFuhO6/6/q4+aVEBAjN2lfOeRgad17mnKKjY6lazALyen5Xl<br />
NKOhlMnVweqzCcuQ3TDNACtJKkIeTMdniZGlcIJNDw+63JrX6g<br />
IVVh53pn3gQBzSYeWJ425fZdi9qqAnk/PaXpiwYL5B91r5lUIA<br />
axwUAsOS40BEkYMIrlrBtDcIAU1ZIz5QebSp82JFdQxzWlKmB3<br />
OhGTnva4JEutg2fXIZlOkGD6HPUpASw19f57lTgTt+6jzK8fjn<br />
bpIOvIeTD4ePYdVExuHPwuO/g/wBcaEagIfu4ourE2SJ5OWYYG<br />
Tatm4h/paskQjhL0VkKZMEEddIlA3c6Qbl3lupDgLpXMo7zkPP<br />
gNlHEwIITbBnZxcqe/SD6REcPQbPwBJxh9KKuZrKPCWsiSSvc0<br />
lXIxtO4mk5sFg2lXPhLtoi0c+2HScpHPU4hGCEI1fU7Tu4qYST<br />
hQw5vrAW25NQKQmjy9Z0B/zD1D2MhtOKiwpI02WBymWbwZWIAG<br />
ShU+ZxDRCkki78VumCM1viktfHGA58e3y4irmzurWE02Rj7LrO<br />
B87lAsspNpcagFwnCOnbFv5kkx/gjTYMRZffEvAahIqQGQdavB<br />
xaGAkWTsLnYE8lZtFw2OchJ7ChUhbB+QEhgZobyPk4BXD3P0UU<br />
HYvaIR9tW1T3ivNiDDk9C0BYTv6l1AhOnK/wEyWo7hHmfZiyCw<br />
zDVR3PEzhR3UMvCL0hzIkkJLceRX1CutbVvUFwvdAZXIq2xidm<br />
jiIgd7VyAYrT8pCXItmhE1PCLF7ljKwpyyZns3KyckCBHdFpVT<br />
/hSkrO35iAoSpUzkJSLjm8xDhfigZyo//9CIuvkeqbDkJnHZ53<br />
kJozs6du5AIvE7LuhyTiAQ8U+tkVZ+yf/6S9B+el+l5TJd8b3k<br />
AoJzyGAsL+XkauIUJPYSjIK8BsuGvFIDsVxrn4wS6XVl24U9EJ<br />
w0kOr83uiqU1cIVnfSE7Vi/EIOMD0nVxvy6p4RI7obhFZ/j9yl<br />
pkHYQhZiC3sMfKkmAuISVyTQ2K/7Kdmx2I78KL7pQTZOdEmNU5<br />
xiBF+BZuqmb1lvpIRhndFZwDEYkLNKxBfzKnXmcYPWuXMYg9i/<br />
XJLq5zQ6nCM2GVOuny8kVRIY8hFkWp5o26oFFPwbI/JsDWfp6u<br />
dDJPD762yWs+hfMcXnpDETmJ7PZygR0KzUvWG+hiV3TbGd2e6t<br />
jDAH0mYm+ol7ib+iISJeQVlu32w0h/6erJ3f75r5eY4ggXHbaf<br />
ORV/MvsN9VLprF+M//HxuLGIsZ+PG4cY+/HM2PvDxiZGvj/qam<br />
LoFkMuAruRd8c9Toz9yY+xx6DBdy+OqN79lhn1zcx7E2+b0KeT<br />
RABoVvEszOf1Y3WGwstiMOE1SstU5UpwL2/3gLLhUlXqK8LOK2<br />
oOczUzS6iXycr6DTWBKBssAV7WnvtCgdC0BUYoz8I6Wn/p8g7e<br />
bxE6BuliyC/9nHqfexV3rOzjjqXcsqiKYcyVtsCgJdoPiAXmxq<br />
JGCYk3tXU4eUi9F3ssqA/FY4ndN84n+ia+wxO3AyQR9gej6x9q<br />
Q/IT4eT6N/vDNSKfEw2eXSINJ38a/8rym053N9eHHREh8cktbx<br />
nOHaa5BPYe1PnQiGwIZxqKgUbEshxJVtbkmw5Mxq/nJSHzFyXx<br />
F5nTgocqJvzix7rN01/vPJBPBfWi/xITFg5LAPcNxyeEkKwxqP<br />
IRR9dw39QmovaO1EbUD9Jt91SR4CDsk1UjqSpdzDydmh02zdJQ<br />
fu3AGeWv60YNvxM5kIZWFRW2CdWgPcS8E6XPRK/nw24VjfQn6l<br />
tnR900d4p6a7siR0E7jLYiIu5vikse8oJPuJru6HuBqPZgG/81<br />
6xha6aiH51HbjmYOU9+kll6/k+/YffXlKop8BB8dJu6/WEmwrL<br />
uuWEpjjAMQxWinXmLPkZZ7RHIv/mjiKzCvnFMKn4UH9Y1OW2Yk<br />
xxlK8tJU93b9tCgbTd6APDoBsWM7gCUYvt7TVhCSuE0z/Hjq6j<br />
fZfgkSvPkvpC6xCN9L/YdHX036pk5o5hy2ZKRe3zQnrZqLPHxt<br />
dr0aUKkv3Sh/Wp20/WrG7dro3B1XPsAeUb8i8st7qIw+V2+aZK<br />
YuHuTz/nP1e/VF9tDF7p2RtODsnISx8Bf0qYu/HjkFP5cEP8NC<br />
9VYubuIcme9nuNa9sPTGytfqvyX7q0DLRWM7dyXScaLb+46l0z<br />
dUzunpVEfDS0VPHE+98lfw/pQ+6AuQgjpieYeI/wtNv35vZyEA<br />
AA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-emailer.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJx9Vm1v2zYQ/iz9iqv2YW+Q5aRd0aofgizzsGIZFsRGh8LwAF<br />
o6WVxkUiWp2F7R/747krKdbFiA2CZ5d7znuedOup/9+PstLNNk<br />
IV2HJWT3vFF8kLiDn9A+ON1DDrOtkB2aLE0+oLFSqxIuJtPJNE<br />
2uB9dqQ343wnQwF9aiMsK1ZHovN62zfKT7g+EF+OCwwKpVutMb<br />
iRYu3r59m19Opy/JYyHWbM9fvagQpIVXE7i7nV3PZ/DrbHYH7x<br />
ew+OV6AX9cf5yQw62sUFlK+3OaJIuW7K1u3E4Y7+tahN7oHo07<br />
gG7+63aharIk5y5EqsFpOOgBBlWj8REcmq1ld178mx3yjVnAN1<br />
JV3VBTEKnImjKopXVGrgdHlH07SZMv6SpNRScf8aoEZwZM08rt<br />
cwz0llBp5XDvuB5N7nQJTV5V/Okt+Icd1n9h5fjn1m5KUFpRkO<br />
RdfiwSdIIAuDJNOgpAkRLrDh3h2IOPvdZdDW+m+8tX4ItyNFg7<br />
BZSq0yocHw8acmgk0ufLaTwQldGWWKEIhPX1/jWEil3uL+iUrs<br />
oWuszA/0Uk5G7QDUZFg5ubk4EH+dzgZ6O3weSIX6pGcxLQCyNg<br />
uXrqMI/cZE94eh72N7RWbNBbeQpJLQJ2RvQBHkU/2q+x0zsQLp<br />
gWumksOvg+Lq38G+E7mO4vaOuHff7mMrIw3TNHzGc2R1Vn8FX2<br />
5zyDJSW1lS6AWY0WNx0KQ4cVf+eiOz/RFjNAW4ke2YCW5EznpK<br />
LkaF9CrUnKXOl34KNBFFSomiUpROuwhk7TTiS1YFEQTdpswR6s<br />
w20xWDSFPxwdI2A29Z686KTCvCOBRxGSWloiK8TW1WB94UOu58<br />
BLaAVlS3OilmoDfBm0tYFYsVUEwsT5lgtOHD54cEmFbQO1tJ5M<br />
eBIkKMmYkBujzRX11sHHSWRDAXp3uPLZFKG7vFFOTZKTCzLfCa<br />
dRUvKiLojSk3GMobQ7xamqGEf0PWfpIZy5xnMfl5CVsBUPOJJr<br />
Hc0cYepAsNfE2NDx58mZERctCh5F/pJTGZgyMll5kIN6pIlUaN<br />
UdILLE24Ik4CCbMdpxP9A5gZsWq4eoDz8FK79Bk8OAQrfT5oFc<br />
3NB7cv/3mlGXZ1d+5DABIBd7jajYw4Vgo36D2zP50uap7ASZr+<br />
Tqn1/ejbKiZvz6qPVBVT5Kdqd7C0MPAj4NkkCFRDhjND6DgoZ8<br />
Nu+xks2BrJwwG4ok6trQbGCDuLPk6a02L0KEF1yTIhbp3H/c4o<br />
5g710rTr7eqdOV6GisfEoDlaSoNe09XBEUWPKcDkObl0APE3rm<br />
5A1Pkk6v0qMAw4Mj6HqsrYdWCcXna/Qkw64lumlWcT4eb4J76Q<br />
Lzp1isvef9fhQpqWGLtqixEUPnilbb2JgJgSgZyYCWQH4+qzRV<br />
wxFiywMVttJalltDQ9zXcxRVb7ChplMV2gnHS+ZENBlsKa3d1R<br />
dua1JdBtn7jdKGxh+9WZBxl62OraiIBMqA+phgjdt+g1LIGc0q<br />
gj3OyACcyr48djY/bftDLH5kZqzk8mkzRlOu6+rZdEu8KhX9O3<br />
6B4gJmp7elFT/v340KrXWOj1Qg+w/7y/7VdQkAAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-folder.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyNV91v2zYQf5b+ioP30GarrKTrQ+uuC7I2+8ACrEiDDoOhB0<br />
aiYi4yKZBUYm/Y/767IyVLttMNMGzrvngfvzueri9/+O0Klmly<br />
o3wjFzC7JkL+WclH+CDdvTctZPCjaSpp3SxNPuOPMnoBZ/PT+W<br />
maXHR+ZSzqvRe2gU/COamt8CsUvVZ3K++IZdqtpQdg43Ajy5U2<br />
jblT0sHZmzdvspenp9+ixo24JXn6aUUpQTl4NYePV5cXny7h18<br />
vLj/DLDdz8fHEDv1/8MUeFK1VK7dDtv9MkuVmhvDO1fxSWdf1K<br />
QmtNK63fgqmPnS50hZKo3ARLFXgDW9NBpzFgtuClXTtSp4fD7K<br />
Bu9AKeK102XYVGlEZp9KBSzlt123lM2ck8Tf5JizQlTtZijhag<br />
jZZJ8hboiU4uO2ul9lBzvtPwkzkvyvsFLAuUvMW/3uKX0ndRzK<br />
WpW5nHLDwtoO50CcvwBHljStHwAQWV+S38pB6kBhGVmfMCGiMq<br />
DjBQnzkMoZIbqFUjI1d5R+qtlbVEJ7E8JWbRuheg1uIOpSiXsq<br />
5l6V14aARm0pMiqNJohwlQNcd83p++FA1WB2YBYLASDvns03wG<br />
cqN8kSYhVTElZEHoLSw725yHvJGP57sIe/muaTjLzEEyKj5vhP<br />
P8fALv4KtZPoNlkKbvnEOeWzwykQqTYaFPKSUgCxlhk8tRDflg<br />
OjcJsWB+jF3DEjtCa+MB8ad7Q7PoJkWGGkVwi01+9z20qryHcc<br />
3hDJYKkWX9lMxGUJfLztqckiCTe+rkXgY/ZSOFhcqXWY1NlbdC<br />
yzSp/B1r5rXRPudKLqZW5MZnTIfbBg8tjupgu1pZdQiG5RHuxK<br />
B5QP8DuTTrtpFrQvoRrYKPqoO30bNog59GXEbeAjCHUYAJsOR6<br />
OVHLLBDG3LH1ANdp4IGGPrZII18Ys1gBrD/sacKzWnkEcYs1Ps<br />
4M+v351AWMUYSIFOWK+2KPOxgb1QvW4h5jIWH6CnUN7ZUFtb3y<br />
MjIC5+3gFw0fmh/DpKiMdHEoGJ4sNIOwwR+U6VyP2TSxco3Fm0<br />
AwTcYdcIjbtO+gQQyWoyG1IxeB/CgbBAXWpojD7NaY+7Ww9+7p<br />
eQabbRxpVzSfBPQ6k9lFYd1Z09Gg359TL0gZ3dQHo4qFyBEkzX<br />
ct9Jg5VcUU74+Z0YBiuDw1OtIvDopd3NNZwagNxx9tiYMW6KVj<br />
i/xHR+zUI3YH/f/RIgc9Mtbcb5ED3hMdstnijvF6c/bqy93Cc3<br />
dqmxuG2Iu9tiHZ6OijsdU5E/MO52tWCS9y5eU6WEyOcMa1PsIm<br />
tSLtVU1dO4lZ22yJRLEw2am/JHwNp5sz+AbXBSRlYdNh2gkSWS<br />
H0N8MvBjX0BZ75gOvGri0Q5JOm6AWghs2kPXpA0y0/COEM7hY9<br />
vjWOfDzQjQfJZjGl5GccRL6BIx2AvoQLummw3QdP91tgOD4UsT<br />
iciFOBUBO0yzn021bi7f0sysSC1bHY5Ch7jIufN4HFd1msgBZr<br />
GakUxwJw9dy8PI2kRmmZNbi0hdUsUkXpeeWla8s4mVdStvHYpD<br />
IZl+B5nHcjYAU4eYMGfUb0HblY7v6eBEPP+/hwguIUWvbX6o5W<br />
RNFi5H+O9XmFsKmVxc2GKBkFCzXLIHODzNdRIYCSVDZjdm+JaU<br />
MvjWoerBUDMCu/HnDIAot91EwkQp4HCXo8IhHdiqDfMQn5A8TG<br />
qI/gfm/0A01TwfAD3C5wM6R7TDAyA+Ko6othSoVRxlsj6/AqGU<br />
1a6TurufrF3rLJsmFrfBfvPKKc7bTYxmjJHV1+UeIB3xwya4zP<br />
F1H4T6N0X76WkBLeBQZNbirMgZXcRodX97Uclvfp68P4DgvBj/<br />
wJmye2XJXdKi3sdsQk55+6rgkAxeSFIzMttYcb+3Th7mkpowkJ<br />
j0IjnrEgVu69ZQSnEN8Y/hpmH8KbF8lPxFW/ipzPKI+jNJAr/w<br />
JmKuLIwQ4AAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-goto.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyFVltP40YUfo5/xdk8LRK5sIuqJa2KKEUtWqQiSBdVkR8m9k<br />
k8YvC4M2NCWvW/9zszdggU1Adi+1y/852LuLn46bcrWmSDuQ6G<br />
ZzS8EcHkm+YN/cz+PtiGRvSLDZbudF3azTAbfGPnta1ndDSejq<br />
fZ4KwNlXXwPVfO0K3ynmunQgXTG72ugheVbbZOPigmoDkXVW2N<br />
XWv2dHRycjL6NJ1+hsdcLcVeHo0qmLSn4zFdX12c3V7Q14uLa7<br />
qc0/zXszndnf0xhsOVLrj2gP53NhjMK9h7uwob5aJvqJgaZxt2<br />
YUt29VZ2VZewhLNJkUpCsVvbUluX7GKEwO7Bi7t8/Jch+HYo6K<br />
OuC9OWCKJrWANBqX1wetkGUHYwzgb/ZHmWrUHoqHVmRqu2LmiB<br />
1/jzIaeJsYUy1Kg1ky+cbkIu/fkeTRBginzDhV5ppPj95uqQgt<br />
uK3LFCzhCrKSou7kXoGSSsIBZ/YFH0qIwuaWWNlAawJT/RShs+<br />
GNOlGMLqkHxlN3g/JIt63UZ7Fn/X1hCigoi7QEMJb9kACWobIu<br />
BZhDFa6lq5qIWmZoEvVsOxG9IPPwLYSCip18gMtGIWVYsYWDUN<br />
Q1pqp//ipIwwYZEjzvtpsgH0rAVyYm+xM3/OKN8Qd2aJ39Nn81<br />
4hBbFz1p1GfhfJcEbGqnKiTGpPHj16lwhyJFyednHhBiJHHdmA<br />
mS+MQrurUahcGwUSoAujDGYUha2se6DF8LJOrUoDi07Phs8eWe<br />
+1dHbjOfVBxFH6KtK5qqUc4XoXI98N4SPmeEaV8rRYBxlJwsNg<br />
ZvFcyQJWxDXmP6rw5xHYtybkcSavbdM2GCvHf7bsg3VxRP09Js<br />
xBDNgikETjOCj7nEqwxChhT+C7jezlnWKRAyewCAiMWwIRERmF<br />
7QyxXz5sDROWK9i6f3yZiiIej++ejvFeHdMSPaBhPGMJ1cfEK1<br />
De8fJgNhTaCme93IHEA1ZTM7w+T6e0eKYAXWlZGtBli0Exuygu<br />
ETPb4ytFmgR+Aty2Fq6pX/2eR4nlOLSuTqmFe0wsXFIbkP8Jt5<br />
FKFVRqwFtoKixOEFRssLsqUCXRWl1yXIKSjj5N90DfWhcA2uPR<br />
93sSE8TV7yT7VZ4bVo7OjIGXCoEfZLxLNhz4ZfcolfnS13oeEv<br />
tCNdzzEIcQ+9qXsn8JuxOI4uLpe31w+ouDj9O4/XEVXk0XnPfW<br />
VawoivAzOcqTWq5G3vnuAs6gShEHGhfdRTFVITSzySSJ/y/T+4<br />
neyZY2drfzGNDxkNJQPPtGFmCQNr0HV8TG7A9a4sjxg33kdGFf<br />
dLijMHm/odkFjIpGF/dcykLJYLw6EQLDq8eXE/AiZmpeavXKFq<br />
3vkGYDmYFJjb8g/3hQt+j7OzqUG/UvLVDEEKAIAAA=<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-help.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJx9Vu9v2zYQ/Wz/FQd9WQvEkuyk2OJh2NLUQ7dla5AYDYrAA2<br />
iJsohIokpS/rGg//veUYpjN3YCOJbJe8fHd49H3Uzef7qi+35v<br />
qlwhxxTc8ED0WckVfZD2wemaBvRRFjXdqSrVq6Df+yyNVboa0z<br />
CMw7jfu2hcrg2wl8IUdCuslZURLkfojVrkzvKUrjeGf5BfgKYy<br />
yStd6IWSlobn5+eDURyfAjEVc47nr1okkpSls5CuryYXtxP6az<br />
K5pj+mNP14MaW7iy8hAFcqkZUF9cd+rzfNEW915lbCeKzLJdVG<br />
19K4Dens0OqiShEJcNFmSslp2uiGmiqVxmdw0pSW4fzjpULAdi<br />
zojaqSokmRRFWIBoNUWWfUvHGQ7G3Y733rz/r9HIIOlkgxplSD<br />
AwrwM31Qti7EhngS8EybUjCKVl75cb/HiKjCwlgMnAYZKwSIbh<br />
yn6Fm3KZjt2rX/TuOY5rpIt1NzVxGoOCQdjuLtsDArxK1pFK9H<br />
MckskwkSCmP0iuO4zGS0E07SeTwDbC6ShxSyUupWA/ugqqgUqh<br />
ok0NRs8QujUhq+i8Phj/i880CRGG1RIl/beM0UVCkW2IVe6HCh<br />
Mk4OJqdnoHK2k0qkZVNQS2U4+insPpyzTXa6HnI2I11jKjzUIq<br />
URBs9aKYQdoBhSoYKG7MY6WUaNhYZd1SNwZQmRgIVvn3u1Sh7o<br />
fudQRNdGB0+n5FKXJdzjJ4IZ0ZsuLwyXNqD9C/3AFXvrU3Vzy/<br />
bwUPBvdPXst3FwkFMlSslg3uVsj90LYsdIHeNE+3z8Cp1q8fqU<br />
qwCrBJeFtjKg+6Zi0GxXX1+lGFWiUhitq9059pNXnc9kb6pJzx<br />
38sWdqPnapTpoSVu5G5uxjv4sTxi2VVY7u7u5CPxZefvob5wcH<br />
6AXN9zAqDt+tckx23v7KnavHUbRarUIjcQrCRJezgyxbMZ+4og<br />
K0X3DKpABG2hOqG5PkAhGCuiJRZnQ5Zuwe04gFG1hRSBvmriw8<br />
81aPvTo9pUEfQscSS6EKMS+OZk1a1PeJj9f5gFjNhv5BI98K1W<br />
7fm/SQZt/v5HjgS3LevK9xO1yQp1IkGt4AoLGdOZAB4pTW+wPX<br />
TEoSjafgjp1JmXJb+m3L54hZbhk2YRgk8HBpooMJXiH3BfdDIu<br />
DZwmoystbGobEu2ttEonEay6RAfIWWQ8LzVWXNle3WIT4Lr3H8<br />
vQsEzUI0VZIPXG6ag772NYqeMofmdVltM7cJ7iTJFHVjOhFxUy<br />
WN9d2pwKV1Ql5gTz3YQoJnxf3qAyO/NtK6HdnpyJ62q7bu47wq<br />
4xpnCi0t+FP7K1MeZkOVXv3aoXpdGxdFQfc7fTNqkd2ITXJZSh<br />
ulMhNN4aJcWzfrEvSyQtj8mZOqFiH+gnbS7/vI7mhHija67Y3t<br />
M4wPIwTsjlws5bPSaZd7dr8b+PjlWX10FewRLpKygvIwfR3SZS<br />
5hlA1H8Qbhf5lJI6sE5+tbm3B7P7y8/PDg657hGA2s+g+3Nz2+<br />
9iYW0gUk9bMWAmDFJZhvexa/UAlyuItB2Twcfp9iXjN+x/kfxx<br />
lBRFsKAAA=<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-icon.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJydV21v2zYQ/iz9iqu/1NmmKMmybnWWBVmXosUyrEiyDoPgD7<br />
RExlpk0SCp2Nqw/767IyXLLwGGFUgTkvfy8Lnj3enu5sdfbyGL<br />
o4fSVXICozvaSD+XcgU/Sfvk9BIS+JjrGj6IuqjK+nEUR5+lsa<br />
WuJ3B6fHJ8EkfXjZtrg9rvhKngXlgrayPcHEXvyse5s3Skl62h<br />
BbALeJD5vNaVfiylhdO3b98mZycnX6PGg5iRPP1ailxCaeH8GD<br />
7d3lzf38DPNzef4OMDPHy4foDfr/84RoXbMpe1RfB/x1H0MEd5<br />
q5VbCcO6bi5hafRSGteCVoe848VQEpUrb6kAp6HVDTR1IQ1bcN<br />
IsLKnTYp8j1A0oYFzWedUUaKSsURoRFKV1ppw1Dik7Oo6jf+Jp<br />
HF9cXl56Xt83dU5HFi7/7784LtFSwnxN4E0UXQD9jcGCmXQrKW<br />
sgAQvjXDdVgZuwEIUEgcxIJY2skWerF7IQ7VFcOJXYqixkshBr<br />
jPFJXC7Eo0xykc/RfDYl+7NK509ESBGyhGVAlRUSWmlBBPDtrb<br />
SUK3G8EE8yIRgTUHhlyPBvSNGMqBjdFLPwAn5BKQwI74AyesGM<br />
F1KJpnJhF295TLL3EnechRwDaTiK5Ji3GM1X0FjiQGz0GeRMUI<br />
w1hUeSHW8VkYNtlCrXMHbtUlKoPFxGTl6hcDlfwZ+kjZUmKYQT<br />
E7IRNp1cO16ntVig/VLxwoPMWETp2nmz0K8hY4nJRniKaeJNLk<br />
Uth/K0pkcb8X0mIEu8iWFNf0M6i0TdQkaMJFYopJ5PNjKBE77P<br />
FOWnrGRXpcvn6YDwlMjwFiOlK3oR/ldgIqJ3Uz/tu3rGB5IYrV<br />
0aciTlJEznblEdP5aKnAavEesOEXmgTi5YKPY/SspqArWukdYo<br />
0BVWUimZI6l8adL1G5A9yRZOvz0/Pv0Gf87OwM5FoVdgFwhsjh<br />
RHxHLIO3bsiwXY8i856aLnKR+Qu9ljOXhzvj7/bmtfK2UlAjpZ<br />
n9C+QqAOdOMsPqwr2NbfdeE3mZldR4ckt+U6xwwJi/dB2ymcsZ<br />
aHxXwVXd4MbNFm2lEbmN4798C60xCrLnep1u0kRvf+ifZberBb<br />
z134l4hv5be7W8BsnCNpkM/1Ez1lSgyHYWGZjP5/BY2pXk1hdM<br />
uVpFM2cqGdJBvYIdJmia9Uwui9NviKw4rdWd3QlsVUI8G8ksLA<br />
6FNjkA2qPLJ2JTYSrn0kEOoV3SOm3EUGvU5mW4vpmq60KWywM6<br />
ibCChvcXfqsRMHVZUssUkyZDbEuRvA+bh4uqysKJWH1khn6jMR<br />
9aqq12MhPKH7P0uMknEoTA1uRxvOppsCwhGalbUwrT8k794iCh<br />
m5lDsWmPrgjIIdMQZeX4UqG5Bc4M1dY7D5sApVS8oJp/mZMwNd<br />
QlC9hIwIfDWd+vx4p+tn7NwhK15b1ueCNCa5I+rUguGLWQcIyA<br />
7myJ8aO/ALRQiyUTpiQRhRLRpN+0QdVqEOGUMPsQ+NijN3vzdR<br />
I2KsvnYwLVSeFqKsrkKoozow/h+KJSsSQmQ580wCleuBbTI6NL<br />
0QyyQ0ss3mkG+gqk0RlsZocwUOo54FTGx8y9OQDyZJ4Gjkl9bz<br />
Q9OL72wWw7ZucZgKHLFomD0wGDhvUCeLI6uNwya3WPKQxseeaA<br />
EzNDFGGrEScCs9gu/Br2d+jSn1Qxyt20nfjUPJQ1IQEFZblJaY<br />
pdD1EQq3fyksbV2L0byE13yehTo4VqWxDhD9l0EMy9oR/MBeqP<br />
nzRroONZL8j7eFw99+DIMvsPKfHuHeeAcmnpyuT466WhkNjibo<br />
Pg7GN2ZZHg2xt/GWi84QXbxXSNuuBEfb2Jmyrdlu3aZ8BUui4S<br />
T1Aw0P9r2+x0cWcNfXFl9WSI0leCbpjXCCbjljJpVPmwCHqRRL<br />
Li4v2hkAM7Iw4nHfTLrtiW6OedrT7qcGnp629nyFuV/KvFStL/<br />
bPWO5pAMhpaMV209CgSG/aZzv2NLy46asCJbTmz4JQG3DQ54Em<br />
DGQCMqDwKJ7w0jCxFG6VWOxmKdlKKKcTPgmJqDZjZTc0buvTu6<br />
nkgqDuyU4PGGE3By0dlmIbdo5DktoHzz1qH2J/J5qtB3fC7wSR<br />
P+GTXc1LJw+AK2ulIXMSa9nu9mAo7cGw4Gi0mTFk/TgYKXhIF7<br />
4g+WDufGCEiZ4zrfcWd2Nvp8pOcUqsvUWsGNgIJ+DnZGx1Lnnx<br />
sFkCdGOUgo1A2PMTV91NgH607v+cwGvf2C+6ruKVilnziB2LPx<br />
cLPaIPK1NAN7j3U/vQpt/3cxICKnTiOzZJ0FjdD8o148PvZNPI<br />
aTDnB3pU60oma2Qzo1f4hbuZXPqzXjF8IGQUsSQsNlJeyP/y/2<br />
8xqFRfFIljpNJfY3h9Sox9ArpuOOCbDwMQrpmcaRuVlzzTOzgc<br />
9pVodw6U6r5M8kbCIPniLmdxK5SjfwHTkIvaahEAAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-iconinfo.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyFVd9v2zYQfpb+ioOe2gfZspdmiQwsSFcDCxp0QWx0GAQ90B<br />
Jls6VJlaRie8P+992R8s+sHZDIPN53x+Pdd8fn6fvfH6GIo7lw<br />
kueQPNPG8LPgG/jA7VenW0jhodIKHlSjzZo5oVUSR5+5sbjKYT<br />
TIBlkc3XdupQ06+JUZCTNmLVeGuRVCn8Vy5SypdLszJIA/Bea8<br />
Wikt9VJwC6Pb29t0nGU/ocWcLQhPPy2rOAgLVwN4epzez6bwcT<br />
p9goc5zH+7n8Mf938O0OBRVFxZjP/vOIrmK8Rb3bgNM97WrTi0<br />
RrfcuB3o5r9OZ6pGJBrL4KkGp2GnO+hUzY334LhZWzIn4XWa0L<br />
aPAt4IVcmuRidCIRojqIV1Riw6St7bQRz9E5dxLESqF1945XLA<br />
pWJr7hdu14aFcHwdFpj5nOBW/BVUNXNh0WKKA2bNljyPI6UVj+<br />
NJmsKs5ZVgEqzbSbxhR5da7KDuq1rpGvHkOg2I3CPxBKKDwaAc<br />
3zpYaFnDTbYdj2Et6lpyCBVstHI+HhiN4knUyBwawRE7fufBp3<br />
pomWFQlHHUNBgsHgn/AyNvTRwtHBIMs+aQfj+/e4UPAcWRWyLe<br />
6eUSo/sBzDjkp9GOmd0PYGXI3iXl4Um3XQuPDEmBuaFqSLbLAS<br />
uOxEgboqn0Skpfn/OT7MYRq4y2SCDMH9LiGkGe2+PtVRytxpBc<br />
npgnYLjrjKLIIflE/EiOTGnkmXpOrEmO/GkarFpQzYg1CVxdw4<br />
FCqB2NszMHH4hSyZFcCDlVPxHRkiPlLtQUd1B7slJ0VOGbDDaG<br />
tXvo/s43dGc0a1kN6fX2Ot5nx5cckmktXEJ5jFai5qnAzHi/uM<br />
EFtp/Bft1B0QjJ7/YhDT1dOyPPd0ryEhnO6nQhFJX+DO/9HBpx<br />
aB1zOC9Mx0sy4xiHNkDw1K1Md2aLgOCcSRwseEWqHBQ4AJXSDs<br />
j2mLAQC5nE9Odv+cylZjXe8/yS8N1gqbf3xnhKxWUC3Fas5Zc+<br />
SqLxC06n1PBvWI1OVVAgPUsoaHeo8N/RxCfOUiTfOm5dgkZ2pT<br />
dHP3vTFxhKXeEwoZQDcaik8kxghnBP832bsAW1AFNAPuBNGBYV<br />
TtWvoMPmW5xSl2Xt8Ft1FgeJ1zQ4dLCpdEsukRQnk/LFS9QCPi<br />
e4MSTB71JcYdeLxOMelHzCilC2eZ143SGp5IAGLe42sNGmvus3<br />
PC1OXQhqdMUkZomwTEooPH0853qjQMkglCjhs+JpCuFKJaqoP3<br />
32IlLk32EXZV5KLx8iPBwbTvF++RafFhuEsoAJBKdHY6/wx0WT<br />
iwMETcUoCiOBvneHPdfPCaJ033J+Tv4Co2x8lUHhpaGXSi/4hs<br />
EA/Z29OSQDJHclOTOgPH/pc64PVqelgy+aXk0PaIk2RQIf3yeQ<br />
4OPluE3Ks0B685M6rXUt8CWqD3cJHdcPxkPNSfC7RMAjEzwb9w<br />
Sj92hocTBJfF+ybXYk2WvNvtkgPAzUf+ckz6HW+CQUnfIdqJXc<br />
9dgy/heusxOehgkAAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-images.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJydVkvTqzp2HR9+haszScp1j7E/7A936g6ExEO8BfgBqQwwYI<br />
F5GrAF7ur/Hs7tZNS3kqowAaG9trb2a21Plhxz9R/cj6AYq+yv<br />
q794v35szkXGVigbyrHtVr+tcB3TbPgL9+Oc9UPRNn9dbX/yP3<br />
nuB3iNedsvMBj31cqPhyFr+njMF1GvoPk4/Npqu7n/tVj9oXsV<br />
ZEnetFVLi2xYbY/H4287nv9aEEF8+yX/69XFSbYqhpXwc+WaMv<br />
DllSHL7goHq0ADweoCwp8LwCySrBkWq//G/fgR5Iv80N5HFvd/<br />
YMc8W3V922X9OK/a+5+dHjfpIrmAq39oSldju5rb1+rVpFn/h4<br />
Yx6+vhF/zX4p+ds2D/24rVvxZNUr3SRUnRLNKLBWkxjH1xe42L<br />
y/7tJ/fj79x/cty///777wv6Hr+qcYWTthlWv/+/H45L/6Hpty<br />
L5FZaqjVPuIPzL3ziPr1QHVbkFAAPOKQcAQ9BksAy2ONhJeViE<br />
g2nO4uss3SJV7+7txW55BZKCF5yJRpzKb91TnDVdXe3oTp+zSk<br />
/i6lilOkyG+BBnr0e79+UCN7ZY+uJs46dRnM7u+RMB7zIO3I2f<br />
zqHS1UluBbIwn/ud0mfu93pjfaxZX3fvfRFWvTH3b3M+NPqctI<br />
bZNC+1DkbVJ4LDoeGmTnpNX7Ktn+Z2ss9pGqlRG/tWZdDWhOJV<br />
ebd10H2sA1HO5/PluC/Sm883k5iVqcZ5l5RRNAJfau9YSekNMv<br />
Dr+cMnAKgbEeqJTAe13eBOM/Ubet55I+cv/RSpS/C4dHiPWZNd<br />
66t8LRivDqZxeONq/HrdPgRsr/P6XjFypm+bHTTYRi4EHqKCUA<br />
RUAgEVOXdiiUZExwhOrYOT1EJAtXDoKM2oKqR8Sgg/pU5WZSQS<br />
GcSjBvDbnNqXmTNXoQfAqb4Qld4HaBDId/lS2ZQYNsXJ86j2Ug<br />
Gxa8id4YUXA1DHncrIPZKN5pWqYxUlJCHkwCN8qi+zkNEnln3B<br />
gH24M3MZe+UDYPIiQDq9sLsF1qmLKE1Ua3zQcb2G4ETUm/YIuR<br />
fAgEplZtQPSomuwPyT22pO5LhCjzCS/a55JIYG4e7eIfPDBFNt<br />
gs3a1eqpTFwkceQJMh5HBkV1qeDpI8FvAexkKW9nx/22D42rQo<br />
/xCZvN4qK3Q0RxpgWE5xkoACB37vJydz1AhBIFS1QXQ/hcFAnW<br />
WAmh78qoHz8ITnFGpgSw8DUHng1q9YGkqkc523xzLXhKgBHNkA<br />
6feZZcECbIpgd0xODMMDZ6orS+pSLGxMScta/Ak9qQEme4Hg87<br />
G1KOhWVklQJvyFKBjsAxztF+H7xyBSS2yQIqa1AgrUzw1WzXQF<br />
h7uDTc6/sE9OWaqE+5rWcBfQTSxMwll43QUpT1nVEDuT5PoLxT<br />
oYXuxnVomT7W95poX+KpkqF0f29GQbI0DhXBiYXqIyJow0iysf<br />
Xifn/0mMj6XnXRqWQD7nUsZa9JBkDG8tNXtS9aYMWWkEQtLtGP<br />
rvUElCDAHBpAQDYnah9snCIm8GmcXdAJfY7soIAaQ8QiZREr76<br />
hsjFG2tyl37rqtXEo0eTRFtS/H5Q4SyL1OpwLdqugR8Mfd7uLH<br />
l54nVxJNuCuARI6lmiiu8gkARxoLHKymDklMRdxK0elWE+BlbQ<br />
aDdH06DxaA8VKIX0CmEEtOd3tLIuhe0lcvA40S7vslSU+cHUU9<br />
PdEkxA+g9ccbQb0rVhYcBRM/njwTu1iDkvUFJzbtYdZfnyxsaH<br />
lDSy28fD00Js2t2YMC07RfA0FrAScyMBVKhQ0PXdfYESaV35J9<br />
D5AuqwBbqixU/bmYB06CQJI+33q9LyVofz4VC42DNEa2c6OljE<br />
2880l9/jwvkeQAJx0MhyJX85ID+tKDbj5zWa7zIrCwqyGR7mdv<br />
vF8laaY8LW3gqrO+A6I/6gBCm4CZqk8xlqtiyW5VlZj0uD24Ol<br />
QyuYAEPIolUh5v+C3twKveqShYbNVeLoLg4YAzlm1ZydmJtr6v<br />
QMRPccKLjsnRouvZh4mCJdn4+Ahv0dIZ365NmH97WC4CtwMthe<br />
XeFYmOn0El6l1fagWEGtaoUVCOgCMurtbVPC2lOLh3JK9TAA87<br />
5yyhHX0Q/1oOT1YABQ6NdoSSaeriprR5W4LMxETjlCODH7IWBR<br />
XMVgIw+ypd801+GTVHLdxLj+0CcJvj1HgH+RZGh83xOE5fn6Ns<br />
ibgcuM07P1XqZr3OiubDEwKgttb4I0vVaoyvXRVBqch86XxTz/<br />
nyHdwuypwqdp7W5xkTADiHLcz5d467t9VC8/8XdT4AaC2oO5rz<br />
tRBPpdj6rWBVtLFGnxfdKL5VivSIjMuV+MnHuEYTd8VxUV+f8N<br />
pl0+ifHvJ5+mTqVJqLvx/Wc3f+7IMg6BQjio2432S8d0qVw3cz<br />
CkbYffg9pwvZve/mLTtk2W2Xi/nece/fd3P7utel+xCmwVin1d<br />
lzGu9ItbS1jt9+3d92Q//+fvVqyV3dj9ilrkfrtPV+kfVzI8/P<br />
V10r1RSr58RXDyq9dluvg+ZJqA7h+31YiFQj1fGq63XPdZeuOE<br />
Pc4tIOr8lt/sz/RJ3XP6NO/7mN+2M+cJUHvr/BgQoXOdkWxrfE<br />
osdx+kKaCgN4JruJB7JiVUUbl9/Yl5kl8d8I6EugEvmhJRfOmB<br />
zP+IS2RXFaYwchykh6lqcrkh94xiXyBU9ntQcmetKmNkFdmWsk<br />
/5yU/V2nw4XTClKYkPkLiW3l4LQDvvCxPpgMN5LYyOMbvrSUKW<br />
HOh5wWTxl6cJMciH3HsgS58APOzE8qRP4H0f0Ywk1IipC5GzGC<br />
D0iFxAaPSbjNutLik5la0q1x0SdsDVcGuWUdmivlIsdQZU907k<br />
8a+gGmlIkK21xa2VASJiTj+clwAnU4tAMvqTkD6lLnd7FwvAeY<br />
ZcBzhD19zG/XRJcQCUUNbFs12+XPU7uL9d3zVBt3IEzAsFHHVO<br />
X1JkB9+MB9yQDmGMc6B7bzqzxCOJlYVud8WKNaztk8RcBx0wu4<br />
3NKl14/F4R6/UU597ChLqitomZNC11O/BQ7AWRDXCBoVJl485X<br />
FqaXYDGc8rESPhw8mmfVPuLpbSe8DbMophLt1kG+yfa7M2AAd2<br />
97gJrrhurrunswwp55g9wcJRDCP9It3JsD9+a8bHIO0y/2U5aL<br />
HrXsIwu8ai82VW3FSUCb+VEXiJivfw3ql13OgCjs2OMarxYSZf<br />
ZOmmdVN3/EYNY0wlZ4KXHNXYuSUAcd8+L1xYAt/6dUPA6X5a9u<br />
T8Ine+8gUXvYCEN11FQPpUlGLvrkaCUIOFJ4wYoGK/5kIMoK8U<br />
rA7xTuqiUPLPrJQtGSTIZ0zSVSjdyuirspZT3QfqwG7zxLEG0o<br />
rE/sItnC0DxkBJZgABPUUnDCxNfVH5ule/birQAfoilqoq3lui<br />
FIC7BHvQatZr5wCkLFTNdcsoJFa1LBFUHmTHoNc9iA0tVU9IKq<br />
pNbRnYt/c+LZ/RzavdriPv2listh5RDoh443LDAV3nZ8YrnUfn<br />
BIrd6GULmzqOWVpG3VGx72pirY2F39Cx8sJEhuoO0D4OZKV9dV<br />
xN22UKFC/KsAy+TBL4qh87DwDRgnHUf6ijDrqqBFfKNHR+d9Ir<br />
A4d4iPvdrTVNhmduDcBL6ooq4/2v9QWTTy9Cc61I4zTwb0vdwV<br />
MyiAk5nScm/1lD5/63jv4/Df2/AJQvyTDODgAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-index.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJydVk1v20YQPZO/YuyLHCCyHLc9REZguI2DFjUQwzFSFAQPK3<br />
IlbU1x2eXSjtr0v/fN7FKkbbloq4NI7nzPvJnZm8vvP15Rlia3<br />
xld6Toc3fDD7bPQDvdftnbcNTemnutRf6IOpdHuYJp+1a42t5/<br />
Tm+OT4JE0uOr+2DrI/KFfRJ9W2unbKr8F6Y1Zr3zLJNlvHHyQG<br />
6FYX69pWdmV0S2/evn07PT05+QYSt2rB/PxoVKHJtPTtMV1fXV<br />
58uqSfLy+v6adbuv3x4pZ+ufj1GAJXptB1C9f/TJPkdg3+1i79<br />
g3Ii69eaGmcb7fyW7HKfdVWX4IRwFTSV5C1tbUcdonaiwWu3aV<br />
mcP55nCLLRCzoydVF1JZSYGtzwoDStd2bReaTs1XGa/JXmaWo4<br />
odNCFWs4nuVJckaLyhZ3bENotORkU2UV6xJFrW457Wl6Np3uav<br />
Nx8ZsufEvT//1LU6cX06WtEOycClt7/cUzIrwggl0LRJKDNGm7<br />
zUa57XwgxJM06ZpSeV3O00R/aYzTLd5q65EbvJiNWj3St1DFXY<br />
nakFDSpEBF3F4GoUDpcolg93IEEpyG89Oo6Iw2iqvA8UQN9l67<br />
gSwUPurJBuEDfbWtNVeJE8NHj9OybUIUEy7RazzEFbxomKugxO<br />
tN8BH0g9fUuQr/QjxAOtQmiB+yZqrUQleH49jl+AWfKZAn7SOv<br />
W6/QYyybteYPTVyDHH7USztoLFTDCByXoehabzeBHEugy0gr9V<br />
J1lSc+eJT4ttGFUVWQ6rMe0SP0rgcTWcEmmqPPJwP3Q6ANE4Wu<br />
nS0Y2vXqv6E4Tbk7ptIuc1p2dUFZg7FDM3QSPGwQEa210zmX7Y<br />
yuwC3N3iiHTlU9hoZ+Q585263W0ubhOLRompSLbkXZIetgR4V4<br />
SGwOmWZLc3Ia3ixMjU4QgtiGYxZz5Bz6ecwMbS8sqMZS0HYevM<br />
2c9p2r5SiPRC96KFNNo/eoCGzaOevOycN0Frzh3MxUVWGYTXkA<br />
wWkm5E9MSC5CDoMLZxQZhhyEPA1ji1N13md8Ud3F/L7XPCZNDb<br />
ElshvmGeaWontVmfJ5upFWdjCDzTCWM+ktmghLDkd+7zBESiAI<br />
VmZv6B1N0JK2kgNoPyc+P8VnEAFDqytgLpxL6NpPH6wracK60y<br />
QPfb1B/0xLpx76MIDkHW5iPDfCRcwVgd6+5qxsiXcLF6bVRec4<br />
DJB5RjRbZkyThzWDKWvmoeqse8Jqci4wK50h7Z4aOs1Fln0aFa<br />
L3iVutdwopJKyG6Nr1Swg+JtmAcfHZ5dJIs0rT4l2FEcDjMyw2<br />
PDfK95ttrOcmoGBnIzTz8Q6UIyiI+qfYRUI26k7TsFwoi+NVEp<br />
XlPfqiOKp4Su2daQAHeQRMrNFVAF+SqHrLUFnP6QgLfQHfjWvR<br />
HK9ASwj15e1EhKJ4yVYA/QEdLWdhk/GpMH+lSdxY+5j79TZmj3<br />
ttx85fB7AF9n7ljdnj8tvH3u/FMXvYkHs9j8tzzD1suJ2A7xps<br />
Gol0WH87mSR7zjfeKcxHX/u6iY3dWs1EQWs3Or4mg5vIOBLOMY<br />
XtgPbFQR5sQkvPl8kehAVehDkLhBU0ODhi5pEGDwGyyT1uWFNn<br />
gbV3sdbzoG4k/9zaEOPTNIyYZHocjH0fjYRBQtLBf/lj/FEAIO<br />
M4dPKavhOJIzNCvWzILHoxLg2Nsz+uRYhmlze5YCBv8YbBb5Wp<br />
7/jZancPYCCbZhaGZu/0qFa0vwR4hMsIK1pZXHbxXOuq4Sd3qA<br />
1WMXy9GJALzZCVr8+BamZyrdnHE+vBPE8LMjCZGl5k+Ncr7Q4o<br />
Cw0TMSk+hDvOPtl/gZhRCHkvPuHr0b5I5No0NjThOxBT5HKEHd<br />
vpQQnX+KUs897hp3iIKAIKeTny1uPT8+DgC47nGf6C11G0R742<br />
GNdODJwH01h17MtULh69bBAb4hCsP2sC849NkAdc99eUUGlOaa<br />
j4cLsISc4p3lPQpYwlMnFusbjM9dhOAGFd8j5OzuI4x87Y3T7a<br />
3eLBbvwbc6SRXaQOAAA=<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-initfiles.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyFVN+P2zYMfrb/CsJAsQ1Y7Ou2l/MeimubrYcdsO7O6FAEKa<br />
DY8lmLLHqSfElW3P8+UnJwSS5tX/yD4kd+Hynydv76zxtYpEml<br />
vJYlZLdsKD4ouYG30q09DjCD35SWcG2UV0Kr/4RXaLI0+SCto6<br />
8SXuYX+UWaXI2+Q0sx3gir4U44J40VviPXW3XfecdHOOws/0BI<br />
BJWsO4Ma75V08PLy8nL208XFz4SoxIr9+TWIWoJy8EsO72/mV3<br />
dz+GM+fw/XFVTvrir4++pjToAbVUvjSMLnNEmqjvwdtn4jbMD6<br />
TsJgcZDW7wDbc9mFaciTwDpGasAj7HCE0TTShghe2t4xnH+eV4<br />
qwEwv4Xplajw0FUYa8iUGjnLdqNXLxfsjT5DFdpqmims6aiJ61<br />
VGXS3AkHi4Hq5oCfEMxL7tGv8MZK4SU0shWj9jAhowuowGsHLL<br />
lXzilzX6ZpQsk92l0IX8ID8Z1ZRF9M4GI6z22aDFa27ouO4ZTc<br />
yI/ZlUwpebE/5W+NtdDFoVXVaNyRxa3VqQWpwscmj6jZQiVKWi<br />
TRdReLEeuyIKkGPcgtcXevDriWwWvRi7WcNcoSdzmcHi856kkE<br />
tp/TzLXwu0GS7iB3YxXVPyT5B6m1n+NFWuzHJ0xKxYBs+al4hB<br />
51U6DRO3Bj26rtrBfDJCt2+6iGK8R1L+yas/E1Tk6iv96fZyFH<br />
Cd8puptbDpdQnTTf0zjBeY19Bp33Q1kUm80mt3KFmq1FgHC3ny<br />
A33LcMpv4dOrAcGlrjUMsM6vgB3NX9D7k9HnVT2gcagi9JuJuO<br />
zymYoJD9jh4zuKfnkfmd1AOJoueR+a9R+Qz+peeey5GOszSCYl<br />
pp5HGOiWe3vRf31GXpUz2uTUv0Xih65X77LGu0xrQxgqutGryD<br />
WhhY0fXRtNGeNkPsQg4VQoO0tX4E2QQtCW0fC8diAgNaTNN+CZ<br />
uIbUb0kkOFRbWnyntP+LDENsL4A1wOH8nIfOI2rmnprQHNHh2S<br />
TsxiuwnLtIAyWKlREH+fR+nLpyFdRH5y65fTVuIL/o1hKwNocT<br />
BbtCn7QoyUM4QKKU6CHK61kMSJB/ncmnxrBr5y3vlek0tIT/fi<br />
f2jeUX8sBwAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-launch.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJylVk1v20YQPYu/YqoekgCi6LS9RIZhuK6LBFXQQFZTFIQOK3<br />
IpLkxxmd1lZLXof++bISnRcYoeerDM3Z2defPmY2d19+OvS0qj<br />
ydqESi9ouuKN5KPRB/pJ+4dgG4rpg7M7p/a0VG2dldpNo8lH7b<br />
yx9YJezy/mF9Hkpg2ldVBwq1xF98p7XTsVSoiuzK4Mno9sc3S8<br />
ILFCa52Vta3szmhPr9+8eRN/d3HxPW6s1Zbl+V+jMk3G0w9z+r<br />
C8u7m/o1/u7j7QuzWt396s6febP+a4sDSZrj3w/xVNJusS8t4W<br />
4aCc3A2lpsbZRrtwJFt8zbqqc0jictVpyilYOtqW2jrXTjQE7f<br />
aer/PiOU2426Ogl6bOqjaHElNDGghy44Mz2zaAslfzaPJ3tImi<br />
3MaFYdILsEppA7bIBxU8JZXNVEUWZG04OJf0FgArDZhkMluTyl<br />
jTnN6rI22xLfdMRgfr8v5wRnqvTEUqz532fsZaflstZ9BKbHZO<br />
9K6QrxlVVgFrEBbAUmHdXrxUDdPmjAp6MBlNTEG1rfU1CeBUP5<br />
qwiSaMdSFbIsFABgkw4w8mZOV5PdlZ8Jvyb/wZJG54r9RVQyn/<br />
nvfgrLdwPC1VFc7bn1qgTfmXl/zHMCL+gnFx/ISPF9olsCcbPd<br />
5L9l42EB7FzDAxSDhbtfCWeZHjGeUW/gYkkG40+ClsxRnBZwMZ<br />
TNyR0tYNRl8Wxvkg36/oir6dJtNNF2AOdlXFIsU/QKINqHaixm<br />
mVx1tTK3ekUTowYwo+sIDEJp2+N96beic4F9NB1ebMdZLrQrVV<br />
oL1qYt8WhXlESscnv7owOL21FaUw48KgZDIJ+hHs6twE2zkah9<br />
K153OzVzuExJf2EHffw5EAGDwSPjgvKN06e0BhSEIPi+eK2YNo<br />
M4kiwdPVBSddR90mbcTdjRTEPYu0DZi3YixDbznXNoLt2prLBS<br />
mMklasZhHBs6o6k9i1M9B4IhDhPEeRfeldkfhq56y7poDgpJVc<br />
TbzOWqfjbJ9/6U7HxBdRu1U1h7m7/ATadEzCk2Rml0eA+oSDhA<br />
9+2P/CzM8c5NyirZ1EBwND+kuZ/Kc/G/ofXmy4x51z5Emb6xtc<br />
gebeN7h7CEp7k3xC31R0MHWOTVtLL/KZ05pj2JURt6wnpRJcq4<br />
Uw0TBijJtGUqNRozmjh8dsFFXxoOUr8Y3O6EWf0qfsHloZysn8<br />
idXe9NASXpM/+qD3iajugPXKcDjyflTPg/tIL3hX2N7tFSTgau<br />
+IVGfhbNd9ax3w39l2V8o6U3h7F8TXWMNC2vAV2pNCbJiPmZBw<br />
1aK4On65KGa0xeKBa0O6yRWUZA/RJN+2KMzp6gxxSidwYqPLNF<br />
tXptbDq8HdUnDA2A74TEATdDq0rqZxrUhTrMxnBEKh5FLW2iet<br />
FMl1IjDOFrtUu6SbqkLMmThub/KwVX07BiBbFDHDWXQZLKqlYF<br />
kPjYyOiqSzxxKw0UNl5jhNJUB8njQ84uCdTPRjw88gK1xI9g4n<br />
fXv91yudR0nb5PxcPr8vfvaJMcrecWIUkCv7zFhayYyvpkQ7yo<br />
ehaS2evB4nbUPTGBe7SMubz6Q850SWOOrBYk6RdFpQqfAYMSLf<br />
g7x7RMPg4aBPOEH78na9WsZLgvcu4PgVMMolhvip1T7IM5Q8aN<br />
3QaJ4QmX6gwD66jYaHPQPdWT8ydXsdYIhGp+Fg0bU9wXZbWRQC<br />
E5X3gyzHFVNg10/6yQLY2lrqGMkUTdTWtmi9rJBdPz+eQ5jkBR<br />
pqV4gSCwqldWx0N4BtFQ+QPKYJ0BeYRjsd0M8ZC5K7rs6/WGCK<br />
LtDrkkphaBDXpjzUDvv97RhgqCa6lKeupuuRRC2Gv8FOY1BVNb<br />
3uY/cPsTHmUeALAAA=<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-main.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJzNV19v2zYQf7Y+xcVFsBQo5STtS5yHIusyrFibFmmWYjD8QI<br />
uUTZgiNZKy4wb57rsjJVtx2mFrX2bAlni8+/H+H319+fOHdzDJ<br />
AD83Kmg5huE10Ua3Sq7hF+mXwdbA4D1XBt5b0Wg5jNy30nllzR<br />
hO8tP8OD+NxIsmLKxDjDfcafjEvZfG8bBIItdqvgiedm29cbSA<br />
eBbcyGJhrLZzJT2cnJ2dsdPj45dJ6IbPSIQeNS8kKA+vcvj47v<br />
Li0yX8fnn5Ed7ewM1vFzfw+eLPPMm8U4U0Hm25j8sIs0BBb8uw<br />
5i6ChIWE2tlaurABW35NE24Ecm4hdEIVECxsbAONEdJFnCBd5Q<br />
mEFk/dt0Vo9YIjZQrdCIRCpwbSTCgfnJo1AV36PI8CD/H3N9yw<br />
bjPGGA0GVzZIuG9J4BdoioDSOuB1jdpxkn6BVjYOHUXaVxS1Um<br />
mZP2yVuNjxRtDB8NbqJVpypYIvFkM4OWbHJxSBV3FXtDngpA/c<br />
BT7T8gW0RNY4zbibN5U0oXV+99mHPT1jH4oQIwsnp+zKruL7Y5<br />
nDWaO0yN0LOBQ2Pr6omrWn5WioQK/tneMrrjUUC27mGDQ0+HAV<br />
GFmeux3nFG35lBzzL4zeO3V4+IyRFz06obIrKV5Ep2oMBBTozC<br />
U5Bc0nye3Z8J88NxhMt7r2MP5vAbqvnZxZ7WGtsNKbAF4s4eiZ<br />
KlNknj885g6oEquskFBwAzN82KrCxGRaGczQVi84QiTawfenGE<br />
5ihlc84FY8FT0uuWG+cKoOD3B/5CTGfwPGwkzNwYemLHsYya3T<br />
bJplW23GYE123lsai5ZsfJDVKOGOUDefZajm8vUYSq69zLJzxu<br />
CWO0Ue9sB+8JNlK+wRzFkbxrBe8MCEcnAOM44dAl9lEaucypuS<br />
DcNbSidNIX3GtVrJTi8UCa6RCCEN+tcYFExNysiQJa3/CEor7H<br />
O/Nqagwv9+7bNMzJo5Ho1IMKn8HCYzbYvlAfabDaMmZuYHUxgh<br />
jWsQs/m0nS6YIuRlpIyh8dIxzKTSj4REOJjIOxVSpBByDAvJqT<br />
ciW4glpwXRdxWVElliNsjkndcEDJO1U0GOsBtKbH5EQSlUoEat<br />
QnynNCCHvFfeo6btRPuRYLZhjNaMQVgEm3BNig+vbLQUvAwBD8<br />
MJ4SDyQc2N1PlwmuEWI55OcofVKvpoDP+QtllGZTqhIKy4btBl<br />
PxnLsH67CD1rpxIc5vkI6aM0SEakU+7+kQUHaUCWKZ3RcWATU0<br />
aF2Ddx79FGtHCfqCo+f8q6VkbY9T61xJSQ7gkCpv/XaMqU9gn9<br />
W7rhefJun6g55vtinzq34QnuQup6nyaxm+un6kqhsMT3qW0JIz<br />
kmwFvUU2HBf0kT+/sTFROAbO7GGhYZ91QamFNF6HJAxGocdgk3<br />
w+Y0xLpdY2QHdFFhNd7mqF8a6juPBkg2iAjacpHiG5cpfOqLZC<br />
KsIwXH1N5yqQwtAb+MFpFOWTcy+LV17FijQNfTyFPSPXCScKbQ<br />
KZt6gpABnbdF9wu7ZkpEhXeEKtXRjrCWGudP4ug7KU39nV20ZG<br />
FT92VpUmPj46HxXUfq9TfeBNuFtPVxnL1vEol6EHZquje+xeHn<br />
sGXneTunpz3++8/WLYnZliXNzhze0L0DhrHPDgmjy5uHbDf2oo<br />
KozAovnh6282bUmjfqttryxv7wTdXbF0YgPXDMkGXF3fJr6Nu9<br />
1BrOu0sJNLXg23Hev6HgvcrZCi8Kgcf/Facvs226pomD3PHnIL<br />
b9NHUoIAfTafLW+XbIoVd5oKs+ekiniRgvSNHb3eWulYFu/HfZ<br />
9lejJM7lOFm3POifOOxeQxHuoifImklvMaYwBHkX+hzTHUKPOu<br />
on2qMzuvYcbe1LRI+n1gdj3G2B+0DZYB/gG0LCMrlCl3sMDYrs<br />
bmoTYTvvYNCyttSPrmVonEnQ5Mr0fwmrpkYG012fqDVEf894sX<br />
ye/Q0VbGwMXw4AAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-prefs.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJylWG1v20YS/kz+ioEPRe+AkHqx3TQyDoWTOkhQX5PaStuDoA<br />
IrciltTXHZ3aUlNch/v2d2SYmyneLaGpDEnZ23nZ2Xh765evnu<br />
mmZxNFWulBM6uWHC4EclN/SttHdO15TQeyMLaWSVSXsSRz9KY5<br />
WuJjRKh+kwji4bt9IGsq+EKelWWCsrI9wKrDdquXKWt3S9M7wg<br />
b4CmMltVutRLJS2NXrx4kYyHw1NITMWC+fmnFpkkZekspffXV5<br />
e3V/Td1dV7ejul6ZvLKf10+d8UAtcqk5WF6x/jKJquwG914TbC<br />
eFm3klQbXUvjdqSLp6yLKgcnhMugKSenaacbaqpcGq/BSbO2LM<br />
6LxxGCbOsF/VNVWdnkUKIqcMODXFln1KJxCNm/0jj6FM/juEZA<br />
bVIoDnmlKxnHF0lCXmcv1vRu8avMHCV/+i++iC9CMPYxUGthdg<br />
Rfmsw1CE6hDa10matqGQzXB8NpJ62DA3gqteBTbVay8gobi9iY<br />
prJBOASRrLj38YM8zn33gJ13vTvKPLAG/pcyE+AKQTvYFeVG7P<br />
bmFzuvzZvM2/TUFaStE8Y19TNSjtaNdbSQnYwVhSx3fKniXquc<br />
BNXaWrUoJd0r07SHlZ6PYIw5WdRbklvcfSXKvr8978AKn6GAeV<br />
+9+/52evPh1ZSKpsr4vn1YbC0zVQTHc1mIpnSdhoUs9QbSIlzS<br />
4Ke30zcEQ6qSa1m5lGaZrsKVDTbKraiSmwSyPpyJTyIk02ExIf<br />
A7+MwVXYk1F/Ql3ciFLlEpNSqzTbdIbiFwWELDveQS5iVYbWZU<br />
7Q5rlNB2l7ChTiJQ+iqN1m6/q8sycWrdpXcEvyqcONkItWdC/U<br />
1QVEUc5XLRdM8bVeV6k1j1+164JWHbyr20gsoHpDu5W4u6W4nG<br />
6aS1OyEEkWk+m5Ks1NwxAq3No25p71TVqpiHsrwFBaXub87+hW<br />
J8VJYSac79qZ8RGdqRCc1IFgVc5pQQoBspnDyuYfgDPVzAQYP3<br />
P43jtVBV4hWhNz8/T0fn+IyH8UJYuaefnYL2PB2NRlF0QQuR3S<br />
2NRqsLHsRoVE7vtZydpV8P09HpONbIj47a54EO/xtKnbmIExA2<br />
9+wjVoHP+HwYx7nD3foQ91L1yPGvAjd+6cKLDT0BizM8PMfnDE<br />
PHqvxwpqEnpviNuRO4xnZbkP+63VhoeL1ODo7FEcKW9B1lPePA<br />
3jqFiC/bPKTW6BGpZQtXNqHZ0qDDjM5bR8+Hc7jNTy88hVfj1t<br />
fxcN4q7AmLXKHuabgdER97PPbH7zs2b4My8kFBhkb+djmS++sp<br />
calx5G+sT2ezXiGEVFXoo03DTQLXOKDTfd43RaG29B9R1xgSfy<br />
fzD+PICe67qFJLPP3IehvSd9Iwmzfa5G3uc4007UBGC1AZKoET<br />
nwXdroaUCtOlFGi4q33bTek1TiK3Yl2X8hkafuqQZ15so8qSMw<br />
+xcdy2MRRoevXz1Jt9hiRW0BOY2mkkgRYgfZUrxwWnW2Pp4Uxe<br />
MY4EEXT80ure8CmMXpMfhejxX7SlOmAJf4DUoGxDDBLfulAMX6<br />
SG8FF1uBMmrNy6JP9D/MgkPhG+2TVfbyD9Wi9Bqiv+XqoC34t1<br />
TT5debvOC8KHH3OdsQnHPLnGxLQJn5+3tiX8TDN7z0S5zWTJ6c<br />
Cn8XAl8W5PaIXjzHLhxJxdvqDrbmCWgDuMlLrpvD8qyg0+SWO0<br />
+QatdhfEJz5QA4GA32OoJzxEBk+EaT6TW+XmXgfLDUb0b/rSB6<br />
hThK5S+z0ac2X1gpoBfPqdLrM7ZHsL3Oqy5m909SczG3NooYXB<br />
6N/rR94EHKAyEj5JPe543Xgsdh8QtYeYjG2m8M0nIeKiNwESOZ<br />
9WogdEfGzT0FK70YfL+MfJLz+c0Oy3xscLq2uscp2UOhNloHwH<br />
ykqULuGYB9IVSDLk+JcWyCFQ34DKIyIpgBSlCcQPIPrLagEI01<br />
62GsPqBisjQ9J0gq/PH9Ha2/C5w4PvFviwh3/pNRfWn7qNkKgt<br />
FuJ20MtOD0H7MM7XZhis4EfVhXhGAx8pYgQSz2c+5ezOOrkesI<br />
oB4yqaHUDXIACthyzcmiHJmQ0d0QHxY4Fcts5+Q0dE4SBfu75q<br />
PyT7+M/j0oPUEQ6M2Nco4KbWGb6lAbCclFVS4G1q4M8UsV89/3<br />
tIyrsaPb03QXJvMZqGtEbb/Yw8G8ALIwbV9vkZdHEUHpjrAbxH<br />
5o7AH5vDCN3i89BkX0d7ps9b+szRHqDKzxzuWEd7PNYUiWp3lA<br />
Z9n07Hw+2pn/BP+XVA08Gp9rZstgLst4MWEga2QQDdT0r/kXZG<br />
5v+H9gDgn5R+WjtjN7STPorrJ+hDzo6R0zPuRZ9rn18HH9eqbw<br />
KParV9YUIT/IOCdaar1wpDrVcm3fAAByMdIOc1zT4GvDHr/vPx<br />
gW32/9NB3wJvTD5B2YY+zn8ZfIIGiEoBiFDhVcxjCoNxdziWj7<br />
iRteT3PofrregEqmmNjkdLJNBRcnktmxJveyE8G6Oc7PvtTxT/<br />
D8temnKkEQAA<br />
}</var><br />
<var class="dt-function">write</var> unzip/vt-window.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJydGmuP2zbys/0rBvrSbBJbtrNNE++1RS7NocWlaJBsWxwEfe<br />
DKlK2LHq5Ir9d3uP9+8yAlyo9u2yDZlah5z3BmOMzHd3//6T0k<br />
49FtYUu9hOgjLcS/FHoP32nz2TZbmMCPqqjh16JeNXt4rw7Nzk<br />
bj0S+6NUVTL2E+nU1n49Gbnd00LZJ4q9oSPiljdN0qu0HQj8V6<br />
Yw19araHll6A+cCtzjZ1UzbrQhuYv379erKYzV4gxq26I3j6tV<br />
WZhsLA9RQ+vH/35tM7+Oe7dx/gh1u4/f7NLfz65l9TRHhfZLo2<br />
qMF/x6PR7QbhTZPbvWoZ1240bNtmq1t7gCY/x13VK4RE5FIorc<br />
A2gKrCrl7plilY3VaG0Onl1FCI66SAJ0WdlbsVEkHDWZJmVRjb<br />
Fnc7iya7mo5H/xun4/HNZNJZWexqYPKX/4xvxjeouoZ7Emrl6C<br />
LvrKmR+S6zKE/eNhUoKJkbiqYsfbboYLTY7k7WzXQ8Xtn9BA2G<br />
/kVUPRrdwF4CAAnS+nOoGwsFIhf/0SvRheNEwJZCASVY8sPdXH<br />
6bYiUPlX+4W7jfjV2OR3VTa0HN0e9LLyhGaIOBg+RnDzOQmMCn<br />
8cgzgbvmAV5ezx4W17KIDKFbnMsaMec1InKTpInZNMioKdHDqC<br />
z5xsRILRXwyoMTieuZ44bynhAm2XvIV+Rbxy/eqhrVSJy3f9T1<br />
Du5UCw3GBdkG4aoJhmCz5Cej23uMIRNYojqxhEGLO13hxCqv8E<br />
llbWMMieZoQ1GptYb5jHFoabouckhss16XeoKypgLd8WdtFgg+<br />
88qguE4ZLxO/il6fHB7Fe+V0ZOXMBPedbQJ9zGXPLkgIjwH3Vj<br />
9YiH5GmSIUp1wBbi7cg4B+WZUaEopzBNa5Sf1u+qHOG29fdIpt<br />
KpaimBir7JKfCgQJxCkeD7ShSR0tNhAZ9PoVsK8/F3VMX3Zmkm<br />
FSaQWWuYFFRViDO2W0fIYYFl6Ta44aaLXdtbW3N4rf2bs4tveH<br />
tlm32kjaEq6AuU6R/QtnA9Z8S9Zk0CW/Caw87zcq3HLb84HmdD<br />
zdfuPRVq2AfRZwAf/EiPMF/Zq6f4D5zzZ1b59OHudsRrn2fs4x<br />
MU2cDBCVTabKCBLMOLXO7IS8nwoRVoSNTEzOYScbXW4FBTc+hj<br />
4lL3r9FiQJ6IctCc3+SlPxgXi6c8I2cEKockwEvl0iSbcXrGrt<br />
botmKpXZOHOyM/SkVpVe8hPtNN26584pFBzV1j1WZi0PriQFvt<br />
KTjVaUtVDpJQbOvxv0TRL9qkvE11S6pD5FYA7G6ipGYVdYAVJB<br />
Pna0RDeMR5sFDIn3sc2hS15y8euidRQkY2MPGM2Exd7kiJdy/3<br />
p2kdB4ZP02X0ZADnVmAgjIvJgFFJp7Eq4XxctyM7JDti8xbj6J<br />
oaPLAtyMAof0e/UPsRThP4kDI5Hex/SflF5I+UbG0fKuD4hRtn<br />
jx8jI97EN0gS1KC0+Gzoev4QuK+StIkru22WOjsrF2u4zj/X4/<br />
bTVSn2L4xJxXjSq1mW5sVaZp8gUxxs02kPQtRiqGY207xSV2h3<br />
o//DHdKZVgnhE6FPicX790+H1mpA32Dy7YkHNjWGOR1S6R8ibL<br />
J9SU8BbKJ3cq+yxPW2xF5cmUiBHspXywHeImz42+1HG86gpB93<br />
HOfYFjJWXzmqqsznNMU5CoFk0N85czapMBS5uyGhZfzVJICMW1<br />
HynkWpfEddRwGOa7OoOEdVS4b+UxFqIxtiDbIvsMyeJayDryKc<br />
EC5SO2Dnos9aadi5RsBpbyFTUDCzjfBQW+xnYOfQzzhRAQ4zKF<br />
i6iK0oYD9fZ8BthBPThbiQuAf7UwR3uhkxODpi1LQYN7Ve5QgX<br />
HKqSX0u3gSHbd2Tu08uX7Uk2wFhwebF2GRWHiLRB/o1NJ1GaGT<br />
0DuEQUWopLPOxeTIPw1lZtx4SOQi4KWdQTVINPdqxRQgsQQHK9<br />
x9cMK4RfFxV7UExnVHbFm3ZfAcI1qxLTM2e2DL7PFdQbZ0eHwQ<br />
gIiQo17w7FS+jlVMhlxCpT5rGKwRj0fMi5Vmo+iQITRH3tqXzU<br />
yZqdQVBfIlGFf0fdh6+2XOfoPD2rt7ovQ9Nl9lUa//ypkNWWlL<br />
bQyKg2wabJ1R7xtspC1g70AnzKo/TYFmhoKCmwywFSopMDlN0M<br />
qUkFkgpGTUPYlFRBz+tjEFI3K/iPH+nPo0bNgNAZqtzgpVwmd9<br />
MM+JkOxET4MN8pxRbau2W7+elY3hXqMq6qKiTdRzZHn4HF7tDF<br />
YDdDK6Cp6qHHuzp8DnZhQHtZ/KEYojxaUQ9CQ2VkgwDb5R+Hfx<br />
EqxxzhTLDLKmmCzmthH9v9IpQ47MvrDZRj7H9rDVsjwSju5lhC<br />
2iPwH7JQdBHnMLO+wZ5AASi9acSpa9fPTqYNEnWmD9AmVpDylr<br />
6djxoczL5+5xv9zvQPrjKvyJjKciCV4glCw4jmfwyN2PYI3PqS<br />
SrGEOBDanNJtsvAQMWkoALwlUKm2RdUpU8/SD+wZdORKHjEEiu<br />
Y8iBcMicEDAnNPIQWDUN5HVFB4MdYbd4Snb1R6iK1vEBnmKJHS<br />
AQ6O8j9LmEwiA+CLpsmt5Cqj4M7KLKvTrgEZLByHzexRi+v+0K<br />
69TrT+6/EzP8g+Ua80t6PHRyM70fVY16cHb883kMdwVmU8ljsv<br />
3oPZV09kONaUeVPjfQF/L1CkuPzNT8mMpPjfzgxRcNRokpFfan<br />
RplFeAA2IEPhKnZhrUv5R4hpN6k5gymjgseR5x3uMQRMwoOunx<br />
RdBn+GZ5Mp/+1V5iHNQGVe6QGk+1sGALLSTbeGJKjMhyTMsVkZ<br />
IDCrOebBAD2PoErHvuaer8++yRrC+m7osRJ9vjx385SAqONPqy<br />
H/lMPSJWts9BRWV64nEpUfJdWfxp9MgW0wCuU+msZx5zJ7bzXZ<br />
4fK9Ct4r9QAzkDcMER+7gwUKyW5h0YepTyVLmGO4uIDqFz2rLu<br />
M8O+KO4mF+cZS/ga+uIYGb4dSW2tlWKyyHXDI77aj5cScOxn9Y<br />
Cp0HNOyo98PwG6vjvjihHgQ8sBFC8/4YHYl/sn5Cmz7z97z3wN<br />
Dg/DUbfg1TsLx3n1ne4SnlmAIJcJTGH/qmMA70dmeafukabqRS<br />
0DRyX6zsxgkvcL3axzIg9rMTprj0JQwI9BE3rDJ0g6GMdScW6Z<br />
AB/Y6OziTkW63pcKW4H8RTgIipW6riGDB88PoWvpD4d8UtGbx1<br />
BqA48XXFBdVJQyvtFnaJ4XbzHeMKIsKLeBaHu2xX00Pc1OUh6I<br />
0Gu44D5eGr67BtdM3KcS0NOhl4QZOE9AwSinLc5fihGcuC5tG6<br />
PgqbQX8X9oWMUpMK/jqBLtY6DDwzQ0THMJqYdAcAMp8koEcNmO<br />
/KkqXwlnSGOzLRsSWC9tTdUZAtXIN2YpJLTSSee3m2OhlkCyE0<br />
6ETPu3HYQD9qKXcEgMh1K1HX5wsFjrq+DwptdsureOqwe/Rdbz<br />
RO73RS5TeSgFL7US+9HLRdkAw8kyZBnHf9lMz/sNtZFZmyWOv+<br />
8jXeeMwjFT9CdA2VbV3l+kSHBjfvp0Q7DafoMVVAzJiWD8h8uv<br />
CfSFAmzF3DJepvN6pe6/7w6RjRzWW9XgYFWBj1s84TzokHDYDE<br />
X7osL6jF4BjmFH2nzJg21bNga+Z0tpNo+bqrPRj3+DMjft4K8s<br />
Gz76drSBNUuw6F0G1LnWknBSFgxsTsWUESvfv48aePMImAMWmP<br />
ITpEkdwYsIH3MoIf7GAiLNkvV7vSgoOBCs/f2J1N4cl3t92i5B<br />
vIC12uzFU/D3d2CPYmrQ6G16cg7lqjbyH9WEMHlxlHR1GvCd1+<br />
nnUUCnsvl/+x8KVbp7LZ40Opc9vfyTh53P4imyVZsz3QU5r4S4<br />
ujGXUE3Z2FY5KmQTgT2U7C/tJJ5Cx1vbYb7CR3dPKvGx94IvvP<br />
2xWNXt3/BZA7Kr4mk7Mi4XzzNTgayYZmZOE1DwQbE11+dJ50qb<br />
Tj6a6VPHjZqBXuoSgd3pbFKJFaeoG5W5w7CQKdPTRGIx3vUHsS<br />
LtC+D7XvSeozGp5o03tZ5rlnopUTZVBewvDJXUrvIgc/9m7h6W<br />
q/xdwMxlbb9IhFHk50+0NDsOO7tb57lBv+o2UXY8hDWkY+DYAH<br />
gwQ/cBe1mKXJvA8o+cySB8NnLzy3Ql58arsmB68BQ/dm4oaZB6<br />
ZImgGxiug1x1uD2cfqNd3HCMGn8KTr4ybk88lJF3d1BZLtmBb8<br />
7Zu+5+r6fermqXby5E3Ep0ket/Un0EtHatwNnhxDV0f7QYZX/n<br />
dVvTuA4rIKhChbKMc62XfYDNapyV3BYL7fd7KyB6gNm7vz0pMD<br />
boahiZ4dIVyFivCyV6RtJrnGXdfS/2JgDd4XxlKjG39oGz5myq<br />
0VzyCkKGLqoblpMEw1G0r8ZXHXqvYAWXvYYjRtVkZBi//uinW9<br />
qxAKN+4K/W5sti6gOpjfSmhalWHv0azuMjCm7CuvMHGnUX8fKx<br />
J+V9Bl8QEEBtkaOx3c/7kt0WoEQ+PSME2mF5IpOeN7UFdVgFMt<br />
1iaInj59Snk1CgvoAKVYUcXuuQ1mrcNlSPoriDQN7v2ciML1LR<br />
4rYTH9Elk6Tf2NVQRPaPhLvriiXP/kbVNV2JddoaCX7ivH3TE1<br />
oZrHPgR0AS6mXp/ArxRraou92wqG0nUX5TQXw9aTh3702fWeJA<br />
+/usoz7getHNxhbAFL0vkxiSi3+yHb/wHzkOGyVycAAA==<br />
}</var><br />
<var class="dt-function">write</var> unzip/zip-desktop.r <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJxtV02T2zYMPVu/AqPMTnbbSPJuNjl4O/W0TTs5pB+TZnLxuD<br />
O0RK/ZlUmFpNZ2Pvrb+0BKsuzEPlgiARJ4wAPgt7/+/OcbWrxT<br />
vpYzSj+qhirpHrxp0mTyWjlv7GFGi2QyuZ5m0+vsZjq9pfTiSb<br />
ZWtXRk5dY8yuoZ8WsNcSprVT6IVS2fkROPMrPyQyudlxbnLZNl<br />
kjhbzugiLxK1Jm08yT3U3Jw8pLJKWWzyY0GLrXiQvDJsLRNhy4<br />
16hKVlLYXOGuE3w27RapifdebnNrESQk5m31K6yPNie8jOVO6c<br />
2ErCjcKRsepeaVFTp54EWVjXSWdwpEg2UlQSNpdm2xgngRTh08<br />
P5Xsld9irKUyPKB1nR6kDvTf3AgLDoK+EheanN7iq8v5fWKaNn<br />
NM35exMWf2r9xlg+MGjSH8q7ckOXZh1OFffyKp72V2vZDEj+Dv<br />
BIAV7hFDS8IaWdFzX80RXZVpNppCZnWltKKh7Z0j7yFC9tmux1<br />
596llVULuYWTpYF+bURV8GEXjz7bCqVzu7xKksldrVZW2APthP<br />
aO/Ea5ZPKbYjAuzrCOl7yJ8rMOOP7U8lHWM3oqqkehSyA27DS1<br />
8Gtjt7yJu4d1f2hwwaJCMsJRUy+PW5Vh67B53yoggDzU0hOeWy<br />
dtFhbWAo49qop2cjXS5LSSFTIkAHA0jz8Lhouu85v8Or/Nb8ho<br />
WtRKt3vaKV2ZnVuODjpTmJ5qLJeD4EjHtU1jrJ+BIVoel8EtqT<br />
m8n0DIyTugiwCu/U5YxJrhltRYxNX6AyE33gZyv5PlRpva3CsQ<br />
loPPMZlMurMqTo2DaSk4Go4AJlvH+vwSzig4kalLZFZ+E5XpUu<br />
mybiuconSINlVgs1Wr1iOJr3LIfhl5JUHG2pnoVlgOJaELUVgo<br />
N0LfR9qHhAmLSnPYqRYw1I9i4fyhllRuwarWe8Z0oyqZNaZpUc<br />
cMcWgLL/f+CLIXs3Ac7TbKS7qdTve3L17Qzgp2zMp/jdJc7ibu<br />
gPhvC1da1fgi8rzwTGxKKWWJrakr+qaYAHXiI2m5Q5xl/8t6Fj<br />
t00eGf+73H4jJc7lurj86BBK5WfMj1y2DkAreYukYFswKOBPeO<br />
np2pw0/hhzfGKAUiF6tW1VXeFZ+Tncp8tfyhVT4dMWLvKTi924<br />
hQcunmFlatLDJeck1fnshmoSFAZP/8ZkqVgMUOSU3R/7wIMHsR<br />
AjSLq2tloRLC1igulyESdcHKoSQiqlkgrKtjEjF0g8ueBH1P1z<br />
fT/fWLaO718+mwnXa+U/h1faN7Ruw5l0RHsavBM1n6+kCXa8Gt<br />
6yr9FsicunIf0j+zLZe4mJh+Y1u4x630c/9iq+H5v+Oq29AdjE<br />
QagCwuKPd7jWBDPw/dBi93rpGlQkMKRnbSFznzV4LVd42Va7XH<br />
zqQ/5MmwJ7eidBkStXGwuictt63mQIvBj9FKAqbNQrQLowHFaY<br />
OTCrXBDr27a42X4fdqRNCux6NnILJboBd4fFpMR1056FMaj83T<br />
E7H0HW6UKLCo/CvwyRAmD7uzzOIwYjCGOf1itEddlfN0VFcXnM<br />
gxT5ajuSJcx2EEXxkmLi49T2GoFOixDPYobdH0TyHgRnT050la<br />
pPTDj6hUnMZQHXYYBvAWCIYTx4nT23XscxaNiRZpjJPS97M0aI<br />
0yPRo8VN+TqyJZQiDTIwrxcqlXGIlCNK10bnCqmAWzFkIfzsIT<br />
QsRnhTK2eDEl9xBSO/zEBFt+pXHZWRhYHzTHC31RZEcp/S69Ot<br />
EftcSIxMiLUaRirT6zNo0JESJbRNRQris5OPzy9smnf7AT7Ei/<br />
4PGYJ18ForutZ8cR5rOkOdKEWxn4heHCn+30E9TT2JVje1gm0d<br />
5uxmSVZD6EFY/91Qn6OrLeqY9yTvP5MJTedUNuvzDnsbqnW8rD<br />
YT/iASrUX1mvM5QcK0qw5P5475pnAIvua9CW5ilK89bdz2gSGb<br />
ug9O/Q4CL9MIZJZk84Xuk0NoWOTRMYsA4TXzf6h78KAYMiPMUe<br />
ejacE67DJfjHgNbKjSHiEuLHoIT/DndoU73jYzd5VBtc4UEk3A<br />
qbpJ2nmAsHrWXChSD5H7rW96X1DAAA<br />
}</var><br />
<var class="dt-function">change-dir</var> unzip<br />
<var class="dt-function">inform</var> <var class="dt-function">layout</var> [<br />
style cmd button [<var class="dt-function">hide-popup</var> <var class="dt-function">do</var> face/text]<br />
<var class="dt-set-word">ta:</var> info white <var class="dt-pair">400x455</var> wrap<br />
<var class="dt-function">rejoin</var> [<br />
system/script/header/title <var class="dt-string">" "</var><br />
<var class="dt-function">mold</var> system/script/header/app-header newline newline<br />
<var class="dt-function">read</var> <var class="dt-file">%license.txt</var><br />
]<br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">sl:</var> slider <var class="dt-pair">16x455</var> [<var class="dt-function">scroll-para</var> ta face]<br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">a:</var> <var class="dt-function">at</var><br />
cmd <var class="dt-string">"do %build.r"</var><br />
cmd <var class="dt-string">"do %do.r"</var><br />
cmd <var class="dt-string">"quit"</var><br />
text <var class="dt-function">mold</var> <var class="dt-function">what-dir</var> <var class="dt-integer">245</var> [<var class="dt-function">browse</var> <var class="dt-file">%./</var>]<br />
text-list <var class="dt-pair">245x320</var> data <var class="dt-function">sort</var> <var class="dt-function">read</var> <var class="dt-file">%./</var> [<br />
<var class="dt-set-path">ta/text:</var> <var class="dt-function">read</var> <var class="dt-function">first</var> face/picked<br />
<var class="dt-set-path">sl/data:</var> <var class="dt-integer">0</var> <var class="dt-function">do-face</var> sl none<br />
]<br />
<var class="dt-function">at</var> a <var class="dt-function">+</var> <var class="dt-pair">120x15</var> text <var class="dt-integer">130</var><br />
<var class="dt-string">{build.r builds desktop, do.r runs files directly (faster)}</var><br />
<var class="dt-function">return</var><br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-69432627458164878092014-03-11T02:30:00.003-07:002014-03-11T02:30:16.245-07:00Expandable listThe following script shows expandable lists:<br />
<a href="http://2.bp.blogspot.com/-ZABAIoiTIuU/Ux7XWWvJ7iI/AAAAAAAACTM/exmxrhYhInw/s1600/tree1.jpg" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-ZABAIoiTIuU/Ux7XWWvJ7iI/AAAAAAAACTM/exmxrhYhInw/s320/tree1.jpg" /></a><a href="http://3.bp.blogspot.com/-ovOtg7erjnM/Ux7XX6EmRcI/AAAAAAAACTU/R6caB4Pr8dk/s1600/tree2.jpg" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-ovOtg7erjnM/Ux7XX6EmRcI/AAAAAAAACTU/R6caB4Pr8dk/s320/tree2.jpg" /></a><br />
<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
title: "(treelist)"<br />
file: %treelist.r<br />
author: "Marco Antoniazzi derived from Didier CADIEU"<br />
email: [luce80 AT libero DOT it]<br />
date: 16-05-2010<br />
version: 0.0.1<br />
needs: {Works only on View 1.2.8+}<br />
comment: { a simple tree-view}<br />
Purpose: "show how to build a simple tree list"<br />
Category: [util vid view]<br />
license: 'BSD<br />
]<br />
<var class="dt-set-word">max-rows:</var><br />
<var class="dt-set-word">cnt:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">indent:</var> <var class="dt-integer">12</var><br />
<var class="dt-set-word">tree-leaf:</var> <var class="dt-integer">0</var> <var class="dt-set-word">tree-opened-node:</var> <var class="dt-integer">1</var> <var class="dt-set-word">tree-closed-node:</var> <var class="dt-integer">-1</var><br />
<var class="dt-set-word">tree-data:</var> [[<var class="dt-integer">1</var> <var class="dt-integer">0</var> root][<var class="dt-integer">-1</var> <var class="dt-integer">1</var> numbers][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"one"</var>][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"two"</var>][<var class="dt-integer">-1</var> <var class="dt-integer">2</var> fruits][<var class="dt-integer">0</var> <var class="dt-integer">3</var> <var class="dt-string">"apple"</var>][<var class="dt-integer">0</var> <var class="dt-integer">3</var> <var class="dt-string">"banana"</var>][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"three"</var>][<var class="dt-integer">1</var> <var class="dt-integer">1</var> names][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"a"</var>][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"b"</var>]<br />
[<var class="dt-integer">1</var> <var class="dt-integer">1</var> numbers][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"101"</var>][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"102"</var>][<var class="dt-integer">-1</var> <var class="dt-integer">2</var> <var class="dt-string">"103"</var>][<var class="dt-integer">0</var> <var class="dt-integer">3</var> <var class="dt-string">"103.1"</var>][<var class="dt-integer">0</var> <var class="dt-integer">3</var> <var class="dt-string">"103.2"</var>][<var class="dt-integer">0</var> <var class="dt-integer">2</var> <var class="dt-string">"104"</var>]]<br />
<var class="dt-set-word">triangle:</var> [pen none fill-pen blue polygon <var class="dt-pair">8x0</var> <var class="dt-pair">8x8</var> <var class="dt-pair">0x8</var>]<br />
<var class="dt-set-word">bullets:</var> <var class="dt-function">compose/deep/only</var> [<br />
[<var class="dt-function">draw</var> (<var class="dt-function">append</var> [translate <var class="dt-integer">-1</var> <var class="dt-integer">10</var> rotate <var class="dt-integer">-45</var>] triangle) ]<br />
[<var class="dt-function">draw</var> [pen none fill-pen black circle <var class="dt-pair">6x10</var> <var class="dt-integer">3</var>]]<br />
[<var class="dt-function">draw</var> (<var class="dt-function">append</var> [translate <var class="dt-integer">2</var> <var class="dt-integer">6</var>] triangle) ]<br />
]<br />
<var class="dt-set-word">total_visible:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/current</var> cur <var class="dt-refinement">/local</var> visible-count closed-level tree-line curr] [<br />
<var class="dt-set-word">curr:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">visible-count:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">closed-level:</var> <var class="dt-integer">1000</var><br />
<var class="dt-function">foreach</var> tree-line tree-data [<br />
<var class="dt-function">set</var> [opened level line-text] tree-line<br />
<var class="dt-function">if</var> <var class="dt-function">all</var>[(opened <var class="dt-function">=</var> tree-closed-node) (level <var class="dt-function"><</var> closed-level)] [<var class="dt-set-word">closed-level:</var> level]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var>[(opened <var class="dt-function">=</var> tree-opened-node) (level <var class="dt-function"><=</var> closed-level)] [<var class="dt-set-word">closed-level:</var> <var class="dt-integer">1000</var>]<br />
<var class="dt-function">if</var> level <var class="dt-function"><=</var> closed-level [<var class="dt-set-word">visible-count:</var> visible-count <var class="dt-function">+</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">if</var> <var class="dt-refinement">/current</var> [<br />
<var class="dt-set-word">curr:</var> curr <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">if</var> <var class="dt-function">equal?</var> visible-count cur [<var class="dt-set-word">visible-count:</var> curr <var class="dt-function">break</var>]<br />
]<br />
]<br />
<var class="dt-cmt">;print [visible-count]<br />
</var> visible-count<br />
]<br />
<var class="dt-set-word">tree-layout:</var> [<br />
origin <var class="dt-pair">8x8</var> space <var class="dt-pair">0x0</var><br />
across pad <var class="dt-pair">0x4</var><br />
<var class="dt-set-word">tree-list:</var> list <var class="dt-pair">150x0</var> <var class="dt-function">+</var> (<var class="dt-pair">1x18</var> <var class="dt-function">*</var> <var class="dt-pair">0x6</var>) <var class="dt-function">+</var> <var class="dt-pair">0x8</var> [ <br />
origin <var class="dt-integer">0</var> space <var class="dt-integer">0</var> across<br />
box (indent <var class="dt-function">*</var> <var class="dt-pair">1x0</var> <var class="dt-function">+</var> <var class="dt-pair">0x18</var>) with [<var class="dt-set-word">opened:</var> <var class="dt-integer">-2</var>]<br />
<var class="dt-set-word">tree-line-txt:</var> text <var class="dt-pair">150x18</var> black <var class="dt-tuple">240.240.240</var> font [<var class="dt-set-word">colors:</var> [<var class="dt-tuple">0.0.0</var> <var class="dt-tuple">250.0.0</var>] <var class="dt-set-word">size:</var> <var class="dt-integer">11</var>] with [<var class="dt-set-word">opened:</var> <var class="dt-integer">-1</var>] [switch_fold face]<br />
] supply [<br />
<var class="dt-set-word">level:</var> <var class="dt-set-word">line-text:</var> none<br />
<var class="dt-set-path">face/opened:</var> total_visible/current count <var class="dt-function">+</var> cnt<br />
<var class="dt-function">if</var> count <var class="dt-function">></var> face/opened [<var class="dt-set-path">face/show?:</var> false <var class="dt-function">exit</var>]<br />
<var class="dt-set-path">face/show?:</var> true<br />
<var class="dt-function">either</var> index <var class="dt-function">=</var> <var class="dt-integer">1</var> [<br />
<var class="dt-set-path">face/offset/x:</var> level <var class="dt-function">*</var> indent<br />
<var class="dt-set-path">face/effect:</var> <var class="dt-function">pick</var> bullets opened <var class="dt-function">+</var> <var class="dt-integer">2</var><br />
] [<br />
<var class="dt-set-path">face/offset/x:</var> level <var class="dt-function">*</var> indent <var class="dt-function">+</var> indent<br />
<var class="dt-set-path">face/text:</var> line-text<br />
]<br />
] effect <var class="dt-function">reduce</var> [<var class="dt-lit-word">'grid</var> (indent <var class="dt-function">*</var> <var class="dt-pair">1x0</var>) <var class="dt-pair">0x0</var> <var class="dt-tuple">220.220.220</var>]<br />
<br />
<var class="dt-set-word">tree-scroller:</var> scroller tree-list/size <var class="dt-function">*</var> <var class="dt-pair">0x1</var> <var class="dt-function">+</var> <var class="dt-pair">16x0</var> [<br />
<var class="dt-set-word">value:</var> <var class="dt-function">max</var> <var class="dt-integer">0</var> <var class="dt-function">to-integer</var> value <var class="dt-function">*</var> (max-rows <var class="dt-function">-</var> visible-rows)<br />
<var class="dt-function">if</var> value <var class="dt-function"><></var> cnt [<var class="dt-set-word">cnt:</var> value <var class="dt-function">show</var> tree-list]<br />
] <var class="dt-function">return</var><br />
btn <var class="dt-string">"Fold all"</var> [fold_all] btn <var class="dt-string">"Unfold all"</var> [unfold_all]<br />
]<br />
<var class="dt-set-word">resize_scroller:</var> <var class="dt-function">func</var> [sld [<var class="dt-datatype">object!</var>] tot-rows [<var class="dt-datatype">integer!</var>] visible-rows [<var class="dt-datatype">integer!</var>]] [<br />
<var class="dt-function">either</var> visible-rows <var class="dt-function">>=</var> tot-rows [<br />
<var class="dt-set-path">sld/step:</var> <var class="dt-integer">0</var><br />
sld/redrag <var class="dt-integer">1</var><br />
<var class="dt-set-path">sld/data:</var> <var class="dt-decimal">0.0</var><br />
<var class="dt-set-word">cnt:</var> <var class="dt-integer">0</var><br />
<var class="dt-cmt">;sld/show?: false<br />
</var> ][<br />
<var class="dt-set-path">sld/step:</var> <var class="dt-integer">1</var> <var class="dt-function">/</var> (tot-rows <var class="dt-function">-</var> visible-rows)<br />
sld/redrag (<var class="dt-function">max</var> <var class="dt-integer">1</var> visible-rows) <var class="dt-function">/</var> tot-rows<br />
<var class="dt-set-word">cnt:</var> <var class="dt-function">to-integer</var> sld/data <var class="dt-function">*</var> (tot-rows <var class="dt-function">-</var> visible-rows)<br />
<var class="dt-cmt">;sld/show?: true<br />
</var> ]<br />
]<br />
<var class="dt-set-word">switch_fold:</var> <var class="dt-function">func</var> [face <var class="dt-refinement">/local</var> tree-line][<br />
<var class="dt-set-word">tree-line:</var> <var class="dt-function">pick</var> tree-data face/opened<br />
<var class="dt-set-path">tree-line/1:</var> <var class="dt-function">negate</var> tree-line/1<br />
resize_scroller tree-scroller <var class="dt-set-word">max-rows:</var> total_visible visible-rows<br />
<var class="dt-function">show</var> [tree-scroller tree-list ]<br />
]<br />
<var class="dt-set-word">fold_all:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> tree-line][<br />
<var class="dt-function">foreach</var> tree-line tree-data [<var class="dt-function">if</var> tree-line/1 <var class="dt-function"><></var> <var class="dt-integer">0</var> [<var class="dt-set-path">tree-line/1:</var> <var class="dt-integer">-1</var>]]<br />
resize_scroller tree-scroller <var class="dt-set-word">max-rows:</var> total_visible visible-rows<br />
<var class="dt-function">show</var> [tree-scroller tree-list ]<br />
]<br />
<var class="dt-set-word">unfold_all:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/local</var> tree-line][<br />
<var class="dt-function">foreach</var> tree-line tree-data [<var class="dt-function">if</var> tree-line/1 <var class="dt-function"><></var> <var class="dt-integer">0</var> [<var class="dt-set-path">tree-line/1:</var> <var class="dt-integer">1</var>]]<br />
resize_scroller tree-scroller <var class="dt-set-word">max-rows:</var> total_visible visible-rows<br />
<var class="dt-function">show</var> [tree-scroller tree-list ]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">block?</var> tree-layout [<br />
<var class="dt-set-word">tree-layout:</var> <var class="dt-function">layout</var> tree-layout<br />
<var class="dt-set-word">visible-rows:</var> <var class="dt-function">to-integer</var> tree-list/size/y <var class="dt-function">-</var> <var class="dt-integer">4</var> <var class="dt-function">/</var> tree-line-txt/size/y<br />
resize_scroller tree-scroller <var class="dt-set-word">max-rows:</var> total_visible visible-rows<br />
]<br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> tree-layout<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-30335145617152729872014-02-13T01:54:00.002-08:002014-02-13T01:54:49.889-08:00Drag and Drop on WindowThis script show how to use <b>shell32.dll</b> in order to have use "drag and drop" to move file inside you application.<br />
I launched the script and obtained:<br />
<code>Drag some files and drop them on this window...</code><br />
<br />
then I dropped a file in the window and obtained:<br />
<code>You dropped 1 files.<br />
at coordinate 63x313<br />
1. /C/Documents and Settings/max/Desktop/Good day.pdf<br />
Finishing drag operation<br />
Unregistering window from DragAcceptFiles queue</code><br />
<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "System Port - Drag Accept Demo"<br />
File: %sys-port-drag-accept.r<br />
Author: "Gregg Irwin"<br />
EMail: greggirwin@acm.org<br />
Version: 0.0.1<br />
Date: 25-sep-2003<br />
Purpose: {<br />
Demo using system port to catch WM_DROPFILE messages for drag-n-drop<br />
support.<br />
}<br />
]<br />
<var class="dt-cmt">; Stripped version of win-shell object for demo purposes.<br />
</var><var class="dt-set-word">win-shell:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<var class="dt-set-word">win-lib:</var> <var class="dt-function">load/library</var> <var class="dt-file">%shell32.dll</var><br />
<var class="dt-set-word">null-buff:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">{Returns a null-filled string buffer of the specified length.}</var><br />
len [<var class="dt-datatype">integer!</var>]<br />
][<var class="dt-function">head</var> <var class="dt-function">insert/dup</var> <var class="dt-function">make</var> <var class="dt-datatype">string!</var> len <var class="dt-char">#"^@"</var> len ]<br />
<var class="dt-set-word">drag-accept-files:</var> <var class="dt-function">make</var> <var class="dt-datatype">routine!</var> [<br />
hWnd [<var class="dt-datatype">integer!</var>]<br />
fAccept [<var class="dt-datatype">integer!</var>]<br />
<var class="dt-set-word">return:</var> [<var class="dt-datatype">integer!</var>]<br />
] win-lib <var class="dt-string">"DragAcceptFiles"</var><br />
<var class="dt-set-word">drag-finish:</var> <var class="dt-function">make</var> <var class="dt-datatype">routine!</var> [<br />
hDrop [<var class="dt-datatype">integer!</var>]<br />
<var class="dt-set-word">return:</var> [<var class="dt-datatype">integer!</var>]<br />
] win-lib <var class="dt-string">"DragFinish"</var><br />
<var class="dt-set-word">point:</var> <var class="dt-function">make</var> <var class="dt-datatype">struct!</var> [<br />
x [<var class="dt-datatype">integer!</var>]<br />
y [<var class="dt-datatype">integer!</var>]<br />
] none<br />
<var class="dt-set-word">drag-query-point:</var> <var class="dt-function">make</var> <var class="dt-datatype">routine!</var> <var class="dt-function">compose/deep</var> [<br />
<var class="dt-string">{Returns nonzero if the drop occurred in the client area of the window,<br />
or zero if the drop did not occur in the client area of the window.}</var><br />
hDrop [<var class="dt-datatype">integer!</var>]<br />
lpPoint [<var class="dt-datatype">struct!</var> [(<var class="dt-function">first</var> point)]]<br />
<var class="dt-set-word">return:</var> [<var class="dt-datatype">integer!</var>]<br />
] win-lib <var class="dt-string">"DragQueryPoint"</var><br />
<var class="dt-set-word">drag-query-file:</var> <var class="dt-function">make</var> <var class="dt-datatype">routine!</var> [<br />
hWnd [<var class="dt-datatype">integer!</var>]<br />
iFile [<var class="dt-datatype">integer!</var>]<br />
lpszFile[<var class="dt-datatype">string!</var>]<br />
cb [<var class="dt-datatype">integer!</var>]<br />
<var class="dt-set-word">return:</var> [<var class="dt-datatype">integer!</var>]<br />
] win-lib <var class="dt-string">"DragQueryFile"</var><br />
<var class="dt-set-word">drag-query-filename-size:</var> <var class="dt-function">make</var> <var class="dt-datatype">routine!</var> [<br />
hWnd [<var class="dt-datatype">integer!</var>]<br />
iFile [<var class="dt-datatype">integer!</var>]<br />
lpszFile[<var class="dt-datatype">integer!</var>]<br />
cb [<var class="dt-datatype">integer!</var>]<br />
<var class="dt-set-word">return:</var> [<var class="dt-datatype">integer!</var>]<br />
] win-lib <var class="dt-string">"DragQueryFile"</var><br />
<var class="dt-set-word">num-files-dropped?:</var> <var class="dt-function">func</var> [hdrop [<var class="dt-datatype">integer!</var>]] [drag-query-file hdrop <var class="dt-integer">-1</var> <var class="dt-string">""</var> <var class="dt-integer">0</var> ]<br />
<var class="dt-cmt">; When they give us a filename index, we'll subtract one for them,<br />
</var> <var class="dt-cmt">; because Windows has the list as zero based, but I'd much rather let<br />
</var> <var class="dt-cmt">; everything be one based on the REBOL side.<br />
</var> <var class="dt-set-word">dropped-filename-size?:</var> <var class="dt-function">func</var> [<br />
hdrop [<var class="dt-datatype">integer!</var>] index [<var class="dt-datatype">integer!</var>]<br />
][drag-query-filename-size hdrop index <var class="dt-function">-</var> <var class="dt-integer">1</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> ]<br />
<var class="dt-set-word">dropped-filename?:</var> <var class="dt-function">func</var> [<br />
hdrop [<var class="dt-datatype">integer!</var>] index [<var class="dt-datatype">integer!</var>] <var class="dt-refinement">/local</var> result len<br />
][<br />
<var class="dt-set-word">result:</var> null-buff <var class="dt-function">add</var> <var class="dt-integer">1</var> dropped-filename-size? hdrop index<br />
<var class="dt-set-word">len:</var> drag-query-file hdrop index <var class="dt-function">-</var> <var class="dt-integer">1</var> result <var class="dt-function">length?</var> result<br />
<var class="dt-function">copy/part</var> result len<br />
]<br />
]<br />
<var class="dt-set-word">my-hwnd?:</var> <var class="dt-function">does</var> [<var class="dt-function">second</var> <var class="dt-function">get-modes</var> system/ports/system [window]]<br />
<var class="dt-set-word">WM_DESTROY:</var> <var class="dt-integer">2</var> <var class="dt-cmt">; &H2<br />
</var><var class="dt-set-word">WM_DROPFILES:</var> <var class="dt-integer">563</var> <var class="dt-cmt">; &H233<br />
</var><br />
<var class="dt-set-word">enable-system-trap:</var> <var class="dt-function">does</var> [<br />
<var class="dt-cmt">; Trap OS interrupts<br />
</var> <var class="dt-function">if</var> <var class="dt-function">not</var> system/ports/system [<br />
<var class="dt-function">if</var> <var class="dt-function">none?</var> <var class="dt-function">attempt</var> [<var class="dt-set-path">system/ports/system:</var> <var class="dt-function">open</var> [<var class="dt-set-word">scheme:</var> <var class="dt-lit-word">'system</var>]][<var class="dt-function">print</var> <var class="dt-string">"NOTE: Missing System Port"</var> <var class="dt-function">exit</var> ]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> <var class="dt-function">get-modes</var> system/ports/system <var class="dt-lit-word">'system-modes</var> <var class="dt-lit-word">'winmsg</var> [<br />
<var class="dt-function">set-modes</var> system/ports/system [<var class="dt-set-word">winmsg:</var> WM_DROPFILES]<br />
]<br />
<var class="dt-function">append</var> system/ports/wait-list system/ports/system<br />
]<br />
<var class="dt-set-word">check-system-trap:</var> <var class="dt-function">func</var> [port <var class="dt-refinement">/local</var> msg pt] [<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">port?</var> port [<var class="dt-function">return</var> none]<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [port/scheme <var class="dt-function"><></var> <var class="dt-lit-word">'system</var> port <var class="dt-function"><></var> system/ports/system][<var class="dt-function">return</var> port]<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> system/ports/system [<var class="dt-function">return</var> none]<br />
<var class="dt-function">while</var> [<var class="dt-set-word">msg:</var> <var class="dt-function">pick</var> system/ports/system <var class="dt-integer">1</var>] [<br />
<var class="dt-cmt">;print ["msg:" mold msg]<br />
</var> <var class="dt-function">if</var> msg/1 <var class="dt-function">=</var> <var class="dt-lit-word">'winmsg</var> [<br />
<var class="dt-function">if</var> msg/2 <var class="dt-function">=</var> WM_DROPFILES [<br />
<var class="dt-function">print</var> [<br />
<var class="dt-string">"You dropped "</var> win-shell/num-files-dropped? msg/3 <var class="dt-string">"files."</var><br />
]<br />
<var class="dt-set-word">pt:</var> <var class="dt-function">make</var> <var class="dt-datatype">struct!</var> win-shell/point [<var class="dt-integer">0</var> <var class="dt-integer">0</var>]<br />
win-shell/drag-query-point msg/3 pt<br />
<var class="dt-function">print</var> [<var class="dt-string">" at coordinate "</var> <var class="dt-function">to</var> <var class="dt-datatype">pair!</var> <var class="dt-function">reduce</var> [pt/x pt/y]]<br />
<var class="dt-function">repeat</var> i win-shell/num-files-dropped? msg/3 [<br />
<var class="dt-set-word">file:</var> <var class="dt-function">to-rebol-file</var> win-shell/dropped-filename? msg/3 i<br />
<var class="dt-function">print</var> [<br />
tab <var class="dt-function">join</var> i <var class="dt-string">"."</var> tab <var class="dt-function">either</var> <var class="dt-function">dir?</var> file [<var class="dt-function">dirize</var> file][file]<br />
]<br />
]<br />
<var class="dt-function">print</var> <var class="dt-string">"Finishing drag operation"</var><br />
win-shell/drag-finish msg/3<br />
<var class="dt-function">print</var> <var class="dt-string">"Unregistering window from DragAcceptFiles queue"</var><br />
win-shell/drag-accept-files my-hwnd? <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> false<br />
<var class="dt-cmt">; (do something with files here)<br />
</var> <var class="dt-function">halt</var><br />
]<br />
]<br />
]<br />
none<br />
]<br />
<var class="dt-function">print</var> <var class="dt-string">"Drag some files and drop them on this window...^/"</var><br />
win-shell/drag-accept-files my-hwnd? <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> true<br />
enable-system-trap<br />
<var class="dt-function">forever</var> [<br />
<var class="dt-set-word">wake-port:</var> <var class="dt-function">wait</var> []<br />
<var class="dt-function">if</var> wake-port [check-system-trap wake-port]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-2205477449916791012014-01-27T06:05:00.001-08:002014-01-27T06:05:16.525-08:00Creating a 3D surfaceThe following script permits you to see a 3D surface giving a z=f(x,y) function:<br />
<a href="http://2.bp.blogspot.com/-daUG6hddxGM/UuZmis-TEBI/AAAAAAAACSc/nN6pNYUtAPo/s1600/Surface3D.jpg" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-daUG6hddxGM/UuZmis-TEBI/AAAAAAAACSc/nN6pNYUtAPo/s320/Surface3D.jpg" /></a><br />
<br />
Just enter youf function in the text area and press <b>apply</b>. You can set point of view and camera direction of view using the text field.<br />
<br />
<br />
To Rotate the surface use the following keys:<br />
<ul><li><b>[</b> & <b>]</b> - rotate left/right</li>
<li><b>{</b> & <b>}</b> - rotate forard/back</li>
<li>"<" & "<b>></b>" - roll left/right</li>
</ul><br />
To move the surface use the following function keys:<br />
<ul><li><b>F1</b>: move the surface left</li>
<li><b>F2</b>: move the surface right</li>
<li><b>F3</b>: move the surface up</li>
<li><b>F4</b>: move the surface down</li>
<li><b>F5</b>: move the surface back</li>
<li><b>F6</b>: move the surface forward</li>
</ul><br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> rebol [<br />
Title: "3D-Surface Plot"<br />
Date: 06-August-2007<br />
File: %surface.r<br />
Version: 1.0.0<br />
Email: phil.bevan@gmail.com<br />
Category: [demo]<br />
Purpose:<br />
{<br />
Draw a surface with 3-D Perspective and allow roation<br />
}<br />
License: {Copyright (c) <2007>, <Phil Bevan><br />
All rights reserved.<br />
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:<br />
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.<br />
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.<br />
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.}<br />
History: [0.0.1 - Initial Version - test purposes only ]<br />
Email: phil.bevan@gmail.com<br />
]<br />
<var class="dt-set-word">objs:</var> []<br />
<var class="dt-cmt">;<br />
</var><var class="dt-cmt">; reb-3d.r<br />
</var><var class="dt-cmt">;<br />
</var><br />
<var class="dt-set-word">screen:</var> <var class="dt-pair">0x0</var><br />
<var class="dt-set-word">sox:</var> <var class="dt-integer">500</var><br />
<var class="dt-set-word">soy:</var> <var class="dt-integer">300</var><br />
<var class="dt-set-path">screen/x:</var> sox <var class="dt-function">*</var> <var class="dt-integer">2</var><br />
<var class="dt-set-path">screen/y:</var> soy <var class="dt-function">*</var> <var class="dt-integer">2</var><br />
<var class="dt-set-word">pen-color:</var> black<br />
<var class="dt-set-word">anti-alias:</var> true<br />
<var class="dt-set-word">camera:</var> [<var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">6</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">800</var> <var class="dt-integer">800</var>] <var class="dt-cmt">; x y z a1 a2 xsc ysc<br />
</var><br />
<var class="dt-cmt">; draw order for all faces<br />
</var><var class="dt-set-word">draw-o:</var> []<br />
<var class="dt-cmt">; draw block<br />
</var><var class="dt-set-word">draw-bl:</var> []<br />
<var class="dt-set-word">fn-rot:</var> <var class="dt-function">func</var> [obj [<var class="dt-datatype">block!</var>]][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-cmt">; print "Rot"<br />
</var><var class="dt-cmt">; r1: now/time/precise<br />
</var> <var class="dt-set-word">c1:</var> <var class="dt-function">cosine</var> obj/1/4<br />
<var class="dt-set-word">c2:</var> <var class="dt-function">cosine</var> obj/1/5<br />
<var class="dt-set-word">c3:</var> <var class="dt-function">cosine</var> obj/1/6<br />
<var class="dt-set-word">s1:</var> <var class="dt-function">sine</var> obj/1/4<br />
<var class="dt-set-word">s2:</var> <var class="dt-function">sine</var> obj/1/5<br />
<var class="dt-set-word">s3:</var> <var class="dt-function">sine</var> obj/1/6<br />
<var class="dt-cmt">; r2: now/time/precise<br />
</var><br />
<var class="dt-function">clear</var> obj/3<br />
<var class="dt-function">clear</var> obj/4<br />
<var class="dt-set-path">obj/3:</var> <var class="dt-function">copy/deep</var> obj/2<br />
<var class="dt-cmt">; calculate the perspective of the points after the roation & translation<br />
</var> <var class="dt-function">foreach</var> point obj/3 [<br />
<var class="dt-cmt">; Roation about z axis<br />
</var> <var class="dt-set-word">x1:</var> (point/1 <var class="dt-function">*</var> c1) <var class="dt-function">-</var> (point/2 <var class="dt-function">*</var> s1)<br />
<var class="dt-set-word">y1:</var> (point/1 <var class="dt-function">*</var> s1) <var class="dt-function">+</var> (point/2 <var class="dt-function">*</var> c1)<br />
<var class="dt-set-word">z1:</var> point/3<br />
<var class="dt-cmt">; Roation about y axis<br />
</var> <var class="dt-set-word">x2:</var> (x1 <var class="dt-function">*</var> c2) <var class="dt-function">+</var> (point/3 <var class="dt-function">*</var> s2)<br />
<var class="dt-set-word">y2:</var> y1<br />
<var class="dt-set-word">z2:</var> <var class="dt-function">-</var> (x1 <var class="dt-function">*</var> s2) <var class="dt-function">+</var> (point/3 <var class="dt-function">*</var> c2)<br />
<var class="dt-set-word">x3:</var> x2 <var class="dt-function">+</var> obj/1/1<br />
<var class="dt-set-word">y3:</var> (y2 <var class="dt-function">*</var> c3) <var class="dt-function">-</var> (z2 <var class="dt-function">*</var> s3) <var class="dt-function">+</var> obj/1/2<br />
<var class="dt-set-word">z3:</var> (y2 <var class="dt-function">*</var> s3) <var class="dt-function">+</var> (z2 <var class="dt-function">*</var> c3) <var class="dt-function">+</var> obj/1/3<br />
<var class="dt-function">poke</var> point <var class="dt-integer">1</var> (x3 <var class="dt-function">+</var> camera/1)<br />
<var class="dt-function">poke</var> point <var class="dt-integer">2</var> (y3 <var class="dt-function">+</var> camera/2)<br />
<var class="dt-function">poke</var> point <var class="dt-integer">3</var> (z3 <var class="dt-function">+</var> camera/3)<br />
<var class="dt-set-word">x:</var> point/1 <var class="dt-function">/</var> point/3 <var class="dt-function">*</var> camera/6<br />
<var class="dt-set-word">y:</var> point/2 <var class="dt-function">/</var> point/3 <var class="dt-function">*</var> camera/7<br />
<var class="dt-function">append</var> obj/4 <var class="dt-function">to</var> <var class="dt-datatype">pair!</var> <var class="dt-function">reduce</var>[(x <var class="dt-function">+</var> sox) (soy <var class="dt-function">-</var> y)]<br />
]<br />
<var class="dt-cmt">; c: 0<br />
</var><var class="dt-cmt">; r3: now/time/precise<br />
</var><br />
<var class="dt-function">foreach</var> f obj/5 [<br />
<var class="dt-cmt">; c: c + 1<br />
</var> <var class="dt-set-word">p1:</var> f/1/1<br />
<var class="dt-set-word">p2:</var> f/1/2<br />
<var class="dt-set-word">p3:</var> f/1/3<br />
<var class="dt-set-word">d1:</var> <var class="dt-function">reduce</var> [(obj/3/:p2/1 <var class="dt-function">-</var> obj/3/:p1/1) (obj/3/:p2/2 <var class="dt-function">-</var> obj/3/:p1/2) (obj/3/:p2/3 <var class="dt-function">-</var> obj/3/:p1/3)] <var class="dt-cmt">; dist^2 between p2 & p1<br />
</var> <var class="dt-set-word">d2:</var> <var class="dt-function">reduce</var> [(obj/3/:p3/1 <var class="dt-function">-</var> obj/3/:p1/1) (obj/3/:p3/2 <var class="dt-function">-</var> obj/3/:p1/2) (obj/3/:p3/3 <var class="dt-function">-</var> obj/3/:p1/3)] <var class="dt-cmt">; dist^2 between p3 & p1<br />
</var> <var class="dt-function">poke</var> f <var class="dt-integer">4</var> (<var class="dt-integer">-2</var> <var class="dt-function">*</var> obj/3/:p1/3 <var class="dt-function">-</var> d1/3 <var class="dt-function">-</var> d2/3) <var class="dt-cmt">; 2 * z-dist from camera<br />
</var> <var class="dt-set-word">n1:</var> (d1/2 <var class="dt-function">*</var> d2/3) <var class="dt-function">-</var> (d1/3 <var class="dt-function">*</var> d2/2) <var class="dt-cmt">; normal x<br />
</var> <var class="dt-set-word">n2:</var> <var class="dt-function">-</var> (d1/1 <var class="dt-function">*</var> d2/3) <var class="dt-function">+</var> (d1/3 <var class="dt-function">*</var> d2/1) <var class="dt-cmt">; normal y<br />
</var> <var class="dt-set-word">n3:</var> (d1/1 <var class="dt-function">*</var> d2/2) <var class="dt-function">-</var> (d1/2 <var class="dt-function">*</var> d2/1) <var class="dt-cmt">; normal z<br />
</var> <var class="dt-set-word">v:</var> <var class="dt-integer">0</var> <var class="dt-function">></var> ((obj/3/:p1/1 <var class="dt-function">*</var> n1) <var class="dt-function">+</var> (obj/3/:p1/2 <var class="dt-function">*</var> n2) <var class="dt-function">+</var> (obj/3/:p1/3 <var class="dt-function">*</var> n3))<br />
<var class="dt-function">poke</var> f <var class="dt-integer">2</var> v<br />
]<br />
<var class="dt-cmt">; r4: now/time/precise<br />
</var><br />
<var class="dt-cmt">;print ["Rotation times" r2 - r1 r3 - r2 r4 - r3]<br />
</var><br />
]<br />
]<br />
<var class="dt-cmt">; if c = 1255 [probe f probe obj/3/:p1 probe obj/3/:p2 probe obj/3/:p3 print ["^/Distance^/" d1 "^/" d2 "^/Normal^/" n1 n2 n3 "^/" ((obj/3/:p1/1 * n1) + (obj/3/:p1/2 * n2) + (obj/3/:p1/3 * n3))]]<br />
</var><br />
<var class="dt-set-word">fn-show:</var> <var class="dt-function">func</var> [][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-cmt">; setup the faces to be shown<br />
</var> <var class="dt-set-word">pts:</var> []<br />
<var class="dt-function">clear</var> draw-o<br />
<var class="dt-function">foreach</var> o objs [<br />
<var class="dt-function">foreach</var> f o/5 [<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [f/2 <var class="dt-function">=</var> true f/3/1 <var class="dt-function">=</var> <var class="dt-integer">3</var> f/3/1 <var class="dt-function">=</var> <var class="dt-integer">4</var> f/3/1 <var class="dt-function">=</var> <var class="dt-integer">5</var>][<br />
<var class="dt-function">append</var> draw-o f/4<br />
<var class="dt-function">switch</var> f/3/1 [<br />
<var class="dt-integer">1</var> [<var class="dt-function">append/only</var> draw-o <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> (<var class="dt-function">pick</var> bmps f/3/2) <var class="dt-function">pick</var> o/4 f/1/1 <var class="dt-function">pick</var> o/4 f/1/2 <var class="dt-function">pick</var> o/4 f/1/3 <var class="dt-function">pick</var> o/4 f/1/4]]<br />
<var class="dt-integer">2</var> [<br />
<var class="dt-set-word">pts:</var> <var class="dt-function">copy</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'fill-pen</var> (<var class="dt-function">pick</var> clrs f/3/2) <var class="dt-lit-word">'polygon</var>]<br />
<var class="dt-function">foreach</var> coord f/1 [<var class="dt-function">append</var> pts <var class="dt-function">pick</var> o/4 coord]<br />
<var class="dt-function">append/only</var> draw-o pts<br />
]<br />
<var class="dt-integer">3</var> [<br />
<var class="dt-function">either</var> f/2 [<var class="dt-set-word">cl:</var> <var class="dt-function">pick</var> clrs f/3/2][<var class="dt-set-word">cl:</var> <var class="dt-function">pick</var> clrs f/3/3]<br />
<var class="dt-set-word">pts:</var> <var class="dt-function">copy</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'fill-pen</var> cl <var class="dt-lit-word">'polygon</var>]<br />
<var class="dt-function">foreach</var> coord f/1 [<var class="dt-function">append</var> pts <var class="dt-function">pick</var> o/4 coord]<br />
<var class="dt-function">append/only</var> draw-o pts<br />
]<br />
<var class="dt-integer">4</var> [<br />
<var class="dt-set-word">pts:</var> <var class="dt-function">copy</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'pen</var> <var class="dt-tuple">0.0.0</var> <var class="dt-lit-word">'line</var>]<br />
<var class="dt-function">foreach</var> coord f/1 [<var class="dt-function">append</var> pts <var class="dt-function">pick</var> o/4 coord]<br />
<var class="dt-function">append</var> pts <var class="dt-function">pick</var> o/4 f/1/1<br />
<var class="dt-function">append/only</var> draw-o pts<br />
]<br />
<var class="dt-integer">5</var> [<var class="dt-function">append/only</var> draw-o <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> (<var class="dt-function">pick</var> bmps f/3/2) <var class="dt-function">pick</var> o/4 f/1/1 <var class="dt-function">pick</var> o/4 f/1/2 <var class="dt-function">pick</var> o/4 f/1/3 <var class="dt-function">pick</var> o/4 f/1/4]]<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-cmt">; sort the faces<br />
</var> <var class="dt-function">sort/skip</var> draw-o <var class="dt-integer">2</var><br />
<var class="dt-cmt">; reset the draw-block<br />
</var> <var class="dt-function">clear</var> draw-bl<br />
<var class="dt-function">append</var> draw-bl <var class="dt-function">reduce</var> [<var class="dt-lit-word">'pen</var> pen-color]<br />
<var class="dt-function">either</var> anti-alias [<var class="dt-function">append</var> draw-bl <var class="dt-function">reduce</var> [<var class="dt-lit-word">'anti-alias</var> <var class="dt-lit-word">'on</var>]][<var class="dt-function">append</var> draw-bl <var class="dt-function">reduce</var> [<var class="dt-lit-word">'anti-alias</var> <var class="dt-lit-word">'off</var>]]<br />
<var class="dt-cmt">; create the draw block<br />
</var> <var class="dt-function">forskip</var> draw-o <var class="dt-integer">2</var> [<var class="dt-function">append</var> draw-bl draw-o/2]<br />
<var class="dt-cmt">; show the face<br />
</var> <var class="dt-function">show</var> f-box<br />
]<br />
]<br />
<var class="dt-cmt">;<br />
</var><var class="dt-cmt">; surface-obj.r<br />
</var><var class="dt-cmt">;<br />
</var><br />
<var class="dt-set-word">fn-append-pt:</var> <var class="dt-function">func</var> [x [<var class="dt-datatype">number!</var>] y [<var class="dt-datatype">number!</var>] z [<var class="dt-datatype">number!</var>] pts [<var class="dt-datatype">block!</var>] ][<br />
<var class="dt-function">append/only</var> pts <var class="dt-function">reduce</var> [x y z]<br />
]<br />
<var class="dt-set-word">fn-append-fc:</var> <var class="dt-function">func</var> [p1 [<var class="dt-datatype">integer!</var>] p2 [<var class="dt-datatype">integer!</var>] p3 [<var class="dt-datatype">integer!</var>] p4 [<var class="dt-datatype">integer!</var>] ip-col [<var class="dt-datatype">integer!</var>] <var class="dt-refinement">/local</var> fc col][<br />
<var class="dt-function">either</var> p4 <var class="dt-function">=</var> <var class="dt-integer">0</var><br />
[<var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [p1 p2 p3]]<br />
[<var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [p1 p2 p3 p4]]<br />
<var class="dt-set-word">col:</var> <var class="dt-function">reduce</var> [<var class="dt-integer">2</var> ip-col]<br />
<var class="dt-set-word">facet:</var> <var class="dt-function">reduce</var> [fc false col <var class="dt-integer">0</var>]<br />
<var class="dt-function">append/only</var> facets facet<br />
]<br />
<var class="dt-set-word">fn-gen-plane:</var> <var class="dt-function">func</var> [ip-col-1 [<var class="dt-datatype">tuple!</var>] ip-col-2 [<var class="dt-datatype">tuple!</var>] x1 [<var class="dt-datatype">number!</var>] y1 [<var class="dt-datatype">number!</var>] x2 [<var class="dt-datatype">number!</var>] y2 [<var class="dt-datatype">number!</var>] nsx [<var class="dt-datatype">integer!</var>] nsy [<var class="dt-datatype">integer!</var>]][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-set-word">pts:</var> []<br />
<var class="dt-set-word">facets:</var> []<br />
<var class="dt-set-word">obj:</var> []<br />
<var class="dt-set-word">obj-col:</var> []<br />
<var class="dt-set-word">npx:</var> nsx <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">npy:</var> nsy <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">cols:</var> <var class="dt-function">reduce</var>[ip-col-1 ip-col-2]<br />
<var class="dt-cmt">; points & face<br />
</var> <var class="dt-function">clear</var> pts<br />
<var class="dt-function">for</var> i y1 y2 (y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> nsy [<br />
<var class="dt-function">for</var> j x1 x2 (x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> nsx [<br />
<var class="dt-cmt">; points<br />
</var> fn-append-pt i j <var class="dt-integer">0</var> pts<br />
]<br />
]<br />
<var class="dt-function">for</var> i (y1 <var class="dt-function">+</var> ((y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> nsy <var class="dt-function">/</var> <var class="dt-integer">2</var>)) (y2) (y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> nsy [<br />
<var class="dt-function">for</var> j (x1 <var class="dt-function">+</var> ((x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> nsx <var class="dt-function">/</var> <var class="dt-integer">2</var>)) (x2) (x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> nsx [<br />
<var class="dt-cmt">; points<br />
</var> fn-append-pt i j <var class="dt-integer">0</var> pts<br />
]<br />
]<br />
<var class="dt-cmt">; faces<br />
</var><var class="dt-cmt">; print ["AAA" npx npy]<br />
</var> <var class="dt-function">clear</var> facets<br />
<var class="dt-function">for</var> i <var class="dt-integer">1</var> npy <var class="dt-function">-</var> <var class="dt-integer">1</var> <var class="dt-integer">1</var> [<br />
<var class="dt-function">for</var> j <var class="dt-integer">1</var> npx <var class="dt-function">-</var> <var class="dt-integer">1</var> <var class="dt-integer">1</var> [<br />
<var class="dt-cmt">; top facets<br />
</var> <var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [<br />
(npx <var class="dt-function">*</var> npy) <var class="dt-function">+</var> ((i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> (npx <var class="dt-function">-</var> <var class="dt-integer">1</var>)) <var class="dt-function">+</var> j<br />
(i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> npx <var class="dt-function">+</var> j <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
(i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> npx <var class="dt-function">+</var> j<br />
]<br />
<var class="dt-set-word">facet:</var> <var class="dt-function">reduce</var> [fc false <var class="dt-function">copy</var> [<var class="dt-integer">3</var> <var class="dt-integer">1</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>]<br />
<var class="dt-function">append/only</var> facets facet<br />
<var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [<br />
(npx <var class="dt-function">*</var> npy) <var class="dt-function">+</var> ((i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> (npx <var class="dt-function">-</var> <var class="dt-integer">1</var>)) <var class="dt-function">+</var> j<br />
(i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> npx <var class="dt-function">+</var> j<br />
i <var class="dt-function">*</var> npx <var class="dt-function">+</var> j<br />
]<br />
<var class="dt-set-word">facet:</var> <var class="dt-function">reduce</var> [fc false <var class="dt-function">copy</var> [<var class="dt-integer">3</var> <var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>]<br />
<var class="dt-function">append/only</var> facets facet<br />
<var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [<br />
(npx <var class="dt-function">*</var> npy) <var class="dt-function">+</var> ((i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> (npx <var class="dt-function">-</var> <var class="dt-integer">1</var>)) <var class="dt-function">+</var> j<br />
i <var class="dt-function">*</var> npx <var class="dt-function">+</var> j<br />
i <var class="dt-function">*</var> npx <var class="dt-function">+</var> j <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
]<br />
<var class="dt-set-word">facet:</var> <var class="dt-function">reduce</var> [fc false <var class="dt-function">copy</var> [<var class="dt-integer">3</var> <var class="dt-integer">1</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>]<br />
<var class="dt-function">append/only</var> facets facet<br />
<var class="dt-set-word">fc:</var> <var class="dt-function">reduce</var> [<br />
(npx <var class="dt-function">*</var> npy) <var class="dt-function">+</var> ((i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> (npx <var class="dt-function">-</var> <var class="dt-integer">1</var>)) <var class="dt-function">+</var> j<br />
i <var class="dt-function">*</var> npx <var class="dt-function">+</var> j <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
(i <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> npx <var class="dt-function">+</var> j <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
]<br />
<var class="dt-set-word">facet:</var> <var class="dt-function">reduce</var> [fc false <var class="dt-function">copy</var> [<var class="dt-integer">3</var> <var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>]<br />
<var class="dt-function">append/only</var> facets facet<br />
]<br />
]<br />
<var class="dt-cmt">; print length? facets<br />
</var><br />
<var class="dt-cmt">; create the object<br />
</var> <var class="dt-function">append</var> obj <var class="dt-function">reduce</var> [<br />
<var class="dt-cmt">; angles & co-ordinates<br />
</var> [<var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var>] <var class="dt-cmt">;obj/1<br />
</var> pts<br />
[]<br />
[]<br />
facets<br />
cols<br />
]<br />
<var class="dt-function">append/only</var> objs obj<br />
]<br />
]<br />
<var class="dt-cmt">;<br />
</var><var class="dt-cmt">; Main line<br />
</var><var class="dt-cmt">;<br />
</var><br />
<var class="dt-set-word">clrs:</var> <var class="dt-function">reduce</var> [white orange red white <var class="dt-tuple">255.255.200</var> <var class="dt-tuple">50.50.200</var> <var class="dt-tuple">100.100.150</var> <var class="dt-tuple">255.25.10</var> blue green yellow]<br />
<var class="dt-cmt">; foreach o objs [fn-rot o]<br />
</var><br />
<var class="dt-set-word">fn-show-cam:</var> <var class="dt-function">func</var> [][<br />
<var class="dt-set-path">f-cx/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/1<br />
<var class="dt-set-path">f-cy/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/2<br />
<var class="dt-set-path">f-cz/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/3<br />
<var class="dt-function">if</var> f-panel/show? [<var class="dt-function">show</var> [f-cx f-cy f-cz]]<br />
]<br />
<var class="dt-set-word">fn-show-angles:</var> <var class="dt-function">func</var> [][<br />
<var class="dt-set-path">f-cx/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/1<br />
<var class="dt-set-path">f-cy/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/2<br />
<var class="dt-set-path">f-cz/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> camera/3<br />
]<br />
<var class="dt-set-word">help-text:</var> <var class="dt-string">{<br />
Welcome to Surface.r.<br />
To Rotate the surface use the following keys:<br />
"[" & "]" - rotate left/right<br />
"{" & "}" - rotate forard/back<br />
"<" & ">" - roll left/right<br />
To move the surface use the following function keys:<br />
F1: move the surface left<br />
F2: move the surface right<br />
F3: move the surface up<br />
F4: move the surface down<br />
F5: move the surface back<br />
F6: move the surface forward<br />
}</var><br />
<var class="dt-set-word">fn-surface-help:</var> <var class="dt-function">func</var> [][<br />
<var class="dt-set-word">lv-lay:</var> <var class="dt-function">layout</var> [<br />
backdrop <var class="dt-tuple">0.0.0</var> effect [gradient <var class="dt-pair">0x1</var> <var class="dt-tuple">130.255.230</var> <var class="dt-tuple">0.150.0</var>]<br />
vh1 <var class="dt-string">"3D Surface Help"</var><br />
vtext help-text <var class="dt-pair">400x600</var> as-is<br />
]<br />
<var class="dt-function">view/new</var> lv-lay<br />
]<br />
<var class="dt-set-word">fn-prefs:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/hide-panel</var> <var class="dt-refinement">/local</var> lv-err xl-new yl-new xh-new yh-new][<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">xl-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-xl/text][<br />
<var class="dt-function">focus</var> f-xl<br />
<var class="dt-function">show</var> f-xl<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid low x value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">yl-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-yl/text][<br />
<var class="dt-function">focus</var> f-yl<br />
<var class="dt-function">show</var> f-yl<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid low y value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">xh-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-xh/text][<br />
<var class="dt-function">focus</var> f-xh<br />
<var class="dt-function">show</var> f-xh<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid high x value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">yh-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-yh/text][<br />
<var class="dt-function">focus</var> f-yh<br />
<var class="dt-function">show</var> f-yh<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid high y value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> xh-new <var class="dt-function"><=</var> xl-new [<br />
<var class="dt-function">focus</var> f-xh<br />
<var class="dt-function">show</var> f-xh<br />
<var class="dt-function">alert</var> <var class="dt-string">"The high x value must be greater than the low x value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> yh-new <var class="dt-function"><=</var> yl-new [<br />
<var class="dt-function">focus</var> f-yh<br />
<var class="dt-function">show</var> f-yh<br />
<var class="dt-function">alert</var> <var class="dt-string">"The high y value must be greater than the low y value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-set-word">xl:</var> xl-new<br />
<var class="dt-set-word">yl:</var> yl-new<br />
<var class="dt-set-word">xh:</var> xh-new<br />
<var class="dt-set-word">yh:</var> yh-new<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">squares-x-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-xsq/text][<br />
<var class="dt-function">focus</var> f-xsq<br />
<var class="dt-function">show</var> f-xsq<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid no of x squares"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">squares-y-new:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-ysq/text][<br />
<var class="dt-function">focus</var> f-ysq<br />
<var class="dt-function">show</var> f-ysq<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid no of y squares"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> squares-x-new <var class="dt-function"><</var> <var class="dt-integer">4</var> [<br />
<var class="dt-function">focus</var> f-xsq<br />
<var class="dt-function">show</var> f-xsq<br />
<var class="dt-function">alert</var> <var class="dt-string">"No of squares must be >= 4"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> squares-x-new <var class="dt-function">></var> <var class="dt-integer">64</var> [<br />
<var class="dt-function">focus</var> f-xsq<br />
<var class="dt-function">show</var> f-xsq<br />
<var class="dt-function">alert</var> <var class="dt-string">"No of squares must be <= 64"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> squares-y-new <var class="dt-function"><</var> <var class="dt-integer">4</var> [<br />
<var class="dt-function">focus</var> f-ysq<br />
<var class="dt-function">show</var> f-ysq<br />
<var class="dt-function">alert</var> <var class="dt-string">"No of squares must be >= 4"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> squares-y-new <var class="dt-function">></var> <var class="dt-integer">64</var> [<br />
<var class="dt-function">focus</var> f-ysq<br />
<var class="dt-function">show</var> f-ysq<br />
<var class="dt-function">alert</var> <var class="dt-string">"No of squares must be <= 64"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-set-word">squares-x:</var> squares-x-new<br />
<var class="dt-set-word">squares-y:</var> squares-y-new<br />
<var class="dt-set-word">fn-str:</var> f-fun-str/text<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-path">camera/1:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-cx/text][<br />
<var class="dt-function">focus</var> f-cx<br />
<var class="dt-function">show</var> f-cx<br />
<var class="dt-function">alert</var> <var class="dt-string">"The x Camera value is invalid"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-path">camera/2:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-cy/text][<br />
<var class="dt-function">focus</var> f-cy<br />
<var class="dt-function">show</var> f-cy<br />
<var class="dt-function">alert</var> <var class="dt-string">"The y Camera value is invalid"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-path">camera/3:</var> <var class="dt-function">to</var> <var class="dt-datatype">decimal!</var> f-cz/text][<br />
<var class="dt-function">focus</var> f-cz<br />
<var class="dt-function">show</var> f-cz<br />
<var class="dt-function">alert</var> <var class="dt-string">"The z Camera value is invalid"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-set-word">anti-alias:</var> f-anti-alias/data<br />
<var class="dt-function">either</var> f-pen/data [<var class="dt-set-word">pen-color:</var> f-pen-col/color][<var class="dt-set-word">pen-color:</var> none]<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">2</var> f-top-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">1</var> f-top-c2/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">3</var> f-btm-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">4</var> f-btm-c2/color<br />
<var class="dt-function">clear</var> objs<br />
fn-gen-plane white red xl yl xh yh squares-x squares-y<br />
fn-height fn-str xl xh yl yh squares-x squares-y<br />
<var class="dt-function">foreach</var> o objs [fn-rot o]<br />
fn-show<br />
<var class="dt-function">if</var> hide-panel [<var class="dt-function">hide</var> f-panel]<br />
]<br />
<var class="dt-set-word">fn-high-chg:</var> <var class="dt-function">func</var> [dx [<var class="dt-datatype">integer!</var>] dy [<var class="dt-datatype">integer!</var>]] [<br />
<var class="dt-function">context</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">x:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-x-high/text][<var class="dt-function">return</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">y:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-y-high/text][<var class="dt-function">return</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [dx <var class="dt-function">=</var> <var class="dt-integer">-1</var> x <var class="dt-function">></var> <var class="dt-integer">1</var>][<var class="dt-set-path">f-x-high/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> (x <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-set-word">x:</var> x <var class="dt-function">-</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [dy <var class="dt-function">=</var> <var class="dt-integer">-1</var> y <var class="dt-function">></var> <var class="dt-integer">1</var>][<var class="dt-set-path">f-y-high/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> (y <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-set-word">y:</var> y <var class="dt-function">-</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [dx <var class="dt-function">=</var> <var class="dt-integer">1</var> x <var class="dt-function"><</var> squares-x][<var class="dt-set-path">f-x-high/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> (x <var class="dt-function">+</var> <var class="dt-integer">1</var>) <var class="dt-set-word">x:</var> x <var class="dt-function">+</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [dy <var class="dt-function">=</var> <var class="dt-integer">1</var> y <var class="dt-function"><</var> squares-y][<var class="dt-set-path">f-y-high/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> (y <var class="dt-function">+</var> <var class="dt-integer">1</var>) <var class="dt-set-word">y:</var> y <var class="dt-function">+</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">show</var> [f-x-high f-y-high]<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">6</var> f-htop-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">5</var> f-htop-c2/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">8</var> f-hbtm-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">7</var> f-hbtm-c2/color<br />
fn-highlight x y <var class="dt-integer">5</var> <var class="dt-integer">6</var> <var class="dt-integer">7</var> <var class="dt-integer">8</var><br />
]<br />
]<br />
<var class="dt-set-word">fn-highlight:</var> <var class="dt-function">func</var> [x [<var class="dt-datatype">integer!</var>] y [<var class="dt-datatype">integer!</var>] col1 [<var class="dt-datatype">integer!</var>] col2 [<var class="dt-datatype">integer!</var>] col3 [<var class="dt-datatype">integer!</var>] col4 [<var class="dt-datatype">integer!</var>]][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-cmt">; restore original colours<br />
</var> <var class="dt-function">if</var> (high-sq-cols/1) <var class="dt-function">></var> <var class="dt-integer">0</var> [<br />
<var class="dt-set-word">high-sq:</var> high-sq-cols/1<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> high-sq-cols/2<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> high-sq-cols/3<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> high-sq-cols/4<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> high-sq-cols/5<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> high-sq-cols/6<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> high-sq-cols/7<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> high-sq-cols/8<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> high-sq-cols/9<br />
]<br />
<var class="dt-set-word">h-sq:</var> (squares-x <var class="dt-function">*</var> squares-y) <var class="dt-function">+</var> ((x <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">+</var> ((y <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> squares-x)) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">f-xh-val/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/2/:h-sq/1<br />
<var class="dt-set-path">f-yh-val/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/2/:h-sq/2<br />
<var class="dt-set-path">f-high-val/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/2/:h-sq/3<br />
<var class="dt-function">show</var> [f-xh-val f-yh-val f-high-val]<br />
<var class="dt-cmt">; set hightlight<br />
</var> <var class="dt-set-word">high-sq:</var> <var class="dt-integer">4</var> <var class="dt-function">*</var> ((x <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">+</var> ((y <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> squares-x)) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">1</var> high-sq<br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">2</var> objs/1/5/:high-sq/3/2<br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">3</var> objs/1/5/:high-sq/3/3<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> col1<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> col3<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">4</var> objs/1/5/:high-sq/3/2<br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">5</var> objs/1/5/:high-sq/3/3<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> col2<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> col4<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">6</var> objs/1/5/:high-sq/3/2<br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">7</var> objs/1/5/:high-sq/3/3<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> col1<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> col3<br />
<var class="dt-set-word">high-sq:</var> high-sq <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">8</var> objs/1/5/:high-sq/3/2<br />
<var class="dt-function">poke</var> high-sq-cols <var class="dt-integer">9</var> objs/1/5/:high-sq/3/3<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">2</var> col2<br />
<var class="dt-function">poke</var> objs/1/5/:high-sq/3 <var class="dt-integer">3</var> col4<br />
fn-show<br />
]<br />
]<br />
<var class="dt-set-word">fn-high-prefs:</var> <var class="dt-function">func</var> [<var class="dt-refinement">/hide-panel</var>][<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">x:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-x-high/text][<br />
<var class="dt-function">focus</var> f-x-high<br />
<var class="dt-function">show</var> f-x-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid x value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> x <var class="dt-function"><</var> <var class="dt-integer">1</var> [<br />
<var class="dt-function">focus</var> f-x-high<br />
<var class="dt-function">show</var> f-x-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"x value cannot be less than 1"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> x <var class="dt-function">></var> squares-x [<br />
<var class="dt-function">focus</var> f-x-high<br />
<var class="dt-function">show</var> f-x-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"x value grater than the number of squres in the x direction"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">y:</var> <var class="dt-function">to</var> <var class="dt-datatype">integer!</var> f-y-high/text][<br />
<var class="dt-function">focus</var> f-y-high<br />
<var class="dt-function">show</var> f-y-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"Invalid y value"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> y <var class="dt-function"><</var> <var class="dt-integer">1</var> [<br />
<var class="dt-function">focus</var> f-y-high<br />
<var class="dt-function">show</var> f-y-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"y value cannot be less than 1"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">if</var> y <var class="dt-function">></var> squares-y [<br />
<var class="dt-function">focus</var> f-y-high<br />
<var class="dt-function">show</var> f-y-high<br />
<var class="dt-function">alert</var> <var class="dt-string">"y value grater than the number of squres in the y direction"</var><br />
<var class="dt-function">return</var><br />
]<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">6</var> f-htop-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">5</var> f-htop-c2/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">8</var> f-hbtm-c1/color<br />
<var class="dt-function">poke</var> clrs <var class="dt-integer">7</var> f-hbtm-c2/color<br />
fn-highlight x y <var class="dt-integer">5</var> <var class="dt-integer">6</var> <var class="dt-integer">7</var> <var class="dt-integer">8</var><br />
<var class="dt-function">if</var> hide-panel [<var class="dt-function">hide</var> f-panel-h]<br />
]<br />
<var class="dt-set-word">lv-lay:</var> <var class="dt-function">layout</var> [<br />
backdrop <var class="dt-tuple">0.0.0</var> effect [gradient <var class="dt-pair">0x1</var> <var class="dt-tuple">130.255.230</var> <var class="dt-tuple">0.150.0</var>]<br />
origin <var class="dt-pair">0x0</var><br />
<var class="dt-function">at</var> <var class="dt-pair">0x0</var><br />
space <var class="dt-pair">0x0</var><br />
across<br />
<var class="dt-set-word">f-box:</var> box screen effect [<var class="dt-function">draw</var> draw-bl] rate <var class="dt-integer">60</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var> <var class="dt-set-word">color:</var> gray <var class="dt-set-word">effect:</var> <var class="dt-lit-word">'bevel</var>]<br />
feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event][<br />
<var class="dt-function">if</var> <var class="dt-function">all</var>[action <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> rot][<br />
<var class="dt-set-word">st:</var> <var class="dt-function">now/time/precise</var><br />
<var class="dt-set-word">theta1:</var> theta1 <var class="dt-function">+</var> <var class="dt-integer">5</var><br />
<var class="dt-set-word">theta2:</var> theta2 <var class="dt-function">+</var> <var class="dt-integer">7</var><br />
<var class="dt-function">if</var> theta1 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-word">theta1:</var> theta1 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-function">if</var> theta2 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-word">theta2:</var> theta2 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">5</var><br />
<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">7</var><br />
<var class="dt-function">if</var> objs/1/1/4 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-function">if</var> objs/1/1/5 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-set-word">rots:</var> <var class="dt-function">now/time/precise</var><br />
<var class="dt-function">foreach</var> o objs [fn-rot o]<br />
<var class="dt-set-word">rote:</var> <var class="dt-function">now/time/precise</var><br />
fn-show<br />
<var class="dt-set-word">shoe:</var> <var class="dt-function">now/time/precise</var><br />
<var class="dt-function">print</var> [<var class="dt-function">now/time/precise</var> <var class="dt-function">-</var> st rote <var class="dt-function">-</var> rots shoe <var class="dt-function">-</var> rote]<br />
]<br />
]<br />
]<br />
<var class="dt-function">return</var><br />
sensor <var class="dt-pair">0x0</var> keycode [F1 F2 F3 F4 F5 F6 F7 <var class="dt-char">#">"</var> <var class="dt-char">#"<"</var> <var class="dt-char">#"{"</var> <var class="dt-char">#"}"</var> <var class="dt-char">#"["</var> <var class="dt-char">#"]"</var>] [<br />
<var class="dt-function">switch</var> value [<br />
<var class="dt-char">#"["</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/4 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
<var class="dt-char">#"]"</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/4 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
<var class="dt-char">#"<"</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/5 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
<var class="dt-char">#">"</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/5 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
<var class="dt-char">#"{"</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/6 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">+</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
<var class="dt-char">#"}"</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 <var class="dt-function">if</var> objs/1/1/6 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">-</var> <var class="dt-integer">360</var>] fn-show-angles]<br />
F1 [<var class="dt-set-path">camera/1:</var> camera/1 <var class="dt-function">-</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
F2 [<var class="dt-set-path">camera/1:</var> camera/1 <var class="dt-function">+</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
F3 [<var class="dt-set-path">camera/2:</var> camera/2 <var class="dt-function">+</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
F4 [<var class="dt-set-path">camera/2:</var> camera/2 <var class="dt-function">-</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
F5 [<var class="dt-set-path">camera/3:</var> camera/3 <var class="dt-function">+</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
F6 [<var class="dt-set-path">camera/3:</var> camera/3 <var class="dt-function">-</var> <var class="dt-decimal">0.1</var> fn-show-cam]<br />
]<br />
<var class="dt-function">foreach</var> o objs [fn-rot o]<br />
fn-show<br />
]<br />
btn <var class="dt-string">"Details"</var> [<var class="dt-function">show</var> f-panel]<br />
btn <var class="dt-string">"Help"</var> [fn-surface-help]<br />
<var class="dt-function">at</var> <var class="dt-pair">4x4</var><br />
<var class="dt-set-word">f-panel:</var> panel [<br />
across<br />
origin <var class="dt-pair">4x4</var><br />
<var class="dt-function">at</var> <var class="dt-pair">4x4</var><br />
space <var class="dt-pair">4x4</var><br />
vtext <var class="dt-string">"X"</var> right <var class="dt-integer">20</var><br />
<var class="dt-set-word">f-xl:</var> field <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-xh:</var> field <var class="dt-integer">100</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Y"</var> right <var class="dt-integer">20</var><br />
<var class="dt-set-word">f-yl:</var> field <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-yh:</var> field <var class="dt-integer">100</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Camera"</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"x"</var> <var class="dt-integer">20</var><br />
<var class="dt-set-word">f-cx:</var> field <var class="dt-integer">204</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"y"</var> <var class="dt-integer">20</var><br />
<var class="dt-set-word">f-cy:</var> field <var class="dt-integer">204</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"z"</var> <var class="dt-integer">20</var><br />
<var class="dt-set-word">f-cz:</var> field <var class="dt-integer">204</var><br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">f-fun-str:</var> area <var class="dt-pair">228x200</var> font-name <var class="dt-string">"Courier"</var> wrap<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"No of X-Squares"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-xsq:</var> field <var class="dt-integer">124</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"No of Y-Squares"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-ysq:</var> field <var class="dt-integer">124</var><br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">f-anti-alias:</var> check-line <var class="dt-string">"Anti-Alias"</var> true<br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">f-pen:</var> check-line <var class="dt-string">"Pen"</var><br />
<var class="dt-set-word">f-pen-col:</var> box black <var class="dt-pair">20x20</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>] [<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-pen-col/color<br />
<var class="dt-function">either</var> lv-val <var class="dt-function">=</var> none [<var class="dt-set-path">f-pen/data:</var> false]<br />
[<var class="dt-set-path">f-pen/data:</var> true <var class="dt-set-path">f-pen-col/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-pen f-pen-col]<br />
]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Colors (Top)"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-top-c1:</var> box <var class="dt-pair">20x20</var> orange edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>] [<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-top-c1/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-top-c1/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-top-c1]<br />
]<br />
<var class="dt-set-word">f-top-c2:</var> box <var class="dt-pair">20x20</var> white edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>][<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-top-c2/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-top-c2/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-top-c2]<br />
]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Colors (Bottom)"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-btm-c1:</var> box <var class="dt-pair">20x20</var> red edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>] [<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-btm-c1/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-btm-c1/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-btm-c1]<br />
]<br />
<var class="dt-set-word">f-btm-c2:</var> box <var class="dt-pair">20x20</var> white edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>][<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-btm-c2/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-btm-c2/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-btm-c1]<br />
]<br />
<var class="dt-function">return</var><br />
btn <var class="dt-string">"Hightlight Square"</var> [<var class="dt-function">show</var> f-panel-h] <var class="dt-integer">112</var><br />
<var class="dt-function">return</var><br />
btn <var class="dt-string">"Hide"</var> <var class="dt-integer">112</var> [fn-prefs/hide-panel ]<br />
btn <var class="dt-string">"Apply"</var> <var class="dt-integer">112</var> [fn-prefs]<br />
] edge [<var class="dt-set-word">size:</var> <var class="dt-pair">2x2</var> <var class="dt-set-word">effect:</var> <var class="dt-lit-word">'ibevel</var>]<br />
<var class="dt-set-word">f-panel-h:</var> panel [<br />
across<br />
origin <var class="dt-pair">4x4</var><br />
<var class="dt-function">at</var> <var class="dt-pair">4x4</var><br />
space <var class="dt-pair">4x4</var><br />
vtext <var class="dt-string">"Highlight square"</var><br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"x:"</var><br />
<var class="dt-set-word">f-x-high:</var> field <var class="dt-string">"1"</var> <var class="dt-integer">100</var><br />
space <var class="dt-pair">0x0</var><br />
arrow left [fn-high-chg <var class="dt-integer">-1</var> <var class="dt-integer">0</var>]<br />
space <var class="dt-pair">4x4</var><br />
arrow right [fn-high-chg <var class="dt-integer">1</var> <var class="dt-integer">0</var>]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"y:"</var><br />
<var class="dt-set-word">f-y-high:</var> field <var class="dt-string">"1"</var> <var class="dt-integer">100</var><br />
space <var class="dt-pair">0x0</var><br />
arrow left [fn-high-chg <var class="dt-integer">0</var> <var class="dt-integer">-1</var>]<br />
space <var class="dt-pair">4x4</var><br />
arrow right [fn-high-chg <var class="dt-integer">0</var> <var class="dt-integer">1</var>]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Colors (Top)"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-htop-c1:</var> box <var class="dt-pair">20x20</var> <var class="dt-tuple">0.0.150</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>] [<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-htop-c1/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-htop-c1/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-htop-c1]<br />
]<br />
<var class="dt-set-word">f-htop-c2:</var> box <var class="dt-pair">20x20</var> <var class="dt-tuple">0.0.200</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>][<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-htop-c2/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-htop-c2/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-htop-c2]<br />
]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"Colors (Bottom)"</var> <var class="dt-integer">100</var><br />
<var class="dt-set-word">f-hbtm-c1:</var> box <var class="dt-pair">20x20</var> <var class="dt-tuple">200.200.200</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>] [<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-hbtm-c1/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-hbtm-c1/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-hbtm-c1]<br />
]<br />
<var class="dt-set-word">f-hbtm-c2:</var> box <var class="dt-pair">20x20</var> <var class="dt-tuple">255.200.200</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>][<br />
<var class="dt-set-word">lv-val:</var> <var class="dt-function">request-color/color</var> f-hbtm-c2/color<br />
<var class="dt-function">if</var> lv-val <var class="dt-function"><></var> none [<var class="dt-set-path">f-hbtm-c2/color:</var> lv-val]<br />
<var class="dt-function">show</var> [f-hbtm-c1]<br />
]<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"x:"</var> <var class="dt-integer">50</var><br />
<var class="dt-set-word">f-xh-val:</var> info <var class="dt-string">"0.0"</var> <var class="dt-integer">174</var> silver<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"y:"</var> <var class="dt-integer">50</var><br />
<var class="dt-set-word">f-yh-val:</var> info <var class="dt-string">"0.0"</var> <var class="dt-integer">174</var> silver<br />
<var class="dt-function">return</var><br />
vtext <var class="dt-string">"f(x,y)"</var> <var class="dt-integer">50</var><br />
<var class="dt-set-word">f-high-val:</var> info <var class="dt-string">"0.0"</var> <var class="dt-integer">174</var> silver<br />
<var class="dt-function">return</var><br />
btn <var class="dt-string">"Hide"</var> <var class="dt-integer">112</var> [fn-high-prefs/hide-panel ]<br />
btn <var class="dt-string">"Apply"</var> <var class="dt-integer">112</var> [fn-high-prefs ]<br />
] edge [<var class="dt-set-word">size:</var> <var class="dt-pair">2x2</var> <var class="dt-set-word">effect:</var> <var class="dt-lit-word">'ibevel</var>] with [<var class="dt-set-word">show?:</var> false]<br />
]<br />
<var class="dt-cmt">; create a function<br />
</var><var class="dt-set-word">create-function:</var> <var class="dt-function">function</var> [t-func [<var class="dt-datatype">string!</var>]] [f]<br />
[<br />
<var class="dt-cmt">; return a newly created function<br />
</var> <var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-function">try</var> [<var class="dt-set-word">f:</var> <var class="dt-function">to-block</var> <var class="dt-function">load</var> t-func]<br />
[<var class="dt-function">return</var> none]<br />
<var class="dt-function">function</var> [x [<var class="dt-datatype">any-type!</var>] y [<var class="dt-datatype">any-type!</var>]] [] f<br />
]<br />
<var class="dt-set-word">rot:</var> false<br />
<var class="dt-set-word">dist:</var> <var class="dt-decimal">0.0</var><br />
<var class="dt-set-word">theta1:</var> <var class="dt-decimal">0.0</var><br />
<var class="dt-set-word">theta2:</var> <var class="dt-decimal">0.0</var><br />
<var class="dt-set-word">fn-height:</var> <var class="dt-function">func</var> [fn [<var class="dt-datatype">string!</var>] x1 [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] x2 [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] y1 [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] y2 [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] xs [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] ys [<var class="dt-datatype">decimal!</var> <var class="dt-datatype">integer!</var>] <var class="dt-refinement">/local</var> c h][<br />
<var class="dt-set-word">f-fx:</var> create-function fn<br />
<var class="dt-set-word">c:</var> <var class="dt-integer">0</var><br />
<var class="dt-cmt">; corners<br />
</var> <var class="dt-function">for</var> i y1 (y2 <var class="dt-function">+</var> (((y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys <var class="dt-function">/</var> <var class="dt-integer">10</var>))) (y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys [<br />
<var class="dt-function">for</var> j x1 (x2 <var class="dt-function">+</var> ((x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs <var class="dt-function">/</var> <var class="dt-integer">10</var>)) (x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs [<br />
<var class="dt-cmt">; evaluate function<br />
</var><br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">lv-err:</var> <var class="dt-function">try</var> [<var class="dt-set-word">h:</var> f-fx i j][<br />
<var class="dt-function">focus</var> f-x-high<br />
<var class="dt-function">show</var> f-x-high<br />
<var class="dt-function">alert</var> <var class="dt-function">rejoin</var> [<var class="dt-string">"Unable to evaluate function at "</var> i <var class="dt-string">" , "</var> j]<br />
<var class="dt-set-word">h:</var> <var class="dt-integer">0</var><br />
]<br />
<var class="dt-set-word">c:</var> c <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">objs/1/2/:c/3:</var> h<br />
]<br />
]<br />
<var class="dt-cmt">; centers<br />
</var> <var class="dt-set-word">c:</var> (xs <var class="dt-function">+</var> <var class="dt-integer">1</var>) <var class="dt-function">*</var> (ys <var class="dt-function">+</var> <var class="dt-integer">1</var>)<br />
<var class="dt-function">for</var> i y1 <var class="dt-function">+</var> ((y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys <var class="dt-function">/</var> <var class="dt-integer">2</var>) y2 <var class="dt-function">-</var> ((y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys <var class="dt-function">/</var> <var class="dt-integer">2</var>) <var class="dt-function">+</var> ((y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys <var class="dt-function">/</var> <var class="dt-integer">10</var>) (y2 <var class="dt-function">-</var> y1) <var class="dt-function">/</var> ys [<br />
<var class="dt-function">for</var> j x1 <var class="dt-function">+</var> ((x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs <var class="dt-function">/</var> <var class="dt-integer">2</var>) x2 <var class="dt-function">-</var> ((x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs <var class="dt-function">/</var> <var class="dt-integer">2</var>) <var class="dt-function">+</var> ((x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs <var class="dt-function">/</var> <var class="dt-integer">10</var>) (x2 <var class="dt-function">-</var> x1) <var class="dt-function">/</var> xs [<br />
<var class="dt-cmt">; function goes here<br />
</var> <var class="dt-set-word">h:</var> f-fx i j<br />
<var class="dt-set-word">c:</var> c <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">objs/1/2/:c/3:</var> h<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">fn-str:</var> <var class="dt-string">"(2 * exp - ( ((0.5 * x) * (0.5 * x)) + ((0.5 * (y + -3.0)) * (0.5 * (y + -3.0)) ) )) + (4 * exp - ( ((0.5 * (x + 3.0)) * (0.5 * (x + 3.0))) + ((0.5 * (y + 3.0)) * (0.5 * (y + 3.0))) ) )"</var><br />
<var class="dt-cmt">; fn-str: "((i) * (i)) + ((j) * (j)) / 20"<br />
</var><var class="dt-set-path">f-fun-str/text:</var> fn-str<br />
<var class="dt-set-word">xl:</var> <var class="dt-integer">-8</var><br />
<var class="dt-set-word">yl:</var> <var class="dt-integer">-8</var><br />
<var class="dt-set-word">xh:</var> <var class="dt-integer">8</var><br />
<var class="dt-set-word">yh:</var> <var class="dt-integer">8</var><br />
<var class="dt-set-path">f-xl/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> xl<br />
<var class="dt-set-path">f-yl/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> yl<br />
<var class="dt-set-path">f-xh/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> xh<br />
<var class="dt-set-path">f-yh/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> yh<br />
<var class="dt-set-word">squares-x:</var> <var class="dt-integer">16</var><br />
<var class="dt-set-word">squares-y:</var> <var class="dt-integer">16</var><br />
<var class="dt-set-path">f-xsq/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> squares-x<br />
<var class="dt-set-path">f-ysq/text:</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> squares-y<br />
<var class="dt-set-word">high-sq-cols:</var> [<var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var>]<br />
<var class="dt-set-path">f-fun-str/text:</var> fn-str<br />
<var class="dt-set-path">f-cx/text:</var> <var class="dt-string">"0"</var><br />
<var class="dt-set-path">f-cy/text:</var> <var class="dt-string">"0"</var><br />
<var class="dt-set-path">f-cz/text:</var> <var class="dt-string">"20"</var><br />
fn-prefs<br />
<var class="dt-cmt">; initial camera<br />
</var><var class="dt-set-path">objs/1/1/6:</var> <var class="dt-integer">250</var><br />
<var class="dt-set-path">objs/1/1/4:</var> <var class="dt-integer">60</var><br />
<var class="dt-set-word">pen-color:</var> none<br />
<var class="dt-set-word">anti-alias:</var> true<br />
<var class="dt-function">foreach</var> o objs [fn-rot o]<br />
fn-show<br />
<var class="dt-function">view</var> lv-lay<br />
<var class="dt-function">quit</var><br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-25731104489875733352014-01-22T03:44:00.000-08:002014-01-22T03:44:02.975-08:00EcondingsThe following code contains functions and charset to check or convert string encoding. <br />
Here the most important function:<br />
<ul><li><b>encoding?</b> This function return one fo the following:</li>
<ul><li>"us-ascii"</li>
<li>"utf-8"</li>
<li>"iso-8859-1"</li>
<li>"macintosh"</li>
<li>"windows-1252"</li>
</ul></ul>There are also other converting functions.<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "string encoding utilities"<br />
Version: 1.2.2<br />
Date: 10-Jul-2010<br />
Author: "Peter W A Wood"<br />
File: %str-enc-utils.r<br />
Purpose: { A set of string utilities created to help with text encoding in 8-bit character strings }<br />
license: 'mit<br />
]<br />
<var class="dt-set-word">str-enc-utils:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<br />
<var class="dt-cmt">;; constants<br />
</var> <var class="dt-set-word">replacement-char:</var> <var class="dt-char">#"?"</var><br />
<br />
<var class="dt-cmt">;; standard bitsets<br />
</var> <var class="dt-set-word">ascii:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(7F)"</var>]<br />
<var class="dt-set-word">non-ascii:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<var class="dt-set-word">characters:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<var class="dt-set-word">ch128-159:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(9F)"</var>]<br />
<var class="dt-set-word">ch160-255:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(A0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<var class="dt-set-word">ch128-255:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<var class="dt-set-word">alpha:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"a"</var> <var class="dt-function">-</var> <var class="dt-char">#"z"</var> <var class="dt-char">#"A"</var> <var class="dt-function">-</var> <var class="dt-char">#"Z"</var>]<br />
<var class="dt-set-word">digit:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"0"</var> <var class="dt-function">-</var> <var class="dt-char">#"9"</var>]<br />
<var class="dt-set-word">alphanumeric:</var> <var class="dt-function">union</var> alpha digit<br />
<var class="dt-set-word">letter-hyphen:</var> <var class="dt-function">union</var> alphanumeric <var class="dt-function">charset</var> [<var class="dt-string">"-"</var>]<br />
<var class="dt-set-word">byte:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<br />
<var class="dt-cmt">;; UTF-8 bitsets<br />
</var> <var class="dt-set-word">first-2-byte:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(C2)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(DF)"</var>]<br />
<var class="dt-set-word">first-3-byte:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(E0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(EF)"</var>]<br />
<var class="dt-set-word">first-4-byte:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(F0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(F4)"</var>]<br />
<var class="dt-set-word">subsequent-byte:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(BF)"</var>]<br />
<var class="dt-set-word">not-subsequent-byte:</var> <var class="dt-function">complement</var> subsequent-byte<br />
<var class="dt-set-word">invalid:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(C0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(C1)"</var> <var class="dt-char">#"^(F5)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<br />
<var class="dt-cmt">;; 8-bit bitsets<br />
</var> <var class="dt-set-word">x80-xBF:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(BF)"</var>]<br />
<var class="dt-set-word">xA0-xBF:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(A0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(BF)"</var>]<br />
<var class="dt-set-word">xC0-xFF:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(C0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(FF)"</var>]<br />
<br />
<var class="dt-cmt">;; reduced bitsets<br />
</var> <var class="dt-set-word">ascii-less-ampltgt:</var> <var class="dt-function">charset</var> [<br />
<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(25)"</var><br />
<var class="dt-char">#"^(27)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(3B)"</var><br />
<var class="dt-char">#"^(3D)"</var><br />
<var class="dt-char">#"^(3F)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(7F)"</var><br />
]<br />
<var class="dt-set-word">ascii-less-cr-lf:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(09)"</var> <var class="dt-char">#"^(0B)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(0C)"</var> <var class="dt-char">#"^(0E)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(7F)"</var> ]<br />
<var class="dt-set-word">characters-less-gt:</var> <var class="dt-function">charset</var> [<br />
<var class="dt-char">#"^(00)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(3D)"</var><br />
<var class="dt-char">#"^(3F)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(7F)"</var><br />
]<br />
<br />
<var class="dt-cmt">;; standard patterns<br />
</var> <var class="dt-set-word">a-tag:</var> [<var class="dt-string">"<"</var> some characters-less-gt <var class="dt-string">">"</var>]<br />
<var class="dt-set-word">a-utf-8-two-byte:</var> [first-2-byte subsequent-byte]<br />
<var class="dt-set-word">a-utf-8-three-byte:</var> [first-3-byte <var class="dt-integer">2</var> subsequent-byte]<br />
<var class="dt-set-word">a-utf-8-four-byte:</var> [first-4-byte <var class="dt-integer">3</var> subsequent-byte]<br />
<var class="dt-set-word">invalid-utf-8-two-byte:</var> [first-2-byte not-subsequent-byte]<br />
<var class="dt-set-word">invalid-utf-8-three-byte:</var> [<br />
first-3-byte [<br />
subsequent-byte not-subsequent-byte<br />
|<br />
not-subsequent-byte subsequent-byte<br />
|<br />
<var class="dt-integer">2</var> not-subsequent-byte<br />
]<br />
] <br />
<var class="dt-set-word">invalid-utf-8-four-byte:</var> [<br />
first-4-byte [<br />
subsequent-byte not-subsequent-byte subsequent-byte<br />
|<br />
subsequent-byte not-subsequent-byte not-subsequent-byte<br />
|<br />
subsequent-byte subsequent-byte not-subsequent-byte<br />
|<br />
not-subsequent-byte not-subsequent-byte subsequent-byte<br />
|<br />
not-subsequent-byte subsequent-byte not-subsequent-byte<br />
|<br />
not-subsequent-byte subsequent-byte subsequent-byte<br />
|<br />
<var class="dt-integer">3</var> not-subsequent-byte<br />
]<br />
]<br />
<br />
<var class="dt-cmt">;; BOMs<br />
</var> <var class="dt-set-word">BOM:</var> [<br />
<var class="dt-string">"utf-32be"</var> <var class="dt-string">"^(00)^(00)^(FE)^(FF)"</var><br />
<var class="dt-string">"utf-32le"</var> <var class="dt-string">"^(FF)^(FE)^(00)^(00)"</var><br />
<var class="dt-string">"utf-16be"</var> <var class="dt-string">"^(FE)^(FF)"</var><br />
<var class="dt-string">"utf-16le"</var> <var class="dt-string">"^(FF)^(FE)"</var><br />
<var class="dt-string">"utf-8"</var> <var class="dt-string">"^(EF)^(BB)^(BF)"</var><br />
]<br />
<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; bom? ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var> <var class="dt-set-word">bom?:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{Checks a string to see if it starts with a Unicode Byte Order Mark (BOM).<br />
Returns one of the following:<br />
"utf-32be"<br />
"utf-32le"<br />
"utf-16be"<br />
"utf-16le"<br />
"utf-8"<br />
#[none]<br />
}</var><br />
str [<var class="dt-datatype">string!</var>]<br />
][<br />
<br />
<var class="dt-function">foreach</var> [encoding bom] BOM [<br />
<var class="dt-function">if</var> <var class="dt-function">find/part</var> str bom <var class="dt-function">length?</var> bom [<br />
<var class="dt-function">return</var> encoding<br />
]<br />
]<br />
<br />
<var class="dt-cmt">#[none]</var><br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of bom? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; encoding? ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <br />
</var> <var class="dt-set-word">encoding?:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{Ascertains the character encoding of a string by applying a few rules of<br />
thumb.<br />
Returns the following:<br />
"us-ascii"<br />
"utf-8"<br />
"iso-8859-1"<br />
"macintosh"<br />
"windows-1252"<br />
One of the following may possibly be returned but only if there is a <br />
Unicode Byte Order Mark at the beginning of the string:<br />
"utf-32be"<br />
"utf-32le"<br />
"utf-16be"<br />
"utf-16le"<br />
}</var><br />
str [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
count-chars <var class="dt-string">{object to hold parse rules and reuslts to count the<br />
different types of characters in a string.}</var><br />
bom <var class="dt-string">{temporary variable to hold the type of BOM}</var><br />
][<br />
<var class="dt-set-word">count-chars:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<br />
<var class="dt-cmt">;; local<br />
</var> <br />
<var class="dt-cmt">;; accumulators<br />
</var> <var class="dt-set-word">number-of:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<var class="dt-set-word">ascii:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">crs:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">crlfs:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">lfs:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">macroman:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">upper-80-9f:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">upper-a0-ff:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">utf-8-2:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">utf-8-3:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">utf-8-4:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">invalid-utf-8:</var> <var class="dt-integer">0</var><br />
]<br />
<br />
<var class="dt-cmt">;; bitsets<br />
</var> <var class="dt-set-word">macroman:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(81)"</var> <var class="dt-char">#"^(8D)"</var> <var class="dt-char">#"^(90)"</var> <var class="dt-char">#"^(9D)"</var>]<br />
<br />
<var class="dt-cmt">;; character sequences <br />
</var> <var class="dt-set-word">ascii-chars:</var> [some ascii-less-cr-lf]<br />
<br />
<var class="dt-cmt">;; rules<br />
</var> <var class="dt-set-word">ascii-rule:</var> [<br />
<var class="dt-function">copy</var> substr ascii-chars (<br />
<var class="dt-set-path">number-of/ascii:</var> number-of/ascii <var class="dt-function">+</var> <var class="dt-function">length?</var> substr<br />
)<br />
]<br />
<br />
<var class="dt-set-word">byte-rule:</var> [<br />
byte<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">cr-rule:</var> [<br />
cr (<br />
<var class="dt-set-path">number-of/crs:</var> number-of/crs <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/ascii:</var> number-of/ascii <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">crlf-rule:</var> [<br />
crlf (<br />
<var class="dt-set-path">number-of/crlfs:</var> number-of/crlfs <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/crs:</var> number-of/crs <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/lfs:</var> number-of/lfs <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/ascii:</var> number-of/ascii <var class="dt-function">+</var> <var class="dt-integer">2</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">invalid-utf-8-rule:</var> [<br />
invalid (<br />
<var class="dt-set-path">number-of/invalid-utf-8:</var> number-of/invalid-utf-8 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">invalid-utf-8-2-rule:</var> [<br />
a-utf-8-two-byte (<br />
<var class="dt-set-path">number-of/invalid-utf-8:</var> number-of/invalid-utf-8 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">invalid-utf-8-3-rule:</var> [<br />
a-utf-8-three-byte (<br />
<var class="dt-set-path">number-of/invalid-utf-8:</var> number-of/invalid-utf-8 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
]<br />
<br />
<var class="dt-set-word">invalid-utf-8-4-rule:</var> [<br />
a-utf-8-four-byte (<br />
<var class="dt-set-path">number-of/invalid-utf-8:</var> number-of/invalid-utf-8 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">lf-rule:</var> [<br />
lf (<br />
<var class="dt-set-path">number-of/lfs:</var> number-of/lfs <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/ascii:</var> number-of/ascii <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">macroman-rule:</var> [<br />
macroman (<br />
<var class="dt-set-path">number-of/macroman:</var> number-of/macroman <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-path">number-of/upper-80-9f:</var> number-of/upper-80-9f <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">upper-80-9f-rule:</var> [<br />
ch128-159 (<br />
<var class="dt-set-path">number-of/upper-80-9f:</var> number-of/upper-80-9f <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">upper-a0-ff-rule:</var> [<br />
ch160-255 (<br />
<var class="dt-set-path">number-of/upper-a0-ff:</var> number-of/upper-a0-ff <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
]<br />
<br />
<var class="dt-set-word">utf-8-2-rule:</var> [<br />
a-utf-8-two-byte (<br />
<var class="dt-set-path">number-of/utf-8-2:</var> number-of/utf-8-2 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">utf-8-3-rule:</var> [<br />
a-utf-8-three-byte (<br />
<var class="dt-set-path">number-of/utf-8-3:</var> number-of/utf-8-3 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
]<br />
<br />
<var class="dt-set-word">utf-8-4-rule:</var> [<br />
a-utf-8-four-byte (<br />
<var class="dt-set-path">number-of/utf-8-4:</var> number-of/utf-8-4 <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
)<br />
<var class="dt-set-word">parse-input:</var> (<var class="dt-set-word">parse-input:</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> <var class="dt-function">back</var> parse-input) <var class="dt-get-word">:parse-input</var><br />
<br />
]<br />
<br />
<var class="dt-set-word">rules:</var> [<br />
<var class="dt-function">any</var> [<br />
crlf-rule<br />
|<br />
[cr-rule | lf-rule]<br />
|<br />
[<br />
utf-8-2-rule<br />
|<br />
utf-8-3-rule<br />
|<br />
utf-8-4-rule<br />
|<br />
invalid-utf-8-rule<br />
|<br />
invalid-utf-8-2-rule<br />
|<br />
invalid-utf-8-3-rule<br />
|<br />
invalid-utf-8-4-rule<br />
|<br />
byte-rule<br />
]<br />
[<br />
ascii-rule<br />
|<br />
upper-a0-ff-rule<br />
|<br />
macroman-rule<br />
|<br />
upper-80-9f-rule<br />
]<br />
]<br />
]<br />
]<br />
<br />
<var class="dt-cmt">;; check for a BOM<br />
</var> <var class="dt-function">if</var> <var class="dt-set-word">bom:</var> bom? str [<var class="dt-function">return</var> bom]<br />
<br />
<var class="dt-cmt">;; count the types of characters in the input string<br />
</var> <var class="dt-function">parse/all</var> str count-chars/rules<br />
<br />
<var class="dt-cmt">;; apply rules of thumb<br />
</var> <var class="dt-function">if</var> count-chars/number-of/ascii <var class="dt-function">=</var> <var class="dt-function">length?</var> str [<var class="dt-function">return</var> <var class="dt-string">"us-ascii"</var> ]<br />
<var class="dt-function">if</var> count-chars/number-of/invalid-utf-8 <var class="dt-function"><</var><br />
( count-chars/number-of/utf-8-2 <var class="dt-function">+</var><br />
count-chars/number-of/utf-8-3 <var class="dt-function">+</var><br />
count-chars/number-of/utf-8-4<br />
)<br />
[<var class="dt-function">return</var> <var class="dt-string">"utf-8"</var> ]<br />
<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<br />
count-chars/number-of/upper-a0-ff <var class="dt-function">></var> <var class="dt-integer">0</var><br />
count-chars/number-of/upper-80-9f <var class="dt-function">=</var> <var class="dt-integer">0</var><br />
][<var class="dt-function">return</var> <var class="dt-string">"iso-8859-1"</var> ]<br />
<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [<br />
count-chars/number-of/macroman <var class="dt-function">></var> <var class="dt-integer">0</var><br />
<var class="dt-function">all</var> [<br />
count-chars/number-of/crs <var class="dt-function">></var> <var class="dt-integer">0</var><br />
count-chars/number-of/lfs <var class="dt-function">=</var> <var class="dt-integer">0</var><br />
]<br />
][<var class="dt-function">return</var> <var class="dt-string">"macintosh"</var> ]<br />
<br />
<var class="dt-function">return</var> <var class="dt-string">"windows-1252"</var><br />
<br />
] <br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of encoding? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; macroman-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">macroman-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a MacRoman encoded string to UTF-8.<br />
Invalid characters are replaced<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
trans-table<br />
][<br />
<var class="dt-cmt">;; translation table<br />
</var> <var class="dt-set-word">trans-table:</var> [<br />
<var class="dt-string">"^(80)"</var> <var class="dt-string">"^(C3)^(84)"</var><br />
<var class="dt-string">"^(81)"</var> <var class="dt-string">"^(C3)^(85)"</var><br />
<var class="dt-string">"^(82)"</var> <var class="dt-string">"^(C3)^(87)"</var><br />
<var class="dt-string">"^(83)"</var> <var class="dt-string">"^(C3)^(89)"</var><br />
<var class="dt-string">"^(84)"</var> <var class="dt-string">"^(C3)^(91)"</var><br />
<var class="dt-string">"^(85)"</var> <var class="dt-string">"^(C3)^(96)"</var><br />
<var class="dt-string">"^(86)"</var> <var class="dt-string">"^(C3)^(9C)"</var><br />
<var class="dt-string">"^(87)"</var> <var class="dt-string">"^(C3)^(A1)"</var><br />
<var class="dt-string">"^(88)"</var> <var class="dt-string">"^(C3)^(A0)"</var><br />
<var class="dt-string">"^(89)"</var> <var class="dt-string">"^(C3)^(A2)"</var><br />
<var class="dt-string">"^(8A)"</var> <var class="dt-string">"^(C3)^(A4)"</var><br />
<var class="dt-string">"^(8B)"</var> <var class="dt-string">"^(C3)^(A3)"</var><br />
<var class="dt-string">"^(8C)"</var> <var class="dt-string">"^(C3)^(A5)"</var><br />
<var class="dt-string">"^(8D)"</var> <var class="dt-string">"^(C3)^(A7)"</var><br />
<var class="dt-string">"^(8E)"</var> <var class="dt-string">"^(C3)^(A9)"</var><br />
<var class="dt-string">"^(8F)"</var> <var class="dt-string">"^(C3)^(A8)"</var><br />
<var class="dt-string">"^(90)"</var> <var class="dt-string">"^(C3)^(AA)"</var><br />
<var class="dt-string">"^(91)"</var> <var class="dt-string">"^(C3)^(AB)"</var><br />
<var class="dt-string">"^(92)"</var> <var class="dt-string">"^(C3)^(AD)"</var><br />
<var class="dt-string">"^(93)"</var> <var class="dt-string">"^(C3)^(AC)"</var><br />
<var class="dt-string">"^(94)"</var> <var class="dt-string">"^(C3)^(AE)"</var><br />
<var class="dt-string">"^(95)"</var> <var class="dt-string">"^(C3)^(AF)"</var><br />
<var class="dt-string">"^(96)"</var> <var class="dt-string">"^(C3)^(B1)"</var><br />
<var class="dt-string">"^(97)"</var> <var class="dt-string">"^(C3)^(B3)"</var><br />
<var class="dt-string">"^(98)"</var> <var class="dt-string">"^(C3)^(B2)"</var><br />
<var class="dt-string">"^(99)"</var> <var class="dt-string">"^(C3)^(B4)"</var><br />
<var class="dt-string">"^(9A)"</var> <var class="dt-string">"^(C3)^(B6)"</var><br />
<var class="dt-string">"^(9B)"</var> <var class="dt-string">"^(C3)^(B5)"</var><br />
<var class="dt-string">"^(9C)"</var> <var class="dt-string">"^(C3)^(BA)"</var><br />
<var class="dt-string">"^(9D)"</var> <var class="dt-string">"^(C3)^(B9)"</var><br />
<var class="dt-string">"^(9E)"</var> <var class="dt-string">"^(C3)^(BB)"</var><br />
<var class="dt-string">"^(9F)"</var> <var class="dt-string">"^(C3)^(BC)"</var><br />
<var class="dt-string">"^(A0)"</var> <var class="dt-string">"^(E2)^(80)^(A0)"</var><br />
<var class="dt-string">"^(A1)"</var> <var class="dt-string">"^(C2)^(B0)"</var><br />
<var class="dt-string">"^(A2)"</var> <var class="dt-string">"^(C2)^(A2)"</var><br />
<var class="dt-string">"^(A3)"</var> <var class="dt-string">"^(C2)^(A3)"</var><br />
<var class="dt-string">"^(A4)"</var> <var class="dt-string">"^(C2)^(A7)"</var><br />
<var class="dt-string">"^(A5)"</var> <var class="dt-string">"^(E2)^(80)^(A2)"</var><br />
<var class="dt-string">"^(A6)"</var> <var class="dt-string">"^(C2)^(B6)"</var><br />
<var class="dt-string">"^(A7)"</var> <var class="dt-string">"^(C3)^(9F)"</var><br />
<var class="dt-string">"^(A8)"</var> <var class="dt-string">"^(C2)^(AE)"</var><br />
<var class="dt-string">"^(A9)"</var> <var class="dt-string">"^(C2)^(A9)"</var><br />
<var class="dt-string">"^(AA)"</var> <var class="dt-string">"^(E2)^(84)^(A2)"</var><br />
<var class="dt-string">"^(AB)"</var> <var class="dt-string">"^(C2)^(B4)"</var><br />
<var class="dt-string">"^(AC)"</var> <var class="dt-string">"^(C2)^(A8)"</var><br />
<var class="dt-string">"^(AD)"</var> <var class="dt-string">"^(E2)^(89)^(A0)"</var><br />
<var class="dt-string">"^(AE)"</var> <var class="dt-string">"^(C3)^(86)"</var><br />
<var class="dt-string">"^(AF)"</var> <var class="dt-string">"^(C3)^(98)"</var><br />
<var class="dt-string">"^(B0)"</var> <var class="dt-string">"^(E2)^(88)^(9E)"</var><br />
<var class="dt-string">"^(B1)"</var> <var class="dt-string">"^(C2)^(B1)"</var><br />
<var class="dt-string">"^(B2)"</var> <var class="dt-string">"^(E2)^(89)^(A4)"</var><br />
<var class="dt-string">"^(B3)"</var> <var class="dt-string">"^(E2)^(89)^(A5)"</var><br />
<var class="dt-string">"^(B4)"</var> <var class="dt-string">"^(C2)^(A5)"</var><br />
<var class="dt-string">"^(B5)"</var> <var class="dt-string">"^(C2)^(B5)"</var><br />
<var class="dt-string">"^(B6)"</var> <var class="dt-string">"^(E2)^(88)^(82)"</var><br />
<var class="dt-string">"^(B7)"</var> <var class="dt-string">"^(E2)^(88)^(91)"</var><br />
<var class="dt-string">"^(B8)"</var> <var class="dt-string">"^(E2)^(88)^(8F)"</var><br />
<var class="dt-string">"^(B9)"</var> <var class="dt-string">"^(CF)^(80)"</var><br />
<var class="dt-string">"^(BA)"</var> <var class="dt-string">"^(E2)^(88)^(AB)"</var><br />
<var class="dt-string">"^(BB)"</var> <var class="dt-string">"^(C2)^(AA)"</var><br />
<var class="dt-string">"^(BC)"</var> <var class="dt-string">"^(C2)^(BA)"</var><br />
<var class="dt-string">"^(BD)"</var> <var class="dt-string">"^(CE)^(A9)"</var><br />
<var class="dt-string">"^(BE)"</var> <var class="dt-string">"^(C3)^(A6)"</var><br />
<var class="dt-string">"^(BF)"</var> <var class="dt-string">"^(C3)^(B8)"</var><br />
<var class="dt-string">"^(C0)"</var> <var class="dt-string">"^(C2)^(BF)"</var><br />
<var class="dt-string">"^(C1)"</var> <var class="dt-string">"^(C2)^(A1)"</var><br />
<var class="dt-string">"^(C2)"</var> <var class="dt-string">"^(C2)^(AC)"</var><br />
<var class="dt-string">"^(C3)"</var> <var class="dt-string">"^(E2)^(88)^(9A)"</var><br />
<var class="dt-string">"^(C4)"</var> <var class="dt-string">"^(C6)^(92)"</var><br />
<var class="dt-string">"^(C5)"</var> <var class="dt-string">"^(E2)^(89)^(88)"</var><br />
<var class="dt-string">"^(C6)"</var> <var class="dt-string">"^(E2)^(88)^(86)"</var><br />
<var class="dt-string">"^(C7)"</var> <var class="dt-string">"^(C2)^(AB)"</var><br />
<var class="dt-string">"^(C8)"</var> <var class="dt-string">"^(C2)^(BB)"</var><br />
<var class="dt-string">"^(C9)"</var> <var class="dt-string">"^(E2)^(80)^(A6)"</var><br />
<var class="dt-string">"^(CA)"</var> <var class="dt-string">"^(C2)^(A0)"</var><br />
<var class="dt-string">"^(CB)"</var> <var class="dt-string">"^(C3)^(80)"</var><br />
<var class="dt-string">"^(CC)"</var> <var class="dt-string">"^(C3)^(83)"</var><br />
<var class="dt-string">"^(CD)"</var> <var class="dt-string">"^(C3)^(95)"</var><br />
<var class="dt-string">"^(CE)"</var> <var class="dt-string">"^(C5)^(92)"</var><br />
<var class="dt-string">"^(CF)"</var> <var class="dt-string">"^(C5)^(93)"</var><br />
<var class="dt-string">"^(D0)"</var> <var class="dt-string">"^(E2)^(80)^(93)"</var><br />
<var class="dt-string">"^(D1)"</var> <var class="dt-string">"^(E2)^(80)^(94)"</var><br />
<var class="dt-string">"^(D2)"</var> <var class="dt-string">"^(E2)^(80)^(9C)"</var><br />
<var class="dt-string">"^(D3)"</var> <var class="dt-string">"^(E2)^(80)^(9D)"</var><br />
<var class="dt-string">"^(D4)"</var> <var class="dt-string">"^(E2)^(80)^(98)"</var><br />
<var class="dt-string">"^(D5)"</var> <var class="dt-string">"^(E2)^(80)^(99)"</var><br />
<var class="dt-string">"^(D6)"</var> <var class="dt-string">"^(C3)^(B7)"</var><br />
<var class="dt-string">"^(D7)"</var> <var class="dt-string">"^(E2)^(97)^(8A)"</var><br />
<var class="dt-string">"^(D8)"</var> <var class="dt-string">"^(C3)^(BF)"</var><br />
<var class="dt-string">"^(D9)"</var> <var class="dt-string">"^(C5)^(B8)"</var><br />
<var class="dt-string">"^(DA)"</var> <var class="dt-string">"^(E2)^(81)^(84)"</var><br />
<var class="dt-string">"^(DB)"</var> <var class="dt-string">"^(E2)^(82)^(AC)"</var><br />
<var class="dt-string">"^(DC)"</var> <var class="dt-string">"^(E2)^(80)^(B9)"</var><br />
<var class="dt-string">"^(DD)"</var> <var class="dt-string">"^(E2)^(80)^(BA)"</var><br />
<var class="dt-string">"^(DE)"</var> <var class="dt-string">"^(EF)^(AC)^(81)"</var><br />
<var class="dt-string">"^(DF)"</var> <var class="dt-string">"^(EF)^(AC)^(82)"</var><br />
<var class="dt-string">"^(E0)"</var> <var class="dt-string">"^(E2)^(80)^(A1)"</var><br />
<var class="dt-string">"^(E1)"</var> <var class="dt-string">"^(C2)^(B7)"</var><br />
<var class="dt-string">"^(E2)"</var> <var class="dt-string">"^(E2)^(80)^(9A)"</var><br />
<var class="dt-string">"^(E3)"</var> <var class="dt-string">"^(E2)^(80)^(9E)"</var><br />
<var class="dt-string">"^(E4)"</var> <var class="dt-string">"^(E2)^(80)^(B0)"</var><br />
<var class="dt-string">"^(E5)"</var> <var class="dt-string">"^(C3)^(82)"</var><br />
<var class="dt-string">"^(E6)"</var> <var class="dt-string">"^(C3)^(8A)"</var><br />
<var class="dt-string">"^(E7)"</var> <var class="dt-string">"^(C3)^(81)"</var><br />
<var class="dt-string">"^(E8)"</var> <var class="dt-string">"^(C3)^(8B)"</var><br />
<var class="dt-string">"^(E9)"</var> <var class="dt-string">"^(C3)^(88)"</var><br />
<var class="dt-string">"^(EA)"</var> <var class="dt-string">"^(C3)^(8D)"</var><br />
<var class="dt-string">"^(EB)"</var> <var class="dt-string">"^(C3)^(8E)"</var><br />
<var class="dt-string">"^(EC)"</var> <var class="dt-string">"^(C3)^(8F)"</var><br />
<var class="dt-string">"^(ED)"</var> <var class="dt-string">"^(C3)^(8C)"</var><br />
<var class="dt-string">"^(EE)"</var> <var class="dt-string">"^(C3)^(93)"</var><br />
<var class="dt-string">"^(EF)"</var> <var class="dt-string">"^(C3)^(94)"</var><br />
<var class="dt-string">"^(F0)"</var> <var class="dt-string">"^(EF)^(A3)^(BF)"</var><br />
<var class="dt-string">"^(F1)"</var> <var class="dt-string">"^(C3)^(92)"</var><br />
<var class="dt-string">"^(F2)"</var> <var class="dt-string">"^(C3)^(9A)"</var><br />
<var class="dt-string">"^(F3)"</var> <var class="dt-string">"^(C3)^(9B)"</var><br />
<var class="dt-string">"^(F4)"</var> <var class="dt-string">"^(C3)^(99)"</var><br />
<var class="dt-string">"^(F5)"</var> <var class="dt-string">"^(C4)^(B1)"</var><br />
<var class="dt-string">"^(F6)"</var> <var class="dt-string">"^(CB)^(86)"</var><br />
<var class="dt-string">"^(F7)"</var> <var class="dt-string">"^(CB)^(9C)"</var><br />
<var class="dt-string">"^(F8)"</var> <var class="dt-string">"^(C2)^(AF)"</var><br />
<var class="dt-string">"^(F9)"</var> <var class="dt-string">"^(CB)^(98)"</var><br />
<var class="dt-string">"^(FA)"</var> <var class="dt-string">"^(CB)^(99)"</var><br />
<var class="dt-string">"^(FB)"</var> <var class="dt-string">"^(CB)^(9A)"</var><br />
<var class="dt-string">"^(FC)"</var> <var class="dt-string">"^(C2)^(B8)"</var><br />
<var class="dt-string">"^(FD)"</var> <var class="dt-string">"^(CB)^(9D)"</var><br />
<var class="dt-string">"^(FE)"</var> <var class="dt-string">"^(CB)^(9B)"</var><br />
<var class="dt-string">"^(FF)"</var> <var class="dt-string">"^(CB)^(87)"</var><br />
]<br />
<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-function">copy</var> transfer ch128-255 (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">select/case</var> trans-table transfer<br />
)<br />
]<br />
<br />
iso-8859-to-utf-8/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of macroman-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; mail-encoding? ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <br />
</var> <var class="dt-set-word">mail-encoding?:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{Returns the charset of the first Content-type entry in a mail message}</var><br />
mail-str [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
cset <var class="dt-cmt">;; character set<br />
</var> ][<br />
<br />
<var class="dt-function">either</var> <var class="dt-function">parse/all</var> mail-str [<br />
<var class="dt-function">to</var> <var class="dt-string">"Content-type"</var> thru <var class="dt-string">"charset="</var> <var class="dt-function">copy</var> cset some letter-hyphen <var class="dt-function">to</var> end end<br />
][<var class="dt-function">lowercase</var> cset ][<br />
<var class="dt-cmt">#[none]</var><br />
]<br />
] <br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of mail-encoding? ;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var> <br />
<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-1-to-html ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::<br />
</var><br />
<var class="dt-set-word">iso-8859-1-to-html:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{Converts an ISO-8859-1 encoded string to pure ASCII with characters 128<br />
and above converted to html escape sequences}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/esc-lt-gt-amp</var> <var class="dt-string">{Escape <, > and &}</var><br />
<var class="dt-refinement">/keep-tags</var> <var class="dt-string">{leave < ....> alone}</var><br />
<var class="dt-refinement">/local</var><br />
output-string<br />
rule<br />
transfer<br />
escape<br />
no-refinement-rule<br />
esc-lt-gt-amp-rule<br />
keep-tags-rule<br />
standard-rule<br />
variable-rule<br />
][<br />
<br />
<var class="dt-set-word">no-refinement-rule:</var> [<br />
<var class="dt-function">copy</var> transfer [some ascii] (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string transfer<br />
)<br />
]<br />
<br />
<var class="dt-set-word">esc-lt-gt-amp-rule:</var> [<br />
<var class="dt-string">"<"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">"&lt;"</var>)<br />
|<br />
<var class="dt-string">">"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">"&gt;"</var>)<br />
|<br />
<var class="dt-string">"&"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">"&amp;"</var>)<br />
|<br />
<var class="dt-function">copy</var> transfer [some ascii-less-ampltgt] (<br />
<var class="dt-function">print</var> <var class="dt-string">"here"</var><br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string transfer<br />
)<br />
]<br />
<var class="dt-set-word">keep-tags-rule:</var> [<br />
<var class="dt-function">copy</var> transfer a-tag (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string transfer<br />
)<br />
]<br />
<br />
<var class="dt-cmt">;; rule to deal with characters above 127<br />
</var> <var class="dt-set-word">standard-rule:</var> [<br />
some ch128-159 <var class="dt-cmt">;; ignore characters in this range<br />
</var> |<br />
<var class="dt-function">copy</var> escape ch160-255 (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">join</var> <var class="dt-string">"&#"</var> [<var class="dt-function">to</var> <var class="dt-datatype">integer!</var> <var class="dt-function">first</var> escape <var class="dt-string">";"</var>]<br />
)<br />
|<br />
<var class="dt-function">skip</var><br />
]<br />
<br />
<var class="dt-cmt">;; assemble the parse rule according to the refinements<br />
</var> <br />
<var class="dt-function">either</var> esc-lt-gt-amp [<br />
<var class="dt-function">either</var> keep-tags [<br />
<var class="dt-set-word">rule:</var> [<br />
<var class="dt-function">any</var> [<br />
keep-tags-rule<br />
|<br />
esc-lt-gt-amp-rule<br />
|<br />
standard-rule<br />
]<br />
]<br />
][<br />
<var class="dt-set-word">rule:</var> [<br />
<var class="dt-function">any</var> [<br />
esc-lt-gt-amp-rule<br />
|<br />
standard-rule<br />
]<br />
]<br />
]<br />
][<br />
<var class="dt-set-word">rule:</var> [<br />
<var class="dt-function">any</var> [<br />
no-refinement-rule<br />
|<br />
standard-rule<br />
]<br />
]<br />
]<br />
<br />
<var class="dt-set-word">output-string:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-function">parse/all</var> input-string rule<br />
<var class="dt-function">head</var> output-string<br />
<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-1-to-hmtl;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">iso-8859-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts an ISO-8859 encoded string to UTF-8.<br />
The default processing assumes the input is ISO-8859-1<br />
The /addl-rules refinement allows rules to be supplied for other ecodings<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/addl-rules</var><br />
extra-rules [<var class="dt-datatype">block!</var>]<br />
<var class="dt-refinement">/local</var><br />
output-string<br />
rule<br />
ascii-rule<br />
rule-80-BF<br />
C0-FF-rule<br />
transfer<br />
][<br />
<var class="dt-cmt">;; temporary variables and constants<br />
</var> <var class="dt-set-word">output-string:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-set-word">transfer:</var> none<br />
<br />
<var class="dt-cmt">;; sub-rules<br />
</var> <var class="dt-set-word">ascii-rule:</var> [<br />
<var class="dt-function">copy</var> transfer [some ascii] (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string transfer<br />
)<br />
]<br />
<br />
<var class="dt-set-word">rule-80-BF:</var> [<br />
<var class="dt-cmt">;; characters in the range 80-BF relate to C280-C2BF<br />
</var> <var class="dt-function">copy</var> transfer x80-xBF (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">compose</var> [<var class="dt-char">#"^(C2)"</var> (transfer)]<br />
)<br />
]<br />
<br />
<var class="dt-set-word">C0-FF-rule:</var> [<br />
<var class="dt-cmt">;; characters in the range C0-FF relate to C380-C3BF<br />
</var> <var class="dt-function">copy</var> transfer xC0-xFF (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">compose</var> [<br />
<var class="dt-char">#"^(C3)"</var> (<var class="dt-char">#"^(40)"</var> <var class="dt-function">xor</var> <var class="dt-function">to</var> <var class="dt-datatype">char!</var> transfer)<br />
]<br />
)<br />
]<br />
<br />
<var class="dt-set-word">rule:</var> [<br />
<var class="dt-function">any</var> [<br />
ascii-rule<br />
|<br />
rule-80-BF<br />
|<br />
C0-FF-rule<br />
]<br />
]<br />
<br />
<var class="dt-cmt">;; add the extra rules to the rule<br />
</var> <var class="dt-function">if</var> addl-rules [<br />
<var class="dt-function">bind</var> extra-rules <var class="dt-lit-word">'output-string</var><br />
<var class="dt-function">insert</var> <var class="dt-function">find/tail</var> <var class="dt-function">second</var> rule <var class="dt-lit-word">'ascii-rule</var> [| extra-rules]<br />
]<br />
<br />
<var class="dt-function">parse/all/case</var> input-string rule<br />
<var class="dt-function">head</var> output-string<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-1-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">iso-8859-1-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts an ISO-8859-1 encoded string to UTF-8.<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
][iso-8859-to-utf-8 input-string ]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-1-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-2-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">iso-8859-2-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts an ISO-8859-2 encoded string to UTF-8.<br />
Invalid characters are replaced<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
trans-table<br />
][<br />
<var class="dt-cmt">;; translation table<br />
</var> <var class="dt-set-word">trans-table:</var> [<br />
<var class="dt-string">"^(A0)"</var> <var class="dt-string">"^(C2)^(A0)"</var><br />
<var class="dt-string">"^(A1)"</var> <var class="dt-string">"^(C4)^(84)"</var><br />
<var class="dt-string">"^(A2)"</var> <var class="dt-string">"^(CB)^(98)"</var><br />
<var class="dt-string">"^(A3)"</var> <var class="dt-string">"^(C5)^(81)"</var><br />
<var class="dt-string">"^(A4)"</var> <var class="dt-string">"^(C2)^(A4)"</var><br />
<var class="dt-string">"^(A5)"</var> <var class="dt-string">"^(C4)^(BD)"</var><br />
<var class="dt-string">"^(A6)"</var> <var class="dt-string">"^(C5)^(9A)"</var><br />
<var class="dt-string">"^(A7)"</var> <var class="dt-string">"^(C2)^(A7)"</var><br />
<var class="dt-string">"^(A8)"</var> <var class="dt-string">"^(C2)^(A8)"</var><br />
<var class="dt-string">"^(A9)"</var> <var class="dt-string">"^(C5)^(A0)"</var><br />
<var class="dt-string">"^(AA)"</var> <var class="dt-string">"^(C5)^(9E)"</var><br />
<var class="dt-string">"^(AB)"</var> <var class="dt-string">"^(C5)^(A4)"</var><br />
<var class="dt-string">"^(AC)"</var> <var class="dt-string">"^(C5)^(B9)"</var><br />
<var class="dt-string">"^(AD)"</var> <var class="dt-string">"^(C2)^(AD)"</var><br />
<var class="dt-string">"^(AE)"</var> <var class="dt-string">"^(C5)^(BD)"</var><br />
<var class="dt-string">"^(AF)"</var> <var class="dt-string">"^(C5)^(BB)"</var><br />
<var class="dt-string">"^(B0)"</var> <var class="dt-string">"^(C2)^(B0)"</var><br />
<var class="dt-string">"^(B1)"</var> <var class="dt-string">"^(C4)^(85)"</var><br />
<var class="dt-string">"^(B2)"</var> <var class="dt-string">"^(CB)^(9B)"</var><br />
<var class="dt-string">"^(B3)"</var> <var class="dt-string">"^(C5)^(82)"</var><br />
<var class="dt-string">"^(B4)"</var> <var class="dt-string">"^(C2)^(B4)"</var><br />
<var class="dt-string">"^(B5)"</var> <var class="dt-string">"^(C4)^(BE)"</var><br />
<var class="dt-string">"^(B6)"</var> <var class="dt-string">"^(C5)^(9B)"</var><br />
<var class="dt-string">"^(B7)"</var> <var class="dt-string">"^(CB)^(87)"</var><br />
<var class="dt-string">"^(B8)"</var> <var class="dt-string">"^(C2)^(B8)"</var><br />
<var class="dt-string">"^(B9)"</var> <var class="dt-string">"^(C5)^(A1)"</var><br />
<var class="dt-string">"^(BA)"</var> <var class="dt-string">"^(C5)^(9F)"</var><br />
<var class="dt-string">"^(BB)"</var> <var class="dt-string">"^(C5)^(A5)"</var><br />
<var class="dt-string">"^(BC)"</var> <var class="dt-string">"^(C5)^(BA)"</var><br />
<var class="dt-string">"^(BD)"</var> <var class="dt-string">"^(CB)^(9D)"</var><br />
<var class="dt-string">"^(BE)"</var> <var class="dt-string">"^(C5)^(BE)"</var><br />
<var class="dt-string">"^(BF)"</var> <var class="dt-string">"^(C5)^(BC)"</var><br />
<var class="dt-string">"^(C0)"</var> <var class="dt-string">"^(C5)^(94)"</var><br />
<var class="dt-string">"^(C1)"</var> <var class="dt-string">"^(C3)^(81)"</var><br />
<var class="dt-string">"^(C2)"</var> <var class="dt-string">"^(C3)^(82)"</var><br />
<var class="dt-string">"^(C3)"</var> <var class="dt-string">"^(C4)^(82)"</var><br />
<var class="dt-string">"^(C4)"</var> <var class="dt-string">"^(C3)^(84)"</var><br />
<var class="dt-string">"^(C5)"</var> <var class="dt-string">"^(C4)^(B9)"</var><br />
<var class="dt-string">"^(C6)"</var> <var class="dt-string">"^(C4)^(86)"</var><br />
<var class="dt-string">"^(C7)"</var> <var class="dt-string">"^(C3)^(87)"</var><br />
<var class="dt-string">"^(C8)"</var> <var class="dt-string">"^(C4)^(8C)"</var><br />
<var class="dt-string">"^(C9)"</var> <var class="dt-string">"^(C3)^(89)"</var><br />
<var class="dt-string">"^(CA)"</var> <var class="dt-string">"^(C4)^(98)"</var><br />
<var class="dt-string">"^(CB)"</var> <var class="dt-string">"^(C3)^(8B)"</var><br />
<var class="dt-string">"^(CC)"</var> <var class="dt-string">"^(C4)^(9A)"</var><br />
<var class="dt-string">"^(CD)"</var> <var class="dt-string">"^(C3)^(8D)"</var><br />
<var class="dt-string">"^(CE)"</var> <var class="dt-string">"^(C3)^(8E)"</var><br />
<var class="dt-string">"^(CF)"</var> <var class="dt-string">"^(C4)^(8E)"</var><br />
<var class="dt-string">"^(D0)"</var> <var class="dt-string">"^(C4)^(90)"</var><br />
<var class="dt-string">"^(D1)"</var> <var class="dt-string">"^(C5)^(83)"</var><br />
<var class="dt-string">"^(D2)"</var> <var class="dt-string">"^(C5)^(87)"</var><br />
<var class="dt-string">"^(D3)"</var> <var class="dt-string">"^(C3)^(93)"</var><br />
<var class="dt-string">"^(D4)"</var> <var class="dt-string">"^(C3)^(94)"</var><br />
<var class="dt-string">"^(D5)"</var> <var class="dt-string">"^(C5)^(90)"</var><br />
<var class="dt-string">"^(D6)"</var> <var class="dt-string">"^(C3)^(96)"</var><br />
<var class="dt-string">"^(D7)"</var> <var class="dt-string">"^(C3)^(97)"</var><br />
<var class="dt-string">"^(D8)"</var> <var class="dt-string">"^(C5)^(98)"</var><br />
<var class="dt-string">"^(D9)"</var> <var class="dt-string">"^(C5)^(AE)"</var><br />
<var class="dt-string">"^(DA)"</var> <var class="dt-string">"^(C3)^(9A)"</var><br />
<var class="dt-string">"^(DB)"</var> <var class="dt-string">"^(C5)^(B0)"</var><br />
<var class="dt-string">"^(DC)"</var> <var class="dt-string">"^(C3)^(9C)"</var><br />
<var class="dt-string">"^(DD)"</var> <var class="dt-string">"^(C3)^(9D)"</var><br />
<var class="dt-string">"^(DE)"</var> <var class="dt-string">"^(C5)^(A2)"</var><br />
<var class="dt-string">"^(DF)"</var> <var class="dt-string">"^(C3)^(9F)"</var><br />
<var class="dt-string">"^(E0)"</var> <var class="dt-string">"^(C5)^(95)"</var><br />
<var class="dt-string">"^(E1)"</var> <var class="dt-string">"^(C3)^(A1)"</var><br />
<var class="dt-string">"^(E2)"</var> <var class="dt-string">"^(C3)^(A2)"</var><br />
<var class="dt-string">"^(E3)"</var> <var class="dt-string">"^(C4)^(83)"</var><br />
<var class="dt-string">"^(E4)"</var> <var class="dt-string">"^(C3)^(A4)"</var><br />
<var class="dt-string">"^(E5)"</var> <var class="dt-string">"^(C4)^(BA)"</var><br />
<var class="dt-string">"^(E6)"</var> <var class="dt-string">"^(C4)^(87)"</var><br />
<var class="dt-string">"^(E7)"</var> <var class="dt-string">"^(C3)^(A7)"</var><br />
<var class="dt-string">"^(E8)"</var> <var class="dt-string">"^(C4)^(8D)"</var><br />
<var class="dt-string">"^(E9)"</var> <var class="dt-string">"^(C3)^(A9)"</var><br />
<var class="dt-string">"^(EA)"</var> <var class="dt-string">"^(C4)^(99)"</var><br />
<var class="dt-string">"^(EB)"</var> <var class="dt-string">"^(C3)^(AB)"</var><br />
<var class="dt-string">"^(EC)"</var> <var class="dt-string">"^(C4)^(9B)"</var><br />
<var class="dt-string">"^(ED)"</var> <var class="dt-string">"^(C3)^(AD)"</var><br />
<var class="dt-string">"^(EE)"</var> <var class="dt-string">"^(C3)^(AE)"</var><br />
<var class="dt-string">"^(EF)"</var> <var class="dt-string">"^(C4)^(8F)"</var><br />
<var class="dt-string">"^(F0)"</var> <var class="dt-string">"^(C4)^(91)"</var><br />
<var class="dt-string">"^(F1)"</var> <var class="dt-string">"^(C5)^(84)"</var><br />
<var class="dt-string">"^(F2)"</var> <var class="dt-string">"^(C5)^(88)"</var><br />
<var class="dt-string">"^(F3)"</var> <var class="dt-string">"^(C3)^(B3)"</var><br />
<var class="dt-string">"^(F4)"</var> <var class="dt-string">"^(C3)^(B4)"</var><br />
<var class="dt-string">"^(F5)"</var> <var class="dt-string">"^(C5)^(91)"</var><br />
<var class="dt-string">"^(F6)"</var> <var class="dt-string">"^(C3)^(B6)"</var><br />
<var class="dt-string">"^(F7)"</var> <var class="dt-string">"^(C3)^(B7)"</var><br />
<var class="dt-string">"^(F8)"</var> <var class="dt-string">"^(C5)^(99)"</var><br />
<var class="dt-string">"^(F9)"</var> <var class="dt-string">"^(C5)^(AF)"</var><br />
<var class="dt-string">"^(FA)"</var> <var class="dt-string">"^(C3)^(BA)"</var><br />
<var class="dt-string">"^(FB)"</var> <var class="dt-string">"^(C5)^(B1)"</var><br />
<var class="dt-string">"^(FC)"</var> <var class="dt-string">"^(C3)^(BC)"</var><br />
<var class="dt-string">"^(FD)"</var> <var class="dt-string">"^(C3)^(BD)"</var><br />
<var class="dt-string">"^(FE)"</var> <var class="dt-string">"^(C5)^(A3)"</var><br />
<var class="dt-string">"^(FF)"</var> <var class="dt-string">"^(CB)^(99)"</var><br />
]<br />
<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-function">copy</var> transfer ch160-255 (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">select/case</var> trans-table transfer<br />
)<br />
]<br />
<br />
iso-8859-to-utf-8/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-2-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-9-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">iso-8859-9-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts an ISO-8859-9 encoded string to UTF-8.<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
][<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-char">#"^(D0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C4)^(9E)}</var>) <br />
|<br />
<var class="dt-char">#"^(DD)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C4)^(B0)}</var>)<br />
|<br />
<var class="dt-char">#"^(DE)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(9E)}</var>)<br />
|<br />
<var class="dt-char">#"^(F0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C4)^(9F)}</var>)<br />
|<br />
<var class="dt-char">#"^(FD)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C4)^(B1)}</var>)<br />
|<br />
<var class="dt-char">#"^(FE)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(9F)}</var>)<br />
]<br />
<br />
iso-8859-to-utf-8/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-9-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; iso-8859-15-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">iso-8859-15-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts an ISO-8859-15 encoded string to UTF-8.<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
][<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-char">#"^(A4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(E2)^(82)^(AC)}</var>)<br />
|<br />
<var class="dt-char">#"^(A6)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(A0)}</var>)<br />
|<br />
<var class="dt-char">#"^(A8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(A1)}</var>)<br />
|<br />
<var class="dt-char">#"^(B4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(BD)}</var>)<br />
|<br />
<var class="dt-char">#"^(B8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(BE)}</var>)<br />
|<br />
<var class="dt-char">#"^(BC)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(92)}</var>)<br />
|<br />
<var class="dt-char">#"^(BD)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(94)}</var>)<br />
|<br />
<var class="dt-char">#"^(BE)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-string">{^(C5)^(B8)}</var>)<br />
]<br />
<br />
iso-8859-to-utf-8/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of iso-8859-15-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; strip-bom ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var> <var class="dt-set-word">strip-bom:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{Strips any BOM from the start of a string and returns the string.<br />
Note: the input string is modified.<br />
}</var><br />
str [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
bom <var class="dt-string">"store result of bom?"</var><br />
][<br />
<br />
<var class="dt-function">either</var> <var class="dt-set-word">bom:</var> bom? str [<br />
<var class="dt-function">remove/part</var> str <var class="dt-function">length?</var> str-enc-utils/BOM/:bom<br />
][str ]<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of strip-bom ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; utf-8-to-iso-8859 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">utf-8-to-iso-8859:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a UTF-8 encoded string to ISO-8859 and similar eoncodings<br />
These are a lossy conversion:<br />
Characters that cannot be converted are changed to "?"<br />
(That includes any invalid UTF-8 characters in the input)<br />
The default processing assumes the input is ISO-8859-1<br />
The /addl-rules refinement allows rules to be supplied for other ecodings<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/addl-rules</var><br />
extra-rules [<var class="dt-datatype">block!</var>]<br />
<var class="dt-refinement">/local</var><br />
output-string<br />
rule<br />
ascii-rule<br />
nbsp-rule<br />
xA0-xBF<br />
C2A0-C2BF<br />
C2A0-C2BF-rule<br />
x80-xBF<br />
C380-C3BF<br />
C380-C3BF-rule<br />
transfer<br />
][<br />
<var class="dt-cmt">;; temporary variables and constants<br />
</var> <var class="dt-set-word">output-string:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-set-word">transfer:</var> none<br />
<br />
<var class="dt-cmt">;; bit sets<br />
</var> <var class="dt-set-word">xA0-xBF:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(A0)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(BF)"</var>]<br />
<var class="dt-set-word">x80-xBF:</var> <var class="dt-function">charset</var> [<var class="dt-char">#"^(80)"</var> <var class="dt-function">-</var> <var class="dt-char">#"^(BF)"</var>]<br />
<br />
<var class="dt-cmt">;; character sequences<br />
</var> <var class="dt-set-word">C2A0-C2BF:</var> [<var class="dt-char">#"^(C2)"</var> xA0-xBF]<br />
<var class="dt-set-word">C380-C3BF:</var> [<var class="dt-char">#"^(C3)"</var> x80-xBF]<br />
<br />
<var class="dt-cmt">;; sub-rules<br />
</var> <var class="dt-set-word">ascii-rule:</var> [<br />
<var class="dt-function">copy</var> transfer [some ascii] (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string transfer<br />
)<br />
]<br />
<br />
<var class="dt-set-word">C2A0-C2BF-rule:</var> [<br />
<var class="dt-cmt">;; characters in the range C2A0-C2BF relate to A0-BF<br />
</var> <var class="dt-function">copy</var> transfer C2A0-C2BF (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">second</var> transfer)<br />
]<br />
<br />
<var class="dt-set-word">C380-C3BF-rule:</var> [<br />
<var class="dt-cmt">;; characters in the range C380-C3BF relate to C0-FF<br />
</var> <var class="dt-function">copy</var> transfer C380-C3BF (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(40)"</var> <var class="dt-function">or</var> <var class="dt-function">second</var> transfer <br />
)<br />
]<br />
<br />
<var class="dt-set-word">rule:</var> [<br />
<var class="dt-function">any</var> [<br />
ascii-rule<br />
|<br />
C2A0-C2BF-rule<br />
|<br />
C380-C3BF-rule<br />
|<br />
[<br />
[a-utf-8-two-byte | a-utf-8-three-byte | a-utf-8-four-byte] (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string replacement-char<br />
)<br />
]<br />
|<br />
<var class="dt-function">skip</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string replacement-char)<br />
]<br />
]<br />
<br />
<var class="dt-cmt">;; add the extra rules to the rule<br />
</var> <var class="dt-function">if</var> addl-rules [<br />
<var class="dt-function">bind</var> extra-rules <var class="dt-lit-word">'output-string</var><br />
<var class="dt-function">insert</var> <var class="dt-function">find/tail</var> <var class="dt-function">second</var> rule <var class="dt-lit-word">'ascii-rule</var> [| extra-rules]<br />
]<br />
<br />
<var class="dt-function">parse/all/case</var> input-string rule<br />
<var class="dt-function">head</var> output-string<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of utf-8-to-iso-8859 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; utf-8-to-iso-8859-1 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">utf-8-to-iso-8859-1:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a UTF-8 encoded string to ISO-8859-1.<br />
This is a lossy conversion:<br />
Characters that cannot be converted are changed to "?"<br />
(That includes any invalid UTF-8 characters in the input)<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
][str-enc-utils/utf-8-to-iso-8859 input-string ]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of utf-8-to-iso-8859-1 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; utf-8-to-iso-8859-15 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-set-word">utf-8-to-iso-8859-15:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a UTF-8 encoded string to ISO-8859-15.<br />
This is a lossy conversion:<br />
Characters that cannot be converted are changed to "?"<br />
(That includes any invalid UTF-8 characters in the input)<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
][<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-string">{^(E2)^(82)^(AC)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A4)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(A0)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A6)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(A1)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A8)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(BD)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B4)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(BE)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B8)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(92)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BC)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(94)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BD)"</var>)<br />
|<br />
<var class="dt-string">{^(C5)^(B8)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BE)"</var>)<br />
]<br />
<br />
utf-8-to-iso-8859/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of utf-8-to-iso-8859-15 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; utf-8-to-macroman ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">utf-8-to-macroman:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a UTF-8 encoded string to MacRoman.<br />
This is a lossy conversion:<br />
Characters that cannot be converted are changed to "?"<br />
(That includes any invalid UTF-8 characters in the input)<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
trans-table<br />
][<br />
<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-string">"^(C3)^(84)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(80)"</var>) |<br />
<var class="dt-string">"^(C3)^(85)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(81)"</var>) |<br />
<var class="dt-string">"^(C3)^(87)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(82)"</var>) |<br />
<var class="dt-string">"^(C3)^(89)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(83)"</var>) |<br />
<var class="dt-string">"^(C3)^(91)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(84)"</var>) |<br />
<var class="dt-string">"^(C3)^(96)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(85)"</var>) |<br />
<var class="dt-string">"^(C3)^(9C)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(86)"</var>) |<br />
<var class="dt-string">"^(C3)^(A1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(87)"</var>) |<br />
<var class="dt-string">"^(C3)^(A0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(88)"</var>) |<br />
<var class="dt-string">"^(C3)^(A2)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(89)"</var>) |<br />
<var class="dt-string">"^(C3)^(A4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8A)"</var>) |<br />
<var class="dt-string">"^(C3)^(A3)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8B)"</var>) |<br />
<var class="dt-string">"^(C3)^(A5)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8C)"</var>) |<br />
<var class="dt-string">"^(C3)^(A7)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8D)"</var>) |<br />
<var class="dt-string">"^(C3)^(A9)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8E)"</var>) |<br />
<var class="dt-string">"^(C3)^(A8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8F)"</var>) |<br />
<var class="dt-string">"^(C3)^(AA)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(90)"</var>) |<br />
<var class="dt-string">"^(C3)^(AB)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(91)"</var>) |<br />
<var class="dt-string">"^(C3)^(AD)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(92)"</var>) |<br />
<var class="dt-string">"^(C3)^(AC)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(93)"</var>) |<br />
<var class="dt-string">"^(C3)^(AE)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(94)"</var>) |<br />
<var class="dt-string">"^(C3)^(AF)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(95)"</var>) |<br />
<var class="dt-string">"^(C3)^(B1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(96)"</var>) |<br />
<var class="dt-string">"^(C3)^(B3)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(97)"</var>) |<br />
<var class="dt-string">"^(C3)^(B2)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(98)"</var>) |<br />
<var class="dt-string">"^(C3)^(B4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(99)"</var>) |<br />
<var class="dt-string">"^(C3)^(B6)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9A)"</var>) |<br />
<var class="dt-string">"^(C3)^(B5)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9B)"</var>) |<br />
<var class="dt-string">"^(C3)^(BA)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9C)"</var>) |<br />
<var class="dt-string">"^(C3)^(B9)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9D)"</var>) |<br />
<var class="dt-string">"^(C3)^(BB)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9E)"</var>) |<br />
<var class="dt-string">"^(C3)^(BC)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9F)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(A0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A0)"</var>) |<br />
<var class="dt-string">"^(C2)^(B0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A1)"</var>) |<br />
<var class="dt-string">"^(C2)^(A2)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A2)"</var>) |<br />
<var class="dt-string">"^(C2)^(A3)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A3)"</var>) |<br />
<var class="dt-string">"^(C2)^(A7)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A4)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(A2)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A5)"</var>) |<br />
<var class="dt-string">"^(C2)^(B6)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A6)"</var>) |<br />
<var class="dt-string">"^(C3)^(9F)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A7)"</var>) |<br />
<var class="dt-string">"^(C2)^(AE)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A8)"</var>) |<br />
<var class="dt-string">"^(C2)^(A9)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(A9)"</var>) |<br />
<var class="dt-string">"^(E2)^(84)^(A2)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AA)"</var>) |<br />
<var class="dt-string">"^(C2)^(B4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AB)"</var>) |<br />
<var class="dt-string">"^(C2)^(A8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AC)"</var>) |<br />
<var class="dt-string">"^(E2)^(89)^(A0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AD)"</var>) |<br />
<var class="dt-string">"^(C3)^(86)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AE)"</var>) |<br />
<var class="dt-string">"^(C3)^(98)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(AF)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(9E)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B0)"</var>) |<br />
<var class="dt-string">"^(C2)^(B1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B1)"</var>) |<br />
<var class="dt-string">"^(E2)^(89)^(A4)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B2)"</var>) |<br />
<var class="dt-string">"^(E2)^(89)^(A5)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B3)"</var>) |<br />
<var class="dt-string">"^(C2)^(A5)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B4)"</var>) |<br />
<var class="dt-string">"^(C2)^(B5)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B5)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(82)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B6)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(91)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B7)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(8F)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B8)"</var>) |<br />
<var class="dt-string">"^(CF)^(80)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(B9)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(AB)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BA)"</var>) |<br />
<var class="dt-string">"^(C2)^(AA)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BB)"</var>) |<br />
<var class="dt-string">"^(C2)^(BA)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BC)"</var>) |<br />
<var class="dt-string">"^(CE)^(A9)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BD)"</var>) |<br />
<var class="dt-string">"^(C3)^(A6)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BE)"</var>) |<br />
<var class="dt-string">"^(C3)^(B8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(BF)"</var>) |<br />
<var class="dt-string">"^(C2)^(BF)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C0)"</var>) |<br />
<var class="dt-string">"^(C2)^(A1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C1)"</var>) |<br />
<var class="dt-string">"^(C2)^(AC)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C2)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(9A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C3)"</var>) |<br />
<var class="dt-string">"^(C6)^(92)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C4)"</var>) |<br />
<var class="dt-string">"^(E2)^(89)^(88)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C5)"</var>) |<br />
<var class="dt-string">"^(E2)^(88)^(86)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C6)"</var>) |<br />
<var class="dt-string">"^(C2)^(AB)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C7)"</var>) |<br />
<var class="dt-string">"^(C2)^(BB)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C8)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(A6)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(C9)"</var>) |<br />
<var class="dt-string">"^(C2)^(A0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CA)"</var>) |<br />
<var class="dt-string">"^(C3)^(80)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CB)"</var>) |<br />
<var class="dt-string">"^(C3)^(83)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CC)"</var>) |<br />
<var class="dt-string">"^(C3)^(95)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CD)"</var>) |<br />
<var class="dt-string">"^(C5)^(92)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CE)"</var>) |<br />
<var class="dt-string">"^(C5)^(93)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(CF)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(93)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D0)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(94)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D1)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(9C)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D2)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(9D)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D3)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(98)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D4)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(99)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D5)"</var>) |<br />
<var class="dt-string">"^(C3)^(B7)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D6)"</var>) |<br />
<var class="dt-string">"^(E2)^(97)^(8A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D7)"</var>) |<br />
<var class="dt-string">"^(C3)^(BF)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D8)"</var>) |<br />
<var class="dt-string">"^(C5)^(B8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(D9)"</var>) |<br />
<var class="dt-string">"^(E2)^(81)^(84)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DA)"</var>) |<br />
<var class="dt-string">"^(E2)^(82)^(AC)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DB)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(B9)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DC)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(BA)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DD)"</var>) |<br />
<var class="dt-string">"^(EF)^(AC)^(81)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DE)"</var>) |<br />
<var class="dt-string">"^(EF)^(AC)^(82)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(DF)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(A1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E0)"</var>) |<br />
<var class="dt-string">"^(C2)^(B7)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E1)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(9A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E2)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(9E)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E3)"</var>) |<br />
<var class="dt-string">"^(E2)^(80)^(B0)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E4)"</var>) |<br />
<var class="dt-string">"^(C3)^(82)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E5)"</var>) |<br />
<var class="dt-string">"^(C3)^(8A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E6)"</var>) |<br />
<var class="dt-string">"^(C3)^(81)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E7)"</var>) |<br />
<var class="dt-string">"^(C3)^(8B)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E8)"</var>) |<br />
<var class="dt-string">"^(C3)^(88)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(E9)"</var>) |<br />
<var class="dt-string">"^(C3)^(8D)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(EA)"</var>) |<br />
<var class="dt-string">"^(C3)^(8E)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(EB)"</var>) |<br />
<var class="dt-string">"^(C3)^(8F)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(EC)"</var>) |<br />
<var class="dt-string">"^(C3)^(8C)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(ED)"</var>) |<br />
<var class="dt-string">"^(C3)^(93)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(EE)"</var>) |<br />
<var class="dt-string">"^(C3)^(94)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(EF)"</var>) |<br />
<var class="dt-string">"^(EF)^(A3)^(BF)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F0)"</var>) |<br />
<var class="dt-string">"^(C3)^(92)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F1)"</var>) |<br />
<var class="dt-string">"^(C3)^(9A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F2)"</var>) |<br />
<var class="dt-string">"^(C3)^(9B)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F3)"</var>) |<br />
<var class="dt-string">"^(C3)^(99)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F4)"</var>) |<br />
<var class="dt-string">"^(C4)^(B1)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F5)"</var>) |<br />
<var class="dt-string">"^(CB)^(86)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F6)"</var>) |<br />
<var class="dt-string">"^(CB)^(9C)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F7)"</var>) |<br />
<var class="dt-string">"^(C2)^(AF)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F8)"</var>) |<br />
<var class="dt-string">"^(CB)^(98)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(F9)"</var>) |<br />
<var class="dt-string">"^(CB)^(99)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FA)"</var>) |<br />
<var class="dt-string">"^(CB)^(9A)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FB)"</var>) |<br />
<var class="dt-string">"^(C2)^(B8)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FC)"</var>) |<br />
<var class="dt-string">"^(CB)^(9D)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FD)"</var>) |<br />
<var class="dt-string">"^(CB)^(9B)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FE)"</var>) |<br />
<var class="dt-string">"^(CB)^(87)"</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(FF)"</var>) <br />
]<br />
<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <br />
<br />
utf-8-to-iso-8859/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of utf-8-to-macroman ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; utf-8-to-win-1252 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">utf-8-to-win-1252:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a win-1252 encoded string to UTF-8.<br />
This is a lossy conversion:<br />
Characters that cannot be converted are changed to "?"<br />
(That includes any invalid UTF-8 characters in the input)<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
trans-table<br />
][<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-string">{^(E2)^(82)^(A0)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(80)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(9A)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(82)"</var>) |<br />
<var class="dt-string">{^(C6)^(92)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(83)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(9E)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(84)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(A6)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(85)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(A0)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(86)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(A1)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(87)"</var>) |<br />
<var class="dt-string">{^(CB)^(86)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(88)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(B0)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(89)"</var>) |<br />
<var class="dt-string">{^(C5)^(A0)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8A)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(B9)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8B)"</var>) |<br />
<var class="dt-string">{^(C5)^(92)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8C)"</var>) |<br />
<var class="dt-string">{^(C5)^(BD)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(8E)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(98)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(91)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(99)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(92)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(9C)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(93)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(9D)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(94)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(A2)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(95)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(93)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(96)"</var>) |<br />
<var class="dt-string">{^(E2)^(84)^(84)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(97)"</var>) |<br />
<var class="dt-string">{^(CB)^(96)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(98)"</var>) |<br />
<var class="dt-string">{^(E2)^(84)^(A2)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(99)"</var>) |<br />
<var class="dt-string">{^(C5)^(A1)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9A)"</var>) |<br />
<var class="dt-string">{^(E2)^(80)^(BA)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9B)"</var>) |<br />
<var class="dt-string">{^(C5)^(93)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9C)"</var>) |<br />
<var class="dt-string">{^(C5)^(BE)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9E)"</var>) |<br />
<var class="dt-string">{^(C5)^(B8)}</var> (<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-char">#"^(9F)"</var>) <br />
]<br />
<br />
utf-8-to-iso-8859/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of utf-8-to-win-1252 ;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;; win-1252-to-utf-8 ;;<br />
</var><var class="dt-cmt">;; ;; <br />
</var><var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br />
</var><br />
<var class="dt-set-word">win-1252-to-utf-8:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [<br />
<var class="dt-string">{<br />
Converts a win-1252 encoded string to UTF-8.<br />
Invalid characters are replaced<br />
}</var><br />
input-string [<var class="dt-datatype">string!</var>]<br />
<var class="dt-refinement">/local</var><br />
extra-rules<br />
trans-table<br />
][<br />
<var class="dt-cmt">;; translation table<br />
</var> <var class="dt-set-word">trans-table:</var> <var class="dt-function">compose</var> [<br />
<var class="dt-string">"^(80)"</var> <var class="dt-string">{^(E2)^(82)^(A0)}</var><br />
<var class="dt-string">"^(81)"</var> (replacement-char)<br />
<var class="dt-string">"^(82)"</var> <var class="dt-string">{^(E2)^(80)^(9A)}</var><br />
<var class="dt-string">"^(83)"</var> <var class="dt-string">{^(C6)^(92)}</var><br />
<var class="dt-string">"^(84)"</var> <var class="dt-string">{^(E2)^(80)^(9E)}</var><br />
<var class="dt-string">"^(85)"</var> <var class="dt-string">{^(E2)^(80)^(A6)}</var><br />
<var class="dt-string">"^(86)"</var> <var class="dt-string">{^(E2)^(80)^(A0)}</var><br />
<var class="dt-string">"^(87)"</var> <var class="dt-string">{^(E2)^(80)^(A1)}</var><br />
<var class="dt-string">"^(88)"</var> <var class="dt-string">{^(CB)^(86)}</var><br />
<var class="dt-string">"^(89)"</var> <var class="dt-string">{^(E2)^(80)^(B0)}</var><br />
<var class="dt-string">"^(8A)"</var> <var class="dt-string">{^(C5)^(A0)}</var><br />
<var class="dt-string">"^(8B)"</var> <var class="dt-string">{^(E2)^(80)^(B9)}</var><br />
<var class="dt-string">"^(8C)"</var> <var class="dt-string">{^(C5)^(92)}</var><br />
<var class="dt-string">"^(8D)"</var> (replacement-char)<br />
<var class="dt-string">"^(8E)"</var> <var class="dt-string">{^(C5)^(BD)}</var><br />
<var class="dt-string">"^(8F)"</var> (replacement-char)<br />
<var class="dt-string">"^(90)"</var> (replacement-char)<br />
<var class="dt-string">"^(91)"</var> <var class="dt-string">{^(E2)^(80)^(98)}</var><br />
<var class="dt-string">"^(92)"</var> <var class="dt-string">{^(E2)^(80)^(99)}</var><br />
<var class="dt-string">"^(93)"</var> <var class="dt-string">{^(E2)^(80)^(9C)}</var><br />
<var class="dt-string">"^(94)"</var> <var class="dt-string">{^(E2)^(80)^(9D)}</var><br />
<var class="dt-string">"^(95)"</var> <var class="dt-string">{^(E2)^(80)^(A2)}</var><br />
<var class="dt-string">"^(96)"</var> <var class="dt-string">{^(E2)^(80)^(93)}</var><br />
<var class="dt-string">"^(97)"</var> <var class="dt-string">{^(E2)^(84)^(84)}</var><br />
<var class="dt-string">"^(98)"</var> <var class="dt-string">{^(CB)^(96)}</var><br />
<var class="dt-string">"^(99)"</var> <var class="dt-string">{^(E2)^(84)^(A2)}</var><br />
<var class="dt-string">"^(9A)"</var> <var class="dt-string">{^(C5)^(A1)}</var><br />
<var class="dt-string">"^(9B)"</var> <var class="dt-string">{^(E2)^(80)^(BA)}</var><br />
<var class="dt-string">"^(9C)"</var> <var class="dt-string">{^(C5)^(93)}</var><br />
<var class="dt-string">"^(9D)"</var> (replacement-char)<br />
<var class="dt-string">"^(9E)"</var> <var class="dt-string">{^(C5)^(BE)}</var><br />
<var class="dt-string">"^(9F)"</var> <var class="dt-string">{^(C5)^(B8)}</var><br />
]<br />
<br />
<var class="dt-cmt">;; Define the additional rules to be applied before the default rules<br />
</var> <var class="dt-set-word">extra-rules:</var> [<br />
<var class="dt-function">copy</var> transfer ch128-159 (<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> output-string <var class="dt-function">select/case</var> trans-table transfer<br />
)<br />
]<br />
<br />
iso-8859-to-utf-8/addl-rules input-string extra-rules<br />
]<br />
<var class="dt-cmt">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end of win-1252-to-utf-8 ;;;;;;;;;;;;;;;;;;;;;<br />
</var> <br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-89696596279510481612014-01-15T07:33:00.001-08:002014-01-15T07:33:25.316-08:00Sticky notesThe following script permit you to create sticky notes:<br />
<ul><li>press the "New" button to create a sticky note</li>
<li>press the X to delete a note</li>
<li>press the editor button to edit a note</li>
<li>press and continue to press the arrow resize a note</li>
</ul><br />
<a href="http://1.bp.blogspot.com/-I8agEII56kI/Utap5GNhBJI/AAAAAAAACR4/8b91bvaskFY/s1600/Stickynotes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="http://1.bp.blogspot.com/-I8agEII56kI/Utap5GNhBJI/AAAAAAAACR4/8b91bvaskFY/s320/Stickynotes.jpg" width="320" /></a><br />
Here is the source code:<br />
<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "Sticky Notes"<br />
Date: 10-Dec-2008<br />
File: %sticky-notes.r<br />
Purpose: {Simple but useful sticky note application.<br />
Click on New to create new note item.<br />
Use icons on note items to edit, delete & resize the item.<br />
Click on an item to move, hold CTRL to align.<br />
All notes will be saved (compressed) under %notes.dat when you<br />
click on Save or Quit.<br />
}<br />
Version: 1.0.0<br />
Author: "Endo"<br />
]<br />
<var class="dt-set-word">delete-img:</var> <var class="dt-function">make</var> <var class="dt-datatype">image!</var> [<var class="dt-pair">16x16</var> <var class="dt-binary">#{<br />
000000000000000000000000000000000000000000000000000000000000<br />
4A06065D0F10250C0C0603030000000000000000000000000000004A0C0C<br />
7F28284521210B0707000000000000480202A01918B74D4C6D3837211010<br />
060404000000000000000000490605A61816CF5B589158572517170C0202<br />
4702029F1312D65A55F1A499D76F60852C233115140E0A0A000000350302<br />
9A100BD93524F58F7DDF9990744644371010901312D6514AF5917FFE8769<br />
FA603DDD39229229253A1E1E00000033010190120AE4472CFE7D5DFB9E8A<br />
CD857E844645C05C56F48C78FE876AFB7556EB4B34CE1B109713123B1414<br />
0000000C00003306049C3024EE6D54FE8263F89F8CE49C93F2927FFD7F60<br />
F77358E24939C216108B02023F02020D02020000000000000800003A0907<br />
A73325F15433FE5E38FE6A49FD5C37F25336D93225B10C09700101290000<br />
0600000000000000000000000000003701007A0E07DB381BFE5027FF5228<br />
F94924DC3121A41211540101180000020000000000000000000000000000<br />
460101980804C72615F05D3FFA7D62FB8267FA6A4AE1442E812C28180909<br />
0101010000000000000000000000004801019F0905D42515F25539F16751<br />
DD473CDF5547F6775EF55838BD41324825230A0808000000000000000000<br />
4901019E0907D5291CEE5239E7513FCB261F9B08077F110EC54A3DF5684D<br />
ED4E32A33D34321D1D040404000000000000600202B81E18E65141DF4336<br />
BC17137D03023300001801015C130FC84A3DF3654CE14F3B883A35221616<br />
0403030000002F01017F1410C62823AA0E0C6201011F0000040000020000<br />
160101661512CD5145EF6855CE473D69302F110C0C0100000C0000300101<br />
5A02023F00001100000100000000000000000300001C0201711A16CB4139<br />
CE2B268C29291E0F0F000000000000050000070000040000000000000000<br />
0000000000000000000600002402026F08088505053F0707090303000000<br />
000000000000000000000000000000000000000000000000000000000000<br />
0900001E0000210000080000000000000000<br />
}</var> <var class="dt-binary">#{<br />
FFFFFFFFFFFFFFFFFFFF<br />
FCECF3FFFFFFFFFFFFFD<br />
EAE8FCFFFFFCD2859BE1<br />
FDFFFFFFFBD47977D6FD<br />
FCD163162170CCF6FFFC<br />
CE6115187BE0CF631201<br />
011155B9FFF6971D0102<br />
25785A11010000042A8F<br />
FFFCC9530B0004120B01<br />
0001082C7CCCFFFFF8BE<br />
4808000000000211459A<br />
DFFAFFFFFFF192190000<br />
00021B62B8EEFEFFFFFF<br />
FBCC5A0C0000000648C1<br />
F6FFFFFFFFFBCB5D1001<br />
020502022CA6F5FFFFFF<br />
FBCD5C10010622452304<br />
0748C2FAFFFFE7791202<br />
0C398CC58D25030E62D7<br />
FEFFED84181954AAE7FB<br />
E68720031982E9FFFDD0<br />
7C84C7F3FFFFFEE27C1B<br />
0744C8FCFFFBECEDFBFF<br />
FFFFFFFEDC784082DEFE<br />
FFFFFFFFFFFFFFFFFFFF<br />
FCDAB6DAFAFF<br />
}</var>]<br />
<var class="dt-set-word">edit-img:</var> <var class="dt-function">make</var> <var class="dt-datatype">image!</var> [<var class="dt-pair">16x16</var> <var class="dt-binary">#{<br />
000000000000000000000000010101070707090A09080908050605030302<br />
000000000000000000000000000000000000000000000000000000000000<br />
0C0D0D3E43414F55534B514D404641333834292C291F221F161815090A09<br />
0101010000000000000000000000000202022E3334949E9EA4AFAF9AA6A5<br />
8F9C9983908E7C898674807C67716B3F453D0C0C0A000000000000000000<br />
0000000F1212747E80D7E2E4DBE7E9CFDEE1BED1D5AAC3C898B7BD8BADB3<br />
83A4A86D7C77201F19010100000000000000030404394244B4C4C7E1F0F3<br />
E1F1F5DBEEF2CFE8EEBDDFE6A6D3DD92C8D48EC0CB82939029261E020101<br />
000000000000131819758A8ECAE1E6D4EBF0CDE8EEC8E5ECC0E2E9B2DBE4<br />
9FD2DD8FCAD79FCAD49199932D281D020201000000040606394B4F99BEC5<br />
B9DEE6C1E2E9BEE1E8B3DBE4A9D6E09FD2DD92CCD88FC8D5B1D1D894988F<br />
302A1D030201010101141F215F899292CAD5A0D2DDA9D7E1AAD7E1A3D4DE<br />
97CEDA8CC8D585C4D299CBD6C0D5DA92948B332C1D040301060B0C2C5057<br />
62AAB974BECE85C6D495CDD993CCD88FCAD688C6D37FC2D082C1CFADD3DB<br />
C4D4D78D8E83372E1C050401122C32317C8C44A5B94FACBF6DB9C981C2D0<br />
80C1D07CC0CE79BECC78BDCB8FC5D1BFD9DFC0CDD08787793A301B060502<br />
2466742790A62696AE309AB158ACBE6BB5C56CB5C56BB5C56AB5C575B8C7<br />
A4CCD5C5D9DFB8C4C6827F6E3F331C080603337685348EA13096AC399DB3<br />
55AABD5CACBE5BABBD5BAABC5EABBD7FB9C6B6D1D8C4D6DBAEB9BA7F7A65<br />
483A1F0B0804101F2219333928515A558C9773B1BE6DB3C363B0C15BACBD<br />
61ACBD96C1CBBED3D8C0D0D5A3AEAE7C755E4E40230D0A05000000010202<br />
080A0B2F36385966696F868B7A9EA57BABB688B7C1AFC9D0BED1D6BBC9CC<br />
919C9C5956483028180806030000000000000000000303030A0A0A171818<br />
2B2E2F454C4D656E70899294A2ACAF9CA5A65960611A1C1B060503010100<br />
0000000000000000000000000000000000000101010505050F0F0F212222<br />
3C3E3E3F4141161717020303000000000000<br />
}</var> <var class="dt-binary">#{<br />
FFFFFFFFFFF9F6FAFDFF<br />
FFFFFFFFFFFFFFFFFFFF<br />
F5B997A6B8C8D6E3EEF9<br />
FFFFFFFFFFFECD4C191E<br />
2936465974B0F0FFFFFF<br />
FFF08614010101020406<br />
0E3FC8FEFFFFFDC44208<br />
0000000000000020B4FD<br />
FFFFEB84280700000000<br />
0000001BABFCFFFBBF58<br />
2B080000000000000016<br />
A2FBFFE68B5031070000<br />
00000000001299F9F7BC<br />
6F5B3305000000000000<br />
000F8FF7D8906B612D03<br />
000000000000000C85F4<br />
996B65591F0100000000<br />
0000000A7BF17F635940<br />
0F000000000000000008<br />
70EDDCC5A25110030100<br />
00000000000866E5FFFE<br />
F3BC7B502E1609030001<br />
0C3E97ECFFFFFFFCF2E0<br />
C39D724929245CBAEEFE<br />
FFFFFFFFFFFFFEF9EBD2<br />
AEA2D4F8FFFF<br />
}</var>]<br />
<var class="dt-set-word">resize-img:</var> <var class="dt-function">make</var> <var class="dt-datatype">image!</var> [<var class="dt-pair">16x16</var> <var class="dt-binary">#{<br />
0000000000000000000000000000000000000000000E380E143714060C06<br />
000000000000000000000000000000000000000000000000000000000000<br />
0000000000000000000E660D2A77271A2D19060806000000000000000000<br />
000000000000000000000000000000000000000000000000041F04156F11<br />
66BA5B5D905621361F0A0D0A000000000000000000000000000000042704<br />
0D480C1446141848171A4F181F631C338E2CA1DC92AEE29E5A9A4C294426<br />
0E130E020302000000000000000000074B062B992466B05D82BA7D88C284<br />
89C78390D184BDEEAAC1F2A991DD7458A1472B4C280B100B010101000000<br />
0000000A610747B2319CDD80C3ECB0C7EEB5C2EFADB1EC959DE8779AE773<br />
9DE67980D55D56A4422A4E260D120D04040401210012770C50BB3074D145<br />
81D85484DC5782DD557CDC4C76DB4477D9457FD95379D54C6FCD4754A83F<br />
2C582917221703360220871461C43B72D04373D24474D34472D4426FD33D<br />
6DD23A71D2407DD55281D55675D14C4FBD352C9126234823054D03369B26<br />
83D4619CDE7A9DDE7C9BDE7993DB6F84D65A7BD34E8BD8649DDE7C8CD76C<br />
51BD3918970F085D07092109076F053DA82D7FD26590D87995DA7E98DB80<br />
9BDC80A3E085A2E083A4E0858BD76E4BBA37138E0C014F01001600000200<br />
0262010F680B1F8018248B1E2991212F972447AD3692D877AAE48E86D56A<br />
40B42E0E8609014300001000000100000000001400001100001900001D00<br />
012000023101277D1E8BD77182D66937B0280A7D06013800000B00000100<br />
000000000000000000000000000000000000000300022D012F8F2269CB53<br />
32AB25077204003000000800000000000000000000000000000000000000<br />
000000000000000000023F011994111FA016066804002500000500000000<br />
000000000000000000000000000000000000000000000000000000002C00<br />
026602025801001D00000300000000000000000000000000000000000000<br />
000000000000000000000000000000000D00001B00001200000200000000<br />
000000000000000000000000000000000000<br />
}</var> <var class="dt-binary">#{<br />
FFFFFFFFFFFFFFFCF5FC<br />
FFFFFFFFFFFFFFFFFFFF<br />
FFFFFFE4A5CFF9FFFFFF<br />
FFFFFFFFFFFFFFFFFEC4<br />
3E57C0F6FFFFFFFFFFFF<br />
F4E7DED9D1901C0C49B3<br />
F3FFFFFFFFF3A6635046<br />
3B240600093DA6EFFFFF<br />
FFDC5109040201010000<br />
00063299E9FEFDC12E01<br />
00000000000000000429<br />
8CDDF79B170000000000<br />
0000000000042B8EEB73<br />
0A000000000000000000<br />
010E47A1D65105010000<br />
0000000000011353B1EA<br />
E0793628211A0C010000<br />
021961BFF3FFFBE1C3B5<br />
AA97490600042170CBF7<br />
FFFFFFFFFEFCFAE66807<br />
062B81D5F9FFFFFFFFFF<br />
FFFFFFE1560D3692DFFC<br />
FFFFFFFFFFFFFFFFFFE6<br />
734FA1E7FDFFFFFFFFFF<br />
FFFFFFFFFFF9CEBFEAFE<br />
FFFFFFFFFFFF<br />
}</var>]<br />
<var class="dt-function">random/seed</var> <var class="dt-function">now</var><br />
<var class="dt-set-word">base-face:</var> <var class="dt-function">make</var> face [<br />
<var class="dt-set-word">size:</var> <var class="dt-pair">200x80</var><br />
<var class="dt-set-word">offset:</var> <var class="dt-pair">100x100</var><br />
<var class="dt-set-word">text:</var> <var class="dt-string">"New Note"</var><br />
<var class="dt-set-word">color:</var> white<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var> <var class="dt-set-word">color:</var> black]<br />
<var class="dt-set-word">effect:</var> [gradient <var class="dt-pair">0x1</var>]<br />
<var class="dt-set-word">indent:</var> <var class="dt-pair">3x2</var><br />
<var class="dt-set-word">data:</var> true <var class="dt-cmt">;means this is a notes item<br />
</var> <var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<br />
<var class="dt-set-word">name:</var> <var class="dt-string">"Verdana"</var><br />
<var class="dt-set-word">size:</var> <var class="dt-integer">12</var><br />
<var class="dt-set-word">style:</var> [bold]<br />
<var class="dt-set-word">color:</var> white<br />
<var class="dt-set-word">align:</var> <var class="dt-lit-word">'left</var><br />
<var class="dt-set-word">valign:</var> <var class="dt-lit-word">'top</var><br />
<var class="dt-set-word">space:</var> <var class="dt-pair">0x0</var><br />
<var class="dt-set-word">shadow:</var> <var class="dt-pair">1x1</var><br />
]<br />
]<br />
<var class="dt-cmt">;I took this function from %chess-board.r<br />
</var><var class="dt-set-word">move-to-end:</var> <var class="dt-function">func</var> [series item <var class="dt-refinement">/local</var> item-index item-value] [<br />
<var class="dt-set-word">item-index:</var> <var class="dt-function">find</var> series item<br />
<var class="dt-set-word">item-value:</var> <var class="dt-function">first</var> item-index<br />
<var class="dt-function">remove</var> item-index<br />
<var class="dt-function">append</var> series item-value<br />
<var class="dt-function">show</var> <var class="dt-function">last</var> series<br />
<var class="dt-function">show</var> item-value<br />
]<br />
<var class="dt-set-word">button-face:</var> <var class="dt-function">make</var> face [<br />
<var class="dt-set-word">size:</var> <var class="dt-pair">16x16</var><br />
<var class="dt-set-word">color:</var> none<br />
<var class="dt-set-word">edge:</var> none<br />
]<br />
<var class="dt-set-word">drag-feel:</var> <var class="dt-function">make</var> face/feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> [down] a [move-to-end main-window/pane f <var class="dt-set-word">data:</var> e/offset <var class="dt-set-word">mode:</var> <var class="dt-lit-word">'move</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> [alt-down] a [move-to-end main-window/pane f <var class="dt-set-word">data:</var> e/offset <var class="dt-function">-</var> f/para/scroll <var class="dt-set-word">mode:</var> <var class="dt-lit-word">'scroll</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> [over away] a [<br />
<var class="dt-function">if/else</var> mode <var class="dt-function">=</var> <var class="dt-lit-word">'move</var> [<br />
<var class="dt-set-path">f/offset:</var> f/offset <var class="dt-function">+</var> e/offset <var class="dt-function">-</var> data<br />
<var class="dt-function">if</var> e/control [ <var class="dt-cmt">;snap to grid<br />
</var> <var class="dt-set-path">f/offset:</var> (f/offset <var class="dt-function">/</var> <var class="dt-integer">10</var>) <var class="dt-function">*</var> <var class="dt-integer">10</var><br />
]<br />
] [<br />
<var class="dt-set-path">f/para/scroll:</var> <var class="dt-function">to-pair</var> <var class="dt-function">reduce</var> [<var class="dt-integer">0</var> <var class="dt-function">second</var> e/offset <var class="dt-function">-</var> data]<br />
]<br />
<var class="dt-function">show</var> f<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">delete-feel:</var> <var class="dt-function">make</var> face/feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'down</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">request/confirm</var> <var class="dt-string">"Delete Item?"</var> [<br />
<var class="dt-function">remove</var> <var class="dt-function">find</var> main-window/pane f/parent-face<br />
<var class="dt-function">show</var> main-window<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">resize-feel:</var> <var class="dt-function">make</var> face/feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> [down alt-down] a [<var class="dt-set-word">data:</var> e/offset]<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> [over away] a [<br />
<var class="dt-set-word">old-size:</var> f/parent-face/size<br />
<var class="dt-set-path">f/parent-face/size:</var> f/parent-face/size <var class="dt-function">+</var> e/offset <var class="dt-function">-</var> data<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [f/parent-face/size/x <var class="dt-function"><</var> <var class="dt-integer">60</var> f/parent-face/size/y <var class="dt-function"><</var> <var class="dt-integer">40</var>] [<var class="dt-set-path">f/parent-face/size:</var> old-size ]<br />
<var class="dt-set-word">data:</var> e/offset<br />
<var class="dt-set-path">f/parent-face/line-list:</var> none <var class="dt-cmt">;if you remove this word wrap won't work if text length > 200 <br />
</var> <var class="dt-function">show</var> f/parent-face<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">edit-feel:</var> <var class="dt-function">make</var> face/feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'down</var> [<br />
<var class="dt-set-path">edit-area/text:</var> <var class="dt-function">copy</var> f/parent-face/text<br />
<var class="dt-function">inform/offset/title</var> edit-window (main-window/offset <var class="dt-function">+</var> f/parent-face/offset <var class="dt-function">+</var> <var class="dt-pair">30x50</var>) <var class="dt-string">"Enter Note"</var><br />
<var class="dt-function">if</var> edit-area/text <var class="dt-function"><></var> <var class="dt-string">"_cancel_"</var> [<br />
<var class="dt-set-path">f/parent-face/text:</var> <var class="dt-function">copy</var> edit-area/text<br />
<var class="dt-set-path">f/parent-face/line-list:</var> none<br />
<var class="dt-function">show</var> f/parent-face<br />
save-note-list<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">add-new-item:</var> <var class="dt-function">func</var> [item [<var class="dt-datatype">block!</var>]] [<br />
<var class="dt-function">append</var> main-window/pane <var class="dt-function">make</var> base-face [<br />
<var class="dt-set-word">feel:</var> drag-feel <var class="dt-set-word">offset:</var> item/1 <var class="dt-set-word">size:</var> item/2 <var class="dt-set-word">color:</var> item/3 <var class="dt-set-word">text:</var> item/4<br />
<var class="dt-set-word">para:</var> <var class="dt-function">make</var> para [<br />
<var class="dt-set-word">origin:</var> <var class="dt-pair">2x16</var><br />
<var class="dt-cmt">;indent: 10x10<br />
</var> <var class="dt-set-word">wrap?:</var> on<br />
]<br />
<var class="dt-set-word">pane:</var> <var class="dt-function">reduce</var> [<br />
<var class="dt-cmt">;delete button<br />
</var> <var class="dt-function">make</var> button-face [<br />
<var class="dt-set-word">image:</var> delete-img<br />
<var class="dt-set-word">offset:</var> <var class="dt-pair">0x0</var><br />
<var class="dt-set-word">feel:</var> delete-feel<br />
]<br />
<var class="dt-cmt">;edit button<br />
</var> <var class="dt-function">make</var> button-face [<br />
<var class="dt-set-word">image:</var> edit-img<br />
<var class="dt-set-word">offset:</var> <var class="dt-pair">16x0</var><br />
<var class="dt-set-word">feel:</var> edit-feel<br />
]<br />
<var class="dt-cmt">;resize button<br />
</var> <var class="dt-function">make</var> button-face [<br />
<var class="dt-set-word">image:</var> resize-img<br />
<var class="dt-set-word">offset:</var> <var class="dt-pair">32x0</var><br />
<var class="dt-set-word">feel:</var> resize-feel<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">load-note-list:</var> <var class="dt-function">does</var> [<br />
<var class="dt-function">foreach</var> item items [<br />
add-new-item <var class="dt-function">to-block</var> item<br />
]<br />
]<br />
<var class="dt-set-word">save-note-list:</var> <var class="dt-function">has</var> [f] [<br />
<var class="dt-set-word">items:</var> <var class="dt-function">copy</var> []<br />
<var class="dt-function">foreach</var> f main-window/pane [<br />
<var class="dt-function">if</var> f/data [<br />
<var class="dt-function">append/only</var> items <var class="dt-function">reduce</var> [f/offset f/size f/color f/text]<br />
]<br />
]<br />
<var class="dt-function">save</var> <var class="dt-file">%notes.dat</var> <var class="dt-function">compress</var> <var class="dt-function">mold</var> items<br />
<var class="dt-cmt">;save %notes.dat items ;uncompressed file<br />
</var>]<br />
<var class="dt-set-word">edit-window:</var> <var class="dt-function">layout</var> [<br />
backcolor <var class="dt-tuple">120.140.120</var><br />
backeffect [grid <var class="dt-tuple">110.130.110</var>]<br />
<var class="dt-set-word">edit-area:</var> area wrap <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
across<br />
button <var class="dt-string">"OK"</var> [<var class="dt-function">hide-popup</var>]<br />
button <var class="dt-string">"Cancel"</var> [<var class="dt-set-path">edit-area/text:</var> <var class="dt-function">copy</var> <var class="dt-string">"_cancel_"</var> <var class="dt-function">hide-popup</var>]<br />
]<br />
<var class="dt-set-word">main-window:</var> <var class="dt-function">layout</var> [<br />
size <var class="dt-pair">800x600</var><br />
backcolor <var class="dt-tuple">100.120.100</var><br />
backeffect [grid <var class="dt-pair">10x10</var> <var class="dt-tuple">110.130.110</var>]<br />
across<br />
button <var class="dt-string">"New"</var> [add-new-item <var class="dt-function">reduce</var> [<var class="dt-pair">100x100</var> <var class="dt-pair">200x80</var> <var class="dt-function">random</var> <var class="dt-tuple">255.255.255</var> <var class="dt-string">"New Note"</var>] <var class="dt-function">show</var> main-window]<br />
button <var class="dt-string">"Save"</var> [save-note-list]<br />
button <var class="dt-string">"Quit"</var> [save-note-list <var class="dt-function">quit</var>]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-set-word">items:</var> <var class="dt-function">attempt</var> [<var class="dt-function">load</var> <var class="dt-function">decompress</var> <var class="dt-function">load</var> <var class="dt-file">%notes.dat</var>] [load-note-list]<br />
<var class="dt-cmt">;if items: attempt [load %notes.dat] [load-note-list] ;load from uncompressed file<br />
</var><br />
<var class="dt-function">view</var> main-window<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-33099829270591858292013-12-17T05:57:00.002-08:002013-12-17T05:57:39.146-08:00Steganography 2Do you remember my old post about steganography? It's here: <a href="http://rebol.informe.com/blog/2012/10/10/steganography/">http://rebol.informe.com/blog/2012/10/10/steganography/</a><br />
<br />
Now I'll sow you another post, but it's all line command driven. Let's see an example:<br />
<code><br />
message: "I love Steganography!!"<br />
key: "1234"<br />
<br />
img: img-load-or-create %test.png<br />
img-save %crypted.png (img-encode message key img)<br />
</code><br />
<br />
Now image file <b>crypted.png</b> contains a secret message. To retrieve your message:<br />
<br />
<code><br />
img: img-load-or-create %crypted.png<br />
print img-decode key img</code><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "Steganography"<br />
Description: "Ukrywanie informacji tekstowych w plikach graficznych"<br />
Purpose: "Functions to hide text data in the noise pixels of an image"<br />
Date: 2007/01/10<br />
Version: 1.1.0<br />
Author: "Piotr Gapinski"<br />
Email: {news [at] rowery! olsztyn.pl}<br />
File: %steganography.r<br />
Url: http://www.rowery.olsztyn.pl/wspolpraca/rebol/steganography/<br />
Copyright: "Olsztynska Strona Rowerowa http://www.rowery.olsztyn.pl"<br />
License: "GNU Lesser General Public License (Version 2.1)"<br />
]<br />
<var class="dt-set-word">ctx-steganography:</var> <var class="dt-function">context</var> [<br />
<var class="dt-set-word">greyscale:</var> false<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'img-load-or-create</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Wczytuje plik graficzny lub tworzy obrazek o kolorze bialym."</var><br />
imgname [<var class="dt-datatype">string!</var> <var class="dt-datatype">file!</var>] <var class="dt-string">"nazwa pliku do wczytania"</var>] [<br />
<var class="dt-function">any</var> [<br />
<var class="dt-function">attempt</var> [<var class="dt-function">load</var> <var class="dt-function">to-file</var> imgname]<br />
<var class="dt-function">make</var> <var class="dt-datatype">image!</var> <var class="dt-function">reduce</var> [<var class="dt-pair">300x300</var> white]<br />
]<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'img-save-png</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Zapisuje dane graficzne do pliku PNG"</var><br />
imgname [<var class="dt-datatype">string!</var> <var class="dt-datatype">file!</var>] <var class="dt-string">"nazwa pliku"</var><br />
img [<var class="dt-datatype">image!</var>] <var class="dt-string">"dane grafine do zapisania"</var>] [<br />
<br />
<var class="dt-function">save/png</var> (<var class="dt-function">to-file</var> imgname) img<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'img-encode</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Koduje wiadomosc kluczem i umieszcza w pliku graficznym."</var><br />
text [<var class="dt-datatype">string!</var>] <var class="dt-string">"wiadomosc do zakodowania"</var><br />
key [<var class="dt-datatype">string!</var>] <var class="dt-string">"klucz prywatny kodowanych danych"</var><br />
img [<var class="dt-datatype">image!</var>] <var class="dt-string">"obrazek w ktorym beda umieszczone dane"</var><br />
<var class="dt-refinement">/local</var> text-len rgb r g b key-len key-index color-index byte k color i] [<br />
<br />
<var class="dt-set-word">text-len:</var> <var class="dt-function">length?</var> text<br />
<br />
<var class="dt-cmt">;; zakoduj d&#322;ugosc wiadomosci w pierwszym pixelu<br />
</var> <var class="dt-set-word">pixel:</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">rgb:</var> <var class="dt-function">to-tuple</var> <var class="dt-function">reduce</var> [ <br />
<var class="dt-set-word">r:</var> <var class="dt-function">to-integer</var> (text-len <var class="dt-function">/</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">2</var>)<br />
<var class="dt-set-word">g:</var> <var class="dt-function">to-integer</var> (text-len <var class="dt-function">-</var> (r <var class="dt-function">*</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">2</var>)) <var class="dt-function">/</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">b:</var> <var class="dt-function">to-integer</var> (text-len <var class="dt-function">-</var> (r <var class="dt-function">*</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">2</var>) <var class="dt-function">-</var> (g <var class="dt-function">*</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">1</var>))<br />
]<br />
<var class="dt-function">poke</var> img pixel rgb<br />
<br />
<var class="dt-set-word">key-len:</var> <var class="dt-function">length?</var> key<br />
<var class="dt-set-word">key-index:</var> <var class="dt-set-word">color-index:</var> <var class="dt-set-word">i:</var> <var class="dt-integer">1</var> <var class="dt-cmt">;; skladowa rgb w ktorej bedzie umieszczony zakodowany bajt<br />
</var> <br />
<var class="dt-function">foreach</var> byte text [<br />
<var class="dt-set-word">pixel:</var> pixel <var class="dt-function">+</var> (<var class="dt-function">to-integer</var> key/:key-index)<br />
<var class="dt-set-word">rgb:</var> img/:pixel<br />
<br />
<var class="dt-set-word">crypted-value:</var> <var class="dt-function">to-integer</var> (byte <var class="dt-function">xor</var> key/:key-index)<br />
<var class="dt-function">either</var> greyscale [<br />
<var class="dt-set-word">rgb:</var> <var class="dt-function">to-tuple</var> <var class="dt-function">reduce</var> [crypted-value crypted-value crypted-value]<br />
][<var class="dt-set-word">rgb:</var> <var class="dt-function">poke</var> rgb color-index crypted-value ]<br />
<var class="dt-function">poke</var> img pixel rgb<br />
<br />
<var class="dt-set-word">key-index:</var> (i <var class="dt-function">//</var> key-len) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">color-index:</var> (i <var class="dt-function">//</var> <var class="dt-integer">3</var>) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">i:</var> i <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
]<br />
<var class="dt-function">return</var> img<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'img-decode</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Rozkodowuje wiadomosc z pliku graficznego na podstawie klucza."</var><br />
key [<var class="dt-datatype">string!</var>] <var class="dt-string">"klucz prywatny zakodowanych danych"</var><br />
img [<var class="dt-datatype">image!</var>] <var class="dt-string">"obrazek zawierajacy zakodowane dane"</var><br />
<var class="dt-refinement">/local</var> text pixel text-len key-len key-index color-index i] [<br />
<var class="dt-cmt">;; d&#322;ugosc wiadomosci jest zakodowana w pierwszym pixelu<br />
</var> <var class="dt-set-word">pixel:</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">text:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-set-word">text-len:</var> <var class="dt-function">to-integer</var> ((img/:pixel/1 <var class="dt-function">*</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">2</var>) <var class="dt-function">+</var> (img/:pixel/2 <var class="dt-function">*</var> <var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">1</var>) <var class="dt-function">+</var> img/:pixel/3)<br />
<var class="dt-set-word">key-len:</var> <var class="dt-function">length?</var> key<br />
<var class="dt-set-word">key-index:</var> <var class="dt-set-word">color-index:</var> <var class="dt-set-word">i:</var> <var class="dt-integer">1</var> <var class="dt-cmt">;; skladowa rgb w ktorej bedzie umieszczony zakodowany bajt<br />
</var> <br />
<var class="dt-function">loop</var> text-len [<br />
<var class="dt-set-word">pixel:</var> pixel <var class="dt-function">+</var> <var class="dt-function">to-integer</var> key/:key-index<br />
<var class="dt-set-word">byte:</var> img/:pixel/:color-index<br />
<var class="dt-function">append</var> text (<var class="dt-function">to-char</var> byte) <var class="dt-function">xor</var> key/:key-index<br />
<br />
<var class="dt-set-word">key-index:</var> (i <var class="dt-function">//</var> key-len) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">color-index:</var> (i <var class="dt-function">//</var> <var class="dt-integer">3</var>) <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-set-word">i:</var> i <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
]<br />
<var class="dt-function">return</var> text<br />
]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-73205723358748237382013-12-02T06:32:00.001-08:002013-12-02T06:32:48.235-08:00Placing an image on a sphereRebol programmers continue to surprise me, the following script can place any image on the surface of a rotating 3D sphere! Mr. Phil Bevan is a 3D master!<br />
<br />
<a href="http://4.bp.blogspot.com/-l3FFQVoMv7Q/UpySlunXQ7I/AAAAAAAACRQ/SoFNskM3hF0/s1600/Sphere.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-l3FFQVoMv7Q/UpySlunXQ7I/AAAAAAAACRQ/SoFNskM3hF0/s320/Sphere.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> rebol [<br />
Title: "Mapping a picture onto a 3D Sphere"<br />
Date: 19-Feb-2006<br />
File: %sphere.r<br />
Version: 1.0.1<br />
Email: phil.bevan@gmail.com<br />
Category: [demo]<br />
License: {Copyright (c) <2006>, <Phil Bevan><br />
All rights reserved.<br />
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:<br />
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. <br />
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. <br />
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />
}<br />
Purpose: " A 3D Perspective demo"<br />
license: 'mit<br />
History: [<br />
0.0.1 - Initial Version<br />
1.0.0 - Initial Release<br />
1.0.1 - Allow selection of Image<br />
2.0.1 - start with earth image ; by Massimiliano Vessi<br />
]<br />
]<br />
<var class="dt-set-word">objs:</var> [<br />
[<br />
[<var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">340</var> <var class="dt-integer">135</var>] [[<var class="dt-decimal">0.418113853070614</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.408977062214588</var> <var class="dt-decimal">8.69307581462395E-2</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.381966011250105</var> <var class="dt-decimal">0.17006222502143</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.338261212717716</var> <var class="dt-decimal">0.245761156614089</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.279772776032178</var> <var class="dt-decimal">0.310719146369842</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.209056926535307</var> <var class="dt-decimal">0.362097218433346</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.12920428618241</var> <var class="dt-decimal">0.397649904516082</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">4.37047985323887E-2</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-4.37047985323888E-2</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.129204286182409</var> <var class="dt-decimal">0.397649904516082</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.209056926535307</var> <var class="dt-decimal">0.362097218433346</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.279772776032178</var> <var class="dt-decimal">0.310719146369842</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.338261212717716</var> <var class="dt-decimal">0.245761156614089</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.381966011250105</var> <var class="dt-decimal">0.17006222502143</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.408977062214588</var> <var class="dt-decimal">8.69307581462395E-2</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.418113853070614</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.408977062214588</var> <var class="dt-decimal">-8.69307581462397E-2</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.381966011250105</var> <var class="dt-decimal">-0.17006222502143</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.338261212717716</var> <var class="dt-decimal">-0.245761156614089</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.279772776032178</var> <var class="dt-decimal">-0.310719146369842</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.209056926535307</var> <var class="dt-decimal">-0.362097218433346</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-0.129204286182409</var> <var class="dt-decimal">-0.397649904516082</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">-4.37047985323886E-2</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">4.3704798532389E-2</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.12920428618241</var> <var class="dt-decimal">-0.397649904516082</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.209056926535307</var> <var class="dt-decimal">-0.362097218433346</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.279772776032178</var> <var class="dt-decimal">-0.310719146369842</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.338261212717716</var> <var class="dt-decimal">-0.245761156614089</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.381966011250105</var> <var class="dt-decimal">-0.17006222502143</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.408977062214588</var> <var class="dt-decimal">-8.69307581462396E-2</var> <var class="dt-decimal">3.97808758147309</var>] [<var class="dt-decimal">0.967687582398671</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.946541286983157</var> <var class="dt-decimal">0.201193561439857</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.884026595317456</var> <var class="dt-decimal">0.393593998810972</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.782875699406132</var> <var class="dt-decimal">0.568792489760496</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.64750937877636</var> <var class="dt-decimal">0.719132019538302</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.483843791199336</var> <var class="dt-decimal">0.838042029283996</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.299031908206797</var> <var class="dt-decimal">0.920325580978159</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.101150895911324</var> <var class="dt-decimal">0.962386488571468</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.101150895911324</var> <var class="dt-decimal">0.962386488571468</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.299031908206796</var> <var class="dt-decimal">0.920325580978159</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.483843791199335</var> <var class="dt-decimal">0.838042029283996</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.64750937877636</var> <var class="dt-decimal">0.719132019538302</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.782875699406132</var> <var class="dt-decimal">0.568792489760496</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.884026595317456</var> <var class="dt-decimal">0.393593998810972</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.946541286983157</var> <var class="dt-decimal">0.201193561439857</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.967687582398671</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.946541286983157</var> <var class="dt-decimal">-0.201193561439858</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.884026595317456</var> <var class="dt-decimal">-0.393593998810972</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.782875699406132</var> <var class="dt-decimal">-0.568792489760496</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.64750937877636</var> <var class="dt-decimal">-0.719132019538302</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.483843791199336</var> <var class="dt-decimal">-0.838042029283996</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.299031908206796</var> <var class="dt-decimal">-0.920325580978159</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">-0.101150895911324</var> <var class="dt-decimal">-0.962386488571468</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.101150895911324</var> <var class="dt-decimal">-0.962386488571468</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.299031908206797</var> <var class="dt-decimal">-0.920325580978159</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.483843791199336</var> <var class="dt-decimal">-0.838042029283996</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.64750937877636</var> <var class="dt-decimal">-0.719132019538302</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.782875699406132</var> <var class="dt-decimal">-0.568792489760496</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.884026595317456</var> <var class="dt-decimal">-0.393593998810972</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">0.946541286983157</var> <var class="dt-decimal">-0.201193561439858</var> <var class="dt-decimal">3.88118290510399</var>] [<var class="dt-decimal">1.49842637366365</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.46568216227535</var> <var class="dt-decimal">0.311540360914333</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.3688806072723</var> <var class="dt-decimal">0.609464913120197</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.21225240111352</var> <var class="dt-decimal">0.880752924085583</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.00264294799366</var> <var class="dt-decimal">1.113547805947</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.749213186831824</var> <var class="dt-decimal">1.29767530529331</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.463039214281692</var> <var class="dt-decimal">1.42508816686133</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.156628206158784</var> <var class="dt-decimal">1.49021783720578</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.156628206158784</var> <var class="dt-decimal">1.49021783720578</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.463039214281692</var> <var class="dt-decimal">1.42508816686133</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.749213186831824</var> <var class="dt-decimal">1.29767530529331</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.00264294799366</var> <var class="dt-decimal">1.113547805947</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.21225240111352</var> <var class="dt-decimal">0.880752924085583</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.3688806072723</var> <var class="dt-decimal">0.609464913120197</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.46568216227535</var> <var class="dt-decimal">0.311540360914333</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.49842637366365</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.46568216227535</var> <var class="dt-decimal">-0.311540360914333</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.3688806072723</var> <var class="dt-decimal">-0.609464913120197</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.21225240111352</var> <var class="dt-decimal">-0.880752924085583</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-1.00264294799366</var> <var class="dt-decimal">-1.113547805947</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.749213186831824</var> <var class="dt-decimal">-1.29767530529331</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.463039214281692</var> <var class="dt-decimal">-1.42508816686133</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">-0.156628206158783</var> <var class="dt-decimal">-1.49021783720578</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.156628206158785</var> <var class="dt-decimal">-1.49021783720578</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.463039214281692</var> <var class="dt-decimal">-1.42508816686133</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">0.749213186831824</var> <var class="dt-decimal">-1.29767530529331</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.00264294799366</var> <var class="dt-decimal">-1.113547805947</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.21225240111352</var> <var class="dt-decimal">-0.880752924085583</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.3688806072723</var> <var class="dt-decimal">-0.609464913120196</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">1.46568216227535</var> <var class="dt-decimal">-0.311540360914333</var> <var class="dt-decimal">3.70873541826715</var>] [<var class="dt-decimal">2.0</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.8270909152852</var> <var class="dt-decimal">0.8134732861516</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.61803398874989</var> <var class="dt-decimal">1.17557050458495</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.33826121271772</var> <var class="dt-decimal">1.48628965095479</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">1.73205080756888</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">0.618033988749895</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">0.209056926535307</var> <var class="dt-decimal">1.98904379073655</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-0.209056926535307</var> <var class="dt-decimal">1.98904379073655</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-0.618033988749895</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-0.999999999999999</var> <var class="dt-decimal">1.73205080756888</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.33826121271772</var> <var class="dt-decimal">1.48628965095479</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">1.17557050458495</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.8270909152852</var> <var class="dt-decimal">0.813473286151601</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-2.0</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.8270909152852</var> <var class="dt-decimal">-0.813473286151601</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">-1.17557050458495</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.33826121271772</var> <var class="dt-decimal">-1.48628965095479</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">-1.73205080756888</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-0.618033988749895</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">-0.209056926535306</var> <var class="dt-decimal">-1.98904379073655</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">0.209056926535308</var> <var class="dt-decimal">-1.98904379073655</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">0.618033988749895</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">-1.73205080756888</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.33826121271772</var> <var class="dt-decimal">-1.48628965095479</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.61803398874989</var> <var class="dt-decimal">-1.17557050458495</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.8270909152852</var> <var class="dt-decimal">-0.8134732861516</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">3.46410161513775</var>] [<var class="dt-decimal">2.46264590130263</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">2.40883117981611</var> <var class="dt-decimal">0.512012873225255</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">2.24973897691719</var> <var class="dt-decimal">1.00164832698021</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.99232238528164</var> <var class="dt-decimal">1.44750694240419</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.64783174518579</var> <var class="dt-decimal">1.83010255853617</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.23132295065132</var> <var class="dt-decimal">2.13271391105371</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">0.760999434630323</var> <var class="dt-decimal">2.34211543176142</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">0.25741659163555</var> <var class="dt-decimal">2.4491552693844</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-0.25741659163555</var> <var class="dt-decimal">2.4491552693844</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-0.760999434630323</var> <var class="dt-decimal">2.34211543176142</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.23132295065132</var> <var class="dt-decimal">2.13271391105371</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.64783174518579</var> <var class="dt-decimal">1.83010255853617</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.99232238528164</var> <var class="dt-decimal">1.44750694240419</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-2.24973897691719</var> <var class="dt-decimal">1.00164832698021</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-2.40883117981611</var> <var class="dt-decimal">0.512012873225255</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-2.46264590130263</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-2.40883117981611</var> <var class="dt-decimal">-0.512012873225256</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-2.24973897691719</var> <var class="dt-decimal">-1.00164832698021</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.99232238528164</var> <var class="dt-decimal">-1.44750694240419</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.64783174518579</var> <var class="dt-decimal">-1.83010255853617</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-1.23132295065132</var> <var class="dt-decimal">-2.1327139110537</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-0.760999434630323</var> <var class="dt-decimal">-2.34211543176142</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">-0.257416591635549</var> <var class="dt-decimal">-2.4491552693844</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">0.257416591635551</var> <var class="dt-decimal">-2.4491552693844</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">0.760999434630323</var> <var class="dt-decimal">-2.34211543176142</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.23132295065132</var> <var class="dt-decimal">-2.1327139110537</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.64783174518579</var> <var class="dt-decimal">-1.83010255853617</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">1.99232238528164</var> <var class="dt-decimal">-1.44750694240419</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">2.24973897691719</var> <var class="dt-decimal">-1.00164832698021</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">2.40883117981611</var> <var class="dt-decimal">-0.512012873225256</var> <var class="dt-decimal">3.15204301442689</var>] [<var class="dt-decimal">2.8773592013546</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.81448199925435</var> <var class="dt-decimal">0.598236616643673</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.62859842840364</var> <var class="dt-decimal">1.17032742248224</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.327832492817</var> <var class="dt-decimal">1.69126930410429</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">1.92532910711465</var> <var class="dt-decimal">2.13829460152644</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">1.4386796006773</var> <var class="dt-decimal">2.49186616418599</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">0.889152892139699</var> <var class="dt-decimal">2.73653121817012</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">0.300765935586639</var> <var class="dt-decimal">2.86159672658652</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-0.30076593558664</var> <var class="dt-decimal">2.86159672658652</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-0.889152892139699</var> <var class="dt-decimal">2.73653121817012</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-1.4386796006773</var> <var class="dt-decimal">2.49186616418599</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-1.92532910711465</var> <var class="dt-decimal">2.13829460152644</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.327832492817</var> <var class="dt-decimal">1.69126930410429</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.62859842840364</var> <var class="dt-decimal">1.17032742248224</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.81448199925435</var> <var class="dt-decimal">0.598236616643673</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.8773592013546</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.81448199925435</var> <var class="dt-decimal">-0.598236616643675</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.62859842840364</var> <var class="dt-decimal">-1.17032742248224</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-2.327832492817</var> <var class="dt-decimal">-1.69126930410429</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-1.92532910711465</var> <var class="dt-decimal">-2.13829460152644</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-1.4386796006773</var> <var class="dt-decimal">-2.49186616418599</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-0.889152892139699</var> <var class="dt-decimal">-2.73653121817012</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">-0.300765935586638</var> <var class="dt-decimal">-2.86159672658652</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">0.300765935586641</var> <var class="dt-decimal">-2.86159672658652</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">0.889152892139699</var> <var class="dt-decimal">-2.73653121817012</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">1.4386796006773</var> <var class="dt-decimal">-2.49186616418599</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">1.92532910711465</var> <var class="dt-decimal">-2.13829460152644</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.327832492817</var> <var class="dt-decimal">-1.69126930410429</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.62859842840364</var> <var class="dt-decimal">-1.17032742248224</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">2.81448199925435</var> <var class="dt-decimal">-0.598236616643674</var> <var class="dt-decimal">2.77863348183599</var>] [<var class="dt-decimal">3.23606797749979</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">0.672816364803188</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.95629520146761</var> <var class="dt-decimal">1.31622742593336</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.16535212800292</var> <var class="dt-decimal">2.40486717237207</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">1.6180339887499</var> <var class="dt-decimal">2.80251707688815</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">3.07768353717525</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">0.338261212717716</var> <var class="dt-decimal">3.21834045852367</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-0.338261212717717</var> <var class="dt-decimal">3.21834045852367</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">3.07768353717525</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">2.80251707688815</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.16535212800292</var> <var class="dt-decimal">2.40486717237207</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.95629520146761</var> <var class="dt-decimal">1.31622742593336</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">0.672816364803188</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-3.23606797749979</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">-0.672816364803189</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.95629520146761</var> <var class="dt-decimal">-1.31622742593336</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-2.16535212800292</var> <var class="dt-decimal">-2.40486717237207</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-1.6180339887499</var> <var class="dt-decimal">-2.80251707688815</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">-3.07768353717525</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">-0.338261212717715</var> <var class="dt-decimal">-3.21834045852367</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">0.338261212717719</var> <var class="dt-decimal">-3.21834045852367</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">-3.07768353717525</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">1.6180339887499</var> <var class="dt-decimal">-2.80251707688815</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.16535212800292</var> <var class="dt-decimal">-2.40486717237207</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">2.95629520146761</var> <var class="dt-decimal">-1.31622742593336</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">-0.672816364803189</var> <var class="dt-decimal">2.35114100916989</var>] [<var class="dt-decimal">3.53179037143571</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">3.45461227811459</var> <var class="dt-decimal">0.73430050773908</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">3.22645105117096</var> <var class="dt-decimal">1.43650855972519</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">2.8572784310613</var> <var class="dt-decimal">2.07593429451846</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">2.36322903277115</var> <var class="dt-decimal">2.62463173920333</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">1.76589518571785</var> <var class="dt-decimal">3.0586201825046</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">1.09138324534344</var> <var class="dt-decimal">3.35893224694241</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">0.36917262010967</var> <var class="dt-decimal">3.51244285424366</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-0.36917262010967</var> <var class="dt-decimal">3.51244285424366</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-1.09138324534344</var> <var class="dt-decimal">3.35893224694241</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-1.76589518571785</var> <var class="dt-decimal">3.0586201825046</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-2.36322903277115</var> <var class="dt-decimal">2.62463173920333</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-2.8572784310613</var> <var class="dt-decimal">2.07593429451847</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-3.22645105117096</var> <var class="dt-decimal">1.43650855972519</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-3.45461227811459</var> <var class="dt-decimal">0.73430050773908</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-3.53179037143571</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-3.45461227811459</var> <var class="dt-decimal">-0.734300507739082</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-3.22645105117096</var> <var class="dt-decimal">-1.43650855972519</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-2.8572784310613</var> <var class="dt-decimal">-2.07593429451847</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-2.36322903277115</var> <var class="dt-decimal">-2.62463173920333</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-1.76589518571785</var> <var class="dt-decimal">-3.0586201825046</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-1.09138324534344</var> <var class="dt-decimal">-3.35893224694241</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">-0.369172620109668</var> <var class="dt-decimal">-3.51244285424366</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">0.369172620109672</var> <var class="dt-decimal">-3.51244285424366</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">1.09138324534344</var> <var class="dt-decimal">-3.35893224694241</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">1.76589518571785</var> <var class="dt-decimal">-3.0586201825046</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">2.36322903277115</var> <var class="dt-decimal">-2.62463173920333</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">2.8572784310613</var> <var class="dt-decimal">-2.07593429451846</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">3.22645105117097</var> <var class="dt-decimal">-1.43650855972519</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">3.45461227811459</var> <var class="dt-decimal">-0.734300507739081</var> <var class="dt-decimal">1.87788625114356</var>] [<var class="dt-decimal">3.75877048314363</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.67663232979599</var> <var class="dt-decimal">0.781492326546279</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.43380770119695</var> <var class="dt-decimal">1.52882968840625</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.04090919881813</var> <var class="dt-decimal">2.20934985674408</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">2.51510837254968</var> <var class="dt-decimal">2.79331083470536</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">1.87938524157182</var> <var class="dt-decimal">3.25519072539749</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">1.16152395724631</var> <var class="dt-decimal">3.57480316125163</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">0.392898502378819</var> <var class="dt-decimal">3.73817954515033</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-0.39289850237882</var> <var class="dt-decimal">3.73817954515033</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-1.16152395724631</var> <var class="dt-decimal">3.57480316125164</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-1.87938524157182</var> <var class="dt-decimal">3.25519072539749</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-2.51510837254968</var> <var class="dt-decimal">2.79331083470536</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.04090919881813</var> <var class="dt-decimal">2.20934985674408</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.43380770119695</var> <var class="dt-decimal">1.52882968840625</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.67663232979599</var> <var class="dt-decimal">0.781492326546279</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.75877048314363</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.67663232979599</var> <var class="dt-decimal">-0.78149232654628</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.43380770119695</var> <var class="dt-decimal">-1.52882968840625</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-3.04090919881813</var> <var class="dt-decimal">-2.20934985674408</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-2.51510837254968</var> <var class="dt-decimal">-2.79331083470536</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-1.87938524157182</var> <var class="dt-decimal">-3.25519072539749</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-1.16152395724631</var> <var class="dt-decimal">-3.57480316125164</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">-0.392898502378818</var> <var class="dt-decimal">-3.73817954515033</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">0.392898502378822</var> <var class="dt-decimal">-3.73817954515033</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">1.16152395724631</var> <var class="dt-decimal">-3.57480316125163</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">1.87938524157182</var> <var class="dt-decimal">-3.25519072539749</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">2.51510837254968</var> <var class="dt-decimal">-2.79331083470536</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.04090919881813</var> <var class="dt-decimal">-2.20934985674408</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.43380770119695</var> <var class="dt-decimal">-1.52882968840624</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.67663232979599</var> <var class="dt-decimal">-0.78149232654628</var> <var class="dt-decimal">1.36808057330268</var>] [<var class="dt-decimal">3.91259040293522</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.8270909152852</var> <var class="dt-decimal">0.8134732861516</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.57432919021751</var> <var class="dt-decimal">1.59139388622046</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">2.29976293710639</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">2.90762131215382</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">3.3884026835451</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">1.20905692653531</var> <var class="dt-decimal">3.72109459830542</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">0.408977062214588</var> <var class="dt-decimal">3.89115682332685</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-0.408977062214588</var> <var class="dt-decimal">3.89115682332685</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-1.20905692653531</var> <var class="dt-decimal">3.72109459830542</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">3.3884026835451</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">2.90762131215382</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">2.29976293710639</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.57432919021751</var> <var class="dt-decimal">1.59139388622047</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.8270909152852</var> <var class="dt-decimal">0.8134732861516</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.91259040293522</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.8270909152852</var> <var class="dt-decimal">-0.813473286151602</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.57432919021751</var> <var class="dt-decimal">-1.59139388622047</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">-2.29976293710639</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">-2.90762131215382</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">-3.38840268354509</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-1.20905692653531</var> <var class="dt-decimal">-3.72109459830542</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">-0.408977062214586</var> <var class="dt-decimal">-3.89115682332685</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">0.40897706221459</var> <var class="dt-decimal">-3.89115682332685</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">1.20905692653531</var> <var class="dt-decimal">-3.72109459830542</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">-3.38840268354509</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">-2.90762131215382</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">-2.29976293710639</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.57432919021751</var> <var class="dt-decimal">-1.59139388622046</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.8270909152852</var> <var class="dt-decimal">-0.813473286151602</var> <var class="dt-decimal">0.831646763271038</var>] [<var class="dt-decimal">3.9902562010393</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.90305952935978</var> <var class="dt-decimal">0.829620913554129</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.64528042728967</var> <var class="dt-decimal">1.62298341222312</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.22818507855081</var> <var class="dt-decimal">2.34541374783949</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">2.67000255132862</var> <var class="dt-decimal">2.96533824813144</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">1.99512810051965</var> <var class="dt-decimal">3.45566323770842</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">1.23305697803116</var> <var class="dt-decimal">3.79495916168557</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">0.417095348738863</var> <var class="dt-decimal">3.96839716006261</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-0.417095348738863</var> <var class="dt-decimal">3.96839716006261</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-1.23305697803116</var> <var class="dt-decimal">3.79495916168557</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-1.99512810051965</var> <var class="dt-decimal">3.45566323770842</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-2.67000255132862</var> <var class="dt-decimal">2.96533824813144</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.22818507855081</var> <var class="dt-decimal">2.34541374783949</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.64528042728967</var> <var class="dt-decimal">1.62298341222312</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.90305952935978</var> <var class="dt-decimal">0.829620913554129</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.9902562010393</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.90305952935978</var> <var class="dt-decimal">-0.829620913554131</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.64528042728967</var> <var class="dt-decimal">-1.62298341222312</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-3.22818507855081</var> <var class="dt-decimal">-2.34541374783949</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-2.67000255132862</var> <var class="dt-decimal">-2.96533824813144</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-1.99512810051965</var> <var class="dt-decimal">-3.45566323770842</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-1.23305697803116</var> <var class="dt-decimal">-3.79495916168557</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">-0.417095348738861</var> <var class="dt-decimal">-3.96839716006261</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">0.417095348738865</var> <var class="dt-decimal">-3.96839716006261</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">1.23305697803116</var> <var class="dt-decimal">-3.79495916168557</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">1.99512810051965</var> <var class="dt-decimal">-3.45566323770842</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">2.67000255132862</var> <var class="dt-decimal">-2.96533824813144</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.22818507855081</var> <var class="dt-decimal">-2.34541374783949</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.64528042728967</var> <var class="dt-decimal">-1.62298341222312</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.90305952935978</var> <var class="dt-decimal">-0.82962091355413</var> <var class="dt-decimal">0.279025894976501</var>] [<var class="dt-decimal">3.9902562010393</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.90305952935978</var> <var class="dt-decimal">0.829620913554129</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.64528042728967</var> <var class="dt-decimal">1.62298341222312</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.22818507855081</var> <var class="dt-decimal">2.34541374783949</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">2.67000255132862</var> <var class="dt-decimal">2.96533824813144</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">1.99512810051965</var> <var class="dt-decimal">3.45566323770842</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">1.23305697803116</var> <var class="dt-decimal">3.79495916168557</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">0.417095348738863</var> <var class="dt-decimal">3.96839716006261</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-0.417095348738863</var> <var class="dt-decimal">3.96839716006261</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-1.23305697803116</var> <var class="dt-decimal">3.79495916168557</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-1.99512810051965</var> <var class="dt-decimal">3.45566323770842</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-2.67000255132862</var> <var class="dt-decimal">2.96533824813144</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.22818507855081</var> <var class="dt-decimal">2.34541374783949</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.64528042728967</var> <var class="dt-decimal">1.62298341222312</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.90305952935978</var> <var class="dt-decimal">0.829620913554129</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.9902562010393</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.90305952935978</var> <var class="dt-decimal">-0.829620913554131</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.64528042728967</var> <var class="dt-decimal">-1.62298341222312</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-3.22818507855081</var> <var class="dt-decimal">-2.34541374783949</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-2.67000255132862</var> <var class="dt-decimal">-2.96533824813144</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-1.99512810051965</var> <var class="dt-decimal">-3.45566323770842</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-1.23305697803116</var> <var class="dt-decimal">-3.79495916168557</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">-0.417095348738861</var> <var class="dt-decimal">-3.96839716006261</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">0.417095348738865</var> <var class="dt-decimal">-3.96839716006261</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">1.23305697803116</var> <var class="dt-decimal">-3.79495916168557</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">1.99512810051965</var> <var class="dt-decimal">-3.45566323770842</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">2.67000255132862</var> <var class="dt-decimal">-2.96533824813144</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.22818507855081</var> <var class="dt-decimal">-2.34541374783949</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.64528042728967</var> <var class="dt-decimal">-1.62298341222312</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.90305952935978</var> <var class="dt-decimal">-0.82962091355413</var> <var class="dt-decimal">-0.279025894976501</var>] [<var class="dt-decimal">3.91259040293522</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.8270909152852</var> <var class="dt-decimal">0.813473286151601</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.57432919021751</var> <var class="dt-decimal">1.59139388622047</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">2.29976293710639</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">2.90762131215382</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">3.3884026835451</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">1.20905692653531</var> <var class="dt-decimal">3.72109459830542</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">0.408977062214588</var> <var class="dt-decimal">3.89115682332685</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-0.408977062214588</var> <var class="dt-decimal">3.89115682332685</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-1.20905692653531</var> <var class="dt-decimal">3.72109459830542</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">3.3884026835451</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">2.90762131215382</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">2.29976293710639</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.57432919021751</var> <var class="dt-decimal">1.59139388622047</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.8270909152852</var> <var class="dt-decimal">0.8134732861516</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.91259040293522</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.8270909152852</var> <var class="dt-decimal">-0.813473286151602</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.57432919021751</var> <var class="dt-decimal">-1.59139388622047</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">-2.29976293710639</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">-2.90762131215382</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">-3.3884026835451</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-1.20905692653531</var> <var class="dt-decimal">-3.72109459830542</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">-0.408977062214587</var> <var class="dt-decimal">-3.89115682332685</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">0.40897706221459</var> <var class="dt-decimal">-3.89115682332685</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">1.20905692653531</var> <var class="dt-decimal">-3.72109459830542</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">-3.3884026835451</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">-2.90762131215382</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">-2.29976293710639</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.57432919021751</var> <var class="dt-decimal">-1.59139388622046</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.8270909152852</var> <var class="dt-decimal">-0.813473286151602</var> <var class="dt-decimal">-0.831646763271037</var>] [<var class="dt-decimal">3.75877048314363</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.67663232979599</var> <var class="dt-decimal">0.781492326546279</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.43380770119695</var> <var class="dt-decimal">1.52882968840625</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.04090919881813</var> <var class="dt-decimal">2.20934985674408</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">2.51510837254968</var> <var class="dt-decimal">2.79331083470536</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">1.87938524157182</var> <var class="dt-decimal">3.25519072539749</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">1.16152395724631</var> <var class="dt-decimal">3.57480316125163</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">0.392898502378819</var> <var class="dt-decimal">3.73817954515033</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-0.39289850237882</var> <var class="dt-decimal">3.73817954515033</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-1.16152395724631</var> <var class="dt-decimal">3.57480316125164</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-1.87938524157182</var> <var class="dt-decimal">3.25519072539749</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-2.51510837254968</var> <var class="dt-decimal">2.79331083470536</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.04090919881813</var> <var class="dt-decimal">2.20934985674408</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.43380770119695</var> <var class="dt-decimal">1.52882968840625</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.67663232979599</var> <var class="dt-decimal">0.781492326546279</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.75877048314363</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.67663232979599</var> <var class="dt-decimal">-0.78149232654628</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.43380770119695</var> <var class="dt-decimal">-1.52882968840625</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-3.04090919881813</var> <var class="dt-decimal">-2.20934985674408</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-2.51510837254968</var> <var class="dt-decimal">-2.79331083470536</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-1.87938524157182</var> <var class="dt-decimal">-3.25519072539749</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-1.16152395724631</var> <var class="dt-decimal">-3.57480316125164</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">-0.392898502378818</var> <var class="dt-decimal">-3.73817954515033</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">0.392898502378822</var> <var class="dt-decimal">-3.73817954515033</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">1.16152395724631</var> <var class="dt-decimal">-3.57480316125163</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">1.87938524157182</var> <var class="dt-decimal">-3.25519072539749</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">2.51510837254968</var> <var class="dt-decimal">-2.79331083470536</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.04090919881813</var> <var class="dt-decimal">-2.20934985674408</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.43380770119695</var> <var class="dt-decimal">-1.52882968840624</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.67663232979599</var> <var class="dt-decimal">-0.78149232654628</var> <var class="dt-decimal">-1.36808057330268</var>] [<var class="dt-decimal">3.53179037143571</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">3.45461227811459</var> <var class="dt-decimal">0.73430050773908</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">3.22645105117096</var> <var class="dt-decimal">1.43650855972519</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">2.8572784310613</var> <var class="dt-decimal">2.07593429451846</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">2.36322903277115</var> <var class="dt-decimal">2.62463173920333</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">1.76589518571785</var> <var class="dt-decimal">3.0586201825046</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">1.09138324534344</var> <var class="dt-decimal">3.35893224694241</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">0.36917262010967</var> <var class="dt-decimal">3.51244285424366</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-0.36917262010967</var> <var class="dt-decimal">3.51244285424366</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-1.09138324534344</var> <var class="dt-decimal">3.35893224694241</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-1.76589518571785</var> <var class="dt-decimal">3.0586201825046</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-2.36322903277115</var> <var class="dt-decimal">2.62463173920333</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-2.8572784310613</var> <var class="dt-decimal">2.07593429451847</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-3.22645105117096</var> <var class="dt-decimal">1.43650855972519</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-3.45461227811459</var> <var class="dt-decimal">0.73430050773908</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-3.53179037143571</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-3.45461227811459</var> <var class="dt-decimal">-0.734300507739082</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-3.22645105117096</var> <var class="dt-decimal">-1.43650855972519</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-2.8572784310613</var> <var class="dt-decimal">-2.07593429451847</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-2.36322903277115</var> <var class="dt-decimal">-2.62463173920333</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-1.76589518571785</var> <var class="dt-decimal">-3.0586201825046</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-1.09138324534344</var> <var class="dt-decimal">-3.35893224694241</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">-0.369172620109668</var> <var class="dt-decimal">-3.51244285424366</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">0.369172620109672</var> <var class="dt-decimal">-3.51244285424366</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">1.09138324534344</var> <var class="dt-decimal">-3.35893224694241</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">1.76589518571785</var> <var class="dt-decimal">-3.0586201825046</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">2.36322903277115</var> <var class="dt-decimal">-2.62463173920333</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">2.8572784310613</var> <var class="dt-decimal">-2.07593429451846</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">3.22645105117097</var> <var class="dt-decimal">-1.43650855972519</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">3.45461227811459</var> <var class="dt-decimal">-0.734300507739081</var> <var class="dt-decimal">-1.87788625114356</var>] [<var class="dt-decimal">3.23606797749979</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">0.672816364803188</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.95629520146761</var> <var class="dt-decimal">1.31622742593336</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.16535212800292</var> <var class="dt-decimal">2.40486717237207</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">1.6180339887499</var> <var class="dt-decimal">2.80251707688815</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">3.07768353717525</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">0.338261212717716</var> <var class="dt-decimal">3.21834045852367</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-0.338261212717717</var> <var class="dt-decimal">3.21834045852367</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">3.07768353717525</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">2.80251707688815</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.16535212800292</var> <var class="dt-decimal">2.40486717237207</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.95629520146761</var> <var class="dt-decimal">1.31622742593336</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">0.672816364803188</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-3.23606797749979</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-3.16535212800292</var> <var class="dt-decimal">-0.672816364803189</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.95629520146761</var> <var class="dt-decimal">-1.31622742593336</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.61803398874989</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-2.16535212800292</var> <var class="dt-decimal">-2.40486717237207</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-1.6180339887499</var> <var class="dt-decimal">-2.80251707688815</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">-3.07768353717525</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">-0.338261212717715</var> <var class="dt-decimal">-3.21834045852367</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">0.338261212717719</var> <var class="dt-decimal">-3.21834045852367</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">-3.07768353717525</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">1.6180339887499</var> <var class="dt-decimal">-2.80251707688815</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.16535212800292</var> <var class="dt-decimal">-2.40486717237207</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.61803398874989</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.95629520146761</var> <var class="dt-decimal">-1.31622742593336</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">3.16535212800292</var> <var class="dt-decimal">-0.672816364803189</var> <var class="dt-decimal">-2.35114100916989</var>] [<var class="dt-decimal">2.8773592013546</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.81448199925435</var> <var class="dt-decimal">0.598236616643673</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.62859842840364</var> <var class="dt-decimal">1.17032742248224</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.327832492817</var> <var class="dt-decimal">1.69126930410429</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">1.92532910711465</var> <var class="dt-decimal">2.13829460152644</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">1.4386796006773</var> <var class="dt-decimal">2.49186616418599</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">0.889152892139699</var> <var class="dt-decimal">2.73653121817012</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">0.300765935586639</var> <var class="dt-decimal">2.86159672658652</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-0.30076593558664</var> <var class="dt-decimal">2.86159672658652</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-0.889152892139699</var> <var class="dt-decimal">2.73653121817012</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-1.4386796006773</var> <var class="dt-decimal">2.49186616418599</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-1.92532910711465</var> <var class="dt-decimal">2.13829460152644</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.327832492817</var> <var class="dt-decimal">1.69126930410429</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.62859842840364</var> <var class="dt-decimal">1.17032742248224</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.81448199925435</var> <var class="dt-decimal">0.598236616643673</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.8773592013546</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.81448199925435</var> <var class="dt-decimal">-0.598236616643675</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.62859842840364</var> <var class="dt-decimal">-1.17032742248224</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-2.327832492817</var> <var class="dt-decimal">-1.69126930410429</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-1.92532910711465</var> <var class="dt-decimal">-2.13829460152644</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-1.4386796006773</var> <var class="dt-decimal">-2.49186616418599</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-0.889152892139699</var> <var class="dt-decimal">-2.73653121817012</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">-0.300765935586638</var> <var class="dt-decimal">-2.86159672658652</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">0.300765935586641</var> <var class="dt-decimal">-2.86159672658652</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">0.889152892139699</var> <var class="dt-decimal">-2.73653121817012</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">1.4386796006773</var> <var class="dt-decimal">-2.49186616418599</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">1.92532910711465</var> <var class="dt-decimal">-2.13829460152644</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.327832492817</var> <var class="dt-decimal">-1.69126930410429</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.62859842840364</var> <var class="dt-decimal">-1.17032742248224</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.81448199925435</var> <var class="dt-decimal">-0.598236616643674</var> <var class="dt-decimal">-2.77863348183599</var>] [<var class="dt-decimal">2.46264590130263</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">2.40883117981611</var> <var class="dt-decimal">0.512012873225255</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">2.24973897691719</var> <var class="dt-decimal">1.00164832698021</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.99232238528164</var> <var class="dt-decimal">1.44750694240419</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.64783174518579</var> <var class="dt-decimal">1.83010255853617</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.23132295065132</var> <var class="dt-decimal">2.1327139110537</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">0.760999434630323</var> <var class="dt-decimal">2.34211543176142</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">0.25741659163555</var> <var class="dt-decimal">2.4491552693844</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-0.25741659163555</var> <var class="dt-decimal">2.4491552693844</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-0.760999434630323</var> <var class="dt-decimal">2.34211543176142</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.23132295065132</var> <var class="dt-decimal">2.13271391105371</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.64783174518579</var> <var class="dt-decimal">1.83010255853617</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.99232238528164</var> <var class="dt-decimal">1.44750694240419</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-2.24973897691719</var> <var class="dt-decimal">1.00164832698021</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-2.40883117981611</var> <var class="dt-decimal">0.512012873225255</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-2.46264590130263</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-2.40883117981611</var> <var class="dt-decimal">-0.512012873225256</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-2.24973897691719</var> <var class="dt-decimal">-1.00164832698021</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.99232238528164</var> <var class="dt-decimal">-1.44750694240419</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.64783174518579</var> <var class="dt-decimal">-1.83010255853617</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-1.23132295065132</var> <var class="dt-decimal">-2.1327139110537</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-0.760999434630323</var> <var class="dt-decimal">-2.34211543176142</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">-0.257416591635549</var> <var class="dt-decimal">-2.4491552693844</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">0.257416591635551</var> <var class="dt-decimal">-2.4491552693844</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">0.760999434630323</var> <var class="dt-decimal">-2.34211543176142</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.23132295065132</var> <var class="dt-decimal">-2.1327139110537</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.64783174518579</var> <var class="dt-decimal">-1.83010255853617</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">1.99232238528164</var> <var class="dt-decimal">-1.44750694240419</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">2.24973897691719</var> <var class="dt-decimal">-1.00164832698021</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">2.40883117981611</var> <var class="dt-decimal">-0.512012873225256</var> <var class="dt-decimal">-3.15204301442689</var>] [<var class="dt-decimal">2.0</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.8270909152852</var> <var class="dt-decimal">0.8134732861516</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.61803398874989</var> <var class="dt-decimal">1.17557050458495</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.33826121271772</var> <var class="dt-decimal">1.48628965095479</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">1.73205080756888</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">0.618033988749895</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">0.209056926535307</var> <var class="dt-decimal">1.98904379073655</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-0.209056926535307</var> <var class="dt-decimal">1.98904379073655</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-0.618033988749895</var> <var class="dt-decimal">1.90211303259031</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-0.999999999999999</var> <var class="dt-decimal">1.73205080756888</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.33826121271772</var> <var class="dt-decimal">1.48628965095479</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">1.17557050458495</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.8270909152852</var> <var class="dt-decimal">0.813473286151601</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">0.415823381635519</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-2.0</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.95629520146761</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.8270909152852</var> <var class="dt-decimal">-0.813473286151601</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.61803398874989</var> <var class="dt-decimal">-1.17557050458495</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.33826121271772</var> <var class="dt-decimal">-1.48628965095479</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-1.0</var> <var class="dt-decimal">-1.73205080756888</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-0.618033988749895</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">-0.209056926535306</var> <var class="dt-decimal">-1.98904379073655</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">0.209056926535308</var> <var class="dt-decimal">-1.98904379073655</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">0.618033988749895</var> <var class="dt-decimal">-1.90211303259031</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.0</var> <var class="dt-decimal">-1.73205080756888</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.33826121271772</var> <var class="dt-decimal">-1.48628965095479</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.61803398874989</var> <var class="dt-decimal">-1.17557050458495</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.8270909152852</var> <var class="dt-decimal">-0.8134732861516</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.95629520146761</var> <var class="dt-decimal">-0.415823381635519</var> <var class="dt-decimal">-3.46410161513775</var>] [<var class="dt-decimal">1.49842637366365</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.46568216227535</var> <var class="dt-decimal">0.311540360914333</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.3688806072723</var> <var class="dt-decimal">0.609464913120196</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.21225240111352</var> <var class="dt-decimal">0.880752924085582</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.00264294799366</var> <var class="dt-decimal">1.113547805947</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.749213186831824</var> <var class="dt-decimal">1.29767530529331</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.463039214281692</var> <var class="dt-decimal">1.42508816686133</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.156628206158784</var> <var class="dt-decimal">1.49021783720578</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.156628206158784</var> <var class="dt-decimal">1.49021783720578</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.463039214281692</var> <var class="dt-decimal">1.42508816686133</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.749213186831823</var> <var class="dt-decimal">1.29767530529331</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.00264294799366</var> <var class="dt-decimal">1.113547805947</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.21225240111352</var> <var class="dt-decimal">0.880752924085583</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.3688806072723</var> <var class="dt-decimal">0.609464913120197</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.46568216227535</var> <var class="dt-decimal">0.311540360914333</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.49842637366365</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.46568216227535</var> <var class="dt-decimal">-0.311540360914333</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.3688806072723</var> <var class="dt-decimal">-0.609464913120197</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.21225240111352</var> <var class="dt-decimal">-0.880752924085583</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-1.00264294799366</var> <var class="dt-decimal">-1.113547805947</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.749213186831824</var> <var class="dt-decimal">-1.29767530529331</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.463039214281692</var> <var class="dt-decimal">-1.42508816686133</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">-0.156628206158783</var> <var class="dt-decimal">-1.49021783720578</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.156628206158785</var> <var class="dt-decimal">-1.49021783720578</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.463039214281692</var> <var class="dt-decimal">-1.42508816686133</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.749213186831824</var> <var class="dt-decimal">-1.29767530529331</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.00264294799366</var> <var class="dt-decimal">-1.113547805947</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.21225240111352</var> <var class="dt-decimal">-0.880752924085582</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.3688806072723</var> <var class="dt-decimal">-0.609464913120196</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">1.46568216227535</var> <var class="dt-decimal">-0.311540360914333</var> <var class="dt-decimal">-3.70873541826715</var>] [<var class="dt-decimal">0.967687582398669</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.946541286983155</var> <var class="dt-decimal">0.201193561439857</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.884026595317454</var> <var class="dt-decimal">0.393593998810972</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.782875699406131</var> <var class="dt-decimal">0.568792489760495</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.647509378776359</var> <var class="dt-decimal">0.719132019538301</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.483843791199335</var> <var class="dt-decimal">0.838042029283995</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.299031908206796</var> <var class="dt-decimal">0.920325580978158</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.101150895911324</var> <var class="dt-decimal">0.962386488571467</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.101150895911324</var> <var class="dt-decimal">0.962386488571467</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.299031908206796</var> <var class="dt-decimal">0.920325580978158</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.483843791199334</var> <var class="dt-decimal">0.838042029283995</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.647509378776359</var> <var class="dt-decimal">0.719132019538301</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.782875699406131</var> <var class="dt-decimal">0.568792489760495</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.884026595317454</var> <var class="dt-decimal">0.393593998810972</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.946541286983155</var> <var class="dt-decimal">0.201193561439857</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.967687582398669</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.946541286983155</var> <var class="dt-decimal">-0.201193561439858</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.884026595317454</var> <var class="dt-decimal">-0.393593998810972</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.782875699406131</var> <var class="dt-decimal">-0.568792489760495</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.647509378776359</var> <var class="dt-decimal">-0.719132019538301</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.483843791199335</var> <var class="dt-decimal">-0.838042029283995</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.299031908206796</var> <var class="dt-decimal">-0.920325580978158</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">-0.101150895911323</var> <var class="dt-decimal">-0.962386488571467</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.101150895911324</var> <var class="dt-decimal">-0.962386488571467</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.299031908206796</var> <var class="dt-decimal">-0.920325580978158</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.483843791199335</var> <var class="dt-decimal">-0.838042029283995</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.647509378776359</var> <var class="dt-decimal">-0.719132019538301</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.782875699406131</var> <var class="dt-decimal">-0.568792489760495</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.884026595317454</var> <var class="dt-decimal">-0.393593998810971</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.946541286983155</var> <var class="dt-decimal">-0.201193561439857</var> <var class="dt-decimal">-3.88118290510399</var>] [<var class="dt-decimal">0.418113853070615</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.408977062214589</var> <var class="dt-decimal">8.69307581462398E-2</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.381966011250106</var> <var class="dt-decimal">0.17006222502143</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.338261212717717</var> <var class="dt-decimal">0.245761156614089</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.279772776032179</var> <var class="dt-decimal">0.310719146369843</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.209056926535308</var> <var class="dt-decimal">0.362097218433347</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.12920428618241</var> <var class="dt-decimal">0.397649904516083</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">4.37047985323888E-2</var> <var class="dt-decimal">0.41582338163552</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-4.37047985323889E-2</var> <var class="dt-decimal">0.41582338163552</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.12920428618241</var> <var class="dt-decimal">0.397649904516083</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.209056926535307</var> <var class="dt-decimal">0.362097218433347</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.279772776032179</var> <var class="dt-decimal">0.310719146369843</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.338261212717717</var> <var class="dt-decimal">0.245761156614089</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.381966011250106</var> <var class="dt-decimal">0.17006222502143</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.408977062214589</var> <var class="dt-decimal">8.69307581462397E-2</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.418113853070615</var> <var class="dt-decimal">0.0</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.408977062214589</var> <var class="dt-decimal">-8.69307581462399E-2</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.381966011250106</var> <var class="dt-decimal">-0.17006222502143</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.338261212717717</var> <var class="dt-decimal">-0.245761156614089</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.279772776032179</var> <var class="dt-decimal">-0.310719146369843</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.209056926535308</var> <var class="dt-decimal">-0.362097218433347</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-0.12920428618241</var> <var class="dt-decimal">-0.397649904516083</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">-4.37047985323887E-2</var> <var class="dt-decimal">-0.41582338163552</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">4.37047985323891E-2</var> <var class="dt-decimal">-0.41582338163552</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.12920428618241</var> <var class="dt-decimal">-0.397649904516083</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.209056926535308</var> <var class="dt-decimal">-0.362097218433347</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.279772776032179</var> <var class="dt-decimal">-0.310719146369843</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.338261212717717</var> <var class="dt-decimal">-0.245761156614089</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.381966011250106</var> <var class="dt-decimal">-0.17006222502143</var> <var class="dt-decimal">-3.97808758147309</var>] [<var class="dt-decimal">0.408977062214589</var> <var class="dt-decimal">-8.69307581462399E-2</var> <var class="dt-decimal">-3.97808758147309</var>]] <br />
[] <br />
[] [[[<var class="dt-integer">1</var> <var class="dt-integer">31</var> <var class="dt-integer">32</var> <var class="dt-integer">2</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">2</var> <var class="dt-integer">32</var> <var class="dt-integer">33</var> <var class="dt-integer">3</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">3</var> <var class="dt-integer">33</var> <var class="dt-integer">34</var> <var class="dt-integer">4</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">4</var> <var class="dt-integer">34</var> <var class="dt-integer">35</var> <var class="dt-integer">5</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">5</var> <var class="dt-integer">35</var> <var class="dt-integer">36</var> <var class="dt-integer">6</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">6</var> <var class="dt-integer">36</var> <var class="dt-integer">37</var> <var class="dt-integer">7</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">7</var> <var class="dt-integer">37</var> <var class="dt-integer">38</var> <var class="dt-integer">8</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">8</var> <var class="dt-integer">38</var> <var class="dt-integer">39</var> <var class="dt-integer">9</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">9</var> <var class="dt-integer">39</var> <var class="dt-integer">40</var> <var class="dt-integer">10</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">10</var> <var class="dt-integer">40</var> <var class="dt-integer">41</var> <var class="dt-integer">11</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">11</var> <var class="dt-integer">41</var> <var class="dt-integer">42</var> <var class="dt-integer">12</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">12</var> <var class="dt-integer">42</var> <var class="dt-integer">43</var> <var class="dt-integer">13</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">13</var> <var class="dt-integer">43</var> <var class="dt-integer">44</var> <var class="dt-integer">14</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">14</var> <var class="dt-integer">44</var> <var class="dt-integer">45</var> <var class="dt-integer">15</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">15</var> <var class="dt-integer">45</var> <var class="dt-integer">46</var> <var class="dt-integer">16</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">16</var> <var class="dt-integer">46</var> <var class="dt-integer">47</var> <var class="dt-integer">17</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">17</var> <var class="dt-integer">47</var> <var class="dt-integer">48</var> <var class="dt-integer">18</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">18</var> <var class="dt-integer">48</var> <var class="dt-integer">49</var> <var class="dt-integer">19</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">19</var> <var class="dt-integer">49</var> <var class="dt-integer">50</var> <var class="dt-integer">20</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">20</var> <var class="dt-integer">50</var> <var class="dt-integer">51</var> <var class="dt-integer">21</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">21</var> <var class="dt-integer">51</var> <var class="dt-integer">52</var> <var class="dt-integer">22</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">22</var> <var class="dt-integer">52</var> <var class="dt-integer">53</var> <var class="dt-integer">23</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">23</var> <var class="dt-integer">53</var> <var class="dt-integer">54</var> <var class="dt-integer">24</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">24</var> <var class="dt-integer">54</var> <var class="dt-integer">55</var> <var class="dt-integer">25</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">25</var> <var class="dt-integer">55</var> <var class="dt-integer">56</var> <var class="dt-integer">26</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">26</var> <var class="dt-integer">56</var> <var class="dt-integer">57</var> <var class="dt-integer">27</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">27</var> <var class="dt-integer">57</var> <var class="dt-integer">58</var> <var class="dt-integer">28</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">28</var> <var class="dt-integer">58</var> <var class="dt-integer">59</var> <var class="dt-integer">29</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">29</var> <var class="dt-integer">59</var> <var class="dt-integer">60</var> <var class="dt-integer">30</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">30</var> <var class="dt-integer">60</var> <var class="dt-integer">31</var> <var class="dt-integer">1</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">1</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">31</var> <var class="dt-integer">61</var> <var class="dt-integer">62</var> <var class="dt-integer">32</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">32</var> <var class="dt-integer">62</var> <var class="dt-integer">63</var> <var class="dt-integer">33</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">33</var> <var class="dt-integer">63</var> <var class="dt-integer">64</var> <var class="dt-integer">34</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">34</var> <var class="dt-integer">64</var> <var class="dt-integer">65</var> <var class="dt-integer">35</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">35</var> <var class="dt-integer">65</var> <var class="dt-integer">66</var> <var class="dt-integer">36</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">36</var> <var class="dt-integer">66</var> <var class="dt-integer">67</var> <var class="dt-integer">37</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">37</var> <var class="dt-integer">67</var> <var class="dt-integer">68</var> <var class="dt-integer">38</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">38</var> <var class="dt-integer">68</var> <var class="dt-integer">69</var> <var class="dt-integer">39</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">39</var> <var class="dt-integer">69</var> <var class="dt-integer">70</var> <var class="dt-integer">40</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">40</var> <var class="dt-integer">70</var> <var class="dt-integer">71</var> <var class="dt-integer">41</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">41</var> <var class="dt-integer">71</var> <var class="dt-integer">72</var> <var class="dt-integer">42</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">42</var> <var class="dt-integer">72</var> <var class="dt-integer">73</var> <var class="dt-integer">43</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">43</var> <var class="dt-integer">73</var> <var class="dt-integer">74</var> <var class="dt-integer">44</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">44</var> <var class="dt-integer">74</var> <var class="dt-integer">75</var> <var class="dt-integer">45</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">45</var> <var class="dt-integer">75</var> <var class="dt-integer">76</var> <var class="dt-integer">46</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">46</var> <var class="dt-integer">76</var> <var class="dt-integer">77</var> <var class="dt-integer">47</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">47</var> <var class="dt-integer">77</var> <var class="dt-integer">78</var> <var class="dt-integer">48</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">48</var> <var class="dt-integer">78</var> <var class="dt-integer">79</var> <var class="dt-integer">49</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">49</var> <var class="dt-integer">79</var> <var class="dt-integer">80</var> <var class="dt-integer">50</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">50</var> <var class="dt-integer">80</var> <var class="dt-integer">81</var> <var class="dt-integer">51</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">51</var> <var class="dt-integer">81</var> <var class="dt-integer">82</var> <var class="dt-integer">52</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">52</var> <var class="dt-integer">82</var> <var class="dt-integer">83</var> <var class="dt-integer">53</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">53</var> <var class="dt-integer">83</var> <var class="dt-integer">84</var> <var class="dt-integer">54</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">54</var> <var class="dt-integer">84</var> <var class="dt-integer">85</var> <var class="dt-integer">55</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">55</var> <var class="dt-integer">85</var> <var class="dt-integer">86</var> <var class="dt-integer">56</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">56</var> <var class="dt-integer">86</var> <var class="dt-integer">87</var> <var class="dt-integer">57</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">57</var> <var class="dt-integer">87</var> <var class="dt-integer">88</var> <var class="dt-integer">58</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">58</var> <var class="dt-integer">88</var> <var class="dt-integer">89</var> <var class="dt-integer">59</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">59</var> <var class="dt-integer">89</var> <var class="dt-integer">90</var> <var class="dt-integer">60</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">60</var> <var class="dt-integer">90</var> <var class="dt-integer">61</var> <var class="dt-integer">31</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">2</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">61</var> <var class="dt-integer">91</var> <var class="dt-integer">92</var> <var class="dt-integer">62</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">62</var> <var class="dt-integer">92</var> <var class="dt-integer">93</var> <var class="dt-integer">63</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">63</var> <var class="dt-integer">93</var> <var class="dt-integer">94</var> <var class="dt-integer">64</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">64</var> <var class="dt-integer">94</var> <var class="dt-integer">95</var> <var class="dt-integer">65</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">65</var> <var class="dt-integer">95</var> <var class="dt-integer">96</var> <var class="dt-integer">66</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">66</var> <var class="dt-integer">96</var> <var class="dt-integer">97</var> <var class="dt-integer">67</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">67</var> <var class="dt-integer">97</var> <var class="dt-integer">98</var> <var class="dt-integer">68</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">68</var> <var class="dt-integer">98</var> <var class="dt-integer">99</var> <var class="dt-integer">69</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">69</var> <var class="dt-integer">99</var> <var class="dt-integer">100</var> <var class="dt-integer">70</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">70</var> <var class="dt-integer">100</var> <var class="dt-integer">101</var> <var class="dt-integer">71</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">71</var> <var class="dt-integer">101</var> <var class="dt-integer">102</var> <var class="dt-integer">72</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">72</var> <var class="dt-integer">102</var> <var class="dt-integer">103</var> <var class="dt-integer">73</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">73</var> <var class="dt-integer">103</var> <var class="dt-integer">104</var> <var class="dt-integer">74</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">74</var> <var class="dt-integer">104</var> <var class="dt-integer">105</var> <var class="dt-integer">75</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">75</var> <var class="dt-integer">105</var> <var class="dt-integer">106</var> <var class="dt-integer">76</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">76</var> <var class="dt-integer">106</var> <var class="dt-integer">107</var> <var class="dt-integer">77</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">77</var> <var class="dt-integer">107</var> <var class="dt-integer">108</var> <var class="dt-integer">78</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">78</var> <var class="dt-integer">108</var> <var class="dt-integer">109</var> <var class="dt-integer">79</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">79</var> <var class="dt-integer">109</var> <var class="dt-integer">110</var> <var class="dt-integer">80</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">80</var> <var class="dt-integer">110</var> <var class="dt-integer">111</var> <var class="dt-integer">81</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">81</var> <var class="dt-integer">111</var> <var class="dt-integer">112</var> <var class="dt-integer">82</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">82</var> <var class="dt-integer">112</var> <var class="dt-integer">113</var> <var class="dt-integer">83</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">83</var> <var class="dt-integer">113</var> <var class="dt-integer">114</var> <var class="dt-integer">84</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">84</var> <var class="dt-integer">114</var> <var class="dt-integer">115</var> <var class="dt-integer">85</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">85</var> <var class="dt-integer">115</var> <var class="dt-integer">116</var> <var class="dt-integer">86</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">86</var> <var class="dt-integer">116</var> <var class="dt-integer">117</var> <var class="dt-integer">87</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">87</var> <var class="dt-integer">117</var> <var class="dt-integer">118</var> <var class="dt-integer">88</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">88</var> <var class="dt-integer">118</var> <var class="dt-integer">119</var> <var class="dt-integer">89</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">89</var> <var class="dt-integer">119</var> <var class="dt-integer">120</var> <var class="dt-integer">90</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">90</var> <var class="dt-integer">120</var> <var class="dt-integer">91</var> <var class="dt-integer">61</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">3</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">91</var> <var class="dt-integer">121</var> <var class="dt-integer">122</var> <var class="dt-integer">92</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">92</var> <var class="dt-integer">122</var> <var class="dt-integer">123</var> <var class="dt-integer">93</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">93</var> <var class="dt-integer">123</var> <var class="dt-integer">124</var> <var class="dt-integer">94</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">94</var> <var class="dt-integer">124</var> <var class="dt-integer">125</var> <var class="dt-integer">95</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">95</var> <var class="dt-integer">125</var> <var class="dt-integer">126</var> <var class="dt-integer">96</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">96</var> <var class="dt-integer">126</var> <var class="dt-integer">127</var> <var class="dt-integer">97</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">97</var> <var class="dt-integer">127</var> <var class="dt-integer">128</var> <var class="dt-integer">98</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">98</var> <var class="dt-integer">128</var> <var class="dt-integer">129</var> <var class="dt-integer">99</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">99</var> <var class="dt-integer">129</var> <var class="dt-integer">130</var> <var class="dt-integer">100</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">100</var> <var class="dt-integer">130</var> <var class="dt-integer">131</var> <var class="dt-integer">101</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">101</var> <var class="dt-integer">131</var> <var class="dt-integer">132</var> <var class="dt-integer">102</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">102</var> <var class="dt-integer">132</var> <var class="dt-integer">133</var> <var class="dt-integer">103</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">103</var> <var class="dt-integer">133</var> <var class="dt-integer">134</var> <var class="dt-integer">104</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">104</var> <var class="dt-integer">134</var> <var class="dt-integer">135</var> <var class="dt-integer">105</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">105</var> <var class="dt-integer">135</var> <var class="dt-integer">136</var> <var class="dt-integer">106</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">106</var> <var class="dt-integer">136</var> <var class="dt-integer">137</var> <var class="dt-integer">107</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">107</var> <var class="dt-integer">137</var> <var class="dt-integer">138</var> <var class="dt-integer">108</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">108</var> <var class="dt-integer">138</var> <var class="dt-integer">139</var> <var class="dt-integer">109</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">109</var> <var class="dt-integer">139</var> <var class="dt-integer">140</var> <var class="dt-integer">110</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">110</var> <var class="dt-integer">140</var> <var class="dt-integer">141</var> <var class="dt-integer">111</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">111</var> <var class="dt-integer">141</var> <var class="dt-integer">142</var> <var class="dt-integer">112</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">112</var> <var class="dt-integer">142</var> <var class="dt-integer">143</var> <var class="dt-integer">113</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">113</var> <var class="dt-integer">143</var> <var class="dt-integer">144</var> <var class="dt-integer">114</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">114</var> <var class="dt-integer">144</var> <var class="dt-integer">145</var> <var class="dt-integer">115</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">115</var> <var class="dt-integer">145</var> <var class="dt-integer">146</var> <var class="dt-integer">116</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">116</var> <var class="dt-integer">146</var> <var class="dt-integer">147</var> <var class="dt-integer">117</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">117</var> <var class="dt-integer">147</var> <var class="dt-integer">148</var> <var class="dt-integer">118</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">118</var> <var class="dt-integer">148</var> <var class="dt-integer">149</var> <var class="dt-integer">119</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">119</var> <var class="dt-integer">149</var> <var class="dt-integer">150</var> <var class="dt-integer">120</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">120</var> <var class="dt-integer">150</var> <var class="dt-integer">121</var> <var class="dt-integer">91</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">4</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">121</var> <var class="dt-integer">151</var> <var class="dt-integer">152</var> <var class="dt-integer">122</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">122</var> <var class="dt-integer">152</var> <var class="dt-integer">153</var> <var class="dt-integer">123</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">123</var> <var class="dt-integer">153</var> <var class="dt-integer">154</var> <var class="dt-integer">124</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">124</var> <var class="dt-integer">154</var> <var class="dt-integer">155</var> <var class="dt-integer">125</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">125</var> <var class="dt-integer">155</var> <var class="dt-integer">156</var> <var class="dt-integer">126</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">126</var> <var class="dt-integer">156</var> <var class="dt-integer">157</var> <var class="dt-integer">127</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">127</var> <var class="dt-integer">157</var> <var class="dt-integer">158</var> <var class="dt-integer">128</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">128</var> <var class="dt-integer">158</var> <var class="dt-integer">159</var> <var class="dt-integer">129</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">129</var> <var class="dt-integer">159</var> <var class="dt-integer">160</var> <var class="dt-integer">130</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">130</var> <var class="dt-integer">160</var> <var class="dt-integer">161</var> <var class="dt-integer">131</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">131</var> <var class="dt-integer">161</var> <var class="dt-integer">162</var> <var class="dt-integer">132</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">132</var> <var class="dt-integer">162</var> <var class="dt-integer">163</var> <var class="dt-integer">133</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">133</var> <var class="dt-integer">163</var> <var class="dt-integer">164</var> <var class="dt-integer">134</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">134</var> <var class="dt-integer">164</var> <var class="dt-integer">165</var> <var class="dt-integer">135</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">135</var> <var class="dt-integer">165</var> <var class="dt-integer">166</var> <var class="dt-integer">136</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">136</var> <var class="dt-integer">166</var> <var class="dt-integer">167</var> <var class="dt-integer">137</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">137</var> <var class="dt-integer">167</var> <var class="dt-integer">168</var> <var class="dt-integer">138</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">138</var> <var class="dt-integer">168</var> <var class="dt-integer">169</var> <var class="dt-integer">139</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">139</var> <var class="dt-integer">169</var> <var class="dt-integer">170</var> <var class="dt-integer">140</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">140</var> <var class="dt-integer">170</var> <var class="dt-integer">171</var> <var class="dt-integer">141</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">141</var> <var class="dt-integer">171</var> <var class="dt-integer">172</var> <var class="dt-integer">142</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">142</var> <var class="dt-integer">172</var> <var class="dt-integer">173</var> <var class="dt-integer">143</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">143</var> <var class="dt-integer">173</var> <var class="dt-integer">174</var> <var class="dt-integer">144</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">144</var> <var class="dt-integer">174</var> <var class="dt-integer">175</var> <var class="dt-integer">145</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">145</var> <var class="dt-integer">175</var> <var class="dt-integer">176</var> <var class="dt-integer">146</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">146</var> <var class="dt-integer">176</var> <var class="dt-integer">177</var> <var class="dt-integer">147</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">147</var> <var class="dt-integer">177</var> <var class="dt-integer">178</var> <var class="dt-integer">148</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">148</var> <var class="dt-integer">178</var> <var class="dt-integer">179</var> <var class="dt-integer">149</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">149</var> <var class="dt-integer">179</var> <var class="dt-integer">180</var> <var class="dt-integer">150</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">150</var> <var class="dt-integer">180</var> <var class="dt-integer">151</var> <var class="dt-integer">121</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">5</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">151</var> <var class="dt-integer">181</var> <var class="dt-integer">182</var> <var class="dt-integer">152</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">152</var> <var class="dt-integer">182</var> <var class="dt-integer">183</var> <var class="dt-integer">153</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">153</var> <var class="dt-integer">183</var> <var class="dt-integer">184</var> <var class="dt-integer">154</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">154</var> <var class="dt-integer">184</var> <var class="dt-integer">185</var> <var class="dt-integer">155</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">155</var> <var class="dt-integer">185</var> <var class="dt-integer">186</var> <var class="dt-integer">156</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">156</var> <var class="dt-integer">186</var> <var class="dt-integer">187</var> <var class="dt-integer">157</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">157</var> <var class="dt-integer">187</var> <var class="dt-integer">188</var> <var class="dt-integer">158</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">158</var> <var class="dt-integer">188</var> <var class="dt-integer">189</var> <var class="dt-integer">159</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">159</var> <var class="dt-integer">189</var> <var class="dt-integer">190</var> <var class="dt-integer">160</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">160</var> <var class="dt-integer">190</var> <var class="dt-integer">191</var> <var class="dt-integer">161</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">161</var> <var class="dt-integer">191</var> <var class="dt-integer">192</var> <var class="dt-integer">162</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">162</var> <var class="dt-integer">192</var> <var class="dt-integer">193</var> <var class="dt-integer">163</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">163</var> <var class="dt-integer">193</var> <var class="dt-integer">194</var> <var class="dt-integer">164</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">164</var> <var class="dt-integer">194</var> <var class="dt-integer">195</var> <var class="dt-integer">165</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">165</var> <var class="dt-integer">195</var> <var class="dt-integer">196</var> <var class="dt-integer">166</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">166</var> <var class="dt-integer">196</var> <var class="dt-integer">197</var> <var class="dt-integer">167</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">167</var> <var class="dt-integer">197</var> <var class="dt-integer">198</var> <var class="dt-integer">168</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">168</var> <var class="dt-integer">198</var> <var class="dt-integer">199</var> <var class="dt-integer">169</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">169</var> <var class="dt-integer">199</var> <var class="dt-integer">200</var> <var class="dt-integer">170</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">170</var> <var class="dt-integer">200</var> <var class="dt-integer">201</var> <var class="dt-integer">171</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">171</var> <var class="dt-integer">201</var> <var class="dt-integer">202</var> <var class="dt-integer">172</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">172</var> <var class="dt-integer">202</var> <var class="dt-integer">203</var> <var class="dt-integer">173</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">173</var> <var class="dt-integer">203</var> <var class="dt-integer">204</var> <var class="dt-integer">174</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">174</var> <var class="dt-integer">204</var> <var class="dt-integer">205</var> <var class="dt-integer">175</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">175</var> <var class="dt-integer">205</var> <var class="dt-integer">206</var> <var class="dt-integer">176</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">176</var> <var class="dt-integer">206</var> <var class="dt-integer">207</var> <var class="dt-integer">177</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">177</var> <var class="dt-integer">207</var> <var class="dt-integer">208</var> <var class="dt-integer">178</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">178</var> <var class="dt-integer">208</var> <var class="dt-integer">209</var> <var class="dt-integer">179</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">179</var> <var class="dt-integer">209</var> <var class="dt-integer">210</var> <var class="dt-integer">180</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">180</var> <var class="dt-integer">210</var> <var class="dt-integer">181</var> <var class="dt-integer">151</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">6</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">181</var> <var class="dt-integer">211</var> <var class="dt-integer">212</var> <var class="dt-integer">182</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">182</var> <var class="dt-integer">212</var> <var class="dt-integer">213</var> <var class="dt-integer">183</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">183</var> <var class="dt-integer">213</var> <var class="dt-integer">214</var> <var class="dt-integer">184</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">184</var> <var class="dt-integer">214</var> <var class="dt-integer">215</var> <var class="dt-integer">185</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">185</var> <var class="dt-integer">215</var> <var class="dt-integer">216</var> <var class="dt-integer">186</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">186</var> <var class="dt-integer">216</var> <var class="dt-integer">217</var> <var class="dt-integer">187</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">187</var> <var class="dt-integer">217</var> <var class="dt-integer">218</var> <var class="dt-integer">188</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">188</var> <var class="dt-integer">218</var> <var class="dt-integer">219</var> <var class="dt-integer">189</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">189</var> <var class="dt-integer">219</var> <var class="dt-integer">220</var> <var class="dt-integer">190</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">190</var> <var class="dt-integer">220</var> <var class="dt-integer">221</var> <var class="dt-integer">191</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">191</var> <var class="dt-integer">221</var> <var class="dt-integer">222</var> <var class="dt-integer">192</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">192</var> <var class="dt-integer">222</var> <var class="dt-integer">223</var> <var class="dt-integer">193</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">193</var> <var class="dt-integer">223</var> <var class="dt-integer">224</var> <var class="dt-integer">194</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">194</var> <var class="dt-integer">224</var> <var class="dt-integer">225</var> <var class="dt-integer">195</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">195</var> <var class="dt-integer">225</var> <var class="dt-integer">226</var> <var class="dt-integer">196</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">196</var> <var class="dt-integer">226</var> <var class="dt-integer">227</var> <var class="dt-integer">197</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">197</var> <var class="dt-integer">227</var> <var class="dt-integer">228</var> <var class="dt-integer">198</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">198</var> <var class="dt-integer">228</var> <var class="dt-integer">229</var> <var class="dt-integer">199</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">199</var> <var class="dt-integer">229</var> <var class="dt-integer">230</var> <var class="dt-integer">200</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">200</var> <var class="dt-integer">230</var> <var class="dt-integer">231</var> <var class="dt-integer">201</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">201</var> <var class="dt-integer">231</var> <var class="dt-integer">232</var> <var class="dt-integer">202</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">202</var> <var class="dt-integer">232</var> <var class="dt-integer">233</var> <var class="dt-integer">203</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">203</var> <var class="dt-integer">233</var> <var class="dt-integer">234</var> <var class="dt-integer">204</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">204</var> <var class="dt-integer">234</var> <var class="dt-integer">235</var> <var class="dt-integer">205</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">205</var> <var class="dt-integer">235</var> <var class="dt-integer">236</var> <var class="dt-integer">206</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">206</var> <var class="dt-integer">236</var> <var class="dt-integer">237</var> <var class="dt-integer">207</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">207</var> <var class="dt-integer">237</var> <var class="dt-integer">238</var> <var class="dt-integer">208</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">208</var> <var class="dt-integer">238</var> <var class="dt-integer">239</var> <var class="dt-integer">209</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">209</var> <var class="dt-integer">239</var> <var class="dt-integer">240</var> <var class="dt-integer">210</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">210</var> <var class="dt-integer">240</var> <var class="dt-integer">211</var> <var class="dt-integer">181</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">7</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">211</var> <var class="dt-integer">241</var> <var class="dt-integer">242</var> <var class="dt-integer">212</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">212</var> <var class="dt-integer">242</var> <var class="dt-integer">243</var> <var class="dt-integer">213</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">213</var> <var class="dt-integer">243</var> <var class="dt-integer">244</var> <var class="dt-integer">214</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">214</var> <var class="dt-integer">244</var> <var class="dt-integer">245</var> <var class="dt-integer">215</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">215</var> <var class="dt-integer">245</var> <var class="dt-integer">246</var> <var class="dt-integer">216</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">216</var> <var class="dt-integer">246</var> <var class="dt-integer">247</var> <var class="dt-integer">217</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">217</var> <var class="dt-integer">247</var> <var class="dt-integer">248</var> <var class="dt-integer">218</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">218</var> <var class="dt-integer">248</var> <var class="dt-integer">249</var> <var class="dt-integer">219</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">219</var> <var class="dt-integer">249</var> <var class="dt-integer">250</var> <var class="dt-integer">220</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">220</var> <var class="dt-integer">250</var> <var class="dt-integer">251</var> <var class="dt-integer">221</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">221</var> <var class="dt-integer">251</var> <var class="dt-integer">252</var> <var class="dt-integer">222</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">222</var> <var class="dt-integer">252</var> <var class="dt-integer">253</var> <var class="dt-integer">223</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">223</var> <var class="dt-integer">253</var> <var class="dt-integer">254</var> <var class="dt-integer">224</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">224</var> <var class="dt-integer">254</var> <var class="dt-integer">255</var> <var class="dt-integer">225</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">225</var> <var class="dt-integer">255</var> <var class="dt-integer">256</var> <var class="dt-integer">226</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">226</var> <var class="dt-integer">256</var> <var class="dt-integer">257</var> <var class="dt-integer">227</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">227</var> <var class="dt-integer">257</var> <var class="dt-integer">258</var> <var class="dt-integer">228</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">228</var> <var class="dt-integer">258</var> <var class="dt-integer">259</var> <var class="dt-integer">229</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">229</var> <var class="dt-integer">259</var> <var class="dt-integer">260</var> <var class="dt-integer">230</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">230</var> <var class="dt-integer">260</var> <var class="dt-integer">261</var> <var class="dt-integer">231</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">231</var> <var class="dt-integer">261</var> <var class="dt-integer">262</var> <var class="dt-integer">232</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">232</var> <var class="dt-integer">262</var> <var class="dt-integer">263</var> <var class="dt-integer">233</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">233</var> <var class="dt-integer">263</var> <var class="dt-integer">264</var> <var class="dt-integer">234</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">234</var> <var class="dt-integer">264</var> <var class="dt-integer">265</var> <var class="dt-integer">235</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">235</var> <var class="dt-integer">265</var> <var class="dt-integer">266</var> <var class="dt-integer">236</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">236</var> <var class="dt-integer">266</var> <var class="dt-integer">267</var> <var class="dt-integer">237</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">237</var> <var class="dt-integer">267</var> <var class="dt-integer">268</var> <var class="dt-integer">238</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">238</var> <var class="dt-integer">268</var> <var class="dt-integer">269</var> <var class="dt-integer">239</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">239</var> <var class="dt-integer">269</var> <var class="dt-integer">270</var> <var class="dt-integer">240</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">240</var> <var class="dt-integer">270</var> <var class="dt-integer">241</var> <var class="dt-integer">211</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">8</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">241</var> <var class="dt-integer">271</var> <var class="dt-integer">272</var> <var class="dt-integer">242</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">242</var> <var class="dt-integer">272</var> <var class="dt-integer">273</var> <var class="dt-integer">243</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">243</var> <var class="dt-integer">273</var> <var class="dt-integer">274</var> <var class="dt-integer">244</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">244</var> <var class="dt-integer">274</var> <var class="dt-integer">275</var> <var class="dt-integer">245</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">245</var> <var class="dt-integer">275</var> <var class="dt-integer">276</var> <var class="dt-integer">246</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">246</var> <var class="dt-integer">276</var> <var class="dt-integer">277</var> <var class="dt-integer">247</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">247</var> <var class="dt-integer">277</var> <var class="dt-integer">278</var> <var class="dt-integer">248</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">248</var> <var class="dt-integer">278</var> <var class="dt-integer">279</var> <var class="dt-integer">249</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">249</var> <var class="dt-integer">279</var> <var class="dt-integer">280</var> <var class="dt-integer">250</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">250</var> <var class="dt-integer">280</var> <var class="dt-integer">281</var> <var class="dt-integer">251</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">251</var> <var class="dt-integer">281</var> <var class="dt-integer">282</var> <var class="dt-integer">252</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">252</var> <var class="dt-integer">282</var> <var class="dt-integer">283</var> <var class="dt-integer">253</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">253</var> <var class="dt-integer">283</var> <var class="dt-integer">284</var> <var class="dt-integer">254</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">254</var> <var class="dt-integer">284</var> <var class="dt-integer">285</var> <var class="dt-integer">255</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">255</var> <var class="dt-integer">285</var> <var class="dt-integer">286</var> <var class="dt-integer">256</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">256</var> <var class="dt-integer">286</var> <var class="dt-integer">287</var> <var class="dt-integer">257</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">257</var> <var class="dt-integer">287</var> <var class="dt-integer">288</var> <var class="dt-integer">258</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">258</var> <var class="dt-integer">288</var> <var class="dt-integer">289</var> <var class="dt-integer">259</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">259</var> <var class="dt-integer">289</var> <var class="dt-integer">290</var> <var class="dt-integer">260</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">260</var> <var class="dt-integer">290</var> <var class="dt-integer">291</var> <var class="dt-integer">261</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">261</var> <var class="dt-integer">291</var> <var class="dt-integer">292</var> <var class="dt-integer">262</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">262</var> <var class="dt-integer">292</var> <var class="dt-integer">293</var> <var class="dt-integer">263</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">263</var> <var class="dt-integer">293</var> <var class="dt-integer">294</var> <var class="dt-integer">264</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">264</var> <var class="dt-integer">294</var> <var class="dt-integer">295</var> <var class="dt-integer">265</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">265</var> <var class="dt-integer">295</var> <var class="dt-integer">296</var> <var class="dt-integer">266</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">266</var> <var class="dt-integer">296</var> <var class="dt-integer">297</var> <var class="dt-integer">267</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">267</var> <var class="dt-integer">297</var> <var class="dt-integer">298</var> <var class="dt-integer">268</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">268</var> <var class="dt-integer">298</var> <var class="dt-integer">299</var> <var class="dt-integer">269</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">269</var> <var class="dt-integer">299</var> <var class="dt-integer">300</var> <var class="dt-integer">270</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">270</var> <var class="dt-integer">300</var> <var class="dt-integer">271</var> <var class="dt-integer">241</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">9</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">271</var> <var class="dt-integer">301</var> <var class="dt-integer">302</var> <var class="dt-integer">272</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">272</var> <var class="dt-integer">302</var> <var class="dt-integer">303</var> <var class="dt-integer">273</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">273</var> <var class="dt-integer">303</var> <var class="dt-integer">304</var> <var class="dt-integer">274</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">274</var> <var class="dt-integer">304</var> <var class="dt-integer">305</var> <var class="dt-integer">275</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">275</var> <var class="dt-integer">305</var> <var class="dt-integer">306</var> <var class="dt-integer">276</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">276</var> <var class="dt-integer">306</var> <var class="dt-integer">307</var> <var class="dt-integer">277</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">277</var> <var class="dt-integer">307</var> <var class="dt-integer">308</var> <var class="dt-integer">278</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">278</var> <var class="dt-integer">308</var> <var class="dt-integer">309</var> <var class="dt-integer">279</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">279</var> <var class="dt-integer">309</var> <var class="dt-integer">310</var> <var class="dt-integer">280</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">280</var> <var class="dt-integer">310</var> <var class="dt-integer">311</var> <var class="dt-integer">281</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">281</var> <var class="dt-integer">311</var> <var class="dt-integer">312</var> <var class="dt-integer">282</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">282</var> <var class="dt-integer">312</var> <var class="dt-integer">313</var> <var class="dt-integer">283</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">283</var> <var class="dt-integer">313</var> <var class="dt-integer">314</var> <var class="dt-integer">284</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">284</var> <var class="dt-integer">314</var> <var class="dt-integer">315</var> <var class="dt-integer">285</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">285</var> <var class="dt-integer">315</var> <var class="dt-integer">316</var> <var class="dt-integer">286</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">286</var> <var class="dt-integer">316</var> <var class="dt-integer">317</var> <var class="dt-integer">287</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">287</var> <var class="dt-integer">317</var> <var class="dt-integer">318</var> <var class="dt-integer">288</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">288</var> <var class="dt-integer">318</var> <var class="dt-integer">319</var> <var class="dt-integer">289</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">289</var> <var class="dt-integer">319</var> <var class="dt-integer">320</var> <var class="dt-integer">290</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">290</var> <var class="dt-integer">320</var> <var class="dt-integer">321</var> <var class="dt-integer">291</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">291</var> <var class="dt-integer">321</var> <var class="dt-integer">322</var> <var class="dt-integer">292</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">292</var> <var class="dt-integer">322</var> <var class="dt-integer">323</var> <var class="dt-integer">293</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">293</var> <var class="dt-integer">323</var> <var class="dt-integer">324</var> <var class="dt-integer">294</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">294</var> <var class="dt-integer">324</var> <var class="dt-integer">325</var> <var class="dt-integer">295</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">295</var> <var class="dt-integer">325</var> <var class="dt-integer">326</var> <var class="dt-integer">296</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">296</var> <var class="dt-integer">326</var> <var class="dt-integer">327</var> <var class="dt-integer">297</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">297</var> <var class="dt-integer">327</var> <var class="dt-integer">328</var> <var class="dt-integer">298</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">298</var> <var class="dt-integer">328</var> <var class="dt-integer">329</var> <var class="dt-integer">299</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">299</var> <var class="dt-integer">329</var> <var class="dt-integer">330</var> <var class="dt-integer">300</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">300</var> <var class="dt-integer">330</var> <var class="dt-integer">301</var> <var class="dt-integer">271</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">10</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">301</var> <var class="dt-integer">331</var> <var class="dt-integer">332</var> <var class="dt-integer">302</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">302</var> <var class="dt-integer">332</var> <var class="dt-integer">333</var> <var class="dt-integer">303</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">303</var> <var class="dt-integer">333</var> <var class="dt-integer">334</var> <var class="dt-integer">304</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">304</var> <var class="dt-integer">334</var> <var class="dt-integer">335</var> <var class="dt-integer">305</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">305</var> <var class="dt-integer">335</var> <var class="dt-integer">336</var> <var class="dt-integer">306</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">306</var> <var class="dt-integer">336</var> <var class="dt-integer">337</var> <var class="dt-integer">307</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">307</var> <var class="dt-integer">337</var> <var class="dt-integer">338</var> <var class="dt-integer">308</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">308</var> <var class="dt-integer">338</var> <var class="dt-integer">339</var> <var class="dt-integer">309</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">309</var> <var class="dt-integer">339</var> <var class="dt-integer">340</var> <var class="dt-integer">310</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">310</var> <var class="dt-integer">340</var> <var class="dt-integer">341</var> <var class="dt-integer">311</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">311</var> <var class="dt-integer">341</var> <var class="dt-integer">342</var> <var class="dt-integer">312</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">312</var> <var class="dt-integer">342</var> <var class="dt-integer">343</var> <var class="dt-integer">313</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">313</var> <var class="dt-integer">343</var> <var class="dt-integer">344</var> <var class="dt-integer">314</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">314</var> <var class="dt-integer">344</var> <var class="dt-integer">345</var> <var class="dt-integer">315</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">315</var> <var class="dt-integer">345</var> <var class="dt-integer">346</var> <var class="dt-integer">316</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">316</var> <var class="dt-integer">346</var> <var class="dt-integer">347</var> <var class="dt-integer">317</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">317</var> <var class="dt-integer">347</var> <var class="dt-integer">348</var> <var class="dt-integer">318</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">318</var> <var class="dt-integer">348</var> <var class="dt-integer">349</var> <var class="dt-integer">319</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">319</var> <var class="dt-integer">349</var> <var class="dt-integer">350</var> <var class="dt-integer">320</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">320</var> <var class="dt-integer">350</var> <var class="dt-integer">351</var> <var class="dt-integer">321</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">321</var> <var class="dt-integer">351</var> <var class="dt-integer">352</var> <var class="dt-integer">322</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">322</var> <var class="dt-integer">352</var> <var class="dt-integer">353</var> <var class="dt-integer">323</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">323</var> <var class="dt-integer">353</var> <var class="dt-integer">354</var> <var class="dt-integer">324</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">324</var> <var class="dt-integer">354</var> <var class="dt-integer">355</var> <var class="dt-integer">325</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">325</var> <var class="dt-integer">355</var> <var class="dt-integer">356</var> <var class="dt-integer">326</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">326</var> <var class="dt-integer">356</var> <var class="dt-integer">357</var> <var class="dt-integer">327</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">327</var> <var class="dt-integer">357</var> <var class="dt-integer">358</var> <var class="dt-integer">328</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">328</var> <var class="dt-integer">358</var> <var class="dt-integer">359</var> <var class="dt-integer">329</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">329</var> <var class="dt-integer">359</var> <var class="dt-integer">360</var> <var class="dt-integer">330</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">330</var> <var class="dt-integer">360</var> <var class="dt-integer">331</var> <var class="dt-integer">301</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">11</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">331</var> <var class="dt-integer">361</var> <var class="dt-integer">362</var> <var class="dt-integer">332</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">332</var> <var class="dt-integer">362</var> <var class="dt-integer">363</var> <var class="dt-integer">333</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">333</var> <var class="dt-integer">363</var> <var class="dt-integer">364</var> <var class="dt-integer">334</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">334</var> <var class="dt-integer">364</var> <var class="dt-integer">365</var> <var class="dt-integer">335</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">335</var> <var class="dt-integer">365</var> <var class="dt-integer">366</var> <var class="dt-integer">336</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">336</var> <var class="dt-integer">366</var> <var class="dt-integer">367</var> <var class="dt-integer">337</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">337</var> <var class="dt-integer">367</var> <var class="dt-integer">368</var> <var class="dt-integer">338</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">338</var> <var class="dt-integer">368</var> <var class="dt-integer">369</var> <var class="dt-integer">339</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">339</var> <var class="dt-integer">369</var> <var class="dt-integer">370</var> <var class="dt-integer">340</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">340</var> <var class="dt-integer">370</var> <var class="dt-integer">371</var> <var class="dt-integer">341</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">341</var> <var class="dt-integer">371</var> <var class="dt-integer">372</var> <var class="dt-integer">342</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">342</var> <var class="dt-integer">372</var> <var class="dt-integer">373</var> <var class="dt-integer">343</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">343</var> <var class="dt-integer">373</var> <var class="dt-integer">374</var> <var class="dt-integer">344</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">344</var> <var class="dt-integer">374</var> <var class="dt-integer">375</var> <var class="dt-integer">345</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">345</var> <var class="dt-integer">375</var> <var class="dt-integer">376</var> <var class="dt-integer">346</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">346</var> <var class="dt-integer">376</var> <var class="dt-integer">377</var> <var class="dt-integer">347</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">347</var> <var class="dt-integer">377</var> <var class="dt-integer">378</var> <var class="dt-integer">348</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">348</var> <var class="dt-integer">378</var> <var class="dt-integer">379</var> <var class="dt-integer">349</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">349</var> <var class="dt-integer">379</var> <var class="dt-integer">380</var> <var class="dt-integer">350</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">350</var> <var class="dt-integer">380</var> <var class="dt-integer">381</var> <var class="dt-integer">351</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">351</var> <var class="dt-integer">381</var> <var class="dt-integer">382</var> <var class="dt-integer">352</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">352</var> <var class="dt-integer">382</var> <var class="dt-integer">383</var> <var class="dt-integer">353</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">353</var> <var class="dt-integer">383</var> <var class="dt-integer">384</var> <var class="dt-integer">354</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">354</var> <var class="dt-integer">384</var> <var class="dt-integer">385</var> <var class="dt-integer">355</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">355</var> <var class="dt-integer">385</var> <var class="dt-integer">386</var> <var class="dt-integer">356</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">356</var> <var class="dt-integer">386</var> <var class="dt-integer">387</var> <var class="dt-integer">357</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">357</var> <var class="dt-integer">387</var> <var class="dt-integer">388</var> <var class="dt-integer">358</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">358</var> <var class="dt-integer">388</var> <var class="dt-integer">389</var> <var class="dt-integer">359</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">359</var> <var class="dt-integer">389</var> <var class="dt-integer">390</var> <var class="dt-integer">360</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">360</var> <var class="dt-integer">390</var> <var class="dt-integer">361</var> <var class="dt-integer">331</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">12</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">361</var> <var class="dt-integer">391</var> <var class="dt-integer">392</var> <var class="dt-integer">362</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">362</var> <var class="dt-integer">392</var> <var class="dt-integer">393</var> <var class="dt-integer">363</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">363</var> <var class="dt-integer">393</var> <var class="dt-integer">394</var> <var class="dt-integer">364</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">364</var> <var class="dt-integer">394</var> <var class="dt-integer">395</var> <var class="dt-integer">365</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">365</var> <var class="dt-integer">395</var> <var class="dt-integer">396</var> <var class="dt-integer">366</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">366</var> <var class="dt-integer">396</var> <var class="dt-integer">397</var> <var class="dt-integer">367</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">367</var> <var class="dt-integer">397</var> <var class="dt-integer">398</var> <var class="dt-integer">368</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">368</var> <var class="dt-integer">398</var> <var class="dt-integer">399</var> <var class="dt-integer">369</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">369</var> <var class="dt-integer">399</var> <var class="dt-integer">400</var> <var class="dt-integer">370</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">370</var> <var class="dt-integer">400</var> <var class="dt-integer">401</var> <var class="dt-integer">371</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">371</var> <var class="dt-integer">401</var> <var class="dt-integer">402</var> <var class="dt-integer">372</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">372</var> <var class="dt-integer">402</var> <var class="dt-integer">403</var> <var class="dt-integer">373</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">373</var> <var class="dt-integer">403</var> <var class="dt-integer">404</var> <var class="dt-integer">374</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">374</var> <var class="dt-integer">404</var> <var class="dt-integer">405</var> <var class="dt-integer">375</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">375</var> <var class="dt-integer">405</var> <var class="dt-integer">406</var> <var class="dt-integer">376</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">376</var> <var class="dt-integer">406</var> <var class="dt-integer">407</var> <var class="dt-integer">377</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">377</var> <var class="dt-integer">407</var> <var class="dt-integer">408</var> <var class="dt-integer">378</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">378</var> <var class="dt-integer">408</var> <var class="dt-integer">409</var> <var class="dt-integer">379</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">379</var> <var class="dt-integer">409</var> <var class="dt-integer">410</var> <var class="dt-integer">380</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">380</var> <var class="dt-integer">410</var> <var class="dt-integer">411</var> <var class="dt-integer">381</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">381</var> <var class="dt-integer">411</var> <var class="dt-integer">412</var> <var class="dt-integer">382</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">382</var> <var class="dt-integer">412</var> <var class="dt-integer">413</var> <var class="dt-integer">383</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">383</var> <var class="dt-integer">413</var> <var class="dt-integer">414</var> <var class="dt-integer">384</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">384</var> <var class="dt-integer">414</var> <var class="dt-integer">415</var> <var class="dt-integer">385</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">385</var> <var class="dt-integer">415</var> <var class="dt-integer">416</var> <var class="dt-integer">386</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">386</var> <var class="dt-integer">416</var> <var class="dt-integer">417</var> <var class="dt-integer">387</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">387</var> <var class="dt-integer">417</var> <var class="dt-integer">418</var> <var class="dt-integer">388</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">388</var> <var class="dt-integer">418</var> <var class="dt-integer">419</var> <var class="dt-integer">389</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">389</var> <var class="dt-integer">419</var> <var class="dt-integer">420</var> <var class="dt-integer">390</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">390</var> <var class="dt-integer">420</var> <var class="dt-integer">391</var> <var class="dt-integer">361</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">13</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">391</var> <var class="dt-integer">421</var> <var class="dt-integer">422</var> <var class="dt-integer">392</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">392</var> <var class="dt-integer">422</var> <var class="dt-integer">423</var> <var class="dt-integer">393</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">393</var> <var class="dt-integer">423</var> <var class="dt-integer">424</var> <var class="dt-integer">394</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">394</var> <var class="dt-integer">424</var> <var class="dt-integer">425</var> <var class="dt-integer">395</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">395</var> <var class="dt-integer">425</var> <var class="dt-integer">426</var> <var class="dt-integer">396</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">396</var> <var class="dt-integer">426</var> <var class="dt-integer">427</var> <var class="dt-integer">397</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">397</var> <var class="dt-integer">427</var> <var class="dt-integer">428</var> <var class="dt-integer">398</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">398</var> <var class="dt-integer">428</var> <var class="dt-integer">429</var> <var class="dt-integer">399</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">399</var> <var class="dt-integer">429</var> <var class="dt-integer">430</var> <var class="dt-integer">400</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">400</var> <var class="dt-integer">430</var> <var class="dt-integer">431</var> <var class="dt-integer">401</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">401</var> <var class="dt-integer">431</var> <var class="dt-integer">432</var> <var class="dt-integer">402</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">402</var> <var class="dt-integer">432</var> <var class="dt-integer">433</var> <var class="dt-integer">403</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">403</var> <var class="dt-integer">433</var> <var class="dt-integer">434</var> <var class="dt-integer">404</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">404</var> <var class="dt-integer">434</var> <var class="dt-integer">435</var> <var class="dt-integer">405</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">405</var> <var class="dt-integer">435</var> <var class="dt-integer">436</var> <var class="dt-integer">406</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">406</var> <var class="dt-integer">436</var> <var class="dt-integer">437</var> <var class="dt-integer">407</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">407</var> <var class="dt-integer">437</var> <var class="dt-integer">438</var> <var class="dt-integer">408</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">408</var> <var class="dt-integer">438</var> <var class="dt-integer">439</var> <var class="dt-integer">409</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">409</var> <var class="dt-integer">439</var> <var class="dt-integer">440</var> <var class="dt-integer">410</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">410</var> <var class="dt-integer">440</var> <var class="dt-integer">441</var> <var class="dt-integer">411</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">411</var> <var class="dt-integer">441</var> <var class="dt-integer">442</var> <var class="dt-integer">412</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">412</var> <var class="dt-integer">442</var> <var class="dt-integer">443</var> <var class="dt-integer">413</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">413</var> <var class="dt-integer">443</var> <var class="dt-integer">444</var> <var class="dt-integer">414</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">414</var> <var class="dt-integer">444</var> <var class="dt-integer">445</var> <var class="dt-integer">415</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">415</var> <var class="dt-integer">445</var> <var class="dt-integer">446</var> <var class="dt-integer">416</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">416</var> <var class="dt-integer">446</var> <var class="dt-integer">447</var> <var class="dt-integer">417</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">417</var> <var class="dt-integer">447</var> <var class="dt-integer">448</var> <var class="dt-integer">418</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">418</var> <var class="dt-integer">448</var> <var class="dt-integer">449</var> <var class="dt-integer">419</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">419</var> <var class="dt-integer">449</var> <var class="dt-integer">450</var> <var class="dt-integer">420</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">420</var> <var class="dt-integer">450</var> <var class="dt-integer">421</var> <var class="dt-integer">391</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">14</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">421</var> <var class="dt-integer">451</var> <var class="dt-integer">452</var> <var class="dt-integer">422</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">422</var> <var class="dt-integer">452</var> <var class="dt-integer">453</var> <var class="dt-integer">423</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">423</var> <var class="dt-integer">453</var> <var class="dt-integer">454</var> <var class="dt-integer">424</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">424</var> <var class="dt-integer">454</var> <var class="dt-integer">455</var> <var class="dt-integer">425</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">425</var> <var class="dt-integer">455</var> <var class="dt-integer">456</var> <var class="dt-integer">426</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">426</var> <var class="dt-integer">456</var> <var class="dt-integer">457</var> <var class="dt-integer">427</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">427</var> <var class="dt-integer">457</var> <var class="dt-integer">458</var> <var class="dt-integer">428</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">428</var> <var class="dt-integer">458</var> <var class="dt-integer">459</var> <var class="dt-integer">429</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">429</var> <var class="dt-integer">459</var> <var class="dt-integer">460</var> <var class="dt-integer">430</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">430</var> <var class="dt-integer">460</var> <var class="dt-integer">461</var> <var class="dt-integer">431</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">431</var> <var class="dt-integer">461</var> <var class="dt-integer">462</var> <var class="dt-integer">432</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">432</var> <var class="dt-integer">462</var> <var class="dt-integer">463</var> <var class="dt-integer">433</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">433</var> <var class="dt-integer">463</var> <var class="dt-integer">464</var> <var class="dt-integer">434</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">434</var> <var class="dt-integer">464</var> <var class="dt-integer">465</var> <var class="dt-integer">435</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">435</var> <var class="dt-integer">465</var> <var class="dt-integer">466</var> <var class="dt-integer">436</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">436</var> <var class="dt-integer">466</var> <var class="dt-integer">467</var> <var class="dt-integer">437</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">437</var> <var class="dt-integer">467</var> <var class="dt-integer">468</var> <var class="dt-integer">438</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">438</var> <var class="dt-integer">468</var> <var class="dt-integer">469</var> <var class="dt-integer">439</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">439</var> <var class="dt-integer">469</var> <var class="dt-integer">470</var> <var class="dt-integer">440</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">440</var> <var class="dt-integer">470</var> <var class="dt-integer">471</var> <var class="dt-integer">441</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">441</var> <var class="dt-integer">471</var> <var class="dt-integer">472</var> <var class="dt-integer">442</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">442</var> <var class="dt-integer">472</var> <var class="dt-integer">473</var> <var class="dt-integer">443</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">443</var> <var class="dt-integer">473</var> <var class="dt-integer">474</var> <var class="dt-integer">444</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">444</var> <var class="dt-integer">474</var> <var class="dt-integer">475</var> <var class="dt-integer">445</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">445</var> <var class="dt-integer">475</var> <var class="dt-integer">476</var> <var class="dt-integer">446</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">446</var> <var class="dt-integer">476</var> <var class="dt-integer">477</var> <var class="dt-integer">447</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">447</var> <var class="dt-integer">477</var> <var class="dt-integer">478</var> <var class="dt-integer">448</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">448</var> <var class="dt-integer">478</var> <var class="dt-integer">479</var> <var class="dt-integer">449</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">449</var> <var class="dt-integer">479</var> <var class="dt-integer">480</var> <var class="dt-integer">450</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">450</var> <var class="dt-integer">480</var> <var class="dt-integer">451</var> <var class="dt-integer">421</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">15</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">451</var> <var class="dt-integer">481</var> <var class="dt-integer">482</var> <var class="dt-integer">452</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">452</var> <var class="dt-integer">482</var> <var class="dt-integer">483</var> <var class="dt-integer">453</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">453</var> <var class="dt-integer">483</var> <var class="dt-integer">484</var> <var class="dt-integer">454</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">454</var> <var class="dt-integer">484</var> <var class="dt-integer">485</var> <var class="dt-integer">455</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">455</var> <var class="dt-integer">485</var> <var class="dt-integer">486</var> <var class="dt-integer">456</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">456</var> <var class="dt-integer">486</var> <var class="dt-integer">487</var> <var class="dt-integer">457</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">457</var> <var class="dt-integer">487</var> <var class="dt-integer">488</var> <var class="dt-integer">458</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">458</var> <var class="dt-integer">488</var> <var class="dt-integer">489</var> <var class="dt-integer">459</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">459</var> <var class="dt-integer">489</var> <var class="dt-integer">490</var> <var class="dt-integer">460</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">460</var> <var class="dt-integer">490</var> <var class="dt-integer">491</var> <var class="dt-integer">461</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">461</var> <var class="dt-integer">491</var> <var class="dt-integer">492</var> <var class="dt-integer">462</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">462</var> <var class="dt-integer">492</var> <var class="dt-integer">493</var> <var class="dt-integer">463</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">463</var> <var class="dt-integer">493</var> <var class="dt-integer">494</var> <var class="dt-integer">464</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">464</var> <var class="dt-integer">494</var> <var class="dt-integer">495</var> <var class="dt-integer">465</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">465</var> <var class="dt-integer">495</var> <var class="dt-integer">496</var> <var class="dt-integer">466</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">466</var> <var class="dt-integer">496</var> <var class="dt-integer">497</var> <var class="dt-integer">467</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">467</var> <var class="dt-integer">497</var> <var class="dt-integer">498</var> <var class="dt-integer">468</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">468</var> <var class="dt-integer">498</var> <var class="dt-integer">499</var> <var class="dt-integer">469</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">469</var> <var class="dt-integer">499</var> <var class="dt-integer">500</var> <var class="dt-integer">470</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">470</var> <var class="dt-integer">500</var> <var class="dt-integer">501</var> <var class="dt-integer">471</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">471</var> <var class="dt-integer">501</var> <var class="dt-integer">502</var> <var class="dt-integer">472</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">472</var> <var class="dt-integer">502</var> <var class="dt-integer">503</var> <var class="dt-integer">473</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">473</var> <var class="dt-integer">503</var> <var class="dt-integer">504</var> <var class="dt-integer">474</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">474</var> <var class="dt-integer">504</var> <var class="dt-integer">505</var> <var class="dt-integer">475</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">475</var> <var class="dt-integer">505</var> <var class="dt-integer">506</var> <var class="dt-integer">476</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">476</var> <var class="dt-integer">506</var> <var class="dt-integer">507</var> <var class="dt-integer">477</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">477</var> <var class="dt-integer">507</var> <var class="dt-integer">508</var> <var class="dt-integer">478</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">478</var> <var class="dt-integer">508</var> <var class="dt-integer">509</var> <var class="dt-integer">479</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">479</var> <var class="dt-integer">509</var> <var class="dt-integer">510</var> <var class="dt-integer">480</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">480</var> <var class="dt-integer">510</var> <var class="dt-integer">481</var> <var class="dt-integer">451</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">16</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">481</var> <var class="dt-integer">511</var> <var class="dt-integer">512</var> <var class="dt-integer">482</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">482</var> <var class="dt-integer">512</var> <var class="dt-integer">513</var> <var class="dt-integer">483</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">483</var> <var class="dt-integer">513</var> <var class="dt-integer">514</var> <var class="dt-integer">484</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">484</var> <var class="dt-integer">514</var> <var class="dt-integer">515</var> <var class="dt-integer">485</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">485</var> <var class="dt-integer">515</var> <var class="dt-integer">516</var> <var class="dt-integer">486</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">486</var> <var class="dt-integer">516</var> <var class="dt-integer">517</var> <var class="dt-integer">487</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">487</var> <var class="dt-integer">517</var> <var class="dt-integer">518</var> <var class="dt-integer">488</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">488</var> <var class="dt-integer">518</var> <var class="dt-integer">519</var> <var class="dt-integer">489</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">489</var> <var class="dt-integer">519</var> <var class="dt-integer">520</var> <var class="dt-integer">490</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">490</var> <var class="dt-integer">520</var> <var class="dt-integer">521</var> <var class="dt-integer">491</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">491</var> <var class="dt-integer">521</var> <var class="dt-integer">522</var> <var class="dt-integer">492</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">492</var> <var class="dt-integer">522</var> <var class="dt-integer">523</var> <var class="dt-integer">493</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">493</var> <var class="dt-integer">523</var> <var class="dt-integer">524</var> <var class="dt-integer">494</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">494</var> <var class="dt-integer">524</var> <var class="dt-integer">525</var> <var class="dt-integer">495</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">495</var> <var class="dt-integer">525</var> <var class="dt-integer">526</var> <var class="dt-integer">496</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">496</var> <var class="dt-integer">526</var> <var class="dt-integer">527</var> <var class="dt-integer">497</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">497</var> <var class="dt-integer">527</var> <var class="dt-integer">528</var> <var class="dt-integer">498</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">498</var> <var class="dt-integer">528</var> <var class="dt-integer">529</var> <var class="dt-integer">499</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">499</var> <var class="dt-integer">529</var> <var class="dt-integer">530</var> <var class="dt-integer">500</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">500</var> <var class="dt-integer">530</var> <var class="dt-integer">531</var> <var class="dt-integer">501</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">501</var> <var class="dt-integer">531</var> <var class="dt-integer">532</var> <var class="dt-integer">502</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">502</var> <var class="dt-integer">532</var> <var class="dt-integer">533</var> <var class="dt-integer">503</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">503</var> <var class="dt-integer">533</var> <var class="dt-integer">534</var> <var class="dt-integer">504</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">504</var> <var class="dt-integer">534</var> <var class="dt-integer">535</var> <var class="dt-integer">505</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">505</var> <var class="dt-integer">535</var> <var class="dt-integer">536</var> <var class="dt-integer">506</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">506</var> <var class="dt-integer">536</var> <var class="dt-integer">537</var> <var class="dt-integer">507</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">507</var> <var class="dt-integer">537</var> <var class="dt-integer">538</var> <var class="dt-integer">508</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">508</var> <var class="dt-integer">538</var> <var class="dt-integer">539</var> <var class="dt-integer">509</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">509</var> <var class="dt-integer">539</var> <var class="dt-integer">540</var> <var class="dt-integer">510</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">510</var> <var class="dt-integer">540</var> <var class="dt-integer">511</var> <var class="dt-integer">481</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">17</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">511</var> <var class="dt-integer">541</var> <var class="dt-integer">542</var> <var class="dt-integer">512</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">512</var> <var class="dt-integer">542</var> <var class="dt-integer">543</var> <var class="dt-integer">513</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">513</var> <var class="dt-integer">543</var> <var class="dt-integer">544</var> <var class="dt-integer">514</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">514</var> <var class="dt-integer">544</var> <var class="dt-integer">545</var> <var class="dt-integer">515</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">515</var> <var class="dt-integer">545</var> <var class="dt-integer">546</var> <var class="dt-integer">516</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">516</var> <var class="dt-integer">546</var> <var class="dt-integer">547</var> <var class="dt-integer">517</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">517</var> <var class="dt-integer">547</var> <var class="dt-integer">548</var> <var class="dt-integer">518</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">518</var> <var class="dt-integer">548</var> <var class="dt-integer">549</var> <var class="dt-integer">519</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">519</var> <var class="dt-integer">549</var> <var class="dt-integer">550</var> <var class="dt-integer">520</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">520</var> <var class="dt-integer">550</var> <var class="dt-integer">551</var> <var class="dt-integer">521</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">521</var> <var class="dt-integer">551</var> <var class="dt-integer">552</var> <var class="dt-integer">522</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">522</var> <var class="dt-integer">552</var> <var class="dt-integer">553</var> <var class="dt-integer">523</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">523</var> <var class="dt-integer">553</var> <var class="dt-integer">554</var> <var class="dt-integer">524</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">524</var> <var class="dt-integer">554</var> <var class="dt-integer">555</var> <var class="dt-integer">525</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">525</var> <var class="dt-integer">555</var> <var class="dt-integer">556</var> <var class="dt-integer">526</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">526</var> <var class="dt-integer">556</var> <var class="dt-integer">557</var> <var class="dt-integer">527</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">527</var> <var class="dt-integer">557</var> <var class="dt-integer">558</var> <var class="dt-integer">528</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">528</var> <var class="dt-integer">558</var> <var class="dt-integer">559</var> <var class="dt-integer">529</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">529</var> <var class="dt-integer">559</var> <var class="dt-integer">560</var> <var class="dt-integer">530</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">530</var> <var class="dt-integer">560</var> <var class="dt-integer">561</var> <var class="dt-integer">531</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">531</var> <var class="dt-integer">561</var> <var class="dt-integer">562</var> <var class="dt-integer">532</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">532</var> <var class="dt-integer">562</var> <var class="dt-integer">563</var> <var class="dt-integer">533</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">533</var> <var class="dt-integer">563</var> <var class="dt-integer">564</var> <var class="dt-integer">534</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">534</var> <var class="dt-integer">564</var> <var class="dt-integer">565</var> <var class="dt-integer">535</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">535</var> <var class="dt-integer">565</var> <var class="dt-integer">566</var> <var class="dt-integer">536</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">536</var> <var class="dt-integer">566</var> <var class="dt-integer">567</var> <var class="dt-integer">537</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">537</var> <var class="dt-integer">567</var> <var class="dt-integer">568</var> <var class="dt-integer">538</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">538</var> <var class="dt-integer">568</var> <var class="dt-integer">569</var> <var class="dt-integer">539</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">539</var> <var class="dt-integer">569</var> <var class="dt-integer">570</var> <var class="dt-integer">540</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">540</var> <var class="dt-integer">570</var> <var class="dt-integer">541</var> <var class="dt-integer">511</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">18</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">541</var> <var class="dt-integer">571</var> <var class="dt-integer">572</var> <var class="dt-integer">542</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">542</var> <var class="dt-integer">572</var> <var class="dt-integer">573</var> <var class="dt-integer">543</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">543</var> <var class="dt-integer">573</var> <var class="dt-integer">574</var> <var class="dt-integer">544</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">544</var> <var class="dt-integer">574</var> <var class="dt-integer">575</var> <var class="dt-integer">545</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">545</var> <var class="dt-integer">575</var> <var class="dt-integer">576</var> <var class="dt-integer">546</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">546</var> <var class="dt-integer">576</var> <var class="dt-integer">577</var> <var class="dt-integer">547</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">547</var> <var class="dt-integer">577</var> <var class="dt-integer">578</var> <var class="dt-integer">548</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">548</var> <var class="dt-integer">578</var> <var class="dt-integer">579</var> <var class="dt-integer">549</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">549</var> <var class="dt-integer">579</var> <var class="dt-integer">580</var> <var class="dt-integer">550</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">550</var> <var class="dt-integer">580</var> <var class="dt-integer">581</var> <var class="dt-integer">551</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">551</var> <var class="dt-integer">581</var> <var class="dt-integer">582</var> <var class="dt-integer">552</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">552</var> <var class="dt-integer">582</var> <var class="dt-integer">583</var> <var class="dt-integer">553</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">553</var> <var class="dt-integer">583</var> <var class="dt-integer">584</var> <var class="dt-integer">554</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">554</var> <var class="dt-integer">584</var> <var class="dt-integer">585</var> <var class="dt-integer">555</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">555</var> <var class="dt-integer">585</var> <var class="dt-integer">586</var> <var class="dt-integer">556</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">556</var> <var class="dt-integer">586</var> <var class="dt-integer">587</var> <var class="dt-integer">557</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">557</var> <var class="dt-integer">587</var> <var class="dt-integer">588</var> <var class="dt-integer">558</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">558</var> <var class="dt-integer">588</var> <var class="dt-integer">589</var> <var class="dt-integer">559</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">559</var> <var class="dt-integer">589</var> <var class="dt-integer">590</var> <var class="dt-integer">560</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">560</var> <var class="dt-integer">590</var> <var class="dt-integer">591</var> <var class="dt-integer">561</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">561</var> <var class="dt-integer">591</var> <var class="dt-integer">592</var> <var class="dt-integer">562</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">562</var> <var class="dt-integer">592</var> <var class="dt-integer">593</var> <var class="dt-integer">563</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">563</var> <var class="dt-integer">593</var> <var class="dt-integer">594</var> <var class="dt-integer">564</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">564</var> <var class="dt-integer">594</var> <var class="dt-integer">595</var> <var class="dt-integer">565</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">565</var> <var class="dt-integer">595</var> <var class="dt-integer">596</var> <var class="dt-integer">566</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">566</var> <var class="dt-integer">596</var> <var class="dt-integer">597</var> <var class="dt-integer">567</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">567</var> <var class="dt-integer">597</var> <var class="dt-integer">598</var> <var class="dt-integer">568</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">568</var> <var class="dt-integer">598</var> <var class="dt-integer">599</var> <var class="dt-integer">569</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">569</var> <var class="dt-integer">599</var> <var class="dt-integer">600</var> <var class="dt-integer">570</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">570</var> <var class="dt-integer">600</var> <var class="dt-integer">571</var> <var class="dt-integer">541</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">19</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">571</var> <var class="dt-integer">601</var> <var class="dt-integer">602</var> <var class="dt-integer">572</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">572</var> <var class="dt-integer">602</var> <var class="dt-integer">603</var> <var class="dt-integer">573</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">573</var> <var class="dt-integer">603</var> <var class="dt-integer">604</var> <var class="dt-integer">574</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">574</var> <var class="dt-integer">604</var> <var class="dt-integer">605</var> <var class="dt-integer">575</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">575</var> <var class="dt-integer">605</var> <var class="dt-integer">606</var> <var class="dt-integer">576</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">576</var> <var class="dt-integer">606</var> <var class="dt-integer">607</var> <var class="dt-integer">577</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">577</var> <var class="dt-integer">607</var> <var class="dt-integer">608</var> <var class="dt-integer">578</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">578</var> <var class="dt-integer">608</var> <var class="dt-integer">609</var> <var class="dt-integer">579</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">579</var> <var class="dt-integer">609</var> <var class="dt-integer">610</var> <var class="dt-integer">580</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">580</var> <var class="dt-integer">610</var> <var class="dt-integer">611</var> <var class="dt-integer">581</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">581</var> <var class="dt-integer">611</var> <var class="dt-integer">612</var> <var class="dt-integer">582</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">582</var> <var class="dt-integer">612</var> <var class="dt-integer">613</var> <var class="dt-integer">583</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">583</var> <var class="dt-integer">613</var> <var class="dt-integer">614</var> <var class="dt-integer">584</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">584</var> <var class="dt-integer">614</var> <var class="dt-integer">615</var> <var class="dt-integer">585</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">585</var> <var class="dt-integer">615</var> <var class="dt-integer">616</var> <var class="dt-integer">586</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">586</var> <var class="dt-integer">616</var> <var class="dt-integer">617</var> <var class="dt-integer">587</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">587</var> <var class="dt-integer">617</var> <var class="dt-integer">618</var> <var class="dt-integer">588</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">588</var> <var class="dt-integer">618</var> <var class="dt-integer">619</var> <var class="dt-integer">589</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">589</var> <var class="dt-integer">619</var> <var class="dt-integer">620</var> <var class="dt-integer">590</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">590</var> <var class="dt-integer">620</var> <var class="dt-integer">621</var> <var class="dt-integer">591</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">591</var> <var class="dt-integer">621</var> <var class="dt-integer">622</var> <var class="dt-integer">592</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">592</var> <var class="dt-integer">622</var> <var class="dt-integer">623</var> <var class="dt-integer">593</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">593</var> <var class="dt-integer">623</var> <var class="dt-integer">624</var> <var class="dt-integer">594</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">594</var> <var class="dt-integer">624</var> <var class="dt-integer">625</var> <var class="dt-integer">595</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">595</var> <var class="dt-integer">625</var> <var class="dt-integer">626</var> <var class="dt-integer">596</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">596</var> <var class="dt-integer">626</var> <var class="dt-integer">627</var> <var class="dt-integer">597</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">597</var> <var class="dt-integer">627</var> <var class="dt-integer">628</var> <var class="dt-integer">598</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">598</var> <var class="dt-integer">628</var> <var class="dt-integer">629</var> <var class="dt-integer">599</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">599</var> <var class="dt-integer">629</var> <var class="dt-integer">630</var> <var class="dt-integer">600</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">600</var> <var class="dt-integer">630</var> <var class="dt-integer">601</var> <var class="dt-integer">571</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">20</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">601</var> <var class="dt-integer">631</var> <var class="dt-integer">632</var> <var class="dt-integer">602</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">602</var> <var class="dt-integer">632</var> <var class="dt-integer">633</var> <var class="dt-integer">603</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">603</var> <var class="dt-integer">633</var> <var class="dt-integer">634</var> <var class="dt-integer">604</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">604</var> <var class="dt-integer">634</var> <var class="dt-integer">635</var> <var class="dt-integer">605</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">605</var> <var class="dt-integer">635</var> <var class="dt-integer">636</var> <var class="dt-integer">606</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">606</var> <var class="dt-integer">636</var> <var class="dt-integer">637</var> <var class="dt-integer">607</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">607</var> <var class="dt-integer">637</var> <var class="dt-integer">638</var> <var class="dt-integer">608</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">608</var> <var class="dt-integer">638</var> <var class="dt-integer">639</var> <var class="dt-integer">609</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">609</var> <var class="dt-integer">639</var> <var class="dt-integer">640</var> <var class="dt-integer">610</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">610</var> <var class="dt-integer">640</var> <var class="dt-integer">641</var> <var class="dt-integer">611</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">611</var> <var class="dt-integer">641</var> <var class="dt-integer">642</var> <var class="dt-integer">612</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">612</var> <var class="dt-integer">642</var> <var class="dt-integer">643</var> <var class="dt-integer">613</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">613</var> <var class="dt-integer">643</var> <var class="dt-integer">644</var> <var class="dt-integer">614</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">614</var> <var class="dt-integer">644</var> <var class="dt-integer">645</var> <var class="dt-integer">615</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">615</var> <var class="dt-integer">645</var> <var class="dt-integer">646</var> <var class="dt-integer">616</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">616</var> <var class="dt-integer">646</var> <var class="dt-integer">647</var> <var class="dt-integer">617</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">617</var> <var class="dt-integer">647</var> <var class="dt-integer">648</var> <var class="dt-integer">618</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">618</var> <var class="dt-integer">648</var> <var class="dt-integer">649</var> <var class="dt-integer">619</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">619</var> <var class="dt-integer">649</var> <var class="dt-integer">650</var> <var class="dt-integer">620</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">620</var> <var class="dt-integer">650</var> <var class="dt-integer">651</var> <var class="dt-integer">621</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">621</var> <var class="dt-integer">651</var> <var class="dt-integer">652</var> <var class="dt-integer">622</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">622</var> <var class="dt-integer">652</var> <var class="dt-integer">653</var> <var class="dt-integer">623</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">623</var> <var class="dt-integer">653</var> <var class="dt-integer">654</var> <var class="dt-integer">624</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">624</var> <var class="dt-integer">654</var> <var class="dt-integer">655</var> <var class="dt-integer">625</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">625</var> <var class="dt-integer">655</var> <var class="dt-integer">656</var> <var class="dt-integer">626</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">626</var> <var class="dt-integer">656</var> <var class="dt-integer">657</var> <var class="dt-integer">627</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">627</var> <var class="dt-integer">657</var> <var class="dt-integer">658</var> <var class="dt-integer">628</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">628</var> <var class="dt-integer">658</var> <var class="dt-integer">659</var> <var class="dt-integer">629</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">629</var> <var class="dt-integer">659</var> <var class="dt-integer">660</var> <var class="dt-integer">630</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>] [[<var class="dt-integer">630</var> <var class="dt-integer">660</var> <var class="dt-integer">631</var> <var class="dt-integer">601</var>] false [<var class="dt-integer">2</var> <var class="dt-integer">21</var>] <var class="dt-integer">0</var>]] [<var class="dt-tuple">138.28.139</var> <var class="dt-tuple">152.30.155</var> <var class="dt-tuple">165.35.173</var> <var class="dt-tuple">178.41.189</var> <var class="dt-tuple">189.49.203</var> <var class="dt-tuple">199.58.214</var> <var class="dt-tuple">208.69.221</var> <var class="dt-tuple">216.81.225</var> <var class="dt-tuple">221.93.227</var> <var class="dt-tuple">225.107.227</var> <var class="dt-tuple">227.121.227</var> <var class="dt-tuple">227.134.227</var> <var class="dt-tuple">225.148.227</var> <var class="dt-tuple">221.162.227</var> <var class="dt-tuple">216.174.225</var> <var class="dt-tuple">208.186.221</var> <var class="dt-tuple">199.197.214</var> <var class="dt-tuple">189.206.203</var> <var class="dt-tuple">178.214.189</var> <var class="dt-tuple">165.220.173</var> <var class="dt-tuple">152.225.155</var> <var class="dt-tuple">138.227.139</var>]<br />
]<br />
]<br />
<var class="dt-set-word">camera:</var> [<var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">10</var> <var class="dt-integer">0</var> <var class="dt-integer">0</var> <var class="dt-integer">400</var> <var class="dt-integer">400</var>] <var class="dt-cmt">; x y z a1 a2 xsc ysc<br />
</var><br />
<var class="dt-cmt">; Split an image<br />
</var><var class="dt-set-word">fn-split-image:</var> <var class="dt-function">func</var> [x [<var class="dt-datatype">integer!</var>] y [<var class="dt-datatype">integer!</var>] img-file [<var class="dt-datatype">file!</var> <var class="dt-datatype">URL!</var>]] [<br />
<var class="dt-function">context</var> [<br />
<var class="dt-set-word">img:</var> <var class="dt-function">load</var> img-file<br />
<var class="dt-set-word">sz:</var> img/size<br />
<var class="dt-set-path">sz/x:</var> sz/x <var class="dt-function">/</var> x<br />
<var class="dt-set-path">sz/y:</var> sz/y <var class="dt-function">/</var> y<br />
<var class="dt-set-word">off:</var> <var class="dt-pair">0x0</var><br />
<var class="dt-set-word">dx:</var> sz <var class="dt-function">*</var> <var class="dt-pair">1x0</var><br />
<var class="dt-set-word">dy:</var> sz <var class="dt-function">*</var> <var class="dt-pair">0x1</var><br />
<var class="dt-set-word">c:</var> <var class="dt-integer">0</var><br />
<var class="dt-function">for</var> i <var class="dt-integer">0</var> (y <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-integer">1</var> [<br />
<var class="dt-function">for</var> j <var class="dt-integer">0</var> (x <var class="dt-function">-</var> <var class="dt-integer">1</var>) <var class="dt-integer">1</var> [<br />
<var class="dt-set-word">off:</var> (j <var class="dt-function">*</var> dx) <var class="dt-function">+</var> (i <var class="dt-function">*</var> dy) <br />
<var class="dt-set-word">c:</var> c <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> objs/1/5/:c/3 <var class="dt-integer">1</var> <var class="dt-integer">1</var><br />
<var class="dt-function">poke</var> objs/1/5/:c/3 <var class="dt-integer">2</var> <var class="dt-function">copy/part</var> <var class="dt-function">skip</var> img off sz<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-cmt">; draw order for all faces<br />
</var><var class="dt-set-word">draw-o:</var> []<br />
<var class="dt-cmt">; draw block<br />
</var><var class="dt-set-word">draw-bl:</var> []<br />
<var class="dt-cmt">; Auto rotate<br />
</var><var class="dt-set-word">rot:</var> true<br />
<var class="dt-cmt">; Perform a rotation on a 3D Object<br />
</var><var class="dt-set-word">fn-rot:</var> <var class="dt-function">func</var> [obj [<var class="dt-datatype">block!</var>]][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-set-word">c1:</var> <var class="dt-function">cosine</var> obj/1/4<br />
<var class="dt-set-word">c2:</var> <var class="dt-function">cosine</var> obj/1/5<br />
<var class="dt-set-word">c3:</var> <var class="dt-function">cosine</var> obj/1/6<br />
<var class="dt-set-word">s1:</var> <var class="dt-function">sine</var> obj/1/4<br />
<var class="dt-set-word">s2:</var> <var class="dt-function">sine</var> obj/1/5<br />
<var class="dt-set-word">s3:</var> <var class="dt-function">sine</var> obj/1/6<br />
<var class="dt-function">clear</var> obj/3<br />
<var class="dt-function">clear</var> obj/4<br />
<var class="dt-set-path">obj/3:</var> <var class="dt-function">copy/deep</var> obj/2<br />
<var class="dt-cmt">; calculate the perspective of the points after the roation & translation<br />
</var> <var class="dt-function">foreach</var> point obj/3 [<br />
<var class="dt-cmt">; Roation about z axis<br />
</var> <var class="dt-set-word">x1:</var> (point/1 <var class="dt-function">*</var> c1) <var class="dt-function">-</var> (point/2 <var class="dt-function">*</var> s1)<br />
<var class="dt-set-word">y1:</var> (point/1 <var class="dt-function">*</var> s1) <var class="dt-function">+</var> (point/2 <var class="dt-function">*</var> c1) <br />
<var class="dt-set-word">z1:</var> point/3<br />
<var class="dt-cmt">; Roation about y axis<br />
</var> <var class="dt-set-word">x2:</var> (x1 <var class="dt-function">*</var> c2) <var class="dt-function">+</var> (point/3 <var class="dt-function">*</var> s2) <br />
<var class="dt-set-word">y2:</var> y1<br />
<var class="dt-set-word">z2:</var> <var class="dt-function">-</var> (x1 <var class="dt-function">*</var> s2) <var class="dt-function">+</var> (point/3 <var class="dt-function">*</var> c2) <br />
<br />
<var class="dt-set-word">x3:</var> x2 <var class="dt-function">+</var> obj/1/1<br />
<var class="dt-set-word">y3:</var> (y2 <var class="dt-function">*</var> c3) <var class="dt-function">-</var> (z2 <var class="dt-function">*</var> s3) <var class="dt-function">+</var> obj/1/2<br />
<var class="dt-set-word">z3:</var> (y2 <var class="dt-function">*</var> s3) <var class="dt-function">+</var> (z2 <var class="dt-function">*</var> c3) <var class="dt-function">+</var> obj/1/3<br />
<var class="dt-function">poke</var> point <var class="dt-integer">1</var> (x3 <var class="dt-function">+</var> camera/1)<br />
<var class="dt-function">poke</var> point <var class="dt-integer">2</var> (y3 <var class="dt-function">+</var> camera/2)<br />
<var class="dt-function">poke</var> point <var class="dt-integer">3</var> (z3 <var class="dt-function">+</var> camera/3)<br />
<var class="dt-set-word">x:</var> point/1 <var class="dt-function">/</var> point/3 <var class="dt-function">*</var> camera/6<br />
<var class="dt-set-word">y:</var> point/2 <var class="dt-function">/</var> point/3 <var class="dt-function">*</var> camera/7<br />
<var class="dt-function">append</var> obj/4 <var class="dt-function">to</var> <var class="dt-datatype">pair!</var> <var class="dt-function">reduce</var>[(x <var class="dt-function">+</var> <var class="dt-integer">250</var>) (y <var class="dt-function">+</var> <var class="dt-integer">250</var>)]<br />
]<br />
<var class="dt-function">foreach</var> f obj/5 [<br />
<var class="dt-set-word">p1:</var> f/1/1<br />
<var class="dt-set-word">p2:</var> f/1/2<br />
<var class="dt-set-word">p3:</var> f/1/3<br />
<var class="dt-set-word">d1:</var> <var class="dt-function">reduce</var> [(obj/3/:p2/1 <var class="dt-function">-</var> obj/3/:p1/1) (obj/3/:p2/2 <var class="dt-function">-</var> obj/3/:p1/2) (obj/3/:p2/3 <var class="dt-function">-</var> obj/3/:p1/3)]<br />
<var class="dt-set-word">d2:</var> <var class="dt-function">reduce</var> [(obj/3/:p3/1 <var class="dt-function">-</var> obj/3/:p1/1) (obj/3/:p3/2 <var class="dt-function">-</var> obj/3/:p1/2) (obj/3/:p3/3 <var class="dt-function">-</var> obj/3/:p1/3)]<br />
<var class="dt-function">poke</var> f <var class="dt-integer">4</var> (<var class="dt-integer">-2</var> <var class="dt-function">*</var> obj/3/:p1/3 <var class="dt-function">-</var> d1/3 <var class="dt-function">-</var> d2/3)<br />
<var class="dt-set-word">n1:</var> (d1/2 <var class="dt-function">*</var> d2/3) <var class="dt-function">-</var> (d1/3 <var class="dt-function">*</var> d2/2)<br />
<var class="dt-set-word">n2:</var> <var class="dt-function">-</var> (d1/1 <var class="dt-function">*</var> d2/3) <var class="dt-function">+</var> (d1/3 <var class="dt-function">*</var> d2/1)<br />
<var class="dt-set-word">n3:</var> (d1/1 <var class="dt-function">*</var> d2/2) <var class="dt-function">-</var> (d1/2 <var class="dt-function">*</var> d2/1)<br />
<var class="dt-set-word">v:</var> <var class="dt-integer">0</var> <var class="dt-function">></var> ((obj/3/:p1/1 <var class="dt-function">*</var> n1) <var class="dt-function">+</var> (obj/3/:p1/2 <var class="dt-function">*</var> n2) <var class="dt-function">+</var> (obj/3/:p1/3 <var class="dt-function">*</var> n3))<br />
<var class="dt-function">poke</var> f <var class="dt-integer">2</var> v<br />
]<br />
]<br />
]<br />
<var class="dt-cmt">; Create a draw block and show the face<br />
</var><var class="dt-set-word">fn-show:</var> <var class="dt-function">func</var> [][<br />
<var class="dt-function">context</var> [<br />
<var class="dt-cmt">; setup the faces to be shown<br />
</var> <var class="dt-set-word">pts:</var> []<br />
<var class="dt-function">clear</var> draw-o<br />
<var class="dt-function">foreach</var> o objs [<br />
<var class="dt-function">foreach</var> f o/5 [<br />
<var class="dt-function">if</var> f/2 <var class="dt-function">=</var> true [<br />
<var class="dt-function">append</var> draw-o f/4<br />
<var class="dt-function">switch</var> f/3/1 [<br />
<var class="dt-integer">1</var> [<var class="dt-function">append/only</var> draw-o <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> f/3/2 <var class="dt-function">pick</var> o/4 f/1/1 <var class="dt-function">pick</var> o/4 f/1/4 <var class="dt-function">pick</var> o/4 f/1/3 <var class="dt-function">pick</var> o/4 f/1/2]]<br />
<var class="dt-integer">2</var> [<br />
<var class="dt-set-word">pts:</var> <var class="dt-function">copy</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'fill-pen</var> (<var class="dt-function">pick</var> o/6 f/3/2) <var class="dt-lit-word">'polygon</var>]<br />
<var class="dt-function">foreach</var> coord f/1 [<var class="dt-function">append</var> pts <var class="dt-function">pick</var> o/4 coord]<br />
<var class="dt-function">append/only</var> draw-o pts<br />
]<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-cmt">; sort the faces<br />
</var> <var class="dt-function">sort/skip</var> draw-o <var class="dt-integer">2</var><br />
<br />
<var class="dt-cmt">; reset the draw-block<br />
</var> <var class="dt-function">clear</var> draw-bl<br />
<var class="dt-function">append</var> draw-bl <var class="dt-function">reduce</var> [<var class="dt-lit-word">'anti-alias</var> <var class="dt-lit-word">'off</var> <var class="dt-lit-word">'pen</var> black]<br />
<br />
<var class="dt-cmt">; create the draw block<br />
</var> <var class="dt-function">forskip</var> draw-o <var class="dt-integer">2</var> [<var class="dt-function">append</var> draw-bl draw-o/2]<br />
<br />
<var class="dt-cmt">; show the face<br />
</var> <var class="dt-function">show</var> f-box <br />
<var class="dt-set-path">f-angles/text:</var> <var class="dt-function">rejoin</var> [<var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/1/4 <var class="dt-string">" / "</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/1/5 <var class="dt-string">" / "</var> <var class="dt-function">to</var> <var class="dt-datatype">string!</var> objs/1/1/6]<br />
<var class="dt-function">show</var> f-angles<br />
]<br />
]<br />
<var class="dt-cmt">; Instructions<br />
</var><var class="dt-cmt">;alert "Select an Image to map onto a sphere"<br />
</var><br />
<var class="dt-cmt">; Initial Rotation<br />
</var><var class="dt-function">foreach</var> o objs [fn-rot o]<br />
<var class="dt-set-word">fn-req-image:</var> <var class="dt-function">func</var> []<br />
[<br />
<var class="dt-cmt">; Get Picture<br />
</var><var class="dt-set-word">pic:</var> <var class="dt-function">request-file/title/path/keep</var> <var class="dt-string">"Select an Image"</var> <var class="dt-string">"OK"</var> <var class="dt-file">%.</var><br />
<var class="dt-function">if</var> pic <var class="dt-function">=</var> none [<var class="dt-function">alert</var> <var class="dt-string">"No image selected"</var> <var class="dt-function">quit</var>]<br />
fn-split-image <var class="dt-integer">30</var> <var class="dt-integer">21</var> <var class="dt-function">rejoin</var> [pic/1 pic/2]<br />
]<br />
<var class="dt-cmt">;fn-req-image<br />
</var> <br />
fn-split-image <var class="dt-integer">30</var> <var class="dt-integer">21</var> <var class="dt-url">http://www.evl.uic.edu/pape/data/Earth/512/BigEarth.jpg</var><br />
<var class="dt-set-word">lv-lay:</var> <var class="dt-function">layout</var> [<br />
across<br />
backdrop <var class="dt-tuple">10.120.10</var><br />
banner <var class="dt-string">"Map Picture ontp a 3D Sphere"</var><br />
<var class="dt-function">return</var><br />
vh2 <var class="dt-string">"Rotate - left, right, up, down, page-up, page-down"</var><br />
<var class="dt-function">return</var><br />
vh2 <var class="dt-string">"Zoom - ^"+^" ^"-^""</var> font-fixed<br />
<var class="dt-function">return</var><br />
<var class="dt-set-word">f-box:</var> box <var class="dt-pair">500x500</var> effect [<var class="dt-function">draw</var> draw-bl] rate <var class="dt-integer">60</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">2x2</var> <var class="dt-set-word">color:</var> gray <var class="dt-set-word">effect:</var> <var class="dt-lit-word">'bevel</var>]<br />
feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event][<br />
<var class="dt-function">if</var> <var class="dt-function">all</var>[action <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> rot][<br />
<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">3</var> <var class="dt-function">if</var> objs/1/1/4 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">0</var> <var class="dt-function">if</var> objs/1/1/5 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">+</var> <var class="dt-integer">0</var> <var class="dt-function">if</var> objs/1/1/6 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">-</var> <var class="dt-integer">360</var>]<br />
fn-rot objs/1<br />
fn-show<br />
]<br />
]<br />
]<br />
<var class="dt-function">return</var><br />
sensor <var class="dt-pair">0x0</var> keycode [up down left right page-up page-down <var class="dt-char">#"+"</var> <var class="dt-char">#"-"</var>] [<br />
<var class="dt-function">switch</var> value [<br />
up [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/4 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">360</var>]]<br />
down [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/4 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/4:</var> objs/1/1/4 <var class="dt-function">+</var> <var class="dt-integer">360</var>]]<br />
left [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/5 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">360</var>]]<br />
right [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/5 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/5:</var> objs/1/1/5 <var class="dt-function">+</var> <var class="dt-integer">360</var>]]<br />
page-up [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">+</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/6 <var class="dt-function">></var> <var class="dt-integer">360</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">-</var> <var class="dt-integer">360</var>]]<br />
page-down [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">-</var> <var class="dt-integer">5</var> fn-rot objs/1 fn-show <var class="dt-function">if</var> objs/1/1/6 <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-path">objs/1/1/6:</var> objs/1/1/6 <var class="dt-function">+</var> <var class="dt-integer">360</var>]]<br />
<var class="dt-char">#"+"</var> [<var class="dt-function">if</var> camera/6 <var class="dt-function"><</var> <var class="dt-integer">2000</var> [<var class="dt-set-path">camera/6:</var> camera/6 <var class="dt-function">+</var> <var class="dt-integer">10</var> <var class="dt-set-path">camera/7:</var> camera/7 <var class="dt-function">+</var> <var class="dt-integer">10</var> fn-rot objs/1 fn-show]]<br />
<var class="dt-char">#"-"</var> [<var class="dt-function">if</var> camera/6 <var class="dt-function">></var> <var class="dt-integer">200</var> [<var class="dt-set-path">camera/6:</var> camera/6 <var class="dt-function">-</var> <var class="dt-integer">10</var> <var class="dt-set-path">camera/7:</var> camera/7 <var class="dt-function">-</var> <var class="dt-integer">10</var> fn-rot objs/1 fn-show]]<br />
] <br />
]<br />
btn <var class="dt-string">"New Image"</var> [fn-req-image]<br />
btn <var class="dt-string">"Auto-Rotate"</var> [<var class="dt-function">either</var> rot [<var class="dt-set-word">rot:</var> false][<var class="dt-set-word">rot:</var> true]]<br />
<var class="dt-set-word">f-angles:</var> field <var class="dt-integer">400</var> <br />
]<br />
fn-show <br />
<var class="dt-function">view</var> lv-lay<br />
<var class="dt-function">quit</var> <br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-88169644166104351002013-11-27T05:11:00.004-08:002013-11-27T05:11:49.821-08:00Snake gameNick Antonaccio made the following snake game:<br />
<a href="http://4.bp.blogspot.com/-XigkAvh9fPA/UpXvTQr-CfI/AAAAAAAACRA/HQE-XwJL8EI/s1600/Snake.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-XigkAvh9fPA/UpXvTQr-CfI/AAAAAAAACRA/HQE-XwJL8EI/s320/Snake.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
File: %snake-game.r<br />
Date: 19-Aug-2009<br />
Title: "Snake Game"<br />
Author: Nick Antonaccio<br />
Purpose: {<br />
A little graphic game. <br />
Taken from the tutorial at http://musiclessonz.com/rebol.html<br />
}<br />
]<br />
<var class="dt-set-word">snake:</var> <var class="dt-function">to-image</var> <var class="dt-function">layout/tight</var> [button red <var class="dt-pair">10x10</var>]<br />
<var class="dt-set-word">food:</var> <var class="dt-function">to-image</var> <var class="dt-function">layout/tight</var> [button green <var class="dt-pair">10x10</var>]<br />
<var class="dt-set-word">the-score:</var> <var class="dt-integer">0</var> <var class="dt-set-word">direction:</var> <var class="dt-pair">0x10</var> <var class="dt-set-word">newsection:</var> false <var class="dt-function">random/seed</var> <var class="dt-function">now</var><br />
<var class="dt-set-word">rand-pair:</var> <var class="dt-function">func</var> [s] [<br />
<var class="dt-function">to-pair</var> <var class="dt-function">rejoin</var> [(<var class="dt-function">round/to</var> <var class="dt-function">random</var> s <var class="dt-integer">10</var>) <var class="dt-string">"x"</var> (<var class="dt-function">round/to</var> <var class="dt-function">random</var> s <var class="dt-integer">10</var>)]<br />
]<br />
<var class="dt-set-word">b:</var> <var class="dt-function">reduce</var> [<br />
<var class="dt-lit-word">'image</var> food ((rand-pair <var class="dt-integer">190</var>) <var class="dt-function">+</var> <var class="dt-pair">50x50</var>) <br />
<var class="dt-lit-word">'image</var> snake ((rand-pair <var class="dt-integer">190</var>) <var class="dt-function">+</var> <var class="dt-pair">50x50</var>)<br />
]<br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> <var class="dt-function">layout/tight</var> <var class="dt-set-word">gui:</var> [<br />
<var class="dt-set-word">scrn:</var> box white <var class="dt-pair">300x300</var> effect [<var class="dt-function">draw</var> b] rate <var class="dt-integer">15</var> feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'key</var> [<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'up</var> [<var class="dt-set-word">direction:</var> <var class="dt-pair">0x-10</var>]<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'down</var> [<var class="dt-set-word">direction:</var> <var class="dt-pair">0x10</var>]<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'left</var> [<var class="dt-set-word">direction:</var> <var class="dt-pair">-10x0</var>]<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'right</var> [<var class="dt-set-word">direction:</var> <var class="dt-pair">10x0</var>]<br />
]<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">any</var> [b/6/1 <var class="dt-function"><</var> <var class="dt-integer">0</var> b/6/2 <var class="dt-function"><</var> <var class="dt-integer">0</var> b/6/1 <var class="dt-function">></var> <var class="dt-integer">290</var> b/6/2 <var class="dt-function">></var> <var class="dt-integer">290</var>] [<var class="dt-function">alert</var> <var class="dt-string">"You hit the wall!"</var> <var class="dt-function">quit</var> ]<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> (<var class="dt-function">at</var> b <var class="dt-integer">7</var>) b/6 [<var class="dt-function">alert</var> <var class="dt-string">"You hit yourself!"</var> <var class="dt-function">quit</var>] <br />
<var class="dt-function">if</var> <var class="dt-function">within?</var> b/6 b/3 <var class="dt-pair">10x10</var> [<br />
<var class="dt-function">append</var> b <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> snake (<var class="dt-function">last</var> b)]<br />
<var class="dt-set-word">newsection:</var> true<br />
<var class="dt-set-path">b/3:</var> (rand-pair <var class="dt-integer">290</var>)<br />
]<br />
<var class="dt-set-word">newb:</var> <var class="dt-function">copy/part</var> <var class="dt-function">head</var> b <var class="dt-integer">5</var> <var class="dt-function">append</var> newb (b/6 <var class="dt-function">+</var> direction)<br />
<var class="dt-function">for</var> item <var class="dt-integer">7</var> (<var class="dt-function">length?</var> <var class="dt-function">head</var> b) <var class="dt-integer">1</var> [<br />
<var class="dt-function">either</var> (<var class="dt-function">type?</var> (<var class="dt-function">pick</var> b item) <var class="dt-function">=</var> <var class="dt-datatype">pair!</var>) [<br />
<var class="dt-function">append</var> newb <var class="dt-function">pick</var> b (item <var class="dt-function">-</var> <var class="dt-integer">3</var>)<br />
] [<var class="dt-function">append</var> newb <var class="dt-function">pick</var> b item ]<br />
]<br />
<var class="dt-function">if</var> newsection <var class="dt-function">=</var> true [<br />
<var class="dt-function">clear</var> (<var class="dt-function">back</var> <var class="dt-function">tail</var> newb)<br />
<var class="dt-function">append</var> newb (<var class="dt-function">last</var> b)<br />
<var class="dt-set-word">newsection:</var> false<br />
]<br />
<var class="dt-set-word">b:</var> <var class="dt-function">copy</var> newb<br />
<var class="dt-function">show</var> scrn<br />
<var class="dt-set-word">the-score:</var> the-score <var class="dt-function">+</var> <var class="dt-integer">1</var> <br />
<var class="dt-set-path">score/text:</var> <var class="dt-function">to-string</var> the-score<br />
]<br />
]<br />
]<br />
origin across h2 <var class="dt-string">"Score:"</var> <br />
<var class="dt-set-word">score:</var> h2 bold <var class="dt-string">"000000"</var><br />
<var class="dt-function">do</var> [<var class="dt-function">focus</var> scrn]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-12348401235780144952013-11-26T08:43:00.000-08:002013-11-26T08:53:34.569-08:00Rebsite around the world<b>rgchris </b>wrote a web app that shows <a href="http://www.rebol.com/docs/desktop/reb.html">rebsites</a> in the world:<br />
<br />
<a href="http://desktop.rebol.info/">http://desktop.rebol.info/</a><br />
<a href="http://3.bp.blogspot.com/--CePPFGA6vA/UpTQiGrWKkI/AAAAAAAACQw/oClrU9J3AL4/s1600/Rebsites.jpg" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/--CePPFGA6vA/UpTQiGrWKkI/AAAAAAAACQw/oClrU9J3AL4/s320/Rebsites.jpg" /></a><br />
<br />
the source code is here: <a href="https://github.com/revault/desktop.rebol.info">https://github.com/revault/desktop.rebol.info</a><br />
<br />
Add your <a href="http://www.rebol.com/docs/desktop/reb.html">rebsite</a>!Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com0tag:blogger.com,1999:blog-3451700962271094262.post-65822376226846781232013-11-13T07:27:00.000-08:002013-11-13T07:27:32.996-08:00Ski gameThe following script is a simple game made by Nick Antonaccio, you have to move the skier with the arrow keys avoiding the trees.<br />
<a href="http://1.bp.blogspot.com/-EK9KH4HjGJg/UoOaFY6Kf1I/AAAAAAAACQM/9o5dcm3yJ2s/s1600/SkyGame.jpg" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-EK9KH4HjGJg/UoOaFY6Kf1I/AAAAAAAACQM/9o5dcm3yJ2s/s320/SkyGame.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
File: %ski-game.r<br />
Date: 23-07-2009<br />
Title: "Ski Game"<br />
Author: Nick Antonaccio<br />
Purpose: {<br />
A little graphic game. <br />
Taken from the tutorial at http://musiclessonz.com/rebol.html<br />
}<br />
]<br />
<var class="dt-set-word">tree:</var> <var class="dt-function">load</var> <var class="dt-function">to-binary</var> <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJzt18sNwjAQBFDTBSVw5EQBnLjQE1XRngmBQEj8Wa/3M4oYOZKBKHkaWwTO1/sh<br />
jDkNx3N6HI7LcOzCfnz/9v5cMnEai7lj4mokT9C7XczUsrhvGSku6RkgDIbHAEP0<br />
2EiIMBdMDuaOWZCSL91bQvCsSY4MHE9umXz7ydVi3xgltYvEKboexzVSlpTa614d<br />
NonpUauIv176dX0ZTRgJlVgzNl25A3gkGwld1bkrNFqqedQfEI02AU9PjDeMpac/<br />
ShKeTXylROqCImlXRFd9zkQoh4tp+GpqlSTnLnum4HTEzK/gjpmTpDxSASlHFqYU<br />
EE/8nddG9n+9LIm8t9OeIEra2JZWDRSG4VEioa0UFCZFqv/aMQh2Rf790EnGgcJU<br />
SVAer0Bhcp7/epVJvkHzBHjPfz+XSe6BwryC5gmQno3mAY3tpba2KAAA<br />
}</var><br />
<var class="dt-set-word">skier-left:</var> <var class="dt-function">load</var> <var class="dt-function">to-binary</var> <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJyN0U8og2EcB/DvNrz+E5fJZSmRf9Ej76h3Ne1AIspyMQflpJDFU/KO1cQmSnGa<br />
A3PYkvInB3kvuyzlgJolh+fCRUq5iBvP8+5lTvKrX33ep+/zp9/b2Tthhl6zvGt5<br />
W3nX8TYhS1//MOGnSjNEa/AUxd0UVQ3raL9IYbBvA2OBI9Q0DqB6fAujl08Yi97D<br />
Hr3F5EQYSss2OrrWEFo5xB+VO5Vx/skvnxmQbDCFvxcjMJ/b0s6LAZXGA3O0ZtTt<br />
pW3WbJmDeMC8a1gE9o3bTBFI9YvGhrOKSueyEQpu9ri60vQFXFqPMx1K+sNWrdOh<br />
73Y/uMr85fKdcIrJ0z6vxSfsYV5KCU2JEPNIlD9dFZ65AfXwD+HsKdAZiiLdqtvt<br />
Hh65E5ZklTGmDvWLgxxKkjAivwt7XxhJEvIsrCY8ikLs0Tj3yGeCKaQtdsX9fv3G<br />
N1jCJdyv84lHJkNriiM7Li29OIDV0jcU8kuIHaiPLEDEsG9DQYxiQTi0A8sBpEvh<br />
OT65GmBYH9Jx5nf8TFFUFf5ZX2hFdG1uAgAA<br />
}</var><br />
<var class="dt-set-word">skier-right:</var> <var class="dt-function">load</var> <var class="dt-function">to-binary</var> <var class="dt-function">decompress</var> <var class="dt-binary">64#{<br />
eJxz8s1jYgCDMiDWAGIJINYCYkYGFrD4D0YGOBBAMBn4++Yz6HjVMSgY1oP5gWdu<br />
M/gHTmCwNutlKJ26l6F03VUGp3XnGGo+/mGILVnMoFkwhaHm7GcGz4m7GbABFwST<br />
eQWSNXMQbM+3DAwlULbmEgaWXih75QUGzvkQJstMBwbPRRA2L1D5yS8QNudioNQF<br />
qNYPDExAZRCtDg78c6Fa7wZK3Ycq940O3L1fAcLWigpctUsZzHTSj5Jd+l7NAKS6<br />
3HnXk6jHSiBF7sUmxi7Gl9VAZrqVOxsZuTirg8TTS0qAQs5FIPF0BhYXFkgog/zg<br />
7gJlq5SXpaWVF4O9lZKuXl6eVl4AZLIfKS82LzYuB2nlOFxWXl5ubA6ytm1KWU65<br />
cXExkMl09lNNR3q5eTFQPYfHE7YT6cXlJgcYGI7cPMAOMtKhgcH9wE8FBuPycgOG<br />
BoYKtl8ODL4gjccY2HSAfr4BVMvgAwyazwwsXSA7ORgY2BQYeH+Cw+sAKPo5wEHj<br />
kQAO/GZwIIHDgc0AaxQSBAAFOXD7bgIAAA==<br />
}</var><br />
<var class="dt-function">random/seed</var> <var class="dt-function">now</var><br />
<var class="dt-set-word">the-score:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">board:</var> <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> <var class="dt-pair">300x20</var> skier-right black]<br />
<var class="dt-function">for</var> i <var class="dt-integer">1</var> <var class="dt-integer">20</var> <var class="dt-integer">1</var> [<br />
<var class="dt-set-word">pos:</var> <var class="dt-function">random</var> <var class="dt-pair">600x540</var><br />
<var class="dt-set-word">pos:</var> pos <var class="dt-function">+</var> <var class="dt-pair">0x300</var><br />
<var class="dt-function">append</var> board <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> pos tree black]<br />
]<br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> <var class="dt-function">layout/tight</var> [<br />
<var class="dt-set-word">scrn:</var> box white <var class="dt-pair">600x440</var> effect [<var class="dt-function">draw</var> board] rate <var class="dt-integer">0</var> feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [f a e] [<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'key</var> [<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'right</var> [<br />
<var class="dt-set-path">board/2:</var> board/2 <var class="dt-function">+</var> <var class="dt-pair">5x0</var><br />
<var class="dt-set-path">board/3:</var> skier-right<br />
]<br />
<var class="dt-function">if</var> e/key <var class="dt-function">=</var> <var class="dt-lit-word">'left</var> [<br />
<var class="dt-set-path">board/2:</var> board/2 <var class="dt-function">-</var> <var class="dt-pair">5x0</var><br />
<var class="dt-set-path">board/3:</var> skier-left<br />
]<br />
<var class="dt-function">show</var> scrn<br />
]<br />
<var class="dt-function">if</var> a <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> [<br />
<var class="dt-set-word">new-board:</var> <var class="dt-function">copy</var> []<br />
<var class="dt-function">foreach</var> item board [<br />
<var class="dt-function">either</var> <var class="dt-function">all</var> [<br />
((<var class="dt-function">type?</var> item) <var class="dt-function">=</var> <var class="dt-datatype">pair!</var>) <br />
((<var class="dt-function">length?</var> new-board) <var class="dt-function">></var> <var class="dt-integer">4</var>)<br />
] [<var class="dt-function">append</var> new-board (item <var class="dt-function">-</var> <var class="dt-pair">0x5</var>) ] [<var class="dt-function">append</var> new-board item ]<br />
<var class="dt-set-word">coord:</var> <var class="dt-function">first</var> <var class="dt-function">back</var> <var class="dt-function">back</var> (<var class="dt-function">tail</var> new-board)<br />
<var class="dt-function">if</var> ((<var class="dt-function">type?</var> coord) <var class="dt-function">=</var> <var class="dt-datatype">pair!</var>) [<br />
<var class="dt-function">if</var> ((<var class="dt-function">second</var> coord) <var class="dt-function"><</var> <var class="dt-integer">-60</var>) [<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> new-board<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> new-board<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> new-board<br />
<var class="dt-function">remove</var> <var class="dt-function">back</var> <var class="dt-function">tail</var> new-board<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">board:</var> <var class="dt-function">copy</var> new-board<br />
<var class="dt-function">if</var> (<var class="dt-function">length?</var> new-board) <var class="dt-function"><</var> <var class="dt-integer">84</var> [<br />
<var class="dt-set-word">column:</var> <var class="dt-function">random</var> <var class="dt-integer">600</var><br />
<var class="dt-set-word">pos:</var> <var class="dt-function">to-pair</var> <var class="dt-function">rejoin</var> [column <var class="dt-string">"x"</var> <var class="dt-integer">440</var>]<br />
<var class="dt-function">append</var> board <var class="dt-function">reduce</var> [<var class="dt-lit-word">'image</var> pos tree black]<br />
]<br />
<var class="dt-set-word">collision-board:</var> <var class="dt-function">remove/part</var> (<var class="dt-function">copy</var> board) <var class="dt-integer">4</var><br />
<var class="dt-function">foreach</var> item collision-board [<br />
<var class="dt-function">if</var> (<var class="dt-function">type?</var> item) <var class="dt-function">=</var> <var class="dt-datatype">pair!</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<br />
((item/1 <var class="dt-function">-</var> board/2/1) <var class="dt-function"><</var> <var class="dt-integer">15</var>)<br />
((item/1 <var class="dt-function">-</var> board/2/1) <var class="dt-function">></var> <var class="dt-integer">-40</var>)<br />
((board/2/2 <var class="dt-function">-</var> item/2) <var class="dt-function"><</var> <var class="dt-integer">30</var>)<br />
((board/2/2 <var class="dt-function">-</var> item/2) <var class="dt-function">></var> <var class="dt-integer">5</var>)<br />
] [<br />
<var class="dt-function">alert</var> <var class="dt-string">"Ouch - you hit a tree!"</var><br />
<var class="dt-function">alert</var> <var class="dt-function">rejoin</var> [<var class="dt-string">"Final Score: "</var> the-score]<br />
<var class="dt-function">quit</var><br />
]<br />
]<br />
]<br />
<var class="dt-set-word">the-score:</var> the-score <var class="dt-function">+</var> <var class="dt-integer">1</var> <br />
<var class="dt-set-path">score/text:</var> <var class="dt-function">to-string</var> the-score<br />
<var class="dt-function">show</var> scrn<br />
]<br />
]<br />
]<br />
origin across h2 <var class="dt-string">"Score:"</var> <br />
<var class="dt-set-word">score:</var> h2 bold <var class="dt-string">"000000"</var><br />
<var class="dt-function">do</var> [<var class="dt-function">focus</var> scrn]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com0tag:blogger.com,1999:blog-3451700962271094262.post-57753563675601752542013-11-07T05:35:00.001-08:002013-11-07T05:35:27.141-08:00Site checkI found the following script that check for missing links in a site:<br />
<div class="code" style="border: 1px solid grey; height: 400px; overflow-y: scroll; width: 100%;"><code class="rebol-script"> REBOL [<br />
Title: "Web Site Checker"<br />
Date: 11-June-2004 ;16-May-2001<br />
Version: 1.1.1<br />
File: %site-check.r<br />
Author: "Carl Sassenrath"<br />
Purpose: {Scan a web site looking for missing pages, remote links, email links, etc. Helps you clean up sites.}<br />
Email: carl@rebol.com<br />
library: [<br />
level: 'intermediate <br />
platform: 'all <br />
type: 'tool <br />
domain: [web file-handling markup parse] <br />
tested-under: none <br />
support: none <br />
license: none <br />
see-also: none<br />
]<br />
]<br />
<var class="dt-cmt">; 1.1.1 - Fixes problem when top-level relative paths are used ( /index.html /about.html etc)<br />
</var><br />
<var class="dt-cmt">;--Config:<br />
</var><var class="dt-set-word">base-url:</var> <var class="dt-url">http://www.rebol.com</var><br />
<var class="dt-set-word">threshold:</var> <var class="dt-integer">8000</var> <var class="dt-cmt">; used to filter out huge pages<br />
</var><var class="dt-set-word">exclude-urls:</var> [<var class="dt-cmt">; URL patterns for pages to exclude<br />
</var> <var class="dt-url">http://www.rebol.com/library</var><br />
<var class="dt-url">http://www.rebol.com/docs/core23</var><br />
<var class="dt-url">http://www.rebol.com/dictionary</var><br />
<var class="dt-url">http://www.rebol.com/users.html</var><br />
<var class="dt-url">http://www.rebol.com/docs/dictionary</var><br />
<var class="dt-url">http://www.rebol.com/r3/docs</var><br />
]<br />
<var class="dt-cmt">;--Lists:<br />
</var><var class="dt-set-word">base-str:</var> <var class="dt-function">form</var> base-url<br />
<var class="dt-set-word">scanned-urls:</var> []<br />
<var class="dt-set-word">missing-urls:</var> []<br />
<var class="dt-set-word">remote-urls:</var> []<br />
<var class="dt-set-word">local-urls:</var> []<br />
<var class="dt-set-word">secure-urls:</var> []<br />
<var class="dt-set-word">email-urls:</var> []<br />
<var class="dt-set-word">ftp-urls:</var> []<br />
<var class="dt-set-word">ref-urls:</var> [] <var class="dt-cmt">; pairs of: url and referrer<br />
</var><br />
<var class="dt-cmt">;--Functions:<br />
</var><var class="dt-set-word">html?:</var> <var class="dt-function">func</var> [url <var class="dt-refinement">/local</var> t] [<br />
<var class="dt-function">all</var> [<br />
<var class="dt-set-word">t:</var> <var class="dt-function">find/last/tail</var> url <var class="dt-string">"."</var><br />
<var class="dt-set-word">t:</var> <var class="dt-function">to-string</var> t<br />
<var class="dt-function">any</var> [t <var class="dt-function">=</var> <var class="dt-string">"htm"</var> t <var class="dt-function">=</var> <var class="dt-string">"html"</var>]<br />
]<br />
]<br />
<var class="dt-set-word">add-url:</var> <var class="dt-function">func</var> [urlset url from <var class="dt-refinement">/local</var> t] [<br />
<var class="dt-function">clear</var> <var class="dt-function">find</var> url <var class="dt-string">"#"</var><br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<br />
<var class="dt-function">not</var> <var class="dt-function">find</var> url <var class="dt-string">"?"</var><br />
html? url<br />
][<br />
<var class="dt-function">append</var> urlset url<br />
<var class="dt-function">repend</var> ref-urls [url <var class="dt-function">form</var> from] <var class="dt-cmt">; second is string<br />
</var> ]<br />
]<br />
<var class="dt-set-word">scan-page:</var> <var class="dt-function">func</var> [url <var class="dt-refinement">/local</var> tag page new <var class="dt-function">path</var>] [<br />
<var class="dt-function">print</var> [<var class="dt-string">"Scanning:"</var> url <var class="dt-function">length?</var> local-urls <var class="dt-function">length?</var> missing-urls]<br />
<var class="dt-function">append</var> scanned-urls url<br />
<var class="dt-function">foreach</var> u exclude-urls [<var class="dt-function">if</var> <var class="dt-function">find/match</var> url u [<var class="dt-function">print</var> <var class="dt-string">"(excluded)"</var> <var class="dt-function">exit</var>]]<br />
<var class="dt-set-word">path:</var> <var class="dt-function">either</var> html? url [<var class="dt-function">first</var> <var class="dt-function">split-path</var> url][url]<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-function">try</var> [<var class="dt-set-word">page:</var> <var class="dt-function">load/markup</var> url][<var class="dt-function">append</var> missing-urls url <var class="dt-function">exit</var>]<br />
<var class="dt-function">if</var> (<var class="dt-function">length?</var> page) <var class="dt-function">></var> threshold [<var class="dt-function">exit</var>] <var class="dt-cmt">; big page, skip it.<br />
</var> <var class="dt-function">foreach</var> tag page [<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<br />
<var class="dt-function">tag?</var> tag<br />
<var class="dt-set-word">tag:</var> <var class="dt-function">parse</var> tag <var class="dt-string">"="</var><br />
<var class="dt-set-word">tag:</var> <var class="dt-function">select</var> tag <var class="dt-string">"HREF"</var><br />
][<br />
<var class="dt-set-word">new:</var> <var class="dt-function">to-url</var> tag<br />
<var class="dt-function">parse/all</var> tag [<br />
<var class="dt-string">"#"</var> |<br />
base-str (add-url local-urls new url) |<br />
<var class="dt-string">"/"</var> (add-url local-urls base-url/:new url) | <var class="dt-cmt">;1.1.1<br />
</var> <var class="dt-string">"http:"</var> (<var class="dt-function">append</var> remote-urls new) |<br />
<var class="dt-string">"https:"</var> (<var class="dt-function">append</var> secure-urls new) |<br />
<var class="dt-string">"ftp:"</var> (<var class="dt-function">append</var> ftp-urls new) |<br />
<var class="dt-string">"mailto:"</var> (<var class="dt-function">append</var> email-urls new) |<br />
none (add-url local-urls <var class="dt-function">path/:new</var> url)<br />
]<br />
]<br />
]<br />
<var class="dt-set-word">remote-urls:</var> <var class="dt-function">unique</var> remote-urls<br />
<var class="dt-set-word">local-urls:</var> <var class="dt-function">unique</var> local-urls<br />
<var class="dt-set-word">secure-urls:</var> <var class="dt-function">unique</var> secure-urls<br />
<var class="dt-set-word">email-urls:</var> <var class="dt-function">unique</var> email-urls<br />
<var class="dt-set-word">ftp-urls:</var> <var class="dt-function">unique</var> ftp-urls<br />
]<br />
<var class="dt-cmt">;--Main code:<br />
</var>scan-page base-url<br />
<var class="dt-function">while</var> [<var class="dt-function">pick</var> <var class="dt-set-word">urls:</var> <var class="dt-function">exclude</var> local-urls scanned-urls <var class="dt-integer">1</var>][scan-page <var class="dt-function">pick</var> urls <var class="dt-integer">1</var> ]<br />
<var class="dt-set-word">out:</var> <var class="dt-function">reform</var> [<var class="dt-string">"Site Summary for"</var> base-url <var class="dt-string">"on"</var> <var class="dt-function">now</var> newline]<br />
<var class="dt-function">sort</var> scanned-urls<br />
<var class="dt-function">repend</var> out <var class="dt-string">"^/Scanned Pages:^/"</var><br />
<var class="dt-function">foreach</var> url scanned-urls [<var class="dt-function">repend</var> out [url newline]]<br />
<var class="dt-function">sort</var> remote-urls<br />
<var class="dt-function">repend</var> out <var class="dt-string">"^/Remote Links:^/"</var><br />
<var class="dt-function">foreach</var> url remote-urls [<var class="dt-function">repend</var> out [url newline]]<br />
<var class="dt-function">sort</var> email-urls<br />
<var class="dt-function">repend</var> out <var class="dt-string">"^/Email Links:^/"</var><br />
<var class="dt-function">foreach</var> url email-urls [<var class="dt-function">repend</var> out [url newline]]<br />
<var class="dt-function">repend</var> out <var class="dt-string">"^/References:^/"</var><br />
<var class="dt-function">foreach</var> [url url2] ref-urls [<var class="dt-function">repend</var> out [url2 <var class="dt-string">" -> "</var> url newline]]<br />
<var class="dt-function">repend</var> out <var class="dt-string">"^/Missing Pages:^/"</var><br />
<var class="dt-function">foreach</var> url missing-urls [<br />
<var class="dt-set-word">n:</var> ref-urls<br />
<var class="dt-function">repend</var> out [<var class="dt-string">"Missing URL:"</var> url newline]<br />
<var class="dt-function">while</var> [<var class="dt-set-word">n:</var> <var class="dt-function">find</var> n url] [<br />
<var class="dt-function">repend</var> out [tab <var class="dt-string">"Ref from:"</var> n/2 newline]<br />
<var class="dt-set-word">n:</var> <var class="dt-function">next</var> n<br />
]<br />
]<br />
<var class="dt-function">write</var> <var class="dt-file">%site-summary.txt</var> out<br />
<var class="dt-function">browse</var> <var class="dt-file">%site-summary.txt</var><br />
</code></div><br />
I launched it and this is the result: <a href="http://www.maxvessi.net/rebsite/public/site-summary.txt">site-summary.txt</a>. <br />
Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-30593812937394446662013-10-21T02:30:00.002-07:002013-10-21T02:30:50.123-07:00Simple tooltip styleThe helpful tooltip bubble is very useful to give user hints about button, or other GUI elements, function. Mr. Marco Anotiazzi wrote this style very easy to use: just use the <b>help</b> word in a style, followed by thetooltip string.<br />
Here is an example:<br />
<br />
<code>win: layout [<br />
area "another face" help "an area" <br />
panel [across<br />
button "test" help "the first button"<br />
button "test2" help "the second button"<br />
btn "test3" help "the third button" [probe face/feel]<br />
button 120 "test4 without help"<br />
]<br />
]<br />
<br />
view center-face win</code><br />
<br />
<a href="http://2.bp.blogspot.com/-OS1vv3UFo6U/UmTz4Pu1qpI/AAAAAAAACPQ/SsdGF1r8Rh4/s1600/tooltip.jpg" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-OS1vv3UFo6U/UmTz4Pu1qpI/AAAAAAAACPQ/SsdGF1r8Rh4/s320/tooltip.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
title: "Tooltip style example"<br />
file: %simple-tooltip-style.r<br />
author: "Marco Antoniazzi"<br />
email: [luce80 AT libero DOT it]<br />
date: 30-04-2011<br />
version: 0.9.3<br />
Purpose: {A quick way to add a simple tooltip to VID GUIs}<br />
comment: {You are strongly encouraged to post an enhanced version of this script}<br />
History: [<br />
0.0.1 [03-12-2010 "First version"]<br />
0.8.0 [08-01-2011 "Enhanced"]<br />
0.9.0 [16-01-2011 "Enhanced with function by Shadwolf, Boss, DideC, Volker and the tipped flag"]<br />
0.9.1 [08-02-2011 "Minor bug fixes and source retouches"]<br />
0.9.2 [19-02-2011 "Minor bug fix of offset/x"]<br />
0.9.3 [30-04-2011 "Minor source retouches"]<br />
]<br />
Category: [util vid view] <br />
license: 'BSD<br />
]<br />
<var class="dt-set-word">tip:</var> <var class="dt-function">make</var> face [<br />
<var class="dt-set-word">color:</var> yello <var class="dt-function">+</var> <var class="dt-integer">30</var><br />
<var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<var class="dt-set-word">size:</var> <var class="dt-integer">11</var>]<br />
<var class="dt-set-word">para:</var> <var class="dt-function">make</var> para [<var class="dt-set-word">wrap?:</var> false]<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var> <var class="dt-set-word">color:</var> gray]<br />
<var class="dt-set-word">ticks:</var> <var class="dt-integer">0</var><br />
<var class="dt-set-word">start_tip:</var> <var class="dt-function">func</var> [face] [<br />
<var class="dt-function">if</var> ticks <var class="dt-function"><></var> <var class="dt-integer">0</var> [<var class="dt-function">exit</var>]<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-set-word">text:</var> face/help [<var class="dt-function">exit</var>]<br />
<var class="dt-set-word">size:</var> <var class="dt-pair">4x6</var> <var class="dt-function">+</var> <var class="dt-function">size-text</var> self<br />
<var class="dt-set-word">rate:</var> <var class="dt-time">0:0:0.500</var><br />
<var class="dt-set-word">offset:</var> <var class="dt-function">-</var> size <var class="dt-cmt">; hide it<br />
</var> <var class="dt-function">remove</var> <var class="dt-function">find</var> <var class="dt-function">get</var> <var class="dt-function">in</var> <var class="dt-function">find-window</var> face <var class="dt-lit-word">'pane</var> self<br />
<var class="dt-function">append</var> <var class="dt-function">get</var> <var class="dt-function">in</var> <var class="dt-function">find-window</var> face <var class="dt-lit-word">'pane</var> self<br />
<var class="dt-function">show</var> <var class="dt-function">find-window</var> face<br />
]<br />
<var class="dt-set-word">open_tip:</var> <var class="dt-function">func</var> [woffset <var class="dt-refinement">/local</var> wsize] [<br />
<var class="dt-set-word">offset:</var> woffset <var class="dt-function">+</var> <var class="dt-pair">0x15</var><br />
<var class="dt-set-word">wsize:</var> <var class="dt-function">get</var> <var class="dt-function">in</var> <var class="dt-function">find-window</var> self <var class="dt-lit-word">'size</var><br />
<var class="dt-cmt">; keep inside window<br />
</var> <var class="dt-function">if</var> offset/y <var class="dt-function">></var> (wsize/y <var class="dt-function">-</var> size/y) [<var class="dt-set-path">offset/y:</var> offset/y <var class="dt-function">-</var> size/y <var class="dt-function">-</var> <var class="dt-integer">16</var>]<br />
<var class="dt-set-path">offset/x:</var> <var class="dt-function">max</var> <var class="dt-function">min</var> wsize/x <var class="dt-function">-</var> size/x offset/x <var class="dt-integer">0</var><br />
<var class="dt-function">show</var> self/parent-face<br />
]<br />
<var class="dt-set-word">close_tip:</var> <var class="dt-function">func</var> [] [<br />
<var class="dt-function">if</var> size <var class="dt-function">=</var> <var class="dt-pair">100x100</var> [<var class="dt-function">exit</var>] <var class="dt-cmt">; entering here before start_tip<br />
</var> <var class="dt-set-word">rate:</var> none<br />
<var class="dt-set-word">offset:</var> <var class="dt-function">-</var> size<br />
<var class="dt-set-word">ticks:</var> <var class="dt-integer">0</var><br />
<var class="dt-function">show</var> self/parent-face<br />
]<br />
<var class="dt-set-word">feel:</var> <var class="dt-function">make</var> feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event][<br />
<var class="dt-function">if</var> action <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> [<br />
<var class="dt-function">if</var> ticks <var class="dt-function">=</var> <var class="dt-integer">1</var> [open_tip event/offset]<br />
<var class="dt-function">if</var> ticks <var class="dt-function">=</var> <var class="dt-integer">6</var> [close_tip]<br />
<var class="dt-set-word">ticks:</var> ticks <var class="dt-function">+</var> <var class="dt-integer">1</var><br />
]<br />
]<br />
]<br />
<var class="dt-set-word">over:</var> <var class="dt-function">func</var> [face over? offset] [<var class="dt-function">either</var> <var class="dt-function">all</var> [over? <var class="dt-function">not</var> <var class="dt-function">flag-face?</var> face tipped] [start_tip face] [<var class="dt-function">deflag-face</var> face tipped close_tip]]<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event] [<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">flag-face?</var> face tipped [<var class="dt-function">flag-face</var> face tipped close_tip]]<br />
]<br />
<var class="dt-set-word">flag-face?:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Checks a flag in a VID face."</var><br />
face [<var class="dt-datatype">object!</var>] <var class="dt-lit-word">'flag</var><br />
] [<var class="dt-function">all</var> [<var class="dt-function">in</var> face <var class="dt-lit-word">'flags</var> face/flags <var class="dt-function">find</var> face/flags flag]] <var class="dt-cmt">; patched<br />
</var><br />
<var class="dt-cmt">; this function is taken from %toolt4vid.r (only a little modified)<br />
</var><var class="dt-set-word">Add-tooltip-2-style:</var> <var class="dt-function">func</var> [<var class="dt-string">{ Allow to add the tooltip support to all widgets passed in parameter}</var><br />
style-lst [<var class="dt-datatype">block!</var> ] <var class="dt-string">"Contains the listing of Vid widgets to patch"</var><br />
style-root <var class="dt-string">"Countain the path of the root-styles to patch"</var><br />
][<br />
<var class="dt-function">foreach</var> style style-lst [<br />
<var class="dt-function">if</var> <var class="dt-function">find</var> style-root style [ <var class="dt-cmt">; Teste si le style existe pour la compatibilité avec les versions antérieures de view<br />
</var> <var class="dt-set-path">style-root/:style/feel:</var> <var class="dt-function">make</var> style-root/:style/feel [<br />
<var class="dt-set-word">over*:</var> <var class="dt-get-word">:over</var><br />
<var class="dt-set-word">over:</var> <var class="dt-function">func</var> [face action offset][<br />
tip/over face action offset<br />
over* face action offset <var class="dt-cmt">; call original<br />
</var> ]<br />
<var class="dt-set-word">engage*:</var> <var class="dt-get-word">:engage</var><br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event][<br />
engage* face action event<br />
tip/engage face action event<br />
]<br />
]<br />
]<br />
]<br />
]<br />
<var class="dt-cmt">; here is the list of widget affected by the tooltip ability (does it make sense to patch also text?)<br />
</var><var class="dt-set-word">vid-styles:</var> [image btn backtile box sensor key base-text vtext text body txt banner vh1 vh2 vh3 vh4 <br />
title h1 h2 h3 h4 h5 tt code button check radio check-line radio-line led <br />
arrow toggle rotary choice drop-down icon field info area slider scroller progress <br />
anim btn-enter btn-cancel btn-help logo-bar tog]<br />
Add-tooltip-2-style vid-styles system/view/vid/vid-styles <br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com0tag:blogger.com,1999:blog-3451700962271094262.post-34062547343848007752013-10-18T02:49:00.002-07:002013-10-18T02:49:50.747-07:00System trayDo you ever dreamed to put an icon of you program in the system tray? Well, today we'll discover how to do this task with few lines of Rebol code.<br />
System tray is that small zone in the monitor area, near the clock, where there are small icons:<br />
<br />
<a href="http://2.bp.blogspot.com/-4f_eMEZthZU/UmECx6_RcCI/AAAAAAAACO4/sRdTDoRDwUs/s1600/RebolSystray3.jpg" imageanchor="1" ><img border="0" src="http://2.bp.blogspot.com/-4f_eMEZthZU/UmECx6_RcCI/AAAAAAAACO4/sRdTDoRDwUs/s320/RebolSystray3.jpg" /></a><br />
<br />
to put the icon just use the <b>ToSystemTray</b> special function. This function was created by Izkata and we'll its code at the end of this post. <b>ToSystemTray</b> needs a block with a string for the tip bubble description, then string and action for every line you want to show with right mouse button; the first action is the default action with left mouse button. You can add any bar you need with the keyword <b>bar</b>. Let's see an example:<br />
<br />
<code><br />
ToSystemTray [<br />
{I am the little help-bubble that appears while the mouse hovers over the icon} <br />
[ <br />
{Item 1 (Also done when icon left-clicked on)} [ alert {Example} ]<br />
bar<br />
{Item 2 - Remove from System Tray} [RemoveSystemTray]<br />
bar <br />
{Quit} [quit] <br />
]<br />
]<br />
</code><br />
<br />
Here is the result:<br />
<br />
<a href="http://4.bp.blogspot.com/-QJdV6OQfQUs/UmEDzSXhf6I/AAAAAAAACPA/Nzt7SPkgpIs/s1600/RebolSystray2.jpg" imageanchor="1" ><img border="0" src="http://4.bp.blogspot.com/-QJdV6OQfQUs/UmEDzSXhf6I/AAAAAAAACPA/Nzt7SPkgpIs/s320/RebolSystray2.jpg" /></a><br />
<br />
Here is the source code of <b>ToSystemTray</b>:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Author: {Izkata}<br />
Email: Izkata@Comcast.net<br />
File: %simple-system-tray.r<br />
Date: 5-Jul-2005<br />
Title: {Simple System Tray}<br />
Purpose: {<br />
After learning Rebol 1.3 could place itself in the System Tray on Windows,<br />
and after finding Graham's example, I decided to make a slightly simpler<br />
version of the System Tray dialect....<br />
Since it's based on Graham's example, it may well be missing stuff...<br />
Feel free to email me anything about it, I'll likely edit and repost it! (^.-)<br />
}<br />
]<br />
<var class="dt-set-word">MySysTray:</var> <var class="dt-function">make</var> <var class="dt-datatype">object!</var> [<br />
<var class="dt-set-word">Defines:</var> none<br />
<var class="dt-set-word">Tray:</var> none<br />
<var class="dt-set-word">Parse-Systray:</var> <var class="dt-function">func</var> [Systray][<br />
<var class="dt-set-word">Defines:</var> <var class="dt-function">copy</var> []<br />
<var class="dt-set-word">Tray:</var> <var class="dt-function">compose/deep</var> [<var class="dt-function">add</var> main [<var class="dt-set-word">help:</var> (<var class="dt-function">first</var> Systray) <var class="dt-set-word">menu:</var> []]]<br />
<var class="dt-function">parse</var> <var class="dt-function">second</var> Systray [<br />
some [<br />
<var class="dt-lit-word">'bar</var> (<var class="dt-function">append</var> Tray/3/4 <var class="dt-lit-word">'bar</var>) |<br />
<var class="dt-function">set</var> Str <var class="dt-datatype">string!</var> <var class="dt-function">set</var> Blk <var class="dt-datatype">block!</var> (<br />
<var class="dt-function">append</var> Tray/3/4 <var class="dt-function">compose</var> [(<var class="dt-function">to-word</var> <var class="dt-function">rejoin</var> [<var class="dt-string">{Defines}</var> <var class="dt-integer">1</var> <var class="dt-function">+</var> <var class="dt-function">length?</var> Defines <var class="dt-string">{:}</var>]) (Str)]<br />
<var class="dt-function">append</var> Defines <var class="dt-function">compose/only</var> [(<var class="dt-function">to-word</var> <var class="dt-function">join</var> <var class="dt-function">copy</var> <var class="dt-string">{Defines}</var> <var class="dt-integer">1</var> <var class="dt-function">+</var> <var class="dt-function">length?</var> Defines) (Blk)]<br />
)<br />
]<br />
]<br />
<var class="dt-function">return</var> Tray<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'ToSystemTray</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">{Send REBOL to the System Tray}</var><br />
Systray [<var class="dt-datatype">block!</var>]<br />
<var class="dt-refinement">/return</var> <var class="dt-string">{Return immediately}</var><br />
][<br />
<var class="dt-set-word">Tray:</var> Parse-Systray Systray<br />
<var class="dt-set-path">system/ports/system:</var> <var class="dt-function">open</var> [<var class="dt-set-word">scheme:</var> <var class="dt-lit-word">'system</var>]<br />
<var class="dt-function">append</var> system/ports/wait-list system/ports/system<br />
<var class="dt-set-path">system/ports/system/awake:</var> <var class="dt-function">func</var> [port <var class="dt-refinement">/local</var> Which][<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<br />
<var class="dt-set-word">r:</var> <var class="dt-function">pick</var> port <var class="dt-integer">1</var><br />
r/1 <var class="dt-function">=</var> <var class="dt-lit-word">'tray</var><br />
][<br />
<var class="dt-function">if</var> r/3 <var class="dt-function">=</var> <var class="dt-lit-word">'menu</var> [<var class="dt-function">do</var> <var class="dt-function">select</var> Defines r/4]<br />
<var class="dt-function">if</var> r/3 <var class="dt-function">=</var> <var class="dt-lit-word">'activate</var> [<var class="dt-function">do</var> <var class="dt-function">second</var> Defines]<br />
]<br />
<var class="dt-function">return</var> false<br />
]<br />
<var class="dt-function">set-modes</var> system/ports/system <var class="dt-function">compose/only</var> [<var class="dt-set-word">tray:</var> (<var class="dt-function">load</var> <var class="dt-function">mold</var> Tray)]<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">return</var> [<var class="dt-function">do-events</var>]<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'RemoveSystemTray</var> <var class="dt-function">func</var> [<var class="dt-string">{Remove REBOL from the System Tray}</var>][<br />
<var class="dt-function">remove</var> <var class="dt-function">find</var> system/ports/wait-list system/ports/system<br />
<var class="dt-function">close</var> system/ports/system<br />
<var class="dt-set-path">system/ports/system:</var> <var class="dt-function">open</var> [<var class="dt-set-word">scheme:</var> <var class="dt-lit-word">'system</var>]<br />
]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-87108324162770388632013-10-16T04:41:00.003-07:002013-10-16T04:41:56.424-07:00Simple menu styleMr. Marco Antoniazzi wrote the following script to show a way to obtain nice menu style in few lines of code:<br />
<br />
<a href="http://3.bp.blogspot.com/-HH-h0SIyl4A/Ul57QhHVzBI/AAAAAAAACOo/rVHb9v6nmsk/s1600/Simple-menu-style.jpg" imageanchor="1" ><img border="0" src="http://3.bp.blogspot.com/-HH-h0SIyl4A/Ul57QhHVzBI/AAAAAAAACOo/rVHb9v6nmsk/s320/Simple-menu-style.jpg" /></a><br />
<br />
Here is the source code:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
title: "Menu style example"<br />
file: %simple-menu-style.r<br />
author: "Marco Antoniazzi directly derived from Nick Antonaccio"<br />
email: [luce80 AT libero DOT it]<br />
date: 30-10-2010<br />
version: 0.0.1<br />
Purpose: {A quick way to add a simple menu to VID GUIs}<br />
comment: {You are strongly encouraged to post an enhanced version of this script}<br />
Category: [util vid view] <br />
]<br />
<var class="dt-set-word">menu-Options:</var> [<br />
<var class="dt-string">"Open File..."</var> [<var class="dt-function">attempt</var> [<var class="dt-set-path">a1/text:</var> <var class="dt-function">read</var> <var class="dt-function">request-file/only</var> <var class="dt-function">show</var> a1]]<br />
<var class="dt-string">"Copy to Clipboard"</var> [<var class="dt-function">do-face</var> b1 <var class="dt-integer">1</var>]<br />
<var class="dt-string">"Paste from Clipboard"</var> [<var class="dt-set-path">a1/text:</var> <var class="dt-function">read</var> <var class="dt-url">clipboard://</var> <var class="dt-function">show</var> a1]<br />
<var class="dt-string">"______________________^/"</var> []<br />
<var class="dt-string">"About..."</var> [<var class="dt-function">alert</var> <var class="dt-string">"This menu is just a choice button widget :)"</var>]<br />
<var class="dt-string">"______________________^/"</var> []<br />
<var class="dt-string">"Halt"</var> [<var class="dt-function">halt</var>]<br />
<var class="dt-string">"Quit"</var> [<var class="dt-function">quit</var>]<br />
]<br />
<var class="dt-set-word">menu-Help:</var> [<br />
<var class="dt-string">"About..."</var> [<var class="dt-function">alert</var> <var class="dt-string">"This menu is just a choice button widget :)"</var>]<br />
]<br />
<var class="dt-set-word">menu-color:</var> <var class="dt-tuple">235.240.245</var><br />
<var class="dt-function">view</var> <var class="dt-function">center-face</var> <var class="dt-function">layout</var> [<br />
size <var class="dt-pair">440x250</var> <br />
origin <var class="dt-pair">0x0</var> space <var class="dt-pair">0x0</var> backdrop <var class="dt-tuple">253.253.253</var> across<br />
<var class="dt-cmt">;box menu-color 8x20<br />
</var> style menu-list choice left menu-color <var class="dt-pair">1x20</var> with [<br />
<var class="dt-set-word">para:</var> [<var class="dt-set-word">indent:</var> <var class="dt-pair">6x0</var> <var class="dt-set-word">origin:</var> <var class="dt-pair">0x0</var> <var class="dt-set-word">margin:</var> <var class="dt-pair">0x0</var>]<br />
<var class="dt-set-word">font:</var> [<var class="dt-set-word">style:</var> none <var class="dt-set-word">shadow:</var> none <var class="dt-set-word">colors:</var> [black <var class="dt-tuple">5.5.255</var>]]<br />
<var class="dt-set-word">colors:</var> <var class="dt-function">reduce</var> [menu-color menu-color <var class="dt-function">-</var> <var class="dt-integer">20</var>]<br />
<var class="dt-set-word">edge:</var> none<br />
] feel [<br />
<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event][<br />
<var class="dt-function">if</var> (action <var class="dt-function">=</var> <var class="dt-lit-word">'down</var>) <var class="dt-function">or</var> (action <var class="dt-function">=</var> <var class="dt-lit-word">'up</var>) [<br />
<var class="dt-function">choose/style/window/offset</var> <var class="dt-function">extract</var> face/menu <var class="dt-integer">2</var> <var class="dt-function">func</var> [face parent][<br />
<var class="dt-set-path">parent/data:</var> <var class="dt-function">find</var> parent/texts face/text<br />
<var class="dt-function">do-face</var> parent <var class="dt-set-path">parent/text:</var> face/text<br />
] face face/parent-face (face/offset <var class="dt-function">+</var> (face/size/y <var class="dt-function">*</var> <var class="dt-pair">0x1</var>))<br />
]<br />
]<br />
][<var class="dt-function">do</var> <var class="dt-function">select</var> face/menu value <var class="dt-set-path">face/text:</var> face/texts/1 <var class="dt-function">show</var> face]<br />
<var class="dt-set-word">m1:</var> menu-list <var class="dt-string">"Options"</var> <var class="dt-integer">170</var> with [<var class="dt-set-word">menu:</var> menu-Options]<br />
pad (<var class="dt-function">size-text</var> m1) <var class="dt-function">+</var> <var class="dt-integer">10</var> <var class="dt-function">-</var> m1/size <var class="dt-function">*</var> <var class="dt-pair">1x0</var><br />
<var class="dt-set-word">m2:</var> menu-list <var class="dt-string">"Help"</var> <var class="dt-integer">100</var> with [<var class="dt-set-word">menu:</var> menu-Help]<br />
box menu-color <var class="dt-pair">2000x20</var><br />
origin <var class="dt-pair">20x40</var> space <var class="dt-pair">20x20</var> below<br />
<var class="dt-set-word">a1:</var> area wrap with [<var class="dt-set-word">colors:</var> [<var class="dt-tuple">254.254.254</var> <var class="dt-tuple">248.248.248</var>]]<br />
<var class="dt-set-word">b1:</var> btn <var class="dt-string">"Submit"</var> [<var class="dt-function">write</var> <var class="dt-url">clipboard://</var> a1/text <var class="dt-function">alert</var> <var class="dt-string">"Copied"</var>]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com2tag:blogger.com,1999:blog-3451700962271094262.post-40360984929818972592013-10-02T03:42:00.001-07:002013-10-02T03:42:24.122-07:00RSS readerRSS is a link containing usually all website updates, now you can read your favorite RSSes with Rebol:<br />
<br />
<a href="http://1.bp.blogspot.com/-MEp2dsxySqI/Ukv4TnzeXBI/AAAAAAAACOI/xBRcPTXtAvk/s1600/RSS.jpg" imageanchor="1" ><img border="0" src="http://1.bp.blogspot.com/-MEp2dsxySqI/Ukv4TnzeXBI/AAAAAAAACOI/xBRcPTXtAvk/s320/RSS.jpg" /></a><br />
<br />
Here is the sourcecode:<br />
<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "RSS feed reader"<br />
Purpose: "Live Bookmarks"<br />
Date: 2007-07-20<br />
Version: 2.0.6<br />
Author: "Piotr Gapinski"<br />
Email: {news [at] rowery! olsztyn.pl}<br />
File: %rss.r<br />
Url: http://rowery.olsztyn.pl/narg/rebol/rss<br />
Copyright: "Olsztynska Strona Rowerowa http://www.rowery.olsztyn.pl"<br />
License: "GNU General Public License (Version II)"<br />
Library: [<br />
level: 'intermediate<br />
platform: 'all<br />
type: [tool]<br />
domain: [web]<br />
tested-under: [<br />
view 1.3.1 on [Linux]<br />
view 1.3.2 on [Linux WinXP]<br />
]<br />
support: none<br />
license: 'GPL<br />
]<br />
Zmiany: {<br />
2.0.6 2007-07-20<br />
- funkcja iconv umozliwia pelna obsluge UTF-8; nieznane znaki sa zamieniane na "."<br />
- standardem docelowym nie moze byc UTF-8, zrodlowym nie moze byc ASCII<br />
- local-charset jest inicjalizowany tylko raz na poczatku dzialania skryptu<br />
2.0.5 2007-07-12<br />
- znaki UTF-8 skladajace sie z trzech oktetow sa usuwane<br />
- path-thru potrafi obslugiwac url bez nazwy pliku<br />
2.0.4 2007-04-03<br />
- wybieranie rss za pomoca klawiatury powoduje aktualizacje listy kanalow<br />
2.0.3 2007-03-22<br />
- read-thru potrafi zapisywac w cache pliki zawierajace znaki specejalne;<br />
mozliwe dzieki podmianie funkcji path-thru<br />
2.0.2 2007-03-12<br />
- ctx-rss-xml/escape-html domyslnie usuwa nieznane entity html<br />
- zamienione kody znakow zet i ziet dla utf-8; zobacz standards/utf-8<br />
- docelowe kodowanie znakow jest uzaleznione od systemu operacyjnego;<br />
zobacz ctx-rss-xml/to-local-charset<br />
2.0.1 2007-03-09<br />
- obsluga polskich znakow w standardzie UTF-8; zobacz ctx-rss-xml/iconv<br />
- obsluga znacznikow ldquo, rdquo oraz rsquo; zobacz ctx-rss-xml/escape-html<br />
}<br />
]<br />
<var class="dt-function">if</var> system/version <var class="dt-function"><</var> <var class="dt-tuple">1.3.1</var> [<var class="dt-function">to</var> <var class="dt-datatype">error!</var> <var class="dt-string">"RSS feed reader requires Rebol/View 1.3.1 or greater"</var>]<br />
<var class="dt-function">secure</var> allow<br />
<var class="dt-function">if</var> <var class="dt-function">error?</var> <var class="dt-set-word">err:</var> <var class="dt-function">try</var> [<br />
<var class="dt-set-word">ctx-rss-hosts:</var> <var class="dt-function">context</var> [<br />
<var class="dt-set-word">hosts:</var> [<br />
<var class="dt-cmt">; [site "nazwa serwisu" url url!-pliku-rss refresh time!-do-odswiezenia]<br />
</var> <var class="dt-cmt">; Linux<br />
</var> [site <var class="dt-string">"Linuxnews.pl"</var> url <var class="dt-url">http://linuxnews.pl/feed/</var> refresh <var class="dt-time">1:00</var>]<br />
[site <var class="dt-string">"jakilinux.org"</var> url <var class="dt-url">http://jakilinux.org/feed/</var>]<br />
[site <var class="dt-string">"7th Guard"</var> url <var class="dt-url">http://rss.7thguard.net/7thguard.xml</var>]<br />
[site <var class="dt-string">"Linux.com"</var> url <var class="dt-url">http://www.linux.com/index.rss</var>]<br />
<br />
<var class="dt-cmt">; Slackware<br />
</var> [site <var class="dt-string">"Slackware Changelog"</var> url <var class="dt-url">http://riexc.r1g.edu.lv/stuff/slachrss.php</var>]<br />
[site <var class="dt-string">"Slackware SSA"</var> url <var class="dt-url">http://dev.slackware.it/rss/slackware-security.xml</var>]<br />
[site <var class="dt-string">"Develia.org"</var> url <var class="dt-url">http://www.develia.org/news.rss20.en.xml</var>]<br />
<br />
<var class="dt-cmt">; Software<br />
</var> [site <var class="dt-string">"KDE-Apps.org"</var> url <var class="dt-url">http://www.kde.org/dot/kde-apps-content.rdf</var>]<br />
[site <var class="dt-string">"Freshmeat"</var> url <var class="dt-url">http://freshmeat.net/backend/fm-releases.rdf</var>]<br />
[site <var class="dt-string">"Google: CakePHP"</var> url <var class="dt-url">http://groups.google.com/group/cake-php/feed/rss_v2_0_msgs.xml</var>]<br />
[site <var class="dt-string">"Rails Trac"</var> url <var class="dt-url">http://dev.rubyonrails.org/timeline?milestone=on&ticket=on&ticket_details=on&changeset=on&max=30&daysback=7&format=rss</var>]<br />
[site <var class="dt-string">"Google: RubyOnRails"</var> url <var class="dt-url">http://groups.google.com/group/rubyonrails/feed/rss_v2_0_msgs.xml</var>]<br />
[site <var class="dt-string">"Joel on Software"</var> url <var class="dt-url">http://www.joelonsoftware.com/rss.xml</var>]<br />
<var class="dt-cmt">; Programming Languages<br />
</var> [site <var class="dt-string">"REBOLution"</var> url <var class="dt-url">http://www.rebol.net/blog/carl-rss.xml</var>]<br />
[site <var class="dt-string">"Rebol3 Front Line"</var> url <var class="dt-url">http://www.rebol.net/r3blogs/rebol3-rss.xml</var>]<br />
[site <var class="dt-string">"Rebol.org"</var> url <var class="dt-url">http://www.rebol.org/cgi-bin/cgiwrap/rebol/rss-get-feed.r</var>]<br />
[site <var class="dt-string">"PHP Home"</var> url <var class="dt-url">http://www.php.net/news.rss</var>]<br />
[site <var class="dt-string">"Ruby Home"</var> url <var class="dt-url">http://www.ruby-lang.org/en/index.rdf</var>]<br />
[site <var class="dt-string">"Mono Project"</var> url <var class="dt-url">http://www.mono-project.com/news/index.rss2</var>]<br />
<br />
<var class="dt-cmt">; DB<br />
</var> [site <var class="dt-string">"MySQL"</var> url <var class="dt-url">http://dev.mysql.com/mysql.rss</var>]<br />
[site <var class="dt-string">"PostgreeSQL"</var> url <var class="dt-url">http://www.postgresql.org/news.rss</var>]<br />
[site <var class="dt-string">"OTN Headlines"</var> url <var class="dt-url">http://www.oracle.com/technology/syndication/rss_otn_news.xml</var>]<br />
<var class="dt-cmt">; Amiga<br />
</var> [site <var class="dt-string">"Polski Portal Amigowy"</var> url <var class="dt-url">http://www.ppa.pl/newsy/b2rss.xml</var>]<br />
[site <var class="dt-string">"EXEC.pl"</var> url <var class="dt-url">http://www.exec.pl/news.rss</var>]<br />
<var class="dt-cmt">; Inne<br />
</var> [site <var class="dt-string">"Rowery!Olsztyn"</var> url <var class="dt-url">http://www.rowery.olsztyn.pl/wiki/feed.php</var> refresh <var class="dt-time">2:00</var>]<br />
[site <var class="dt-string">"DCResource"</var> url <var class="dt-url">http://www.dcresource.com/newsfeed/news.rdf</var>]<br />
]<br />
<var class="dt-set-word">def-refresh:</var> <var class="dt-time">1:00</var><br />
<var class="dt-function">set</var> <var class="dt-lit-word">'rss-site</var> <var class="dt-function">has</var> [site] [<br />
<var class="dt-cmt">; zwraca liste nazw serwisow rss<br />
</var> <var class="dt-set-word">site:</var> <var class="dt-function">copy</var> []<br />
<var class="dt-function">foreach</var> rss hosts [<var class="dt-function">append</var> site rss/site]<br />
<var class="dt-function">return</var> site<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'load-rss</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Wczytuje RSS serwera okreslonego pozycja w liscie serwerow; Zwraca string! lub none!"</var><br />
num [<var class="dt-datatype">integer!</var>] <var class="dt-string">"numer sajtu"</var><br />
<var class="dt-refinement">/force</var> <var class="dt-string">"wymusza aktualizacje danych"</var><br />
<var class="dt-refinement">/local</var> url dat] [<br />
<var class="dt-function">attempt</var> [<br />
<var class="dt-set-word">url:</var> <var class="dt-function">to-url</var> hosts/:num/url<br />
<var class="dt-set-word">dat:</var> <var class="dt-function">either</var> <var class="dt-function">any</var> [<var class="dt-function">not</var> (valid-rss num) force] [<var class="dt-function">read-thru/update</var> url] [<var class="dt-function">read-thru</var> url]<br />
<var class="dt-function">to-string</var> dat<br />
]<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'valid-rss</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Sprawdza czy dane w cache sa aktulne; Zwraca wartosc logic!"</var><br />
num [<var class="dt-datatype">integer!</var>] <var class="dt-string">"numer sajtu"</var><br />
<var class="dt-refinement">/local</var> max-age] [<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">attempt</var> [<var class="dt-function">exists?</var> <var class="dt-function">path-thru</var> hosts/:num/url] [<var class="dt-function">return</var> false]<br />
<var class="dt-set-word">max-age:</var> <var class="dt-function">any</var> [<br />
<var class="dt-function">attempt</var> [<var class="dt-function">to-time</var> hosts/:num/refresh]<br />
def-refresh<br />
]<br />
((rss-datetime num) <var class="dt-function">+</var> max-age) <var class="dt-function">></var> <var class="dt-function">now</var><br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'rss-datetime</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Pobiera date pobrania danych do cache; Zwraca wartosc date!"</var><br />
num [<var class="dt-datatype">integer!</var>] <var class="dt-string">"numer sajtu"</var>] [<br />
<var class="dt-function">any</var> [<br />
<var class="dt-function">attempt</var> [<var class="dt-function">modified?</var> <var class="dt-function">path-thru</var> hosts/:num/url]<br />
<var class="dt-function">now</var><br />
]<br />
]<br />
]<br />
<var class="dt-set-word">ctx-rss-xml:</var> <var class="dt-function">context</var> [<br />
<var class="dt-set-word">standards:</var> [<br />
<var class="dt-cmt">; tabela standardow zamiany 18 polskich znakow (duze/male)<br />
</var> windows-1250 [<var class="dt-integer">165</var> <var class="dt-integer">198</var> <var class="dt-integer">202</var> <var class="dt-integer">163</var> <var class="dt-integer">209</var> <var class="dt-integer">211</var> <var class="dt-integer">140</var> <var class="dt-integer">143</var> <var class="dt-integer">175</var> <var class="dt-integer">185</var> <var class="dt-integer">230</var> <var class="dt-integer">234</var> <var class="dt-integer">179</var> <var class="dt-integer">241</var> <var class="dt-integer">243</var> <var class="dt-integer">156</var> <var class="dt-integer">159</var> <var class="dt-integer">191</var>]<br />
iso-8859-2 [<var class="dt-integer">161</var> <var class="dt-integer">198</var> <var class="dt-integer">202</var> <var class="dt-integer">163</var> <var class="dt-integer">209</var> <var class="dt-integer">211</var> <var class="dt-integer">166</var> <var class="dt-integer">172</var> <var class="dt-integer">175</var> <var class="dt-integer">177</var> <var class="dt-integer">230</var> <var class="dt-integer">234</var> <var class="dt-integer">179</var> <var class="dt-integer">241</var> <var class="dt-integer">243</var> <var class="dt-integer">182</var> <var class="dt-integer">188</var> <var class="dt-integer">191</var>]<br />
utf-8 [<var class="dt-integer">260</var> <var class="dt-integer">262</var> <var class="dt-integer">280</var> <var class="dt-integer">321</var> <var class="dt-integer">323</var> <var class="dt-integer">211</var> <var class="dt-integer">346</var> <var class="dt-integer">377</var> <var class="dt-integer">379</var> <var class="dt-integer">261</var> <var class="dt-integer">263</var> <var class="dt-integer">281</var> <var class="dt-integer">322</var> <var class="dt-integer">324</var> <var class="dt-integer">243</var> <var class="dt-integer">347</var> <var class="dt-integer">378</var> <var class="dt-integer">380</var>]<br />
ascii [<var class="dt-integer">065</var> <var class="dt-integer">067</var> <var class="dt-integer">069</var> <var class="dt-integer">076</var> <var class="dt-integer">078</var> <var class="dt-integer">079</var> <var class="dt-integer">083</var> <var class="dt-integer">090</var> <var class="dt-integer">090</var> <var class="dt-integer">097</var> <var class="dt-integer">099</var> <var class="dt-integer">101</var> <var class="dt-integer">108</var> <var class="dt-integer">110</var> <var class="dt-integer">111</var> <var class="dt-integer">115</var> <var class="dt-integer">122</var> <var class="dt-integer">122</var>]<br />
]<br />
<var class="dt-set-word">local-charset:</var> <var class="dt-function">select</var> standards <var class="dt-function">any</var> [<var class="dt-function">select</var> [<var class="dt-integer">4</var> ascii <var class="dt-integer">3</var> windows-1250] (<var class="dt-function">fourth</var> system/version) <var class="dt-lit-word">'ascii</var>]<br />
<br />
<var class="dt-set-word">to-local-charset:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Zmienia standard polskich znakow; Zwraca string! po konwersji"</var><br />
str [<var class="dt-datatype">string!</var>] <var class="dt-string">"tekst do konwersji"</var><br />
encoding [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] <var class="dt-string">"standard zrodlowy"</var>] [<br />
<var class="dt-set-word">encoding:</var> <var class="dt-function">attempt</var> [<var class="dt-function">to-word</var> <var class="dt-function">to-string</var> encoding]<br />
iconv str <var class="dt-function">any</var> [(<var class="dt-function">select</var> standards encoding) standards/utf-8] local-charset<br />
]<br />
<var class="dt-set-word">iconv:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Konwertuje polskie znaki w tekscie; Zwraca string! po konwersji"</var><br />
str [<var class="dt-datatype">string!</var>] <var class="dt-string">"tekst do konwersji"</var><br />
inp [<var class="dt-datatype">block!</var>] <var class="dt-string">"tablica konwersji (wejsciowa)"</var><br />
out [<var class="dt-datatype">block!</var>] <var class="dt-string">"tablica konwersji (wyjsciowa)"</var><br />
<var class="dt-refinement">/local</var> i j c here] [<br />
<var class="dt-cmt">; standardem docelowym nie moze byc UTF-8, zrodlowym nie moze byc ASCII<br />
</var> <var class="dt-function">if</var> <var class="dt-function">any</var> [<br />
<var class="dt-function">same?</var> inp out <br />
<var class="dt-function">same?</var> inp standards/ascii<br />
out/1 <var class="dt-function">></var> <var class="dt-integer">255</var> <var class="dt-cmt">; foreach code out [if code > 255 [break/return true]]<br />
</var> ][<var class="dt-function">return</var> str ]<br />
<br />
<var class="dt-function">parse/all</var> str [<br />
<var class="dt-function">any</var> [<br />
<var class="dt-set-word">here:</var> <var class="dt-function">skip</var> (<br />
<var class="dt-set-word">c:</var> <var class="dt-function">first</var> here<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [(inp/1 <var class="dt-function"><</var> <var class="dt-integer">255</var>) (c <var class="dt-function">></var> <var class="dt-integer">127</var>)] [<br />
<var class="dt-cmt">; znaki narodowe maja kod > 127<br />
</var> <var class="dt-function">any</var> [<br />
<var class="dt-function">none?</var> <var class="dt-set-word">i:</var> <var class="dt-function">attempt</var> [<var class="dt-function">index?</var> <var class="dt-function">find</var> inp <var class="dt-function">to-integer</var> c]<br />
<var class="dt-function">change</var> here <var class="dt-function">to-char</var> out/:i<br />
]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [(inp/1 <var class="dt-function">></var> <var class="dt-integer">255</var>) (c <var class="dt-function">></var> <var class="dt-integer">127</var>)] [<br />
<var class="dt-cmt">; UTF-8<br />
</var> <var class="dt-cmt">; znaki < 128 sa przepuszczane bez zmian<br />
</var> <var class="dt-function">either</var> <var class="dt-function">all</var> [(c <var class="dt-function">></var> <var class="dt-integer">191</var>) (c <var class="dt-function"><</var> <var class="dt-integer">224</var>)] [<br />
<var class="dt-cmt">; dwa okrety<br />
</var> <var class="dt-set-word">i:</var> ((<var class="dt-function">to-integer</var> c) <var class="dt-function">and</var> <var class="dt-integer">31</var>) <var class="dt-function">*</var> <var class="dt-function">to-integer</var> (<var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">6</var>)<br />
<var class="dt-set-word">i:</var> i <var class="dt-function">or</var> (<var class="dt-function">to-integer</var> (<var class="dt-function">second</var> here) <var class="dt-function">and</var> <var class="dt-integer">63</var>)<br />
<var class="dt-function">remove/part</var> here <var class="dt-integer">2</var><br />
][<br />
<var class="dt-cmt">; trzy oktety<br />
</var> <var class="dt-set-word">i:</var> ((<var class="dt-function">to-integer</var> c) <var class="dt-function">and</var> <var class="dt-integer">15</var>) <var class="dt-function">*</var> <var class="dt-function">to-integer</var> (<var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">12</var>)<br />
<var class="dt-set-word">i:</var> i <var class="dt-function">or</var> ((<var class="dt-function">to-integer</var> (<var class="dt-function">second</var> here) <var class="dt-function">and</var> <var class="dt-integer">63</var>) <var class="dt-function">*</var> <var class="dt-function">to-integer</var> (<var class="dt-function">power</var> <var class="dt-integer">2</var> <var class="dt-integer">6</var>))<br />
<var class="dt-set-word">i:</var> i <var class="dt-function">or</var> (<var class="dt-function">to-integer</var> (<var class="dt-function">third</var> here) <var class="dt-function">and</var> <var class="dt-integer">63</var>)<br />
<var class="dt-function">remove/part</var> here <var class="dt-integer">3</var><br />
]<br />
<var class="dt-function">insert</var> here <var class="dt-function">any</var> [<br />
<var class="dt-function">if</var> <var class="dt-function">none?</var> <var class="dt-set-word">j:</var> <var class="dt-function">attempt</var> [<var class="dt-function">index?</var> <var class="dt-function">find</var> inp i] [<var class="dt-string">"."</var>]<br />
<var class="dt-function">to-char</var> out/:j<br />
]<br />
]<br />
) <var class="dt-get-word">:here</var><br />
<var class="dt-function">skip</var><br />
]<br />
]<br />
<var class="dt-function">head</var> here<br />
]<br />
<var class="dt-set-word">tokens:</var> [<var class="dt-string">"amp"</var> <var class="dt-string">{&}</var> <var class="dt-string">"lt"</var> <var class="dt-string">{<}</var> <var class="dt-string">"gt"</var> <var class="dt-string">{>}</var> <var class="dt-string">"nbsp"</var> <var class="dt-string">{ }</var> <var class="dt-string">"apos"</var> <var class="dt-string">{'}</var> <var class="dt-string">"quot"</var> <var class="dt-string">{"}</var> <var class="dt-string">"raquo"</var> <var class="dt-string">{-}</var> <var class="dt-string">"ldquo"</var> <var class="dt-string">{"}</var> <var class="dt-string">"rdquo"</var> <var class="dt-string">{"}</var> <var class="dt-string">"rsquo"</var> <var class="dt-string">{'}</var>]<br />
<var class="dt-set-word">escape-html:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Zamienia encje HTML na tekst; Zwraca string! po konwersji"</var><br />
text [<var class="dt-datatype">string!</var>] <var class="dt-string">"tekst do konwersji"</var><br />
<var class="dt-refinement">/local</var> here there entity] [<br />
<var class="dt-set-word">entity:</var> <var class="dt-function">complement</var> <var class="dt-function">charset</var> <var class="dt-string">{ :;<>&#}</var><br />
<var class="dt-function">parse/all</var> text [<br />
<var class="dt-function">any</var> [<br />
<var class="dt-set-word">here:</var><br />
end <var class="dt-function">break</var><br />
| <var class="dt-string">"&"</var><br />
[<br />
<var class="dt-string">"#"</var> <var class="dt-function">copy</var> item <var class="dt-function">to</var> <var class="dt-string">";"</var> <var class="dt-function">skip</var> <var class="dt-set-word">there:</var> (<br />
<var class="dt-function">remove/part</var> here there<br />
<var class="dt-function">attempt</var> [<var class="dt-function">insert</var> here <var class="dt-function">form</var> <var class="dt-function">to-char</var> <var class="dt-function">to-integer</var> item]<br />
) <br />
<var class="dt-get-word">:here</var><br />
| <var class="dt-function">copy</var> item some entity <var class="dt-string">";"</var> <var class="dt-set-word">there:</var> (<br />
<var class="dt-function">remove/part</var> here there<br />
<var class="dt-function">any</var> [<br />
<var class="dt-function">none?</var> <var class="dt-set-word">code:</var> <var class="dt-function">select</var> tokens item<br />
<var class="dt-function">insert</var> here code<br />
]<br />
)<br />
<var class="dt-get-word">:here</var><br />
]<br />
| [<var class="dt-string">"<!["</var> <var class="dt-string">"CDATA["</var> | <var class="dt-string">"]]>"</var>] <var class="dt-set-word">there:</var> (<var class="dt-function">remove/part</var> here there) <var class="dt-get-word">:here</var><br />
| <var class="dt-function">skip</var><br />
] <br />
]<br />
<var class="dt-function">head</var> here<br />
]<br />
<var class="dt-set-word">strip-html:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Usuwa znaczniki HTML z tekstu; Zwraca string! po konwersji"</var><br />
text [<var class="dt-datatype">string!</var>] <var class="dt-string">"tekst do konwersji"</var><br />
<var class="dt-refinement">/local</var> page] [<br />
<var class="dt-function">remove-each</var> tag <var class="dt-set-word">page:</var> <var class="dt-function">load/markup</var> escape-html (<var class="dt-function">trim/lines/tail</var> text) [<var class="dt-function">tag?</var> tag]<br />
<var class="dt-function">form</var> page<br />
]<br />
<var class="dt-set-word">rss:</var> <var class="dt-function">copy</var> [] <var class="dt-cmt">; miejsce na wynikowa tablice informacji<br />
</var> <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [] <var class="dt-cmt">; kontekst znalezionego znacznika<br />
</var><br />
<var class="dt-set-word">emit:</var> <var class="dt-function">func</var> [<var class="dt-lit-word">'scope</var> desc] [<br />
<var class="dt-set-word">desc:</var> <var class="dt-function">any</var> [desc <var class="dt-string">""</var>]<br />
<var class="dt-function">repend</var> ctx [scope (strip-html desc)]<br />
]<br />
<var class="dt-set-word">parts:</var> [<br />
[<var class="dt-string">"<channel"</var> thru <var class="dt-string">">"</var> (<var class="dt-function">append</var> rss <var class="dt-lit-word">'channel</var> <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [])] | <var class="dt-tag"></channel></var> |<br />
[<var class="dt-string">"<image"</var> thru <var class="dt-string">">"</var> (<var class="dt-function">repend</var> rss [ctx <var class="dt-lit-word">'image</var>] <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [])] | <var class="dt-tag"></image></var> |<br />
[<var class="dt-string">"<items"</var> thru <var class="dt-string">">"</var>] | <var class="dt-tag"></items></var> |<br />
[<var class="dt-string">"<poll"</var> thru <var class="dt-string">">"</var> (<var class="dt-function">repend</var> rss [ctx <var class="dt-lit-word">'poll</var>] <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [])] | <var class="dt-tag"></poll></var> |<br />
[<var class="dt-string">"<textinput"</var> thru <var class="dt-string">">"</var> (<var class="dt-function">repend</var> rss [ctx <var class="dt-lit-word">'textinput</var>] <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [])] | <var class="dt-tag"></textinput></var> |<br />
[<var class="dt-string">"<item"</var> thru <var class="dt-string">">"</var> (<var class="dt-function">repend</var> rss [ctx <var class="dt-lit-word">'item</var>] <var class="dt-set-word">ctx:</var> <var class="dt-function">copy</var> [])] | <var class="dt-tag"></item></var> |<br />
[<var class="dt-tag"><title></var> <var class="dt-function">copy</var> title <var class="dt-function">to</var> <var class="dt-tag"></title></var> (emit <var class="dt-lit-word">'title</var> title)] |<br />
[<var class="dt-tag"><link></var> <var class="dt-function">copy</var> link <var class="dt-function">to</var> <var class="dt-tag"></link></var> (emit <var class="dt-lit-word">'link</var> link)] |<br />
[<var class="dt-tag"><url></var> <var class="dt-function">copy</var> url <var class="dt-function">to</var> <var class="dt-tag"></url></var> (emit <var class="dt-lit-word">'url</var> url)] |<br />
[<var class="dt-tag"><description></var> <var class="dt-function">copy</var> desc <var class="dt-function">to</var> <var class="dt-tag"></description></var> (emit <var class="dt-lit-word">'description</var> desc)] |<br />
[<var class="dt-tag"><pubdate></var> <var class="dt-function">copy</var> pubdate <var class="dt-function">to</var> <var class="dt-tag"></pubdate></var> (emit <var class="dt-lit-word">'pubdate</var> pubdate)] |<br />
[<var class="dt-tag"><dc:date></var> <var class="dt-function">copy</var> pubdate <var class="dt-function">to</var> <var class="dt-tag"></dc:date></var> (emit <var class="dt-lit-word">'pubdate</var> pubdate)] |<br />
[<var class="dt-tag"><dc:pubdate></var> <var class="dt-function">copy</var> pubdate <var class="dt-function">to</var> <var class="dt-tag"></dc:pubdate></var> (emit <var class="dt-lit-word">'pubdate</var> pubdate)] |<br />
<var class="dt-function">skip</var><br />
]<br />
<var class="dt-set-word">rules:</var> [<br />
some parts<br />
<var class="dt-function">to</var> end (<var class="dt-function">repend</var> rss [ctx])<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'parse-rss</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Zamienia RSS XML na blok danych rebol; Zwraca wartosc logic!"</var><br />
scope [<var class="dt-datatype">word!</var>] <var class="dt-string">"zakres danych (channel|image|item|poll|...)"</var><br />
dat [<var class="dt-datatype">string!</var>] <var class="dt-string">"dane xml"</var><br />
f [<var class="dt-datatype">any-function!</var>] <var class="dt-string">"funkcja callback; otrzymuje parametry scope jako argument (block!)"</var><br />
<var class="dt-refinement">/local</var> rc encoding] [<br />
<var class="dt-set-word">rc:</var> true<br />
<var class="dt-cmt">; pobieranie poszczegolnych newsow (item) oznacza koniecznosc odwiezenia calego rss<br />
</var> <var class="dt-function">if</var> <var class="dt-function">any</var> [(<var class="dt-function">empty?</var> rss) (scope <var class="dt-function">=</var> <var class="dt-lit-word">'item</var>)] [<br />
<br />
<var class="dt-cmt">; konwertuj wykryty standard (domyslnie UTF-8)<br />
</var> <var class="dt-function">any</var> [<br />
<var class="dt-function">parse/all</var> <var class="dt-function">detab</var> dat [<br />
<var class="dt-function">to</var> <var class="dt-string">"<?xml"</var> thru <var class="dt-string">"encoding"</var> <var class="dt-integer">2</var> <var class="dt-function">skip</var> <br />
<var class="dt-function">copy</var> encoding <var class="dt-function">to</var> <var class="dt-string">{"}</var><br />
thru <var class="dt-string">{?>}</var> <var class="dt-function">to</var> end<br />
]<br />
<var class="dt-set-word">encoding:</var> none<br />
]<br />
<var class="dt-set-word">dat:</var> to-local-charset dat encoding<br />
<var class="dt-function">clear</var> rss<br />
<var class="dt-function">clear</var> ctx<br />
<var class="dt-set-word">rc:</var> <var class="dt-function">parse/all</var> <var class="dt-function">detab</var> dat rules<br />
]<br />
<var class="dt-function">if</var> rc [<br />
<var class="dt-cmt">; dla kazdego elementu zakresu (scope) wywolaj funkcje callback<br />
</var> <var class="dt-cmt">; parametrem funkcji callback jest blok danych zwiazany z danym zakresem<br />
</var> <var class="dt-cmt">; na wszelki wypadek jest sprawdzane czy zakres (scope) jest typu word! co<br />
</var> <var class="dt-cmt">; zapobiega przekazywaniu do callback przypadkowych danych<br />
</var> <var class="dt-function">foreach</var> [item item-data] rss [<var class="dt-function">if</var> <var class="dt-function">all</var> [(<var class="dt-function">word?</var> item) (item <var class="dt-function">=</var> scope)] [f item-data]]<br />
]<br />
<var class="dt-function">return</var> rc<br />
]<br />
]<br />
<var class="dt-set-word">ctx-rss-display:</var> <var class="dt-function">context</var> [<br />
<var class="dt-set-word">def-offset:</var> <var class="dt-pair">4x1</var> <var class="dt-cmt">; odleglosc XY od gornej ramki do pierwszego elementu listy newsow<br />
</var> <var class="dt-set-word">def-list-separator:</var> on<br />
<var class="dt-set-word">def-list-date:</var> on<br />
<var class="dt-set-word">def-list-desc:</var> on<br />
<br />
<var class="dt-set-word">pos-offset:</var> def-offset<br />
<var class="dt-set-word">browse-url:</var> none<br />
<var class="dt-set-word">list-box:</var> none<br />
<var class="dt-set-word">list-pane:</var> none<br />
<var class="dt-set-word">last-rss-num:</var> <var class="dt-integer">0</var><br />
<var class="dt-cmt">; funkcje przesuwajace liste newsow (scroll-list) oraz scrollera (scroller-value)<br />
</var> <var class="dt-cmt">; przesuniecie slidera powoduje aktualizacje pozycji listy newsow<br />
</var> <var class="dt-set-word">scroll-list:</var> <var class="dt-function">func</var> [value [<var class="dt-datatype">number!</var>]] [<br />
<var class="dt-set-path">list-box/offset/y:</var> <var class="dt-function">negate</var> value <var class="dt-function">*</var> (list-box/size/y <var class="dt-function">-</var> gui-news-list/size/y)<br />
<var class="dt-function">show</var> list-box<br />
]<br />
<var class="dt-set-word">scroller-value:</var> <var class="dt-function">func</var> [distance [<var class="dt-datatype">number!</var>]] [<br />
<var class="dt-set-word">delta-y:</var> gui-news-slider/data <var class="dt-function">+</var> (distance <var class="dt-function">*</var> <var class="dt-integer">20</var> <var class="dt-function">/</var> pos-offset/y)<br />
<var class="dt-function">if</var> delta-y <var class="dt-function"><</var> <var class="dt-integer">0</var> [<var class="dt-set-word">delta-y:</var> <var class="dt-integer">0</var>]<br />
<var class="dt-function">if</var> delta-y <var class="dt-function">></var> <var class="dt-integer">1</var> [<var class="dt-set-word">delta-y:</var> <var class="dt-integer">1</var>]<br />
scroll-list <var class="dt-set-path">gui-news-slider/data:</var> delta-y<br />
<var class="dt-function">show</var> gui-news-slider<br />
]<br />
<var class="dt-cmt">; funkcje wybierajace z listy nastepny (next-host) lub poprzedni (prev-host) serwis rss w liscie<br />
</var> <var class="dt-cmt">; lista serwisow jest pobierana bezposredniu z VID gui-hosts-list<br />
</var> <var class="dt-set-word">next-host:</var> <var class="dt-function">has</var> [data] [<br />
<var class="dt-set-word">data:</var> <var class="dt-function">skip</var> gui-hosts-list/data <var class="dt-integer">1</var><br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">empty?</var> data [<var class="dt-set-path">gui-hosts-list/data:</var> data]<br />
<var class="dt-function">index?</var> gui-hosts-list/data<br />
]<br />
<var class="dt-set-word">prev-host:</var> <var class="dt-function">does</var> [<var class="dt-function">index?</var> <var class="dt-set-path">gui-hosts-list/data:</var> <var class="dt-function">skip</var> gui-hosts-list/data <var class="dt-integer">-1</var>]<br />
<var class="dt-set-word">clear-display:</var> <var class="dt-function">does</var> [<br />
<var class="dt-cmt">; inicjalizuje zmienne gui; funkcja musi byc wywolana przed dostepem do list-pane i list-box<br />
</var> <var class="dt-cmt">; odswiezenie gui nastepuje w funkcji display-rss<br />
</var> <var class="dt-set-word">pos-offset:</var> def-offset<br />
<var class="dt-set-word">list-box:</var> <var class="dt-function">make-face/size</var> <var class="dt-lit-word">'box</var> <var class="dt-function">as-pair</var> gui-news-list/size/x <var class="dt-integer">1</var><br />
<var class="dt-set-path">gui-news-list/pane:</var> list-box<br />
<var class="dt-set-word">list-pane:</var> <var class="dt-set-path">list-box/pane:</var> <var class="dt-function">copy</var> []<br />
]<br />
<var class="dt-set-word">display-error:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Wyswietla informacje o bledzie; Odswiezenie gui nastepuje w funkcji display-rss"</var><br />
text [<var class="dt-datatype">string!</var>] <var class="dt-string">"naglowek bledu"</var><br />
desc [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] <var class="dt-string">"opis bledu"</var>] [<br />
clear-display<br />
<var class="dt-function">hide</var> gui-browse-button<br />
append-news text none desc none<br />
]<br />
<var class="dt-set-word">parse-rss-items:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Callback funkcji parse-rss; Dodaje do listy koleny news"</var><br />
news [<var class="dt-datatype">block!</var>] <var class="dt-string">"block danych przekazany przez parse-rss"</var><br />
<var class="dt-refinement">/local</var> link desc date] [<br />
<var class="dt-set-word">desc:</var> <var class="dt-function">attempt</var> [news/description]<br />
<var class="dt-set-word">link:</var> <var class="dt-function">attempt</var> [news/link]<br />
<var class="dt-set-word">date:</var> <var class="dt-function">any</var> [<br />
<var class="dt-function">attempt</var> [<var class="dt-function">form</var> <var class="dt-function">to-date</var> <var class="dt-function">skip</var> news/pubdate <var class="dt-integer">5</var>]<br />
<var class="dt-function">attempt</var> [<var class="dt-function">form</var> <var class="dt-function">to-date</var> <var class="dt-function">replace</var> <var class="dt-function">copy</var> news/pubdate <var class="dt-string">"T"</var> <var class="dt-string">" "</var>]<br />
<var class="dt-function">attempt</var> [news/pubdate]<br />
]<br />
<var class="dt-function">attempt</var> [append-news (<var class="dt-function">form</var> news/title) link desc date]<br />
]<br />
<var class="dt-set-word">parse-rss-channel:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Callback funkcji parse-rss; Pobiera channel/link url do zmiennej globalnej browse-url"</var><br />
channel [<var class="dt-datatype">block!</var>] <var class="dt-string">"block! danych przekazany przez parse-rss"</var>] [<br />
<var class="dt-set-word">browse-url:</var> none<br />
<var class="dt-function">any</var> [<br />
<var class="dt-function">attempt</var> [<br />
<var class="dt-set-word">browse-url:</var> <var class="dt-function">to-url</var> channel/link<br />
<var class="dt-function">show</var> gui-browse-button<br />
]<br />
<var class="dt-function">hide</var> gui-browse-button<br />
]<br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'display-rss</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Wyswietla rss serwera okreslonego pozycja w liscie serwerow; Zwraca wartosc logic!"</var><br />
num [<var class="dt-datatype">integer!</var>] <var class="dt-string">"numer sajtu"</var><br />
<var class="dt-refinement">/force</var> <var class="dt-string">"wymusza aktualizacje danych"</var><br />
<var class="dt-refinement">/local</var> desc link nf error list-lay tl][<br />
<var class="dt-function">either</var> <var class="dt-function">all</var> [(valid-rss num) (<var class="dt-function">not</var> force)][<br />
<var class="dt-cmt">; jezeli nie bylo zmiany rss - nie odswiezaj listy<br />
</var> <var class="dt-function">if</var> (last-rss-num <var class="dt-function">=</var> num) [<var class="dt-function">return</var> true]<br />
<var class="dt-set-word">nf:</var> false<br />
<var class="dt-set-word">dat:</var> load-rss num<br />
][<br />
<var class="dt-set-word">nf:</var> <var class="dt-function">flash/with</var> <var class="dt-string">"Please Wait..."</var> main-window<br />
<var class="dt-set-word">dat:</var> load-rss/force num<br />
]<br />
<var class="dt-set-word">last-rss-num:</var> num<br />
<var class="dt-cmt">; upewnij sie ze gui-hosts-list zawiera poprawne dane o wybranym serwerze rss<br />
</var> <var class="dt-set-path">gui-hosts-list/data:</var> <var class="dt-function">skip</var> gui-hosts-list/list-data (num <var class="dt-function">-</var> <var class="dt-integer">1</var>)<br />
<var class="dt-set-path">gui-hosts-list/text:</var> <var class="dt-function">first</var> gui-hosts-list/data<br />
<var class="dt-function">attempt</var> [<br />
<var class="dt-cmt">; hack! niestety wymaga by drop-down by wczesniej chociaz raz otwarty<br />
</var> <var class="dt-function">if</var> <var class="dt-set-word">list-lay:</var> gui-hosts-list/list-lay [<br />
<var class="dt-set-word">tl:</var> <var class="dt-function">first</var> list-lay/pane<br />
<var class="dt-cmt">; zmien podswietlony element w liscie drop-down zgodnie z wyborem usera<br />
</var> <var class="dt-function">clear</var> tl/picked<br />
<var class="dt-function">append</var> tl/picked gui-hosts-list/text<br />
<var class="dt-cmt">; przesun liste tak by nowy element byl widoczny<br />
</var> <var class="dt-set-path">tl/sld/data:</var> (<var class="dt-function">index?</var> gui-hosts-list/data) <var class="dt-function">/</var> (<var class="dt-function">length?</var> gui-hosts-list/texts)<br />
<var class="dt-function">do-face</var> tl/sld tl/sld/data<br />
]<br />
]<br />
<var class="dt-function">either</var> <var class="dt-function">not</var> <var class="dt-function">none?</var> dat [<br />
clear-display<br />
<var class="dt-set-path">gui-timer/text:</var> <var class="dt-function">form</var> rss-datetime num<br />
<var class="dt-set-word">error:</var> <var class="dt-function">not</var> <var class="dt-function">all</var> [<br />
parse-rss <var class="dt-lit-word">'item</var> dat <var class="dt-get-word">:parse-rss-items</var><br />
parse-rss <var class="dt-lit-word">'channel</var> dat <var class="dt-get-word">:parse-rss-channel</var><br />
<var class="dt-function">not</var> <var class="dt-function">empty?</var> list-pane <var class="dt-cmt">; list-pane jest pusty gdy gui-news-list nie zawiera newsow<br />
</var> ]<br />
][<br />
<var class="dt-cmt">; dane nie zostaly zaladowane<br />
</var> <var class="dt-set-word">error:</var> true<br />
]<br />
<var class="dt-function">if</var> error [display-error <var class="dt-string">{Error reading news feed!}</var> <var class="dt-string">{please check internet connection; press "refresh" button to try again}</var>]<br />
<var class="dt-function">if</var> nf [<var class="dt-function">unview/only</var> nf]<br />
<var class="dt-cmt">; przesun scroller w polozenie wyjsciowe i przelicz pozycje suwaka<br />
</var> <var class="dt-set-path">gui-news-slider/data:</var> <var class="dt-integer">0</var><br />
gui-news-slider/redrag (gui-news-list/size/y <var class="dt-function">/</var> list-box/size/y)<br />
<var class="dt-function">show</var> [<br />
gui-news-slider<br />
gui-timer<br />
gui-news-list<br />
gui-hosts-list<br />
]<br />
<var class="dt-function">recycle</var><br />
<var class="dt-function">return</var> <var class="dt-function">not</var> <var class="dt-function">none?</var> dat<br />
]<br />
<var class="dt-set-word">make-header:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Tworzy naglowek wiadomosci wykorzystujac VID button; Zwraca object! VID BUTTON"</var><br />
hdr-text [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] hdr-url [<var class="dt-datatype">url!</var> <var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] hdr-size [<var class="dt-datatype">pair!</var>] hdr-offset [<var class="dt-datatype">pair!</var>]] [<br />
<var class="dt-function">make</var> <var class="dt-function">get-style</var> <var class="dt-lit-word">'button</var> [<br />
<var class="dt-set-word">size:</var> hdr-size<br />
<var class="dt-set-word">offset:</var> hdr-offset<br />
<var class="dt-set-word">text:</var> <var class="dt-function">trim/lines/head/tail</var> hdr-text<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]<br />
<var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<var class="dt-set-word">align:</var> <var class="dt-lit-word">'left</var> <var class="dt-set-word">size:</var> <var class="dt-integer">13</var>]<br />
<var class="dt-set-word">user-data:</var> <var class="dt-function">either</var> <var class="dt-function">none?</var> hdr-url [none] [<var class="dt-function">copy</var> hdr-url]<br />
<var class="dt-set-word">action:</var> <var class="dt-function">make</var> <var class="dt-datatype">function!</var> [] [<var class="dt-function">any</var> [(<var class="dt-function">none?</var> user-data) (<var class="dt-function">browse/only</var> user-data)]]<br />
]<br />
]<br />
<var class="dt-set-word">make-line:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Tworzy linie oddzielajaca naglowek wiadomosci od jej tresci; Zwraca object! VID BOX"</var><br />
line-size [<var class="dt-datatype">pair!</var>] line-offset [<var class="dt-datatype">pair!</var>]] [<br />
<var class="dt-function">make</var> <var class="dt-function">get-style</var> <var class="dt-lit-word">'box</var> [<br />
<var class="dt-set-word">size:</var> line-size <var class="dt-cmt">; minimalna wysokosc 'box wynosi 3pix<br />
</var> <var class="dt-set-word">offset:</var> line-offset<br />
<var class="dt-set-word">edge:</var> <var class="dt-function">make</var> edge [<var class="dt-set-word">color:</var> coal <var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var>]<br />
]<br />
]<br />
<var class="dt-set-word">make-description:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Tworzy opis wiadomosci wykorzystujac VID txt; Zwraca object! VID TXT"</var><br />
desc-text [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] desc-size [<var class="dt-datatype">pair!</var>] desc-offset [<var class="dt-datatype">pair!</var>]] [<br />
<var class="dt-function">make</var> <var class="dt-function">get-style</var> <var class="dt-lit-word">'txt</var> [<br />
<var class="dt-set-word">size:</var> desc-size<br />
<var class="dt-set-word">offset:</var> desc-offset<br />
<var class="dt-set-word">text:</var> <var class="dt-function">trim/lines/head/tail</var> desc-text<br />
<var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<var class="dt-set-word">align:</var> <var class="dt-lit-word">'left</var> <var class="dt-set-word">color:</var> black]<br />
]<br />
]<br />
<var class="dt-set-word">make-pubdate:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Tworzy informcje o dacie publikacji wykorzystujac VID text; Zwraca object! VID TEXT"</var><br />
pubdate-text [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] pubdate-size [<var class="dt-datatype">pair!</var>] pubdate-offset [<var class="dt-datatype">pair!</var>]] [<br />
<var class="dt-function">make</var> <var class="dt-function">get-style</var> <var class="dt-lit-word">'text</var> [<br />
<var class="dt-set-word">size:</var> pubdate-size<br />
<var class="dt-set-word">offset:</var> pubdate-offset<br />
<var class="dt-set-word">text:</var> <var class="dt-function">trim/lines/head/tail</var> pubdate-text<br />
<var class="dt-set-word">font:</var> <var class="dt-function">make</var> font [<var class="dt-set-word">align:</var> <var class="dt-lit-word">'left</var> <var class="dt-set-word">color:</var> black <var class="dt-set-word">name:</var> <var class="dt-string">"arial"</var> <var class="dt-set-word">size:</var> <var class="dt-integer">11</var>]<br />
]<br />
]<br />
<var class="dt-set-word">append-news:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Dodaje pozycje do listy wyswietlanych newsow (list-box); Nie zwraca wartosci"</var><br />
text [<var class="dt-datatype">string!</var>] <var class="dt-string">"tekst do wyswietlenia"</var><br />
link [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] <var class="dt-string">"link powiazany z tekstem do wyswietlania lub none!"</var><br />
desc [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] <var class="dt-string">"dodatkowe informacje do wyswietlenia lub none!"</var><br />
date [<var class="dt-datatype">string!</var> <var class="dt-datatype">none!</var>] <var class="dt-string">"data publikacji"</var><br />
<var class="dt-refinement">/local</var> btn btn-size wh] [<br />
<var class="dt-set-word">btn-size:</var> <var class="dt-function">as-pair</var> (gui-news-list/size/x <var class="dt-function">-</var> pos-offset/x <var class="dt-function">-</var> <var class="dt-integer">8</var>) (<var class="dt-integer">16</var>)<br />
<var class="dt-set-word">jobs:</var> [<br />
<var class="dt-cmt">; [check this] [do that]<br />
</var> [true] [make-header text link btn-size pos-offset]<br />
[def-list-separator] [make-line (<var class="dt-function">as-pair</var> btn-size/x <var class="dt-integer">3</var>) pos-offset]<br />
[<var class="dt-function">all</var> [def-list-date date]] [make-pubdate date btn-size pos-offset]<br />
[<var class="dt-function">all</var> [def-list-desc desc]] [make-description desc btn-size pos-offset]<br />
]<br />
<var class="dt-function">foreach</var> [check job] jobs [<br />
<var class="dt-function">if</var> <var class="dt-function">do</var> check [<br />
<var class="dt-set-word">btn:</var> <var class="dt-function">do</var> job<br />
<var class="dt-cmt">; jezeli tekst nie miesci sie w jednej linijce to zmien wysokosc przycisku (Y)<br />
</var> <var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">zero?</var> (<var class="dt-set-word">wh:</var> <var class="dt-function">size-text</var> btn) [<var class="dt-set-path">btn/size/y:</var> wh/y <var class="dt-function">+</var> <var class="dt-integer">4</var>]<br />
<var class="dt-function">append</var> list-pane btn<br />
<var class="dt-set-path">list-box/size/y:</var> list-box/size/y <var class="dt-function">+</var> btn/size/y<br />
<var class="dt-set-word">pos-offset:</var> <var class="dt-function">as-pair</var> (pos-offset/x) (pos-offset/y <var class="dt-function">+</var> btn/size/y)<br />
]<br />
]<br />
<var class="dt-cmt">; dodaj odstep miedzy poszczegolnymi newsami<br />
</var> <var class="dt-set-path">list-box/size/y:</var> list-box/size/y <var class="dt-function">+</var> <var class="dt-integer">4</var><br />
<var class="dt-set-path">pos-offset/y:</var> pos-offset/y <var class="dt-function">+</var> <var class="dt-integer">4</var><br />
]<br />
<var class="dt-function">set</var> <var class="dt-lit-word">'look-and-feel</var> <var class="dt-function">stylize</var> [<br />
<var class="dt-set-word">cycle-list:</var> drop-down <var class="dt-integer">180</var> rows <var class="dt-integer">8</var> texts rss-site black [<br />
<var class="dt-cmt">; self/data musi zawierac index? do pozycji elementu w liscie self/list-data<br />
</var> <var class="dt-cmt">; z indexu korzystaja wszystkie funkcje gui<br />
</var> <var class="dt-set-path">gui-hosts-list/data:</var> <var class="dt-function">find</var> gui-hosts-list/list-data gui-hosts-list/data<br />
display-rss <var class="dt-function">index?</var> gui-hosts-list/data<br />
]<br />
<var class="dt-set-word">refresh-btn:</var> btn <var class="dt-char">#"r"</var> <var class="dt-string">"Refresh"</var> [display-rss/force <var class="dt-function">index?</var> gui-hosts-list/data]<br />
<var class="dt-set-word">browse-btn:</var> btn <var class="dt-char">#"b"</var> <var class="dt-string">"Browse Site"</var> [<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">none?</var> browse-url [<var class="dt-function">browse/only</var> browse-url]]<br />
<var class="dt-set-word">about-btn:</var> btn-help [<var class="dt-function">browse</var> <var class="dt-url">http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=rss.r</var>]<br />
<var class="dt-set-word">news-list:</var> box <var class="dt-pair">336x260</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var> <var class="dt-set-word">color:</var> black]<br />
<var class="dt-set-word">news-slider:</var> scroller <var class="dt-pair">16x260</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">1x1</var> <var class="dt-set-word">color:</var> black] [scroll-list value]<br />
<var class="dt-set-word">refresh-time:</var> info <var class="dt-integer">200</var> middle <var class="dt-function">form</var> <var class="dt-function">now</var> edge [<var class="dt-set-word">size:</var> <var class="dt-pair">0x0</var>]<br />
feel [<var class="dt-set-word">engage:</var> <var class="dt-function">func</var> [face action event] [<var class="dt-function">if</var> action <var class="dt-function">=</var> <var class="dt-lit-word">'time</var> [<var class="dt-function">do-face</var> face none]]]<br />
[display-rss <var class="dt-function">index?</var> gui-hosts-list/data]<br />
]<br />
<br />
<var class="dt-function">insert-event-func</var> [<br />
<var class="dt-function">switch</var> event/type [<br />
<var class="dt-cmt">; obsluga kolka w myszce (przesuwanie listy newsow)<br />
</var> scroll-line [scroller-value event/offset/y]<br />
<var class="dt-cmt">; obslga klawiszy kursora<br />
</var> key [<br />
<var class="dt-function">switch</var> event/key [<br />
up [scroller-value <var class="dt-integer">-3</var>]<br />
down [scroller-value <var class="dt-integer">3</var>]<br />
left [display-rss prev-host]<br />
right [display-rss next-host]<br />
]<br />
]<br />
]<br />
event<br />
]<br />
]<br />
<var class="dt-function">if</var> <var class="dt-function">get-env</var> <var class="dt-string">"KDEDIR"</var> [<br />
<var class="dt-function">attempt</var> [<br />
<var class="dt-function">unprotect</var> <var class="dt-lit-word">'browse</var><br />
<var class="dt-set-word">browse:</var> <var class="dt-function">func</var> [value [<var class="dt-datatype">any-string!</var>] <var class="dt-refinement">/only</var>][<var class="dt-function">call</var> <var class="dt-function">reform</var> [<var class="dt-string">"konqueror"</var> <var class="dt-function">rejoin</var> [<var class="dt-string">{"}</var> value <var class="dt-string">{"}</var>]]]<br />
]<br />
]<br />
<var class="dt-function">attempt</var> [<br />
<var class="dt-function">unprotect</var> <var class="dt-lit-word">'path-thru</var><br />
<var class="dt-set-word">path-thru:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">"Return a path relative to the disk cache."</var><br />
url <var class="dt-refinement">/local</var> purl <var class="dt-function">path</var><br />
][<br />
<var class="dt-function">if</var> <var class="dt-function">file?</var> url [<var class="dt-function">return</var> url]<br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">all</var> [<var class="dt-set-word">purl:</var> <var class="dt-function">decode-url</var> url purl/host] [<var class="dt-function">return</var> none]<br />
<var class="dt-set-word">path:</var> <var class="dt-function">rejoin</var> [view-root/public slash purl/host slash <var class="dt-function">any</var> [purl/path <var class="dt-string">""</var>] <var class="dt-function">any</var> [purl/target <var class="dt-string">""</var>]]<br />
<var class="dt-function">any</var> [(<var class="dt-function">suffix?</var> <var class="dt-function">path</var>) <var class="dt-function">append</var> <var class="dt-function">path</var> <var class="dt-string">"index.txt"</var>]<br />
<var class="dt-function">foreach</var> ch [<var class="dt-string">{?}</var> <var class="dt-string">{*}</var> <var class="dt-string">{"}</var> <var class="dt-string">{<}</var> <var class="dt-string">{>}</var> <var class="dt-string">{|}</var>] [<var class="dt-function">replace/all</var> <var class="dt-function">path</var> ch <var class="dt-string">"_"</var>]<br />
]<br />
]<br />
<var class="dt-set-word">img:</var> <var class="dt-function">load</var> <var class="dt-binary">64#{<br />
/9j/4AAQSkZJRgABAQIAAAAAAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0V<br />
FhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoL<br />
Cw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7<br />
Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAGQAfQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA<br />
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh<br />
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6<br />
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ<br />
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx<br />
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA<br />
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV<br />
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp<br />
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE<br />
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDt<br />
aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEoyKCQoyTxV<br />
SWVpG2jOKAFml3HavSprWxL4aQcelSWdnjEkg57Cr+MUAIqqi4AwKXpS9KoXl55f<br />
yIeaAFvb0Rgoh+astiWbcxyTQSWOT1NJQAUtFFACVYtLczyDI+UdahVdzADvW1aQ<br />
CGEDuaAJlUKoA6CloooAKKKKACiiigAoopCwHU0AZuqdQKz60ryI3MgEfOKbHph6<br />
uaAM7BNSJbyueENa8dnCn8OanACjAGKAMuPTWJy5xVuOyhjHTJqzjij8KAGhQvQA<br />
UtFFACUUtJQAlFFBoAQ0UGigCvdQCWM4HNZDqUYqeCK36z763/jUfWgDPooooAKK<br />
KKAEpKdTaACiiigDZooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig<br />
BKCcDJoJxyaikLHoM56CgCKWQyNsXkmrlpZ7QHk5PpTrSzCDe4+arlABiiiq13dL<br />
ChAPzUAMvbsRKUX7xrJYknJOSaV3Z23MeTTaACloooASiinxRmRwo70AW9Pt977y<br />
OBWoKZDGIowop+RQAtFMaVF6sKhe+hXvmgCzSZrOk1Psoqs95M/8WBQBsNKidWFV<br />
31CJenNZLOzdWNNoAvyak5+6MVWkuZXPLGoaKANXTeYjV2qemf6k1doASiiigApK<br />
U0lACUUUUAIaKDRQAGkNLSGgBKMUUUAJSMoZSD3p1JQBj3cHkvx0qCtq4hEsZBHN<br />
YzoUYq3WgBKKKKAEooooATFFLRQBsUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU<br />
UAFFFJQAtITgc0HgZp8Ue794/CjtQAJHlfMfgCiFo/Mz+VVby7LsUQ4UVXSdk6UA<br />
bwIPSlrIS+ZasQ3kkrYAoAs3M6wRknrWLJK0rlm71qS2XnHc7n6UwaYnc5oAzKMV<br />
rLp0YqQWUI/hoAxdp7A08QyHoprbEEa9FFOCqOgFAGOtlM38NPjK2b/Ny1acriOM<br />
saxJXMkhY+tAFttSc/dAqB7yZz96oKKAHNIzdSabRRQAUlLRQAUUUUAJRRRQBraZ<br />
/qKu1S0z/UVdoASilpKAA0lLSUAFJS0hoAKSlpDQAUhpTSUAFIaWkoAKSlpKAENU<br />
r633DzFHNXjSEAjBoAwT1oqe7h8qQkDg1BQAlFFFABRRRQBsUUUUAFFFFABRRRQA<br />
UUUUAFFFFABRRRQAUUUUAFFFCKZHwOnc0AOiTzOTwoqC9u8/u4uB3NOu7oKPKiOM<br />
dazue9AC0lLQOtACqpdgq9a2LO2EMYJ+8agsLXaBI457VoUAFFFFABRRRQAUUUyR<br />
wkZY9qAKOozceWD9az6fM/mSFs96ZQAUUUUAJRilooASiijFABRRRQAUlLSUAa2m<br />
n9zV2qOmH90avUAFJS0UAJQaKDQAlJS0UAJRQaKAENJSmigBDSGlNIaACiiigBKS<br />
lpKAIriESxkd6x3UoxU8YrdqjfW4I8xfxoAzqKekbucKM1ai0925fgUAUqK1xZwq<br />
MYooAWiiigAooooAKKKKACiiigAooooAKKKKACiikOTwOpoAACzBVoup1t4zGn3u<br />
5p8kgtYefvkVlu5dtxOSaAEJJOT1pKKWgAq3Y2xkfew+UVDbwmaQAVtRRiJAooAc<br />
AAMCloooAKKKKACiiigAqhqE2B5YPXrV5mCjJ7Vizv5krN70ARUYoxRigAxSUtFA<br />
CUUuKSgAooooASilpKACijFFAGppn+qNXqoaX/qzV+gAooooASiiigBKKKKAEooo<br />
oAQ0Gg0GgBDSUtJQAUlKaY8qJ95hQA40hOBmqkmoKv3OapSXUsv8WB7UAaUl1FHk<br />
Fsn0qlNflxtAAFVDyeaKANa0eNowQBnvU5rJtJjFIMng1rAhgDQAfjRRRQBDRRRQ<br />
AUUUUAFFFFABRRRQAUUUUAFJS0lAB0FPXbEhlf8AAU1AGO4/dXrVS7uPOfaD8ooA<br />
jnmaVySeKjpKWgApQpZsDqaSr9hb7j5jDpQBas4BFEMj5jVmiigAooooAKKKKACi<br />
iigCrfS7IcdzWVVm9k8yXHYVXoASilooASkxTjSUAJRS4pMUAJiinUmKAEopcUlA<br />
BSUtFAGhpZ4YVo1m6Z95hWlQAUUUUAFJS0lACUUtJQAlFLTSwA5IFAAaKglvYY+N<br />
2TVOTUXbIQYFAGi7KvU1Wkv4k6cms15pJOrGo6ALUt9I+dvAqszsxyxzSUlABRRR<br />
QAGiiigAzWlZT71CMeazadE5jkDCgDaopscodAwPWigBlFFFABRRRQAUUUUAFFFF<br />
ABRRRQAlGNzbB1NDHApWf7PCWb756UARXk3lp5SH61RpWYuxYnrSUAFFLSqpY4He<br />
gCS3hMsgA6VtIgRdo7VBZ24hj9zVmgAooooAKKKKACiiigAqKeQRxM1S1Q1CTogo<br />
Aos25iT3pKKKACiiigAoxRRQAYoNFFACUGlpKAEoIpaKAG0UpFFAF3TT+8IrTrK0<br />
44mxWpQAtFFNaRV6kCgB1JVaS/iQ4HNVJdRduFGKANMsq9SKryXsSd8msp55H6sa<br />
j696AL0upMeEFVHuJJM5Y4plJQAp5pKWkNABRRRQAlFFBoASiiigAoNFBoAKKKSg<br />
CVJ3RdoPFFRUUAbFFFFABRRRQAUUUUAFFFFACUUtMlfYme9ACrguSfurVO4mM0hP<br />
YVLcSMsYUd+tVaACgUoooABV2wg3vvI4FVY0LuFHetqGMRRhRQBJRRRQAUUUUAFF<br />
FFABRRRQAhOBmse5fzJia07mTy4Se9Y5OTmgAooooAKKKKACiiigAooooAKKKBkm<br />
gApOtSLDI/RDUyWErHngUAVaNpPStJNOQfeOasJbRJ0UUAZ1qrROJGBAqxJqKL90<br />
Zqe6UfZ2wKxiKALMl/K/Q4qu0jv95iabRQAhopaSgAooooASjFLSUAJRSmigBKKD<br />
RQAUlLSUAFJSmkoAKDRQaACkpaKAExRS0UAa9FFFABRRRQAUUUUAFFFFACVHEhuJ<br />
/wDZFEzHG1epq7awiKP3NAFO+hI5FUMVvyxCRcGsyezZDlRxQBUpaUqQeRUkERll<br />
CjpmgC5YQYHmMPpV+mooRQo7U6gAooooAKKKKACiiigAoopCcDNAFHUJOiCqGKnu<br />
HLzHmosH0oATFJ+NPEbnopqQWsp6rQBDj1NGKtrYMetSrp6/xEmgDOxShGPQE1qr<br />
ZxL2zUqxIvRRQBkrbSt/DUyafIepxWliloAprp8Y6nNTrbRL0UVLRQAgUDoKWiig<br />
AooooAjnGYW+lYh61uyDMbD2rDYYY0ANxSU40lACUlLRQAlFBooAKKKKAEopaQ0A<br />
JRS0hoAKKKKAEooooASg0tJQAUUUUAFFFFAGvRRRQAUUUUAFFFFACUMcKT6UVHJl<br />
2ES9T1oAfaxmWXzD0HStGo4YxFGFFSUAFIQD1FLRQBBJaxPyRVVJoraQqBmrlxKI<br />
oiax2JZiT1NAGmL6I9TUguoj/FWPijnNAG19oiH8QpPtEX94Vj/jRzQBsfaIv71I<br />
bqIfxVkUuKANQ3kXrTTfxDpzWbRQBfOoL2WliuWnbZt4NUKu2CdWoAnFpEDnHNPE<br />
EY/hFSUUAIFUdAKWiigAooooAKKKKACiiigAooooAKKKKACiiigBG+6axJR+9b61<br />
tnpWNcDEzD3oAiNJTqTFACGkpSKSgApKWkNABRRRQAUlLSUAJRSmkoAKKKKAEooo<br />
oAKSlpKAA0UGigAooooA16KKKACiiigAooooAQnAJp1lHvcyn8KiclmCL1PWtCJB<br />
HGFoAfRRRQAUhpaiuJBFESaAKN9NvfYOgqpSsxZiT1NJQAUUuKPagApRRS0AJSii<br />
igAoFLijpQAda1LVNsI96zo13SAVrKMKBQAtFFFABRRRQAUUUUAFFFFABRRRQAUU<br />
UUAFFFFABRRRQAVkXq4uDWvWZqAxLmgCpSUtFACUhFLig0ANoNFFACUUtJQAUUUU<br />
AJRS0hoASiiigBKKKKACkpaSgAooooAKKKKANeiiigAooooAKTNLTXyRtHU0APtI<br />
98plI47VeqOFPLjC1JQAUUUUAFZl/LufYDwKvzyeXEWrGYlmLHvQAlLQBRigA60u<br />
KWigAxRSijpQAYpQMUYpaAExmjFLS0ATWibpc+laNVbNcKWx1q1QAUUUUAFFFFAB<br />
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWfqI6GtCqeoLmIH0oAzaKKKAA0lLSUAJ<br />
iilpDQAlIaWkoAKKMUUAFJS0lACUGlpDQAUlLSUABpKWigBKKKDQAUUUUAa9FFFA<br />
BRRRQAUW4EkxPZaazbRmrVsm2POME0AT0UUUAFFFIx2qSe1AFHUJeAgP1qhUk7mS<br />
Yn3plAC4oopaACgUUuKACl6iilAxQAUtFKKAEwaUA0YpyjLjFAGhAu2IVJSKMKBS<br />
0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVXvRmA1YqK5GYWoAxqK<br />
DwcUUAFFFFACGkNOppoATFFLSUAJRQaKACiiigBDSGlNIaACkpaSgAoNFHWgBKKl<br />
SCSTopwatRadnlz+FAFDFFbC28SDG0UUAJRRRQAUUUUAIE8yRV7dTV8DAwKrWi5y<br />
/vVqgAooooAKq3suyLHc1ZrLvZfMlwOgoArcmnCkpRQAtGKKWgApaBS0AHalFFKB<br />
QAYNL7d6OtLQAVLbrukFR4qxaj5iaALdFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF<br />
FFFABRRRQAUUUUAFNkGUI9qdSHkUAYjjDH602pZxiVh71FQAUUUUABpKWjFADaQ0<br />
tIaAEopaQ0AJRQaKAA0hp4jZ/uqTU8djI/XgUAVackbv91TWlHYxp94ZqdY1X7ox<br />
QBnR2Dt97irUdnFHzjJqzRQAiqq9BRRQaAEoozRQBDRRRQAlIx+WlqOZtoFAF+3U<br />
LEAKlqK3O6EGpaACiiigCOd9kTH2rGJy2T3rQ1CTagUd6z8e4oAUUtIKdigA7UCg<br />
YpRzQAuAaKKXFAC4pQKSnUAGMUoopQKADFW7ZcJn1qtV2IYjFAD6KKKACiiigAoo<br />
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMq8GJzVc1cv1xKD7VT60AJRR<br />
RQAUUUYJoAaaDUqQSP0U1YTTnb7xwKAKNOWN3+6prUSwiXqMmp1jVegAoAy47CRv<br />
vcVajsI0681bNJQAxY1T7oFOxRRQAlJS0lAAaKKKACkNLTaACij8KKAIaKKKACqt<br />
w/zYqyTgE1RlO5vxoA0dPl3R7fSrtYltMYZAR0rYjkEiAigB9J0pajmbZEx9qAM2<br />
7kDzn2qEfhQTuYn1ooAUUtJmlFAC4yKXFJTqAAUuKBS0AHSnAUlOGaAAU7tQBRQA<br />
o6iry8ACqcQzIKuigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii<br />
gAopCwHU1G1zEvVqAK2oL8oaqBrRaRLptgqRLOJe2aAMtUZvuqTUyWcrdsVqCNV6<br />
KBTqAKCacP4jVlLWJOi81NRQAgUDoKWiigBKSlooAaaKDRQAlJS0lACGig0lABRR<br />
RQAUlLSd6AEooOaKAIaKKKAI5jtjNUW5NWrk8AVV70AAqzb3LRMMniqwp1AG1HOk<br />
gyDUF/IAgXPWs9JGQ/Kavm3NxGrE80AZ/Snc1K9rJH2zUeCOo/SgBOe1LSCnD6UA<br />
Lz60tJS0ALTqQUuKAFFKPQUgAp46UAApaSigCW3GZPpVuq9sOpqxQAUUUUAFFFFA<br />
BRRRQAUUUUAFFGQKaXUd6AHUVGZ0Heozc+goAsUZqobhj04phkY9TQBcMijvTGuI<br />
x3qmSaaaALLXg7CoGunbocVGaQ9KABndurGozTqQ0ASWxxOtatY8ZxICK11OVH0o<br />
AWiiigAooooAKKKKAEooooAaaKDRQAlIaWkNACGkNLSGgAooooAQ0UUlABRRRQBD<br />
RRSUAVbg5fHpUFPlOXNMoAWnCmindKAHRLukAraQYQD2rLskDTj2rWoATGaY0KN1<br />
UVJRQBVayQ/d4qM2TDoavUUAZ32Vx0FN8iQdRWnRQBmeWw7UBT6VpbR6UmxfQUAZ<br />
4B9DTvwq9sX0FGxfSgClg+lGCe1Xtq+lG0elAEcAwnNSZHrUEzENgHFRZPrQBcyP<br />
WjcPWquT60UAWS6jvSeatQdKKAJvOHYU3zj2FR0UAPMrU0yMe9JikoACT6mmmlpD<br />
QAlJS0hoASiiigBD9abTz0phoAaRSGlNIRQA2kPWnU00AIDg575rWhbdEprJNadm<br />
26Ae1AE9FFFABRRRQAUUUUAIaSlpKAEooooASkNFIaACkNLSUAFFFFACGkpTSUAF<br />
FGaKAIKRzhSaWmT/AOqNAFJzliaSg9aBQAop1JS0AX9OTALGr9QWaBIB71PQAUUU<br />
UAFFFFABRRRQAUUUUAFFFFABRRRQBUmP7ymilk5c0goAWlFIKWgBaKKKACiiigAp<br />
KWkoAKQ0tJQA00lKaSgBDQKKWgBD0pmKeaYaAENNNONNNACU2nGmmgBD0q9YN8pB<br />
qiatWLfvCKANCiiigAooooAKKKKAEpKU0lACUlLSUAIaSlpKAEoNLSGgAooooAQ0<br />
lLmkoASiiigCKobnOzipar3RIwKAKp60opKUUAOFPRdzqPemCp7Vd06+1AGsg2oB<br />
TqBRQAUUUUAFFFFABRRRQAUUUUAFFFFABQelFIxwpoApNyxpRSdSaWgBRS0maKAH<br />
A0UlLQAUUUE0AFIaM0daAEzSGlpCaAEpKKKACkoooAQ00049aaaAExxTSaU0hoAS<br />
kNBpDQAhqW2bbMtQmlQ4cH3oA2hRTUOVB9qdQAUUUUAFFFFACUmKWkoASkNLSGgB<br />
DSUppKACkoNFABSUtFADcUUUUAJRRRQBDVW6b5gMdBVuqdz980AQUopKUUAOFXNP<br />
XMu70qmK0dOTClqAL1FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFMkOENPqObiM0AV<br />
M0tJQKAHZopKWgBaWkooAWikooAKKKSgApM0ZxSGgAooooASig0E0ANPWmmnE+1N<br />
oASmmlPWkNACGkNKabQAhpM4NKeuaQ0Aa1s26EGpqqWD7oselW6ACiiigAoopDQA<br />
UlLTTQAUlLSUAJSUppKAEpKWkFAC0UUhoASg0UlABRRmigCGqU+cmrtVbpcKD70A<br />
V6UUlKKAHCtaxXEA96yVGTW3AoWFQPSgCSiiigAooooAKKKKACiiigAooooAKKKK<br />
ACo5/wDVmpKiuD+7xQBUpaSloAKXNJRQA7NGabS5oAWikzRmgAzRSUUAFFFJQAtF<br />
FJQAU05zSk02gApppSabQAE02lpDQAh/WkNKab3oAKSik70AXdPbBK1oVk2bBZxW<br />
tQAUUUUAFJS0lACUhpaSgBDSUppKAEooooASk7UtJ2oAWkNL2ptACUUtJQAUUUUA<br />
Q025j/0bdTicDNWEUS2+D3FAGLSinSoUkKn1ptAD4xlwPU1uIMIB7ViwDMy/Wtsd<br />
BQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQXJ+Sp6guj8ooArUtNBpc0AFFLRQ<br />
AUUlFAC0UlFABS0lFABS0hoNABSE0ZppPNABSUUmaAEJpKUmkoAO9NJpTTe9ABSU<br />
GkJoAKTNLTaAHxNtlU1tKcqDWEDgg1s27boVNAEtFFFABSUtNoAKSiigBDSUGjNA<br />
CUhpaQ0AFFFFACUhpe1IaAEooppYL1IFADqKgN5EDjNFACnoatW3+pFVT901btv9<br />
SKAKl/b5/eKKzq6BlDDB6Gsm7tTExYD5TQA20Gbha2RWRYLmcVr0AFFFFABRRRQA<br />
UUUUAFFFFABRRRQAUUUUAFV7voKsVWvPuigCsKXJptANADwaKbnmj8aAHUUmaM0A<br />
LRSbqM0ALRTcntRxQAu7ikzSUUABpOlGaQnmgANJ2ozSGgAzSZozSGgAzTc0ppKA<br />
EoNBpDQAh60UGigArT098xY9KzKuae2HIz1oA0qKKKAENITS02gApKU80lACGkpa<br />
SgBKDQeKY8qJ95gKAHUVVkvo1+7zVaS+kbpwKANFpFQZJFV3vo06HNZrSO3VjTTz<br />
QBak1B2J28VWeZ3PzMabRQAlFFFAGxVuAYiAqrVqA5joAlproHXDDIp1FAFSK3EE<br />
5PY1aqnqDFUBBqO3viMK/wCdAGjRTUdXGVOadQAUUUUAFFFFABRRRQAUUUUAFFFF<br />
ABVa8+6Ks1WvfuCgCmOtLmmigUAOzQDSZozQA7NGaTNFAC59aM0n40ZoAWk6UZxS<br />
ZzQApNGaTNITQAtITzSE9KKAENFBpCaAD3pDRmkoAXNNpc0hoATNFIaKACiiigAN<br />
TWjbZxUNKjbWBHrQBuDpRTY2zGD7UpYKOSMUAFJUT3USfxVWfUlH3RmgC8aYWA6n<br />
FZj38rHjioHmkfqxoA1Xu4k/iqs+o9lFZ5+pooAnkvJX74qEuzdSTSUlABSdKU0h<br />
oAKKKSgAoooNACUUUUAf/9k=<br />
}</var><br />
<var class="dt-set-word">main-window:</var> <var class="dt-function">center-face</var> <var class="dt-function">layout</var> [<br />
backdrop img effect [tile-view]<br />
key (escape) [<var class="dt-function">unview</var> <var class="dt-function">quit</var>]<br />
styles look-and-feel<br />
origin <var class="dt-pair">2x2</var> space <var class="dt-pair">2x2</var> across<br />
<var class="dt-set-word">gui-hosts-list:</var> cycle-list pad <var class="dt-pair">08x0</var> refresh-btn<br />
<var class="dt-set-word">gui-browse-button:</var> browse-btn about-btn <var class="dt-function">return</var><br />
<var class="dt-set-word">gui-news-list:</var> news-list<br />
<var class="dt-set-word">gui-news-slider:</var> news-slider <var class="dt-function">return</var><br />
<var class="dt-set-word">gui-timer:</var> refresh-time rate <var class="dt-time">00:15:00</var><br />
]<br />
display-rss <var class="dt-integer">1</var><br />
<var class="dt-function">view/title</var> main-window <var class="dt-string">"Live Bookmarks"</var><br />
][<br />
<var class="dt-function">alert</var> <var class="dt-function">rejoin</var> [<var class="dt-string">{We apologize, an unexpected error occurred (}</var> <var class="dt-function">get</var> <var class="dt-function">in</var> <var class="dt-function">disarm</var> err <var class="dt-lit-word">'id</var> <var class="dt-string">{ error)}</var>]<br />
]<br />
<var class="dt-function">quit</var><br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com0tag:blogger.com,1999:blog-3451700962271094262.post-60310875782612896432013-10-01T07:16:00.001-07:002013-10-01T07:16:09.727-07:00ROT-13 obfuscationThe following script perform the well known ROT 13 obfuscation (all letters are changed with the 13rd letter after it in aphabetical order). <br />
ROT 13 encryption has the property that you can use the same algorithm to crypt and encrypt:<br />
<code>>> rot-13 "Rebol"<br />
== "Eroby"<br />
>> rot-13 "Eroby"<br />
== "Rebol"</code><br />
<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "Rot-13"<br />
Date: 21-Oct-1999<br />
Version: 1.0.1<br />
File: %rot-13.r<br />
Author: "Allen Kamp"<br />
Usage: {To encode >> rot-13 "This is a test" == "Guvf vf n grfg" <br />
To decode, just use rot-13 again >> rot-13 "Guvf vf n grfg" == "This is a test"<br />
}<br />
Purpose: "To Encode and Decode Rot-13 strings"<br />
Email: allenk@powerup.com.au<br />
Notes: {<br />
Rotates Roman alphabet chars by 13 places. Case is preserved.<br />
Used in Newsgroups to prevent accidental reading of content.<br />
}<br />
]<br />
<var class="dt-set-word">rot-13:</var> <var class="dt-function">func</var> [<br />
<var class="dt-string">{Converts a string to or from Rot-13}</var><br />
data [<var class="dt-datatype">any-string!</var>]<br />
<var class="dt-refinement">/local</var> scrambled rot-chars rot-char<br />
][<br />
<var class="dt-set-word">rot-chars:</var> <var class="dt-string">{anabobcpcdqderefsfgtghuhivijwjkxklylmzmANABOBCPCDQDEREFSFGTGHUHIVIJWJKXKLYLMZM}</var><br />
<var class="dt-set-word">scrambled:</var> <var class="dt-function">copy</var> <var class="dt-string">""</var><br />
<var class="dt-function">foreach</var> char data [<br />
<var class="dt-function">if</var> <var class="dt-function">none?</var> (<var class="dt-set-word">rot-char:</var> <var class="dt-function">select/case</var> rot-chars char) [<var class="dt-set-word">rot-char:</var> char]<br />
<var class="dt-function">insert</var> <var class="dt-function">tail</var> scrambled <var class="dt-get-word">:rot-char</var><br />
]<br />
<var class="dt-function">return</var> scrambled<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com1tag:blogger.com,1999:blog-3451700962271094262.post-35490975623221020552013-09-27T04:56:00.002-07:002013-09-27T04:56:45.954-07:00Roman-Arabic numeral converterToday script is simple but efficient, is a Roman to Arabic (our common) numeral, it converts in both directions:<br />
<code><br />
Roman 10<br />
== "X"<br />
>> Roman 115<br />
== "CXV"<br />
>> Roman 418<br />
== "CDXVIII"<br />
>> Roman "XIV"<br />
== 14<br />
>> Roman "XXIV"<br />
== 24<br />
>> Roman "IX"<br />
== 9<br />
>> Roman "LXXXI"<br />
== 81<br />
>> Roman "MCMLII"<br />
== 1952<br />
>> Roman "MMI"<br />
== 2001<br />
>> Roman "MMMCMXCIX"<br />
== 3999<br />
>> Roman 9<br />
== "IX"<br />
>> Roman 81<br />
== "LXXXI"<br />
>> Roman 1952<br />
== "MCMLII"<br />
>> Roman 2001<br />
== "MMI"<br />
>> Roman 3999<br />
== "MMMCMXCIX"<br />
</code><br />
<br />
Here is the source code:<br />
<div class=code style="width:100%;height:400px;overflow-y: scroll; border:1px solid grey;"><code class="rebol-script"> REBOL [<br />
Title: "Roman"<br />
Date: 3-Jul-2002<br />
Name: 'Roman<br />
Version: 1.0.0<br />
File: %roman.r<br />
Author: "Andrew Martin"<br />
Purpose: "Converts a Roman numeral to Arabic and reverse!"<br />
eMail: Al.Bri@xtra.co.nz<br />
Web: http://valley.150m.com<br />
Acknowledgements: {Christian "CHE" Ensel}<br />
]<br />
<var class="dt-set-word">Roman:</var> <var class="dt-function">function</var> [<br />
<var class="dt-string">{Converts a Roman numeral to Arabic and reverse!<br />
Returns 'none if it can't convert the number.}</var><br />
[<var class="dt-function">catch</var>]<br />
Number [<var class="dt-datatype">string!</var> <var class="dt-datatype">integer!</var>] <var class="dt-string">{The Roman "MMMCMXCIX" or Arabic 3999 number to convert.}</var><br />
][Roman-Arabic Result ][<br />
<var class="dt-function">throw-on-error</var> [<br />
<var class="dt-set-word">Roman-Arabic:</var> <var class="dt-function">compose</var> [<br />
M <var class="dt-integer">1000</var><br />
CM (<var class="dt-integer">-100</var> <var class="dt-function">+</var> <var class="dt-integer">1000</var>)<br />
D <var class="dt-integer">500</var><br />
<var class="dt-function">CD</var> (<var class="dt-integer">-100</var> <var class="dt-function">+</var> <var class="dt-integer">500</var>)<br />
C <var class="dt-integer">100</var><br />
XC (<var class="dt-integer">-10</var> <var class="dt-function">+</var> <var class="dt-integer">100</var>)<br />
L <var class="dt-integer">50</var><br />
XL (<var class="dt-integer">-10</var> <var class="dt-function">+</var> <var class="dt-integer">50</var>)<br />
X <var class="dt-integer">10</var><br />
IX (<var class="dt-integer">-1</var> <var class="dt-function">+</var> <var class="dt-integer">10</var>)<br />
V <var class="dt-integer">5</var><br />
IV (<var class="dt-integer">-1</var> <var class="dt-function">+</var> <var class="dt-integer">5</var>)<br />
I <var class="dt-integer">1</var><br />
]<br />
<var class="dt-function">either</var> <var class="dt-function">string?</var> Number [<br />
<var class="dt-set-word">Result:</var> <var class="dt-integer">0</var><br />
<var class="dt-function">if</var> <var class="dt-function">not</var> <var class="dt-function">parse/all</var> Number [<br />
<var class="dt-integer">0</var> <var class="dt-integer">3</var> [<var class="dt-string">"M"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/M)]<br />
opt [<br />
<var class="dt-string">"CM"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/CM)<br />
| <var class="dt-string">"D"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/D)<br />
| <var class="dt-string">"CD"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/CD)<br />
]<br />
<var class="dt-integer">0</var> <var class="dt-integer">3</var> [<var class="dt-string">"C"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/C)]<br />
opt [<br />
<var class="dt-string">"XC"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/XC)<br />
| <var class="dt-string">"L"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/L)<br />
| <var class="dt-string">"XL"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/XL)<br />
]<br />
<var class="dt-integer">0</var> <var class="dt-integer">3</var> [<var class="dt-string">"X"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/X)]<br />
opt [<br />
<var class="dt-string">"IX"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/IX)<br />
| <var class="dt-string">"V"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/V)<br />
| <var class="dt-string">"IV"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/IV)<br />
]<br />
<var class="dt-integer">0</var> <var class="dt-integer">3</var> [<var class="dt-string">"I"</var> (<var class="dt-set-word">Result:</var> Result <var class="dt-function">+</var> Roman-Arabic/I)]<br />
end<br />
][<var class="dt-set-word">Result:</var> none ]<br />
][<br />
<var class="dt-function">if</var> <var class="dt-function">all</var> [<var class="dt-integer">0</var> <var class="dt-function"><=</var> Number Number <var class="dt-function"><=</var> <var class="dt-integer">3999</var>] [<br />
<var class="dt-set-word">Result:</var> <var class="dt-function">make</var> <var class="dt-datatype">string!</var> <var class="dt-integer">10</var><br />
<var class="dt-function">foreach</var> [Roman Arabic] Roman-Arabic [<br />
<var class="dt-function">while</var> [Arabic <var class="dt-function"><=</var> Number][<br />
<var class="dt-function">append</var> Result Roman<br />
<var class="dt-set-word">Number:</var> Number <var class="dt-function">-</var> Arabic<br />
]<br />
]<br />
]<br />
]<br />
Result<br />
]<br />
]<br />
</code></div>Max2019http://www.blogger.com/profile/01247172599156159996noreply@blogger.com0