Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Where can buy Getting Started with Advanced C# 1st Edition Vaskaran Sarcar [Sarcar ebook with cheap price

Download as pdf or txt
Download as pdf or txt
You are on page 1of 58

Download the full version of the textbook now at textbookfull.

com

Getting Started with Advanced C# 1st Edition


Vaskaran Sarcar [Sarcar

https://textbookfull.com/product/getting-started-
with-advanced-c-1st-edition-vaskaran-sarcar-
sarcar/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Interactive C#: Fundamentals, Core Concepts and Patterns


1st Edition Vaskaran Sarcar

https://textbookfull.com/product/interactive-c-fundamentals-core-
concepts-and-patterns-1st-edition-vaskaran-sarcar/

textbookfull.com

Design Patterns in C#: A Hands-on Guide with Real-world


Examples 2nd Edition Vaskaran Sarcar

https://textbookfull.com/product/design-patterns-in-c-a-hands-on-
guide-with-real-world-examples-2nd-edition-vaskaran-sarcar/

textbookfull.com

Programming With STM32: Getting Started With the Nucleo


Board and C/C++ Donald Norris

https://textbookfull.com/product/programming-with-stm32-getting-
started-with-the-nucleo-board-and-c-c-donald-norris/

textbookfull.com

The Little House book of wisdom First Edition Wilder

https://textbookfull.com/product/the-little-house-book-of-wisdom-
first-edition-wilder/

textbookfull.com
Knowledge Science Engineering and Management 11th
International Conference KSEM 2018 Changchun China August
17 19 2018 Proceedings Part I Weiru Liu
https://textbookfull.com/product/knowledge-science-engineering-and-
management-11th-international-conference-ksem-2018-changchun-china-
august-17-19-2018-proceedings-part-i-weiru-liu/
textbookfull.com

500 Years After Leonardo Da Vinci Machines Towards


Innovation And Control Maide Bucolo

https://textbookfull.com/product/500-years-after-leonardo-da-vinci-
machines-towards-innovation-and-control-maide-bucolo/

textbookfull.com

The Tech Executive Operating System: Creating an R&D


Organization That Moves the Needle 1st Edition Aviv Ben-
Yosef
https://textbookfull.com/product/the-tech-executive-operating-system-
creating-an-rd-organization-that-moves-the-needle-1st-edition-aviv-
ben-yosef/
textbookfull.com

City and Society in the Low Countries 1100 1600 1st


Edition Bruno Blonde

https://textbookfull.com/product/city-and-society-in-the-low-
countries-1100-1600-1st-edition-bruno-blonde/

textbookfull.com

The metaphysics of relations 1st Edition Marmodoro

https://textbookfull.com/product/the-metaphysics-of-relations-1st-
edition-marmodoro/

textbookfull.com
Digital Economies At Global Margins Mark Graham

https://textbookfull.com/product/digital-economies-at-global-margins-
mark-graham/

textbookfull.com
Vaskaran Sarcar
Getting Started with Advanced C#
Upgrade Your Programming Skills
Foreword by Deepak Seshadri
Vaskaran Sarcar
Kolkata, West Bengal, India

Any source code or other supplementary material referenced by the


author in this book is available to readers on GitHub via the book’s
product page, located at www.​apress.​com/​978-1-4842-5933-7. For
more detailed information, please visit http://​www.​apress.​com/​
source-code.

ISBN 978-1-4842-5933-7 e-ISBN 978-1-4842-5934-4


https://doi.org/10.1007/978-1-4842-5934-4

© Vaskaran Sarcar 2020

This work is subject to copyright. All rights are reserved by the


Publisher, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations,
recitation, broadcasting, reproduction on microfilms or in any other
physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar
methodology now known or hereafter developed.

The use of general descriptive names, registered names, trademarks,


service marks, etc. in this publication does not imply, even in the
absence of a specific statement, that such names are exempt from the
relevant protective laws and regulations and therefore free for general
use.

The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.

Distributed to the book trade worldwide by Springer Science+Business


Media New York, 233 Spring Street, 6th Floor, New York, NY 10013.
Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-
ny@springer-sbm.com, or visit www.springeronline.com. Apress Media,
LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM
Finance Inc is a Delaware corporation.
This book is dedicated to those people who can listen to their inner voices
and have the courage to follow their dreams despite unfavorable
circumstances.
Foreword
“A tool is only as good as its user!”

Building on this truth, using a programming language is similar in


that its effectiveness is only as good as the knowledge and skill of the
person using it. This book is for people who have a basic understanding
of how to write a C# program but want to leverage more advanced
constructs for building optimized, scalable, long-lasting solutions.
C# has come a long way from being a Microsoft Windows tool a few
years ago. Now it is also used in much larger ecosystems, such as Mac
and Linux. This makes the code a lot more portable. Microsoft also
integrated their recent acquisition of Mono into their portfolio, so that a
coder can target the code to run on multiple platforms. As the
popularity of the language increases, it is important that coders learn
about its advanced features to make the best use of the framework.
I have spent a good part of my career programming and reviewing
others’ C# code. I realized that many developers do not use the
language effectively because they are not aware of the more useful
features that it has to offer. This book serves as a guide for exactly that
—learning the more advanced concepts.
Today, it is more important than ever to not only consider how
quickly a solution can be developed, but also about how the solution
can be reused across multiple platforms and fine-tuned for each
platform. Knowing advanced topics helps developers to easily fine-tune
to the environment that their code runs on, so that they are optimized
for that environment.
The book starts with concepts such as delegates and events. It then
goes into finer detail, including programming with generics,
multithreading, database connections, and more. In each chapter,
Vaskaran explains the construct in a very simple way, with examples,
and then proceeds to a Q and A session. It almost mimics a classroom
session. This style engages the reader in learning the topic and answers
questions. This is an excellent way to absorb the fundamental concepts
and to ensure understanding them.
Vaskaran has worked with me for many years and has always been
very passionate about C# and the nonfunctional aspects of
programming, such as memory management, performance, and so
forth. In this book, he has done a commendable job with putting
together great examples that clearly explain the concepts. I am sure
that this book will propel C# developers to the next level in a very short
time.

Deepak Seshadri
Performance Architect
Printer Firmware, HP Inc.
Introduction
This book is an introductory guide to advanced programming in C#.
The examples and code have been deliberately kept simple to allow you
to concentrate on understanding important concepts in depth.
In 2015, I wrote C# Basics: Test your Skill, which covered
fundamental concepts in C#. In 2018, the book was further enhanced
and Interactive C# was published. Immediately after its release, it
became the “#1 New Release” in the C# and object-oriented
programming category on Amazon.com. The book was translated into
Japanese in 2019. This kind of success motivated me to enhance the
work further. I was involved in teaching since 2005, which was another
motivation to introduce a book like this one. So, it is my privilege to
present you with Getting Started with Advanced C#: Upgrade Your
Programming Skills. Before I proceed further, I want to thank you for
your support to motivate me to write a book like this.
If you ask me about the most fascinating characteristic of this book,
I’d tell you that similar to Interactive C#, it is also interactive and
simple, but this time, you start exploring advanced programming by
using some important features in C#. In this book, my goal was not to
demonstrate typical and tough programs using all the latest features of
C#; instead, like my previous books, the goal is to fuel your creativity
and encourage you to implement advanced concepts using core
constructs in C#. I always believe that the word core is most important
when you learn a programming language. Whatever is the latest feature
today, will be outdated tomorrow but the core constructs are evergreen,
and in most cases, they function behind the new features unnoticed.
This is why although this book is for advanced programmers, in Part 1, I
focus on the fundamental features of advanced C#. I show you how to
incorporate them in different programming techniques in Part 2.
You’ll probably agree that when you travel an unknown path to a
destination, it helps to have a caring guide. Learning a new
programming language through a book is a journey that was always on
my mind. In this book, I not only explain topics in an informative way, I
also made the book interactive by using Q&A sessions in each chapter.
These sessions assist you in your learning process, and they act as
“doubt-clearing sessions” that make you a feel that you are asking your
guide questions (or expressing your doubts), and you are receiving
answers from him in a simple one-to-one communication. In most
cases, you’ll get a full demonstration of programs along with the output,
followed by important analysis to get maximum benefit. As a result, you
can continue reading without interruption.
The aim of this book is to give you a classroom environment feeling,
where you are not only a listener, you are also an active participant who
can ask questions and get the answers to them. Before you jump into
the topics, let me highlight few more points about the book, including
the way the chapters are organized and who the intended readers are.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
How the Book Is Organized
The book has two major parts.
Part 1 consists of the first three chapters, in which you see the
discussion and implementation of delegates, events, and lambda
expressions. These are the building blocks for advanced
programming in C#, and before you move to Part 2, you need to
master them. If you have already gone through other C# books, you
may be wondering why there are three separate chapters for
delegates, events, and lambda expressions. In those books, you may
see their presence in a single chapter with only some sample code.
But as you go forward in this book, you’ll clearly understand why a
detailed discussion on these topics is vital to really mastering the
advanced concepts and using built-in advanced features in C#.
In Part 2, there are four chapters. You will experience advanced
programming in detail by using the concepts/constructs that you
learned in Part 1. You start with generic programming and then learn
about thread programming and asynchronous programming to
benefit from a multithreaded environment.
In C#, database programming can be done in three different ways:
using connected layers, using disconnected layers, or using Entity
Framework (EF). This book is for the advanced C# beginners, and
LINQ (which is the basis of EF) is not discussed. So, I excluded the
discussion on EF. In the final chapter, you’ll learn database
programming using ADO.NET to connect to a MySQL database and
how to exercise SQL statements and stored procedures through your
C# applications. You will not find many materials that cover the use
of C# with MySQL (instead, you may see other RDBMS; for example,
Microsoft SQL Server), but I want to assure you that MySQL is a big
name and considered a top player in RDBMS. Most importantly, its
open source and widely used.
I believe that the code in this book is compatible with all the latest
and upcoming versions of C#. I have used Visual Studio, which is an
integrated development environment (IDE) from Microsoft. Although
you can run a C# application in many ways (for example, using
Notepad and command prompts), I opted for Visual Studio because
it’s very common and widely used in C# applications.
It’s important to note that apart from a few special programs, I used
.NET Core as my target framework, which simply uses C# 8.0. As per
Microsoft, the latest C# compiler can determine the default language
version based on the target framework(s). This is because the C#
language may use features that are used in specific .NET
implementation only. I recommend that you go to
https://docs.microsoft.com/en-
us/dotnet/csharp/language-reference/configure-
language-version if you are interested in C# versioning.
Please remember that as you learn about these concepts, try writing
your own code; only then will you master an area.
You can download all the source code in the book from Apress’s
website. I plan to maintain the errata, and I can also make any
necessary updates/announcements there. I suggest that you visit the
Errata pages to receive any corrections or updates.
Prerequisite Knowledge
The target readers for this book are those who are familiar with the
basic language constructs in C# and know about object-oriented
concepts like polymorphism, inheritance, abstraction, encapsulation,
and most importantly, know how to compile or run a C# application in
Visual Studio. This book does not invest time in topics that are easily
available, such as how to install Visual Studio on your system, how to
write a “Hello World” program in C#, or how to use an if-else statement
or a while loop. Instead, the book starts with a discussion on delegates.
As I said before, in this book, my focus is on the core constructs of
advanced C#, and I explain how these concepts can be learned and used
effectively. Finally, in Chapter 7, I have used some simple SQL queries.
Though their usage are clearly described and shown, but a minimum
knowledge of SQL can help you a lot.
Who This Book Is For
In short, you should read this book if the answer is “yes” to any of
the following questions.
Are you familiar with basic constructs in C# and familiar with basic
object-oriented concepts like polymorphism, inheritance,
abstraction, and encapsulation?
Do you know how to set up your coding environment?
Do you want to explore advanced programming in C# step by step?
Do you want to explore the following advanced C# topics: generic
programming, thread programming, asynchronous programming,
and database programming (using ADO.NET and MySQL)?
Are you want to know how the core constructs work behind the
advanced features?
You probably shouldn’t read this book if the answer is “yes” to
any of the following questions.
Are you totally new to C#?
Do you want to learn advanced concepts in C# excluding the topics
mentioned previously?
Do you want to explore the latest features of C# only?
Do you dislike a book that emphasizes Q&A sessions?
“I do not like Windows, Visual Studio, and .NET Core. I want to learn
and use C# without them.” Is this statement true for you?
“I prefer to use Entity Framework (EF) for my database programs,
and I do not like MySQL.” Is this statement true for you?
Guidelines for Using This Book
Here are some suggestions for you to use the book more effectively:
The first six chapters of the book are linked. So, I suggest you go
through the chapters sequentially. Also, it is possible that some
fundamental questions are discussed in the “Q&A Session” of a
previous chapter, and I have not repeated those in the later chapters.
Most of these programs are tested with C# 8.0 and I have used Visual
Studio (Community 2019, Version 16.3.9) IDE in a Windows 10
environment. When I started the book, I Started with the latest
versions available at that time. But as expected, version updates are
keep coming and I also kept updating. But all these versions details
should not matter much to you because I have used the fundamental
constructs of advanced C# only. So, I believe that these codes should
execute smoothly in the upcoming versions of C#/Visual studio as
well. There are only few exceptions, in which I used .NET Framework.
For example, in chapter 6, when you learn Asynchronous
programming, I have shown you implementations of
IAsyncResult patterns and event based asynchronous patterns.
These are not recommended (and supported) for upcoming
development. If you execute these programs in .NET Core 3.0, you’ll
receive following exception saying
System.PlatformNotSupportedException: 'Operation
is not supported on this platform. So, for these
examples, I used .NET Framework 4.7.2.
I tested some of these codes in different systems and different
environments (including online editors) and I always received the
expected output. With these experiments, I believe that the results
should not vary in other environments as well, but you know the
nature of software—it is naughty. So, I recommend that if you want to
see the exact same outputs, it will be better if you can mimic the
same environment.
Conventions Used in This book
All the output and code in the book follow the same font and structure.
To draw your attention, in some places, I have made the code bold. For
example, consider the following output fragment and the lines in bold.

Assigning an instance method to a delegate object.


Calling CalculateSum(..) method of OutsideProgram
class using a delegate.
Sum of 50 and 70 is: 120
delOb.Target=DelegateExample2.OutSideProgram
delOb.Target==null? False
delOb.Method=Int32 CalculateSum(Int32, Int32)

To print messages in a console, I used the traditional style, although


you may prefer to use string interpolation (which basically replaced the
need of String.Format(…)starting in C# 6.0). In most examples,
I use the following format.

Console.WriteLine("-{0} from Method1() prints


{1}", Thread.CurrentThread.Name, i);

But if you use string interpolation, you may write

Console.WriteLine($"{Thread.CurrentThread.Name}
from MyMethod() prints {i}");

I agree that the second one is more readable but to support legacy
code too, I opted for the traditional approach. Each of these approaches
works fine and not a blocker for you to understand a C# code but the
choice is up to you.
Final Words
I believe that the book is designed for you in such a way that upon its
completion, you will have developed an adequate knowledge of the
topics, you will have efficiently learned to use the advanced features of
this powerful language, and most importantly, you’ll know how to go
further.
Lastly, I hope that this book can help you and you will value the
effort.
Acknowledgments
At first, I thank the Almighty. I sincerely believe that with His blessings
only, could I complete this book. I extend my deepest gratitude and
thanks to the following people.
Ratanlal Sarkar and Manikuntala Sarkar: my dear parents, with your
blessings only, could I complete this work.
Indrani, my wife; Ambika, my daughter; and Aryaman, my son:
sweethearts, once again, without your love, I could not proceed at all. I
know that we need to limit many social gatherings and invitations to
complete my books on time and each time. I promise you that I’ll take a
long break and spend more time with you.
Sambaran, my brother: Thank you for your constant encouragement
towards me.
Carsten, my technical advisor: I know that whenever I was in need,
your support was there. Thank you one more time.
Shekhar, my another technical advisor: I am always thankful for all
your contributions in my previous books. I must acknowledge your
support for the newly added chapter in this edition.
Deepak, my ex-colleague cum senior: A special thanks to you for
investing your time in writing a foreword for my book. From the
moment when experts like you agreed to write for me, I got additional
motivation to enhance the quality of my work.
Celestin, Laura, Smriti, Shrikant: Thanks for giving me another
opportunity to work with you and Apress.
Krishnan, Rajan, Ramraj, Selvakumar, Pushparaj: Thank you for your
exceptional support to beautify my work. Your efforts are truly
extraordinary.
Lastly, I extend my deepest gratitude to my publisher, the editorial
board members, and everyone who directly or indirectly supported this
book.
Table of Contents
Part I: Getting Familiar with Building Blocks
Chapter 1:​Delegates
Definition
Demonstration 1
Q&​A Session
Comparing a Static Method with an Instance Method
Demonstration 2
Using Multicast Delegates
Demonstration 3
Q&​A Session
Demonstration 4
Q&​A Session
Demonstration 5
Q&​A Session
Variance in Delegates
Covariance in Delegates
Demonstration 6
Contravariance in Delegates
Demonstration 7
Q&​A Session
Final Words
Summary
Chapter 2:​Events
Demonstration 1
Output
Analysis
Q&​A Session
Creating Custom Events
Demonstration 2
Passing Data to an Event Argument
Demonstration 3
Using Event Accessors
Demonstration 4
Q&​A Session
Handling Interface Events
Demonstration 5
Q&​A Session
Handling Explicit Interface Events
Demonstration 6
Q&​A Session
Demonstration 7
Q&​A Session
Demonstration 8
Final Words
Summary
Chapter 3:​Lambda Expressions
The Usefulness of Lambda Expressions
Demonstration 1
Lambda Expression with (and Without) Parameters
Demonstration 2
Types of Lambda Expressions
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Expression-Bodied Members
Demonstration 3
Demonstration 4
Local Variables in a Lambda Expression
Demonstration 5
Using Tuples in a Lambda Expression
Demonstration 6
Event Subscription with Lambda Expressions
Demonstration 7
Q&​A Session
Final Words
Summary
Part II: Exploring Advanced Programming
Chapter 4:​Generic Programming
The Motivation Behind Generics
Demonstration 1
Demonstration 2
Demonstration 3
A Quick Look into the List Class
Demonstration 4
Generic Delegates
Func Delegate
Q&​A Session
Action Delegate
Predicate Delegate
Demonstration 5
Q&​A Session
The Default Keyword in Generics
Demonstration 6
Q&​A Session
Implementing Generic Interface
Demonstration 7
Q&​A Session
Generic Constraints
Demonstration 8
Q&​A Session
Using Covariance and Contravariance
Q&​A Session
Covariance with Generic Delegate
Demonstration 9
Covariance with Generic Interfaces
Demonstration 10
Contravariance with Generic Delegates
Demonstration 11
Contravariance with Generic Interface
Partial Implementation
Q&​A Session
Demonstration 12
Q&​A Session
Demonstration 13
Self-Referencing Generic Types
Demonstration 14
Q&​A Session
Demonstration 15
Q&​A Session
Final Words
Summary
Chapter 5:​Thread Programming
Foundations in Thread Programming
Q&​A Session
Coding Multithreaded Programs in C#
Using the ThreadStart Delegate
Demonstration 1
Demonstration 2
Q&​A Session
Using the ParameterizedThreadStart Delegate
Demonstration 3
Q&​A Session
Demonstration 4
Q&​A Session
Demonstration 5
Q&​A Session
Demonstration 6
Q&​A Session
Foreground Thread vs.​Background Thread
Demonstration 7
Thread Safety
A Non-Synchronized Version
Demonstration 8
A Synchronized Version
Demonstration 9
An Alternative Approach Using the Monitor Class
Deadlock
Types of Deadlock
Demonstration 10
Investigating the Deadlocked State in Visual Studio
Final Words
Summary
Chapter 6:​Asynchronous Programming
Overview
Using a Synchronous Approach
Demonstration 1
Using Thread Class
Demonstration 2
Q&​A Session
Using the ThreadPool Class
Demonstration 3
Q&​A Session
Using Lambda Expressions with ThreadPool
Demonstration 4
Using the IAsyncResult Pattern
Polling Using Asynchronous Delegates
Demonstration 5
Q&​A Session
Using the AsyncWaitHandle Property of IAsyncResult
Demonstration 6
Using Asynchronous Callback
Demonstration 7
Q&​A Session
Using an Event-based Asynchronous Pattern (EAP)
Demonstration 8
Q&​A Session
Understanding Tasks
Demonstration 9
Using a Task-based Asynchronous Pattern (TAP)
Demonstration 10
Demonstration 11
Q&​A Session
Using the async and await Keywords
Demonstration 12
Demonstration 13
Final Words
Summary
Chapter 7:​Database Programming
Database and DBMS
Types of DBMS
RDBMS
SQL
A Brief Discussion of ADO.​NET
Understanding the Code
Random documents with unrelated
content Scribd suggests to you:
Immers: kon hij niet, even goed als zij, verscheidene malen
achtereen over zijn hoofd buitelen?

Konden hij en Fannie geen kunsten vertoonen, die veel aardiger


waren dan alles, wat die twee beschilderde grappenmakers ten
beste gaven?

Zelfs in de stad was hij immers bewonderd en toegejuicht! Maar


Fannie begon geducht oud en stijf te worden: dat was erg jammer!

"Toch lijdt het geen twijfel," dacht Steven verder, "of ik zou even
goed, zoo niet beter, voor clown geschikt zijn dan de twee, die daar
telkens zoo uitbundig worden toegejuicht."

De kunstrijder poosde even en één der clowns nam nu de


gelegenheid waar om met dit heerschap een gesprek te beginnen.
Met zijn schorre, huilerige stem riep hij:

"Mijnheer de directeur, mag ik ook eens rijden?"

Maar deze antwoordde uit de hoogte:

"Och, clown, wat is dat nu voor gekheid? Je kunt immers


heelemaal niet rijden!"

De potsenmaker liet zich echter zóó maar niet afschepen; hij


verzocht dringend:

"Och toe, meneer de directeur, laat me 't maar eens probeeren!"

"Je zult armen en beenen breken, clown!" waarschuwde de


kunstrijder.

"Dat is voor mijn verantwoording, mijnheer de directeur!"

"In dat geval kun je mijnentwege jou gang gaan!"

De ruiter wipte van 't paard en reikte den clown de leidsels over.
"Och toe, help me even een handje!" verzocht deze. "'t Is zoo'n
toer om er alleen op te komen!"

"Kom aan! Opgepast dan! Huup-la!" zei de ruiter. Hij gaf daarop
zijn makker een duw, zoodat deze over 't paard heenvloog en met
een smak aan den anderen kant neerplofte.

Het paard bleef onder die bedrijven tot aller verwondering staan als
een paal.

De toeschouwers hieven een schaterlach aan; maar het luidst


lachte Steven. Het bleek nu immers duidelijk, dat zoo'n potsenmaker
niets anders kon doen, dan 't publiek door zijn zotte kluchten
vermaken.

De clown gaf het echter niet op. En zie! een volgende poging om 't
makke ros te bestijgen, gelukte boven verwachting.

Ja, daar zat hij er op! Maar hoe? Met zijn rug naar den kop van 't
paard gekeerd! Dat scheen hij echter volstrekt niet te merken;
althans: hij trok het geduldige beest aan den staart en riep: "Maar
directeur, dat paard heeft in 't geheel geen kop! Hoe gek toch!"

Algemeen geschater en gejuich van "'t geachte publiek", waaronder


vooral van Steven.

Niets was voorzeker gemakkelijker, dan voor clown te spelen.

Doch zie! daar doet eensklaps onze potsenmaker een stouten


sprong en zit in eens behoorlijk op 't paard, dat nu met hem
voortdraaft. Hij buitelt op den rug van 't dier over zijn hoofd, alsof
dit dagelijksch werk voor hem ware en verricht minstens even sterke
toeren, als "meneer de directeur" zelf.

Nu begon Steven tot zijn groote teleurstelling te begrijpen, dat een


clown op zijn beurt ook kunstrijder is en dat hij, Steven, daartoe niet
alleen de vereischte bekwaamheden mist, maar bovendien te
ongeoefend en te oud is, om 't ooit zoover te kunnen brengen.

En och! hij had zoo gehoopt, zich bij deze menschen te kunnen
aansluiten en bij hen niet alleen een werkkring maar zelfs een
prachtige toekomst te zullen vinden.

Nu begonnen ook bij afwisseling "de dames van 't spul" blijken van
hun kunstvaardigheid te geven.

Vlug, lenig en slank, veel meer dan de gewone boerenvrouwen en


meisjes, in een zwevend gewaad, dat armen en beenen volkomen
vrij liet en schitterde, als 't ware met flonkerende diamanten
bezaaid, zweefden ze op het paard voorbij als lichte,
bovennatuurlijke wezens uit het een of ander tooversprookje. Ze
sprongen door hoog opgehouden hoepels, zoo licht en bevallig alsof
haar lichaam geen het minste gewicht had. Dus beschreven ze als 't
ware schitterende tooverkringen, terwijl de muziek lustige
danswijzen speelde en de toeschouwers telkens weer losbarsten in
daverende toejuichingen en handgeklap.

Op die manier vloog de avond om. Een tweede avond volgde en


toen — was 't uit.
XIX.

Een crisis.

Toen Steven eenige dagen later tegen den avond nog eens de
plaats bezocht; waar de tent gestaan had, was de daglooner
Teunissen al bezig met er den grond om te spitten en in gereedheid
te brengen voor 't poten van de staak- of snijboonen.

Mismoedig keerde hij terug naar de straat, waar de dorpsjeugd zich


vermaakte met eenige bonte lappen en kleurige linten, welke door
de kunstenaars waren achtergelaten.

Steven doolde dien avond nog laat door 't dorp en den omtrek
rond. Hij had rust noch duur. Het leven, dat hem vroeger zoo
bekoorlijk had geschenen, had nu alle aantrekkelijkheid voor hem
verloren.

Toen hij voorbij de woning van den nachtwacht ging, herinnerde hij
zich zijn laatste gesprek met zijn vriendin Tonia. Evenals gewoonlijk
was ze ook nu vriendelijk jegens hem geweest, maar hij had een
droeven trek op haar lief gelaat bespeurd en ze had hem zeer
ernstig onder 't oog gebracht, dat hij den kostbaren tijd met
straatslijpen verkwistte, terwijl zijn goede vader zijn hulp zoozeer
behoefde.

Uit haar geheele gedrag jegens hem was hem duidelijk gebleken,
dat ze in de toekomst al heel weinig van hem hoopte. Dit had hem
te meer gegriefd, daar hij wist dat de zoon van den smid, een
algemeen geacht, werkzaam jongmensch, haar tot vrouw wenschte.

Beter dan ooit te voren begreep hij nu, dat zijn leven op mislukking
zou uitloopen.
Al voortgaande over de stille, donkere straat, raakte hij ten laatste
erg vermoeid. Hij huiverde en rilde en voelde zich doodziek. Zijn
hoofd gloeide en klopte.

Zoo bereikte hij weer het ouderlijk huis. Hij drukte 't hoofd tegen
de koude steenen om 't zoo te verkoelen. Toen werd hij zóó duizelig,
dat hij met de hand tastte naar eenig voorwerp om zich aan vast te
houden. Doch hij vond geen houvast en viel schavend langs den
muur. Daar lag hij, als dood.

Zijn verhit brein was intusschen werkzamer dan ooit.

In zijn koortsachtige droomen werd het v e r l e d e n weer


h e d e n . Hij bevond zich weer in de vriendelijke, gezellige,
ouderlijke woning. Zijn moeder was er weer, vroolijk, vol hoop en
goeden moed. Het speenvarkentje en Bles, ja alles was er weer,
zooals het geweest was in vroeger, gelukkiger tijden. Zelfs de oude
moeder Teunissen, die hem achter haar rokken verborgen had, als
hij niet naar school wilde, was in 't vertrek aanwezig. Ofschoon ze al
jaren geleden gestorven en 't kleinkind, dat ze zoo vaak in slaap
gewiegd en gezongen had, nu al bezig was om een handwerk te
leeren, — ze was er weer en wiegde ouder gewoonte datzelfde
kleinkind, terwijl ze zong, gelijk ze vroeger deed:

"Suja, suja kindjen!


Hoe ben je dan zoo stout?
Heb je pijn in 't buikjen,
Of zijn je voetjes koud?
Prikt je hier of daar een speld?
Is er een bandje, dat je knelt?
We zullen een vuurtje stoken;
We zullen een papje koken.
't Wiegjen dat gaat: tik-tak!
Voor den kleinen dikzak."

Steven gevoelde zich, ondanks zijn doodelijke matheid, gelukkig.


In zijn droomen toch genoot hij weer al de zelfopofferende liefde
van zijn vervlogen jeugd. Nachtegalen zongen hem weer in slaap, als
in zijn prille jeugd; de lucht was verkwikkend warm en bezwangerd
met den heerlijken geur van het klaverveld en de rozen, van de vlier,
den meidoorn en de kamperfoelie. Velden, weiden, boomen en
bosschen waren mooi groen; ze waren met dauwdroppels overdekt,
die schitterden in 't avondlicht als fonkelende juweelen. De
boschduiven koerden en de koekoek riep.

Hij vond zich opgenomen in den kring der schoone gelukkige


kinderen van 't kasteel Heiterloo; ze beminden hem als een broeder,
speelden met hem in den mooien tuin en genoten naar hartelust van
de heerlijke vruchten en zijn ouders stonden glimlachend, innig blij
toe te zien; ze verheugden zich in 't geluk van hun kind.

Wat later bevond hij zich in 't circus, onder de kunstrijders. Hij
deed ongeloofelijke toeren en werd door 't verbaasde publiek
uitbundig toegejuicht.

Maar een volgende maal spookten wilde droomen door zijn


ontsteld brein. In verbeelding bevond hij zich weer op 't
schuttersveld en schoot bij ongeluk den vader der arme Tonia dood.
Hij hoorde haar klagen en jammeren; hij zag hoe ze radeloos de
handen wrong en hij wenschte, dat de grond zich onder hem
opende en zich weer boven hem toesloot. Zijn vrienden stonden op
eenigen afstand verrast en verschrikt toe te zien; ze meden en
schuwden hem en de veldwachter trad op hem toe, deed hem de
boeien aan en leidde hem weg om hem in verzekerde bewaring te
brengen.

Ook de avontuurlijke tochten met Dronken Hannes doorleefde hij in


verbeelding weer.

Eens verscheen hem in zijn koortsige droomen zijn goede vader,


gebogen onder een zwaar pak, waarmee hij de klanten wilde
bezoeken.
Hoe vermoeid en lusteloos zag die vroeger zoo krasse, moedige
man er nu uit!

Hoe langzaam vorderde hij en wat leunde hij zwaar op zijn stok!

Steven kon het niet aanzien, dat hij zich zoo moest inspannen en
poogde op te staan, bij hem te komen en 't pak van hem over te
nemen, doch dit was hem geheel onmogelijk. Het was hem juist zoo,
of hij door sterke armen werd vastgehouden.

Hij was plotseling zwaar ziek geworden en toen hij aan den hoek
der ouderlijke woning was neergestort, hadden zijn vader en Tonia,
die er 't huiswerk verrichtte, dit gehoord; ze waren ijlings
toegeschoten en hadden hem te bed gebracht.

Dag en nacht moest er bij hem gewaakt worden. Zijn toestand was
uiterst bedenkelijk en 't stond te vreezen, dat hij er nooit weer van
zou opkomen.

XX.
Besluit.
Al stonden alle klokken in de wereld stil, toch bleef de tijd
ongestoord zijn gang gaan; zoowel op 't kleinste dorpje als in de
grootste wereldstad; zoowel in de poolstreken als onder den
evenaar.

Alles ontwikkelt zich langzaam en geleidelijk tot zijn volle kracht en


schoonheid. Dan gaat het weer kwijnen en sterven en plaats maken
voor iets anders.

Alles werkt.

De poolrivier, tot op de bodem toe bevroren, moge ook al


onbewegelijk schijnen, inderdaad wordt ze door de persing der
hooger gelegen ijsmassa's en eigen zwaarte langs de hellende
bedding voortgestuwd en in zee gedrongen, waar ze in den vorm
van ijsbergen haar reis in de wereld vervolgt.

Over 't v e r l e d e n heeft niemand macht. Alleen het h e d e n


levert ons een sport in de ladder, waarlangs we, al klimmend, vaak
met veel moeite, onze bestemming bereiken.

Hoe geheimzinnig eenzaam verheft zich daar in de stille streek,


met het groote, wildrijke bosch tot achtergrond het kasteel
Heiterloo.

De paden die om 't kasteel en door 't bosch slingeren, zijn weer
netjes geharkt, evenals in vervlogen tijden, toen daarover de
schoone, levenslustige kinderen der adelijke bewoners in witte of
wel kleurige sierlijke kleedjes, "als door feeënhand geknipt",
zweefden en streefden.

Als die schoone, vroolijke jeugd hier nu verscheen, welk een


eigenaardig contrast zou ze vormen met de twee jongelieden in hun
eenvoudige kleederdracht, die hier zoo vertrouwelijk hand in hand
voortgaan.
Toch is ook hun Zondagspak heel netjes; 't getuigt van een goeden
smaak en zit hun als aan 't lijf gegoten.

't Zijn onze bekenden, Steven de Laat en Tonia van den


nachtwacht.

Steven is van zijn gevaarlijke ziekte gelukkig hersteld. Hij heeft nu


al gedurende twee jaren zijn vader in de nog steeds bloeiende zaak
bijgestaan en in den laatsten tijd het reizen daarvoor geheel op zich
genomen. Dat reizen gaat ook veel vlugger en gemakkelijker, dan in
zijn vaders jongen tijd; de meeste plaatsen kan hij per trein of tram
bereiken. Bovendien zijn tengevolge der nieuwe verkeersmiddelen,
in verband met de uitbreiding der politiemacht, de wegen overal in
ieder uur van den nacht te passeeren, zonder door roovers te
worden bemoeilijkt.

Sinds eenige weken zijn Steven en Tonia getrouwd. Nu doen ze


samen een uitstapje naar 't kasteel Heiterloo, dat voor Steven steeds
zulk een groote aantrekkingskracht heeft bezeten. De adelijke familie
vertoeft nog in 't buitenland en de tuinman, aan wien hij jaarlijks
zaden levert, gaf hem gaarne toestemming, om met zijn jonge
vrouw het schoone park te bezichtigen. Dat park, zoo keurig
onderhouden, is dan ook een bezoek overwaard. Een aantal groote
goudkarpers zwemmen troepsgewijs in de heldere vijvers.
Waterleliën van verschillende kleuren vertoonen zich boven de
oppervlakte, waarin perken met mooie zeldzame bloemen en
sierheesters zich spiegelen.

Tonia, die nooit iets dergelijks zag, is één en al bewondering. Aan 't
einde van één der vijvers, tusschen zeldzame struiken, welks kleurig
loover blinkt in den zonneschijn, zijn twee groote ruiten
aangebracht, de eene van rood en de andere van blauw glas.

De jonge vrouw staart door de eerste ruit en ziet nu alles in rooden


schijn: het water, de bloemen, de struiken en boomen, de blauwe
lucht en de vluchtige wolkjes, die er hier en daar langs zweven. Van
verbazing slaat ze de handen samen. "Och, hoe verwonderlijk mooi
is hier alles!" zegt ze.

"Kijk nu eens door 't blauwe glas!" zegt haar man, blijde dat zijn
lieve vrouw zoo buitengewoon veel genot smaakt bij dit uitstapje.

Zij doet het en nu is alles mooi blauw.

Daar dicht bij op een hoogte staat een koepel, tot boven toe als
omlijst met bloeiende rozen. De lucht is vervuld van de geuren der
bloemen. In 't hoog geboomte daar achter zingen de vogels als om
strijd.

In dien koepel zetten ze zich op de bank neder en genieten van 't


bekoorlijk uitzicht. Dan gaan ze weer bewonderend voort over de
breede, kronkelende wandelpaden, door hooge sierheesters aan 't
gezicht onttrokken en na een bruggetje, over de gracht die de
vijvers verbindt, te zijn gepasseerd, opent zich rechts een lange
wandeling, met aan weerskanten een dichte haag van bloeiende
rozen, die boven hun hoofden een sierlijk gewelf van geurige
bloemen vormen.

"Och, hoe heerlijk!" zegt de jonge vrouw.

"Het mooiste komt nog!" zegt haar man. "Kom, gaan we den
rozendoolhof eens zien!"

Ze treden er binnen en gaan bewonderend voort over de


kronkelende paden, die een kunstig geheel, een doolhof vormen,
waarin 't niet gemakkelijk is den weg te vinden. Maar hoe
genoegelijk is 't hier, om te dolen! De paden zijn er aan weerszijden
ingesloten door een dicht net van hooge rozenstruiken, die van
onder tot boven vol bloemen zitten. 't Is er een bloemenwereld, die
men meenen zou alleen in 't warm en zonnig Oosten te zullen
vinden.
Na eenig zoeken bereiken ze 't midden, waar, tusschen zeldzame
gewassen, rotswerken en leuke beeldengroepen te zien zijn. Aardige
dwergen staan er gereed om ter jacht te gaan; ze blazen op horens,
zijn met een of ander handwerk bezig of zitten rustig een pijp te
rooken. Een vos speelt er voor barbier en staat er heel deftig met
een ernstig gezicht een haas te scheren. Jonge hazen zitten er om
rond en kijken nieuwsgierig toe. Men vindt er konijnen, kippen met
een haan aan 't hoofd, kikvorschen en zoo al meer, alles in
natuurlijke grootte.

Op een bank zetten zij zich neer, arm in arm, gelukkig in elkanders
bezit.

De bloemen keeren hun kleurige kelken naar de zon; ze drinken als


't ware het reine licht en de koesterende warmte met volle teugen
in. De lucht is geheel vervuld met haar zoete geuren. 't Is, als
ademde men hier in een droomwereld.

Toen ons jeugdig paartje weer huiswaarts ging door de schoone,


stille streek, zoo gelukkig als menschen maar wezen kunnen, breidde
zich ook daarbuiten de wereld om hen heen uit in heerlijken
zonneschijn. De vogels zongen hun mooiste lied; bonte vlinders
zweefden rond en puurden geurigen nectar uit de bloemen, die als
met kwistige hand voor hun voeten waren gestrooid.

Nog eens zien ze om naar het eeuwenoud gebouw.

De windvaan op den toren wijst naar 't zoele Zuiden en schittert


hen tegen, als ware ze van een edel metaal gesmeed, "waar,
goudener dan goud, het goud geen proef bij houdt."

EINDE.
Transcriber's Notes:

Het papieren boek accentueert sommige woorden met uitgebreidere


letterafstand ("expanded letter-spacing"). In de 'platte-tekst'-versie wordt
dit met underscores aangegeven:

_gespatieerde tekst_ → g e s p a t i e e r d e t e k s t

Bladzijdenummers zijn in de 'platte-tekst'-versie weggelaten. In de HTML-


versie zijn ze wel zichtbaar, maar virtueel, wat het voordeel heeft dat u kunt
zoeken op tekst-fragmenten zonder dat de bladzijde-nummers het zoeken
hinderen.

Als u de weergave van de bladzijde-nummers wilt aanpassen, kijk dan met


een tekstverwerker in het <style> blok naar de CSS-klassen [.pagenum]
(voor bladzijde-nummers) en [.hyphen] voor afbreekstreepjes

Voor het gemak van de lezer is een lijst van illustraties toegevoegd na de
inhoudsopgave (alleen in de "HTML"-versie).

Voor de hand liggende interpunctie fouten zijn gecorrigeerd maar worden


hier verder niet genoemd.

Dit boek bevat een aantal zetfouten.


De volgende zetfouten zijn gecorrigeerd:

[sprak vrouw Verlaat.] → [sprak vrouw Verlaar.]


Ook al komt de achternaam "Verlaat" 1x voor, uit de context is op te
maken dat dit "Verlaar" moet zijn.

[kleine tuschenpoozen] → [kleine tusschenpoozen]

[Hoe de kleine Steven zijn speelmaker verloor.] →


[Hoe de kleine Steven zijn speelmakker verloor.]
Staat in de inhoudsopgave goed, maar fout verderop in het boek.

[maar zelf zijn kleeren] → [maar zelfs zijn kleeren]


[toe ze den hun] → [toen ze den hun]

[hadden beooordeeld en ze] → [hadden beoordeeld en ze]

[bakkers Antoon is] → [bakker Antoon is]


"bakkers" is meervoud van "bakker" terwijl het hier maar één
persoon betreft. Bovendien is verderop in de tekst sprake van
"Antoon van den bakker" en ook is er een "bakker Joosten" waarin
ook geen meervoud is gebruikt.

[was op somige plaatsen] → [was op sommige plaatsen]

[tevens vor de] → [tevens voor de]

[overal de opene plekken] → [overal de open plekken]

[die blijk-blijkbaar zijn] → [die blijkbaar zijn]

[stappen waren onstaan.] → [stappen waren ontstaan.]

[dat de Liefde de meeste is.] → [dat de Liefde de meester is.]

[XX. esluit.] → [XX. Besluit.]


Staat in de inhoudsopgave goed, maar fout verderop in het boek.

[is 't, hier om te] → [is 't hier, om te]

Mogelijke zetfouten die niet gecorrigeerd zijn:

[lekte de twee]
Deze schrijfwijze, "lekte", komt 2x voor, terwijl de hedendaagse
schrijfwijze "likte" ook 1x voor komt. Dit is niet gecorrigeerd.

[Stins] / [Stint]
Beiden zijn achternamen voor dezelfde persoon en beiden komen 1x
voor. Welke juist is, blijft onduidelijk, en daarom is dit niet
gecorrigeerd.

[rojaal] en [rojaalsten]
Of deze spelling in 1916 gangbaar was, kon niet worden
achterhaald.
*** END OF THE PROJECT GUTENBERG EBOOK LANGS
SLINGERPADEN ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States
copyright in these works, so the Foundation (and you!) can copy
and distribute it in the United States without permission and
without paying copyright royalties. Special rules, set forth in the
General Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the


free distribution of electronic works, by using or distributing this
work (or any other work associated in any way with the phrase
“Project Gutenberg”), you agree to comply with all the terms of
the Full Project Gutenberg™ License available with this file or
online at www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand,
agree to and accept all the terms of this license and intellectual
property (trademark/copyright) agreement. If you do not agree
to abide by all the terms of this agreement, you must cease
using and return or destroy all copies of Project Gutenberg™
electronic works in your possession. If you paid a fee for
obtaining a copy of or access to a Project Gutenberg™
electronic work and you do not agree to be bound by the terms
of this agreement, you may obtain a refund from the person or
entity to whom you paid the fee as set forth in paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only


be used on or associated in any way with an electronic work by
people who agree to be bound by the terms of this agreement.
There are a few things that you can do with most Project
Gutenberg™ electronic works even without complying with the
full terms of this agreement. See paragraph 1.C below. There
are a lot of things you can do with Project Gutenberg™
electronic works if you follow the terms of this agreement and
help preserve free future access to Project Gutenberg™
electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright
law in the United States and you are located in the United
States, we do not claim a right to prevent you from copying,
distributing, performing, displaying or creating derivative works
based on the work as long as all references to Project
Gutenberg are removed. Of course, we hope that you will
support the Project Gutenberg™ mission of promoting free
access to electronic works by freely sharing Project Gutenberg™
works in compliance with the terms of this agreement for
keeping the Project Gutenberg™ name associated with the
work. You can easily comply with the terms of this agreement
by keeping this work in the same format with its attached full
Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.

1.E. Unless you have removed all references to Project


Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project
Gutenberg™ work (any work on which the phrase “Project
Gutenberg” appears, or with which the phrase “Project
Gutenberg” is associated) is accessed, displayed, performed,
viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United


States and most other parts of the world at no cost and
with almost no restrictions whatsoever. You may copy it,
give it away or re-use it under the terms of the Project
Gutenberg License included with this eBook or online at
www.gutenberg.org. If you are not located in the United
States, you will have to check the laws of the country
where you are located before using this eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is


derived from texts not protected by U.S. copyright law (does not
contain a notice indicating that it is posted with permission of
the copyright holder), the work can be copied and distributed to
anyone in the United States without paying any fees or charges.
If you are redistributing or providing access to a work with the
phrase “Project Gutenberg” associated with or appearing on the
work, you must comply either with the requirements of
paragraphs 1.E.1 through 1.E.7 or obtain permission for the use
of the work and the Project Gutenberg™ trademark as set forth
in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is


posted with the permission of the copyright holder, your use and
distribution must comply with both paragraphs 1.E.1 through
1.E.7 and any additional terms imposed by the copyright holder.
Additional terms will be linked to the Project Gutenberg™
License for all works posted with the permission of the copyright
holder found at the beginning of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files
containing a part of this work or any other work associated with
Project Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute


this electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the
Project Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™
works unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or


providing access to or distributing Project Gutenberg™
electronic works provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project


Gutenberg™ electronic work or group of works on different
terms than are set forth in this agreement, you must obtain
permission in writing from the Project Gutenberg Literary
Archive Foundation, the manager of the Project Gutenberg™
trademark. Contact the Foundation as set forth in Section 3
below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on,
transcribe and proofread works not protected by U.S. copyright
law in creating the Project Gutenberg™ collection. Despite these
efforts, Project Gutenberg™ electronic works, and the medium
on which they may be stored, may contain “Defects,” such as,
but not limited to, incomplete, inaccurate or corrupt data,
transcription errors, a copyright or other intellectual property
infringement, a defective or damaged disk or other medium, a
computer virus, or computer codes that damage or cannot be
read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except


for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU AGREE
THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT
EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE
THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY
DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE
TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE
NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person
or entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.

1.F.4. Except for the limited right of replacement or refund set


forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’,
WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of
damages. If any disclaimer or limitation set forth in this
agreement violates the law of the state applicable to this
agreement, the agreement shall be interpreted to make the
maximum disclaimer or limitation permitted by the applicable
state law. The invalidity or unenforceability of any provision of
this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the


Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and
distribution of Project Gutenberg™ electronic works, harmless
from all liability, costs and expenses, including legal fees, that
arise directly or indirectly from any of the following which you
do or cause to occur: (a) distribution of this or any Project
Gutenberg™ work, (b) alteration, modification, or additions or
deletions to any Project Gutenberg™ work, and (c) any Defect
you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new
computers. It exists because of the efforts of hundreds of
volunteers and donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project
Gutenberg™’s goals and ensuring that the Project Gutenberg™
collection will remain freely available for generations to come. In
2001, the Project Gutenberg Literary Archive Foundation was
created to provide a secure and permanent future for Project
Gutenberg™ and future generations. To learn more about the
Project Gutenberg Literary Archive Foundation and how your
efforts and donations can help, see Sections 3 and 4 and the
Foundation information page at www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-
profit 501(c)(3) educational corporation organized under the
laws of the state of Mississippi and granted tax exempt status
by the Internal Revenue Service. The Foundation’s EIN or
federal tax identification number is 64-6221541. Contributions
to the Project Gutenberg Literary Archive Foundation are tax
deductible to the full extent permitted by U.S. federal laws and
your state’s laws.

The Foundation’s business office is located at 809 North 1500


West, Salt Lake City, UT 84116, (801) 596-1887. Email contact
links and up to date contact information can be found at the
Foundation’s website and official page at
www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission
of increasing the number of public domain and licensed works
that can be freely distributed in machine-readable form
accessible by the widest array of equipment including outdated
equipment. Many small donations ($1 to $5,000) are particularly
important to maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws


regulating charities and charitable donations in all 50 states of
the United States. Compliance requirements are not uniform
and it takes a considerable effort, much paperwork and many
fees to meet and keep up with these requirements. We do not
solicit donations in locations where we have not received written
confirmation of compliance. To SEND DONATIONS or determine
the status of compliance for any particular state visit
www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states


where we have not met the solicitation requirements, we know
of no prohibition against accepting unsolicited donations from
donors in such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot


make any statements concerning tax treatment of donations
received from outside the United States. U.S. laws alone swamp
our small staff.

Please check the Project Gutenberg web pages for current


donation methods and addresses. Donations are accepted in a
number of other ways including checks, online payments and
credit card donations. To donate, please visit:
www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could
be freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose
network of volunteer support.

Project Gutenberg™ eBooks are often created from several


printed editions, all of which are confirmed as not protected by
copyright in the U.S. unless a copyright notice is included. Thus,
we do not necessarily keep eBooks in compliance with any
particular paper edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg
Literary Archive Foundation, how to help produce our new
eBooks, and how to subscribe to our email newsletter to hear
about new eBooks.

You might also like