You are on page 1of 14

INTRODUCTION TO JAVA

Java programming language was originally developed by Sun Microsystems, which was initiated by James Gosling and released in 1995 as core component of Sun Microsystem Java platform (Java 1.0 [J2SE]).With the advancement of Java and its wide spread popularity, multiple configurations were built to suite various types of platforms. Ex: J2EE for Enterprise Applications, J2ME for Mobile Applications. Java is guaranteed to be Write Once, Run Anywhere Java is:

 

         

Object Oriented : In java everything is an Object. Java can be easily extended since it is based on the Object model. Platform independent: Unlike many other programming languages including C and C++ when Java is compiled, it is not compiled into platform specific machine, rather into platform independent byte code. This byte code is distributed over the web and interpreted by virtual Machine (JVM) on whichever platform it is being run. Simple :Java is designed to be easy to learn. If you understand the basic concept of OOP java would be easy to master. Secure : With Java.s secure feature it enables to develop virus-free, tamper-free systems. Authentication techniques are based on public-key encryption. Architectural- neutral :Java compiler generates an architecture-neutral object file format which makes the compiled code to be executable on many processors, with the presence Java runtime system. Portable :being architectural neutral and having no implementation dependent aspects of the specification makes Java portable. Compiler and Java is written in ANSI C with a clean portability boundary which is a POSIX subset. Robust :Java makes an effort to eliminate error prone situations by emphasizing mainly on compile time error checking and runtime checking. Multi-threaded : With Java’s multi-threaded feature it is possible to write programs that can do many tasks simultaneously. Interpreted :Java byte code is translated on the fly to native machine instructions and is not stored anywhere. High Performance: With the use of Just-In-Time compilers Java enables high performance. Distributed :Java is designed for the distributed environment of the internet. Dynamic : Java is considered to be more dynamic than C or C++ since it is designed to adapt to an evolving environment. Java programs can carry extensive amount of run-time information that can be used to verify and resolve accesses to objects on run-time.

When we consider a Java program it can be defined as a collection of objects that communicate via invoking each others methods. Let us now briefly look into what do class, object, methods and instant variables mean.

   

Object - Objects have states and behaviors. Example: A dog has states-color, name, breed as well as behaviors -wagging, barking, eating. An object is an instance of a class. Class - A class can be defined as a template/ blue print that describe the behaviors/states that object of its type support. Methods - A method is basically a behavior. A class can contain many methods. It is in methods where the logics are written, data is manipulated and all the actions are executed. Instant Variables - Each object has its unique set of instant variables. An object.s state is created by the values assigned to these instant variables.

. variables. variables and methods are called identifiers. Methods. LARGE } FreshJuiceSize size. There are two categories of modifiers. The values in this enumerated list are called enums. Most importantly identifiers are case sensitive. protected. Names used for classes. FreshJuiceSize. However an Array itself is an object on the heap. In java there are several points to remember about identifiers. currency character ($) or an underscore (-). Enums restrict a variable to have one of only a few predefined values. MEDUIM.With the use of enums it is possible to reduce the number of bugs in your code.MEDUIM . __1_value Examples of illegal identifiers : 123abc. constructors can be defined inside enums as well. After the first character identifiers can have any combination of characters. $salary. juice. -salary Java Modifiers: Like other languages it is possible to modify classes.0.Java Identifiers: All java components require names. } public class FreshJuiceTest{ public static void main(String args[]){ FreshJuice juice = new FreshJuice(). abstract. Java Enums: Enums were introduced in java 5. A key word cannot be used as an identifier. They are as follows:       All identifiers should begin with a letter (A to Z or a to z ). public . methods etc by using modifiers.   Access Modifiers : defualt. Example: class FreshJuice{ enum FreshJuiceSize{ SIZE. private Non-access Modifiers : final. _value.size = FreshJuice. strictfp Java Variables:    Local Variables Class Variables (Static Variables) Instance Variables (Non static variables) Java Arrays: Arrays are objects that store multiple variables of the same type. Examples of legal identifiers:age. } } Note: enums can be declared as their own or inside a class.

*/ System. abstract byte class do extends for import long private short switch throws volatile assert case const double final goto instanceof native protected static synchronized transient while boolean catch continue else finally if int new public strictfp this try break char default enum float implements interface package return super throw void Comments in Java: Java supports single line and multi-line comments very similar to c and c++.println("Hello World").out. } } . */ public static void main(String []args){ // This is an example of single line comment /* This is also an example of single line comment. public class MyFirstJavaProgram{ /* This is my first java program. * This will print 'Hello World' as the output * This is an example of multi-line comments.Java Keywords: The following list shows the reserved words in Java. All characters available inside any comment are ignored by Java compiler.

but problems that arise beyond the control of the user or the programmer. They are also ignored at the time of compilation.    Checked exceptions: A checked exception is an exception that is typically a user error or a problem that cannot be foreseen by the programmer.Exception class. For example. and others by physical resources that have failed in some manner. an error will arise. Errors: These are not exceptions at all. if a file is to be opened. but the file cannot be found. The exception class is a subclass of the Throwable class. Other than the exception class there is another subclass called Error which is derived from the Throwable class. These conditions normally happen in case of severe failures.lang. Errors are generated to indicate errors generated by the runtime environment. if a stack overflow occurs. Some of these exceptions are caused by user error. . Errors are typically ignored in your code because you can rarely do anything about an error. As opposed to checked exceptions. These exceptions cannot simply be ignored at the time of compilation. which are not handled by the java programs. Normally programs cannot recover from errors. Runtime exceptions: A runtime exception is an exception that occurs that probably could have been avoided by the programmer. Errors are not normally trapped form the Java programs. an exception occurs. Example : JVM is out of Memory. For example. Exception Hierarchy: All exception classes are subtypes of the java. The Exception class has two main subclasses : IOException class and RuntimeException Class. An exception can occur for many different reasons.EXCEPTION HANDLING An exception is a problem that arises during the execution of a program. others by programmer error. runtime exceptions are ignored at the time of compliation.

2 3 4 5 6 A method catches an exception using a combination of the try and catch keywords. public String toString() Returns the name of the class concatenated with the result of getMessage() public void printStackTrace() Prints the result of toString() along with the stack trace to System. If the type of exception that occurred is listed in a catch block. the exception is passed to the catch block much as an argument is passed into a method parameter. public Throwable fillInStackTrace() Fills the stack trace of this Throwable object with the current stack trace. . the catch block (or blocks) that follows the try is checked. and the syntax for using try/catch looks like the following: try { //Protected code }catch(ExceptionName e1) { //Catch block } A catch statement involves declaring the type of exception you are trying to catch. public Throwable getCause() Returns the cause of the exception as represented by a Throwable object. public StackTraceElement [] getStackTrace() Returns an array containing each element on the stack trace. This message is initialized in the Throwable constructor. The element at index 0 represents the top of the call stack. adding to any previous information in the stack trace. If an exception occurs in protected code. A try/catch block is placed around the code that might generate an exception. SN 1 Methods with Description public String getMessage() Returns a detailed message about the exception that has occurred. the error output stream.err.Following is the list of important methods available in the Throwable class. Code within a try/catch block is referred to as protected code. and the last element in the array represents the method at the bottom of the call stack.

interfaces. you should choose a name for the package and put a packagestatement with that name at the top of every source file that contains the classes. interface Animal { public void eat().io . Some of the existing packages in Java are::   java. interfaces. If a package statement is not used then the class. the package name does not need to be used. annotations are related. enumerations. interfaces. Example: Let us look at an example that creates a package called animals.java */ package animals. output functions are bundled in this package Programmers can define their own packages to bundle group of classes/interfaces etc. interfaces. and it applies to all types in the file. Creating a package: When creating a package. interfaces. public void travel().classes for input .lang . It is common practice to use lowercased names of packages to avoid any conflicts with the names of classes. and annotation types that you want to include in the package. The package statement should be the first line in the source file. to make searching/locating and usage of classes. it is easier to provide access control and it is also easier to locate the related classed. } The import Keyword: If a class wants to use another class in the same package. and annotation types will be put into an unnamed package.bundles the fundamental classes java. enumerations. For example: . Classes in the same package find each other without any special syntax. enumerations and annotations ) providing access protection and name space management. interfaces. Since the package creates a new namespace there won't be any name conflicts with names in other packages. enumerations and annotations easier etc. enumerations. It is a good practice to group related classes implemented by you so that a programmers can easily determine that the classes.  The package can be imported using the import keyword and the wild card (*). Using packages. Put an interface in the package animals: /* File name : Animal.PACKAGES Packages are used in Java in-order to prevent naming conflicts. A Package can be defined as a grouping of related types(classes. to control access. There can be only one package statement in each source file.

. Note: A class file can contain any number of import statements. The import statements must appear after the package statement and before the class declaration.  The class itself can be imported using the import keyword.\vehicle\Car. For example: import payroll.java (in windows) .Car Path name -> vehicle\Car. enumeration.java   Class name -> vehicle.. The Directory Structure of Packages: Two major results occur when a class is placed in a package:   The name of the package becomes a part of the name of the class. } Now put the source file in a directory whose name reflects the name of the package to which the class belongs: .import payroll. interface.*. as we just discussed in the previous section..java Now the qualified class name and pathname would be as below: Car. For example: // File Name : package vehicle. public class Car { // Class implementation. or annotation type in a text file whose name is the simple name of the type and whose extension is .java. Here is simple way of managing your files in java: Put the source code for a class. The name of the package must match the directory structure where the corresponding bytecode resides.Employee.

Example: Let us look at an example that depicts encapsulation: /* File name : NameOfInterface. If a class does not perform all the behaviors of the interface. all the methods of the interface need to be defined in the class. the class must declare itself as abstract.*.java */ import java. static fields //Any number of abstract method declarations\ } Interfaces have the following properties:    An interface is implicitly abstract. Writing an interface is similar to writing a class. you can think of the class as signing a contract. Each method in an interface is also implicitly abstract. An interface contains behaviours that a class implements. agreeing to perform the specific behaviors of the interface. Methods in an interface are implicitly public. An interface is not a class.INTERFACES An interface is a collection of abstract methods. //Any number of import statements public interface NameOfInterface { //Any number of final. flexibility and extensibility to our code. Unless the class that implements the interface is abstract. A class implements an interface. but they are two different concepts. Access to the data and code is tightly controlled by an interface. The main benefit of encapsulation is the ability to modify our implemented code without breaking the code of others who use our code. thereby inheriting the abstract methods of the interface. A class describes the attributes and behaviors of an object. so the abstract keyword is not needed. Declaring Interfaces: The interface keyword is used to declare an interface. Here is a simple example to declare an interface: Encapsulation can be described as a protective barrier that prevents the code and data being randomly accessed by other code defined outside the class. With this feature Encapsulation gives maintainability. .lang. Implementing Interfaces: When a class implements an interface. You do not need to use the abstract keyword when declaring an interface.

A class can extend only one class. For example.EventListener. An implementation class itself can be abstract and if so interface methods need not be implemented.A class uses the implements keyword to implement an interface. The extends keyword is used to extend an interface.awt.event package extended java. When implementation interfaces there are several rules:    A class can implement more than one interface at a time. Multiple inheritance is not allowed. and the parent interfaces are declared in a comma-separated list. The signature of the interface method and the same return type or subtype should be maintained when overriding the methods. public interface EventListener {}    An interface with no methods in it is referred to as a tagging interface. you can use a tagging interface to create a common parent among a group of interfaces. which is extended by dozens of other interfaces in the Java API. For example. it would be declared as: public interface Hockey extends Sports. but implement many interface. For example. Extending Interfaces: An interface can extend another interface. however. An interface itself can extend another interface. and the child interface inherits the methods of the parent interface. Extending Multiple Interfaces: A Java class can only extend one parent class. Interfaces are not classes. The extends keyword is used once. and an interface can extend more than one parent interface. if the Hockey interface extended both Sports and Event. The implements keyword appears in the class declaration following the extends portion of the declaration. similarly to the way that a class can extend another class.util.util. the MouseListener interface in the java. An interface cannot extend another interface. the JVM knows that this particular interface is going to be used in an event delegation scenario. Event   Tagging Interfaces: The most common use of extending interfaces occurs when the parent interface does not contain any methods. which is defined as: package java. when an interface extends EventListener. . When overriding methods defined in interfaces there are several rules to be followed:    Checked exceptions should not be declared on implementation methods other than the ones declared by the interface method or subclasses of those declared by the interface method. There are two basic design purposes of tagging interfaces: Creates a common parent: As with the EventListener interface.

Stack. The collections framework was designed to meet several goals. The framework had to allow different types of collections to work in a similar manner and with a high degree of interoperability. linked lists. they are reusable data structures. SN 1 2 3 4 5 6 7 Interfaces with Description The Collection Interface This enables you to work with groups of objects. Maps store key/value pairs. of these interfaces are provided that you may use as-is and you may also implement your own collection. 2. The List Interface This extends Collection and an instance of List stores an ordered collection of elements. Vector. The Collection Interfaces: The collections framework defines several interfaces. interfaces generally form a hierarchy. Classes: These are the concrete implementations of the collection interfaces. the framework defines several map interfaces and classes. Algorithms: These are the methods that perform useful computations. In essence. Implementations i. the same method can be used on many different implementations of the appropriate collection interface. 3. . unifying theme. Interfaces: These are abstract data types that represent collections. they lacked a central. The algorithms are said to be polymorphic: that is. andProperties to store and manipulate groups of objects. Java provided ad hoc classes such as Dictionary. The framework had to be high-performance. if you choose. the way that you used Vector was different from the way that you used Properties. trees. 2. on objects that implement collection interfaces. and hash tables) are highly efficient. which must contain unique elements The SortedSet This extends Set to handle sorted sets The Map This maps unique keys to values.e. Interfaces allow collections to be manipulated independently of the details of their representation. Thus. it is at the top of the collections hierarchy.Entry This describes an element (a key/value pair) in a map. such as searching and sorting. The SortedMap This extends Map so that the keys are maintained in ascending order. 1. All collections frameworks contain the following: 1. HashSet. the entire collections framework is designed around a set of standard interfaces. Although these classes were quite useful. Toward this end. In object-oriented languages. In addition to collections. A collections framework is a unified architecture for representing and manipulating collections. The implementations for the fundamental collections (dynamic arrays. and TreeSet. The Map. 3. The Set This extends Collection to handle sets. This is an inner class of Map. Extending and/or adapting a collection had to be easy. but they are fully integrated with collections. Several standard implementations such as LinkedList. Although maps are not collections in the proper use of the term.COLLECTION FRAMEWORK Prior to Java 2.

The standard collection classes are summarized in the following table: SN 1 2 3 Classes with Description AbstractCollection Implements most of the Collection interface. WeakHashMap Extends AbstractMap to use a hash table with weak keys. The Collection Classes: Java provides a set of standard collection classes that implement Collection interfaces. 4 5 6 7 8 9 10 11 12 13 14 15 The AbstractCollection. HashSet Extends AbstractSet for use with a hash table.8 The Enumeration This is legacy interface and defines the methods by which you can enumerate (obtain one at a time) the elements in a collection of objects. AbstractList. AbstractSet. LinkedHashMap Extends HashMap to allow insertion-order iterations. AbstractMap Implements most of the Map interface. This legacy interface has been superceded by Iterator. AbstractList Extends AbstractCollection and implements most of the List interface. LinkedHashSet Extends HashSet to allow insertion-order iterations. AbstractSequentialList Extends AbstractList for use by a collection that uses sequential rather than random access of its elements. TreeMap Extends AbstractMap to use a tree. AbstractSet Extends AbstractCollection and implements most of the Set interface. providing skeletal implementations that are used as starting points for creating concrete collections. HashMap Extends AbstractMap to use a hash table. Extends AbstractSet. TreeSet Implements a set stored in a tree. IdentityHashMap Extends AbstractMap and uses reference equality when comparing documents. ArrayList Implements a dynamic array by extending AbstractList. AbstractSequentialList and AbstractMap classes provide skeletal implementations of the core collection interfaces. . LinkedList Implements a linked list by extending AbstractSequentialList. Some of the classes provide full implementations that can be used as-is and others are abstract class. to minimize the effort required to implement them.

Life Cycle of a Thread: A thread goes through various stages in its life cycle. Following diagram shows complete life cycle of a thread. For example. It remains in this state until the program starts the thread. A thread in this state transitions back to the runnable state when that time interval expires or when the event it is waiting for occurs. it must be a part of a process. runs. It is also referred to as a born thread. Multithreading enables you to write very efficient programs that make maximum use of the CPU. Timed waiting: A runnable thread can enter the timed waiting state for a specified interval of time.MULTITHREADING Java provides built-in support for multithreaded programming. A process remains running until all of the nondaemon threads are done executing.A thread transitions back to the runnable state only when another thread signals the waiting thread to continue executing. and each thread defines a separate path of execution. because idle time can be kept to a minimum. Above mentioned stages are explained here:     New: A new thread begins its life cycle in the new state. A thread cannot exist on its own. Runnable: After a newly born thread is started. A multithreading is a specialized form of multitasking. and then dies. Each part of such a program is called a thread. the thread becomes runnable. A multithreaded program contains two or more parts that can run concurrently. Multitasking threads require less overhead than multitasking processes. . started. a thread is born. I need to define another term related to threads: process: A process consists of the memory space allocated by the operating system that can contain one or more threads. Waiting: Sometimes a thread transitions to the waiting state while the thread waits for another thread to perform a task. A thread in this state is considered to be executing its task.

The possible values are between 1 and 10. public void run() If this Thread object was instantiated using a separate Runnable target. then invokes the run() method on this Thread object. the run() method is invoked on that Runnable object. Thread Methods: Following is the list of important methods available in the Thread class. 2 3 4 5 6 7 8 . public final void setName(String name) Changes the name of the Thread object. Creating a Thread: Java defines two ways in which this can be accomplished:   You can implement the Runnable interface. public void interrupt() Interrupts this thread. causing it to continue execution if it was blocked for any reason. public final boolean isAlive() Returns true if the thread is alive.Java priorities are in the range between MIN_PRIORITY (a constant of 1) and MAX_PRIORITY (a constant of 10). which is any time after the thread has been started but before it runs to completion. Terminated: A runnable thread enters the terminated state when it completes its task or otherwise terminates. By default. Thread Priorities: Every Java thread has a priority that helps the operating system determine the order in which threads are scheduled. public final void setPriority(int priority) Sets the priority of this Thread object. public final void setDaemon(boolean on) A parameter of true denotes this Thread as a daemon thread. You can extend the Thread class. SN 1 Methods with Description public void start() Starts the thread in a separate path of execution. itself. causing the current thread to block until the second thread terminates or the specified number of milliseconds passes. every thread is given priority NORM_PRIORITY (a constant of 5). public final void join(long millisec) The current thread invokes this method on a second thread. There is also a getName() method for retrieving the name.

97.9.90.4/09.74:3/90. -4.0/...30.9290307.85.05943 4/093..

.8 7010770/94.147:8397.9.3/90839..4/0 .-4.857490.90/.

9..4480901443 97  ..

.

90/.05943.4/0 <.!7490.9..200   . .

.

880/394.059439...9.9.059434:.3.9020393.0/ 19095041 0.4/0 90..05943 4..08/0.-4. 1.880/9490.7097394..:78357490.0.-4.-4.9. 900.30.2094/5.9.:770/8890/3. . < ...94..20907   .7.-4..7:203985.. 47-4.90/.7390950410.8 9.2:.9.0594385.9.8.9144890978.89.4.

 3 47/07 94 570.3..70 :80/ 3 .0 80.039 3...431.!$ !...23 .98  94 .7.43974 ..088  94 2.08 .

..9438.94380.3/0130907435.3 -0 /0130/ .041..08857490..8808 39071. .8808  39071...0894-:3/074:541../3..3 -:3/08901:3/.3/ .93.08 03:207.   !.3349.3/3..02039  $420419008935.22078..3.2085..3349.08  03:207.70-:3/0/3985. 4 .02...083.2039..8 .90/ 9508 .8808...9438..9438 ..4..3/:8..80709.70 O O ....880814735:9 4:95:91:3...943.8808 .9438 574.3/. 74:53 41 70...0 ...0 !747.

98 9 3.5.088...9438 ..0 03 .8808  39071.250 9.5747.43974..9438 .08  !:9.339071.902039 9 9..80/3.8/0907230 9.880/  70.089.9438.089.0  .44/ 57.439.....2085..9.. 98... 3.0 9070 43 9 -0 .9 .3 3.08 &835....30.0.32.9 3..03905..8 .90203984:/-09017893039084:7.20 .0  %05.38 90 ..09474:570.0 89..8808 39071..08 980.089..32....989903..0809..208 3 49075..20841.9438 .3349.250 09 :8 44 .90/.93 .42243 57.39943.9.3/..8808 39071.3.550894..20 147 90 5.9.0  4: 84:/ .94:.3/98.90/.22078.010 %070.4480 .70../0..88 39071.0 10 9.3-0434305.807944.70...90/  $3.80794574.07 84:7.20 .4/.908 .08 03:207.90 9070.3349.93.0 .0 . 30 3.990..08 03:207...0894.208415.431.3 0.8  9 8 ....9020398349:80/90390.9 ..7070.5.90203930.9439508 -05:9394.3/..0 90 5.70.:/03905.5..3/ 5:9 .840.3/9.9..908 .0/.20/5.08 03:207..84:7..094 :80 407...950839010  1.880825020390/-4:849.3349..39071...431.3:33. 5..94395089.9 90 945 41 0.010 ... 5.0 .

 .. ..2032. 03.

03..3/ 90 / .490794:9..205.88083908.8  39071.. 5.39894:80..0 .20/408349300/94-0 :80/ .7/ 0.032.9  5:-....  O %0 5.4/0..0 905...883908.250  47 ..013/0.3 -0 254790/ :83 90 25479 047/ .4/97..0  < %025479047/ 1.205... 5:-.34907..88.839......32..0.3850.

.947$97:..88/0.889801.0-0.3 .0 2:89 2.0  03:207.88  39071.3-0254790/:839025479047/ 470.3 .0 O O %03.943 950 3 . !:9 90 84:7.7941903..3....1907905.5.9:7041!.250 ...943  %0 3.943  %070.47708:984.4:880..250 O 254795.0/3.412..74  %0.2089082503.7....4208..88 ..9:70 070 90 .:880/3 90570.9.7. ..80:89/8.902039.2041905.:703.204190.9020398  %0 25479 89.3/48009038438 .47708543/3 -90.4/0708/08  07088250.9020398 2:89 .3349.204190950.8885.74 25400 490 .3/-0147090.20 41 90 5..0 .08 %42.943  47 ..089.34:71083. 90 /70.3 3:2-07 41 25479 89. 470.88 10 .439.4/0 147 ... 909 10 480 3...550...5..947 897:.254795...

.

7 .0..0  5:-..  5.0..0...88..7 .20.

.

20 .0.88-0438 ..2041905.0.883.7 .20..0..094. 33/48  .882502039.883.8-04 O O        .7 .7 !.98903..3/5. 4906:..0103.93.204:/-0.20 .10/.90 .207010.943  < 45:99084:7.0..93./70..0 .0..9474803..

.40.58:.3/ -0.0 8 349 .943 .9803.08....4/0  .%#$  339071...3/09038-9944:7.9.88  793 .4/0899 .3 -0 /08..-9  10-9...88  -:9 90 .92094/8419039071..2509.-897...0 3.478 41 .8825020398  &308890..3..9..9 570.4:789.889..4/0 41 49078 4 :80 4:7 ...4/0/0130/4:98/090.. .. -03 7.0889490/.7-08 90 .9  3 39071.7 94 793 . 57490.88  0.-897.943890.0  %02..250 94 /0.0  3 39071.70 94 /1107039 .9 .0598   .58:.4/0 ..7339071.439740/-..4/094:9-70.0 9070-30793 90.7707 9...4/0  9 98 10.3 39071.250 09:844..08 2.3 90 .43.0 8 82..8825020398. 8250 0.9.70 ..88 /08.0300/94 -0/0130/390.3-030194103. .439.58:.70 .9250203989039071.339071.08 %039071.-99424/14:725020390/.0047/ 8 :80/ 94 /0....7-0/ .92094/8 .-897.0 -..0  070 8 ..9/05.997-:908 .3 39071.0 ...9:70 3.943 .9.3 4-0..3/.88 .39.902094/8419039071.0880/-4907.8 .38-0.339071.94341.3/ /.58:..3 39071..3/42.30..9.0398 90 ..08.943 .

.20. 03..20 139071..0 . .

.3  ... 25479.

.

33:2-07412547989.39071.0  ..0.20 139071.9020398  5:-..

.

 89.10/8 .33:2-074113.9.

.

.0 1.339071.0 4:..-897..84 25...0 8 25.-897.08 03.8833.9  84 90 .8..0.9 047/ 8 349 300/0/  094/83..0901443574507908 O O O 3 39071..92094/ /0.9438 < 39071.882:89/0.0  .0 8 ... 2094/ 3 ..95:-.1.9 ..  2502039339071..8825020398.9  ..90-0.4397.339071....73.88.700394 507147290850....709801.88/4083495071472.-897....7025.339071.....0 90.-897..-897.9 .478419039071.7.-0.3 39071.9  4: /4 349 300/ 94 :80 90..08.9047/ 03 /0.33:2-0741..-897.4784190 39071..9 .3934190.

0 94 .7:0894-01440/ O O O 0.. :9 5:-. 9.0 2094/  %0 83.90/ 89  470.70/0....88  %00903/8047/ 8 :80/ 94 0903/ .7080.42243 :80410903/339071.920  .943 2094/8 4907 9./083 5:754808419..039 94:/-0/0...:7803905.7 94 90 .79.3/ 90 8.339071.0  %00903/8047/8:80/43.0  82.8 5.....943 .0 .07.70/..0 2094/ 47 8:-....20 709:73 950 47 8:-950 84:/ -0 2.3/905.07 .03..0 .250  03 .3 39071.3 2094/8  47 0.077/32094/8/0130/339071.0 2094/ .08 4.9 .88 ..04.422..70/3.039071.30903/43430.3 0903/ .34305.9..42243 5..70398990..08...0 %070.0 .30.3 39071.0 2094/8 300/ 349 -0 25020390/  032502039..8/0130/.. ..34907 39071.250  90 4:80890307 39071.039 O O %.339071.7...7...0.339071.08 70.7. ..3/ 1 84 39071..88 9801 .3.339071.9431443900903/85479434190/0.. 74:5 41 39071.08 3 90 . .343039071..08  47 0.70/ - 90 39071..039890307 .0  903/3:95039071.....08 3 39071.8.0 30798 90 2094/841905. 805..39071.30903/24709./ 39071.9985.08 .7039.243 .3 :80 ..0.34907 .059438 84:/ 349 -0 /0.943  034.9438..:.8808 41 9480 /0..3349 0903/ ..250 1904.07.3 39071.88 :9503079.739071. !  4: .0.88..3 0903/ .09342094/83987010770/94..039 5.74   .90 ...94339071...3 0903/ ..0/ 0.70 349.9 .88.0 0903/8 ...703939071.7094-.9:70 41 90 39071.03989030739071.-897.8808 40..30/034.8.34907 39071..40/ 39071.0  3 39071.70/ - 90 39071.439..039/00.3 -0 ...039890307 < O O O 339071.3 90 4308 /0.3250203924709..089070.550.0 3 90 .0/408349 ..7:08 O O O ..0 8 349..3 430903/ 4305..0  %0 25020398 047/ ....88/0.3 ...88 . ..703939071.0  903/339071...39..80903/0/-/403841 4907 39071.039890307  90 ' 3489.0.339071..084394-0:80/3.3/ 90 ..0  3 39071.422435..3/..9 0.08 .0  ..908.08 %02489.78390..00903/0/. :9 ..077/3902094/8  3 2502039.39071... 9.3/.8 5:-.3 39071..70/ 43 2502039.9.7039 .0 .88 -:925020392.0 9801 .7080..703939071...00903/8$54798 ..34907 39071.089070.00903/0/-49$54798..88 :808 9025020398047/ 94 2502039 .70..703939071.

3/!7450790894 89470 .947  $9..943817.947 ./07004139074507.8808 070 6:90 :801:  90 .9.40. % # # !747 94 ..4/1107039950841.3/ 9. .0/ . 9.943...8 30/898 97008 .943894473.0  %0 2502039./ 94 -0  5071472./0/ ./ 4.2039.70011.89.-9    903/3.35:.40.8/0830/94200980.98  94: 9080 ..-08 . 574.9438 147 90 1:3/.8808 8:.40.9 4: :80/ '0. .77..4.90 74:58 41 4-0.3/.3307.94::80/!74507908  %0..72.3/.../94.2047.2047 ..8 /1107039 174290.   .039    %017.2.3.3/ 2. .82.07.9438 /3.2047.8.8    %0 17.7  '0.0397.  .  :313 9020  %:8  90 .

. 9508 9.9 /.07.3/84793 434-0.4480  .9438 8:.9.3:.    2502039.07.202094/.70902502039.943  3 4-0.:310/.90/ 3/0503/039 41 90 /09.9438 0 ./0/ 9..35:.70 574.4 .08 .98 908.9 705708039 .9./94-00...7/9803/ 9003970..43.9:701477057080393.-0/.90.40.0 90.40.84 2502039 4:7 43 .3/ .425:9.439.90. .8  %4.0  3 .08 .5 39071.08  $0.70902094/89.7090.3/%700$09 41908039071.40.40.94339071.40.880..47928.943.7/39071.40..7/2502039.9 470390/.3901443   39071.3/.8$09 .95071472:801:.89.08%080 .47.8808%080.08 308803.20478../94-0 542475.593.943  1 4: .943841 90.40.9438 90 17.9.20478/0830/.//94394 .58 89470 0.3-0:80/432.3/2.897:.94388:.92502039.08 %0.7.3/.35:.94384190.9:708    47928%080..08 39071.3/11070392502039.943 39071.40.8094189.-897.40.943817.8 41 907 705708039..943817..74:3/..70 .94339071.830/89 .40.3/ 4: 2.20478.40.9438 94 -0 2..9438  .07../.7.989.8 8 . :80 .080307. 2.8808  .943817.9 4: 2.40.3 .708.2047 /01308 80.1472.08 .9438  39071..557457.7070:8.7.93.

75943 %040.943410020398  %0$09 %80903/840.40.78 94:2.:08  %0.40.94394.7.9438390574507:8041909072 -:990.:05.943807.943817.2047/0130880.0 %80903/840.347/070/.3/084790/8098 %0.439.0 %803.  %08939071.3.08908.94339071.04189894708.94339071.7-08.40.08 %0.58:36:00894.701: 3907..5 397 %8/08...9909454190..5 %82.9438  %040.3:36:00020398 %0$4790/$09 %80903/8$0994.70349.943.90/9.39071.0.07.08  $        39071...2:89.-084:9447974:58414-0..3389.40.58.3/.3002039 .9898.3/08098 ..40.

702...99008.7 3.30/3.33307.8.:05.5  %0$4790/.8841.2.5849.39.5 %80903/8..5 %88.03/347/07  .

40.89.08  30/.5 903/8-897..943...40.9438  /0399.89  77.989 903/8-897.3/25020398248941908939071.40.989  -897.0  -897.8808 574.943..9700  0.5 903/8..8808 .943414-0..70.:20398               %0-897.5 903/8-897..89 25020398.989147:80-.3/:8087010703.470.-0 $    .77.9$09147:809.0.43807943 47/07907.-0903/3-897..9438  %700$09 25020398.89 903/8-897.9..3-0:80/.3/-897./08.7/.2502039.94389..94384190...39071.73/4.9....303:207.940.7/.8-0038:507.9$06:039...574.7..9.5 2502039824894190.8.539071.594.9.39071.4:.80989470/3..70.-897...8$09 903/8-897.594:80.3/2502039824894190$0939071...594:80. %03:207.7090.9.8.0884198 0020398  30/89 25020398..9$06:039.30/89-0903/3-897.89.8808./3 8009.40.3/42./3.9..75943 -897.3/49078.-090..9439.943.9$09  -897.0  .889.9079.9$09 903/8-897.8$0994.94389.8.-0  30/.5 903/8-897..989  -897.40.43807943 47/07907.8.3430..940.943 250203982489419040.0/0/-907.9$09  -897.0  -897.947  %040..90 4-9..0  .2.920 90 00203983.8 8....9438  %089.5.708:22.9700 903/8-897..79354398147.08 94232090011479706:70/942502039902     .93.8808908..8$09 903/8.08 $4204190 .89.2502039.940.006:.9.594:80...5..70:80/.-0  %700.9.943.70/39014439...../01:2502039.943  -897.425.9:808806:039.943...5 903/8-897./0 8009.3/.94339071.43..88 574.8808574.94339071.940.9$06:039.9.943 %880.9.40.94339071.3/..98 %80.3//01308902094/8-..89..903..0.37.88089.8094189.8.9250203940..

2 ./   -4.02.0243970.:943  2:9970..83970.90 147 .94907:33.5./  #:33.890./97.70/43000.08808   300/ 94 /0130 .970. 970./ .08.9 9203907./ .2848.904303 ..:78  .8  .90 9702.9.92.98 147 .90 0 90 970.289.-0 970.-0 89../-0./8706:700884.%70./83./ 98./8574.79 41 .34907 9072 70.03903089.38 7:333 :39 .223 2:9970./ 3 98 89./0/5747. 94 90 7:33.250 .790/ 7:38  .057084703900..74:889.088  574.7005.439./8-473 89.3 03907 90 920/ ...:93989.93$4209208 ..847010770/94..574.03998.37:3.389438 94 90 .9.-473970.10/ 3907.3/903/08 443/.93 89..389438 -./ .4393:000.790/ 90970./303.34907970.90:3990 5747.07011.93 7:33.3839889.38 944724705..9 ..438898 41 90 20247 85.3-005994.34907970..43.041./3 9889.908.30/070 O O O O 030970.02039430/89.0 .088 574.//01308.94100.79890970./ . 850. 41 90343 /.0839810.28.970./ 9. 41 920   970. 5.7.0 470.../08-:9 3 8:554791472:9970./0/ 5747.4.93 89./945071472.42087:33.3 430 47 2470 970.070..3 ..3/ 0..42509010./889.&%%# .439.3349 089 43 98 43 9 2:89 -0 .90/ - 90 4507.90 97.-0 970.:93  %20/ ./8.389438-.32:99.:77039 ..:93  :9970.. 850.7.79418:.8.90/ 94 970.93970.30-473970.0/...5747.0/1472 412:99.088 ./ 970..93 88902 9.805.438/070/94-000.83574.289.041.-089.232:2  10./38.8 970./94.7989.2:2:80 4190!&  -0.905.:80/0920.088 702.90 03 9.931474.-01907.970.970../8   970./408974:./ 97.83 :99./-0389810.0395747.-084:94790.. 574.

0243970./0390789090723.:83994.:08.13.07970./0130894.9  5:-.90/7:33..09..-440.90/89.70 8.43/970.:77039970.4393:000.204190%70./90723.-09./4-0.9  5:-./.70-09003.20  5:-.3/  5:-.0/:0/ ..847 49078090723.8 ..93.8-4.9 %0708./ .93 88902 /0907230 90 47/07 3 ./94 -4.10/3:2-0741280.83.70 3 90 7.13./8 . 5747908 .  %0.13..790/-:9 -0147097:3894.:94319.%70.4/7:3  198%70.88 9801  %70.07 .392094/8.408907:3 2094/4398 %70./  5:-.-039071.4/809.4/39077:59  39077:59898970.209074197:0/03490898%70...4389.190790970.9084790850.308903./094/8 443890894125479.0 .-0390%70./.390 3.80.0/147.843  5:-.30 -09003 *!# #% .370./8.:77039970.709 907:3 2094/8 3...98..4/809.3941 /01.8389.3920.4389.90039../8./ ..13.90/:83...20  .0357479 #*!# #% ..8. 970..4250943         .../ .:943 9033.9#:33.3250203990#:33.75943 5:-../.7.8-00389.3941  70.4/43 43280./3.805.38.39 41   .43/85./4-0..-04-0.:9 0.20 2094/14770970.0  #09:73897:0190970..43/970././ .90#:33.40/439.805.84.0  4:.408982094/43.-0970.4/89.... 970. 57479 9.39.79  $9..7./.9 058 90 4507.4/809!7479 3957479  $09890574794198%70./!747908 .908  %70..:8390.9 %05488-0.13..9.4389.8.:399080.42580/ O O 4:.3-0./4-0.7.20 $9733..8808  5:-.4250908989..30903/90%70.88  $  094/8908.343  5.79890970.0243 -440.94100./3../4-0.905.3/*!# #% .O %0723. .

 .