////////////////////////////////////////////////////////////////////////////////
//
// This file contains content from Alice in Wonderland, by Lewis Carroll,
// now in the public domain.
//
////////////////////////////////////////////////////////////////////////////////
﻿package
{
	public class Alice
	{
		static public const chapter1:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'>
        <p textAlign='center' fontSize='24'>Chapter I</p>
        <p textAlign='center' fontSize='24'>Down the Rabbit-Hole</p>
        <p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversation?”</p>
        <p>So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.</p>
        <p>There was nothing so <span fontStyle='italic'>very</span> remarkable in that; nor did Alice think it so <span fontStyle='italic'>very</span> much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually <span fontStyle='italic'>took a watch out of its waistcoat-pocket</span> , and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.</p>
        <p>In another moment down went Alice after it, never once considering how in the world she was to get out again.</p>
        <p>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</p>
        <p>Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and bookshelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled “Orange Marmalade”, but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.</p>
        <p>“Well!” thought Alice to herself, “after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!” (Which was very likely true.)</p>
        <p>Down, down, down. Would the fall <span fontStyle='italic'>never</span> come to an end! “I wonder how many miles I've fallen by this time?” she said aloud. “I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—” (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a <span fontStyle='italic'>very</span> good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) “—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?” (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)</p>
        <p>Presently she began again. “I wonder if I shall fall right <span fontStyle='italic'>through</span> the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—” (she was rather glad there Was no one listening, this time, as it didn't sound at all the right word) “—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?” (and she tried to curtsey as she spoke—fancy <span fontStyle='italic'>curtseying</span> as you're falling through the air! Do you think you could manage it?) “And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.”</p>
        <p>Down, down, down. There was nothing else to do, so Alice soon began talking again. “Dinah'll miss me very much to-night, I should think!” (Dinah was the cat.) “I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?” And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, “Do cats eat bats? Do cats eat bats?” and sometimes, “Do bats eat cats?” for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, “Now, Dinah, tell me the truth: did you ever eat a bat?” when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over.</p>
        <p>Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, “Oh my ears and whiskers, how late it's getting!” She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof.</p>
        <p>There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again.</p>
        <p>Suddenly she came upon a little three-legged table, all made of solid glass; there was nothing on it except a tiny golden key, and Alice's first thought was that it might belong to one of the doors of the hall; but, alas! either the locks were too large, or the key was too small, but at any rate it would not open any of them. However, on the second time round, she came upon a low curtain she had not noticed before, and behind it was a little door about fifteen inches high: she tried the little golden key in the lock, and to her great delight it fitted!</p>
        <p>Alice opened the door and found that it led into a small passage, not much larger than a rat-hole: she knelt down and looked along the passage into the loveliest garden you ever saw. How she longed to get out of that dark hall, and wander about among those beds of bright flowers and those cool fountains, but she could not even get her head though the doorway; “and even if my head <span fontStyle='italic'>would</span> go through,” thought poor Alice, “it would be of very little use without my shoulders. Oh, how I wish I could shut up like a telescope! I think I could, if I only know how to begin.” For, you see, so many out-of-the-way things had happened lately, that Alice had begun to think that very few things indeed were really impossible.</p>
        <p>There seemed to be no use in waiting by the little door, so she went back to the table, half hoping she might find another key on it, or at any rate a book of rules for shutting people up like telescopes: this time she found a little bottle on it, (“which certainly was not here before,” said Alice,) and round the neck of the bottle was a paper label, with the words “DRINK ME” beautifully printed on it in large letters.</p>
        <p>It was all very well to say “Drink me,” but the wise little Alice was not going to do <span fontStyle='italic'>that</span> in a hurry. “No, I'll look first,” she said, “and see whether it's marked <span fontStyle='italic'>‘poison’</span> or not”; for she had read several nice little histories about children who had got burnt, and eaten up by wild beasts and other unpleasant things, all because they <span fontStyle='italic'>would</span> not remember the simple rules their friends had taught them: such as, that a red-hot poker will burn you if you hold it too long; and that if you cut your finger <span fontStyle='italic'>very</span> deeply with a knife, it usually bleeds; and she had never forgotten that, if you drink much from a bottle marked “poison,” it is almost certain to disagree with you, sooner or later.</p>
        <p>However, this bottle was <span fontStyle='italic'>not</span> marked “poison”, so Alice ventured to taste it, and finding it very nice, (it had, in fact, a sort of mixed flavour of cherry-tart, custard, pine-apple, roast turkey, toffee, and hot buttered toast,) she very soon finished it off.</p>
        <p>“What a curious feeling!” said Alice; “I must be shutting up like a telescope.”</p>
        <p>And so it was indeed: she was now only ten inches high, and her face brightened up at the thought that she was now the right size for going through the little door into that lovely garden. First, however, she waited for a few minutes to see if she was going to shrink any further: she felt a little nervous about this; “for it might end, you know,” said Alice to herself, “in my going out altogether, like a candle. I wonder what I should be like then?” And she tried to fancy what the flame of a candle is like after the candle is blown out, for she could not remember ever having seen such a thing.</p>
        <p>After a while, finding that nothing more happened, she decided on going into the garden at once; but, alas for poor Alice! when she got to the door, she found she had forgotten the little golden key, and when she went back to the table for it, she found she could not possibly reach it: she could see it quite plainly through the glass, and she tried her best to climb up one of the legs of the table, but it was too slippery; and when she had tired herself out with trying, the poor little thing sat down and cried.</p>
        <p>“Come, there's no use in crying like that!” said Alice to herself, rather sharply; “I advise you to leave off this minute!” She generally gave herself very good advice, (though she very seldom followed it), and sometimes she scolded herself so severely as to bring tears into her eyes; and once she remembered trying to box her own ears for having cheated herself in a game of croquet she was playing against herself, for this curious child was very fond of pretending to be two people. “But it's no use now,” thought poor Alice, “to pretend to be two people! Why, there's hardly enough of me left to make <span fontStyle='italic'>one</span> respectable person!”</p>
        <p>Soon her eye fell on a little glass box that was lying under the table: she opened it, and found in it a very small cake, on which the words “EAT ME” were beautifully marked in currants. “Well, I'll eat it,” said Alice, “and if it makes me grow larger, I can reach the key; and if it makes me grow smaller, I can creep under the door; so either way I'll get into the garden, and I don't care which happens!”</p>
        <p>She ate a little bit, and said anxiously to herself, “Which way? Which way?”, holding her hand on the top of her head to feel which way it was growing, and she was quite surprised to find that she remained the same size: to be sure, this generally happens when one eats cake, but Alice had got so much into the way of expecting nothing but out-of-the-way things to happen, that it seemed quite dull and stupid for life to go on in the common way.</p>
        <p>So she set to work, and very soon finished off the cake.</p> 
        </TextFlow>
        
        static public const chapter2:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter II</p>
        <p textAlign='center' fontSize='24'>The Pool of Tears</p>
        <p>“Curiouser and curiouser!” cried Alice (she was so much surprised, that for the moment she quite forgot how to speak good English); “now I'm opening out like the largest telescope that ever was! Good-bye, feet!” (for when she looked down at her feet, they seemed to be almost out of sight, they were getting so far off). “Oh, my poor little feet, I wonder who will put on your shoes and stockings for you now, dears? I'm sure <span fontStyle='italic'>I</span> shan't be able! I shall be a great deal too far off to trouble myself about you: you must manage the best way you can; —but I must be kind to them,” thought Alice, “or perhaps they won't walk the way I want to go! Let me see: I'll give them a new pair of boots every Christmas.”</p>
        <p>And she went on planning to herself how she would manage it. “They must go by the carrier,” she thought; “and how funny it'll seem, sending presents to one's own feet! And how odd the directions will look!</p>
        <p>Oh dear, what nonsense I'm talking!”</p>
        <p>Just then her head struck against the roof of the hall: in fact she was now more than nine feet high, and she at once took up the little golden key and hurried off to the garden door.</p>
        <p>Poor Alice! It was as much as she could do, lying down on one side, to look through into the garden with one eye; but to get through was more hopeless than ever: she sat down and began to cry again.</p>
        <p>“You ought to be ashamed of yourself,” said Alice, “a great girl like you,” (she might well say this), “to go on crying in this way! Stop this moment, I tell you!” But she went on all the same, shedding gallons of tears, until there was a large pool all round her, about four inches deep and reaching half down the hall.</p>
        <p>After a time she heard a little pattering of feet in the distance, and she hastily dried her eyes to see what was coming. It was the White Rabbit returning, splendidly dressed, with a pair of white kid gloves in one hand and a large fan in the other: he came trotting along in a great hurry, muttering to himself as he came, “Oh! the Duchess, the Duchess! Oh! won't she be savage if I've kept her waiting!” Alice felt so desperate that she was ready to ask help of any one; so, when the Rabbit came near her, she began, in a low, timid voice, “If you please, sir—” The Rabbit started violently, dropped the white kid gloves and the fan, and skurried away into the darkness as hard as he could go.</p>
        <p>Alice took up the fan and gloves, and, as the hall was very hot, she kept fanning herself all the time she went on talking: “Dear, dear! How queer everything is to-day! And yesterday things went on just as usual. I wonder if I've been changed in the night? Let me think: was I the same when I got up this morning? I almost think I can remember feeling a little different. But if I'm not the same, the next question is, Who in the world am I? Ah, That's the great puzzle!” And she began thinking over all the children she knew that were of the same age as herself, to see if she could have been changed for any of them.</p>
        <p>“I'm sure I'm not Ada,” she said, “for her hair goes in such long ringlets, and mine doesn't go in ringlets at all; and I'm sure I can't be Mabel, for I know all sorts of things, and she, oh! she knows such a very little! Besides, SHE'S she, and I'm I, and—oh dear, how puzzling it all is! I'll try if I know all the things I used to know. Let me see: four times five is twelve, and four times six is thirteen, and four times seven is—oh dear! I shall never get to twenty at that rate! However, the Multiplication Table doesn't signify: let's try Geography. London is the capital of Paris, and Paris is the capital of Rome, and Rome—no, That's all wrong, I'm certain! I must have been changed for Mabel! I'll try and say ‘How doth the little—’” and she crossed her hands on her lap as if she were saying lessons, and began to repeat it, but her voice sounded hoarse and strange, and the words did not come the same as they used to do:—</p>
        <p>“I'm sure those are not the right words,” said poor Alice, and her eyes filled with tears again as she went on, “I must be Mabel after all, and I shall have to go and live in that poky little house, and have next to no toys to play with, and oh! ever so many lessons to learn! No, I've made up my mind about it; if I'm Mabel, I'll stay down here! It'll be no use their putting their heads down and saying ‘Come up again, dear!’ I shall only look up and say ‘Who am I then? Tell me that first, and then, if I like being that person, I'll come up: if not, I'll stay down here till I'm somebody else’—but, oh dear!” cried Alice, with a sudden burst of tears, “I do wish they <span fontStyle='italic'>would</span> put their heads down! I am so Very tired of being all alone here!”</p>
        <p>As she said this she looked down at her hands, and was surprised to see that she had put on one of the Rabbit's little white kid gloves while she was talking. “How Can I have done that?” she thought. “I must be growing small again.” She got up and went to the table to measure herself by it, and found that, as nearly as she could guess, she was now about two feet high, and was going on shrinking rapidly: she soon found out that the cause of this was the fan she was holding, and she dropped it hastily, just in time to avoid shrinking away altogether.</p>
        <p>“That Was a narrow escape!” said Alice, a good deal frightened at the sudden change, but very glad to find herself still in existence; “and now for the garden!” and she ran with all speed back to the little door: but, alas! the little door was shut again, and the little golden key was lying on the glass table as before, “and things are worse than ever,” thought the poor child, “for I never was so small as this before, never! And I declare it's too bad, that it is!”</p>
        <p>As she said these words her foot slipped, and in another moment, splash! she was up to her chin in salt water. Her first idea was that she had somehow fallen into the sea, “and in that case I can go back by railway,” she said to herself. (Alice had been to the seaside once in her life, and had come to the general conclusion, that wherever you go to on the English coast you find a number of bathing machines in the sea, some children digging in the sand with wooden spades, then a row of lodging houses, and behind them a railway station.) However, she soon made out that she was in the pool of tears which she had wept when she was nine feet high.</p>
        <p>“I wish I hadn't cried so much!” said Alice, as she swam about, trying to find her way out. “I shall be punished for it now, I suppose, by being drowned in my own tears! That Will be a queer thing, to be sure! However, everything is queer to-day.”</p>
        <p>Just then she heard something splashing about in the pool a little way off, and she swam nearer to make out what it was: at first she thought it must be a walrus or hippopotamus, but then she remembered how small she was now, and she soon made out that it was only a mouse that had slipped in like herself.</p>
        <p>“Would it be of any use, now,” thought Alice, “to speak to this mouse? Everything is so out-of-the-way down here, that I should think very likely it can talk: at any rate, there's no harm in trying.” So she began: “O Mouse, do you know the way out of this pool? I am very tired of swimming about here, O Mouse!” (Alice thought this must be the right way of speaking to a mouse: she had never done such a thing before, but she remembered having seen in her brother's Latin Grammar, “A mouse—of a mouse—to a mouse—a mouse—O mouse!” The Mouse looked at her rather inquisitively, and seemed to her to wink with one of its little eyes, but it said nothing.</p>
        <p>“Perhaps it doesn't understand English,” thought Alice; “I daresay it's a French mouse, come over with William the Conqueror.” (For, with all her knowledge of history, Alice had no very clear notion how long ago anything had happened.) So she began again: “Où est ma chatte?” which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. “Oh, I beg your pardon!” cried Alice hastily, afraid that she had hurt the poor animal's feelings. “I quite forgot you didn't like cats.”</p>
        <p>“Not like cats!” cried the Mouse, in a shrill, passionate voice. “Would You like cats if you were me?”</p>
        <p>“Well, perhaps not,” said Alice in a soothing tone: “don't be angry about it. And yet I wish I could show you our cat Dinah: I think you'd take a fancy to cats if you could only see her. She is such a dear quiet thing,” Alice went on, half to herself, as she swam lazily about in the pool, “and she sits purring so nicely by the fire, licking her paws and washing her face—and she is such a nice soft thing to nurse—and she's such a capital one for catching mice—oh, I beg your pardon!” cried Alice again, for this time the Mouse was bristling all over, and she felt certain it must be really offended. “We won't talk about her any more if you'd rather not.”</p>
        <p>“We indeed!” cried the Mouse, who was trembling down to the end of his tail. “As if I would talk on such a subject! Our family always Hated cats: nasty, low, vulgar things! Don't let me hear the name again!”</p>
        <p>“I won't indeed!” said Alice, in a great hurry to change the subject of conversation. “Are you—are you fond—of—of dogs?” The Mouse did not answer, so Alice went on eagerly: “There is such a nice little dog near our house I should like to show you! A little bright-eyed terrier, you know, with oh, such long curly brown hair! And it'll fetch things when you throw them, and it'll sit up and beg for its dinner, and all sorts of things—I can't remember half of them—and it belongs to a farmer, you know, and he says it's so useful, it's worth a hundred pounds! He says it kills all the rats and—oh dear!” cried Alice in a sorrowful tone, “I'm afraid I've offended it again!” For the Mouse was swimming away from her as hard as it could go, and making quite a commotion in the pool as it went.</p>
        <p>So she called softly after it, “Mouse dear! Do come back again, and we won't talk about cats or dogs either, if you don't like them!” When the Mouse heard this, it turned round and swam slowly back to her: its face was quite pale (with passion, Alice thought), and it said in a low trembling voice, “Let us get to the shore, and then I'll tell you my history, and you'll understand why it is I hate cats and dogs.”</p>
        <p>It was high time to go, for the pool was getting quite crowded with the birds and animals that had fallen into it: there were a Duck and a Dodo, a Lory and an Eaglet, and several other curious creatures. Alice led the way, and the whole party swam to the shore.</p> 
		</TextFlow>
		
		static public const chapter3:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter III</p>
        <p textAlign='center' fontSize='24'>A Caucus-Race and a Long Tale</p>
        <p>They were indeed a queer-looking party that assembled on the bank—the birds with draggled feathers, the animals with their fur clinging close to them, and all dripping wet, cross, and uncomfortable.</p>
        <p>The first question of course was, how to get dry again: they had a consultation about this, and after a few minutes it seemed quite natural to Alice to find herself talking familiarly with them, as if she had known them all her life. Indeed, she had quite a long argument with the Lory, who at last turned sulky, and would only say, “I am older than you, and must know better”; and this Alice would not allow without knowing how old it was, and, as the Lory positively refused to tell its age, there was no more to be said.</p>
        <p>At last the Mouse, who seemed to be a person of authority among them, called out, “Sit down, all of you, and listen to me! I' <span fontStyle='italic'>ll</span> soon make you dry enough!” They all sat down at once, in a large ring, with the Mouse in the middle. Alice kept her eyes anxiously fixed on it, for she felt sure she would catch a bad cold if she did not get dry very soon.</p>
        <p>“Ahem!” said the Mouse with an important air, “are you all ready? This is the driest thing I know. Silence all round, if you please! ‘William the Conqueror, whose cause was favoured by the pope, was soon submitted to by the English, who wanted leaders, and had been of late much accustomed to usurpation and conquest. Edwin and Morcar, the earls of Mercia and Northumbria—’”</p>
        <p>“Ugh!” said the Lory, with a shiver.</p>
        <p>“I beg your pardon!” said the Mouse, frowning, but very politely: “Did you speak?”</p>
        <p>“Not I!” said the Lory hastily.</p>
        <p>“I thought you did,” said the Mouse. “—I proceed. ‘Edwin and Morcar, the earls of Mercia and Northumbria, declared for him: and even Stigand, the patriotic archbishop of Canterbury, found it advisable—’”</p>
        <p>“Found <span fontStyle='italic'>what</span> ?” said the Duck.</p>
        <p>“Found It,” the Mouse replied rather crossly: “of course you know what ‘it’ means.”</p>
        <p>“I know what ‘it’ means well enough, when <span fontStyle='italic'>I</span> find a thing,” said the Duck: “it's generally a frog or a worm. The question is, what did the archbishop find?”</p>
        <p>The Mouse did not notice this question, but hurriedly went on, “‘—found it advisable to go with Edgar Atheling to meet William and offer him the crown. William's conduct at first was moderate. But the insolence of his Normans—’ How are you getting on now, my dear?” it continued, turning to Alice as it spoke.</p>
        <p>“As wet as ever,” said Alice in a melancholy tone: “it doesn't seem to dry me at all.”</p>
        <p>“In that case,” said the Dodo solemnly, rising to its feet, “I move that the meeting adjourn, for the immediate adoption of more energetic remedies—”</p>
        <p>“Speak English!” said the Eaglet. “I don't know the meaning of half those long words, and, what's more, I don't believe you do either!” And the Eaglet bent down its head to hide a smile: some of the other birds tittered audibly.</p>
        <p>“What I was going to say,” said the Dodo in an offended tone, “was, that the best thing to get us dry would be a Caucus-race.”</p>
        <p>“What Is a Caucus-race?” said Alice; not that she wanted much to know, but the Dodo had paused as if it thought that <span fontStyle='italic'>somebody</span> ought to speak, and no one else seemed inclined to say anything.</p>
        <p>“Why,” said the Dodo, “the best way to explain it is to do it.” (And, as you might like to try the thing yourself, some winter day, I will tell you how the Dodo managed it.)</p>
        <p>First it marked out a race-course, in a sort of circle, (“the exact shape doesn't matter,” it said,) and then all the party were placed along the course, here and there. There was no “One, two, three, and away,” but they began running when they liked, and left off when they liked, so that it was not easy to know when the race was over. However, when they had been running half an hour or so, and were quite dry again, the Dodo suddenly called out “The race is over!” and they all crowded round it, panting, and asking, “But who has won?”</p>
        <p>This question the Dodo could not answer without a great deal of thought, and it sat for a long time with one finger pressed upon its forehead (the position in which you usually see Shakespeare, in the pictures of him), while the rest waited in silence. At last the Dodo said, “ <span fontStyle='italic'>everybody</span> has won, and <span fontStyle='italic'>all</span> must have prizes.”</p>
        <p>“But who is to give the prizes?” quite a chorus of voices asked.</p>
        <p>“Why, <span fontStyle='italic'>she</span> , of course,” said the Dodo, pointing to Alice with one finger; and the whole party at once crowded round her, calling out in a confused way, “Prizes! Prizes!”</p>
        <p>Alice had no idea what to do, and in despair she put her hand in her pocket, and pulled out a box of comfits, (luckily the salt water had not got into it), and handed them round as prizes. There was exactly one a-piece all round.</p>
        <p>“But she must have a prize herself, you know,” said the Mouse.</p>
        <p>“Of course,” the Dodo replied very gravely. “What else have you got in your pocket?” he went on, turning to Alice.</p>
        <p>“Only a thimble,” said Alice sadly.</p>
        <p>“Hand it over here,” said the Dodo.</p>
        <p>Then they all crowded round her once more, while the Dodo solemnly presented the thimble, saying “We beg your acceptance of this elegant thimble”; and, when it had finished this short speech, they all cheered.</p>
        <p>Alice thought the whole thing very absurd, but they all looked so grave that she did not dare to laugh; and, as she could not think of anything to say, she simply bowed, and took the thimble, looking as solemn as she could.</p>
        <p>The next thing was to eat the comfits: this caused some noise and confusion, as the large birds complained that they could not taste theirs, and the small ones choked and had to be patted on the back. However, it was over at last, and they sat down again in a ring, and begged the Mouse to tell them something more.</p>
        <p>“You promised to tell me your history, you know,” said Alice, “and why it is you hate—C and D,” she added in a whisper, half afraid that it would be offended again.</p>
        <p>“Mine is a long and a sad tale!” said the Mouse, turning to Alice, and sighing.</p>
        <p>“It <span fontStyle='italic'>is</span> a long tail, certainly,” said Alice, looking down with wonder at the Mouse's tail; “but why do you call it sad?” And she kept on puzzling about it while the Mouse was speaking, so that her idea of the tale was something like this:—</p>
        <p>“Fury said toa mouse, Thathe met in thehouse, ‘Letus both goto law: <span fontStyle='italic'>I</span> will prose-cute <span fontStyle='italic'>you</span> .—Come, I'lltake no de-nial; Wemust havethe trial;For reallythis morn-ing I'venothingto do.’Said themouse tothe cur,‘Such atrial, dearsir, Withno juryor judge,wouldbe wast-ing ourbreath.’‘I'll bejudge,I'll bejury,’saidcun-ningoldFury:‘I'lltrythewholecause,andcon-demnyou todeath.’”</p>
        <p>“You are not attending!” said the Mouse to Alice severely. “What are you thinking of?”</p>
        <p>“I beg your pardon,” said Alice very humbly: “you had got to the fifth bend, I think?”</p>
        <p>“I had <span fontStyle='italic'>not!”</span> cried the Mouse, sharply and very angrily.</p>
        <p>“A knot!” said Alice, always ready to make herself useful, and looking anxiously about her. “Oh, do let me help to undo it!”</p>
        <p>“I shall do nothing of the sort,” said the Mouse, getting up and walking away. “You insult me by talking such nonsense!”</p>
        <p>“I didn't mean it!” pleaded poor Alice. “But you're so easily offended, you know!”</p>
        <p>The Mouse only growled in reply.</p>
        <p>“Please come back and finish your story!” Alice called after it; and the others all joined in chorus, “Yes, please do!” but the Mouse only shook its head impatiently, and walked a little quicker.</p>
        <p>“What a pity it wouldn't stay!” sighed the Lory, as soon as it was quite out of sight; and an old Crab took the opportunity of saying to her daughter “Ah, my dear! Let this be a lesson to you never to lose <span fontStyle='italic'>your</span> temper!” “Hold your tongue, Ma!” said the young Crab, a little snappishly. “You're enough to try the patience of an oyster!”</p>
        <p>“I wish I had our Dinah here, I know I do!” said Alice aloud, addressing nobody in particular. “ <span fontStyle='italic'>She'd</span> soon fetch it back!”</p>
        <p>“And who is Dinah, if I might venture to ask the question?” said the Lory.</p>
        <p>Alice replied eagerly, for she was always ready to talk about her pet: “Dinah's our cat. And she's such a capital one for catching mice you can't think! And oh, I wish you could see her after the birds! Why, she'll eat a little bird as soon as look at it!”</p>
        <p>This speech caused a remarkable sensation among the party. Some of the birds hurried off at once: one old Magpie began wrapping itself up very carefully, remarking, “I really must be getting home; the night-air doesn't suit my throat!” and a Canary called out in a trembling voice to its children, “Come away, my dears! It's high time you were all in bed!” On various pretexts they all moved off, and Alice was soon left alone.</p>
        <p>“I wish I hadn't mentioned Dinah!” she said to herself in a melancholy tone. “Nobody seems to like her, down here, and I'm sure she's the best cat in the world! Oh, my dear Dinah! I wonder if I shall ever see you any more!” And here poor Alice began to cry again, for she felt very lonely and low-spirited. In a little while, however, she again heard a little pattering of footsteps in the distance, and she looked up eagerly, half hoping that the Mouse had changed his mind, and was coming back to finish his story.</p> 
		</TextFlow>
		
		static public const chapter4:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter IV</p>
        <p textAlign='center' fontSize='24'>The Rabbit Sends in a Little Bill</p>
        <p>It was the White Rabbit, trotting slowly back again, and looking anxiously about as it went, as if it had lost something; and she heard it muttering to itself “The Duchess! The Duchess! Oh my dear paws! Oh my fur and whiskers! She'll get me executed, as sure as ferrets are ferrets! Where <span fontStyle='italic'>can</span> I have dropped them, I wonder?” Alice guessed in a moment that it was looking for the fan and the pair of white kid gloves, and she very good-naturedly began hunting about for them, but they were nowhere to be seen—everything seemed to have changed since her swim in the pool, and the great hall, with the glass table and the little door, had vanished completely.</p>
        <p>Very soon the Rabbit noticed Alice, as she went hunting about, and called out to her in an angry tone, “Why, Mary Ann, what <span fontStyle='italic'>are</span> you doing out here? Run home this moment, and fetch me a pair of gloves and a fan! Quick, now!” And Alice was so much frightened that she ran off at once in the direction it pointed to, without trying to explain the mistake it had made.</p>
        <p>“He took me for his housemaid,” she said to herself as she ran. “How surprised he'll be when he finds out who I am! But I'd better take him his fan and gloves—that is, if I can find them.” As she said this, she came upon a neat little house, on the door of which was a bright brass plate with the name “W. RABBIT” engraved upon it. She went in without knocking, and hurried upstairs, in great fear lest she should meet the real Mary Ann, and be turned out of the house before she had found the fan and gloves.</p>
        <p>“How queer it seems,” Alice said to herself, “to be going messages for a rabbit! I suppose Dinah'll be sending me on messages next!” And she began fancying the sort of thing that would happen: “‘Miss Alice! Come here directly, and get ready for your walk!’ ‘Coming in a minute, nurse! But I've got to see that the mouse doesn't get out.’ Only I don't think,” Alice went on, “that they'd let Dinah stop in the house if it began ordering people about like that!”</p>
        <p>By this time she had found her way into a tidy little room with a table in the window, and on it (as she had hoped) a fan and two or three pairs of tiny white kid gloves: she took up the fan and a pair of the gloves, and was just going to leave the room, when her eye fell upon a little bottle that stood near the looking- glass. There was no label this time with the words “DRINK ME,” but nevertheless she uncorked it and put it to her lips. “I know <span fontStyle='italic'>something</span> interesting is sure to happen,” she said to herself, “whenever I eat or drink anything; so I'll just see what this bottle does. I do hope it'll make me grow large again, for really I'm quite tired of being such a tiny little thing!”</p>
        <p>It did so indeed, and much sooner than she had expected: before she had drunk half the bottle, she found her head pressing against the ceiling, and had to stoop to save her neck from being broken. She hastily put down the bottle, saying to herself “That's quite enough—I hope I shan't grow any more—As it is, I can't get out at the door—I do wish I hadn't drunk quite so much!”</p>
        <p>Alas! it was too late to wish that! She went on growing, and growing, and very soon had to kneel down on the floor: in another minute there was not even room for this, and she tried the effect of lying down with one elbow against the door, and the other arm curled round her head. Still she went on growing, and, as a last resource, she put one arm out of the window, and one foot up the chimney, and said to herself “Now I can do no more, whatever happens. What <span fontStyle='italic'>will</span> become of me?”</p>
        <p>Luckily for Alice, the little magic bottle had now had its full effect, and she grew no larger: still it was very uncomfortable, and, as there seemed to be no sort of chance of her ever getting out of the room again, no wonder she felt unhappy.</p>
        <p>“It was much pleasanter at home,” thought poor Alice, “when one wasn't always growing larger and smaller, and being ordered about by mice and rabbits. I almost wish I hadn't gone down that rabbit-hole—and yet—and yet—it's rather curious, you know, this sort of life! I do wonder what Can have happened to me! When I used to read fairy-tales, I fancied that kind of thing never happened, and now here I am in the middle of one! There ought to be a book written about me, that there ought! And when I grow up, I'll write one—but I'm grown up now,” she added in a sorrowful tone; “at least there's no room to grow up any more <span fontStyle='italic'>here</span> .”</p>
        <p>“But then,” thought Alice, “shall I <span fontStyle='italic'>never</span> get any older than I am now? That'll be a comfort, one way—never to be an old woman— but then—always to have lessons to learn! Oh, I shouldn't like <span fontStyle='italic'>that</span> !”</p>
        <p>“Oh, you foolish Alice!” she answered herself. “How can you learn lessons in here? Why, there's hardly room for <span fontStyle='italic'>you</span> , and no room at all for any lesson-books!”</p>
        <p>And so she went on, taking first one side and then the other, and making quite a conversation of it altogether; but after a few minutes she heard a voice outside, and stopped to listen.</p>
        <p>“Mary Ann! Mary Ann!” said the voice. “Fetch me my gloves this moment!” Then came a little pattering of feet on the stairs. Alice knew it was the Rabbit coming to look for her, and she trembled till she shook the house, quite forgetting that she was now about a thousand times as large as the Rabbit, and had no reason to be afraid of it.</p>
        <p>Presently the Rabbit came up to the door, and tried to open it; but, as the door opened inwards, and Alice's elbow was pressed hard against it, that attempt proved a failure. Alice heard it say to itself “Then I'll go round and get in at the window.”</p>
        <p>“ <span fontStyle='italic'>That</span> you won't” thought Alice, and, after waiting till she fancied she heard the Rabbit just under the window, she suddenly spread out her hand, and made a snatch in the air. She did not get hold of anything, but she heard a little shriek and a fall, and a crash of broken glass, from which she concluded that it was just possible it had fallen into a cucumber-frame, or something of the sort.</p>
        <p>Next came an angry voice—the Rabbit's—“Pat! Pat! Where are you?” And then a voice she had never heard before, “Sure then I'm here! Digging for apples, yer honour!”</p>
        <p>“Digging for apples, indeed!” said the Rabbit angrily. “Here! Come and help me out of <span fontStyle='italic'>this</span> !” (Sounds of more broken glass.)</p>
        <p>“Now tell me, Pat, what's that in the window?”</p>
        <p>“Sure, it's an arm, yer honour!” (He pronounced it “arrum.”)</p>
        <p>“An arm, you goose! Who ever saw one that size? Why, it fills the whole window!”</p>
        <p>“Sure, it does, yer honour: but it's an arm for all that.”</p>
        <p>“Well, it's got no business there, at any rate: go and take it away!”</p>
        <p>There was a long silence after this, and Alice could only hear whispers now and then; such as, “Sure, I don't like it, yer honour, at all, at all!” “Do as I tell you, you coward!” and at last she spread out her hand again, and made another snatch in the air. This time there were <span fontStyle='italic'>two</span> little shrieks, and more sounds of broken glass. “What a number of cucumber-frames there must be!” thought Alice. “I wonder what they'll do next! As for pulling me out of the window, I only wish they <span fontStyle='italic'>could!</span> I'm sure I don't want to stay in here any longer!”</p>
        <p>She waited for some time without hearing anything more: at last came a rumbling of little cartwheels, and the sound of a good many voices all talking together: she made out the words: “Where's the other ladder?—Why, I hadn't to bring but one; Bill's got the other—Bill! fetch it here, lad!—Here, put 'em up at this corner—No, tie 'em together first—they don't reach half high enough yet—Oh! they'll do well enough; don't be particular— Here, Bill! catch hold of this rope—Will the roof bear?—Mind that loose slate—Oh, it's coming down! Heads below!” (a loud crash)—“Now, who did that?—It was Bill, I fancy—Who's to go down the chimney?—Nay, I shan't! <span fontStyle='italic'>You</span> do it!— <span fontStyle='italic'>That</span> I won't, then!—Bill's to go down—Here, Bill! the master says you're to go down the chimney!”</p>
        <p>“Oh! So Bill's got to come down the chimney, has he?” said Alice to herself. “Shy, they seem to put everything upon Bill! I wouldn't be in Bill's place for a good deal: this fireplace is narrow, to be sure; but I <span fontStyle='italic'>think</span> I can kick a little!”</p>
        <p>She drew her foot as far down the chimney as she could, and waited till she heard a little animal (she couldn't guess of what sort it was) scratching and scrambling about in the chimney close above her: then, saying to herself “This is Bill,” she gave one sharp kick, and waited to see what would happen next.</p>
        <p>The first thing she heard was a general chorus of “There goes Bill!” then the Rabbit's voice along—“Catch him, you by the hedge!” then silence, and then another confusion of voices—“Hold up his head—Brandy now—Don't choke him—How was it, old fellow? What happened to you? Tell us all about it!”</p>
        <p>Last came a little feeble, squeaking voice, (“That's Bill,” thought Alice,) “Well, I hardly know—No more, thank ye; I'm better now—but I'm a deal too flustered to tell you—all I know is, something comes at me like a Jack-in-the-box, and up I goes like a sky-rocket!”</p>
        <p>“So you did, old fellow!” said the others.</p>
        <p>“We must burn the house down!” said the Rabbit's voice; and Alice called out as loud as she could, “If you do. I'll set Dinah at you!”</p>
        <p>There was a dead silence instantly, and Alice thought to herself, “I wonder what they <span fontStyle='italic'>will</span> do next! If they had any sense, they'd take the roof off.” After a minute or two, they began moving about again, and Alice heard the Rabbit say, “A barrowful will do, to begin with.”</p>
        <p>“A barrowful of <span fontStyle='italic'>what</span> ?” thought Alice; but she had not long to doubt, for the next moment a shower of little pebbles came rattling in at the window, and some of them hit her in the face. “I'll put a stop to this,” she said to herself, and shouted out, “You'd better not do that again!” which produced another dead silence.</p>
        <p>Alice noticed with some surprise that the pebbles were all turning into little cakes as they lay on the floor, and a bright idea came into her head. “If I eat one of these cakes,” she thought, “it's sure to make <span fontStyle='italic'>some</span> change in my size; and as it can't possibly make me larger, it must make me smaller, I suppose.”</p>
        <p>So she swallowed one of the cakes, and was delighted to find that she began shrinking directly. As soon as she was small enough to get through the door, she ran out of the house, and found quite a crowd of little animals and birds waiting outside. The poor little Lizard, Bill, was in the middle, being held up by two guinea-pigs, who were giving it something out of a bottle. They all made a rush at Alice the moment she appeared; but she ran off as hard as she could, and soon found herself safe in a thick wood.</p>
        <p>“The first thing I've got to do,” said Alice to herself, as she wandered about in the wood, “is to grow to my right size again; and the second thing is to find my way into that lovely garden. I think that will be the best plan.”</p>
        <p>It sounded an excellent plan, no doubt, and very neatly and simply arranged; the only difficulty was, that she had not the smallest idea how to set about it; and while she was peering about anxiously among the trees, a little sharp bark just over her head made her look up in a great hurry.</p>
        <p>An enormous puppy was looking down at her with large round eyes, and feebly stretching out one paw, trying to touch her. “Poor little thing!” said Alice, in a coaxing tone, and she tried hard to whistle to it; but she was terribly frightened all the time at the thought that it might be hungry, in which case it would be very likely to eat her up in spite of all her coaxing.</p>
        <p>Hardly knowing what she did, she picked up a little bit of stick, and held it out to the puppy; whereupon the puppy jumped into the air off all its feet at once, with a yelp of delight, and rushed at the stick, and made believe to worry it; then Alice dodged behind a great thistle, to keep herself from being run over; and the moment she appeared on the other side, the puppy made another rush at the stick, and tumbled head over heels in its hurry to get hold of it; then Alice, thinking it was very like having a game of play with a cart-horse, and expecting every moment to be trampled under its feet, ran round the thistle again; then the puppy began a series of short charges at the stick, running a very little way forwards each time and a long way back, and barking hoarsely all the while, till at last it sat down a good way off, panting, with its tongue hanging out of its mouth, and its great eyes half shut.</p>
        <p>This seemed to Alice a good opportunity for making her escape; so she set off at once, and ran till she was quite tired and out of breath, and till the puppy's bark sounded quite faint in the distance.</p>
        <p>“And yet what a dear little puppy it was!” said Alice, as she leant against a buttercup to rest herself, and fanned herself with one of the leaves: “I should have liked teaching it tricks very much, if—if I'd only been the right size to do it! Oh dear! I'd nearly forgotten that I've got to grow up again! Let me see—how <span fontStyle='italic'>is</span> it to be managed? I suppose I ought to eat or drink something or other; but the great question is, what?”</p>
        <p>The great question certainly was, what? Alice looked all round her at the flowers and the blades of grass, but she did not see anything that looked like the right thing to eat or drink under the circumstances. There was a large mushroom growing near her, about the same height as herself; and when she had looked under it, and on both sides of it, and behind it, it occurred to her that she might as well look and see what was on the top of it.</p>
        <p>She stretched herself up on tiptoe, and peeped over the edge of the mushroom, and her eyes immediately met those of a large caterpillar, that was sitting on the top with its arms folded, quietly smoking a long hookah, and taking not the smallest notice of her or of anything else.</p> 
		</TextFlow>
		
		static public const chapter5:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter V</p>
        <p textAlign='center' fontSize='24'>Advice from a Caterpillar</p>
        <p>The Caterpillar and Alice looked at each other for some time in silence: at last the Caterpillar took the hookah out of its mouth, and addressed her in a languid, sleepy voice.</p>
        <p>“Who are <span fontStyle='italic'>you</span> ?” said the Caterpillar.</p>
        <p>This was not an encouraging opening for a conversation. Alice replied, rather shyly, “I—I hardly know, sir, just at present— at least I know who I <span fontStyle='italic'>was</span> when I got up this morning, but I think I must have been changed several times since then.”</p>
        <p>“What do you mean by that?” said the Caterpillar sternly. “Explain yourself!”</p>
        <p>“I can't explain <span fontStyle='italic'>myself</span> , I'm afraid, sir” said Alice, “because I'm not myself, you see.”</p>
        <p>“I don't see,” said the Caterpillar.</p>
        <p>“I'm afraid I can't put it more clearly,” Alice replied very politely, “for I can't understand it myself to begin with; and being so many different sizes in a day is very confusing.”</p>
        <p>“It isn't,” said the Caterpillar.</p>
        <p>“Well, perhaps you haven't found it so yet,” said Alice; “but when you have to turn into a chrysalis—you will some day, you know—and then after that into a butterfly, I should think you'll feel it a little queer, won't you?”</p>
        <p>“Not a bit,” said the Caterpillar.</p>
        <p>“Well, perhaps <span fontStyle='italic'>your</span> feelings may be different,” said Alice; “all I know is, it would feel very queer to <span fontStyle='italic'>me</span> .”</p>
        <p>“You!” said the Caterpillar contemptuously. “Who are You?”</p>
        <p>Which brought them back again to the beginning of the conversation. Alice felt a little irritated at the Caterpillar's making such <span fontStyle='italic'>very</span> short remarks, and she drew herself up and said, very gravely, “I think, you ought to tell me who <span fontStyle='italic'>you</span> are, first.”</p>
        <p>“Why?” said the Caterpillar.</p>
        <p>Here was another puzzling question; and as Alice could not think of any good reason, and as the Caterpillar seemed to be in a <span fontStyle='italic'>very</span> unpleasant state of mind, she turned away.</p>
        <p>“Come back!” the Caterpillar called after her. “I've something important to say!”</p>
        <p>This sounded promising, certainly: Alice turned and came back again.</p>
        <p>“Keep your temper,” said the Caterpillar.</p>
        <p>“Is that all?” said Alice, swallowing down her anger as well as she could.</p>
        <p>“No,” said the Caterpillar.</p>
        <p>Alice thought she might as well wait, as she had nothing else to do, and perhaps after all it might tell her something worth hearing. For some minutes it puffed away without speaking, but at last it unfolded its arms, took the hookah out of its mouth again, and said, “So you think you're changed, do you?”</p>
        <p>“I'm afraid I am, sir,” said Alice; “I can't remember things as I used—and I don't keep the same size for ten minutes together!”</p>
        <p>“Can't remember <span fontStyle='italic'>what</span> things?” said the Caterpillar.</p>
        <p>“Well, I've tried to say ‘How Doth The Little Busy Bee,’ but it all came different!” Alice replied in a very melancholy voice.</p>
        <p>“Repeat, ‘You Are Old, Father William,’” said the Caterpillar.</p>
        <p>Alice folded her hands, and began:—</p>
        <p>“That is not said right,” said the Caterpillar.</p>
        <p>“Not <span fontStyle='italic'>quite</span> right, I'm afraid,” said Alice, timidly; “some of the words have got altered.”</p>
        <p>“It is wrong from beginning to end,” said the Caterpillar decidedly, and there was silence for some minutes.</p>
        <p>The Caterpillar was the first to speak.</p>
        <p>“What size do you want to be?” it asked.</p>
        <p>“Oh, I'm not particular as to size,” Alice hastily replied; “only one doesn't like changing so often, you know.”</p>
        <p>“I <span fontStyle='italic'>don't</span> know,” said the Caterpillar.</p>
        <p>Alice said nothing: she had never been so much contradicted in her life before, and she felt that she was losing her temper.</p>
        <p>“Are you content now?” said the Caterpillar.</p>
        <p>“Well, I should like to be a <span fontStyle='italic'>little</span> larger, sir, if you wouldn't mind,” said Alice: “three inches is such a wretched height to be.”</p>
        <p>“It is a very good height indeed!” said the Caterpillar angrily, rearing itself upright as it spoke (it was exactly three inches high).</p>
        <p>“But I'm not used to it!” pleaded poor Alice in a piteous tone. And she thought of herself, “I wish the creatures wouldn't be so easily offended!”</p>
        <p>“You'll get used to it in time,” said the Caterpillar; and it put the hookah into its mouth and began smoking again.</p>
        <p>This time Alice waited patiently until it chose to speak again. In a minute or two the Caterpillar took the hookah out of its mouth and yawned once or twice, and shook itself. Then it got down off the mushroom, and crawled away in the grass, merely remarking as it went, “One side will make you grow taller, and the other side will make you grow shorter.”</p>
        <p>“One side of <span fontStyle='italic'>what</span> ? The other side of <span fontStyle='italic'>what</span> ?” thought Alice to herself.</p>
        <p>“Of the mushroom,” said the Caterpillar, just as if she had asked it aloud; and in another moment it was out of sight.</p>
        <p>Alice remained looking thoughtfully at the mushroom for a minute, trying to make out which were the two sides of it; and as it was perfectly round, she found this a very difficult question. However, at last she stretched her arms round it as far as they would go, and broke off a bit of the edge with each hand.</p>
        <p>“And now which is which?” she said to herself, and nibbled a little of the right-hand bit to try the effect: the next moment she felt a violent blow underneath her chin: it had struck her foot!</p>
        <p>She was a good deal frightened by this very sudden change, but she felt that there was no time to be lost, as she was shrinking rapidly; so she set to work at once to eat some of the other bit. Her chin was pressed so closely against her foot, that there was hardly room to open her mouth; but she did it at last, and managed to swallow a morsel of the lefthand bit.</p>
        <p>“Come, my head's free at last!” said Alice in a tone of delight, which changed into alarm in another moment, when she found that her shoulders were nowhere to be found: all she could see, when she looked down, was an immense length of neck, which seemed to rise like a stalk out of a sea of green leaves that lay far below her.</p>
        <p>“What <span fontStyle='italic'>can</span> all that green stuff be?” said Alice. “And where <span fontStyle='italic'>have</span> my shoulders got to? And oh, my poor hands, how is it I can't see you?” She was moving them about as she spoke, but no result seemed to follow, except a little shaking among the distant green leaves.</p>
        <p>As there seemed to be no chance of getting her hands up to her head, she tried to get her head down to <span fontStyle='italic'>them</span> , and was delighted to find that her neck would bend about easily in any direction, like a serpent. She had just succeeded in curving it down into a graceful zigzag, and was going to dive in among the leaves, which she found to be nothing but the tops of the trees under which she had been wandering, when a sharp hiss made her draw back in a hurry: a large pigeon had flown into her face, and was beating her violently with its wings.</p>
        <p>“Serpent!” screamed the Pigeon.</p>
        <p>“I'm <span fontStyle='italic'>not</span> a serpent!” said Alice indignantly. “Let me alone!”</p>
        <p>“Serpent, I say again!” repeated the Pigeon, but in a more subdued tone, and added with a kind of sob, “I've tried every way, and nothing seems to suit them!”</p>
        <p>“I haven't the least idea what you're talking about,” said Alice.</p>
        <p>“I've tried the roots of trees, and I've tried banks, and I've tried hedges,” the Pigeon went on, without attending to her; “but those serpents! There's no pleasing them!”</p>
        <p>Alice was more and more puzzled, but she thought there was no use in saying anything more till the Pigeon had finished.</p>
        <p>“As if it wasn't trouble enough hatching the eggs,” said the Pigeon; “but I must be on the look-out for serpents night and day! Why, I haven't had a wink of sleep these three weeks!”</p>
        <p>“I'm very sorry you've been annoyed,” said Alice, who was beginning to see its meaning.</p>
        <p>“And just as I'd taken the highest tree in the wood,” continued the Pigeon, raising its voice to a shriek, “and just as I was thinking I should be free of them at last, they must needs come wriggling down from the sky! Ugh, Serpent!”</p>
        <p>“But I'm Not a serpent, I tell you!” said Alice. “I'm a—I'm a—”</p>
        <p>“Well! What are you?” said the Pigeon. “I can see you're trying to invent something!”</p>
        <p>“I—I'm a little girl,” said Alice, rather doubtfully, as she remembered the number of changes she had gone through that day.</p>
        <p>“A likely story indeed!” said the Pigeon in a tone of the deepest contempt. “I've seen a good many little girls in my time, but never <span fontStyle='italic'>one</span> with such a neck as that! No, no! You're a serpent; and there's no use denying it. I suppose you'll be telling me next that you never tasted an egg!”</p>
        <p>“I <span fontStyle='italic'>have</span> tasted eggs, certainly,” said Alice, who was a very truthful child; “but little girls eat eggs quite as much as serpents do, you know.”</p>
        <p>“I don't believe it,” said the Pigeon; “but if they do, why then they're a kind of serpent, that's all I can say.”</p>
        <p>This was such a new idea to Alice, that she was quite silent for a minute or two, which gave the Pigeon the opportunity of adding, “You're looking for eggs, I know <span fontStyle='italic'>that</span> well enough; and what does it matter to me whether you're a little girl or a serpent?”</p>
        <p>“It matters a good deal to <span fontStyle='italic'>me</span> ,” said Alice hastily; “but I'm not looking for eggs, as it happens; and if I was, I shouldn't want <span fontStyle='italic'>yours</span> : I don't like them raw.”</p>
        <p>“Well, be off, then!” said the Pigeon in a sulky tone, as it settled down again into its nest. Alice crouched down among the trees as well as she could, for her neck kept getting entangled among the branches, and every now and then she had to stop and untwist it. After a while she remembered that she still held the pieces of mushroom in her hands, and she set to work very carefully, nibbling first at one and then at the other, and growing sometimes taller and sometimes shorter, until she had succeeded in bringing herself down to her usual height.</p>
        <p>It was so long since she had been anything near the right size, that it felt quite strange at first; but she got used to it in a few minutes, and began talking to herself, as usual. “Come, there's half my plan done now! How puzzling all these changes are! I'm never sure what I'm going to be, from one minute to another! However, I've got back to my right size: the next thing is, to get into that beautiful garden—how Is that to be done, I wonder?” As she said this, she came suddenly upon an open place, with a little house in it about four feet high. “Whoever lives there,” thought Alice, “it'll never do to come upon them <span fontStyle='italic'>this</span> size: why, I should frighten them out of their wits!” So she began nibbling at the righthand bit again, and did not venture to go near the house till she had brought herself down to nine inches high.</p> 
		</TextFlow>
		
		static public const chapter6:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter VI</p>
        <p textAlign='center' fontSize='24'>Pig and Pepper</p>
        <p>For a minute or two she stood looking at the house, and wondering what to do next, when suddenly a footman in livery came running out of the wood—(she considered him to be a footman because he was in livery: otherwise, judging by his face only, she would have called him a fish)—and rapped loudly at the door with his knuckles. It was opened by another footman in livery, with a round face, and large eyes like a frog; and both footmen, Alice noticed, had powdered hair that curled all over their heads. She felt very curious to know what it was all about, and crept a little way out of the wood to listen.</p>
        <p>The Fish-Footman began by producing from under his arm a great letter, nearly as large as himself, and this he handed over to the other, saying, in a solemn tone, “For the Duchess. An invitation from the Queen to play croquet.” The Frog-Footman repeated, in the same solemn tone, only changing the order of the words a little, “From the Queen. An invitation for the Duchess to play croquet.”</p>
        <p>Then they both bowed low, and their curls got entangled together.</p>
        <p>Alice laughed so much at this, that she had to run back into the wood for fear of their hearing her; and when she next peeped out the Fish-Footman was gone, and the other was sitting on the ground near the door, staring stupidly up into the sky.</p>
        <p>Alice went timidly up to the door, and knocked.</p>
        <p>“There's no sort of use in knocking,” said the Footman, “and that for two reasons. First, because I'm on the same side of the door as you are; secondly, because they're making such a noise inside, no one could possibly hear you.” And certainly there was a most extraordinary noise going on within—a constant howling and sneezing, and every now and then a great crash, as if a dish or kettle had been broken to pieces.</p>
        <p>“Please, then,” said Alice, “how am I to get in?”</p>
        <p>“There might be some sense in your knocking,” the Footman went on without attending to her, “if we had the door between us. For instance, if you were Inside, you might knock, and I could let you out, you know.” He was looking up into the sky all the time he was speaking, and this Alice thought decidedly uncivil. “But perhaps he can't help it,” she said to herself; “his eyes are so Very nearly at the top of his head. But at any rate he might answer questions.—How am I to get in?” she repeated, aloud.</p>
        <p>“I shall sit here,” the Footman remarked, “till tomorrow—”</p>
        <p>At this moment the door of the house opened, and a large plate came skimming out, straight at the Footman's head: it just grazed his nose, and broke to pieces against one of the trees behind him.</p>
        <p>“—or next day, maybe,” the Footman continued in the same tone, exactly as if nothing had happened.</p>
        <p>“How am I to get in?” asked Alice again, in a louder tone.</p>
        <p>“ <span fontStyle='italic'>Are</span> you to get in at all?” said the Footman. “That's the first question, you know.”</p>
        <p>It was, no doubt: only Alice did not like to be told so. “It's really dreadful,” she muttered to herself, “the way all the creatures argue. It's enough to drive one crazy!”</p>
        <p>The Footman seemed to think this a good opportunity for repeating his remark, with variations. “I shall sit here,” he said, “on and off, for days and days.”</p>
        <p>“But what am I to do?” said Alice.</p>
        <p>“Anything you like,” said the Footman, and began whistling.</p>
        <p>“Oh, there's no use in talking to him,” said Alice desperately: “he's perfectly idiotic!” And she opened the door and went in.</p>
        <p>The door led right into a large kitchen, which was full of smoke from one end to the other: the Duchess was sitting on a three-legged stool in the middle, nursing a baby; the cook was leaning over the fire, stirring a large cauldron which seemed to be full of soup.</p>
        <p>“There's certainly too much pepper in that soup!” Alice said to herself, as well as she could for sneezing.</p>
        <p>There was certainly too much of it in the air. Even the Duchess sneezed occasionally; and as for the baby, it was sneezing and howling alternately without a moment's pause. The only things in the kitchen that did not sneeze, were the cook, and a large cat which was sitting on the hearth and grinning from ear to ear.</p>
        <p>“Please would you tell me,” said Alice, a little timidly, for she was not quite sure whether it was good manners for her to speak first, “why your cat grins like that?”</p>
        <p>“It's a Cheshire cat,” said the Duchess, “and that's why. Pig!”</p>
        <p>She said the last word with such sudden violence that Alice quite jumped; but she saw in another moment that it was addressed to the baby, and not to her, so she took courage, and went on again:—</p>
        <p>“I didn't know that Cheshire cats always grinned; in fact, I didn't know that cats <span fontStyle='italic'>could</span> grin.”</p>
        <p>“They all can,” said the Duchess; “and most of 'em do.”</p>
        <p>“I don't know of any that do,” Alice said very politely, feeling quite pleased to have got into a conversation.</p>
        <p>“You don't know much,” said the Duchess; “and that's a fact.”</p>
        <p>Alice did not at all like the tone of this remark, and thought it would be as well to introduce some other subject of conversation. While she was trying to fix on one, the cook took the cauldron of soup off the fire, and at once set to work throwing everything within her reach at the Duchess and the baby —the fire-irons came first; then followed a shower of saucepans, plates, and dishes. The Duchess took no notice of them even when they hit her; and the baby was howling so much already, that it was quite impossible to say whether the blows hurt it or not.</p>
        <p>“Oh, Please mind what you're doing!” cried Alice, jumping up and down in an agony of terror. “Oh, there goes his Precious nose”; as an unusually large saucepan flew close by it, and very nearly carried it off.</p>
        <p>“If everybody minded their own business,” the Duchess said in a hoarse growl, “the world would go round a deal faster than it does.”</p>
        <p>“Which would <span fontStyle='italic'>not</span> be an advantage,” said Alice, who felt very glad to get an opportunity of showing off a little of her knowledge. “Just think of what work it would make with the day and night! You see the earth takes twenty-four hours to turn round on its axis—”</p>
        <p>“Talking of axes,” said the Duchess, “chop off her head!”</p>
        <p>Alice glanced rather anxiously at the cook, to see if she meant to take the hint; but the cook was busily stirring the soup, and seemed not to be listening, so she went on again: “Twenty-four hours, I <span fontStyle='italic'>think;</span> or is it twelve? I—”</p>
        <p>“Oh, don't bother <span fontStyle='italic'>me,</span> ” said the Duchess; “I never could abide figures!” And with that she began nursing her child again, singing a sort of lullaby to it as she did so, and giving it a violent shake at the end of every line:</p>
        <p>While the Duchess sang the second verse of the song, she kept tossing the baby violently up and down, and the poor little thing howled so, that Alice could hardly hear the words:—</p>
        <p>“Here! you may nurse it a bit, if you like!” the Duchess said to Alice, flinging the baby at her as she spoke. “I must go and get ready to play croquet with the Queen,” and she hurried out of the room. The cook threw a frying-pan after her as she went out, but it just missed her.</p>
        <p>Alice caught the baby with some difficulty, as it was a queer- shaped little creature, and held out its arms and legs in all directions, “just like a star-fish,” thought Alice. The poor little thing was snorting like a steam-engine when she caught it, and kept doubling itself up and straightening itself out again, so that altogether, for the first minute or two, it was as much as she could do to hold it.</p>
        <p>As soon as she had made out the proper way of nursing it, (which was to twist it up into a sort of knot, and then keep tight hold of its right ear and left foot, so as to prevent its undoing itself,) she carried it out into the open air. “ <span fontStyle='italic'>If</span> I don't take this child away with me,” thought Alice, “they're sure to kill it in a day or two: wouldn't it be murder to leave it behind?” She said the last words out loud, and the little thing grunted in reply (it had left off sneezing by this time). “Don't grunt,” said Alice; “that's not at all a proper way of expressing yourself.”</p>
        <p>The baby grunted again, and Alice looked very anxiously into its face to see what was the matter with it. There could be no doubt that it had a Very turn-up nose, much more like a snout than a real nose; also its eyes were getting extremely small for a baby: altogether Alice did not like the look of the thing at all. “But perhaps it was only sobbing,” she thought, and looked into its eyes again, to see if there were any tears.</p>
        <p>No, there were no tears. “If you're going to turn into a pig, my dear,” said Alice, seriously, “I'll have nothing more to do with you. Mind now!” The poor little thing sobbed again (or grunted, it was impossible to say which), and they went on for some while in silence.</p>
        <p>Alice was just beginning to think to herself, “Now, what am I to do with this creature when I get it home?” when it grunted again, so violently, that she looked down into its face in some alarm. This time there could be <span fontStyle='italic'>no</span> mistake about it: it was neither more nor less than a pig, and she felt that it would be quite absurd for her to carry it further.</p>
        <p>So she set the little creature down, and felt quite relieved to see it trot away quietly into the wood. “If it had grown up,” she said to herself, “it would have made a dreadfully ugly child: but it makes rather a handsome pig, I think.” And she began thinking over other children she knew, who might do very well as pigs, and was just saying to herself, “if one only knew the right way to change them—” when she was a little startled by seeing the Cheshire Cat sitting on a bough of a tree a few yards off.</p>
        <p>The Cat only grinned when it saw Alice. It looked good- natured, she thought: still it had Very long claws and a great many teeth, so she felt that it ought to be treated with respect.</p>
        <p>“Cheshire Puss,” she began, rather timidly, as she did not at all know whether it would like the name: however, it only grinned a little wider. “Come, it's pleased so far,” thought Alice, and she went on. “Would you tell me, please, which way I ought to go from here?”</p>
        <p>“That depends a good deal on where you want to get to,” said the Cat.</p>
        <p>“I don't much care where—” said Alice.</p>
        <p>“Then it doesn't matter which way you go,” said the Cat.</p>
        <p>“—so long as I get <span fontStyle='italic'>somewhere,</span> ” Alice added as an explanation.</p>
        <p>“Oh, you're sure to do that,” said the Cat, “if you only walk long enough.”</p>
        <p>Alice felt that this could not be denied, so she tried another question. “What sort of people live about here?”</p>
        <p>“In That direction,” the Cat said, waving its right paw round, “lives a Hatter: and in That direction,” waving the other paw, “lives a March Hare. Visit either you like: they're both mad.”</p>
        <p>“But I don't want to go among mad people,” Alice remarked.</p>
        <p>“Oh, you can't help that,” said the Cat: “we're all mad here. I'm mad. You're mad.”</p>
        <p>“How do you know I'm mad?” said Alice.</p>
        <p>“You must be,” said the Cat, “or you wouldn't have come here.”</p>
        <p>Alice didn't think that proved it at all; however, she went on “And how do you know that you're mad?”</p>
        <p>“To begin with,” said the Cat, “a dog's not mad. You grant that?”</p>
        <p>“I suppose so,” said Alice.</p>
        <p>“Well, then,” the Cat went on, “you see, a dog growls when it's angry, and wags its tail when it's pleased. Now I growl when I'm pleased, and wag my tail when I'm angry. Therefore I'm mad.”</p>
        <p>“I call it purring, not growling,” said Alice.</p>
        <p>“Call it what you like,” said the Cat. “Do you play croquet with the Queen to-day?”</p>
        <p>“I should like it very much,” said Alice, “but I haven't been invited yet.”</p>
        <p>“You'll see me there,” said the Cat, and vanished.</p>
        <p>Alice was not much surprised at this, she was getting so used to queer things happening. While she was looking at the place where it had been, it suddenly appeared again.</p>
        <p>“By-the-bye, what became of the baby?” said the Cat. “I'd nearly forgotten to ask.”</p>
        <p>“It turned into a pig,” Alice quietly said, just as if it had come back in a natural way.</p>
        <p>“I thought it would,” said the Cat, and vanished again.</p>
        <p>Alice waited a little, half expecting to see it again, but it did not appear, and after a minute or two she walked on in the direction in which the March Hare was said to live. “I've seen hatters before,” she said to herself; “the March Hare will be much the most interesting, and perhaps as this is May it won't be raving mad—at least not so mad as it was in March.” As she said this, she looked up, and there was the Cat again, sitting on a branch of a tree.</p>
        <p>“Did you say pig, or fig?” said the Cat.</p>
        <p>“I said pig,” replied Alice; “and I wish you wouldn't keep appearing and vanishing so suddenly: you make one quite giddy.”</p>
        <p>“All right,” said the Cat; and this time it vanished quite slowly, beginning with the end of the tail, and ending with the grin, which remained some time after the rest of it had gone.</p>
        <p>“Well! I've often seen a cat without a grin,” thought Alice; “but a grin without a cat! It's the most curious thing I ever saw in my life!”</p>
        <p>She had not gone much farther before she came in sight of the house of the March Hare: she thought it must be the right house, because the chimneys were shaped like ears and the roof was thatched with fur. It was so large a house, that she did not like to go nearer till she had nibbled some more of the lefthand bit of mushroom, and raised herself to about two feet high: even then she walked up towards it rather timidly, saying to herself “Suppose it should be raving mad after all! I almost wish I'd gone to see the Hatter instead!”</p> 
		</TextFlow>
		
		static public const chapter7:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter VII</p>
        <p textAlign='center' fontSize='24'>A Mad Tea-Party</p>
        <p>There was a table set out under a tree in front of the house, and the March Hare and the Hatter were having tea at it: a Dormouse was sitting between them, fast asleep, and the other two were using it as a cushion, resting their elbows on it, and talking over its head. 'Very uncomfortable for the Dormouse,' thought Alice; 'only, as it's asleep, I suppose it doesn't mind.'</p>
        <p>The table was a large one, but the three were all crowded together at one corner of it: 'No room! No room!' they cried out when they saw Alice coming. 'There's Plenty of room!' said Alice indignantly, and she sat down in a large arm-chair at one end of the table.</p>
        <p>'Have some wine,' the March Hare said in an encouraging tone.</p>
        <p>Alice looked all round the table, but there was nothing on it but tea. 'I don't see any wine,' she remarked.</p>
        <p>'There isn't any,' said the March Hare.</p>
        <p>'Then it wasn't very civil of you to offer it,' said Alice angrily.</p>
        <p>'It wasn't very civil of you to sit down without being invited,' said the March Hare.</p>
        <p>'I didn't know it was Your table,' said Alice; 'it's laid for a great many more than three.'</p>
        <p>'Your hair wants cutting,' said the Hatter. He had been looking at Alice for some time with great curiosity, and this was his first speech.</p>
        <p>'You should learn not to make personal remarks,' Alice said with some severity; 'it's very rude.'</p>
        <p>The Hatter opened his eyes very wide on hearing this; but all he Said was, 'Why is a raven like a writing-desk?'</p>
        <p>'Come, we shall have some fun now!' thought Alice. 'I'm glad they've begun asking riddles.--I believe I can guess that,' she added aloud.</p>
        <p>'Do you mean that you think you can find out the answer to it?' said the March Hare.</p>
        <p>'Exactly so,' said Alice.</p>
        <p>'Then you should say what you mean,' the March Hare went on.</p>
        <p>'I do,' Alice hastily replied; 'at least--at least I mean what I say--that's the same thing, you know.'</p>
        <p>'Not the same thing a bit!' said the Hatter. 'You might just as well say that 'I see what I eat' is the same thing as 'I eat what I see'!'</p>
        <p>'You might just as well say,' added the March Hare, 'that 'I like what I get' is the same thing as 'I get what I like'!'</p>
        <p>'You might just as well say,' added the Dormouse, who seemed to be talking in his sleep, 'that 'I breathe when I sleep' is the same thing as 'I sleep when I breathe'!'</p>
        <p>'It Is the same thing with you,' said the Hatter, and here the conversation dropped, and the party sat silent for a minute, while Alice thought over all she could remember about ravens and writing-desks, which wasn't much.</p>
        <p>The Hatter was the first to break the silence. 'What day of the month is it?' he said, turning to Alice: he had taken his watch out of his pocket, and was looking at it uneasily, shaking it every now and then, and holding it to his ear.</p>
        <p>Alice considered a little, and then said 'The fourth.'</p>
        <p>'Two days wrong!' sighed the Hatter. 'I told you butter wouldn't suit the works!' he added looking angrily at the March Hare.</p>
        <p>'It was the Best butter,' the March Hare meekly replied.</p>
        <p>'Yes, but some crumbs must have got in as well,' the Hatter grumbled: 'you shouldn't have put it in with the bread-knife.'</p>
        <p>The March Hare took the watch and looked at it gloomily: then he dipped it into his cup of tea, and looked at it again: but he could think of nothing better to say than his first remark, 'It was the Best butter, you know.'</p>
        <p>Alice had been looking over his shoulder with some curiosity. 'What a funny watch!' she remarked. 'It tells the day of the month, and doesn't tell what o'clock it is!'</p>
        <p>'Why should it?' muttered the Hatter. 'Does Your watch tell you what year it is?'</p>
        <p>'Of course not,' Alice replied very readily: 'but that's because it stays the same year for such a long time together.'</p>
        <p>'Which is just the case with Mine,' said the Hatter.</p>
        <p>Alice felt dreadfully puzzled. The Hatter's remark seemed to have no sort of meaning in it, and yet it was certainly English. 'I don't quite understand you,' she said, as politely as she could.</p>
        <p>'The Dormouse is asleep again,' said the Hatter, and he poured a little hot tea upon its nose.</p>
        <p>The Dormouse shook its head impatiently, and said, without opening its eyes, 'Of course, of course; just what I was going to remark myself.'</p>
        <p>'Have you guessed the riddle yet?' the Hatter said, turning to Alice again.</p>
        <p>'No, I give it up,' Alice replied: 'what's the answer?'</p>
        <p>'I haven't the slightest idea,' said the Hatter.</p>
        <p>'Nor I,' said the March Hare.</p>
        <p>Alice sighed wearily. 'I think you might do something better with the time,' she said, 'than waste it in asking riddles that have no answers.'</p>
        <p>'If you knew Time as well as I do,' said the Hatter, 'you wouldn't talk about wasting It. It's Him.'</p>
        <p>'I don't know what you mean,' said Alice.</p>
        <p>'Of course you don't!' the Hatter said, tossing his head contemptuously. 'I dare say you never even spoke to Time!'</p>
        <p>'Perhaps not,' Alice cautiously replied: 'but I know I have to beat time when I learn music.'</p>
        <p>'Ah! that accounts for it,' said the Hatter. 'He won't stand beating. Now, if you only kept on good terms with him, he'd do almost anything you liked with the clock. For instance, suppose it were nine o'clock in the morning, just time to begin lessons: you'd only have to whisper a hint to Time, and round goes the clock in a twinkling! Half-past one, time for dinner!'</p>
        <p>('I only wish it was,' the March Hare said to itself in a whisper.)</p>
        <p>'That would be grand, certainly,' said Alice thoughtfully: 'but then--I shouldn't be hungry for it, you know.'</p>
        <p>'Not at first, perhaps,' said the Hatter: 'but you could keep it to half-past one as long as you liked.'</p>
        <p>'Is that the way You manage?' Alice asked.</p>
        <p>The Hatter shook his head mournfully. 'Not I!' he replied. 'We quarrelled last March--just before He went mad, you know--' (pointing with his tea spoon at the March Hare,) '--it was at the great concert given by the Queen of Hearts, and I had to sing</p>'Twinkle, twinkle, little bat!How I wonder what you're at!'<p>You know the song, perhaps?'</p>
        <p>'I've heard something like it,' said Alice.</p>
        <p>'It goes on, you know,' the Hatter continued, 'in this way:--</p>'Up above the world you fly,Like a tea-tray in the sky.Twinkle, twinkle--''<p>Here the Dormouse shook itself, and began singing in its sleep 'Twinkle, twinkle, twinkle, twinkle--' and went on so long that they had to pinch it to make it stop.</p>
        <p>'Well, I'd hardly finished the first verse,' said the Hatter, 'when the Queen jumped up and bawled out, 'He's murdering the time! Off with his head!''</p>
        <p>'How dreadfully savage!' exclaimed Alice.</p>
        <p>'And ever since that,' the Hatter went on in a mournful tone, 'he won't do a thing I ask! It's always six o'clock now.'</p>
        <p>A bright idea came into Alice's head. 'Is that the reason so many tea-things are put out here?' she asked.</p>
        <p>'Yes, that's it,' said the Hatter with a sigh: 'it's always tea-time, and we've no time to wash the things between whiles.'</p>
        <p>'Then you keep moving round, I suppose?' said Alice.</p>
        <p>'Exactly so,' said the Hatter: 'as the things get used up.'</p>
        <p>'But what happens when you come to the beginning again?' Alice ventured to ask.</p>
        <p>'Suppose we change the subject,' the March Hare interrupted, yawning. 'I'm getting tired of this. I vote the young lady tells us a story.'</p>
        <p>'I'm afraid I don't know one,' said Alice, rather alarmed at the proposal.</p>
        <p>'Then the Dormouse shall!' they both cried. 'Wake up, Dormouse!' And they pinched it on both sides at once.</p>
        <p>The Dormouse slowly opened his eyes. 'I wasn't asleep,' he said in a hoarse, feeble voice: 'I heard every word you fellows were saying.'</p>
        <p>'Tell us a story!' said the March Hare.</p>
        <p>'Yes, please do!' pleaded Alice.</p>
        <p>'And be quick about it,' added the Hatter, 'or you'll be asleep again before it's done.'</p>
        <p>'Once upon a time there were three little sisters,' the Dormouse began in a great hurry; 'and their names were Elsie, Lacie, and Tillie; and they lived at the bottom of a well--'</p>
        <p>'What did they live on?' said Alice, who always took a great interest in questions of eating and drinking.</p>
        <p>'They lived on treacle,' said the Dormouse, after thinking a minute or two.</p>
        <p>'They couldn't have done that, you know,' Alice gently remarked; 'they'd have been ill.'</p>
        <p>'So they were,' said the Dormouse; 'Very ill.'</p>
        <p>Alice tried to fancy to herself what such an extraordinary ways of living would be like, but it puzzled her too much, so she went on: 'But why did they live at the bottom of a well?'</p>
        <p>'Take some more tea,' the March Hare said to Alice, very earnestly.</p>
        <p>'I've had nothing yet,' Alice replied in an offended tone, 'so I can't take more.'</p>
        <p>'You mean you can't take LESS,' said the Hatter: 'it's very easy to take MORE than nothing.'</p>
        <p>'Nobody asked Your opinion,' said Alice.</p>
        <p>'Who's making personal remarks now?' the Hatter asked triumphantly.</p>
        <p>Alice did not quite know what to say to this: so she helped herself to some tea and bread-and-butter, and then turned to the Dormouse, and repeated her question. 'Why did they live at the bottom of a well?'</p>
        <p>The Dormouse again took a minute or two to think about it, and then said, 'It was a treacle-well.'</p>
        <p>'There's no such thing!' Alice was beginning very angrily, but the Hatter and the March Hare went 'Sh! sh!' and the Dormouse sulkily remarked, 'If you can't be civil, you'd better finish the story for yourself.'</p>
        <p>'No, please go on!' Alice said very humbly; 'I won't interrupt again. I dare say there may be One.'</p>
        <p>'One, indeed!' said the Dormouse indignantly. However, he consented to go on. 'And so these three little sisters--they were learning to draw, you know--'</p>
        <p>'What did they draw?' said Alice, quite forgetting her promise.</p>
        <p>'Treacle,' said the Dormouse, without considering at all this time.</p>
        <p>'I want a clean cup,' interrupted the Hatter: 'let's all move one place on.'</p>
        <p>He moved on as he spoke, and the Dormouse followed him: the March Hare moved into the Dormouse's place, and Alice rather unwillingly took the place of the March Hare. The Hatter was the only one who got any advantage from the change: and Alice was a good deal worse off than before, as the March Hare had just upset the milk-jug into his plate.</p>
        <p>Alice did not wish to offend the Dormouse again, so she began very cautiously: 'But I don't understand. Where did they draw the treacle from?'</p>
        <p>'You can draw water out of a water-well,' said the Hatter; 'so I should think you could draw treacle out of a treacle-well--eh, stupid?'</p>
        <p>'But they were IN the well,' Alice said to the Dormouse, not choosing to notice this last remark.</p>
        <p>'Of course they were', said the Dormouse; '--well in.'</p>
        <p>This answer so confused poor Alice, that she let the Dormouse go on for some time without interrupting it.</p>
        <p>'They were learning to draw,' the Dormouse went on, yawning and rubbing its eyes, for it was getting very sleepy; 'and they drew all manner of things--everything that begins with an M--'</p>
        <p>'Why with an M?' said Alice.</p>
        <p>'Why not?' said the March Hare.</p>
        <p>Alice was silent.</p>
        <p>The Dormouse had closed its eyes by this time, and was going off into a doze; but, on being pinched by the Hatter, it woke up again with a little shriek, and went on: '--that begins with an M, such as mouse-traps, and the moon, and memory, and muchness-- you know you say things are 'much of a muchness'--did you ever see such a thing as a drawing of a muchness?'</p>
        <p>'Really, now you ask me,' said Alice, very much confused, 'I don't think--'</p>
        <p>'Then you shouldn't talk,' said the Hatter.</p>
        <p>This piece of rudeness was more than Alice could bear: she got up in great disgust, and walked off; the Dormouse fell asleep instantly, and neither of the others took the least notice of her going, though she looked back once or twice, half hoping that they would call after her: the last time she saw them, they were trying to put the Dormouse into the teapot.</p>
        <p>'At any rate I'll never go There again!' said Alice as she picked her way through the wood. 'It's the stupidest tea-party I ever was at in all my life!'</p>
        <p>Just as she said this, she noticed that one of the trees had a door leading right into it. 'That's very curious!' she thought. 'But everything's curious today. I think I may as well go in at once.' And in she went.</p>
        <p>Once more she found herself in the long hall, and close to the little glass table. 'Now, I'll manage better this time,' she said to herself, and began by taking the little golden key, and unlocking the door that led into the garden. Then she went to work nibbling at the mushroom (she had kept a piece of it in her pocket) till she was about a foot high: then she walked down the little passage: and Then--she found herself at last in the beautiful garden, among the bright flower-beds and the cool fountains.</p> 
		</TextFlow>
		
		static public const chapter8:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter VIII</p>
        <p textAlign='center' fontSize='24'>The Queen's Croquet-Ground</p>
        <p>A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were three gardeners at it, busily painting them red. Alice thought this a very curious thing, and she went nearer to watch them, and just as she came up to them she heard one of them say, 'Look out now, Five! Don't go splashing paint over me like that!'</p>
        <p>'I couldn't help it,' said Five, in a sulky tone; 'Seven jogged my elbow.'</p>
        <p>On which Seven looked up and said, 'That's right, Five! Always lay the blame on others!'</p>
        <p>'You'd better not talk!' said Five. 'I heard the Queen say only yesterday you deserved to be beheaded!'</p>
        <p>'What for?' said the one who had spoken first.</p>
        <p>'That's none of Your business, Two!' said Seven.</p>
        <p>'Yes, it Is his business!' said Five, 'and I'll tell him--it was for bringing the cook tulip-roots instead of onions.'</p>
        <p>Seven flung down his brush, and had just begun 'Well, of all the unjust things--' when his eye chanced to fall upon Alice, as she stood watching them, and he checked himself suddenly: the others looked round also, and all of them bowed low.</p>
        <p>'Would you tell me,' said Alice, a little timidly, 'why you are painting those roses?'</p>
        <p>Five and Seven said nothing, but looked at Two. Two began in a low voice, 'Why the fact is, you see, Miss, this here ought to have been a RED rose-tree, and we put a white one in by mistake; and if the Queen was to find it out, we should all have our heads cut off, you know. So you see, Miss, we're doing our best, afore she comes, to--' At this moment Five, who had been anxiously looking across the garden, called out 'The Queen! The Queen!' and the three gardeners instantly threw themselves flat upon their faces. There was a sound of many footsteps, and Alice looked round, eager to see the Queen.</p>
        <p>First came ten soldiers carrying clubs; these were all shaped like the three gardeners, oblong and flat, with their hands and feet at the corners: next the ten courtiers; these were ornamented all over with diamonds, and walked two and two, as the soldiers did. After these came the royal children; there were ten of them, and the little dears came jumping merrily along hand in hand, in couples: they were all ornamented with hearts. Next came the guests, mostly Kings and Queens, and among them Alice recognised the White Rabbit: it was talking in a hurried nervous manner, smiling at everything that was said, and went by without noticing her. Then followed the Knave of Hearts, carrying the King's crown on a crimson velvet cushion; and, last of all this grand procession, came The King And Queen Of Hearts.</p>
        <p>Alice was rather doubtful whether she ought not to lie down on her face like the three gardeners, but she could not remember ever having heard of such a rule at processions; 'and besides, what would be the use of a procession,' thought she, 'if people had all to lie down upon their faces, so that they couldn't see it?' So she stood still where she was, and waited.</p>
        <p>When the procession came opposite to Alice, they all stopped and looked at her, and the Queen said severely 'Who is this?' She said it to the Knave of Hearts, who only bowed and smiled in reply.</p>
        <p>'Idiot!' said the Queen, tossing her head impatiently; and, turning to Alice, she went on, 'What's your name, child?'</p>
        <p>'My name is Alice, so please your Majesty,' said Alice very politely; but she added, to herself, 'Why, they're only a pack of cards, after all. I needn't be afraid of them!'</p>
        <p>'And who are These?' said the Queen, pointing to the three gardeners who were lying round the rosetree; for, you see, as they were lying on their faces, and the pattern on their backs was the same as the rest of the pack, she could not tell whether they were gardeners, or soldiers, or courtiers, or three of her own children.</p>
        <p>'How should I know?' said Alice, surprised at her own courage. 'It's no business of Mine.'</p>
        <p>The Queen turned crimson with fury, and, after glaring at her for a moment like a wild beast, screamed 'Off with her head! Off--'</p>
        <p>'Nonsense!' said Alice, very loudly and decidedly, and the Queen was silent.</p>
        <p>The King laid his hand upon her arm, and timidly said 'Consider, my dear: she is only a child!'</p>
        <p>The Queen turned angrily away from him, and said to the Knave 'Turn them over!'</p>
        <p>The Knave did so, very carefully, with one foot.</p>
        <p>'Get up!' said the Queen, in a shrill, loud voice, and the three gardeners instantly jumped up, and began bowing to the King, the Queen, the royal children, and everybody else.</p>
        <p>'Leave off that!' screamed the Queen. 'You make me giddy.' And then, turning to the rose-tree, she went on, 'What Have you been doing here?'</p>
        <p>'May it please your Majesty,' said Two, in a very humble tone, going down on one knee as he spoke, 'we were trying--'</p>
        <p>'I see!' said the Queen, who had meanwhile been examining the roses. 'Off with their heads!' and the procession moved on, three of the soldiers remaining behind to execute the unfortunate gardeners, who ran to Alice for protection.</p>
        <p>'You shan't be beheaded!' said Alice, and she put them into a large flower-pot that stood near. The three soldiers wandered about for a minute or two, looking for them, and then quietly marched off after the others.</p>
        <p>'Are their heads off?' shouted the Queen.</p>
        <p>'Their heads are gone, if it please your Majesty!' the soldiers shouted in reply.</p>
        <p>'That's right!' shouted the Queen. 'Can you play croquet?'</p>
        <p>The soldiers were silent, and looked at Alice, as the question was evidently meant for her.</p>
        <p>'Yes!' shouted Alice.</p>
        <p>'Come on, then!' roared the Queen, and Alice joined the procession, wondering very much what would happen next.</p>
        <p>'It's--it's a very fine day!' said a timid voice at her side. She was walking by the White Rabbit, who was peeping anxiously into her face.</p>
        <p>'Very,' said Alice: '--where's the Duchess?'</p>
        <p>'Hush! Hush!' said the Rabbit in a low, hurried tone. He looked anxiously over his shoulder as he spoke, and then raised himself upon tiptoe, put his mouth close to her ear, and whispered 'She's under sentence of execution.'</p>
        <p>'What for?' said Alice.</p>
        <p>'Did you say 'What a pity!'?' the Rabbit asked.</p>
        <p>'No, I didn't,' said Alice: 'I don't think it's at all a pity. I said 'What for?''</p>
        <p>'She boxed the Queen's ears--' the Rabbit began. Alice gave a little scream of laughter. 'Oh, hush!' the Rabbit whispered in a frightened tone. 'The Queen will hear you! You see, she came rather late, and the Queen said--'</p>
        <p>'Get to your places!' shouted the Queen in a voice of thunder, and people began running about in all directions, tumbling up against each other; however, they got settled down in a minute or two, and the game began. Alice thought she had never seen such a curious croquet-ground in her life; it was all ridges and furrows; the balls were live hedgehogs, the mallets live flamingoes, and the soldiers had to double themselves up and to stand on their hands and feet, to make the arches.</p>
        <p>The chief difficulty Alice found at first was in managing her flamingo: she succeeded in getting its body tucked away, comfortably enough, under her arm, with its legs hanging down, but generally, just as she had got its neck nicely straightened out, and was going to give the hedgehog a blow with its head, it Would twist itself round and look up in her face, with such a puzzled expression that she could not help bursting out laughing: and when she had got its head down, and was going to begin again, it was very provoking to find that the hedgehog had unrolled itself, and was in the act of crawling away: besides all this, there was generally a ridge or furrow in the way wherever she wanted to send the hedgehog to, and, as the doubled-up soldiers were always getting up and walking off to other parts of the ground, Alice soon came to the conclusion that it was a very difficult game indeed.</p>
        <p>The players all played at once without waiting for turns, quarrelling all the while, and fighting for the hedgehogs; and in a very short time the Queen was in a furious passion, and went stamping about, and shouting 'Off with his head!' or 'Off with her head!' about once in a minute.</p>
        <p>Alice began to feel very uneasy: to be sure, she had not as yet had any dispute with the Queen, but she knew that it might happen any minute, 'and then,' thought she, 'what would become of me? They're dreadfully fond of beheading people here; the great wonder is, that there's any one left alive!'</p>
        <p>She was looking about for some way of escape, and wondering whether she could get away without being seen, when she noticed a curious appearance in the air: it puzzled her very much at first, but, after watching it a minute or two, she made it out to be a grin, and she said to herself 'It's the Cheshire Cat: now I shall have somebody to talk to.'</p>
        <p>'How are you getting on?' said the Cat, as soon as there was mouth enough for it to speak with.</p>
        <p>Alice waited till the eyes appeared, and then nodded. 'It's no use speaking to it,' she thought, 'till its ears have come, or at least one of them.' In another minute the whole head appeared, and then Alice put down her flamingo, and began an account of the game, feeling very glad she had someone to listen to her. The Cat seemed to think that there was enough of it now in sight, and no more of it appeared.</p>
        <p>'I don't think they play at all fairly,' Alice began, in rather a complaining tone, 'and they all quarrel so dreadfully one can't hear oneself speak--and they don't seem to have any rules in particular; at least, if there are, nobody attends to them--and you've no idea how confusing it is all the things being alive; for instance, there's the arch I've got to go through next walking about at the other end of the ground--and I should have croqueted the Queen's hedgehog just now, only it ran away when it saw mine coming!'</p>
        <p>'How do you like the Queen?' said the Cat in a low voice.</p>
        <p>'Not at all,' said Alice: 'she's so extremely--' Just then she noticed that the Queen was close behind her, listening: so she went on, '--likely to win, that it's hardly worth while finishing the game.'</p>
        <p>The Queen smiled and passed on.</p>
        <p>'Who Are you talking to?' said the King, going up to Alice, and looking at the Cat's head with great curiosity.</p>
        <p>'It's a friend of mine--a Cheshire Cat,' said Alice: 'allow me to introduce it.'</p>
        <p>'I don't like the look of it at all,' said the King: 'however, it may kiss my hand if it likes.'</p>
        <p>'I'd rather not,' the Cat remarked.</p>
        <p>'Don't be impertinent,' said the King, 'and don't look at me like that!' He got behind Alice as he spoke.</p>
        <p>'A cat may look at a king,' said Alice. 'I've read that in some book, but I don't remember where.'</p>
        <p>'Well, it must be removed,' said the King very decidedly, and he called the Queen, who was passing at the moment, 'My dear! I wish you would have this cat removed!'</p>
        <p>The Queen had only one way of settling all difficulties, great or small. 'Off with his head!' she said, without even looking round.</p>
        <p>'I'll fetch the executioner myself,' said the King eagerly, and he hurried off.</p>
        <p>Alice thought she might as well go back, and see how the game was going on, as she heard the Queen's voice in the distance, screaming with passion. She had already heard her sentence three of the players to be executed for having missed their turns, and she did not like the look of things at all, as the game was in such confusion that she never knew whether it was her turn or not. So she went in search of her hedgehog.</p>
        <p>The hedgehog was engaged in a fight with another hedgehog, which seemed to Alice an excellent opportunity for croqueting one of them with the other: the only difficulty was, that her flamingo was gone across to the other side of the garden, where Alice could see it trying in a helpless sort of way to fly up into a tree.</p>
        <p>By the time she had caught the flamingo and brought it back, the fight was over, and both the hedgehogs were out of sight: 'but it doesn't matter much,' thought Alice, 'as all the arches are gone from this side of the ground.' So she tucked it away under her arm, that it might not escape again, and went back for a little more conversation with her friend.</p>
        <p>When she got back to the Cheshire Cat, she was surprised to find quite a large crowd collected round it: there was a dispute going on between the executioner, the King, and the Queen, who were all talking at once, while all the rest were quite silent, and looked very uncomfortable.</p>
        <p>The moment Alice appeared, she was appealed to by all three to settle the question, and they repeated their arguments to her, though, as they all spoke at once, she found it very hard indeed to make out exactly what they said.</p>
        <p>The executioner's argument was, that you couldn't cut off a head unless there was a body to cut it off from: that he had never had to do such a thing before, and he wasn't going to begin at HIS time of life.</p>
        <p>The King's argument was, that anything that had a head could be beheaded, and that you weren't to talk nonsense.</p>
        <p>The Queen's argument was, that if something wasn't done about it in less than no time she'd have everybody executed, all round. (It was this last remark that had made the whole party look so grave and anxious.)</p>
        <p>Alice could think of nothing else to say but 'It belongs to the Duchess: you'd better ask Her about it.'</p>
        <p>'She's in prison,' the Queen said to the executioner: 'fetch her here.' And the executioner went off like an arrow.</p>
        <p>The Cat's head began fading away the moment he was gone, and, by the time he had come back with the Dutchess, it had entirely disappeared; so the King and the executioner ran wildly up and down looking for it, while the rest of the party went back to the game.</p> 
		</TextFlow>
		
		static public const chapter9:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter IX</p>
        <p textAlign='center' fontSize='24'>The Mock Turtle's Story</p>
        <p>'You can't think how glad I am to see you again, you dear old thing!' said the Duchess, as she tucked her arm affectionately into Alice's, and they walked off together.</p>
        <p>Alice was very glad to find her in such a pleasant temper, and thought to herself that perhaps it was only the pepper that had made her so savage when they met in the kitchen.</p>
        <p>'When I'M a Duchess,' she said to herself, (not in a very hopeful tone though), 'I won't have any pepper in my kitchen At All. Soup does very well without--Maybe it's always pepper that makes people hot-tempered,' she went on, very much pleased at having found out a new kind of rule, 'and vinegar that makes them sour--and camomile that makes them bitter--and--and barley-sugar and such things that make children sweet-tempered. I only wish people knew that: then they wouldn't be so stingy about it, you know--'</p>
        <p>She had quite forgotten the Duchess by this time, and was a little startled when she heard her voice close to her ear. 'You're thinking about something, my dear, and that makes you forget to talk. I can't tell you just now what the moral of that is, but I shall remember it in a bit.'</p>
        <p>'Perhaps it hasn't one,' Alice ventured to remark.</p>
        <p>'Tut, tut, child!' said the Duchess. 'Everything's got a moral, if only you can find it.' And she squeezed herself up closer to Alice's side as she spoke.</p>
        <p>Alice did not much like keeping so close to her: first, because the Duchess was Very ugly; and secondly, because she was exactly the right height to rest her chin upon Alice's shoulder, and it was an uncomfortably sharp chin. However, she did not like to be rude, so she bore it as well as she could.</p>
        <p>'The game's going on rather better now,' she said, by way of keeping up the conversation a little.</p>
        <p>''Tis so,' said the Duchess: 'and the moral of that is--'Oh, 'tis love, 'tis love, that makes the world go round!''</p>
        <p>'Somebody said,' Alice whispered, 'that it's done by everybody minding their own business!'</p>
        <p>'Ah, well! It means much the same thing,' said the Duchess, digging her sharp little chin into Alice's shoulder as she added, 'and the moral of That is--'Take care of the sense, and the sounds will take care of themselves.''</p>
        <p>'How fond she is of finding morals in things!' Alice thought to herself.</p>
        <p>'I dare say you're wondering why I don't put my arm round your waist,' the Duchess said after a pause: 'the reason is, that I'm doubtful about the temper of your flamingo. Shall I try the experiment?'</p>
        <p>'HE might bite,' Alice cautiously replied, not feeling at all anxious to have the experiment tried.</p>
        <p>'Very true,' said the Duchess: 'flamingoes and mustard both bite. And the moral of that is--'Birds of a feather flock together.''</p>
        <p>'Only mustard isn't a bird,' Alice remarked.</p>
        <p>'Right, as usual,' said the Duchess: 'what a clear way you have of putting things!'</p>
        <p>'It's a mineral, I Think,' said Alice.</p>
        <p>'Of course it is,' said the Duchess, who seemed ready to agree to everything that Alice said; 'there's a large mustard-mine near here. And the moral of that is--'The more there is of mine, the less there is of yours.''</p>
        <p>'Oh, I know!' exclaimed Alice, who had not attended to this last remark, 'it's a vegetable. It doesn't look like one, but it is.'</p>
        <p>'I quite agree with you,' said the Duchess; 'and the moral of that is--'Be what you would seem to be'--or if you'd like it put more simply--'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.''</p>
        <p>'I think I should understand that better,' Alice said very politely, 'if I had it written down: but I can't quite follow it as you say it.'</p>
        <p>'That's nothing to what I could say if I chose,' the Duchess replied, in a pleased tone.</p>
        <p>'Pray don't trouble yourself to say it any longer than that,' said Alice.</p>
        <p>'Oh, don't talk about trouble!' said the Duchess. 'I make you a present of everything I've said as yet.'</p>
        <p>'A cheap sort of present!' thought Alice. 'I'm glad they don't give birthday presents like that!' But she did not venture to say it out loud.</p>
        <p>'Thinking again?' the Duchess asked, with another dig of her sharp little chin.</p>
        <p>'I've a right to think,' said Alice sharply, for she was beginning to feel a little worried.</p>
        <p>'Just about as much right,' said the Duchess, 'as pigs have to fly; and the m--'</p>
        <p>But here, to Alice's great surprise, the Duchess's voice died away, even in the middle of her favourite word 'moral,' and the arm that was linked into hers began to tremble. Alice looked up, and there stood the Queen in front of them, with her arms folded, frowning like a thunderstorm.</p>
        <p>'A fine day, your Majesty!' the Duchess began in a low, weak voice.</p>
        <p>'Now, I give you fair warning,' shouted the Queen, stamping on the ground as she spoke; 'either you or your head must be off, and that in about half no time! Take your choice!'</p>
        <p>The Duchess took her choice, and was gone in a moment.</p>
        <p>'Let's go on with the game,' the Queen said to Alice; and Alice was too much frightened to say a word, but slowly followed her back to the croquet-ground.</p>
        <p>The other guests had taken advantage of the Queen's absence, and were resting in the shade: however, the moment they saw her, they hurried back to the game, the Queen merely remarking that a moment's delay would cost them their lives.</p>
        <p>All the time they were playing the Queen never left off quarrelling with the other players, and shouting 'Off with his head!' or 'Off with her head!' Those whom she sentenced were taken into custody by the soldiers, who of course had to leave off being arches to do this, so that by the end of half an hour or so there were no arches left, and all the players, except the King, the Queen, and Alice, were in custody and under sentence of execution.</p>
        <p>Then the Queen left off, quite out of breath, and said to Alice, 'Have you seen the Mock Turtle yet?'</p>
        <p>'No,' said Alice. 'I don't even know what a Mock Turtle is.'</p>
        <p>'It's the thing Mock Turtle Soup is made from,' said the Queen.</p>
        <p>'I never saw one, or heard of one,' said Alice.</p>
        <p>'Come on, then,' said the Queen, 'and he shall tell you his history,'</p>
        <p>As they walked off together, Alice heard the King say in a low voice, to the company generally, 'You are all pardoned.' 'Come, That's a good thing!' she said to herself, for she had felt quite unhappy at the number of executions the Queen had ordered.</p>
        <p>They very soon came upon a Gryphon, lying fast asleep in the sun. (IF you don't know what a Gryphon is, look at the picture.) 'Up, lazy thing!' said the Queen, 'and take this young lady to see the Mock Turtle, and to hear his history. I must go back and see after some executions I have ordered'; and she walked off, leaving Alice alone with the Gryphon. Alice did not quite like the look of the creature, but on the whole she thought it would be quite as safe to stay with it as to go after that savage Queen: so she waited.</p>
        <p>The Gryphon sat up and rubbed its eyes: then it watched the Queen till she was out of sight: then it chuckled. 'What fun!' said the Gryphon, half to itself, half to Alice.</p>
        <p>'What Is the fun?' said Alice.</p>
        <p>'Why, She,' said the Gryphon. 'It's all her fancy, that: they never executes nobody, you know. Come on!'</p>
        <p>'Everybody says 'come on!' here,' thought Alice, as she went slowly after it: 'I never was so ordered about in all my life, never!'</p>
        <p>They had not gone far before they saw the Mock Turtle in the distance, sitting sad and lonely on a little ledge of rock, and, as they came nearer, Alice could hear him sighing as if his heart would break. She pitied him deeply. 'What is his sorrow?' she asked the Gryphon, and the Gryphon answered, very nearly in the same words as before, 'It's all his fancy, that: he hasn't got no sorrow, you know. Come on!'</p>
        <p>So they went up to the Mock Turtle, who looked at them with large eyes full of tears, but said nothing.</p>
        <p>'This here young lady,' said the Gryphon, 'she wants for to know your history, she do.'</p>
        <p>'I'll tell it her,' said the Mock Turtle in a deep, hollow tone: 'sit down, both of you, and don't speak a word till I've finished.'</p>
        <p>So they sat down, and nobody spoke for some minutes. Alice thought to herself, 'I don't see how he can EVEN finish, if he doesn't begin.' But she waited patiently.</p>
        <p>'Once,' said the Mock Turtle at last, with a deep sigh, 'I was a real Turtle.'</p>
        <p>These words were followed by a very long silence, broken only by an occasional exclamation of 'Hjckrrh!' from the Gryphon, and the constant heavy sobbing of the Mock Turtle. Alice was very nearly getting up and saying, 'Thank you, sir, for your interesting story,' but she could not help thinking there Must be more to come, so she sat still and said nothing.</p>
        <p>'When we were little,' the Mock Turtle went on at last, more calmly, though still sobbing a little now and then, 'we went to school in the sea. The master was an old Turtle--we used to call him Tortoise--'</p>
        <p>'Why did you call him Tortoise, if he wasn't one?' Alice asked.</p>
        <p>'We called him Tortoise because he taught us,' said the Mock Turtle angrily: 'really you are very dull!'</p>
        <p>'You ought to be ashamed of yourself for asking such a simple question,' added the Gryphon; and then they both sat silent and looked at poor Alice, who felt ready to sink into the earth. At last the Gryphon said to the Mock Turtle, 'Drive on, old fellow! Don't be all day about it!' and he went on in these words:</p>
        <p>'Yes, we went to school in the sea, though you mayn't believe it--'</p>
        <p>'I never said I didn't!' interrupted Alice.</p>
        <p>'You did,' said the Mock Turtle.</p>
        <p>'Hold your tongue!' added the Gryphon, before Alice could speak again. The Mock Turtle went on.</p>
        <p>'We had the best of educations--in fact, we went to school every day--'</p>
        <p>'I'VE been to a day-school, too,' said Alice; 'you needn't be so proud as all that.'</p>
        <p>'With extras?' asked the Mock Turtle a little anxiously.</p>
        <p>'Yes,' said Alice, 'we learned French and music.'</p>
        <p>'And washing?' said the Mock Turtle.</p>
        <p>'Certainly not!' said Alice indignantly.</p>
        <p>'Ah! then yours wasn't a really good school,' said the Mock Turtle in a tone of great relief. 'Now at Ours they had at the end of the bill, 'French, music, And Washing--extra.''</p>
        <p>'You couldn't have wanted it much,' said Alice; 'living at the bottom of the sea.'</p>
        <p>'I couldn't afford to learn it.' said the Mock Turtle with a sigh. 'I only took the regular course.'</p>
        <p>'What was that?' inquired Alice.</p>
        <p>'Reeling and Writhing, of course, to begin with,' the Mock Turtle replied; 'and then the different branches of Arithmetic-- Ambition, Distraction, Uglification, and Derision.'</p>
        <p>'I never heard of 'Uglification,'' Alice ventured to say. 'What is it?'</p>
        <p>The Gryphon lifted up both its paws in surprise. 'What! Never heard of uglifying!' it exclaimed. 'You know what to beautify is, I suppose?'</p>
        <p>'Yes,' said Alice doubtfully: 'it means--to--make--anything--prettier.'</p>
        <p>'Well, then,' the Gryphon went on, 'if you don't know what to uglify is, you Are a simpleton.'</p>
        <p>Alice did not feel encouraged to ask any more questions about it, so she turned to the Mock Turtle, and said 'What else had you to learn?'</p>
        <p>'Well, there was Mystery,' the Mock Turtle replied, counting off the subjects on his flappers, '--Mystery, ancient and modern, with Seaography: then Drawling--the Drawling-master was an old conger-eel, that used to come once a week: He taught us Drawling, Stretching, and Fainting in Coils.'</p>
        <p>'What was That like?' said Alice.</p>
        <p>'Well, I can't show it you myself,' the Mock Turtle said: 'I'm too stiff. And the Gryphon never learnt it.'</p>
        <p>'Hadn't time,' said the Gryphon: 'I went to the Classics master, though. He was an old crab, He was.'</p>
        <p>'I never went to him,' the Mock Turtle said with a sigh: 'he taught Laughing and Grief, they used to say.'</p>
        <p>'So he did, so he did,' said the Gryphon, sighing in his turn; and both creatures hid their faces in their paws.</p>
        <p>'And how many hours a day did you do lessons?' said Alice, in a hurry to change the subject.</p>
        <p>'Ten hours the first day,' said the Mock Turtle: 'nine the next, and so on.'</p>
        <p>'What a curious plan!' exclaimed Alice.</p>
        <p>'That's the reason they're called lessons,' the Gryphon remarked: 'because they lessen from day to day.'</p>
        <p>This was quite a new idea to Alice, and she thought it over a little before she made her next remark. 'Then the eleventh day must have been a holiday?'</p>
        <p>'Of course it was,' said the Mock Turtle.</p>
        <p>'And how did you manage on the twelfth?' Alice went on eagerly.</p>
        <p>'That's enough about lessons,' the Gryphon interrupted in a very decided tone: 'tell her something about the games now.'</p> 
		</TextFlow>
		
		static public const chapter10:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter X</p>
        <p textAlign='center' fontSize='24'>The Lobster Quadrille</p>
        <p>The Mock Turtle sighed deeply, and drew the back of one flapper across his eyes. He looked at Alice, and tried to speak, but for a minute or two sobs choked his voice. 'Same as if he had a bone in his throat,' said the Gryphon: and it set to work shaking him and punching him in the back. At last the Mock Turtle recovered his voice, and, with tears running down his cheeks, he went on again:--</p>
        <p>'You may not have lived much under the sea--' ('I haven't,' said Alice)-- 'and perhaps you were never even introduced to a lobster--' (Alice began to say 'I once tasted--' but checked herself hastily, and said 'No, never') '--so you can have no idea what a delightful thing a Lobster Quadrille is!'</p>
        <p>'No, indeed,' said Alice. 'What sort of a dance is it?'</p>
        <p>'Why,' said the Gryphon, 'you first form into a line along the sea-shore--'</p>
        <p>'Two lines!' cried the Mock Turtle. 'Seals, turtles, salmon, and so on; then, when you've cleared all the jelly-fish out of the way--'</p>
        <p>'That generally takes some time,' interrupted the Gryphon.</p>
        <p>'--you advance twice--'</p>
        <p>'Each with a lobster as a partner!' cried the Gryphon.</p>
        <p>'Of course,' the Mock Turtle said: 'advance twice, set to partners--'</p>
        <p>'--change lobsters, and retire in same order,' continued the Gryphon.</p>
        <p>'Then, you know,' the Mock Turtle went on, 'you throw the--'</p>
        <p>'The lobsters!' shouted the Gryphon, with a bound into the air.</p>
        <p>'--as far out to sea as you can--'</p>
        <p>'Swim after them!' screamed the Gryphon.</p>
        <p>'Turn a somersault in the sea!' cried the Mock Turtle, capering wildly about.</p>
        <p>'Change lobster's again!' yelled the Gryphon at the top of its voice.</p>
        <p>'Back to land again, and that's all the first figure,' said the Mock Turtle, suddenly dropping his voice; and the two creatures, who had been jumping about like mad things all this time, sat down again very sadly and quietly, and looked at Alice.</p>
        <p>'It must be a very pretty dance,' said Alice timidly.</p>
        <p>'Would you like to see a little of it?' said the Mock Turtle.</p>
        <p>'Very much indeed,' said Alice.</p>
        <p>'Come, let's try the first figure!' said the Mock Turtle to the Gryphon. 'We can do without lobsters, you know. Which shall sing?'</p>
        <p>'Oh, You sing,' said the Gryphon. 'I've forgotten the words.'</p>
        <p>So they began solemnly dancing round and round Alice, every now and then treading on her toes when they passed too close, and waving their forepaws to mark the time, while the Mock Turtle sang this, very slowly and sadly:--</p>
        <p>''Will you walk a little faster?' said a whiting to a snail. 'There's a porpoise close behind us, and he's treading on my tail. See how eagerly the lobsters and the turtles all advance! They are waiting on the shingle--will you come and join the dance?</p>
        <p>Will you, won't you, will you, won't you, will you join the dance? Will you, won't you, will you, won't you, won't you join the dance?</p>'You can really have no notion how delightful it will beWhen they take us up and throw us, with the lobsters, out to sea!'But the snail replied 'Too far, too far!' and gave a look askance--Said he thanked the whiting kindly, but he would not join the dance.Would not, could not, would not, could not, would not join the dance.Would not, could not, would not, could not, could not join the dance.<p>''What matters it how far we go?' his scaly friend replied. 'There is another shore, you know, upon the other side. The further off from England the nearer is to France-- Then turn not pale, beloved snail, but come and join the dance.</p>Will you, won't you, will you, won't you, will you join the dance?Will you, won't you, will you, won't you, won't you join the dance?''<p>'Thank you, it's a very interesting dance to watch,' said Alice, feeling very glad that it was over at last: 'and I do so like that curious song about the whiting!'</p>
        <p>'Oh, as to the whiting,' said the Mock Turtle, 'they--you've seen them, of course?'</p>
        <p>'Yes,' said Alice, 'I've often seen them at dinn--' she checked herself hastily.</p>
        <p>'I don't know where Dinn may be,' said the Mock Turtle, 'but if you've seen them so often, of course you know what they're like.'</p>
        <p>'I believe so,' Alice replied thoughtfully. 'They have their tails in their mouths--and they're all over crumbs.'</p>
        <p>'You're wrong about the crumbs,' said the Mock Turtle: 'crumbs would all wash off in the sea. But they Have their tails in their mouths; and the reason is--' here the Mock Turtle yawned and shut his eyes.--'Tell her about the reason and all that,' he said to the Gryphon.</p>
        <p>'The reason is,' said the Gryphon, 'that they Would go with the lobsters to the dance. So they got thrown out to sea. So they had to fall a long way. So they got their tails fast in their mouths. So they couldn't get them out again. That's all.'</p>
        <p>'Thank you,' said Alice, 'it's very interesting. I never knew so much about a whiting before.'</p>
        <p>'I can tell you more than that, if you like,' said the Gryphon. 'Do you know why it's called a whiting?'</p>
        <p>'I never thought about it,' said Alice. 'Why?'</p>
        <p>'It Does The Boots And Shoes.' the Gryphon replied very solemnly.</p>
        <p>Alice was thoroughly puzzled. 'Does the boots and shoes!' she repeated in a wondering tone.</p>
        <p>'Why, what are Your shoes done with?' said the Gryphon. 'I mean, what makes them so shiny?'</p>
        <p>Alice looked down at them, and considered a little before she gave her answer. 'They're done with blacking, I believe.'</p>
        <p>'Boots and shoes under the sea,' the Gryphon went on in a deep voice, 'are done with a whiting. Now you know.'</p>
        <p>'And what are they made of?' Alice asked in a tone of great curiosity.</p>
        <p>'Soles and eels, of course,' the Gryphon replied rather impatiently: 'any shrimp could have told you that.'</p>
        <p>'If I'd been the whiting,' said Alice, whose thoughts were still running on the song, 'I'd have said to the porpoise, 'Keep back, please: we don't want You with us!''</p>
        <p>'They were obliged to have him with them,' the Mock Turtle said: 'no wise fish would go anywhere without a porpoise.'</p>
        <p>'Wouldn't it really?' said Alice in a tone of great surprise.</p>
        <p>'Of course not,' said the Mock Turtle: 'why, if a fish came to Me, and told me he was going a journey, I should say 'With what porpoise?''</p>
        <p>'Don't you mean 'purpose'?' said Alice.</p>
        <p>'I mean what I say,' the Mock Turtle replied in an offended tone. And the Gryphon added 'Come, let's hear some of Your adventures.'</p>
        <p>'I could tell you my adventures--beginning from this morning,' said Alice a little timidly: 'but it's no use going back to yesterday, because I was a different person then.'</p>
        <p>'Explain all that,' said the Mock Turtle.</p>
        <p>'No, no! The adventures first,' said the Gryphon in an impatient tone: 'explanations take such a dreadful time.'</p>
        <p>So Alice began telling them her adventures from the time when she first saw the White Rabbit. She was a little nervous about it just at first, the two creatures got so close to her, one on each side, and opened their eyes and mouths so Very wide, but she gained courage as she went on. Her listeners were perfectly quiet till she got to the part about her repeating 'You Are Old, Father William,' to the Caterpillar, and the words all coming different, and then the Mock Turtle drew a long breath, and said 'That's very curious.'</p>
        <p>'It's all about as curious as it can be,' said the Gryphon.</p>
        <p>'It all came different!' the Mock Turtle repeated thoughtfully. 'I should like to hear her try and repeat something now. Tell her to begin.' He looked at the Gryphon as if he thought it had some kind of authority over Alice.</p>
        <p>'Stand up and repeat ''Tis The Voice Of The Sluggard,'' said the Gryphon.</p>
        <p>'How the creatures order one about, and make one repeat lessons!' thought Alice; 'I might as well be at school at once.' However, she got up, and began to repeat it, but her head was so full of the Lobster Quadrille, that she hardly knew what she was saying, and the words came very queer indeed:--</p>''Tis the voice of the Lobster; I heard him declare,'You have baked me too brown, I must sugar my hair.'As a duck with its eyelids, so he with his noseTrims his belt and his buttons, and turns out his toes.'[later editions continued as followsWhen the sands are all dry, he is gay as a lark,And will talk in contemptuous tones of the Shark,But, when the tide rises and sharks are around,His voice has a timid and tremulous sound.]<p>'That's different from what I used to say when I was a child,' said the Gryphon.</p>
        <p>'Well, I never heard it before,' said the Mock Turtle; 'but it sounds uncommon nonsense.'</p>
        <p>Alice said nothing; she had sat down with her face in her hands, wondering if anything would Ever happen in a natural way again.</p>
        <p>'I should like to have it explained,' said the Mock Turtle.</p>
        <p>'She can't explain it,' said the Gryphon hastily. 'Go on with the next verse.'</p>
        <p>'But about his toes?' the Mock Turtle persisted. 'How COULD he turn them out with his nose, you know?'</p>
        <p>'It's the first position in dancing.' Alice said; but was dreadfully puzzled by the whole thing, and longed to change the subject.</p>
        <p>'Go on with the next verse,' the Gryphon repeated impatiently: 'it begins 'I passed by his garden.''</p>
        <p>Alice did not dare to disobey, though she felt sure it would all come wrong, and she went on in a trembling voice:--</p>'I passed by his garden, and marked, with one eye,How the Owl and the Panther were sharing a pie--'[later editions continued as followsThe Panther took pie-crust, and gravy, and meat,While the Owl had the dish as its share of the treat.When the pie was all finished, the Owl, as a boon,Was kindly permitted to pocket the spoon:While the Panther received knife and fork with a growl,And concluded the banquet--]<p>'What Is the use of repeating all that stuff,' the Mock Turtle interrupted, 'if you don't explain it as you go on? It's by far the most confusing thing I ever heard!'</p>
        <p>'Yes, I think you'd better leave off,' said the Gryphon: and Alice was only too glad to do so.</p>
        <p>'Shall we try another figure of the Lobster Quadrille?' the Gryphon went on. 'Or would you like the Mock Turtle to sing you a song?'</p>
        <p>'Oh, a song, please, if the Mock Turtle would be so kind,' Alice replied, so eagerly that the Gryphon said, in a rather offended tone, 'Hm! No accounting for tastes! Sing her 'Turtle Soup,' will you, old fellow?'</p>
        <p>The Mock Turtle sighed deeply, and began, in a voice sometimes choked with sobs, to sing this:--</p>'Beautiful Soup, so rich and green,Waiting in a hot tureen!Who for such dainties would not stoop?Soup of the evening, beautiful Soup!Soup of the evening, beautiful Soup!Beau--ootiful Soo--oop!Beau--ootiful Soo--oop!Soo--oop of the e--e--evening,Beautiful, beautiful Soup!'Beautiful Soup! Who cares for fish,Game, or any other dish?Who would not give all else for two pennyworth only of beautiful Soup?Pennyworth only of beautiful Soup?Beau--ootiful Soo--oop!Beau--ootiful Soo--oop!Soo--oop of the e--e--evening,Beautiful, beauti--Ful Soup!'<p>'Chorus again!' cried the Gryphon, and the Mock Turtle had just begun to repeat it, when a cry of 'The trial's beginning!' was heard in the distance.</p>
        <p>'Come on!' cried the Gryphon, and, taking Alice by the hand, it hurried off, without waiting for the end of the song.</p>
        <p>'What trial is it?' Alice panted as she ran; but the Gryphon only answered 'Come on!' and ran the faster, while more and more faintly came, carried on the breeze that followed them, the melancholy words:-- 'Soo--oop of the e--e--evening,Beautiful, beautiful Soup!'</p> 
		</TextFlow>
		
		static public const chapter11:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter XI</p>
        <p textAlign='center' fontSize='24'>Who Stole the Tarts?</p>
        <p>The King and Queen of Hearts were seated on their throne when they arrived, with a great crowd assembled about them--all sorts of little birds and beasts, as well as the whole pack of cards: the Knave was standing before them, in chains, with a soldier on each side to guard him; and near the King was the White Rabbit, with a trumpet in one hand, and a scroll of parchment in the other. In the very middle of the court was a table, with a large dish of tarts upon it: they looked so good, that it made Alice quite hungry to look at them--'I wish they'd get the trial done,' she thought, 'and hand round the refreshments!' But there seemed to be no chance of this, so she began looking at everything about her, to pass away the time.</p>
        <p>Alice had never been in a court of justice before, but she had read about them in books, and she was quite pleased to find that she knew the name of nearly everything there. 'That's the judge,' she said to herself, 'because of his great wig.'</p>
        <p>The judge, by the way, was the King; and as he wore his crown over the wig, (look at the frontispiece if you want to see how he did it,) he did not look at all comfortable, and it was certainly not becoming.</p>
        <p>'And that's the jury-box,' thought Alice, 'and those twelve creatures,' (she was obliged to say 'creatures,' you see, because some of them were animals, and some were birds,) 'I suppose they are the jurors.' She said this last word two or three times over to herself, being rather proud of it: for she thought, and rightly too, that very few little girls of her age knew the meaning of it at all. However, 'jury-men' would have done just as well.</p>
        <p>The twelve jurors were all writing very busily on slates. 'What are they doing?' Alice whispered to the Gryphon. 'They can't have anything to put down yet, before the trial's begun.'</p>
        <p>'They're putting down their names,' the Gryphon whispered in reply, 'for fear they should forget them before the end of the trial.'</p>
        <p>'Stupid things!' Alice began in a loud, indignant voice, but she stopped hastily, for the White Rabbit cried out, 'Silence in the court!' and the King put on his spectacles and looked anxiously round, to make out who was talking.</p>
        <p>Alice could see, as well as if she were looking over their shoulders, that all the jurors were writing down 'stupid things!' on their slates, and she could even make out that one of them didn't know how to spell 'stupid,' and that he had to ask his neighbour to tell him. 'A nice muddle their slates'll be in before the trial's over!' thought Alice.</p>
        <p>One of the jurors had a pencil that squeaked. This of course, Alice could not stand, and she went round the court and got behind him, and very soon found an opportunity of taking it away. She did it so quickly that the poor little juror (it was Bill, the Lizard) could not make out at all what had become of it; so, after hunting all about for it, he was obliged to write with one finger for the rest of the day; and this was of very little use, as it left no mark on the slate.</p>
        <p>'Herald, read the accusation!' said the King.</p>
        <p>On this the White Rabbit blew three blasts on the trumpet, and then unrolled the parchment scroll, and read as follows:--</p>'The Queen of Hearts, she made some tarts,All on a summer day:The Knave of Hearts, he stole those tarts,And took them quite away!'<p>'Consider your verdict,' the King said to the jury.</p>
        <p>'Not yet, not yet!' the Rabbit hastily interrupted. 'There's a great deal to come before that!'</p>
        <p>'Call the first witness,' said the King; and the White Rabbit blew three blasts on the trumpet, and called out, 'First witness!'</p>
        <p>The first witness was the Hatter. He came in with a teacup in one hand and a piece of bread-and-butter in the other. 'I beg pardon, your Majesty,' he began, 'for bringing these in: but I hadn't quite finished my tea when I was sent for.'</p>
        <p>'You ought to have finished,' said the King. 'When did you begin?'</p>
        <p>The Hatter looked at the March Hare, who had followed him into the court, arm-in-arm with the Dormouse. 'Fourteenth of March, I think it was,' he said.</p>
        <p>'Fifteenth,' said the March Hare.</p>
        <p>'Sixteenth,' added the Dormouse.</p>
        <p>'Write that down,' the King said to the jury, and the jury eagerly wrote down all three dates on their slates, and then added them up, and reduced the answer to shillings and pence.</p>
        <p>'Take off your hat,' the King said to the Hatter.</p>
        <p>'It isn't mine,' said the Hatter.</p>
        <p>'Stolen!' the King exclaimed, turning to the jury, who instantly made a memorandum of the fact.</p>
        <p>'I keep them to sell,' the Hatter added as an explanation; 'I've none of my own. I'm a hatter.'</p>
        <p>Here the Queen put on her spectacles, and began staring at the Hatter, who turned pale and fidgeted.</p>
        <p>'Give your evidence,' said the King; 'and don't be nervous, or I'll have you executed on the spot.'</p>
        <p>This did not seem to encourage the witness at all: he kept shifting from one foot to the other, looking uneasily at the Queen, and in his confusion he bit a large piece out of his teacup instead of the bread-and-butter.</p>
        <p>Just at this moment Alice felt a very curious sensation, which puzzled her a good deal until she made out what it was: she was beginning to grow larger again, and she thought at first she would get up and leave the court; but on second thoughts she decided to remain where she was as long as there was room for her.</p>
        <p>'I wish you wouldn't squeeze so.' said the Dormouse, who was sitting next to her. 'I can hardly breathe.'</p>
        <p>'I can't help it,' said Alice very meekly: 'I'm growing.'</p>
        <p>'You've no right to grow here,' said the Dormouse.</p>
        <p>'Don't talk nonsense,' said Alice more boldly: 'you know you're growing too.'</p>
        <p>'Yes, but I grow at a reasonable pace,' said the Dormouse: 'not in that ridiculous fashion.' And he got up very sulkily and crossed over to the other side of the court.</p>
        <p>All this time the Queen had never left off staring at the Hatter, and, just as the Dormouse crossed the court, she said to one of the officers of the court, 'Bring me the list of the singers in the last concert!' on which the wretched Hatter trembled so, that he shook both his shoes off.</p>
        <p>'Give your evidence,' the King repeated angrily, 'or I'll have you executed, whether you're nervous or not.'</p>
        <p>'I'm a poor man, your Majesty,' the Hatter began, in a trembling voice, '--and I hadn't begun my tea--not above a week or so--and what with the bread-and-butter getting so thin--and the twinkling of the tea--'</p>
        <p>'The twinkling of the what?' said the King.</p>
        <p>'It began with the tea,' the Hatter replied.</p>
        <p>'Of course twinkling begins with a T!' said the King sharply. 'Do you take me for a dunce? Go on!'</p>
        <p>'I'm a poor man,' the Hatter went on, 'and most things twinkled after that--only the March Hare said--'</p>
        <p>'I didn't!' the March Hare interrupted in a great hurry.</p>
        <p>'You did!' said the Hatter.</p>
        <p>'I deny it!' said the March Hare.</p>
        <p>'He denies it,' said the King: 'leave out that part.'</p>
        <p>'Well, at any rate, the Dormouse said--' the Hatter went on, looking anxiously round to see if he would deny it too: but the Dormouse denied nothing, being fast asleep.</p>
        <p>'After that,' continued the Hatter, 'I cut some more bread- and-butter--'</p>
        <p>'But what did the Dormouse say?' one of the jury asked.</p>
        <p>'That I can't remember,' said the Hatter.</p>
        <p>'You Must remember,' remarked the King, 'or I'll have you executed.'</p>
        <p>The miserable Hatter dropped his teacup and bread-and-butter, and went down on one knee. 'I'm a poor man, your Majesty,' he began.</p>
        <p>'You're a very poor speaker,' said the King.</p>
        <p>Here one of the guinea-pigs cheered, and was immediately suppressed by the officers of the court. (As that is rather a hard word, I will just explain to you how it was done. They had a large canvas bag, which tied up at the mouth with strings: into this they slipped the guinea-pig, head first, and then sat upon it.)</p>
        <p>'I'm glad I've seen that done,' thought Alice. 'I've so often read in the newspapers, at the end of trials, 'There was some attempts at applause, which was immediately suppressed by the officers of the court,' and I never understood what it meant till now.'</p>
        <p>'If that's all you know about it, you may stand down,' continued the King.</p>
        <p>'I can't go no lower,' said the Hatter: 'I'm on the floor, as it is.'</p>
        <p>'Then you may SIT down,' the King replied.</p>
        <p>Here the other guinea-pig cheered, and was suppressed.</p>
        <p>'Come, that finished the guinea-pigs!' thought Alice. 'Now we shall get on better.'</p>
        <p>'I'd rather finish my tea,' said the Hatter, with an anxious look at the Queen, who was reading the list of singers.</p>
        <p>'You may go,' said the King, and the Hatter hurriedly left the court, without even waiting to put his shoes on.</p>
        <p>'--and just take his head off outside,' the Queen added to one of the officers: but the Hatter was out of sight before the officer could get to the door.</p>
        <p>'Call the next witness!' said the King.</p>
        <p>The next witness was the Duchess's cook. She carried the pepper-box in her hand, and Alice guessed who it was, even before she got into the court, by the way the people near the door began sneezing all at once.</p>
        <p>'Give your evidence,' said the King.</p>
        <p>'Shan't,' said the cook.</p>
        <p>The King looked anxiously at the White Rabbit, who said in a low voice, 'Your Majesty must cross-examine This witness.'</p>
        <p>'Well, if I must, I must,' the King said, with a melancholy air, and, after folding his arms and frowning at the cook till his eyes were nearly out of sight, he said in a deep voice, 'What are tarts made of?'</p>
        <p>'Pepper, mostly,' said the cook.</p>
        <p>'Treacle,' said a sleepy voice behind her.</p>
        <p>'Collar that Dormouse,' the Queen shrieked out. 'Behead that Dormouse! Turn that Dormouse out of court! Suppress him! Pinch him! Off with his whiskers!'</p>
        <p>For some minutes the whole court was in confusion, getting the Dormouse turned out, and, by the time they had settled down again, the cook had disappeared.</p>
        <p>'Never mind!' said the King, with an air of great relief. 'Call the next witness.' And he added in an undertone to the Queen, 'Really, my dear, You must cross-examine the next witness. It quite makes my forehead ache!'</p>
        <p>Alice watched the White Rabbit as he fumbled over the list, feeling very curious to see what the next witness would be like, '--for they haven't got much evidence Yet,' she said to herself. Imagine her surprise, when the White Rabbit read out, at the top of his shrill little voice, the name 'Alice!'</p> 
		</TextFlow>

		static public const chapter12:XML = <TextFlow xmlns='http://ns.adobe.com/textLayout/2008'> 
        <p textAlign='center' fontSize='24'>Chapter XII</p>
        <p textAlign='center' fontSize='24'>Alice's Evidence</p>
        <p>'Here!' cried Alice, quite forgetting in the flurry of the moment how large she had grown in the last few minutes, and she jumped up in such a hurry that she tipped over the jury-box with the edge of her skirt, upsetting all the jurymen on to the heads of the crowd below, and there they lay sprawling about, reminding her very much of a globe of goldfish she had accidentally upset the week before.</p>
        <p>'Oh, I BEG your pardon!' she exclaimed in a tone of great dismay, and began picking them up again as quickly as she could, for the accident of the goldfish kept running in her head, and she had a vague sort of idea that they must be collected at once and put back into the jury-box, or they would die.</p>
        <p>'The trial cannot proceed,' said the King in a very grave voice, 'until all the jurymen are back in their proper places-- All,' he repeated with great emphasis, looking hard at Alice as he said do.</p>
        <p>Alice looked at the jury-box, and saw that, in her haste, she had put the Lizard in head downwards, and the poor little thing was waving its tail about in a melancholy way, being quite unable to move. She soon got it out again, and put it right; 'not that it signifies much,' she said to herself; 'I should think it would be Quite as much use in the trial one way up as the other.'</p>
        <p>As soon as the jury had a little recovered from the shock of being upset, and their slates and pencils had been found and handed back to them, they set to work very diligently to write out a history of the accident, all except the Lizard, who seemed too much overcome to do anything but sit with its mouth open, gazing up into the roof of the court.</p>
        <p>'What do you know about this business?' the King said to Alice.</p>
        <p>'Nothing,' said Alice.</p>
        <p>'Nothing Whatever?' persisted the King.</p>
        <p>'Nothing whatever,' said Alice.</p>
        <p>'That's very important,' the King said, turning to the jury. They were just beginning to write this down on their slates, when the White Rabbit interrupted: 'UNimportant, your Majesty means, of course,' he said in a very respectful tone, but frowning and making faces at him as he spoke.</p>
        <p>'UNimportant, of course, I meant,' the King hastily said, and went on to himself in an undertone, 'important--unimportant-- unimportant--important--' as if he were trying which word sounded best.</p>
        <p>Some of the jury wrote it down 'important,' and some 'unimportant.' Alice could see this, as she was near enough to look over their slates; 'but it doesn't matter a bit,' she thought to herself.</p>
        <p>At this moment the King, who had been for some time busily writing in his note-book, cackled out 'Silence!' and read out from his book, 'Rule Forty-two. All Persons More Than A Mile High To Leave The Court.'</p>
        <p>Everybody looked at Alice.</p>
        <p>'I'M not a mile high,' said Alice.</p>
        <p>'You are,' said the King.</p>
        <p>'Nearly two miles high,' added the Queen.</p>
        <p>'Well, I shan't go, at any rate,' said Alice: 'besides, that's not a regular rule: you invented it just now.'</p>
        <p>'It's the oldest rule in the book,' said the King.</p>
        <p>'Then it ought to be Number One,' said Alice.</p>
        <p>The King turned pale, and shut his note-book hastily. 'Consider your verdict,' he said to the jury, in a low, trembling voice.</p>
        <p>'There's more evidence to come yet, please your Majesty,' said the White Rabbit, jumping up in a great hurry; 'this paper has just been picked up.'</p>
        <p>'What's in it?' said the Queen.</p>
        <p>'I haven't opened it yet,' said the White Rabbit, 'but it seems to be a letter, written by the prisoner to--to somebody.'</p>
        <p>'It must have been that,' said the King, 'unless it was written to nobody, which isn't usual, you know.'</p>
        <p>'Who is it directed to?' said one of the jurymen.</p>
        <p>'It isn't directed at all,' said the White Rabbit; 'in fact, there's nothing written on the Outside.' He unfolded the paper as he spoke, and added 'It isn't a letter, after all: it's a set of verses.'</p>
        <p>'Are they in the prisoner's handwriting?' asked another of they jurymen.</p>
        <p>'No, they're not,' said the White Rabbit, 'and that's the queerest thing about it.' (The jury all looked puzzled.)</p>
        <p>'He must have imitated somebody else's hand,' said the King. (The jury all brightened up again.)</p>
        <p>'Please your Majesty,' said the Knave, 'I didn't write it, and they can't prove I did: there's no name signed at the end.'</p>
        <p>'If you didn't sign it,' said the King, 'that only makes the matter worse. You Must have meant some mischief, or else you'd have signed your name like an honest man.'</p>
        <p>There was a general clapping of hands at this: it was the first really clever thing the King had said that day.</p>
        <p>'That Proves his guilt,' said the Queen.</p>
        <p>'It proves nothing of the sort!' said Alice. 'Why, you don't even know what they're about!'</p>
        <p>'Read them,' said the King.</p>
        <p>The White Rabbit put on his spectacles. 'Where shall I begin, please your Majesty?' he asked.</p>
        <p>'Begin at the beginning,' the King said gravely, 'and go on till you come to the end: then stop.'</p>
        <p>These were the verses the White Rabbit read:--</p>'They told me you had been to her,And mentioned me to him:She gave me a good character,But said I could not swim.He sent them word I had not gone(We know it to be true):If she should push the matter on,What would become of you?I gave her one, they gave him two,You gave us three or more;They all returned from him to you,Though they were mine before.If I or she should chance to beInvolved in this affair,He trusts to you to set them free,Exactly as we were.My notion was that you had been(Before she had this fit)An obstacle that came betweenHim, and ourselves, and it.Don't let him know she liked them best,For this must ever beA secret, kept from all the rest,Between yourself and me.'<p>'That's the most important piece of evidence we've heard yet,' said the King, rubbing his hands; 'so now let the jury--'</p>
        <p>'If any one of them can explain it,' said Alice, (she had grown so large in the last few minutes that she wasn't a bit afraid of interrupting him,) 'I'll give him sixpence. _I_ don't believe there's an atom of meaning in it.'</p>
        <p>The jury all wrote down on their slates, 'SHE doesn't believe there's an atom of meaning in it,' but none of them attempted to explain the paper.</p>
        <p>'If there's no meaning in it,' said the King, 'that saves a world of trouble, you know, as we needn't try to find any. And yet I don't know,' he went on, spreading out the verses on his knee, and looking at them with one eye; 'I seem to see some meaning in them, after all. '--Said I Could Not Swim--' you can't swim, can you?' he added, turning to the Knave.</p>
        <p>The Knave shook his head sadly. 'Do I look like it?' he said. (Which he certainly did Not, being made entirely of cardboard.)</p>
        <p>'All right, so far,' said the King, and he went on muttering over the verses to himself: ''We Know It To Be True--' that's the jury, of course-- 'I Gave Her One, They Gave Him Two--' why, that must be what he did with the tarts, you know--'</p>
        <p>'But, it goes on 'They All Returned From Him To You,'' said Alice.</p>
        <p>'Why, there they are!' said the King triumphantly, pointing to the tarts on the table. 'Nothing can be clearer than That. Then again--'Before She Had This Fit--' you never had fits, my dear, I think?' he said to the Queen.</p>
        <p>'Never!' said the Queen furiously, throwing an inkstand at the Lizard as she spoke. (The unfortunate little Bill had left off writing on his slate with one finger, as he found it made no mark; but he now hastily began again, using the ink, that was trickling down his face, as long as it lasted.)</p>
        <p>'Then the words don't Fit you,' said the King, looking round the court with a smile. There was a dead silence.</p>
        <p>'It's a pun!' the King added in an offended tone, and everybody laughed, 'Let the jury consider their verdict,' the King said, for about the twentieth time that day.</p>
        <p>'No, no!' said the Queen. 'Sentence first--verdict afterwards.'</p>
        <p>'Stuff and nonsense!' said Alice loudly. 'The idea of having the sentence first!'</p>
        <p>'Hold your tongue!' said the Queen, turning purple.</p>
        <p>'I won't!' said Alice.</p>
        <p>'Off with her head!' the Queen shouted at the top of her voice. Nobody moved.</p>
        <p>'Who cares for you?' said Alice, (she had grown to her full size by this time.) 'You're nothing but a pack of cards!'</p>
        <p>At this the whole pack rose up into the air, and came flying down upon her: she gave a little scream, half of fright and half of anger, and tried to beat them off, and found herself lying on the bank, with her head in the lap of her sister, who was gently brushing away some dead leaves that had fluttered down from the trees upon her face.</p>
        <p>'Wake up, Alice dear!' said her sister; 'Why, what a long sleep you've had!'</p>
        <p>'Oh, I've had such a curious dream!' said Alice, and she told her sister, as well as she could remember them, all these strange Adventures of hers that you have just been reading about; and when she had finished, her sister kissed her, and said, 'It Was a curious dream, dear, certainly: but now run in to your tea; it's getting late.' So Alice got up and ran off, thinking while she ran, as well she might, what a wonderful dream it had been.</p>
        <p>But her sister sat still just as she left her, leaning her head on her hand, watching the setting sun, and thinking of little Alice and all her wonderful Adventures, till she too began dreaming after a fashion, and this was her dream:--</p>
        <p>First, she dreamed of little Alice herself, and once again the tiny hands were clasped upon her knee, and the bright eager eyes were looking up into hers--she could hear the very tones of her voice, and see that queer little toss of her head to keep back the wandering hair that Would always get into her eyes--and still as she listened, or seemed to listen, the whole place around her became alive the strange creatures of her little sister's dream.</p>
        <p>The long grass rustled at her feet as the White Rabbit hurried by--the frightened Mouse splashed his way through the neighbouring pool--she could hear the rattle of the teacups as the March Hare and his friends shared their never-ending meal, and the shrill voice of the Queen ordering off her unfortunate guests to execution--once more the pig-baby was sneezing on the Duchess's knee, while plates and dishes crashed around it--once more the shriek of the Gryphon, the squeaking of the Lizard's slate-pencil, and the choking of the suppressed guinea-pigs, filled the air, mixed up with the distant sobs of the miserable Mock Turtle.</p>
        <p>So she sat on, with closed eyes, and half believed herself in Wonderland, though she knew she had but to open them again, and all would change to dull reality--the grass would be only rustling in the wind, and the pool rippling to the waving of the reeds--the rattling teacups would change to tinkling sheep- bells, and the Queen's shrill cries to the voice of the shepherd boy--and the sneeze of the baby, the shriek of the Gryphon, and all thy other queer noises, would change (she knew) to the confused clamour of the busy farm-yard--while the lowing of the cattle in the distance would take the place of the Mock Turtle's heavy sobs.</p>
        <p>Lastly, she pictured to herself how this same little sister of hers would, in the after-time, be herself a grown woman; and how she would keep, through all her riper years, the simple and loving heart of her childhood: and how she would gather about her other little children, and make Their eyes bright and eager with many a strange tale, perhaps even with the dream of Wonderland of long ago: and how she would feel with all their simple sorrows, and find a pleasure in all their simple joys, remembering her own child-life, and the happy summer days.</p>
        <p>-- End --</p>
        </TextFlow>
        
        static public const contents:Array = [  chapter1, chapter2, chapter3, chapter4, chapter5, chapter6, chapter7, chapter8, chapter9, chapter10, chapter11, chapter12 ];
	}
}
