/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.android.support.design;

public final class Shakespeare {
    /**
     * Our data, part 1.
     */
    public static final String[] TITLES = {
            "Henry IV (1)",
            "Henry V",
            "Henry VIII",
            "Richard II",
            "Richard III",
            "Merchant of Venice",
            "Othello",
            "King Lear"
    };

    /**
     * Our data, part 2.
     */
    public static final String[] DIALOGUE = {
            "So shaken as we are, so wan with care," +
            "Find we a time for frighted peace to pant," +
            "And breathe short-winded accents of new broils" +
            "To be commenced in strands afar remote." +
            "No more the thirsty entrance of this soil" +
            "Shall daub her lips with her own children's blood;" +
            "Nor more shall trenching war channel her fields," +
            "Nor bruise her flowerets with the armed hoofs" +
            "Of hostile paces: those opposed eyes," +
            "Which, like the meteors of a troubled heaven," +
            "All of one nature, of one substance bred," +
            "Did lately meet in the intestine shock" +
            "And furious close of civil butchery" +
            "Shall now, in mutual well-beseeming ranks," +
            "March all one way and be no more opposed" +
            "Against acquaintance, kindred and allies:" +
            "The edge of war, like an ill-sheathed knife," +
            "No more shall cut his master. Therefore, friends," +
            "As far as to the sepulchre of Christ," +
            "Whose soldier now, under whose blessed cross" +
            "We are impressed and engaged to fight," +
            "Forthwith a power of English shall we levy;" +
            "Whose arms were moulded in their mothers' womb" +
            "To chase these pagans in those holy fields" +
            "Over whose acres walk'd those blessed feet" +
            "Which fourteen hundred years ago were nail'd" +
            "For our advantage on the bitter cross." +
            "But this our purpose now is twelve month old," +
            "And bootless 'tis to tell you we will go:" +
            "Therefore we meet not now. Then let me hear" +
            "Of you, my gentle cousin Westmoreland," +
            "What yesternight our council did decree" +
            "In forwarding this dear expedience.",

            "Hear him but reason in divinity," +
            "And all-admiring with an inward wish" +
            "You would desire the king were made a prelate:" +
            "Hear him debate of commonwealth affairs," +
            "You would say it hath been all in all his study:" +
            "List his discourse of war, and you shall hear" +
            "A fearful battle render'd you in music:" +
            "Turn him to any cause of policy," +
            "The Gordian knot of it he will unloose," +
            "Familiar as his garter: that, when he speaks," +
            "The air, a charter'd libertine, is still," +
            "And the mute wonder lurketh in men's ears," +
            "To steal his sweet and honey'd sentences;" +
            "So that the art and practic part of life" +
            "Must be the mistress to this theoric:" +
            "Which is a wonder how his grace should glean it," +
            "Since his addiction was to courses vain," +
            "His companies unletter'd, rude and shallow," +
            "His hours fill'd up with riots, banquets, sports," +
            "And never noted in him any study," +
            "Any retirement, any sequestration" +
            "From open haunts and popularity.",

            "I come no more to make you laugh: things now," +
            "That bear a weighty and a serious brow," +
            "Sad, high, and working, full of state and woe," +
            "Such noble scenes as draw the eye to flow," +
            "We now present. Those that can pity, here" +
            "May, if they think it well, let fall a tear;" +
            "The subject will deserve it. Such as give" +
            "Their money out of hope they may believe," +
            "May here find truth too. Those that come to see" +
            "Only a show or two, and so agree" +
            "The play may pass, if they be still and willing," +
            "I'll undertake may see away their shilling" +
            "Richly in two short hours. Only they" +
            "That come to hear a merry bawdy play," +
            "A noise of targets, or to see a fellow" +
            "In a long motley coat guarded with yellow," +
            "Will be deceived; for, gentle hearers, know," +
            "To rank our chosen truth with such a show" +
            "As fool and fight is, beside forfeiting" +
            "Our own brains, and the opinion that we bring," +
            "To make that only true we now intend," +
            "Will leave us never an understanding friend." +
            "Therefore, for goodness' sake, and as you are known" +
            "The first and happiest hearers of the town," +
            "Be sad, as we would make ye: think ye see" +
            "The very persons of our noble story" +
            "As they were living; think you see them great," +
            "And follow'd with the general throng and sweat" +
            "Of thousand friends; then in a moment, see" +
            "How soon this mightiness meets misery:" +
            "And, if you can be merry then, I'll say" +
            "A man may weep upon his wedding-day.",

            "First, heaven be the record to my speech!" +
            "In the devotion of a subject's love," +
            "Tendering the precious safety of my prince," +
            "And free from other misbegotten hate," +
            "Come I appellant to this princely presence." +
            "Now, Thomas Mowbray, do I turn to thee," +
            "And mark my greeting well; for what I speak" +
            "My body shall make good upon this earth," +
            "Or my divine soul answer it in heaven." +
            "Thou art a traitor and a miscreant," +
            "Too good to be so and too bad to live," +
            "Since the more fair and crystal is the sky," +
            "The uglier seem the clouds that in it fly." +
            "Once more, the more to aggravate the note," +
            "With a foul traitor's name stuff I thy throat;" +
            "And wish, so please my sovereign, ere I move," +
            "What my tongue speaks my right drawn sword may prove.",

            "Now is the winter of our discontent" +
            "Made glorious summer by this sun of York;" +
            "And all the clouds that lour'd upon our house" +
            "In the deep bosom of the ocean buried." +
            "Now are our brows bound with victorious wreaths;" +
            "Our bruised arms hung up for monuments;" +
            "Our stern alarums changed to merry meetings," +
            "Our dreadful marches to delightful measures." +
            "Grim-visaged war hath smooth'd his wrinkled front;" +
            "And now, instead of mounting barded steeds" +
            "To fright the souls of fearful adversaries," +
            "He capers nimbly in a lady's chamber" +
            "To the lascivious pleasing of a lute." +
            "But I, that am not shaped for sportive tricks," +
            "Nor made to court an amorous looking-glass;" +
            "I, that am rudely stamp'd, and want love's majesty" +
            "To strut before a wanton ambling nymph;" +
            "I, that am curtail'd of this fair proportion," +
            "Cheated of feature by dissembling nature," +
            "Deformed, unfinish'd, sent before my time" +
            "Into this breathing world, scarce half made up," +
            "And that so lamely and unfashionable" +
            "That dogs bark at me as I halt by them;" +
            "Why, I, in this weak piping time of peace," +
            "Have no delight to pass away the time," +
            "Unless to spy my shadow in the sun" +
            "And descant on mine own deformity:" +
            "And therefore, since I cannot prove a lover," +
            "To entertain these fair well-spoken days," +
            "I am determined to prove a villain" +
            "And hate the idle pleasures of these days." +
            "Plots have I laid, inductions dangerous," +
            "By drunken prophecies, libels and dreams," +
            "To set my brother Clarence and the king" +
            "In deadly hate the one against the other:" +
            "And if King Edward be as true and just" +
            "As I am subtle, false and treacherous," +
            "This day should Clarence closely be mew'd up," +
            "About a prophecy, which says that 'G'" +
            "Of Edward's heirs the murderer shall be." +
            "Dive, thoughts, down to my soul: here" +
            "Clarence comes.",

            "To bait fish withal: if it will feed nothing else," +
            "it will feed my revenge. He hath disgraced me, and" +
            "hindered me half a million; laughed at my losses," +
            "mocked at my gains, scorned my nation, thwarted my" +
            "bargains, cooled my friends, heated mine" +
            "enemies; and what's his reason? I am a Jew. Hath" +
            "not a Jew eyes? hath not a Jew hands, organs," +
            "dimensions, senses, affections, passions? fed with" +
            "the same food, hurt with the same weapons, subject" +
            "to the same diseases, healed by the same means," +
            "warmed and cooled by the same winter and summer, as" +
            "a Christian is? If you prick us, do we not bleed?" +
            "if you tickle us, do we not laugh? if you poison" +
            "us, do we not die? and if you wrong us, shall we not" +
            "revenge? If we are like you in the rest, we will" +
            "resemble you in that. If a Jew wrong a Christian," +
            "what is his humility? Revenge. If a Christian" +
            "wrong a Jew, what should his sufferance be by" +
            "Christian example? Why, revenge. The villany you" +
            "teach me, I will execute, and it shall go hard but I" +
            "will better the instruction.",

            "Virtue! a fig! 'tis in ourselves that we are thus" +
            "or thus. Our bodies are our gardens, to the which" +
            "our wills are gardeners: so that if we will plant" +
            "nettles, or sow lettuce, set hyssop and weed up" +
            "thyme, supply it with one gender of herbs, or" +
            "distract it with many, either to have it sterile" +
            "with idleness, or manured with industry, why, the" +
            "power and corrigible authority of this lies in our" +
            "wills. If the balance of our lives had not one" +
            "scale of reason to poise another of sensuality, the" +
            "blood and baseness of our natures would conduct us" +
            "to most preposterous conclusions: but we have" +
            "reason to cool our raging motions, our carnal" +
            "stings, our unbitted lusts, whereof I take this that" +
            "you call love to be a sect or scion.",

            "Blow, winds, and crack your cheeks! rage! blow!" +
            "You cataracts and hurricanoes, spout" +
            "Till you have drench'd our steeples, drown'd the cocks!" +
            "You sulphurous and thought-executing fires," +
            "Vaunt-couriers to oak-cleaving thunderbolts," +
            "Singe my white head! And thou, all-shaking thunder," +
            "Smite flat the thick rotundity o' the world!" +
            "Crack nature's moulds, an germens spill at once," +
            "That make ingrateful man!"
    };
}
