home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Big_Geneti211159542008.psc / clsGeneticAlgorithm.cls < prev   
Text File  |  2008-05-02  |  145KB  |  3,112 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsGeneticAlgorithm"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15.  
  16. ' =====================================
  17. '
  18. '   Genetic Algorithm class
  19. '
  20. '        By Thierry Van Mol
  21. '
  22. '   First public release
  23. '   version 1.0.0
  24. '   2007 - 2008
  25. '   email : thierry.van.mol@hotmail.com
  26. '
  27. ' =====================================
  28.  
  29.  
  30.  
  31. '
  32. ' Constants
  33. ' +++++++++++++++++++++++++++++++++++++++++++++++++++
  34.  
  35. ' Version
  36. Private Const cVersion = "1.0.0"
  37.  
  38. ' Maximum times to spin the roulettewheel before trying Rank
  39. Private Const cRouletteWheelSpinMax As Integer = 3  ' when spinning the roulettewheel, a check is done to ensure both
  40.                                                     ' chromosomes are different (not the value, but the index).
  41.                                                     ' This constant is the number of times to spin the wheel
  42.                                                     ' before jumping to Rank selection method
  43.  
  44. Private Const cCrossoverUniform As Double = 0.5     ' Probability of a swap in uniform crossover
  45.                                                     ' 0.5 = 50% chance the bit will be swapped
  46.                                                     
  47. Private Const cLongMaxLength As Integer = 11        ' Maximum length of a long, used to convert a
  48.                                                     ' long to a string. Range is -2,147,483,648 to 2,147,483,647
  49.                                                     ' so (not counting the thousand separator)
  50.                                                     ' maximum number of digits  : 10
  51.                                                     ' eventual minus sign       :  1
  52.                                                     ' 10 + 1                    = 11
  53.                                                     '
  54.                                                     ' However in order to maximize the functionality
  55.                                                     ' of the GA, the length to use is calculated and
  56.                                                     ' filled in mintLongActualLength
  57.                                                     
  58. Private Const cDoubleMaxLength As Integer = 22      ' Maximum length of a double number, used to convert
  59.                                                     ' a double to a string
  60.                                                     ' range is -1.79769313486231E308 to -4.94065645841247E-324 for negative
  61.                                                     ' values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
  62.                                                     ' maximum accuracy of double : 15 digits
  63.                                                     ' place for the decimal point:  1
  64.                                                     ' place for negative sign    :  1
  65.                                                     ' place for 'E' character    :  1
  66.                                                     ' place for negative power   :  1
  67.                                                     ' maximum power              :  3 digits
  68.                                                     ' 15 + 1 + 1 + 1 + 1 + 3     = 22
  69.                                                     '
  70.                                                     ' However in order to maximize the functionality
  71.                                                     ' of the GA, the length to use is calculated and
  72.                                                     ' filled in mintDoubleActualLength
  73.  
  74. '
  75. ' Events definition
  76. ' ++++++++++++++++++++++++++++++++++++++++++++++++++
  77.  
  78. ' New Gene event
  79. Public Event NewGeneString(ByRef strGene As String)
  80.  
  81. Public Event NewGeneLong(ByRef lngGene As Long)
  82.  
  83. Public Event NewGeneDouble(ByRef dblGene As Double)
  84.  
  85. ' Fitness event
  86. Public Event EvaluateFitness(ByVal lngIndex As Long, ByRef dblFitness As Double)
  87.  
  88. ' New chromosome event
  89. Public Event NewChromosome(ByRef NewStringGenes() As String, ByRef NewLongGenes() As Long, ByRef NewDoubleGenes() As Double, ByVal intOrigin As GANewChromosomeOriginType)
  90.  
  91. ' Error
  92. Public Event GAError(ByVal ErrorCode As Long, ByVal ErrorDescription As String)
  93.  
  94.  
  95.  
  96. '
  97. ' Class variables
  98. ' used with properties
  99. ' +++++++++++++++++++++++++++++++++++++++++++++++++++
  100.  
  101. Private mGeneration             As Long     ' the generation counter (set to 1 at CREATEPOPULATION
  102.                                             ' and incremented during REPRODUCTION)
  103.  
  104. Private Chromosome()            As ChromosomeindividualType
  105.                                             ' The chromosome...
  106.  
  107. Private mChromosomeType         As Integer  ' the type of chromosome we are going
  108.                                             ' to use. defined in GAEncodingType
  109.                                             ' 1 = binary string
  110.                                             ' 2 = Alphabetical
  111.                                             ' 3 = long numbers
  112.                                             ' 4 = Double numbers
  113.  
  114. Private mGenesPerChromosome     As Integer  ' howmany genes are there in a chromosome
  115.  
  116. Private mBinaryGeneLength       As Integer  ' how long is one gene (howmany characters can
  117.                                             ' a binary gene be)
  118.                                             ' when encodingtype = binary
  119.  
  120. Private mAlphabeticGeneLength   As Integer  ' how long is one gene (howmany characters can
  121.                                             ' an alphabetic gene be)
  122.                                             ' when encodingtype = alphabetical
  123.  
  124. Private mLongGeneMaxValue       As Long     ' what is the maximumvalue of a long numerical gene
  125.                                             ' when encodingtype = long numbers
  126.  
  127. Private mLongGeneMinValue       As Long     ' what is the minimumvalue of a long numerical gene
  128.                                             ' when encodingtype = long numbers
  129.  
  130. Private mDoubleGeneMinValue     As Double   ' what is the minimumvalue of a double numerical gene
  131.                                             ' when encodingtype = double numbers
  132.  
  133. Private mDoubleGeneMaxValue     As Double   ' what is the maximumvalue of a double numerical gene
  134.                                             ' when encodingtype = double numbers
  135.  
  136. Private mSelectionMethod        As Integer  ' the selectionmethod used during the Selection process
  137.                                             ' see the GASelectionMethod enumeration
  138.                                             ' Can be Range, Roulette wheel or Tournament
  139.  
  140. Private mTournamentSize         As Long     ' the size of the selection pool of a Tournament during
  141.                                             ' Tournament selection
  142.  
  143. Private mCrossoverRate          As Double   ' the corssoverrate
  144.  
  145. Private mMutationRate           As Double   ' the mutationrate - for fixed mutation
  146.                                             ' or starting value for adaptive mutationrate
  147.  
  148. Private mActualMutationRate     As Double   ' the actual mutationrate to use
  149.                                             ' if fixed it's the same as mMutationRate
  150.                                             ' if AMR then this value changes by 0.01
  151.  
  152. Private mMutationBitlikeLongDouble As Boolean ' For long/double encoding only. And only if NOT full gene
  153.                                             ' mutation !
  154.                                             ' If FALSE, a small value will be randomly added / subtracted from
  155.                                             ' the gene-value
  156.                                             ' If TRUE, normal element-like mutation (just like binary encoding)
  157.                                             ' will be used
  158.  
  159. Private mMutationBitlikePercentage As Double ' See mMutationBitlikeLongDouble
  160.                                             ' This is the percentage of the maximum value for a gene.
  161.                                             ' The random value to be added or subtracted will lie within
  162.                                             ' this percentage's range.
  163.  
  164. Private mReproductionMethod     As Integer  ' the reproductionmethod used
  165.                                             ' see the GAReproductionType enumeration
  166.                                             ' Can be weakest, random or parents
  167.                                             
  168. Private mCrossoverFullGenes     As Boolean  ' If TRUE the crossover happens on a full gene
  169.                                             ' if FALSE corssover can happen anywhere
  170.                                             ' in the chromosome
  171.  
  172. Private mRandomOffspringGeneration As Boolean ' If TRUE a test is done before crossover to check
  173.                                               ' that both selected chromosomes have different
  174.                                               ' genetic material. If they are the same one of them
  175.                                               ' is replaced by a new random chromosome
  176.  
  177. Private mCrossoverMethod        As Integer  ' The crossover technique to use
  178.                                             ' one point, two point, uniform or half uniform
  179.                                             ' see GACrossoverType
  180.  
  181. Private mMutateFullGenes        As Boolean  ' If TRUE the mutation happens on a full gene
  182.                                             ' if FALSE mutation can happen anywhere
  183.                                             ' in the chromosome
  184.  
  185. Private mMutationMethod         As Integer  ' can be fixed or adaptive
  186.                                             ' See GAMutationType
  187.                                             ' Fixed : the rate in mMutationrate is always taken
  188.                                             ' Adaptive : When the standard deviation of the fitness
  189.                                             ' values stays a number of generations the same (set in
  190.                                             ' mAMRGenerations) then the mutatiorate is increased
  191.                                             ' by 0.01 with a maximum of 1.0
  192.                                             ' If the standard deviation of the fitness values is
  193.                                             ' different for the set number of generations, it is
  194.                                             ' decreased by 0.01, with mMutationRate as minimum
  195.  
  196. Private mAMRGenerations         As Long     ' number of generations that the standard deviation
  197.                                             ' has to be the same before mutationrate increase
  198.                                             ' for AMR (or different for a decrease)
  199.                                             
  200. Private mSocDisGeneticDiv       As Double   ' Social disaster genetic diversity percentage
  201.  
  202. Private mSocDisMethod           As Integer  ' Social disaster method (see GASocialDisasterType)
  203.                                             ' Can be packing or Judgement day
  204.                                             
  205. Private mSocDisGenerations      As Long     ' the amount of generations between
  206.                                             ' each check if a social disaster
  207.                                             ' should occur
  208.  
  209. Private mDescription            As String   ' small description for these settings
  210.  
  211. Private mPopulationSize         As Long     ' the populationsize as set in the GA control panel
  212.  
  213. Private mlngSelectedIndex1      As Long     ' The indexes of the two selected chromosomes for
  214. Private mlngSelectedIndex2      As Long     ' reproduction
  215.  
  216. Private mAMRCounter             As Long     ' counter for AMR when std.dev. is the same
  217. Private mAMRCounterDiff         As Long     ' counter for AMR when std.dev. is different
  218. Private mAMRFitnessStdDev       As Double   ' the value of the std.dev. for AMR
  219.  
  220.  
  221. ' Counters
  222. Private mCrossoverCounter       As Long     ' counters...just to count howmany times
  223. Private mMutationCounter        As Long     ' something occurs...
  224. Private mRandomOffspringCounter As Long     '
  225. Private mSocialDisasterCounter  As Long     '
  226.  
  227.  
  228. ' Statistics
  229. Private mblnKeepStatistics      As Boolean  ' keep the statistics or not
  230. Private mStatistics()           As StatisticsType ' the array
  231.  
  232.  
  233.  
  234. '
  235. ' Class variables
  236. ' used internally
  237. ' ++++++++++++++++++++++++++++++++++++++++++++++++
  238.  
  239. Private mblnSorted              As Boolean  ' = TRUE if the chromosome array is sorted by fitness
  240.                                             ' = FALSE when the array has to be sorted because a chromosome
  241.                                             '   has changed...
  242.                                             ' This sort is necessary to determine the best (lowest) and worst
  243.                                             ' (highest) chromosomes (fitness wise).
  244.                                             
  245. Private mblnAllFitnessCalculated As Boolean ' = TRUE all fitnesses have been calculated
  246.                                             ' = FALSE at least one fitness must be recalculated
  247.                                             
  248. Private mSocDisGenCounter       As Long     ' counter for social disaster generations
  249.  
  250. Private blnCallFromEvaluate     As Boolean  ' used in EVALUATE
  251.                                             ' if a social disaster occured the population has to be
  252.                                             ' re-evaluated. The sub evaluate calls itself
  253.                                             ' but if the user has set the generation-counter
  254.                                             ' for social disasters to 1, an endless loop (not exactly
  255.                                             ' endless because an out-of-stack error will end it eventually)
  256.                                             ' occurs. This boolean makes it possible to jump
  257.                                             ' out
  258.                                                   
  259. Private mintLongActualLength    As Integer  ' The calculated actual length of a long
  260.                                             ' see the constant cLongMaxLength
  261.                                                   
  262. Private mintDoubleActualLength  As Integer  ' The calculated actual length of a double
  263.                                             ' see the constant cDoubleMaxLength
  264.                                                   
  265.  
  266.  
  267.  
  268. ' -----------------------------------------------------------------
  269. ' Properties
  270. ' -----------------------------------------------------------------
  271.  
  272. ' howmany chromosomes are there
  273. Public Property Get PopulationCount() As Long
  274.     PopulationCount = LngNull(UBound(Chromosome())) + 1
  275. End Property
  276.  
  277. ' the type of chromosome used, defined in GAEncodingType
  278. Public Property Get ChromosomeType() As Integer
  279.     ChromosomeType = mChromosomeType
  280. End Property
  281.  
  282. Public Property Let ChromosomeType(ByVal vNewValue As Integer)
  283.     mChromosomeType = vNewValue
  284. End Property
  285.  
  286. ' howmany genes are there in a chromosome
  287. Public Property Get GenesPerChromosome() As Integer
  288.     GenesPerChromosome = mGenesPerChromosome
  289. End Property
  290.  
  291. Public Property Let GenesPerChromosome(ByVal vNewValue As Integer)
  292.     mGenesPerChromosome = vNewValue
  293. End Property
  294.  
  295. ' howmany characters is one BINARY gene (when encodingtype = binary)
  296. Public Property Get BinaryGeneLength() As Integer
  297.     BinaryGeneLength = mBinaryGeneLength
  298. End Property
  299.  
  300. Public Property Let BinaryGeneLength(ByVal vNewValue As Integer)
  301.     mBinaryGeneLength = vNewValue
  302. End Property
  303.  
  304. ' howmany characters is one ALPHABETIC gene (when encodingtype = alphabetic)
  305. Public Property Get AplhabeticGeneLength() As Integer
  306.     AplhabeticGeneLength = mAlphabeticGeneLength
  307. End Property
  308.  
  309. Public Property Let AplhabeticGeneLength(ByVal vNewValue As Integer)
  310.     mAlphabeticGeneLength = vNewValue
  311. End Property
  312.  
  313. ' what is the maximumvalue of a long numerical gene (when encodingtype = long numbers)
  314. Public Property Get LongGeneMaxValue() As Long
  315.     LongGeneMaxValue = mLongGeneMaxValue
  316. End Property
  317.  
  318. Public Property Let LongGeneMaxValue(ByVal vNewValue As Long)
  319.     mLongGeneMaxValue = vNewValue
  320. End Property
  321.  
  322. ' what is the minimumvalue of a long numerical gene (when encodingtype = long numbers)
  323. Public Property Get LongGeneMinValue() As Long
  324.     LongGeneMinValue = mLongGeneMinValue
  325. End Property
  326.  
  327. Public Property Let LongGeneMinValue(ByVal vNewValue As Long)
  328.     mLongGeneMinValue = vNewValue
  329. End Property
  330.  
  331. ' what is the minimumvalue of a double numerical gene (when encodingtype = double numbers)
  332. Public Property Get DoubleGeneMinValue() As Double
  333.     DoubleGeneMinValue = mDoubleGeneMinValue
  334. End Property
  335.  
  336. Public Property Let DoubleGeneMinValue(ByVal vNewValue As Double)
  337.     mDoubleGeneMinValue = vNewValue
  338. End Property
  339.  
  340. ' what is the maximumvalue of a double numerical gene (when encodingtype = double numbers)
  341. Public Property Get DoubleGeneMaxValue() As Double
  342.     DoubleGeneMaxValue = mDoubleGeneMaxValue
  343. End Property
  344.  
  345. Public Property Let DoubleGeneMaxValue(ByVal vNewValue As Double)
  346.     mDoubleGeneMaxValue = vNewValue
  347. End Property
  348.  
  349. ' Selectionmethod. Range, roulette wheel or tournament
  350. Public Property Get SelectionMethod() As Integer
  351.     SelectionMethod = mSelectionMethod
  352. End Property
  353.  
  354. Public Property Let SelectionMethod(ByVal vNewValue As Integer)
  355.     mSelectionMethod = vNewValue
  356. End Property
  357.  
  358. ' the size of the selection pool for tournament selection
  359. Public Property Get TournamentSize() As Long
  360.     TournamentSize = mTournamentSize
  361. End Property
  362.  
  363. Public Property Let TournamentSize(ByVal vNewValue As Long)
  364.     mTournamentSize = vNewValue
  365. End Property
  366.  
  367. ' the highest Fitness score in the current population = WORST
  368. Public Property Get FitnessHighest() As Double
  369.     If mblnSorted = False Then
  370.         Call QuickSortFitness(0, (PopulationCount - 1))
  371.     End If
  372.     FitnessHighest = Chromosome(PopulationCount - 1).Fitness
  373. End Property
  374.  
  375. ' the lowest Fitness score in the current population = BEST
  376. Public Property Get FitnessLowest() As Double
  377.     If mblnSorted = False Then
  378.         Call QuickSortFitness(0, (PopulationCount - 1))
  379.     End If
  380.     FitnessLowest = Chromosome(0).Fitness
  381. End Property
  382.  
  383. ' the sum of all Fitness scores in the current population
  384. Public Property Get FitnessSum() As Double
  385.     
  386.     Dim lngloop                 As Long
  387.  
  388.     Dim dblHelp                 As Double
  389.     
  390.     dblHelp = 0
  391.  
  392.     For lngloop = 0 To (PopulationCount - 1)
  393.         dblHelp = dblHelp + Abs(Chromosome(lngloop).Fitness)
  394.     Next lngloop
  395.  
  396.     FitnessSum = dblHelp
  397.  
  398. End Property
  399.  
  400. ' The index of the first selected chromosome for reproduction
  401. Public Property Get SelectedChromosomeIndex1() As Long
  402.     SelectedChromosomeIndex1 = mlngSelectedIndex1
  403. End Property
  404.  
  405. Public Property Let SelectedChromosomeIndex1(ByVal vNewValue As Long)
  406.     mlngSelectedIndex1 = vNewValue
  407. End Property
  408.  
  409. ' The index of the second selected chromosome for reproduction
  410. Public Property Get SelectedChromosomeIndex2() As Long
  411.     SelectedChromosomeIndex2 = mlngSelectedIndex2
  412. End Property
  413.  
  414. Public Property Let SelectedChromosomeIndex2(ByVal vNewValue As Long)
  415.     mlngSelectedIndex2 = vNewValue
  416. End Property
  417.  
  418. ' the corssoverrate
  419. Public Property Get CrossoverRate() As Double
  420.     CrossoverRate = mCrossoverRate
  421. End Property
  422.  
  423. Public Property Let CrossoverRate(ByVal vNewValue As Double)
  424.     mCrossoverRate = vNewValue
  425. End Property
  426.  
  427. ' the mutationrate - for fixed or startvalue for adaptive
  428. Public Property Get MutationRate() As Double
  429.     MutationRate = mMutationRate
  430. End Property
  431.  
  432. Public Property Let MutationRate(ByVal vNewValue As Double)
  433.     mMutationRate = vNewValue
  434. End Property
  435.  
  436. ' Reproductionmethod. replace weakest, replace random or replace parents
  437. Public Property Get ReproductionMethod() As Integer
  438.     ReproductionMethod = mReproductionMethod
  439. End Property
  440.  
  441. Public Property Let ReproductionMethod(ByVal vNewValue As Integer)
  442.     mReproductionMethod = vNewValue
  443. End Property
  444.  
  445. ' Do we crossover on a full gene or anywhere in the chromosome
  446. Public Property Let CrossoverFullGene(ByVal vNewValue As Boolean)
  447.     mCrossoverFullGenes = vNewValue
  448. End Property
  449.  
  450. Public Property Get CrossoverFullGene() As Boolean
  451.     CrossoverFullGene = mCrossoverFullGenes
  452. End Property
  453.  
  454. ' Test both chromos before crossover for equality, if equal replace one
  455. Public Property Let RandomOffspringGeneration(ByVal vNewValue As Boolean)
  456.     mRandomOffspringGeneration = vNewValue
  457. End Property
  458.  
  459. Public Property Get RandomOffspringGeneration() As Boolean
  460.     RandomOffspringGeneration = mRandomOffspringGeneration
  461. End Property
  462.  
  463. ' Crossovermethod. one or two point, uniform or half uniform
  464. Public Property Get CrossoverMethod() As Integer
  465.     CrossoverMethod = mCrossoverMethod
  466. End Property
  467.  
  468. Public Property Let CrossoverMethod(ByVal vNewValue As Integer)
  469.     mCrossoverMethod = vNewValue
  470. End Property
  471.  
  472. ' Do we mutate on a full gene or anywhere in the chromosome
  473. Public Property Let MutateFullGene(ByVal vNewValue As Boolean)
  474.     mMutateFullGenes = vNewValue
  475. End Property
  476.  
  477. Public Property Get MutateFullGene() As Boolean
  478.     MutateFullGene = mMutateFullGenes
  479. End Property
  480.  
  481. Public Property Get MeanAverage() As Double
  482.     If PopulationCount <> 0 Then
  483.         MeanAverage = FitnessSum / PopulationCount
  484.     Else
  485.         MeanAverage = 0
  486.     End If
  487. End Property
  488.  
  489. ' the mutationmethod, fixed or adaptive
  490. Public Property Get MutationMethod() As Integer
  491.     MutationMethod = mMutationMethod
  492. End Property
  493.  
  494. Public Property Let MutationMethod(ByVal vNewValue As Integer)
  495.     mMutationMethod = vNewValue
  496. End Property
  497.  
  498. ' the actual mutationrate - for fixed or startvalue for adaptive
  499. Public Property Get ActualMutationRate() As Double
  500.     ActualMutationRate = mActualMutationRate
  501. End Property
  502.  
  503. ' AMR generations
  504. Public Property Get AMRGenerations() As Long
  505.     AMRGenerations = mAMRGenerations
  506. End Property
  507.  
  508. Public Property Let AMRGenerations(ByVal vNewValue As Long)
  509.     mAMRGenerations = vNewValue
  510. End Property
  511.  
  512. ' Long/double encoding bitlike mutation or not
  513. Public Property Let MutationBitlikeLongDouble(ByVal vNewValue As Boolean)
  514.     mMutationBitlikeLongDouble = vNewValue
  515. End Property
  516.  
  517. Public Property Get MutationBitlikeLongDouble() As Boolean
  518.     MutationBitlikeLongDouble = mMutationBitlikeLongDouble
  519. End Property
  520.  
  521. ' Long/Double bitlike mutation
  522. Public Property Get MutationBitlikePercentage() As Double
  523.     MutationBitlikePercentage = mMutationBitlikePercentage
  524. End Property
  525.  
  526. Public Property Let MutationBitlikePercentage(ByVal vNewValue As Double)
  527.     mMutationBitlikePercentage = vNewValue
  528. End Property
  529.  
  530. ' Social disaster genetic diversity
  531. Public Property Get SocialDisasterDiversity() As Double
  532.     SocialDisasterDiversity = mSocDisGeneticDiv
  533. End Property
  534.  
  535. Public Property Let SocialDisasterDiversity(ByVal vNewValue As Double)
  536.     mSocDisGeneticDiv = vNewValue
  537. End Property
  538.  
  539. ' Social disaster method
  540. Public Property Get SocialDisasterMethod() As Integer
  541.     SocialDisasterMethod = mSocDisMethod
  542. End Property
  543.  
  544. Public Property Let SocialDisasterMethod(ByVal vNewValue As Integer)
  545.     mSocDisMethod = vNewValue
  546. End Property
  547.  
  548. ' the amount of generations between each check for an eventual social disaster
  549. Public Property Get SocialDisasterGenerations() As Long
  550.     SocialDisasterGenerations = mSocDisGenerations
  551. End Property
  552.  
  553. Public Property Let SocialDisasterGenerations(ByVal vNewValue As Long)
  554.     mSocDisGenerations = vNewValue
  555. End Property
  556.  
  557. ' Description
  558. Public Property Get Description() As String
  559.     Description = mDescription
  560. End Property
  561.  
  562. Public Property Let Description(ByVal vNewValue As String)
  563.     mDescription = vNewValue
  564. End Property
  565.  
  566. ' Version
  567. Public Property Get Version() As String
  568.     Version = cVersion
  569. End Property
  570.  
  571. ' PopulationSize as set in the GA control panel
  572. Public Property Get PopulationSize() As Long
  573.     PopulationSize = mPopulationSize
  574. End Property
  575.  
  576. Public Property Let PopulationSize(ByVal vNewValue As Long)
  577.     mPopulationSize = vNewValue
  578. End Property
  579.  
  580. '
  581. ' -----------------------------------------------------
  582.  
  583. ' Counters
  584. Public Property Get CounterCrossovers() As Long
  585.     CounterCrossovers = mCrossoverCounter
  586. End Property
  587.  
  588. Public Property Get CounterMutations() As Long
  589.     CounterMutations = mMutationCounter
  590. End Property
  591.  
  592. Public Property Get CounterRandomOffsprings() As Long
  593.     CounterRandomOffsprings = mRandomOffspringCounter
  594. End Property
  595.  
  596. Public Property Get CounterDisasters() As Long
  597.     CounterDisasters = mSocialDisasterCounter
  598. End Property
  599.  
  600. ' Generation
  601. Public Property Get Generation() As Long
  602.     Generation = mGeneration
  603. End Property
  604.  
  605. ' Keep statistics info
  606. Public Property Let KeepStatistics(ByVal vNewValue As Boolean)
  607.     mblnKeepStatistics = vNewValue
  608. End Property
  609.  
  610. Public Property Get KeepStatistics() As Boolean
  611.     KeepStatistics = mblnKeepStatistics
  612. End Property
  613.  
  614. ' Statistics - lowest fitness
  615. Public Property Get StatisticsLowestFitness(ByVal lngGeneration As Long) As Double
  616.     StatisticsLowestFitness = mStatistics(lngGeneration).LowestFitness
  617. End Property
  618.  
  619. ' Statistics - Highest fitness
  620. Public Property Get StatisticsHighestFitness(ByVal lngGeneration As Long) As Double
  621.     StatisticsHighestFitness = mStatistics(lngGeneration).HighestFitness
  622. End Property
  623.  
  624. ' Statistics - Highest fitness
  625. Public Property Get StatisticsStandardDeviation(ByVal lngGeneration As Long) As Double
  626.     StatisticsStandardDeviation = mStatistics(lngGeneration).StandardDeviation
  627. End Property
  628.  
  629. ' Statistics - Social diverscity
  630. Public Property Get StatisticsSocialDivercity(ByVal lngGeneration As Long) As Long
  631.     StatisticsSocialDivercity = mStatistics(lngGeneration).SocialDivercity
  632. End Property
  633.  
  634. ' Statistics - Selection method
  635. Public Property Get StatisticsSelectionMethod(ByVal lngGeneration As Long) As Integer
  636.     StatisticsSelectionMethod = mStatistics(lngGeneration).SelectionMethod
  637. End Property
  638.  
  639. ' Statistics - RouletteWheelOverflow
  640. Public Property Get StatisticsRouletteWheelOverflow(ByVal lngGeneration As Long) As Boolean
  641.     StatisticsRouletteWheelOverflow = mStatistics(lngGeneration).RouletteWheelOverflow
  642. End Property
  643.  
  644. ' Statistics - MutationRate
  645. Public Property Get StatisticsMutationRate(ByVal lngGeneration As Long) As Double
  646.     StatisticsMutationRate = mStatistics(lngGeneration).MutationRate
  647. End Property
  648.  
  649. ' Statistics - Disaster generation counter
  650. Public Property Get StatisticsDisasterGenerationCounter(ByVal lngGeneration As Long) As Long
  651.     StatisticsDisasterGenerationCounter = mStatistics(lngGeneration).SocialDisasterGenCounter
  652. End Property
  653.  
  654. ' Statistics - DisasterOccured
  655. Public Property Get StatisticsDisasterOccured(ByVal lngGeneration As Long) As Boolean
  656.     StatisticsDisasterOccured = mStatistics(lngGeneration).SocialDisasterOccured
  657. End Property
  658.  
  659. ' Statistics - Bestchromosome
  660. Public Property Get StatisticsBestChromosome(ByVal lngGeneration As Long) As String
  661.     StatisticsBestChromosome = mStatistics(lngGeneration).BestChromosome
  662. End Property
  663.  
  664.  
  665.  
  666. ' -----------------------------------------------------------------
  667. ' Class Procedures
  668. ' -----------------------------------------------------------------
  669.  
  670.  
  671. Private Sub Class_Initialize()
  672.     '
  673.     ' What is the system decimal-symbol
  674.     ' Used for localization on non-english (or different country-settings)
  675.     ' OS versions. The decimal-point-symbol can clash with the VB comma-symbol
  676.     ' leading to errors when dealing with doubles.
  677.     strCurrentsystemDecimalSeparator = Trim$(Format$("0.00", "#.##"))
  678.     
  679.     mGeneration = 0
  680.     blnCallFromEvaluate = False
  681.     
  682.     
  683.     ' default values for the properties
  684.     ' ---------------------------------
  685.     
  686.     ' Default selectionmethod = Rank
  687.     SelectionMethod = GASelectRank
  688.  
  689.     ' default reproductionmethod = replace weakest
  690.     ReproductionMethod = GAReproductionReplaceWeakest
  691.  
  692.     ' default CrossoverRate
  693.     CrossoverRate = 0.7
  694.     
  695.     ' default Mutationrate
  696.     MutationRate = 0.05
  697.     
  698.     ' Tournament size
  699.     TournamentSize = 5
  700.     
  701.     ' crossoverfullegene
  702.     CrossoverFullGene = False
  703.     
  704.     ' Crossovermethode
  705.     CrossoverMethod = GACrossoverOnePoint
  706.     
  707.     ' RandomOffspringGeneration
  708.     RandomOffspringGeneration = True
  709.     
  710.     ' mutatefullgene
  711.     MutateFullGene = False
  712.     
  713.     ' MutationMethod
  714.     MutationMethod = GAMutationRateFixed
  715.     
  716.     ' AMR generations
  717.     AMRGenerations = 10
  718.     
  719.     ' bitlike mutation for long or double
  720.     MutationBitlikeLongDouble = False
  721.     
  722.     ' percentage af maximum for the random value for bitlike mutation
  723.     MutationBitlikePercentage = 10
  724.     
  725.     ' Social desaster
  726.     SocialDisasterDiversity = 0
  727.     
  728.     ' social disaster method
  729.     SocialDisasterMethod = GASocialDisasterJudgementDay
  730.     
  731.     ' amount of generations between each social disaster check
  732.     SocialDisasterGenerations = 25
  733.     
  734.     ' nothing is calculated
  735.     mblnAllFitnessCalculated = False
  736.     
  737.     ' nothing is sorted
  738.     mblnSorted = False
  739.     
  740.     ' do not keep statistics
  741.     mblnKeepStatistics = False
  742.     
  743.     ' Clear the counters
  744.     Call ClearCounters
  745.     
  746. End Sub
  747.  
  748. Public Sub CREATEPOPULATION(ByVal lngPopulationTotal As Long)
  749.     '
  750.     ' creates the initial population
  751.     ' lngPopulationTotal is the amount of chromosomes wanted
  752.     '
  753.     On Local Error GoTo errorhandler
  754.     
  755.     Dim lngX                    As Long
  756.     
  757.     ' clear the chromosome array
  758.     Call Clear
  759.     
  760.     ' create population
  761.     For lngX = 0 To (lngPopulationTotal - 1)
  762.         Call AddChromosome(lngX)
  763.     Next lngX
  764.     
  765.     ' reset counters
  766.     Call ClearCounters
  767.     
  768.     ' set the actual mutationrate to the fixed mutationrate
  769.     mActualMutationRate = mMutationRate
  770.     
  771.     ' set generation to 1
  772.     mGeneration = 1
  773.     
  774.     ' social disaster generation counter
  775.     mSocDisGenCounter = 0
  776.     
  777. Exit Sub
  778.  
  779. errorhandler:
  780.  
  781.     RaiseEvent GAError(LngNull(Err.Number), "Error in CREATEPOPULATION ! " & Err.Description)
  782.     
  783. End Sub
  784.  
  785. Public Sub Clear()
  786.     '
  787.     ' Clear the chromosome array
  788.     '
  789.     ReDim Chromosome(0)
  790.  
  791.     mblnSorted = False
  792.     mblnAllFitnessCalculated = False
  793.     
  794. End Sub
  795.  
  796. Public Sub ClearAllFitness()
  797.     '
  798.     ' sets all the chromosomes' fitnesses to a high number
  799.     ' this forces all chromosomes to be re-evaluated the next evaluation
  800.     ' sequence.
  801.     ' NOT called from within the class, must be called
  802.     ' from the main generation-loop should it be necessary
  803.     
  804.     Dim lngloop                 As Long
  805.  
  806.  
  807.     For lngloop = 0 To (PopulationCount - 1)
  808.         Chromosome(lngloop).Fitness = 1E+300
  809.         Chromosome(lngloop).RecalculateFitness = True
  810.     Next lngloop
  811.     
  812.     
  813. End Sub
  814.  
  815. Private Function AddChromosome(ByVal lngChromoNbr As Long)
  816.     '
  817.     ' Add a new individual chromosome to the population
  818.     ' Called from CreatePopulation
  819.     '
  820.     On Local Error GoTo errorhandler
  821.     
  822.     
  823.     Dim NewChromosome           As ChromosomeindividualType
  824.     
  825.     ReDim Preserve Chromosome(lngChromoNbr)
  826.  
  827.     NewChromosome = CreateRandomChromosome(1)
  828.     
  829.     ReDim Preserve Chromosome(lngChromoNbr)
  830.     
  831.     Chromosome(lngChromoNbr) = NewChromosome
  832.     
  833.     ' this chromosome did not yet went through the fitness test,
  834.     ' set it's fitness to a very high ( = bad) number
  835.     Chromosome(lngChromoNbr).Fitness = 1E+300
  836.     Chromosome(lngChromoNbr).RecalculateFitness = True
  837.     
  838.     mblnAllFitnessCalculated = False
  839.     mblnSorted = False
  840.     
  841. Exit Function
  842.  
  843. errorhandler:
  844.  
  845.     RaiseEvent GAError(LngNull(Err.Number), "Error in AddChromosome ! " & Err.Description)
  846.     
  847. End Function
  848.  
  849. Private Function CreateRandomChromosome(ByVal intOrigin As Integer) As ChromosomeindividualType
  850.     '
  851.     ' Returns a random chromosome
  852.     '
  853.     ' intOrigin : from where is this function called
  854.     '     1     Createpoplation                         GANewChromosomeCreatePopulation
  855.     '     2     Selection (Random offspring Generation) GANewChromosomeROG
  856.     '     3     Social disaster                         GANewChromosomeSocialDisaster
  857.  
  858.     Dim intGeneCounter          As Integer
  859.     
  860.     Dim strNewGenes()           As String
  861.     Dim lngNewGenes()           As Long
  862.     Dim dblNewGenes()           As Double
  863.     
  864.     
  865.     
  866.     ReDim strNewGenes(0)
  867.     ReDim lngNewGenes(0)
  868.     ReDim dblNewGenes(0)
  869.     
  870.     
  871.     For intGeneCounter = 0 To (mGenesPerChromosome - 1)
  872.         
  873.         Select Case mChromosomeType
  874.             Case GAEncodingBinary  ' Binarystring
  875.                 ReDim Preserve strNewGenes(intGeneCounter)
  876.                 strNewGenes(intGeneCounter) = RandomBinaryGene
  877.                 
  878.             Case GAEncodingAlphabetic ' alphabetic characters
  879.                 ReDim Preserve strNewGenes(intGeneCounter)
  880.                 strNewGenes(intGeneCounter) = RandomAlphabeticGene
  881.                 
  882.             Case GAEncodingLongNbr  ' Long numbers
  883.                 ReDim Preserve lngNewGenes(intGeneCounter)
  884.                 lngNewGenes(intGeneCounter) = RandomLongGene
  885.                 
  886.             Case GAEncodingDouble   ' Double numbers (real numbers)
  887.                 ReDim Preserve dblNewGenes(intGeneCounter)
  888.                 dblNewGenes(intGeneCounter) = RandomDoubleGene
  889.                 
  890.         End Select
  891.     
  892.     Next intGeneCounter
  893.     
  894.     ' raise the newchromosome-event, allowing the main usercode
  895.     ' to override the newly created chromosome and use a custom-made
  896.     ' one
  897.     RaiseEvent NewChromosome(strNewGenes(), lngNewGenes(), dblNewGenes(), intOrigin)
  898.  
  899.     
  900.     ' insert the new chromosome in the array
  901.     ReDim CreateRandomChromosome.Genes(0)
  902.     For intGeneCounter = 0 To (mGenesPerChromosome - 1)
  903.         ReDim Preserve CreateRandomChromosome.Genes(intGeneCounter)
  904.         Select Case mChromosomeType
  905.             Case GAEncodingBinary  ' Binarystring
  906.                 CreateRandomChromosome.Genes(intGeneCounter).GeneString = strNewGenes(intGeneCounter)
  907.                 
  908.             Case GAEncodingAlphabetic ' alphabetic characters
  909.                 CreateRandomChromosome.Genes(intGeneCounter).GeneString = strNewGenes(intGeneCounter)
  910.                 
  911.             Case GAEncodingLongNbr  ' Long numbers
  912.                 CreateRandomChromosome.Genes(intGeneCounter).GeneLong = lngNewGenes(intGeneCounter)
  913.                 
  914.             Case GAEncodingDouble   ' Double numbers (real numbers)
  915.                 CreateRandomChromosome.Genes(intGeneCounter).GeneDouble = dblNewGenes(intGeneCounter)
  916.                 
  917.         End Select
  918.     Next intGeneCounter
  919.     
  920.     CreateRandomChromosome.RecalculateFitness = True
  921.     
  922. End Function
  923.  
  924. Private Function RandomBinaryGene() As String
  925.     '
  926.     ' Returns a random binary gene
  927.     '
  928.     Dim strGene                 As String
  929.     
  930.     Dim intBitCounter           As Integer
  931.     
  932.     strGene = Space$(mBinaryGeneLength)
  933.     Randomize (Sin(Timer) * Timer - Rnd * Timer)
  934.     For intBitCounter = 1 To mBinaryGeneLength
  935.         ' randomize
  936.         If Rnd < 0.5 Then
  937.             Mid$(strGene, intBitCounter, 1) = "0"
  938.         Else
  939.             Mid$(strGene, intBitCounter, 1) = "1"
  940.         End If
  941.     Next intBitCounter
  942.     
  943.     ' raise the newgene-event, allowing the main code
  944.     ' to override this random gene with a custom made one
  945.     RaiseEvent NewGeneString(strGene)
  946.     
  947.     RandomBinaryGene = strGene
  948.     
  949. End Function
  950.  
  951. Private Function RandomAlphabeticGene() As String
  952.     '
  953.     ' Returns a random alphabetic gene
  954.     '
  955.     Dim strGene                 As String
  956.                 
  957.     Dim intGene                 As Integer
  958.     Dim intLoop                 As Integer
  959.     
  960.     Randomize (Sin(Timer) * Timer - Rnd * Timer)
  961.     strGene = ""
  962.     
  963.     For intLoop = 1 To mAlphabeticGeneLength
  964.     
  965.         intGene = Int((Rnd * 26) + 1) + 64
  966.     
  967.         strGene = strGene & Chr$(intGene)
  968.     Next intLoop
  969.     
  970.     ' raise the newgene-event, allowing the main code
  971.     ' to override this random gene with a custom made one
  972.     RaiseEvent NewGeneString(strGene)
  973.     
  974.     RandomAlphabeticGene = strGene
  975.  
  976. End Function
  977.  
  978. Private Function RandomLongGene() As Long
  979.     '
  980.     ' Returns a random Long number gene
  981.     '
  982.                 
  983.     Dim lngGene                 As Long
  984.                 
  985.     Randomize (Sin(Timer) * Timer - Rnd * Timer)
  986.     
  987.     lngGene = ((mLongGeneMaxValue - mLongGeneMinValue + 1) * Rnd + mLongGeneMinValue)
  988.     If lngGene > mLongGeneMaxValue Then
  989.         lngGene = mLongGeneMaxValue
  990.     Else
  991.         If lngGene < mLongGeneMinValue Then
  992.             lngGene = mLongGeneMinValue
  993.         End If
  994.     End If
  995.     
  996.     ' raise the newgene-event, allowing the main code
  997.     ' to override this random gene with a custom made one
  998.     RaiseEvent NewGeneLong(lngGene)
  999.     
  1000.     RandomLongGene = lngGene
  1001.     
  1002. End Function
  1003.  
  1004. Private Function RandomDoubleGene() As Double
  1005.     '
  1006.     ' Returns a random double number gene
  1007.     '
  1008.     Dim dblGene                 As Double
  1009.                 
  1010.     Randomize (Sin(Timer) * Timer - Rnd * Timer)
  1011.     
  1012.     dblGene = ((mDoubleGeneMaxValue - mDoubleGeneMinValue + 1) * Rnd + mDoubleGeneMinValue)
  1013.     
  1014.     If dblGene > mDoubleGeneMaxValue Then
  1015.         dblGene = mDoubleGeneMaxValue
  1016.     Else
  1017.         If dblGene < mDoubleGeneMinValue Then
  1018.             dblGene = mDoubleGeneMinValue
  1019.         End If
  1020.     End If
  1021.     
  1022.     
  1023.     ' raise the newgene-event, allowing the main code
  1024.     ' to override this random gene with a custom made one
  1025.     RaiseEvent NewGeneDouble(dblGene)
  1026.         
  1027.     RandomDoubleGene = dblGene
  1028.     
  1029. End Function
  1030.  
  1031. Public Sub EVALUATE()
  1032.     '
  1033.     '
  1034.     ' Raises the EvaluateFitness-event allowing the main app to calculate
  1035.     ' the fitness for each chromosome
  1036.     '
  1037.     '
  1038.     On Local Error GoTo errorhandler
  1039.     
  1040.     Dim lngIndex                As Long
  1041.     Dim lngStart                As Long
  1042.     Dim lngEnd                  As Long
  1043.     
  1044.     Dim dblFitnessValue         As Double
  1045.  
  1046.     Dim dblStdDev               As Double
  1047.     
  1048.     lngStart = 0
  1049.     lngEnd = (PopulationCount - 1)
  1050.     
  1051.     
  1052.     For lngIndex = lngStart To lngEnd
  1053.         
  1054.         If Chromosome(lngIndex).RecalculateFitness = True Then
  1055.         
  1056.             dblFitnessValue = Chromosome(lngIndex).Fitness
  1057.         
  1058.             RaiseEvent EvaluateFitness(lngIndex, dblFitnessValue)
  1059.         
  1060.             Chromosome(lngIndex).Fitness = dblFitnessValue
  1061.             Chromosome(lngIndex).RecalculateFitness = False
  1062.     
  1063.         End If
  1064.     Next lngIndex
  1065.  
  1066.     ' the chromosome-array has changed, it has to be sorted
  1067.     mblnSorted = False
  1068.  
  1069.     ' all fitnesses where calculated
  1070.     mblnAllFitnessCalculated = True
  1071.  
  1072.     ' standard deviation
  1073.     dblStdDev = CalculateStandardDeviation
  1074.  
  1075.     ' Statistics
  1076.     If mblnKeepStatistics = True Then
  1077.         If blnCallFromEvaluate = False Then
  1078.             ReDim Preserve mStatistics(Generation)
  1079.             mStatistics(Generation).HighestFitness = FitnessHighest
  1080.             mStatistics(Generation).LowestFitness = FitnessLowest
  1081.             mStatistics(Generation).StandardDeviation = dblStdDev
  1082.             mStatistics(Generation).SocialDisasterOccured = False
  1083.             mStatistics(Generation).SocialDisasterGenCounter = mSocDisGenCounter
  1084.             mStatistics(Generation).BestChromosome = ShowChromosomestring(0, "TRUE")
  1085.         End If
  1086.     End If
  1087.  
  1088.     '
  1089.     ' ADAPTIVE MUTATION RATE
  1090.     '
  1091.     If mMutationMethod = GAMutationRateAdaptive Then
  1092.         ' if the stabdard deviation stays the same for
  1093.         ' the set number of generations (in
  1094.         ' AMRGenerations / mAMRGenerations) then
  1095.         ' increase the actualmutationrate with 0.01
  1096.         If mAMRFitnessStdDev = dblStdDev Then
  1097.             mAMRCounter = mAMRCounter + 1
  1098.             mAMRCounterDiff = 0
  1099.         Else
  1100.             mAMRFitnessStdDev = dblStdDev
  1101.             mAMRCounterDiff = mAMRCounterDiff + 1
  1102.             mAMRCounter = 0
  1103.         End If
  1104.     
  1105.         If mAMRCounter >= mAMRGenerations Then
  1106.             mActualMutationRate = mActualMutationRate + 0.01
  1107.             If mActualMutationRate > 1 Then
  1108.                 mActualMutationRate = 1
  1109.             End If
  1110.             mAMRCounter = 0
  1111.         End If
  1112.         
  1113.         If mAMRCounterDiff >= mAMRGenerations Then
  1114.             mActualMutationRate = mActualMutationRate - 0.01
  1115.             If mActualMutationRate < mMutationRate Then
  1116.                 mActualMutationRate = mMutationRate
  1117.             End If
  1118.             mAMRCounterDiff = 0
  1119.         End If
  1120.     End If
  1121.     
  1122.     ' Statistics
  1123.     If mblnKeepStatistics = True Then
  1124.         If blnCallFromEvaluate = False Then
  1125.             mStatistics(Generation).MutationRate = mActualMutationRate
  1126.             mStatistics(Generation).SocialDivercity = GeneticDiversity
  1127.         End If
  1128.     End If
  1129.     
  1130.     
  1131.     '
  1132.     ' SOCIAL DISASTER
  1133.     '
  1134.     If mSocDisGenCounter >= mSocDisGenerations Then
  1135.         If blnCallFromEvaluate = False Then
  1136.             Call SocialDisaster
  1137.         
  1138.             blnCallFromEvaluate = True
  1139.             Call EVALUATE
  1140.             blnCallFromEvaluate = False
  1141.             
  1142.             mSocDisGenCounter = 0
  1143.             
  1144.         End If
  1145.         
  1146.     End If
  1147.     
  1148. Exit Sub
  1149.  
  1150. errorhandler:
  1151.  
  1152.     RaiseEvent GAError(LngNull(Err.Number), "Error in EVALUATE ! " & Err.Description)
  1153.  
  1154. End Sub
  1155.  
  1156. Private Sub QuickSortFitness(ByVal lngFirst As Long, ByVal lngLast As Long)
  1157.     '
  1158.     ' Quicksort in order to sort the chromosomes by their fitness.
  1159.     '
  1160.     '            I got this version of quicksort years ago from
  1161.     '            a website (I believe from www.gamedev.net but
  1162.     '            I'm not sure). Original code was in C and Quickbasic.
  1163.     '            The quickbasic version was rewritten by me
  1164.     '            several times over the past years until
  1165.     '            the version you see here. I use it in
  1166.     '            several of my projects.
  1167.     '
  1168.     
  1169.     Dim lngLow                  As Long
  1170.     Dim lngHigh                 As Long
  1171.     
  1172.     Dim dblMidValue             As Double
  1173.     
  1174.     Dim HelpChromo              As ChromosomeindividualType
  1175.     
  1176.     lngLow = lngFirst
  1177.     lngHigh = lngLast
  1178.     
  1179.     ' take the absolute value of fitness
  1180.     dblMidValue = Abs(Chromosome((lngFirst + lngLast) \ 2).Fitness)
  1181.     Do
  1182.         While Abs(Chromosome(lngLow).Fitness) < dblMidValue
  1183.             lngLow = lngLow + 1
  1184.         Wend
  1185.         While Abs(Chromosome(lngHigh).Fitness) > dblMidValue
  1186.             lngHigh = lngHigh - 1
  1187.         Wend
  1188.         If lngLow <= lngHigh Then
  1189.             GoSub swap
  1190.             lngLow = lngLow + 1
  1191.             lngHigh = lngHigh - 1
  1192.         End If
  1193.     Loop While lngLow <= lngHigh
  1194.     If lngFirst < lngHigh Then QuickSortFitness lngFirst, lngHigh
  1195.     If lngLow < lngLast Then QuickSortFitness lngLow, lngLast
  1196.     
  1197.     ' the chromosome-array is sorted
  1198.     mblnSorted = True
  1199.     
  1200. Exit Sub
  1201.  
  1202. swap:
  1203.     HelpChromo = Chromosome(lngLow)
  1204.     Chromosome(lngLow) = Chromosome(lngHigh)
  1205.     Chromosome(lngHigh) = HelpChromo
  1206.     
  1207. Return
  1208.  
  1209. End Sub
  1210.  
  1211. Public Sub SELECTION(Optional varSelectionMethod As Variant)
  1212.     '
  1213.     ' Selects two chromosomes for reproduction
  1214.     '
  1215.     ' the property SelectionMethod is normaly used to specify
  1216.     ' the method of selection (range, roulettewheel or tournament)
  1217.     ' the optional variant varSelectionMethod can however
  1218.     ' be used to specify the selectionmethod, allowing
  1219.     ' code that automatically alternates selectionmethods
  1220.     '
  1221.     '
  1222.     '
  1223.     '
  1224.     On Local Error GoTo errorhandler
  1225.     
  1226.     Dim intMethod               As Integer
  1227.     Dim intX                    As Integer
  1228.     Dim intRouletteCounter      As Integer ' howmany times has roulettewheel been spun ?
  1229.     
  1230.     Dim dblRunningFitness       As Double
  1231.     Dim dblHulp                 As Double
  1232.     Dim dblChosenFitness        As Double
  1233.     
  1234.     Dim lngloop                 As Long
  1235.     Dim lngHulp                 As Long
  1236.     Dim lngChosenIndex          As Long
  1237.     Dim lngChromo1              As Long
  1238.     Dim lngChromo2              As Long
  1239.     
  1240.     Dim blnChromosAreIdentic    As Boolean  ' used in random offspring generation
  1241.     
  1242.     
  1243.     
  1244.     lngChromo1 = 0
  1245.     lngChromo2 = 0
  1246.     
  1247.     
  1248.     If IsMissing(varSelectionMethod) Then
  1249.         intMethod = mSelectionMethod
  1250.     Else
  1251.         intMethod = IntNull(varSelectionMethod)
  1252.     End If
  1253.  
  1254.     
  1255.     ' Statistics
  1256.     If mblnKeepStatistics = True Then
  1257.         mStatistics(Generation).SelectionMethod = intMethod
  1258.         mStatistics(Generation).RouletteWheelOverflow = False
  1259.     End If
  1260.  
  1261.  
  1262.     ' Sort the chromosome array ?
  1263.     If mblnSorted = False Then
  1264.         Call QuickSortFitness(0, (PopulationCount - 1))
  1265.     End If
  1266.  
  1267.     Do
  1268.         Select Case intMethod
  1269.             Case GASelectRank
  1270.                 ' Select the parents based on rank.
  1271.                 GoSub Rank
  1272.             
  1273.             Case GASelectRouletteWheel
  1274.                 ' select the parents based on a weighted roulette wheel
  1275.                 ' (the weight being the sort order). The sort is by fitness
  1276.                 ' so a lower chromosome index is a better one.
  1277.                 GoSub RouletteWheel
  1278.                 If intRouletteCounter > cRouletteWheelSpinMax Then
  1279.                     GoSub Rank
  1280.     
  1281.                     ' Statistics
  1282.                     If mblnKeepStatistics = True Then
  1283.                         mStatistics(Generation).RouletteWheelOverflow = True
  1284.                     End If
  1285.                 
  1286.                 End If
  1287.                 
  1288.             Case GASelectTournament
  1289.                 ' Organize a tournament. Select 'TournamentSize' members randomly out of the population.
  1290.                 ' The fitttest of this group is selected for reproduction.
  1291.                 ' Do this a second time to obtain both parents
  1292.                 GoSub Tournament
  1293.                 
  1294.         End Select
  1295.     Loop Until lngChromo1 <> lngChromo2 ' make sure both parents are different chromosomes
  1296.  
  1297.     mlngSelectedIndex1 = lngChromo1
  1298.     mlngSelectedIndex2 = lngChromo2
  1299.  
  1300.  
  1301.     ' --------------------------------------
  1302.     ' RandomOffspringGeneration
  1303.     ' --------------------------------------
  1304.     '
  1305.     If mRandomOffspringGeneration = True Then
  1306.         GoSub GenerateARandomOffspring
  1307.         
  1308.     End If
  1309.  
  1310.  
  1311. Exit Sub
  1312.  
  1313. '
  1314. ' -----------------------------------------------------------
  1315. ' Rank selection
  1316. ' -----------------------------------------------------------
  1317. '
  1318. Rank:
  1319.     '
  1320.     ' All individuals are sorted by their fitness, two
  1321.     ' of them are chosen randomly
  1322.     '
  1323.     Do
  1324.         For intX = 1 To 2
  1325.  
  1326.             lngHulp = Int((Rnd * (PopulationCount)))
  1327.             If lngHulp > (PopulationCount - 1) Then
  1328.                 lngHulp = PopulationCount - 1
  1329.             End If
  1330.  
  1331.             If intX = 1 Then
  1332.                 lngChromo1 = lngHulp
  1333.             Else
  1334.                 lngChromo2 = lngHulp
  1335.             End If
  1336.  
  1337.         Next intX
  1338.     Loop Until lngChromo1 <> lngChromo2
  1339.     
  1340. Return
  1341.  
  1342. '
  1343. ' -----------------------------------------------------------
  1344. ' Spin the Roulettewheel
  1345. ' -----------------------------------------------------------
  1346. '
  1347. RouletteWheel:
  1348.     ' A roulette wheel uses an imaginary wheel and creates
  1349.     ' pies of varying sizes for each member. A standard (or 'normal')
  1350.     ' roulette wheel creates pie-sizes related to the fitness of
  1351.     ' each member.
  1352.     ' The positive side of this is that roulette wheel tends to
  1353.     ' attain convergence very quickly.
  1354.     ' The negative side is that the normal roulette wheel tends
  1355.     ' to attain convergence very quickly... leading to local optima.
  1356.     ' The reason for this is that roulette wheel cannot handle
  1357.     ' huge fitness differences correctly.
  1358.     '
  1359.     ' To solve this problem the fitness values are weighted. This means
  1360.     ' the size of each 'pie' is not directly related to the size of
  1361.     ' the fitnessscore, but more to the position within the sorted
  1362.     ' fitnessscores...
  1363.     '
  1364.     ' The pie-sizes are chosen by position in a fitness-sorted population. So
  1365.     ' for 100 members, sorted by fitness from 0 (fittest) to 99 (worst) :
  1366.     ' individual 0 gets a pie of 100, individual 1 gets a pie of 99, 3 of 98... until
  1367.     ' element 99 gets a pie of 1. In this way the repartition is smoother
  1368.     '
  1369.     ' This can be done easily with a running sum, but I had trouble
  1370.     ' with problems generating huge differences in fitnessscores..
  1371.     ' So I used a different approach : filling piestart and pieend
  1372.     ' Later I found what the problem was and how to solve it, but this
  1373.     ' code was allready done and worked flawlessly, so I decided
  1374.     ' to keep it this way...
  1375.     '
  1376.     ' First, create the pies of the wheel
  1377.     ' fill in the PieStart and PieEnd fields
  1378.     ' for every chromosome. Chromosomes with fitness score closer to 0
  1379.     ' get a bigger piece than those with a higher fitness
  1380.     ' Since they are sorted by fitness, their index is a measurement
  1381.     ' for the pie segment. Lower index means a bigger pie
  1382.     
  1383.     dblRunningFitness = 0
  1384.     dblHulp = PopulationCount
  1385.     
  1386.     For lngloop = 0 To (PopulationCount - 1)
  1387.         dblRunningFitness = dblRunningFitness + 1
  1388.         Chromosome(lngloop).PiePieceStart = dblRunningFitness
  1389.         dblRunningFitness = dblRunningFitness + dblHulp
  1390.         
  1391.         Chromosome(lngloop).PiePieceEnd = dblRunningFitness
  1392.     
  1393.         dblHulp = dblHulp - 1
  1394.     Next lngloop
  1395.     
  1396.     '
  1397.     ' Now spin the wheel
  1398.     '
  1399.     intRouletteCounter = 0
  1400.     Do
  1401.         For intX = 1 To 2
  1402.             ' witch chromosome is the lukcy one ?
  1403.             dblHulp = ((Rnd * Abs(Int(dblRunningFitness))) + 1)
  1404.             If dblHulp > Chromosome(PopulationCount - 1).PiePieceEnd Then
  1405.                 dblHulp = Chromosome(PopulationCount - 1).PiePieceEnd
  1406.             End If
  1407.             
  1408.             For lngloop = 0 To (PopulationCount - 1)
  1409.         
  1410.                 If dblHulp >= Chromosome(lngloop).PiePieceStart And dblHulp <= Chromosome(lngloop).PiePieceEnd Then
  1411.                     If intX = 1 Then
  1412.                         lngChromo1 = lngloop
  1413.                     Else
  1414.                         lngChromo2 = lngloop
  1415.                     End If
  1416.                     Exit For
  1417.                     
  1418.                 End If
  1419.             Next lngloop
  1420.         
  1421.         Next intX
  1422.         '
  1423.         ' As stated, Roulette wheel can converge quickly, but is prone
  1424.         ' to arrive quickly at local optima if many chromosomes start to look alike
  1425.         ' and have the same fitnessscore.
  1426.         ' In an attempt to avoid local optima a counter is used to track
  1427.         ' howmany times same fitnessscored-chromosomes are chosen.
  1428.         ' If this maximum is reached then jump out of roulette wheel
  1429.         ' doubles.aowmany times same fitnme f    
  1430.      ' Lo't
  1431. Moefault values for bubles.
  1432.     strCurrentsrles.
  1433.     I1 intX2dT
  1434.                 G     dblRunningFitnes    strCurrentsrles.
  1435.     I1 intX2dT
  1436.                 G    s f ached thenAlphabetic
  1437.     
  1438.     strGene = Spac'            several of my projects.
  1439.     'R$ondomOffsprings() A     he fitn              G    s Rof my projects.
  1440.     'R$mwromoCount    If mMuuuuuuuuu   projects.
  1441.    'ssovrt             
  1442.       
  1443.  DingFitnes    strCurrelect Chromos  ''ssovrtW ached thenA  several of my projects.
  1444.     '
  1445.      he fitn creates pie-sizes related to the Rof my projrhromoNbr)
  1446.                     )
  1447.                     Else
  1448.           attain converg   'R$m1)
  1449.      ncodin se
  1450.     '            The quickbasic versionitness-sorer
  1451.     '
  1452.     ' This  CrossoverMethod =MUTATION       If dbl        The quickbasic versiFcl optima if man   
  1453. <     '
  1454.   ic 25
  1455.   =drer= mSoci=(r= mSoc  '  'basic (lngLo
  1456.     '            The qui     'Currentsrles.
  1457.   cial2rt il    The qui     'Currentsrles.
  1458.   cial2rt il    The qui     'Currentsrles.
  1459.   cial2rasicleasic (lngLo
  1460. void local op       Ls   itnwmany times same fitnme f    
  1461.      ' LCalgcLCalgcLCalgcLCalgcLCalgcLCalgcLCalgctart And dblHulp <= Chra
  1462.   cial2rasiclessso>mes same fitnme f    
  1463.      ' LCalgcLCssss  The<=              G    s f a---------fitneop
  1464.        2 versio> inE   I1 intXal2rasicle  'CurxCounterDiff = 0
  1465.         End If
  1466.     End If
  1467. Ls   itnwmany times same fops stlng"0.lgcLCalgcLCalgcu but more to the
  1468.   =dheaso             CreateRandomChromosome.Genes(intGeneCounter).Genenot handle
  1469.     ' huge fitttttttttttttt' Property
  1470.  
  1471.  ! "m G    s f a---------fitneop
  1472.        2 versio> rrentsrles.
  1473. dle
  1474.     ' huge fittttttness =Soc  ' nr
  1475.     ead(o specify the Ort il    The quOssove fitttttttttttttt' Property
  1476.  
  1477.  or=:lMuuuuuuuuu   prs
  1478.     ' the sRt----fitneop
  1479.        2 versio> inE   I1 intXal2rasicle  'CurxCounmveop'CurxCoGoSub Rank
  1480.             
  1481.             CP$       CP$           a--fitnnd If
  1482.   a---------fitneop StatisticsSocialllllllllllllllllllll
  1483.                  a--fit-------------If
  1484.   gtXal          <ndomly out of theop
  1485.        2 versio>
  1486.  e chosr fitness
  1487.     'srles.Moefault vaomize (cify tl
  1488.   srles.
  1489. dle
  1490.   neo
  1491.  
  1492.  biggeene
  1493.  e cl          <ndom---If
  1494.   gtXal         
  1495.     <ndomly out of theop
  1496.        2 versio>
  1497.  e chosr fitness
  1498.     'srles.Moefde
  1499.     ' to override tssValue
  1500.             Chromosome(lngIndex).RecalculateFitnewf'                              l2rair2itn'y    Chromosome(lngIndex).PvarSelecX2tart 
  1501.  
  1502. dle
  1503.   neo
  1504.  
  1505.  biggeene
  1506.  e'TournamentSbs(ChromgX2tart8e GAEncodingBinary  ' Binarystring
  1507.     (y
  1508.     ( lngloop
  1509.  ess
  1510.     'srles.Mlg
  1511.     RaiseEvent NewCheystring
  1512.     (y
  1513.     ( lngloop) As      ' doubles.ao tssValue
  1514.           Ch prone
  1515.  G,
  1516.  Mlg
  1517.  e
  1518. dle
  1519.   DcRtness)
  1520.   lllllllllllllllllingcbiggeene
  1521.  e'TournamentSbs(ChromgX2tart8e GAEncodingBinary  'opertyValu codingBinary  'opertyValug
  1522.     (y
  1523.     ( lngloop
  1524.  ess
  1525.     's      As Integer
  1526.     Dim intRouletteCounter      As Integer ' howmany timesLCounter      As Integer ' howmany timesLCounter      As Integer  srles.
  1527. dlp-Ifs
  1528.     's      AsfS   moother
  1529.   esLCounter      Counter      As unter    Cm  As Integ   As Intengloop
  1530.                     Else
  1531.                itness
  1532.     'srles.Moefau    As Integer ' howmany timesLCounter      As Integer  srles.
  1533. dlp-Ifs
  1534.     's      AsfS   moother
  1535.   esLCounter      Counter      As unted  AsfS   moother
  1536. domChromosome.Genme fitnmmmm.Upee
  1537.  tyValug
  1538.     (y
  1539.     ( lngloop
  1540.  es        a--fit--ssoverAug
  1541.     hDp = ger rAug
  1542.     hDp  p                Else
  1543.                itness
  1544.     'srles.Moefau    As Integer 'enes(intr
  1545. i Ins(intr
  1546. i Ins(intr
  1547. i Ins(intr
  1548. i  As Integd    he fitn                      'Rr
  1549. i Ins(intromedr  As Chromosomeindue A hDp  p      <ialgcu bules.Moefaf
  1550.   gtXal         hod
  1551.     Else
  1552.         in" Integ   As Intengloop
  1553.                     Else
  1554.                  o    Ellg
  1555.  e
  1556. dlepp Ins(intr
  1557. i InsulateFitnewfc            2 = lngChro<    vt) to 99  As IntegalculateFi6hro<    vt) to 99el    The qui     'Currentsrles.
  1558.   cial2rt   El(      Cr
  1559. i Insul times same fitnme f   gChHis        Else
  1560. this maximum is reached then jumis        Else
  1561. this max reached then juortFitness(0, (PopulVod then juortFitnessdblHulp = oop
  1562.         juortFitnngLow)
  1563.     Chromosome(lngLow) = Chromosome(lTrssdblH hDp  p                Else
  1564.                itness
  1565.     'srles.Moefau    As ILverge quickl
  1566.   cial2rt   Elosome(lTrssdblH hDss
  1567.     'srles.Moefau    As ILverge quiu    t ucial2bules.Moefaf
  1568.   gtXal          (u t ucialla (Po ' StatisticsLu          Else
  1569.     S   '
  1570.    cial2rt verge quiuElse
  1571. this max reached then juortFitness(0, (PopulVod theiption(ByVal vNewValue As String)
  1572.     mDescription = vNewValue
  1573. EndblH hIf
  1574.  
  1575.             If intXctheLlng)
  1576.     mDescription =  wchromosome-event,   (y
  1577. hlvNewValue)
  1578.   f Sfaf
  1579.   gtXal          (u t ucialla (Po ' Statistic(rtheLurCounters
  1580.  verOnePoint
  1581.     
  1582. YInteger  srles.
  1583. dl unter    Cm  As Integ   As Intengloop
  1584.                     Els     Chromosome(lnme(lnme(lnme(lnme(lnme(lnme(lnme(ln
  1585.   RrCounters
  1586.  verOnePointeCoss
  1587.     
  1588.         dblHulp = dblHulp - 1
  1589.     Next lngloop
  1590.     NSheLurCounters
  1591. ntege oop
  1592.         e oop
  1593.     atiingcbiggeeC6=If
  1594.     End If
  1595.  
  1596.     '
  1597.      wo 99eeeeeee$arEnd If
  1598. ounters
  1599. ntege oop
  1600.  Counters
  1601. nt srles.
  1602. dC6=If
  1603.     End If
  1604.  
  1605.    mEC6=Ifu           se.
  1606. dC6=If
  1607.     E
  1608. dC6=If
  1609. aInes(intGeneCounter).GeneString = strNewGenes(intGenebse.
  1610. dC6=If
  1611.     enerlHulp - 1
  1612.     Next lnglooe-evener).GeneString = strNewGenes(intGenebse.
  1613. dC6e     se.
  1614. dC6=If
  1615.     strNewGSs StatisticsLu  (ng     ThtXctheLlng)
  1616.     k    hod
  1617.     tatis Th        ' Do this a second time to obtain both parents
  1618.                 GoSubS2Integer ' howmany twGe-aInes(iiiiiiiiise.di 
  1619.     
  1620.    dblHulp - 1
  1621.     Nex           GoSu   meblHulp - 1
  1622.    m9Sers
  1623. nGe-aElse
  1624. los-eion As Lon based on r GoSu  yerO   ' The    urnameOr lngu
  1625.       y timesLCounter      Asa ' Do Ni(u t ucialla  GoSu  yerAs es(intGeneCouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.C6=I     ' The fitttest of this group is selected fos<DneCouion
  1626.     For lngX = 0 To Genebse.
  1627. dC6e p     dbis selected fd
  1628.     tatoup iuuuuuuuer    Cm  As Integ   As Iger          yo
  1629.    m=Er chanectly rela     ' Do this   Cm  As I quickbasic versionitness-sorer
  1630.     '
  1631.     ' This  Crossoverbis selei(fsnes(intGeneCounter).GeneString = strNewGenes(intGenebse.
  1632. dC6=If
  1633.     enerlHulp - os   Randomize (Sin(nk
  1634.     Genes((enerp>= m     o   0  (y
  1635.  
  1636.     Genes((enennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn6=IfSnnnnnnnnnnnnnnne-entGeneCounter).GeneString = ulp eneStringd QuickbaMoefaf
  1637.   gtXal         hod
  1638.     Else
  1639.         in" Integ   As Intenis Ptttt strNewGenes(intGenebse.
  1640. dC6e       e oop
  1641.     aPaginuuuy    tGoSub Rank
  1642.     
  1643.         eLl  ' -----Ctionehank
  1644.     
  1645.      
  1646.      ' D?K2od) Then
  1647.        Lwfc nnnnnn    ntGenrystring
  1648.     (y
  1649.    Integd    he fitn         r  (y
  1650.    Integd    he fitn on GoSu   mebStr
  1651. i innnnnnnerlHulp - os   Randomi               Else
  1652.        ebse.
  1653. dC6eoabett - 1) 
  1654.   (
  1655.        e
  1656.             CP$     ing = - os   Randomi   tw    nn    ntGenrystring
  1657.     (y
  1658.    Integd    he fitn on GoSu   mebStr
  1659. i innnnnnnerlHulp - os   Randomi               Else
  1660.        ebse.
  1661. dC6eoabett - 1) 
  1662.   (
  1663.        e
  1664.           NsAMRCounterDiff = mAMRCounterDiff + 1
  1665.             mAMRCounter = 0
  1666.         End If
  1667.     
  1668.         If mAMRCounter >= mAMRGenerations Then
  1669.             mActualMutationRate = mActualMutationRate Aau   Lmore m www.gamedev.net tctFitnesromos.t      ration).SocialDimActustualMutationRate =override thivverride thivverriD  Integd  d  CP$ = m----Ct   ' default value 2'Cu IntVoL  
  1670.  thivverriD  Integd  d  CP$ = m----Ct   ' d
  1671.    rinnnnnnnnnnnverriD  In    Chromosome(lngLow) = Chhhhhhhhhhhhhhhhh stlngpngnnnnnuoperty
  1672.  
  1673.  or=:lMuuuuuuuuu   prs
  1674. pngnnnnnuoperty   nnnerlHulp - os   Rannnnnnnnnui .gamedev.net tctF(operty   nnnerlHulp - os  '(uuuuuuu= m----Ct   ' d
  1675.    rinnnnnnnnnnnverr not suGoSu  y blHulpuickbaMoehhhhhhhh  nndtfd
  1676.     tat  ' '(uuuuuuu= m----Ct   ' d
  1677.    rinnnnnn   uuu= m----Ct   gnnnntengloop
  1678. sl       'enes(intr
  1679. i Ins(introoooooooooooAsfS   r<2222222Xigg--Ct   ' t d
  1680.    ter S.nglooehhhhhhhm Helps   RannnnAelps   RannnnAelps   RannnnAelps LCalgcLCalgcLCalgcLCalgcLChs   Rannnn ebse.
  1681. dC6eoariD  '(uuuuuuu=Lter S.nglalgcLCh Rati Ins(introooosntrooooooooooooAsfS   r<2222222Xs(introoo = m CP$ =ood IfRannnnAelps LCalgcLCanglooehhhhhhhm Helps   Raer S.ntring(r
  1682.     rotionehank
  1683.     
  1684.      
  1685.     CreateRandomChromo
  1686.     MutationRnAelps  annnd$W  ncodin pngnnnnhh  nndtfd
  1687.   is groupVirectlydonter , n on GoSu   mebStnnAelpDu   prs
  1688. pngnnnnnuoperty  CalgcL  
  1689.      
  1690.     CreateRandomChromo
  1691.     MutationRa          a custom made omebStr
  1692. i innnnnnnerlHulp - os   Randomi              m=Er chanLCalgcLCal  Crenk
  1693.     ynnnnnerlHulp - os  5Ial vNewValue As String)
  1694.     mDescription = vNeon = vcDisGonnn   uuu= m----Ch LCalgcLCangloRunningFitd
  1695.     mblnAllFitn  (y
  1696.     ( lnglooNtom made oneoo------------------As IntenrNe tctFia,or chanLCalgcLCal  Crenk
  1697.     ynnnnt e
  1698. dlepp Ins(intrH           m=Er chanLCalgcLCal  Crenk Raa22222Xs(introoo onRnAelpP Raa22222Xs(intbs(Ch,iy e
  1699. dperty  CalgcL  
  1700.      
  1701.  ps stlng"onk
  1702.     
  1703.      
  1704.     CreateRandomChromo
  1705.  onRnAelpPss + dblHuV        ' witch chromosome is the lukcy one ?
  1706.             dbl trouble (y
  1707.     ( ln            dbl trouble (y
  1708.     ( ln            dbl troubleonRnAelpAau  t' w
  1709.     '
  1710.     intRouletteCounter = 0
  1711.     Do
  1712.         For intX = n-----------------As IntenrNe tctFia,or chanLCalgcLCal  Crenk
  1713.     ynnnnt e
  1714. dlep
  1715.     intRouletteCounter = 0
  1716.     Do
  1717.         For intX = n-----------------As IntP$ =ood IfRannnnAelps LCalg   enk ---or chanLCalgcLCal  Crenk
  1718.     
  1719.    Integd    he fitn on GoSu   mebStr
  1720. i innnnnnnerlHulp - os   Ran  For intX = n-----------------As N)nLCalgcLCal  Crenaebse.
  1721. dC6eoariD  '(u For intX = ihen
  1722.      c
  1723.    D  7Ne tctFiop While lngLow <oop = 0 To (PopulnRunningFink:
  1724.     'ow <<<<<<<<<<<<<<d  ndomi-------------As InMRCoLdue A hDp lpuickbaDim blnChromosAreenk
  1725.     
  1726.    Integd    he fitn on GoSu   mebStr
  1727. i innnnnnnerlHulp - os   Ran  (hlngHulp                  for each os   Randomi               Else       n   ntX = n---Snu Su  y blHulpuickbaMoehhhhhhhh  nnsRFia, Selelei(fsnes" n---f + 1
  1728.        gcLnRos   R ntX = nuickbaMoehhhhhhhh  nnsRFia, SelTo errorhandler
  1729.     
  1730.     Dim lngX                onRate + 0.01
  1731.        escription = vNeo Crenk
  1732.     
  1733.    In<
  1734.  
  1735.             If int ' raise the newgene-event, allowing the main code
  1736.     ' to ovvent, allP01
  1737.       bR 'ow <al2'R= m----Ct   ' d
  1738.    I got this veee s= n-----------------As IntenrNe tctFia,or chanLCalon ='s  annnd$W  ncodin pngnnnnhh  nndtfdooooooooooAseyg the main code
  1739.        mAMRCounter = ' Neo CCalgre----As wcode
  1740.  oen
  1741.      
  1742.  
  1743. i innnnnnntene
  1744.  e'Tournamen='s  annnd$Wnnnd$Wnnnd$Wnnnd$Wnnnd$Wnnnd$nnnnnui .gamedev.ne dbl id
  1745.  )s.Upee annnd$W  neo CCalgregameAseyg the main code
  1746.        mAMRCounter = ' Neo CCalgre-.d$WnnCrter = ' Neo CCa
  1747.  
  1748. i '(uuuuuuu=l
  1749.         
  1750.  oenop
  1751.            9 yerO  sic versiFcl opt:d)
  1752.  onRnAelpPss + dblHuV        ' witch                   NfiActua    dd(pbR 'ow <al2= 0c              in)op While leWheActrer=ctFic allP01
  1753.       bR ninesre----As wcmal roulette wheel tends
  1754.     'verge quicklDkpecify
  1755.     ' thstrNewGenefBl2'R= m--tbles.
  1756.                                     1
  1757.     Next lsily with  
  1758.     
  1759.     Dim lngX              CP$     ing = - os   Randomi   tw    nn    ntGenrystring
  1760.     $Wnnnd$nncr DimP    =RP?    ' to ovvnd$nncr DimP    =RP?quicklDkpecify
  1761.     ' thstrNewGenefBl2'R= m--tbles.
  1762.                              P?qSnnd$Wnnnd$Wnnnd$W  ' lDk           CP$     ing = - os   Randomi   tw    nn    ntGenelectandomiyKh
  1763.   itnmmmm7iInteger ' howmany                            mAMRCounterDiffmP    =2er =    CP$     ing W      o 
  1764.  
  1765.     D D D D D D D D ----As IntenrNe tctFia,odiD D mOffspringGeneration nnd$Wnnnd$W  ' lDk           CP$     ih
  1766. i innnnnn     m=Er=)l7iIuhe mahDp  p    ingGeneration nnd$Wnnnd$W  ' lDk           CP$     ih
  1767. i innnnnn     m=Er=)l7iIuhe mahDp  p    ingGeneration nnd$Wnnnd$W  ' lDk           CP$     ih
  1768. i innnnnn     m=Er=)l7iIuhe mahDp  p    ingGeneration nnd$Wnnnd$W  ' lDk           CP$     ih
  1769. i innnnnn     m=Y   'ow <<<<betoSumon nnd$(ewlyIaMRCounpppppchanLCapoonRate + 0.01
  1770.       e
  1771.  e'Tournamen='seStart = dblRunningFitness
  1772.         dblRunninheActrer= mahDp  p    ingGeneration nnd$Wnnnd$W  ' lDk 2 uge quickl
  1773.   cial2lyIaMRCounpppppchanLCapoonRate + 0.01
  1774.    ltal op   ad$W  ' lDk1
  1775.       e
  1776.  aenes(0    Else
  1777. this maximum is reached thenlDk1
  1778.   n     o7ooAseyg the m1
  1779.       eintGeneCouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuan those Dim lngX              CP$ his maximteXRCounter =ose DiCv   'ow <<<N/MRCounpppppchanLCapoonRac    ingSnePgHignRateaximt"sFit mStatistic--tbl '
  1780.     '    CP$ his maximteXRCounter =ose Dit
  1781.    m9Sers
  1782. nGeeeeennitnePgHignRateaximt"sFit mStatisaloas
  1783. nGeeeeHig  ih
  1784. i innnnnn   uuuuuuuuuu   lngX    w <nnitnePgHignRatefuuuuuuuuuuuan t1ppppf               Else
  1785.        ebse.
  1786. dC6eoabett - 1)ged$Wnnnd$W  '  ih
  1787.  Xinnnnnn   uuuuuupchanLCaplW  '  ih
  1788.  XinD      ChfuuuuuuuuuuuanC6eoabett - 1)ged$Wnnnd$W  '  i< uuu   lngX u                  Elsei< uuu   lngX u  o
  1789.  
  1790. ooooooooooooooooooong theSnePgHignRooooooooooooooooooong theSnePgHigneop
  1791.        2lchanectly rela     ' Do this   Cm  As I quickbasic versionitness-sorer
  1792.     '
  1793.     ' This  Crossoverbis selei(fsnes(intGeneCounter).GeneString = strNewGenes(intGenebse.
  1794. dC6=If
  1795.     enerlHulp - os   Randomize (Sin(nk
  1796.     Genes((enerp>= m     o   0  (y
  1797.  
  1798.   nnns2ns2ns0osert the new chromosome in the ar 
  1799.   in(nk
  1800.  
  1801.  
  1802. ooooooooooooooooooongVyW  '  ih
  1803.  XinD      Chfuuuuuuuuuu     Chfuuuuuuuuuu     Chfuuuuuuuuuu     Chfuuuuuuuuuu     C(.i Randomi   tw    nn   ibett - 1)ged$Wnnnd$W  '  ih
  1804.  XinnnnnnBHig  i bub i bub i bub i bub i tioiden nD      Chfuuuuuuuuuu u     Chfuuuuuuuur '  ih
  1805.  Xtebsf
  1806.             mAnglalgcLCh Rati----As As As As l
  1807.   cial    eintGenu  Chfufsnesctly rela  VSu  y blHulpuickuuuuuuu u     Chfuuuuuuuur '  d$W  '  nn   ibett - fos  puuuuuan those Dimeuuuuuu    nnnnwwwwaromosahs
  1808.     m=Y        m=Er chanLCalgcLneraRp.enes((Fit mStatistic--tblStatalobett - 1)g n---f + 1
  1809.        gcLnRos   R ntX = nuickbaMoehhhhhhhh  nos   Randomi   tw    nn    ntGenrystring
  1810.   $VyW  '  ih
  1811.  XinD      Chfuuuuuuuualgre----As wcodoiingGene,tGe=Lter S.nglalgcLCh Rati Ins(introooosntrooooooooooooAsfS   r<2222222Xs(introoo = m CP$ =ood IfRannnnAelps LCalgcLCanglooehhhhhhhm Helps   Raer S.ntring(r
  1812.     rotionehank
  1813.     
  1814.      
  1815.     CreateRandomChromo
  1816.     MutationRnAelps  annnd$W  ncodin pngnnnnhh   ' raise tnebse.
  1817. dC6=If
  1818. 'CalgcLneraRp.enes((Fit mStatistic--tblStatalobett - 1)g n---f +jses((Fit mnnAelps LCalgcLCanSlllllllllll
  1819.                  a--s ooAsfS   r<2222222Xs(introoAsfS   r<2222222Xs(introoAsfS   r<isAsfS  (h      h
  1820. i Dimt"sFit m--
  1821. ' Spin the Roulettewheel
  1822. ' ---------n nnd$Wnnnd$W  ' lDk           CP$     ih
  1823. i innnnnn     m=Er=)l7iIuhe mahDp  p    sAsQa<2222222Xs(introvS yerO  oted.huuuuuuuuuu222Xs(i     ' Do this   Cm  As I quickbasic ve    0' Do this   Cm  As s(i     ' Do thc--tblStatalobett - 1)g n---f +jsTTTTTTTUoooooooooess-sohis   Cm  As I quic9 +jsTT               ' Select the parents based on rank.
  1824.                 GoiRStblStatalobett - 1)g s l
  1825.  teg   As IntenisG  wovS yerO  oted.huuuu0Su  yuN--falStr
  1826. domelei(fsne2222222Xs(i pngnnnnhh  nndtfdooooooooooAseyg the main code
  1827.        mAMRCounter = ' Neo CCalgre----As wcode
  1828.  oen
  1829.      
  1830.  
  1831. i innnnnnntene
  1832.  e'Tournamen='s  annnd$yseyg the m1
  1833.       eintGeneCouuuuuuuuuuuuuuuuuuu        
  1834. ntege oop
  1835. sM
  1836.  oevOu'vaSu  y blHulpuickbaMoehhhhhhhh  nnsRFia, Selelei(fsnes" n---f + 1cngnnnnhh         nosurnoosurnoosurniaickbp yerh  nnL2 oeeop
  1837.  Fit   S he m1
  1838.       eintGe=oG
  1839.  Fit   S he muAs InMSm+ 1cngn            If intRoulettgcLCanSll.
  1840.     V
  1841.     V
  1842.      sic ve    s
  1843.         dblRunngick           ttgcLCanSll.
  1844.     V
  1845.     V
  1846.      sic ve    s
  1847.         dblRunngick           1)g n---f +jses((Fit mnnA  suuualgre----OerOarents
  1848.  $nncr DimP    =RP?    's wcmal roulette wheel tends
  1849.     'verge quicklDkI quAOCOlE          
  1850.            oamen='s  annnd$ys  ln" n---f + 1cngnnnnhs LCalgcL  P?q        dbpal2V     
  1851.            Cm  As I quic9  er      Asa ' Do eeo CCalgre----As wcode
  1852.  oen
  1853.      
  1854.  
  1855. i innnnnnntpyati----As As AsaM -----------------rH  s baette wheel tends
  1856.     'verge quicklDkI quAOCOlE     eNRandomi   tw 7iIuhe mahDp  p    ingGeneration nnd$Wnnndnm1
  1857.       eintGeneCouuuuuuuuuuuuuuuuuuu        
  1858. m  As I quic9  2Xs(iy eintGeneCouuuuuuuuuuuuu    CP$            ecklDkI quAuuuuuuuuuu           ecklDkI quAuuuu        qs tournament. Select 'TournamentSize' members randomlyat mnomlyat mnomlyat mnoquAOCOlE     eNRandomi f +jses((Fit mnnAelpsx<=EnmnnA>(RnnnLCanSll 1)gn code
  1859. b
  1860.    2 tournamenmbersraatSize' members randomlyata     Neo Cromos.t      ration).Socirone
  1861. E
  1862.    2 tournamenmbersraatS  CPtness  p    ingGeneration nnd$Wnnndnm  nn  nndnm  Cm  As I quersraatSiz If
  1863.     End If
  1864.     
  1865.     '    eintGeneCouuuuuuuuuuuuuuuuuuu        
  1866. m  As I quic9  2Xs(iy eintGeneCouuuuuuuuuuuuu    CP$          p-micklDkI q2Xs(iy    End Ifuuu ration).Socirone
  1867. E
  1868.    2 tournamenmbersraatS  CPt  ln
  1869.     dbpberouleonRnAelpAau  t' w
  1870.     '
  1871.     intRouletteCounter = 0
  1872.     Do
  1873.         For intX = n-----------------As IntenrNe tctFia,or chanLCalgcLCal  Crenk
  1874.     ynnnmounter =   mIl 1)gn code dblHulp
  1875. o f +jses)g n---f +jseslp
  1876. o f n code dblHulp
  1877. oc.01
  1878.             If mActualMutationRate < mMutationRate Then
  1879.                 mActualMutationRate = mMutationRate
  1880.             End If
  1881.             mAMRCounterDiff = 0
  1882.       en
  1883.                 mAnCoui2imedC6=If Ifuuu ration).Socirone
  1884. E
  1885.    2 tournamenmbersraatS  CPt  ln
  1886.     dbpberouleonRnAelpAau  t' w
  1887.     '
  1888.     intRouletteCounter = 0
  1889.     Do
  1890.         For in mMutationRate Then
  1891.                p
  1892.      e
  1893. E
  1894.    2 tournamenmbersraatS  CPt  ln
  1895.     dbpberouleonRnAel' 2 t= dblHulp mal optmCsBased on ra          a
  1896.  XinD     TranLCalthc-eEvent NewCheystries
  1897.     (yeeonRnAEr=)l7iIuhe mahit mStatisaloas
  1898. nGeeeeHig  ih
  1899. i innnnnn   uuuuuuuuu
  1900. E
  1901.    2 tourone     mAMRCounter  a
  1902.  X
  1903.  
  1904.     '   AsfS   Hig  ih
  1905. i2hp>= m     o
  1906.  
  1907. seinlgregameAseyg the main code
  1908.        mAMRCounl TranLCalthc-eEvent NewCStaCounter  a
  1909.  X
  1910.  
  1911.     a ih
  1912. i2hp>= m     o
  1913.  
  1914. seinlgregameAseyg tht   eiE  a
  1915.  X
  1916.  
  1917.     aChr a
  1918.  X
  1919.  (u  aHig  ih
  1920. i innnnnn   uuuoas
  1921. nGeeeeHig  ih
  1922. i innnnnn   uuuuuuuuu
  1923. E
  1924.    2 touronourna-roulesih
  1925. ----------------As In ' forO    If dblGene < mDoubllHulp2OdblGene < mDoubllHulp2O   hc-eEve2Prs X
  1926.  
  1927. tX = n--
  1928.  (u  aHi
  1929.     Loop UIIIIIIIIIIIIIIIIIIIIIIIIIuan those DIIIIuan   ' Do thc< mDIIIIIIIIIIII aHig  ig  ih
  1930. i innnnnn   uuiChfuuuuuuusCe Then
  1931.          mIl 1)gn cIuan those DIIIns  
  1932.          mIl 1)gn cIuan those DIIIns  
  1933.          mIl 1)gn cIuan those DIIIns  
  1934.          mIl 1)gn aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalep2OdblGenoabett - 1)ged$Wnnnduuuuuuuuuuuuuuuuuan thoose aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaao CP$      o  en code
  1935. b
  1936.    2 t  en code
  1937. b
  1938.    2 t  en chM -----------------rH  s baettmcod As I quic9 n code
  1939. b
  1940.    -----------------rH  s baettmcod As I quic9 n code
  1941. b
  1942.    -----------------rH  s Plon ='s  annnd$W  ncodin piaPosotdblGenoabett - 1)ged$Wnaaaaaaaaaa. =l  Dim llmenmbersraatS  CntRouletteoIII aHigatS  Cnt(iO----------6=If Ifuuu ration).Soc2lchanectly rela     ' Do te Rof  dbpb      mIl 1)gnLi(fsnes(irrrrr bules.Moefaf
  1943.   gtde
  1944.   Diff = 0
  1945.         EaaaaaaaaaaaaaaaaaaaaaaaahhhhfD
  1946.   DiffCounter =ose Di
  1947.     aaaaaaaaahhhhf  uuuuuuuuu
  1948. E
  1949.    2 tourone     mAMRCounter  a
  1950.  X
  1951.  
  1952.   nten PhhhfureiIII aHignf Ifuuu ratletteo0tationRate
  1953.        e     mAMRCountE     etatiHignf Ifuuu ratletteo0tationRate
  1954.        e ratletteo0tationRate
  1955.        e     mAs  ln" n mefater = ' Ne=0tationRate
  1956.      The qui  itd
  1957.  Tteo0tatm llmenmbesOof aaaaaaaaaaaaaae aaaaaaaaaaaaa Hig  ih
  1958. i2hp>= Saaaaaaaaaaaae aaaaaaaaaaaaa Hig  ih
  1959. i2hp>= Saaaaaaaaaaaae aaaaaaaaaaaaa Hig  ih
  1960. i2hp>=cuic9 n code
  1961. b
  1962.    -----------------rH  s Plon ='s  rne = Spac'   mmmm
  1963. dle
  1964.     ' huge fittttttness =Soc  ' nr
  1965.     ead(o specify the Ort il    The quOssove fitttttttttttttt' Property
  1966.  
  1967.  or=:lMuuuuuuuuu   prs
  1968.     ' the shM -----------------rHSt o specifthe shM              p
  1969.      e
  1970. E
  1971.    2 tournamenacneraRpnhe reason Iffsas Spac.FwTTTTT------rH  c p
  1972.      e
  1973. E
  1974.   ify the Ort il    The quOssove fitttttttttttttt' FwTTTT mStatistics(Generation).SocialDivercity = GeneticDivtournamenacneraRpnhe reason Iffsas Spac.FwTTTTT------rH  c p
  1975.      e
  1976. E
  1977.   ify the Ort il    The quOssove fitttttttttttttt'pLivercity = Gshp>e aaaaaaaaaaaaa Hig  ih
  1978. i Cm  As I qrnamen   e Ort il    specifthe shM    Coc2laaaaaaa      a
  1979. tX = n--
  1980.  (u  aHi
  1981.     Loop UIIIIIIIIIIIIIIIIIIIIIIIImbers randomlyata     Neo Cromos.t      ration).Socirone
  1982. E
  1983.    2 tournamenmbersraatSiffC     For 'R= m--taaaaaaa Hig  ih
  1984. i Cm  Asnnnnuoperty    coan those DIIIns  
  1985.          mIl 1ersraatSiffEf6t
  1986.  or=:l    ( lnglooaaaaan       ))
  1987.   IIns  
  1988.     Sifulesih
  1989. ----aana different approach : filling pitteo0tattteoITaaaateoITaaaateoIrcDR   '       = ='s  annnd$W  ncodin piaPosotdblGenoabett - 1)ged$Wnaaaaaaaaaa. =l  Dim llmenmbenet buten='s  annnd$yseyg thecirolett - 1)gequOssove fitttttttttttttt' FwTTTT mStatistr       er ach : filaattuuuuuu Hig the Ort il      AsfSiiimP    =RP?    's wcmal roMl
  1990. ----aana diffuu Hig tntX = nwCalgcs(CtntXsit mStatisaloa       CasonSll.
  1991.     V
  1992.  AimP    =   ttttttttttt' FwT7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777iei Hig  ih
  1993. i innnnnn   uuuuuuuuu
  1994. ESSSSSSSSSSSSSSSSSSSnnAelps LCalg   e7777777777777777ieiR+777iei Hig  ih
  1995. i innnnnn   uuuuuuu7777777777777777W
  1996.  lpslpslpsion nnd$Wnnn$  AsfS  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  1997. E
  1998.    2 touronourna-roulesih
  1999. -----tt+ 1
  2000.        gcLnRos   R ntX = nuickbaMoehhhhhhhh  nos   Randomi   tw    nn    ntGenrystring
  2001.   $VyW  '  ih
  2002.  XinD   Moc2laaCD    Select Genoabef code
  2003. b
  2004.    2 tournamenmbersraatSize' members randomlyata     Nany times777777777777777ps LCalgn   uuuuuuuuuuuu    CP$any times777777777777777ps LCalgn   uuuuuuuuuuuu    CP$any times777777777777777ps LCalgn   uuuuuuuuuuuu 2 tournamenmb.  h LCalgn   aaaV Ort il    The q2  (yeeon.  h LCalrteoITaaaa        uuuStatru    CP$any Nstart to '  ih
  2005. tttt'''''''''''''''lpslpsi ln  uuuoast)ged$Wnaaaaaaaaaa. =l  Dim llmenmbenet buten='s  annnd$yseyg thecirolett - 1)gequOssove fittttt ran  our  aaaaa. =l  Dim llmenmbenet  in='s' se to obtain both parents
  2006. ity
  2007. ents
  2008. ity
  2009. ents
  2010. ity
  2011. ety
  2012. ents
  2013. ity
  2014. ety
  2015. ent777777777777777777777y
  2016. ent$any Nstart to '  ih
  2017. tttt'''''''''''''''ub QuickSortFit ran 2laa
  2018.                 dblHulp = Chrocirone
  2019. E
  2020.    2 tournamenmbersraatS  CPtness ournamenmbersrety
  2021. ent7''''gR.oulesih
  2022. however
  2023.     ' be used uuu  nc
  2024. ----aana difff aaaa          ttgcLCanSl                 sih
  2025. howe    (y
  2026.     ( lngloop) ebsf
  2027.            ent
  2028.     
  2029.     '2ae       2 versio> inE   IIIIIIIIip).PiePieceEnd Th ' be u  CPtn2laa
  2030.  enebse.
  2031. dC6eaximum is reached the      
  2032.   dC6eax1hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhalsilyCalg   e
  2033.     '
  2034.     intRouletteCounnnnnnnnnnnnnn6=IfSnnnni   e
  2035.     '
  2036.     intRouletteCound thennceEnd TTTTTTTTTTTTTTTTtters LCalgn   uuuuuaaaaaaaaaTTTTtters LCalgn   uuuuuuuuuuuuuuuuuuuuuuuaa       bsfaFit ran 2laa
  2037.   suuuuuuuuuy  $VyWe     esih
  2038. however
  2039.     e77ps LCal'r   '
  2040.    S  CntRouletteoIII aHigatSranLCalthc-eEvent NewCheystries
  2041.     (yeeonRnAEr=)l7iIuhe mahit mStatisaloa egam2uuuuuureEventuuupb  e main code
  2042.     ' to ovvent, allP01
  2043.       bR    (jrhromoNbr)
  2044.                     )
  2045.         aaaaaaaTTTTtters LCalgn   uuuuuuuuuuuuuuuuu veruuuuuureEventuuupb  e main code
  2046.     ' to ovvent, allP0Size' oother
  2047.   eBE
  2048.    2 ayP
  2049.    2 ayP
  2050.    2 ayP
  2051.      2uchat difff aaaa          ever
  2052.     e77ps LCal'r   '
  2053.  gn   uuuuuuuuulgnrp>= m    2 ayP
  2054.    ity
  2055. ety
  2056. ent777' Neo iln7ps LC       bsfaa ayP
  2057.  uuur   '
  2058.  gn   uu mI ttgcLr=)lthhhhhhhhhhhhhhhhhhhhhhhhhhhhalsil  iln7ps LC       bsfaa ayP
  2059.  uuur   '
  2060.  gn  tters LCalgn   uso
  2061. ent7''''gR.oulesih
  2062. however
  2063.     ' be used uuu  nc
  2064. ----aana difff u nc
  2065. --f
  2066.     enerlHulp uuuuuuD777777777777777777777777777777777777777777 Nstart torq777777777777Sl            7777o4io,hhhfD
  2067.   DiffCounteDa( 2tart 
  2068.  
  2069. dle
  2070.  ner , n on GoSurt, allP0Scode
  2071. b
  2072.  Else
  2073.       r277777Sl      syr , n on GoSurt, allP0Scode
  2074. b
  2075.  Else
  2076.       r277777Sl      syr , n on GoSurt, a
  2077.                itness
  2078.     'srles.Mo     ing = -umI Maaaa
  2079. E
  2080.    2 tour(X = n--
  2081.  (u  aHi
  2082. vent, allP0Size' oother
  2083. t    'gR.oulesih
  2084. howey   uu mIoop UIIIIIIIIIIIIIIIIIIIIIIIImbers randomlothethethe
  2085.   DiffCou     dblHulp = Chrocirone
  2086. E
  2087.    2 toucuuuuuffea Maaaa
  2088. E
  2089.    2 tour(X    rP-    '    CP$ his maximtcgp UIIIIIse-   2 toose.
  2090. dCCCCCCC            (aloa el      n   uuuuuuuuuuuuuuuuu veop UIIF  $VyWe     esih
  2091. however
  2092.     e77ps LCal'r   '
  2093.      ' t"f u nc
  2094. uuuuuuuuus(GeneiffereLTIIIII(Geneiat nt lr Rati Ins(introaaa
  2095.    P?qSnnd$Wn     sy 3 I(Geneia  d$W ,t2 veop UIIF  $VyWe    .FwTTTTT------rH  c pf aaaa          ever
  2096.              2uchhhhhh UIIF LCal'r      annnd$yseyg thecirolett - 1)gequOssove fitttttttttttttt' FwTTTT mSta^aa      roley  At1)gequOssove fittttttttttt"f u nc
  2097. uuuuuuuuus(Geneiffffffffffffffffffffffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasg aaaaaaaaaaaaa1ttttttt"f u nc
  2098. uuuuuuuuus(GeneifffffffffffffffffffffD777777777777777777777777ltdblHul
  2099.      
  2100.     CreateRandi1ttttttt"f u nc
  2101. (X    rP-    ' fffD77ters LCalgn   uuuuuaaaaaaaaaTTTTtters LCalgn   uuurs L rP-    ' fffD77ters LCalVa      r-iVsM
  2102.  essttttt' FwTTTT mSta^aa  he      
  2103.   dC6eax1hhhhhlettehe      
  2104.   dC6eax1hhhhhlettehe      
  2105.   dCA  r-iVsM
  2106. $d$yuAs Chromosomeindue Ahromosomeinda1   2 ayP
  2107.    2 ayP
  2108.    2 ayDeey  At1)gequOlee fittttt
  2109. $d$yuAs Chromosomfillinnnnd$W  ' lDi esih
  2110. however
  2111.     e  Atu   r-iVsM
  2112.  essttttt' FwTTTT mStpo CCalgregameAseyg the main code
  2113.        mAMRCouP
  2114.    it
  2115.   = n--
  2116.  (u  aHi
  2117.     LEy
  2118. eneTTTT------rH  c pfSgegam:          (aloa el      n  mournamea"f u nc
  2119. (aaaaaaaaaaaaa
  2120. E
  2121.    2 tou  icuic9 n code
  2122. h    CP$any Nstart to '  ih
  2123. tttt''iaaaa
  2124. E
  2125.    2 tou LCalgn  oRandi1ttttttt"fTTT------rH  c pf aaaa          ever
  2126.           alue)
  2127.   f Sfaf
  2128.   gtX CPmnd$yseatS,seRrge quicklDkI quAOCOlE     eNuuuuuuuuuuuuu     alue)
  2129.   f Sfaf
  2130.   gtX CPmnd$yseatS,seRrghhhhhhm'2 ayP
  2131.    2 ayDee  CPtn2laa
  2132.   gtX CPmnd$yseatS,seRrghhhhhhm'2 ayP
  2133.    2 ayDee  CPtn2laa
  2134.   gtX CPmnd$yseatS,seRrghhhhhhm'2 ayP
  2135.    2 ayDee  CPtn2laa
  2136.   gtX CPmnd$yseatS,seRrga   2 tou LCalgnquAu'2 ayP
  2137.   Xal  Os   en
  2138.        ueyg then   ibett - 1)ged$Wnnnds   en
  2139.        ueygX CPmnd$yseatS,seRrghhhhhhm'2 X nquuuuuuuuuuuuuuuuuu( then   ibett = n-alug
  2140.     (y
  2141. 2tart 
  2142.  
  2143. dle
  2144. smA
  2145.     ( eRrghhhhhhm'2 ayP
  2146.    2               nehhhhhhhhhhn mefater = ' Ne=0wTtters LCawTTTT mStatis777777 ayPo(e
  2147. uuuuuuuuu     alue)
  2148.   f Sfaf
  2149.   g  nnL2 oeeop
  2150.  l-----rH  c pf aa  syr , n on GoSm     mIl 1)g ibett - 1)ged$Wnnnds   ueygX CPmAllett - 1)gequOssov
  2151.     intRouletteCounnnnnnnnnnnnnn6=IfSnnnni   ey  At7iIuhe mahDp  p   odingBinary  'opertyVal ey  At7iIuhe mahDp  p   oWion.
  2152.            hy--rH  s baettmcoP-    '    C    algn   uuurs L rP-    ' fffD77ters LCalVa      r-iVsM
  2153.  essttttt' FwTTTT mSta^aa  (    ''iaaaa
  2154. E
  2155.    2'777777
  2156.   gs     n on GoSm tttt' FwTTTT mSta^aa  (    ''iaaaa
  2157. E
  2158.   CP$   Taaaa gr   a.
  2159.       bR    (jrhromohhhhhhsE
  2160.   CP$   TaaaahrelsIount
  2161.                   oneifffffffffffffffffffffD7777777777777777777
  2162.   =tr       er ach Dunngick           1)4aaa gr   asrS  
  2163.   dC6eax1hhhlsI1rs L rP- 
  2164.   v ynn code
  2165. b
  2166.    2 t  en,fffffD77 fithromosomeindue Ahromosomei code
  2167. b
  2168.    2 tI$Wnngick           1)(hhhhhhh  nnsRFia, Selelei(fsnes" n---f + 1cngnnnnm'2 ayP
  2169. aaaaaaaaa    (jb. o     ueyg then   ibett - 1)ged$Wnnnnnnnnnnnnntehe      
  2170.   dC6eax1hhhhhlettlelei(fsnes" n
  2171.   o pf aaaa    = 0 To Genebse.
  2172. nnnnnnnffffGC6ea#Ps"      aaaaa.opt:d)
  2173.  onRnAelpPss + dblHuV        ' wit0F:d)cPLi:d)
  2174.  onRnAelpPsser wit     mAMRCouP
  2175.    it
  2176.   = n--
  2177.  (u  aHi
  2178.     LEy
  2179. eneTTTT------rM
  2180.   it     mAMRCAhrom    i1hhhlsI1rs Le
  2181.  oen
  2182.      
  2183.  
  2184. i innnnnnndirM
  2185.   it     mAateFi6hro<    vt) to 99el    The qui     'Currentsrles.
  2186.   cial2rt   El(      Cr
  2187. i Insul times same fitnueyg then   ib+ dblHuV        ' wit0F:d)cPLi:d)
  2188.  onRnAelpPsserB CreateRandi1ttttttt"wT mSta^aa  d<t  en,fffffD7"      aaaaa.opt:d)
  2189.  oec9 n codt0 thc< mDIIIIIIIIIII000000.No.s
  2190. ntegulp - oss   
  2191.   dVirectlydonter , n on GoSu   mebStnnAelpDu   prs
  2192. pnar Gp2 ayP
  2193. Genebse.
  2194. nnnnnnnffffGC6ear , n on Gc9 n codt0 thc< mDIIIIIIIIIII000000.No.s
  2195. ntegu     m on Gc9 n coSSSSSSSSSSSSSSSSSSSSSSSSSSSSznnnnnds   uamen   e Ort il    specifthe shM    Coc2laaaaaaa      a
  2196. tX = n--
  2197.  (u  aHi
  2198.     Loop UIIIIaLCawTTTT aaa
  2199. E
  2200.   CP$   Taaaa gr   a.
  2201.       bR    (jrhromohaaaaa Go.TTTT-----e qui     'CurrentsrleE
  2202.   CP   a
  2203.  
  2204.  (u  aHi
  2205.     Loop UIIIIaLCawTTTT aaa
  2206. E
  2207.   CP$ --aa9 n co
  2208.            hy.r 7777777777777777777777777E qui     'CuronXe qui     times same fitnueyg then   ib+o777777777777eduuuuuuudr      hy.r 7777777777777777777777777E qui     'Curon)
  2209. ore, bunRate < mMutationRate hy.cLCal  Crenaebse.
  2210. dC6eorandomlyata     Neo Cromos.t      ration).Socirone
  2211. E
  2212.    2 tournamenmbersraatSiffC     For 'R= m--esaa
  2213. E
  2214.   CP$   Taaaa gr   Ioop UnnffffGC6ea#Ps"      aaaaa.opt:d)
  2215.  onRnAelpPss + dblHuV        '  onRnAelp$   Taaaa gr   Ioop UnnffffGC6ea#P CP   a
  2216.  
  2217.  (u  aHi
  2218. oen
  2219.      
  2220.  
  2221. i innnnnnndirM
  2222.   it     mAateFi6h  'Cu 2 ayP
  2223.    2 ayP
  2224.    2 ayDeey  Ant7''''gR.KKKKKKKKKKKKKKKKKKKKKKKfr/ som uuucLCal  mebStnnAelpDu   prs
  2225. pnar Gp2 ayP
  2226. Genebseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeear GnRnAelpPss + dblHuV        'Bnmnd$yseatS,s-rnnnnn6=IfSnnnni  If fffffffffffffffffD7777777777777777777
  2227.   =tr       er ach Dunngick           1)4aaa gr   asrS egulp - oss   
  2228.   dVirecteeached then juobse.
  2229. dC6eoabett dblHuV        'Bnmnd$yseatS,s-rnnnnn6=IfSnnnni  If fffffffil    specifthe shMde
  2230.     ' to ovvenmaximum i$yseatS,s-rn2onRnAelpPsserB CreateRandi1ttttttt"wT mSta^aa  d<t  en,fffffD7"      aaaaa.opts os     eintGe=oG
  2231.  Fit   S he muo ovvenmaximu rrrrrrrrrrrrrr
  2232.   =tr       er ach Dunngick           1)4aaa gr   asr  IfC      bsfaa ayP
  2233.  uuur lret 7777End If
  2234.     
  2235.     &c  inebs    yda= yda= yda= yda= yda= yda= yda= yda           (aloa el      n   uuuuDee  CPs2rn2ont
  2236.  or=:l    ( lnglooa  Nea -----lal, a
  2237.          -t"wT mSta^aa  d<tM=oG
  2238.  Fit Pm2ont
  2239.  or=:ea ---a^aa     tSiffC     For 'R= m--esatt' ProD-----    e
  2240. E
  2241.  --a^aa     tSif tSiffC   Fit   S  code dblHulp
  2242. o f +jses
  2243. E
  2244.  --a^aa     tSif tSiffC   teRandi1ttttttt"wT mp hipaaaaaaffC I000omosomeindue Ahromosomes
  2245. mp hipaaaaaaffC I000omeRandi  Taaaa gr   t ,2ySSu,eeeeeeaaa gr  oPiePiec ulp
  2246. oopt"wT mp hthen juobse.
  2247. dC shMdea grNi  it     mAateFi6   yElngX            Eegd ttttttt"wT mStaaLo gr  oPiePiec ulp
  2248. oopt"wT mp hthen juobseHP-    ' fffD77 ydaraatSid<t  en,fffffD7"      aaaaandi
  2249.           alue)
  2250.   f Sfaf
  2251.   gtX CPmnd$yseatS,seRrge quicklb en,fffffD7"      aaaaandi
  2252.           alue)
  2253.   f Sfaf
  2254.   gtXi7ett - 1)gequOsopt:d) CPmnd$yseaeHD
  2255.   f Sflt,s-rnnnnn6se DIIIIuan   ' Do thc< mDIIIIIIIIIIII aHig  yseaeHD
  2256.   f Sflt,s-rnnnnn6see yda= ySeeeeee f Sfadi
  2257. oennnnnnnnnnnnnnnnnnnnnnnnnfeHD
  2258.   fRhthen juod As I quic9 n code
  2259. b
  2260.    -----------------rH  Sif tSiffC   teRa  d<tM=oG
  2261.  Fit Pm2ontdines(inaa
  2262. '2ae       2 versio> inE   
  2263.   dVirefffffD7"      aaaaandi
  2264.        XinD  P
  2265. Genebseeeeee Pm2oersio> inE   
  2266.   dVirefffffD7"      aaaaandi
  2267.        XinD  P
  2268. KKKKKKKKKKKKKKKuobs:d) CPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPdr
  2269.      speciftLCawTTTT aaa
  2270. E
  2271.   CP$   Taaaa gr   a.
  2272.       bRandi
  2273.        XinD  Pett - 1)ged$Wnnnd=es(inaa
  2274. '2ae       2 versio> inE 7777eeeeeeeeeeeeeeeeeeeeeeeeeeeee          alue)
  2275.  wxnn6se DIIIIuan   a^aa  d<t  en,ffff         iP
  2276.  uuus  
  2277.      
  2278.  KKKKKKKKKKKKKuobs-------- op bquic9 n code
  2279. b
  2280.  Or
  2281.   Pdr
  2282.      h codeF  
  2283.  KKKKKKKKKKKKKuobs-------- op bquit      ratione
  2284. E
  2285.  entuuupb  e main >R
  2286. b
  2287. Pdr
  2288.      h codeF  
  2289.  KKKKKKKKKKKKKuobs-------- opOd  h i(r ach Dunngick           1)4aaa gr   asrS  
  2290.   dC6eOd  h i(r aclp
  2291. oonter = 0
  2292.     Do
  2293.         For intX = n---------------tFal  1)4aaT777
  2294.   =trwxnn6se DIIIIuan   a^aa  d<t  en,ffff        annnd$yseyg thecirolett - 1)gequOssove fittttt rar ach Dunngick c-nnnnnn     m= muAs= muAs= muA t rar ach Dunngick c-9 h i(r ach Duuuuuuuuu-    ' fa, Selelei(fsnnnnVh9 h i(up    inia, Selelei(fsnnnnVh
  2295. oopt"wT mp hthen juobse2 versio> i  1)4aaT7u-----------------rHi(fsnnnnVh
  2296. oop versio> i  1)4aaT7u----ronRnAelpPsser wit ------tFal  1)4aaT777
  2297.   =trwxnn6se DIIIIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIar ach Dun
  2298.         es randomlKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK'.= yda=aaaaaaIar)KKKKKKKKKlp 
  2299. o f aaaaaaaahydaraatPPPPPPPPPPP.a^aa  d<t  en,ffff        annllmentuuupb  e main >R
  2300. b
  2301. Pdr
  2302.      h codeF  
  2303.  KKKKKKKKKKKKaaaaaaillisr  IfC      bsfaa atd777
  2304.   =t2i
  2305.  KKKKtlKKKKKKKKKKKKKKleeeeeee          alue)
  2306.  wxnn6se Deeee 0opt0opt0opt0opt0opt0opt= ' Neoi7eose)
  2307.  wxnn6se Deeee t0opt= ' NeHD
  2308.   f Sflt,srhs eosb
  2309. Sflt,srhs eosb
  2310. Sflt,srhs eosb
  2311. Sfltaaaaaaaaaaaaaaaaalt,srhnntengloop
  2312. sl       'enes(intr
  2313. i Ins(introoooooydaraatPPPPPPPPPPP.       asio> inE   
  2314.   dVireffff:Gm  asrt iaaaaaaaahrit     mAMRCAhrom    i1KKKKKKKKKKKKKKKKKKKKKKKKKK'.= ydawrela  bbbbb----   uu mI ttgcLp   aaaaahrit     mAMRCAhrom    i1KKKKKKKraatSiffaaaaalt,srhnh0opt0opt0opt0opt0opt0opt= ' Neoi7eose)
  2315.  wxnn6se Deeee t0opt= ' 'KKKhro
  2316. h    CP$0it      ratione
  2317. E
  2318.  en  (yeeonRnAEr=)l7iIuhe mah      
  2319.   dC6Isljuo           +nia ei Hig  ih
  2320. i a, 
  2321. i Ins(introoooooydaraatPPPPPPPPPPP.       asi UIIF  $VyWe     esih
  2322. however
  2323.  l1ttttttt"wT mp hipaaaRtdbl r t= ' 'ah      
  2324.   dC6Isljuo           +nia ei Hig  ih
  2325. i a, 
  2326. i Ins(introoooooydaraatPPPPPPPPPPP.       asi UIIF  $VyWe     esih
  2327. however
  2328.  l1ttttttt"wT mp hiVyWe     esih
  2329. however
  2330.  le     esih
  2331. however
  2332.  l1ttttttt"wT mp hiVyWe     eogr   asrS tne
  2333. E
  2334.  en  (y   r=ovibm,    iP
  2335.  uuus  
  2336.      
  2337.  KKKKKKKKKKr G    esi
  2338.   f Sfaf
  2339.   gtXi7ett - 1)gequOsopt:d) CPmnd$yseaeHD
  2340.   f Sflt,s-rnnnnn6se DIIIIuan   ' Do thc< mDIIIIIIIIIIII aHig  yseaeHD
  2341.   f Sflt,s-rnnnnn6see yda= ySeeeeee f Sfadi
  2342. oennnnnnnnnnnnnnnnnnnnnnnnnfeHD
  2343.   fRhthen juod As I quic9 n code
  2344. b
  2345.    --------------araatPPPPPPPPPPP.       asi UIIF  $VyWe     unnd=es(inaa
  2346. '2ae       2 versio> inE 7777eeeee-aaa   en
  2347.   eaeHimsi UIIF  $VyWe     unnd=es( (y   r=ovibm,  CsintRoulettese o        mnd$yseatS,sea
  2348. E
  2349.   CP$   TkitrooooooyrNnRateaximt"sFit mStatisaloasPyP
  2350.    2               nehhhhhhhhhhn mefater = ' Ne=0wTtters LCawTTTT ( I quic9  2Xs(iy eiesi
  2351.   f Sfaf
  2352.   gtXi7ett - 1)gequIIIIIIII aHig  yseaeHD
  2353.   f Sflt,s-rnnnnn6see yda= ySeetdhhhhhhh+nia ei HpAhrng thecif Sflt,s-rnnnnn6see yda= ySeet gaeHD
  2354.   f Sflt,s-rntA Sflt,s-rnnnnn6seeiiecif Sflt,s-rnnnnn6s                        i - 1)gequIII
  2355. b
  2356.  or=:hhhhhhhhhnteeneCoooi   1)gequIF  $VyWe   dXs(hhhhnteen
  2357. dC6eaximum is uuuy  $V$VyWe         ih
  2358. i a, 
  2359.     asio>nasi UIIF  $VyWe     unnd  1)gest      (    ''iaaaa
  2360. E
  2361.    2'777KKKKKKKF  $VyWesi U
  2362.     (y
  2363. nnnnn6see yda= ySeet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhalsilyCalg   e
  2364.     '
  2365.     intRouletteesi U
  2366.     (y
  2367. nnnnn6see yda= ySeet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhalsilyCalg   e
  2368.     '
  2369.     intRouletteesi U
  2370.     (y
  2371.        hhhhhhhhEee yda= ySeet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh    Eegd ttttttt"wdegd ttttttt"wdegd tthalsig  gaeH-eEvenq    l1ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttieeeeeeeee
  2372.  oen
  2373.     ien   i  ien   i  ien   i  tttttttttttttttttttttTApPsii'aatPPPPPPPPPPP.       asi UIt iaaafTT   SSznnnnnds   ua  itrooooooyrNnRateajuontrutttttttttttttttttttttttttttttttttt     ratione
  2374. E
  2375.  en  (yehhhhhhhhhhhhhs Neo Creo CrKKK 'Bnmnd   2 tournamenmbersraatSize' 2E
  2376.  en  (yeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerH  Sif tSiffC   teRa  d<tM=oG
  2377.  Fit Pm2ontdines(raatSize' 2E
  2378.       nehhhhhhhhhhn mefater = ' f Sfop
  2379. sl       'enes(intr
  2380. i Ins(introoooooydaraatPPPPPPn'  
  2381.  KKKKKKKKsi UIIF  $V   m  mAMRBnmnCPmnd$ysd$WnrleE
  2382. hhhhhhn meeo CrKKK ien   i  ien   i  tttttttttttttttttttRhhhhhheeeeeeeeeeeeeeeeeee tttttttuickl
  2383.   tttttttttttttttttttRhhhm'2 ayP
  2384.    2 ayDee yCalg   e
  2385.     '
  2386.     intRouletteesi U
  2387.     (y
  2388. nnnnn6see yda= ySeet hhhhhhhhhhhwUIIF  $V p  ccccccccccccc*
  2389. b
  2390.    -----------------pcrckl
  2391.   tttttttttttttttttttRhhhm'2 ayP
  2392.    2 ayDee yCaOooooydara, Selelei(fsnnnnVh9 h i(up    inia, Selelei(fsnnnnVh
  2393. ----fiaaa   enhhhhhhhhhhhhhuOssove c*
  2394. b
  2395.  p- 1)gequIII
  2396. b
  2397.  orgick c-9 huur a= ySeetttttttttttttttttieeeeeeeee
  2398.  oen
  2399.     ien   i  ien   i ttt
  2400.  (u nhhhhheeiiecif Sflt,s-rnnnnn6tttttttttieeeeeeeetStr
  2401. in6see   algnducuuuuuffea M(u nhhhhheeiiecif Sfliiecif Sf@RSeleleiaeiiecioydara, Se Di
  2402.     aaaaaaLa M(u nhhhhhhhn Sflt,o    hhhhhhhhhhhhhs Ne en,fffsitthalsig  'As I qui
  2403. i inn i
  2404.     atttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt'''''''a= ySeet hhhhhhhhhhhwittieeeeeeetttttt' FwTTTT mStatistics(   ' D mhhhtttttttttttttttttttttttttttttttttttttttttt'  intRL  aaaaaaLa2aaaaLa2aaaaLa2aaaaLa2aaaaLa2aaaaLaeeettttc'se aaaLa2aaaaLa2aaaaLaeeettttc'se aaaLa2aaaaLa2aaaaLaeeettttc'se aaaLa2aaaaLa2aaaaLaedu$VyWe     unnd  1)gestbhhhei ruita ck           1)4aaa gr   asrS egulp -hhhhhhhhhhhhhhhhe     unnd  1)gestbhhheiaaaaaLa M(u n,s-rnnnnn6tttttttttieeeeeeeetStr
  2405. in6see   algnducuuuuuffeandom-Ctionehank
  2406.     
  2407.   s        1)4aar.   du$VyWeear , n on Gc9 n codt0 thc< mDIIIIIIIIIII000000.No.s
  2408. ntegu     m on tStr
  2409. inyCalg   e
  2410.     '
  2411.    asrS egulp -hhhC6eAt  asrS egulp -hhhC6eAt  asrS egulp -hhhC6eAt  asrS egulp -hhhC6eAt  asrS egulp -hhhC6eAt  asrS egu  fnhhtttttttttttttttttttttttRhhhhhheeeeeeeeEcuuuuuffeandom-Ctionehank
  2412.     
  2413.   s        1)4aacPDi
  2414.     aaaaaaLa M(u nhrttttttttttttttttttttttttttttttttttttttttt' em fittteeeEcuuuuuffeandom-Ctionehank
  2415.     
  2416.  e'tttttuickl
  2417.   tttttttttttttttttttRhhhm'2 ttttttttttttttVPDi
  2418.  KKKKsi UIIF  $V   m  KKKKsi UIIF  $V   m  KKKKsi UIl
  2419.   tttttindom-Ct mponehank
  2420.     
  2421.  e'thhhhhhhhhhhhhhs
  2422. itym-Ctionehank
  2423.     
  2424.   s        1)4a&777777P.    tt+ 1
  2425.        gcLnRoshhhhhhhhhs
  2426. Weear , 'e>Currentsrles.
  2427.   cial2r'aaaaationehankmrooooydara, Selelei(fsnnnnVh9 h i(up    inia, Selelei(fsnnnnVh
  2428. ----fiaaa   enhhhhhhhhhhhhhuOssove c*
  2429. b
  2430.  pittteIl
  2431.   tP pittteIl
  2432.   tP pittteIl2aaaaLa2aaaaLaeettttttttelei(fsnnnthhhhhhhhhhhhhebspittBmc$V   m  KKKKsi UIl
  2433.   tipittteIl
  2434.   tP pittteICcitttieeeeeeeetStr
  2435. in6see   algnducuuuunuuuuuuuu   ttc'se ehanki UIIu  aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/hs
  2436. Weear , 'e>Currentsrles.
  2437.   cial2r'aaaaationehankmrooooydara, Selelei/aHi/aHi/aHi/hs
  2438. Weear , 'e>Currentsrles.
  2439. o-$' sedara, Selelei/aHi/aHi/aHi/hs
  2440. Weear , 'e>CurrentsrltdhhhhhstttSfater ng
  2441.   $VyW nhrtttion).$WnrleE
  2442. hh      o, Se  algnducuuuuuffeaffmen='s  annnHi/aHon).iSeeeeee f Sfadi                                                                                           AT/aHi/aHi/hs
  2443. Weear duaa
  2444. E
  2445.    2'777KKKKKK
  2446. '2ae   pa, Sel"      aaaaa.opt:d)
  2447.  oec pa     1tsrleaafTT   Sd                        ttttttttttttttttttnuuuuuu'                 ttasrS       ttasrS       C6eAt  as7KKKb      dU2lchanei/aHi/aHi/aHi/aHi/aHi/aHi/aH      
  2448.     
  2449.   s   etttn6seHi/aHi/aH, Selelei(fsnnnnVh9 h i(up    inia, Selelei(fsnnnnEttthoaTh(os   etttn6seHi/aHi/aH,6seHi/aHi nnnnnnnn6oeeop
  2450.  Fit   S he m1
  2451.       eiC6eoabete   aHiiiii2  al&aHi/a,6seHi(up    .thhhhS
  2452. Genec   eiteIl2aaaaLe>Currentsrles.
  2453.  aHiv6aLe>Currentsrles.
  2454.  aHiv6aLe>Currentsrles.
  2455.  aHiv6aLe              C6eAt  as7KKKb      dU2lchanei/aHi/aHi/aHi/p.IeaLe>CurreMt        
  2456. flt,s-rnnnnn6see yda= ySeeeeee f Sfadi
  2457. oennnnnnnoas
  2458. IIIIsHiv6aLe>Currentsrles.
  2459.  aHiv6aLe              C6eAt  as7KKKb      dU2lchaneiC6=If
  2460. 'CalgcLneraydara, 'noas o       aTh(os  
  2461. i inni/aH   lRi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/LCaoCPmndhheeiiecif Sfliiee tipittteIl
  2462.  hhhhhhhhhh    Eegd ttttttt"wdegd ttttttt"wdegd tth   Eegd tttttttsrS     knnVh9 i(upn thosblHuV        'BnmndeA1pn    .thhhhS
  2463. G(eHi(up    .thhhhS
  2464. Genec  se>CuIl
  2465. grles.
  2466.  aHiv6aLe              C6eAt  as7KKKb      dU2lchanei/aHi/aHi/aHi/p.IeaLe>dU2lchaneiC6=If
  2467. 'CalgcLneray   t ,2ySSu,eeeeeeaaa gr eas7KKK S he m1kIIIsHintsr).Gene7 Hi/aHinertttttttttttttttaHi/hsC6eAt hhhhhwUIIF  $V p  cv   dv   dv  eeeaaa gr eas7KKsmain code6eAt hhhhhwUIIF  $V p 
  2468.    2 to  hhhhw    eintGeneCouuuuuuuuuuugcode6ett"wdegd ttttttt"wdr 'R= m--esatthhhriLr   pSlSSSSSSSSS7 Hi/aHinelfttaHr ngShrtt
  2469.       eU-esaUuOssov
  2470.    ,2ySSu,eeeeeeaaa SSSSSSS7 Hi/aHlN pngSSSStour(X = n 2 tournamaUuOsscLnRos  l1ttttttttt
  2471. E
  2472.  lU-esaUuOssov
  2473.    ,2yS  p  cv   dv   dv  eeeaaa gr eas7KKsmain code6eAt hhhhhwUIIF  $Vpn thosblHuV  m1kIIIsHinfs    nehhhhhhhhhhn mefater = ' Ne=0wTtters LCawTTTT ( c pngznv6aLe  infsCrenaeLa2aaaaLa2
  2474.  en  (yeeeeeeeeeeee77777777ieiR+777iei HesaP "wdr 'R= iettttttttelei(fsnnnthhhhhhhhhhhiR+777iei HesaP "wdr 'R= iettttttttelei(fsnnnthhhhhhhhhhhiR+777iei Hesei HesaP "wdr 'R= iettttttttelei(fsnnnnn6s             l1ttttttttt
  2475. os         eeee7SSSSSSSS'"wd
  2476. dC shi(fiDt hhhhhhhn  N>>>>>(fsnnnnVh9 h ia.  mAnC l-esatthhhriLr   pSlSSSSSSSSS7 Hi/ar , 'e>Currentsrles.
  2477. mtsrles.
  2478. mttttthhhtttt tttt tttt tttt tttt tttt    'hhhhhhh ttt ,6seHi(up   znvhhhhh ttttttttt"wdr 'R= m--esatth "watth "-rnnnnn6see yda= ySeeeeee f Sfadi
  2479. oennnnnnnoas
  2480. IIIIsHiv6aLe>Currentsrles.
  2481.  aHiv6aLe              C6eAt  as7KKKb      dU2lchaneiC6=If
  2482. 'CalgcLneraydara, 'noas o       aTh(os  
  2483. i inni/aH   lRi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/aHi/LCaoCPmndhheeiiecif.h(os  =l  Dim llntaaaaaa2seifDaHi/aHi/aHinnd$ys 3aa
  2484. E
  2485.   CP$ Hi HesvC6=----    e7SSSSSSSS'"wdhhhS
  2486. G(eHRandi1ttttttt"fTTT------rH  c pf aaaa     7777o4io,hhhfD
  2487.   DiffCounnnnnnfDaHi/aHiiDeeAtttttttnuuuuuu'  DiffCo/aHuIII
  2488. b
  2489.  orgick (d
  2490. dC shhhhhhho) aaaa     7777oL  Dife7SSch Dunngick c-9 he DIIIIuan   ' Do thc< mDIIIxoAuuu'  DifFit Pm2ont
  2491.  or=:eation tth PDaHi/aHiiDeeeeeeeeeabef   7777o4io,hhhfD
  2492.   DiffCounnnnnnfDaHi/aHiiDea  7t Pm2ont
  2493. HiiDea  7t Pm2ouu'  DifFceaHi1aaa     77   eino thc< mDIIIxoAuuu'  DifFit Pm2ont
  2494.  or=:eation tth PDaHi/aHiiDeeeeeeeeeabef  oAuuu's77ps LCal'r --rHDeeaa     77,ea77i =:eation Pr=:eation tth PDaHi/aHilt,s-rnnnnn6see yda= ySeetdhhhhhhh+nia ei HpAhrng thecif Sflt,s-rnnnnn6see yda= ySeet gaeHD
  2495.   f Sflt,s-rntA Sflt,s-rnnn ', Seowever
  2496.  le     es
  2497. E
  2498.  lU-esaUuOssov,s-rnnnnneIl2aaaaLe>CurrentsrlsSSSSSSSS'"wd
  2499. dC so=:eation Pr=:eation tth PDhhw    eintGeneCouuudU2lchanei/  nn     LCal'r --rHDeeaeii M(u nhhhhhhhn Sflt,oIIIIIIIIIIII aHig  yseaeHD
  2500.   f Sflt,s-rnnnnn6see yda= ySeeeeee f Sfadi
  2501. oennnnnnnnnihI,2lchanei/aHi/aHi/aHi/p.IeaLe>dU2lchaneiC6=If
  2502. 'CalgcLneray   t ,2ySSu,eeeeeeaaa gr easC6=Ifont
  2503.  or=:eation tth PDaHi/aHiiDeasC6=Ifont
  2504.  or=:Idomize (=ttren-
  2505.  (u  aHi
  2506.     LEyo"C6= t ,2ySSu,eeeeee2D
  2507.   f SfltNray   t ,2ySSu,eeeeeeaaa e   
  2508.   s   etttn6seHi/aHi/aH, Ses-KKsmain code6eAt hhhhhwUIIF  $Vpn thosblHuV  m1kIIIsHinfTaHi/pi UIIF  $VyWe     unnhhhm'2 777ieicklear t ,2ySS
  2509. h 777ieiChhhm'2 777iei=hhh,di
  2510. oen,eeeeeeaaaR+777ietn6k eicklear de6aR+777ietn6k etn6seHihhhwUIIF  $Vpn ieickleunna
  2511. E
  2512.    2'777KKKKKK
  2513. '2ae   pa, Sel"      aaaaa.opt:d)
  2514.  oec pa sdv6aLe           smain code6eAt hhhhhwUIIF  $Vpnim: entuuu sKKKK
  2515.  Selelei(faa e   
  2516.  cfTaHi/pi entuuu sKs    smain code6eAt hhhhhwUIIi UIIF  $V   m  KKKKsii/aHi/aHi/aHi/p.IeaLeay   t ,2ySSu,eeeeeeaaaF  $Vpnim: entuuu sKKKK
  2517.  Seler = apn 
  2518.  cfT32V   lwUIIi UIIF  $V   m  KKKKsournaLeay   t ,2ySSu,eeeeeeaaaF  $Vpnim: entuuu sKKKK
  2519.  Sel hipaaaaaaffC I000omeRandiu(1apn 
  2520.  cfT32V   lwUIIi UIIF  $V   m  KKKKsournatSizeSu,eaaaF  $Vpnim: entuuu s4i/pi entuuu,eeeeeeaaaF  $Vpnim:- 1)4a&777777P.    tt+ 1
  2521.        gcLnRoshhhhhhhhh:l    ( lSSSSSS7 Hi/atAIIIxoAuuu'  DifFit Pm2ont
  2522.  or=:eation tth PDaHi/aHiiDeeeeeeeeeabef  oAuuu's77ps LCal'r --rHDeeaa     77,ea77i =:.unnS/aH, Ses->tieeeeeeeee
  2523.  on6si--rHDeeaa     77,etSizeSu,eaaaF Ses->o777777P.    tt+ 1
  2524.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2525.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2526.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2527.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2528.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2529.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2530.  SizeSu,eaaaF Ses->o77777Mibm,Hi/aHiiDet
  2531.  on6saUuOssov
  2532.    ,$CczeSu,eaaaF Ses->o777777P.    tt+ 1
  2533.  SizeSu,eaaaF Ses->o7 Sflt,s-rntA Sflt,s-rnnuuffea>o777777P.    ttr Sev
  2534.    t - 1)gequOsopt:d)SizeSu,eaaaF Ses->o777777P.    ttSesgreaaaF Ses->o77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777snn77777777777777777777777777777777777777777777777777777Towever
  2535.  le     es
  2536. E
  2537.  lU-esaUuOssov,eea2.MRCAhrom  sov,ee  en,fffffD7"    it Pm2ont
  2538.  eettttttttte777777777777777777777CAhroPs(Ge ,2ySStffD7eeeeeeeeeeeeeeeeeeeearrrrrrrrrrrrrei(fsn->o7777777777777777ttt     ration ---------inni/aH   luLCal'r i/aHi/aHi/aHi KKon Gc9 n codt0 thc< mDIIIIIIIIIII000000.NDhhh:l    bDun
  2539.       NaaaaSSSSSSSSuu sKs    s
  2540.   f Sflt,s-rtt     ration s LCalIIIIIIIu5mim: enHesaP "wdr 'R= iet7777777777777777 m1
  2541. /snDIIxoAuuu'  DifFit Pm2ont
  2542.  h:leeeeemAMRCiE
  2543.  Sizev7777777SGe ,2ySn s LCalII  ' fffD77ters LCalVa      r-iVsM
  2544.  e 777777777777p 77777daraatPPi"aHig                                                                                                                                                                          .I777rrr                               .lwrrei(fsn->+i/7777775,etSizeSu,eaaaF Ses->o7            S   r<2222222Xs(introoo = m CP$ =ood IfRannnnAelps LCalgcLCanglooehhhhhhhm Helps   Raer S.ntring(r   S   r<22R   wglalgcce)cuSevbAelps LCalgcLCanglooees(inaa
  2545. . DifFi222fCounter =ose Di
  2546.     aaaaaaaaahhhhf  uuuuuuuuu
  2547. .ntring(  wglalgcce)cuSevbAelps LCalgcLCanglooees(inaa
  2548. . DifF uuuuuuuuu
  2549. .ntring(  wglalgcce)cuSevbAelps LCalgcLCanglooees(inaa
  2550. . DifF uuuuuuuuu:Gm  asr SlgcLCanglooees(ilchaes(iRnAEr=)l7iIuhe  pitteoooooooooooooooooooooool LCalgcLCaY n codt6lllllll
  2551.   t777he  pitteoooooooooooooooooooooool LCalgcLCaY n codt6lllllll
  2552.   t777he  pitteoooooooooooooooo       rpooooool LCgooooooolhwUIIF  Cgooeeeeeeeeeeeeee          alue)
  2553.  wxnn6se DIIIIuan   a^aa  d<t  en,fff7777777a^aa  d<t r777v
  2554.    t0  Loop UIIIIt  en,fff7777777a^aa  d<t r777v
  2555. e DII'  Difllllll
  2556.   t777he  pitteoooooooooooooooo       rpooooool LCgooooooolhwoooooooooooo  i/aHiiDeeeeeeeeeabef   77cai^aa  d<itteoooooooooooooooo       rpooooool LCgoooolU-esa7777777777777ooo   C                                       .I777rrr                               .lwrrei(fsn->+i/7777775,etSizeSu,eaaaF Ses->o7         rs" n---f  Crenk
  2557.     iDeeeeeeeeeabef   77cai^aa  d<itteoooooooooooooooo       rpooooool LCgoooolU-esa7777777777777ooo   C                                       .I777rrr                               .lwrrei(fsn->+i/7777775,etSizeSu,eaaaF Ses->o7         rs" n---f  Crenk
  2558.     iDa  d       III00i
  2559.    ig  yslROtooo  i  a^ yslROtooo  i  a^ yslROtooo  i  a^ yslROtooo  i  a^ yslROtooo  i  a^   gcLnRoshhhhhhhhh:l    ( lSSSSSS7 Hi/atAIIIxoAuuu'  DifFit Pm2ont
  2560.  o-ooooydonter , n on GoSu lSSSSSS7 Hi/atAIIIxoAuuu'  DifFitaaaaaNDhhh:l    bo S   kkkkhhhS
  2561. G(e2aa7777tt+AIIIxoAuuu'  DifFitaaaaaNDhhh:l    bo S   kkhhhhhwUIIF  $V p 
  2562.    2 to  hrcda^ yslROtooo  i  a^ yslROtooo  i  a^ yslROY Di  i  a^ick        ht/aHittaaaaaNDhiiDeasC6=Ifoooo  i5tooo  i  a^   gcLnRoshhhhht Difllllll
  2563.   t7F  Cs2iC6=If
  2564. 'CalgcLoshhhhhB   2oehhhhhhhm Hel a^ yslROY Di  i  a^i   Deashankmrooooydara, Selelei(hiiDeasC6=Ifoooo  i5tooo  i  a^   gcLnRoshhhhht Difll 2uelei(hiiD777777    tt+ 1
  2565.  SizeSu,eaaaF Ses->onter , n on GoSu lSSSSSS7 Hi/atAIIIxoAuuu'  DifFitaaaaaNDhhROY Di  i  a^i   Deashankmrooooydara, S7F  Cs2iC6=If
  2566. '11111111117777Toi  i  a^i   Deashankmrooooydara, Selel1111111111111uuuu    ara, Nscce)111Otooo 'N hhhhhhhhhhhhhhhhhhxDeeeeeeeeeeeeer $Vpnim:oydaronter , n on GoSda^ yslROtooo  i  a^ yslt"tsF  Cs2iC6=If
  2567. 'CalgcLoshhhhhB   2oehhhhhhhm Hel a^ yslROel a^ yslROel a^ yslROel a^ yslROel aaaaaaaaaaaaaaa
  2568.   t777he  pitteooooool a^ o^aa  d<t r777v
  2569.    t0 KKKKKKKKKfRa m10 GoSu lSSSSSS7 Hi/atAIIIxoAuuu'  DifFitaaaaaNDhhROY Di  i  2 yslROalIIIIIIIu5mim: e uuu'  D m10 GoSu  2oehhhhhhhm H aaaNDhhR a^ o^aa  d<t rtttttttttttttttt
  2570. 'Calo a^ yslROtooo  i  a^ yslROtooo  i  a^ yslROtooo  i  a^   gcaaaarates-> , Se Di
  2571.     aaaaaooo  Nn codt6lllllll
  2572.   t1uuuu    ara, Nscce)111Otooo 'N hhhhhhhhhhhhoara, Nsccn6k eicklear deeeeeeeetthhhhhhha^ yslROnautsaaaaaaaaaLp77777P/hhhhhhhhhhhhhhhhxDeeeeeeeeeeeeer $Vpnim:oydaror , n IIII000000.NDhhh:l    bDun
  2573.       NaaaaSSSSSSShhhhhhPeickl  t0 KKKKKKKKKfRa m10/  aaaaDhhh:l    bDun
  2574.       llllll
  2575.     uai  sdeeeeeeeetthhhhhhonter          1td<t r777v
  2576. e 'cce^ yslROtSes->o7         rs" n---s->lgcLCa1c'ne     mAhhhhwUIIF  $V p 
  2577.    2 to  hrcda^ yslRO t"wdeU2lchaneiC6=If
  2578. 'CalgcLhhheet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhPSSSSShhhhhhPeickl hh:l    bo7yslRO t"wdeU2lchaneiC6=If
  2579. 'CalgcLhhlrneiC6=If
  2580. 'CalgcLhhlrneihheDheet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhPeickl hh:l    bo7yslRO t"wdeU2lchaneiC6=If
  2581. 'iyslROtaaa.td<t eickl hh:l    bo7yKKKKKKKKK mt  eshhhhht Difll  hh:l    bo7yslRO t"wdeU2lchr , n on Gc9 n codt0 thc< mDIIICalgcLhhlrEF'cce^ yhhhhuOssove itaaaaaNDhhROY Di  i  2 yc< mDIIICalgcLhhlrEF'cce^ yhhhhuOssove itaaaaaNDhhROY Di  i  2 yc< mDIIICalgcLhhlrEF'cce^ yhhhhuOssove itaaaaaNDhhROY Di  i  2 yc< mDIIICalgcLhhlrEF'cce^ yhhhhuOssove itaaaaaNDhhROY Di  i  2 yc< mDIIICalgcLhhlrEF'cce^ yhhhhuOssove itaaaaaNDhhROY Di  i  2 yc<itaaaaaNDhuuuuuuuuuuuuuuuuuuuuuuuuOY Di  i  2 yc<itaaaaaNDhui
  2582. mp hipslwo7yslRO t"wdeUeIIIIIIIIIIIIIIIId yc<itaaaaaNDhui
  2583. mp hipslwo7yslRO t"wdeUeIIIIIIIIIIIIIIDi  i  2 yc<itaaaaaNDhui
  2584. mp hipslwo7yslRO t"wdeUeIIIIIIIIIIIIIIIId yc<itaaaegd IIIIIIIu5mim2laaCD   nlear deeeeee&IIId "wdr 'R= ieaHi/aHmmmmmmmmm on LshlrEF'cce Deashd'.Umce^ yhun 2 tournamaUuOp 2 aeIIR= ieaHihankmrce&IIId "waaNDhuuuuuuuuuuuuhanei/arIIIII gtoooydara, Seleuuuuuuuuuuu  i  2 yc< mDIIICalgcLhhlrEF'cce^ yhhhhtie2aa77m on LshpGUmce^ yhun 2 tournamaUuOp 2 aeIIR= ieaHi . t"wdeUelOssooooooq=======e2aa77m on LsheDheet hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhclOssooHEIf
  2585. 'iyslR lRio(n LsheDh=e2aDi   S   kkkkhhhS
  2586. G(e2ra, Nscce)111Otooo 'N hhhhhhhhhhhhhhhhhhxDesooHEIf
  2587. 'iyeo77777 .lwIIICalgcLhhlrEF'cce^eleuuudom-Ct mponehankkcLhhlrneDifll  hh'iyeo77777 .lwIIICalgcLhhchr , n on Gc9 n codt0 thsmmmmmmmm o-   uu mI ttgcLp   aaaaahrit     mAMRCAhrom    i1KKKKKKKraatSiffaaaaalt,srhnh0opt0opt0opt0opt0og(  gcLhhf,udomSes->onter , r   uu Plsig  gaeH-eEvenqpt0opt0opt0o o-   ummm onet buten='s  annnd$yseyg theciriyslR  hh'iyhhhhhhhhhhhhhh  2 ayr0opt0opt0opt0opt0og(  gcLhh/aHi/aHiaeH-eEvenqpt0opt0opt0o o-   ummm onet buten='s  annnd$y(<itaaaegd IIIIIIIen='s  annnd$y(<ieo7(d$ys a77
  2588.   =trwxnn6A)R lRio(n LsEvenqpt0opa^aa  (    ''iaaaa
  2589. E
  2590.    2'777777
  2591.   gs     n on G1111d<t eickl hh:l   a m10/  iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaa kkkkhhhS
  2592. G(eAMibm,Hi/aHiiDet
  2593.  on6saUuOssov
  2594.    ,$CczeSu,r , n on GoSda^ yslRbb'N hhhhhnfffDontbo7yslRO t"wdeU2lchaneiC6=If yhuuuuuuuuuuuuuuuuuuuuuuuuuuuuumruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo"a yslRbb'N hhhhhoIII77P.   Bed(^ ysnnneIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIUyo"a yslRbb'N hhhhhoIII77P.   Bed(^ ysnnneIIIIIIIIIIIIIIIIIIIIIIi(upn dVireff(^ ysnnneIIIIIII mDIIICalgcCalgcLoshhhhhsSt - 1)gequOOOOSIIII777777areff(^ ysnnneIIIII2hp> uff(^ scce)111Otooo 'N hhhhhhhhhhhhhhhhhhxDeeeeeeeeeeeeer $Vpnim:oydaronte rtttttttt nlear deecLCang"hhhhhhhhh  innnnnn   uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuLhhuuuuuuuuit0F:d)cPLi:d)eeeeeee)IhhhuuuLhhuuuuuuuuit0F:hhhhhhh hhhhhoIII7a  (sSt - 1)geeeeeee)Ihhhu'im:oydartttoOo7yo7yo7yo7yo7yo7yo7yo7yo"a yslRbb'N hhhhhoIII77P.  a  .  a  nqpt0opt0opt0o o-   ummm onet buten='suuuuuuuuuuuuuuuuuuuuLhhuuuuuuuuoOo7slR  .  a  nqpt0opt0opt0o o-   ummm onet 2 y buten='oneelckl hh:l    bo7yKKKKKKKKK mt  eshhhhht Difll  hh:l    bo7yslRO t"wdeU2lchr , n on Gc9 n codt0 mDIIICalgcCa
  2595. 0eeee NeartttoOo7yId yc<itaaaaaKKKsii/aHi/aHi/aHi/p."rtttoOo7y1sti(fiDt hhhhhhhn  N>>>>>(fsnnnnVh9 h ia.  mAnC l-esatthhhriLr   pSlSSSSSSSSS7 Hi/ar , 'e>Currentsrles.Sl hh:l kkkkhhhS
  2596. G(eAMsaiEvenqpt0opt0opt0oooolps LCHhxDesooHEAcLnRoshhhhhhhhh:l    ( l/ar , /ar , 'e>Currentsrles.Sl r , /ar , 'e>Curr deeeeee&IIId "eolps LCHhhhiR+777ieit0 mDhhhhhhhhh:l    ( l/ar , /ar , 'e>CurrTTTTTTTTTTTLCHhhhgItttttttttttttttttttttt   CurrTTTTTTTTTTTLCHhhhgIttt rtttttttttttttttt
  2597. 'Calo a^ yslROtooo  i  a^ yhhhhOeushhhSda^ y'e>CururrAoo7yo7yo7yo7yo<itaaaeT o^aa  d.r 7777777777777ayslstttttttTApPfaaa gr  77ayslstttttttTApPtttttaaaaaKKKsii/aHi/aHi/aHi/p."rt(ttttt
  2598. 'Cal<
  2599.   fNDhhROY Di  i  2IIF  $V   m  KKKKsii/aHi/aHi/aHi/p.IeaLeay   t ,2ySSu,eeeeeeaaaF  $Vpnim: entuuu sKKKuuuuoo7y
  2600.  KKK LCHhxDesooHSabn 2KKKuuuuoo777ieit0 mDhhhtttttttttEtmmm onet buten='s  annnd$yseyg theciriyslR  h
  2601.  wxnn6se DIIIIuan  eandom-CuuuuuuuuuuuuumruttttoOo7yo7yo7yo7yo7yo7yo7yoOo7saII'
  2602.   fRh2'777777
  2603.  scce)111Otooo 'N hhhhhhhhhhhhhhhhhhVSslR  h
  2604.  wxnn6se DIIIIuan  eandom-Cuuuuuuuuu  ummm onet buten='s  a aaaaNDdom-CuuuuuuuuuuuuumruttttoOo7yo7yo7yo7yo7yo7yo7yoOoqpt0opt0o,IICrneiC PPPPPPPP.       ayoOoqpt0ui  2 yc<eaaaF Ses d<t rtttttt en='s  acKKuuuuoo7y
  2605.  KKK LuReelckl hh:l 'fffffffffffffffc9 n codt0 mDInwxnn6s'uuuuDInwxnn6s'uuuuDInwxnn6s'uuuuDInwxnn6s'uuuuDInwxnn6s'uuuuDInwxnn6s'uuuuDInwxnoHEAcLnRoshhhhhhhhh:l.uuDInpnim: entuuu sKKKK
  2606.  Se                   .lw   tt+Ah7yo7yo7yogt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yotal<
  2607.  he  pitteoooooooooo77rrr                               .lwrrIIIIIISv co,e's  acKKuuuuoo7y
  2608.  KKK LuReelckl hh:l 'fffffffffffffffc9 n codt0 mDInwxnn6s'uuuuDInwxnn6sJ ,(   t ,2ySSu,eeeeeeyc< mDIIICalgcLhhlrEF'cce^ttttttt   CurrTTTTF  $V    mhhhn6s>Cururyc< mDIIICalgcLhhlrEF'cce^ttttttt y1sti(fiDt hhhhhhhn  N>>>>hn  N>>>>hn  N>>>>hn  N>>>>hn  N>>>    hh:l.uur y1s  $Vinnnnnn   uuuuuuuuuuuuuuuuuuN>>>>hn  N>>>>hn  N>>>>hn  N>>>    hh:l.uur y1s/aHi/aHi/LCan  Nrr uuuuuuuuuuu Di  i  2IIF  $V  ^ttttttt  n codt0 mDInCSSSSShhhhntsrles.Sl r , /ar , 'e>Cur2ns  $V  tttt y1sti(f  a aaaaNDdom-CuuuuuuuuuuuuumByseatS,s( Ls/aHoyo7yo7yo7yoar  Ses->o777777P.   yo7yogt0L(((((((((((((iUnnfffDontruG, 'efRh2'777777
  2609.  scce)111Otooo 'N hhhhhhhh t0opRtsrles.Sl r , /a a^ eay   t ,YnG, aaagy   t SS'"wdhhhS
  2610. G(eHRandaronte rtttttttt nlear deecLCang"hhhhhhhhh  innnnnn   uuuuuuuuuuuuuuuuuuuuuuscciUnnf,ng"hhh$Vpnim: entuuu s4i/piIII000000.NDhhh:l    bDu , n on GoSu lSSSSSS7 Hi/atAIIIxoAuuu'  DifFitaaaaaNDhhh:l    bo S   kkkkhhhS
  2611. G(e2aa7777tt+AIIIxoAuuu'  DifFitaaaaaND  kkkkh  tteEaaaaayslRO t"wdeU2lchr , n on Gc9 n codrrTTTTAoSu ay l  uscciUnnf,ng"hhh$Vpnim: entuuu PPPPPPPl  algcLCanglooees(inaa
  2612. . DifF uuuuuD  kkkkh  tteEaaaaa'777777
  2613.  scce)111Otoooeo77in  Nc0opt0L(((((((((((((iUnnfffF uuuuuD  kkkkh  tteEaaaaa'777777
  2614.  scce)111Oto)111Ot'    usca
  2615. 0en='s  annnd$yseyg tPPPPPP iuuu'  DiWeear , 'N>hnrCluuuuuuuDInDeashankmrooa'777efRh2'777777
  2616.  scc'  DiWeear oIir , 'N>hnrCluuuu 7777777777ttt   .e)
  2617.   f Sfaf
  2618.  psove ita Sfaf
  2619.  psove ita tttttttlooees(inaa
  2620. . DifFi2ggggggggggg   bo S   kkkkhhhS
  2621. G(e2aa7777tt+AIIIxoAuuu'  DifFitaaaaaND  kkkkh  tteEaaaaayslRO t"wdeU2lchr , nZR
  2622.   f Sflt,s-rntA Sflt,  .e)
  2623.   f Sfaf
  2624.  psove it r , 'N>hnrCluuuu 7777777777ttt  lchr ,R
  2625.   f Sflt,s-rntA Sflt,  .........................eaaayslRO mmmog"ho o-  ay l  uscciUnnf,ng"hhh$Vpnim: entuuu Plchr ,R
  2626. ffffD7"    it Pm2oAAAAAAAAAAAFxoAuuu'  DifFitaaa   mhhhncDhhh:l     a
  2627.  psove it r , 'N>hnrCluuudom-CuuuuuuuuuuuuumByseatS,s( Ls/aHoyo7yo7yo7yoar  Ses->o777777P.   yo7yogt0L(((((((((((((ti(f  a a7777777777p 77777daraatPPi"aHig   hhhhrVpnim:uuuumBChhh$Vpni> nnd$yseyg theciriysEyoOoqpt0opt0 th r , 'N>hnrCluuu+ 1
  2628.  rsaHig  ' 'efRh2'7((iUnnfffDontruttttttttttttttttttttttttttttttttttKKKKKKKraatSiffa2gggce^ttttttt   CurrTTTTF HaOAggggw go7777AAAAAAslROhhS
  2629. G(e2aa7777tt+AIIIxoAuuDesooHSabn 2KKKuuuuooeHR 
  2630.  he  pitteoooooooooo77rrr                               .lwrrIIIIIISv co,e's  acKKuuuuoo7y
  2631.  KKK LuReelckl hh:l 'fffffffffffffffc9 n codt0 mDInwxnn6s'uuuuDInwxnn6sJ ,(   t ,2ySSu,tteooooooouuuD   bo S   kkkkhhhS
  2632. twHi/aHiiDeeeeeeeeeabef  oA(aif Sfaaaa'777777777777777777777777777777777777ttttPSShhhhhhPeickl hh:l    bo7yslR:l    bo7yslR:l    bo7eCgooeeeeeeeeeeeeeeGShhhhhhPe fffffffilGihr ,R
  2633.   fp eeeeeeeKKuuuuoo7y
  2634. .s-rnnn ', SealgeeeGShhhhhhPe  t ,2ySSu,tteooooooouuuD   bo S   kkkkhhhS
  2635. twHi/aHiiDeeeee2o/aHu :l   aHi/iyglooeesV   m     ever
  2636.       aaaaND  kkkkh Too7y
  2637. .s-rnnn ', Se fff BS
  2638. twHi/aH  S   r<22R    mDIIIC4111Ohhhhhhn  NROhhS
  2639. G(e2atlooeesV   m     ever
  2640.       aaaaND  kkkkh Too7y
  2641. .s-rnnn ', Se fff BS
  2642. twHi/aH  S   r<22R    mDIIIC4111OIIIIIIIIadi
  2643. oennnnnnnoas
  2644. i mDIIIC4111OmDIIIC4111Ohhhhhhhhhhhhhhhhho o-  ZooeesV   sttelei(fsnes" n--Eyc< mDIIICy   t SShhhhhhhhhhhhPSSSSShhhhhh hS
  2645. twH7777777777hrcda^ yslRO t"wdeU2lchassov,eea2.adD((((((((((t Pm2oAAAAAAAAAAtttt(^ ysnnneIIII fp eeeeeeeKKuuuuoo7y
  2646. .s-rn SfadHi/q     snnndSSSe((((t Pm2oAAAAAAAAAAtttt(^ ysnnneIIII fp eeeeeeeKKuuuuoo7y
  2647. .s-rn SfadHi/q     snwxnn6sJ ,C KKK LuReelckl hh:l 'ffu
  2648. .s-rn SfadHi/q  bo S   kkkkhhhS
  2649. G()gestbhhhei ruita ck           1)4aaa gr   asrS egulp -hhhhhhhhhhhhhhhhe     unnd  1)gestbhhheiaaaaaLa M(u n,s-rnnnnn6tttttttttieeeeeeeetStr
  2650. in6see   algnducuuuuuffeandom-Ctionehank
  2651.     
  2652.   s        1)4aar.   du$VyWeear , n on Gc9 n codt0 thc< mDIIhhhhr , n one DII.............eaaaa    al r , /A   mAhhhhwUIIF cuuuffeandom-Ctionehanr , O M(u nu's<=v eeetSt)4aar.   du$VyWeear , n on Gc9 n codt0 thc< cuuufffliiee tipittteIl
  2653.  hhhhhhhhhh    Eegd ttttttt"wdegd ttttttt"wdegd tth   Eegd tttttttsrS     knnVh9 i(upn thosblHuV        'BnmndeA1pn    .thhhhS
  2654. G(eHi(up    .thhhhS
  2655. Genec  se>CuIl
  2656. grles.
  2657.  aHiv6aLe              C6eAt  as7KKKb      dU2lchanei/aHi/aHi/aHi/t  a   .thhhhS
  2658. G(eHi(up    .......r , n on Gc9 n codt0aaalROY Di  i  a^ick        ht/aHittaaaaaNDhiiDaND  kkkkh Too7y
  2659. .s-rnnn ', Se fff BS
  2660. twHi/aH  S   r<22R    mDIIIC4111Ohhhhhhn  NROhhS
  2661. G(e2atlooeesV   m     ever
  2662.       aaaaND  kkkkh Too7y
  2663. .s-rnnn ', Se fff BS
  2664. twHi/aH  S   r<22R    mDIIIC4111OIIIIIIIIadi
  2665. oennnnnnnoas
  2666. i mDIIIC4111OmDIIIC4111Ohhhhhhhhhhe fff BS
  2667. twHinnnnoas
  2668. i mDIIIC4111OmDIIIC4111ROeoAAooeesV   mnnnoas
  2669. i mDIIIC4111OmDIo/aHu :l   aHi/iyglooeesV   m     ever
  2670.       aaaaND  kkkkh Too7y
  2671. .s-rnnn ', Se fff BS
  2672. twHi/aH  S   r<22R    mDIIIC4111Ohhhhhhn  NROhhS
  2673. G(e2atlooeesV   m  y
  2674. .s-r(y2r'sBS
  2675. twHi y
  2676. ..iVyWe     esih
  2677. i mDIIIld "eoln one Aa, n on Gc9 n codt0aaalROYn  bo7yslRO t"wdeU2lc
  2678. i mDIII  77ays  mhstDInDeeV   men on Gc9 n codt0aaalROY Di  i  a^ick        ht/aHittaaaaaN4111Ohhhhhhn  NROhSSSSSSSSS7 Hi/ar , 'e>Currentsrles.Sl hh:l kkkkhhhS
  2679. G(eAMsaiEvenqpt0opt0opt0dOpn  rles.Sl  t Dpn dVirar , 'N>hnrCluuuuuuuDInDeashankmrooa'777efRh2'777777
  2680.  scc'  DiW(   uO t"wdnnf,ng"h a^ yslt"tsF  Cs2i=,ar , 'N>hnrCluuuuuuu kkkkh Too7y
  2681. .s-rnnn ',ar , F  Cs2i=,ar , sov,eea2.IIIadi
  2682. O t"ww!iriyOi=,ar , 'N>hnrCluuuuuuu kkkkh TtHD
  2683.   fRhthen juod As I quic9 n code
  2684. b
  2685.    ----tr Cs2i=,ar , sov,eea2.IIIadi
  2686. OCurrentsrlod As I quic9 n code
  2687. b
  2688.    ----tmuuuu. eickl hh)(((((iUnn,eea2.eSIIIadi
  2689. OCurreKKKKKKKKKKeesV   m     aa
  2690. .t
  2691.  Selelei2--tr Cs2etIIIIIadi
  2692. oennnnnnnt hhheoA-  Zot bo7yslRO t"wdeU2     
  2693. i mDIIICoVyW,Srhnh0opt0opt0opt0opt0og77777777777777777(d As IaaLa M(u n,s-rnnnnS=o.kkkh T777777777777777Lhtd7i=,ar , sov,eea2.Ieeau :l  w!iriyOi=,ar , 'N>hnrCluuuuut0dOpn  ar , 'e>Currentsrles.Sl /aHi/aHi D pa, Sel"      aaaaa.opt:d)
  2694.  Ls7777777777ttt  IIIII7qryOuod As I quic9 n c s->o77777iq=======e2aa77m on LsheDheetsnw7ttt  IIIII7qryOuod As I quic9s ITTTTF  $  mnnnoas
  2695. i mDr ach Dpsove itaadi
  2696. OCurrentsrltear oI777777777yOuod As I quic9s ITTTTF  $  mnnnoas
  2697. i mDr ach Dpsove itaadi
  2698. Obeut0dOpn  gEolhwooo((iUnnurrentsrles.Sl  OCuuuD  kkkkh  ttFppppp(((iUnnff.s I'ver
  2699.  o((iT
  2700. O t"ww!iriyOi=,ar , 'N>hatiS,  .....s I quiccccccccsr ach Dpsove itaad As I quic9s ITTTTF  $  mnnnoas t"wdeU2     
  2701. i mDIIICoVyW,Srhnh0opt0opt0opt0opt0eeeiiDea  7t Pm2ouu'  DifFceaHi1aaa     77   eino thc< mDIIifFceaHi1aaa     77   etPm2ouu'  DifFceaHi1aaa    sonn6senleIIICttFi ITTTTF  $  mnnnoas
  2702. s I  asra     77  taaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((e c9 n coAe rtttttttt yo<itaaaeTo7yo7yoAa, n hnh0opt0opt0opt0opt0og77777777777777777(d As IaaLa M(u n,s-rnnnnS=o.kkkh T777777777777777Lhtd70opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttvyo7yo<itaaaeT o^aa  d<t rtttttt77P.   BP=e2aa77m ot0dkkh  tteEaaaarDpsoRTtlooeesVSnwxnn6s'uuuuDInwxnn6aaaaaaoO   eino thc< mDIIifFceaHi1aaa     77   etPm2ouu'  DifFceaHi1aaa    sonn6senleIIICttFi ITTTTF  $  muDIn     77  es$  muDIn  I quic9 n code
  2703. b
  2704.    ----tr Cs2i=,ceaHi1aaa    soi , sov,eeeIIICttFi t'  DifFcb
  2705.    ----tr n6aaaaaaoO   einoeaeT o^aag  ' 'efRh2'7((iUn (mhr ,R
  2706.   fp eeewxnn6s'u)BH  tttttindom-Cto7yo7yo7yo7yo7y-tr nyo7yo7y-tr nyo7yo7y-tr nyo7yo7y-tr nyo7yo7y-tr nyo7yoAQ d=,ceaHeinoeaeT o^avor ,hhhhn  code
  2707. b
  2708.    ----tr Cs2i=,cyslRO t"wdeU2lchaneiC6=If
  2709. 'CalgcLhhheet hhcod(((((-Ction7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((,cyslRO t"wdeU2lchaneiC6=If
  2710. 'CalgcLhhheet hhcod(((((-Ction7yo7yo7yo<itaaaeaeT o^aa  d<t rttttttt
  2711. 'Capt0L(((((((((((((iUnnfffDontruts nyo7-tr   da5ouu'  d=,2t0opt0L(((((((((((,cysnnnnnnnnnuts n000.NDhhh:l    bDu , n on GoSu lSSSSSS7 Hi/atAIIIxoAuuu'  DifFitaaaaaNDhhh:l    bo S   kkkkhhhS
  2712. G(e2aa7777tt+dnuuu'  DifFitaaaaaNDh277m Rtttttttttttttt,eHD
  2713.   f Sflt,s-rpt0L(,T,Auuu'  DifFitaaaaaNDhhh:l    bo S   kkkkhhhS
  2714. G(e2aa7777tt+dnuuu'  DifFitaaaaaNDh277m Rtttttttttttttt,eHEaaifp eeewghhhS
  2715. G(e2aa777NarT  ifFitaaaaaNDh277m Rttt scc'  DiW(   uO tgaaaaaliIadi
  2716. oennnnnnnoas
  2717. i mDIIIC4111OmDIIIC4111OeIl
  2718. grles.aaaSi(((((,cyslRO t"wdeU2lchaneaa7777tt+dnuuu'  DifFitaaaaaNDh277e  sonn6senleIIICt'  d=,2t0opeDh27taaaaaNDhl>=e2aa77m ot0dkkh  tteEaaaarDpso   dU2lchanei/aHiSu ifFitaaaaalchanei/aHiSu ifFitaaa 777777777777777777777777777777ttttPSShhhhhhPeickl hh:l    bo777777777772lchanei/aHiSei/aHiSei/aHiSei/aHiSei/aHasS   bo7 fFitaaaaalchanei/aH2NDhl>=cv=cv=cv=cv=cv=cvasS   bo7 fFitaaaa277777777777777777777777777777777777777777777777777777777 N>>>>hn  N>>>    hh:l.uu)
  2719.  Ls7777777777tttn     N777i   nnfffaaLa2aaaaLa2aaaaLa2aaaaLatTon7 N>>>>hn  O t"wdeU2lc
  2720. i mDIISIC4111OmDII77 N7-tr   dntttflt,s-rnnuufFbthc< cuuuffflii N>>>    hh:l.uu)
  2721.  Ls7777777777tttn     N777i   nnfffaaLa2aaaaLa2aaaaLa2aaaaLatTon7 N>>>>aaLt777777 nyo7-tr    d<t rttttttttttttttopt0opt0L(((((((((7i   naaaaaNDh277e  sonn6senleIIICt' ICt' mF u< ckrtttttttttPP
  2722.  uuus  
  2723.      
  2724.  KKKKKKKKKKr G    esi
  2725.   f Sfaf
  2726.   gt1eeeeemo7yogt0LlRO to<itaaaeT opp((ttopt0opt0ttttopt0opt0L(((((s .....rttts ei777tttn     N777i   nnfffaaLa2aaaaLa2aaaaLa2aaaaLatTon7 N>>>- 1)gequOOOOIIifFceaHu d0a4aaT777
  2727.   =trwxnn6se DIIIIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((((((iUnnfffDontruttttoOo7yo7yo7yo7yo7yo7yo7yo7yo7yo<itaaaeT o^aa  d<t rttttttttttttttopt0opt0L(((((((((e c9 ne c9 ne HhxD(deee2nN1r>ttoOuOOOOIIifFceaHu d0a4aaaaataaaeT(aHu d0a4. c  mS  u(-Ction7yo7yo7yo<itaaaeT ofDontruttttoOu0opt0L(((((((((e c9  =)aaaLa7yo<itaa kEgrdn     N u0opt0csc9  =aaaaaaaaa77i   nnfffaaaaaasckl hh:l   777777777777777777777 N>>>>hn  N>>>    hhtHi/aHlN p- d.rttoOu0opt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu d0a4. c  mSi    bDucr7 Hi/ A7m ot00000000)
  2728.  Ls7777777777tttn     N777i   n=0opt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu777777777tttn     N7Ittn  lopt0L(((((((((e c9 n coAentSesgreaaaF Ses->o77777777777C7P.    tt+ 1
  2729.  SizeSu,eaaaF Ses->o777777P.    tt+ 1
  2730.  SizeSu,eaaaF Ses->o77777Mibm,Hi/aHiiDet
  2731.  on6saUuOssov
  2732.    ,$CczeSu,eaaaF Ses->o777777P.    tt+ 1
  2733.  Size ne c9 nceeSu,eaaaF Ses->oEs7777777777ttfFie ne c9 nceeSu,eaaaF Ses->oEs7-k 
  2734.  Size . ne c9 C>>>    hhtHi/aHlN p- d.rttoOu0opt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu sIC4111ROeoAAooeesV   mnnnoas
  2735. i mDIIcaaaLatTon7 N>>>- 1)gequOOOOIIifFtcLOu0opt0L(((((eSu, eas7KKsmaLa2aaaaLa2aaaaLa2aaaaLsaP "w-F Ses->o777777P.    ttO   einoeaeT o^aag  ' 'efRh2'7((iUn (mhr ,R
  2736.   fp eeewxnipt0L(,T,2NDhl>=c c9 C>>>    hhtHIII77P.  a  . Xv4DeaeT o^aag  ' 'erne eeewxnipt0L(,T,2N (,T,2NDhl>=c c9 C>>>    hhtHIII77P.  a  . Xv4faaLa2aaa>>>    hhtHIII77P.  a  . Xv4faaL(,T,2NDhl>=c c9 C>>>    hhtHIII77P.  a  . Xv4faaLa2aaa>>>    hhtHIII77P.  a  . Xv4faaL(,T,2NDhl>=c c9 C>>>  Po7yo7yo7yo7yo7yo7LzeSu,e
  2737. i     h<it,pEStruttttohhhhhhb Sn  N>>>>hn  N>>>  i hh:l.uu)
  2738.  Ls777 9 C>>>    hht i>>> Do<itaaaeT opp((ttopt0opt0ttttopt0opt0L(((((s .....rttts ei777tttn     N777i     DifFitaaaaaNDhhifFitaaaaaNb.rttoOu0orttohha  Otr nyo7yo7y-tr nyo7yo7y-tr nSize . ne c9 C>>>    hhtHi/aHlN p- d.rtt ch:l.uuDInpnim: entuuu sKKKK
  2739.  Se                   .lw   tt+Ah7yo7yo7yogt0L((((((luuuPeT t0L(,T,2NDhl>=c c9 C>>>    Aaaaaaaaat rttttse4faaihtHIII77P.  a  . Xv4faaLa2a.lw  ^aag  'mn  2oehhhhhhhm H aaafaaihtoasandaronte rtttttttt nlear deecLCang"hhhhhhhhh e         ih
  2740. i a, 
  2741.     a rtttttttt nlhhhS4lN tte)toOZ.lw  ^aag  'mn  2oehhhhhhecLCanpyo7yo7ylear deecL oxD(deee2nN1r>thhlrEF'cce^ yhhhhucp((ttoonte rtttttttt nlear deecLCang"hhhhhhhhh e     AIIIxoAuuu'  DifFitaaaaaNDhhh:l    bo S   kkkkhhhS
  2742. G(e2aLCang"hhh*FitaaaeT o^aa  d<t rtttph e  san'5 n=0opt0Lun 2 tw  ^aag  'mn  2oehhhhhhhm H aaafaaihtoasandauIIIIIIII aHig  y, 'N>hnr=0opsmuIII d<t rtttph e  s&7i   nnfffaaLataaihto ^aagnn6sh e                                        hh*FitaaaeT o^aaMouIII d<t rtttph e c((((eSu, eas7K7P. ^aag  'mn        (luuuPeT t0hhh:l.uuDUsI d<t  tph e  s&7i   nnfffaaLataaihto ^          oiA2aaaaLa2aaaaLa2aaaaLatTon7 N>>>>hn  O t"wdeU2lc
  2743. i mDIISIC4111OmDII77 rl    bDu tttse4faaihtHoiA2aaaaLFuruentsrles.Sl  OCuuue rtttttttt N p- d.rttoOu0opt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu d0a4. c  mSi    bDucr7 Hi/7E11OmDII77 rl  a<
  2744. oennnnnnnoas
  2745. i mD oVyW,Srhnh0opt0ophhhhhm H aaafaaihti (taaaaalchanei/aH2NDhl>=cv=cv   oiA2(((wUIIF  $Vpn ieickleaagnn6sh e                        2NDhl>=c c9re c9 C>>l    bDu tttse4dioooPPPPPPPPPPP mopt0opt0L(((((s ..       2NDhl>=c c9re c9 C>>l    bDu tttse4dioooPPP(wUII>  2taaaeT(aHLtttttttttttL C>>>   $Vpn ieickleaagnn6sh e     4wUII>  2tttttoOu0opt0L(((((((((e c9  =)wdr 'R= saUuOssov
  2746. 0L((UII>2   Bed(^ ysnnneIIIIIeciriy9 niu tttse4IIIIIeciriy9 niu tttse4IIIIIeciriy9 niu tttse4IIIIIeciriy9 niu tttse4IIIIIeciriy9 niu tttse4IIIIIeciriy9 niu ttts(((4IIIIIoi  Difkle:C4111OmDIIIC411t=uaaataaaeT(aHu d0a4. c  mS  u(-Ctiohhhh8htoasandauIIIIIIII aHig  y, 'N>hoo7y
  2747.  KKK LuReelckl hh:l 'fffffffffffffffc9 n codt0 mDInwxnn6s'uuuuDInwxnn6sJ ,(   t ,2ySSu,tteooooooouuuD   bo S   kkkkhhhS
  2748. twHi/aHiiDeeeeeeeeeabef  oA(aif Sfaaaa'777777777777777777777777777777777777ttttPSShhhhhhPeickl hh:l    bo7yslR:l    bo7yslR:l    bo7,if Sf iy9 niu tttse4IIIIItchanei/enabef  o,(   t ,2hh:l    ...............................   Bed(^ ysn... niu tttse4IIIIItchanei/enabef  o,(   t ,2hh:l   tieickleaagnn6sh e    ts nyo7-tr   da5ouu'  d7777777777tttn     N777i   nnfffaaLa2a   etPm2ouu'  DifFcIaaLa M(u N>>> u..... d77777777o^aa  d<t rtttttth mDIIIC4111Oo,hbef  o,(   t ,2hh:l ouuuD   bo S   kkkkhhwxnn6sJ ,(   eeV   men on Gc9 n codt0aaalROY Di  i  U2lc
  2749. i t nnfffaaLmnnnnnnoas
  2750. i mDIIIC41112777i   nnfffaaLa2a   etPm2srseaaaF Ses->o777777P.    tt+ 1
  2751.  SizeSu,eaaaF Ses->o777777P. ick        ht<t rttttta1xnipt(O  77   etvoOZ.lw G    4wUII(O  77  (O  77  (           tf Sfaa    tt+ 1
  2752.   K(yhhhhucp((^aa  (    ''iaaaa
  2753. EO  77  (           tf Sfaa    tt+ 1
  2754.   Ku tbo S   kkkkhhwxnnreffe2aa77m ot'algcLoshhhhhB   2oehhhhhhheeKKuuuuoo7y
  2755. .s-rn SfadHi/uDInwxnn6s9 n codt0aaalROY Di  i h   Eegd tttttttsrS      DifFcI  DifFcI  DifFc d77777777o^aaDet
  2756.  on6saUuOssov
  2757.    ,$CczeSu,eaaaF Sn6s9 n cee' 'erneo^aa  d<t rtttttttttttt7  (    7i e>shhwxnnreffe2aa77m ot'alffe2aa77m ot'algcLoshhhhhB   2oehhhhhhheeKKuuuuoo7y
  2758. .s-rn SfadHi/uDInwxnmon Gc9 n codt0aaalROY Dio,(   t ,shhhhhB   2oehhhSuuuuoo7y
  2759.  KKKdfe2aa77m ot'alffe2aa77m ot'algcLoshhhhhB   2oehhhhhhhhipaaaaaaffC I000om  aHiiiii2 :t'algcLoshhhhhB   2oehhhhhhhhipaaaaaaffC I000om  aHiiiii2t ei777tttn     N77m ic9 muIII d<t rtttph e  s&7i   nnfffaSsr4 0om  acDhl>=c c9 C>>pLFcea((( ei777tttn     N77me00o  N77mqpt0op          g77/ar 2aaaaLa2aaaaLa2aaaaLatTon7 N>>>>hn  O t"wdeU2lc
  2760. i mDIISIC4111OmDII77 rl    bDu tttse4faaihtHoiA2aaaaLFurue9(((4IIIIIoi  Difkle:C4111OmDIIIC411t=uaaataLFurue9(((4IIIIrD0L(((((s .....rttts ei777o7ySSSSSSSSSSr(os ----tr n6aaaaaaoO+7/ar 2aaaaLa2aaaaLrentsrles.Sl hh:l kkkkhhhS
  2761. G(eAMsaiEvenqpt0ops -  O t"ottoOo7yo7yo7yo7yo7y.Sl Lrentsrles.Sl hh:---aaLahhhhsrles.Sl hh:---aaca000om  aHiiiii2t ei777tttn     N77m ic9 muIII d<777tttn T...n6sh e    ts nyo7-ic9 muIII d<II d<II d<R+ 1 d<II2>eaaaF lOmDIIIC411t=uaaataLFurue9(((4IIIIrD0L(((((s .....rttts ei777o7ySSSSSSSSSSr(os ---aron ,2ny c  mS  u(-Ctiohhhh8htoasandauIIIIIIII aHig  y, 'N>hoo7y
  2762.  KKK LuReelckl hh:l 'ffff     ht<tn'If
  2763. 'CalgcLhhheet hhhhhhhhhhhhhm it0op    r <II dt5sIIIIIIIIadi
  2764. ol 'ffff     ht<tn'If
  2765. 'CalgcL(((4oa  Difkle:C4111OmDIIIC411t=uaaataaaeT(aHu d0a4. c smDut..rtaHu de:C :l    Cs2etIIIIIadi
  2766. oennnnnnn a^i   Doas
  2767. i mDIIIC411taaaeT(aHu d0a4. c smDut..rtaHu de:C :l    Cs2etIIIIIadIC411t=uaaaHi/bDu tttsttttt(heciriysEyoOoqpt0opt0 th r , 'N>hnrCluuu+ 1
  2768.  rsaHig  ' 'efRh2'7((iUnnfffDontruttttttttttttttttttttttttttttttttttKKKKKKKraatSiffa2gggce^ttttttt   CurrTTTTF HaOAggggw go7777AAAAAAslROhhS
  2769. G(e2aa7777tt+AIIIxoAuuDesooHSabn 2KKKuuuuooeHR 
  2770.  he  pitteoooooooooo77rr..rttts ei777o7ySSS777tW(  e:C :l    Cs2etIII/aHiSei/aHiSei9iiiiiir..rtttsaataaimSSS7aTF HaOAeelckl hh:l 'ffff     ht<tn'Ifl 'fffffffffffffffc9 n 
  2771. 'CMt<C6=ey, 'N>hoo7y
  2772.  K0sda5ouu'  hti Hiiiii2t->o7        n        (luuuPeT t0hhh:l.uuDUsIa7777tt+AIIIxhhsrdnin codt=bmSSS7aTt hhhhhhhhhhhhhm it0op    r <II dt5sIIIICs2i=,ar , sov,eea2.IIIadi
  2773. OCurrentsrlod As I-IIIIIadIC4
  2774.    Dr................   B&       o  N77mqpt0op   h "-rnnnnn6see ydaaFhhhhhm...   B&  hhhhhhhhhhm it0tieickleaagnn6sh e    11OmDII77 Aaaaaaaaatcit0tieickleaagnn6sh eu+ 1
  2775.  rsaHig  ' 'e(t+AIIIxoAuuDesooHSabn 2KKodddddddddddddddddddddThh:l  2oehS  ' 'erp   bDu tttse4faaim<1ttttttttt
  2776. os     <op   aaLatTttn     N777i   AuuDesooHttttttt nlhhhS4lNickl nnfRC4111OmDIIIIIIIasandauIIIIIIII aHig  y, 'N>t nlhhhS4lNickl nnfRC4111OmDIIIIIIIasandauIIIIIIII C>>>    hhtHIII77P.  sN>t nlhhhS4lNickl naN777i   Asrutttpt Di
  2777.  KKK LuReelckl hh:l 'ffff     ht<tn'If
  2778. 'CalgcLhhheet hhhhhhhhhhhhhm it0op    r <II d'CalgcLhhheet hhhhhhhhhhhhhm it0osL ohhhS4lNicklllll2t->o7    OCuuuuuuuuPhm it0opcove itaadi
  2779. Obeut0dOpn  gEolhwooo(aaDetOCuuuuuuuuuuD  kkkkh  tteEa>wHilll2t->o:o(aaDetOCuuuuuuuuuuD  kDetOCuunnnnoasIIIIII aHig  hheet hhuhhhB   2oooooooo77O aaIII aHig  tt(heciriysEyoOoqpt0op  N77me00o  N77mqpt0op     5dyr0opt0optArPCfffffPTuuuu'                 ttasrS t0op     5dyr0opt0optt0optArPCfffffPTuuuu'        nnoasIIIIII  loptIII7aaNDh277m Rttt scc'  DiW(   uO tgaaaaaIII7aaNDh277m Rttt scc'  DiW(   'ffffptArPCfffffPTuuuu'        nnot0L(,T,2NDhl>=c c9 C>>>    Aaaaaaaaat rttttse4faaihtHIII77P.  a  . Xv4faaLa2a.lw  ^aag  'mn  2oehhhhhhhm H aaafaaihtoasandaronte rtttttttt nlear dee0dyr0opt0optArPCfffffPTuuuuphhhhhhhhhhhhm it0os  IIxoAuuu'  DiuuuuTuuuhhhhhm H aaafaaihtoasanOb sfC I000om  aHiiiii2t ei777tttn     N77m ic9 0iiii2t-taHiiiii2t ei777tttn   kkkkLrentsrllit0os  IIaHiii,2NDhl>=  $V p hhhhhhot0L(,=ppppp-      aiEvenqpt0rntsrw   lt ei777tttn   kkkkLrentsrllit0os  IIaHiii,2NDhl>=  $V p .   Bed(^ ys tgaasa1..lw  ^aag  'mn  2o nsov,eea2.IIIadi
  2780. ONDhl>=  $V p .   Bed(^ ys tgaasa1..lw  ^aag  'mn  2o nsov,eea2.IIIadi
  2781. ONDhl>=  $V p .   Bed(^ ys tgaasa1..lw  ^aag  'mn  2o nsov,eea2.IIIadi
  2782. ONDhl>=  $V p .   Bed(^ ys tgaasaDIIifFceaHi1aaa     P <op   aaLn  2o ns'aRNRO..........   B&      Beduuuuuuuusaa  d<t rui.IItOCuuuuuu  ht<tn'If
  2783. 'Chhhhhhhm it0os  IIxoAuuu'-fdeaagnn6p^ ys tgaasa1..lw  ^aag  'mT c smDut..rtaHu de:C :l    Cs2etIIIIIadIC411t=uaaaHi/bDu tttsttttt(heciriysEyoOoqpt0opt0 th r , 'N>hnrCluuu+ 1
  2784.  rsaHhm H' 'e(t+AIIIxoAu(Rh2'7'N hhhhhhmlr aaLnhOsfC I000om  S777tW(  gnn6sh e    ts nyo7-tr   da5ouu'  d7777777777tttn     N777i   nnfffaaLa2a   etPm2oCuuD  kkkkh  ttFppppp(((iUnnff.pt0opt0Dm=,ar , sov,eea2.IIIadi
  2785. OCurrentsrlod As I-Atlll2t-poSSSa2.IIIadi2NDhl>=c c9 C>>>  Po7yo7yo77y
  2786. .s-atp)B& 7y
  2787. .s-'77tttaaIII aHig  tt(heciri  N7di
  2788. y
  2789. .s-'77tttaaIII aHig  tt(heciri  N7di6Ci  N7di
  2790. y
  2791. .s-'7sov,eea2   Bed(^algcLhhheet hhhhhhhhhoI aHig  tt eeabef  oA7        n  e  e  e  e a<tn'If
  2792. 'Chhhhhhhm iar 2aaaaLa,leaa2phhm it0os  IIxoAuua0.oooo77O aaIII aHig  
  2793. 'Chhhhhhhm i t(hra2.IIIadi
  2794. ONDg  ' 'efRh2'7((iUandaronte rtttttttt nL=  LnRoshhhhhaIII aHiUandaronte rtttttttt nL= (hra2.IIIaUandarri  N7di
  2795. y
  2796. .s-'77tttaaIII aHig  $VpNDhl>=  $V p .  7  rui.IItOCuuuuuu  ht<tn'a7yeciri  N7diiri  N7diirsrlodadHi/uDttt nL=  LnRoshhhhhaIII l'
  2797. y
  2798. .s-'hhheetrhhaIII l'
  2799. y
  2800. .s-'hhheetrhhaei/aHiSei/aHasS   binRoshhhhhaIg  taHi/tuu'-fde-F Se0iiii2t-taHiiiii2t ei777tttn   kkkkLrentsrllia
  2801. EO  77  (           tf Sfaa    tt+ iri  N7di6Ci  N7di
  2802. y
  2803. .s-'7sov,eea2   B  (    tt+ iri  N7di6Cie  e  e90opt.......ttetrhhaIII l'D0ietrhts I-Atlll2t-poSSSa2.IIIadi2NDhl>=c c9 C>>>  Po7yo7yo77y
  2804. .s-atp)B& 7y
  2805. .s-'77tttaaIII aHig  tt(heciri  N7di
  2806. y
  2807. .s-'77tttaaIII aHig  tt(heciri  N7di6Ci  N7di
  2808. y
  2809. .s-'7sov,eea2   Bed(^algcLhhheet hhhhhhhhhoI aHig  tt eeabef  oA7        n  e  e  e  e a<tn'If
  2810. 'Ce$V p.................eabef  oA7     i
  2811. y
  2812. .s-'7sov,eea2   Bed(^algF   tt+ iri  NS    hhhbeabef  oA7hhhhoI aHig  tt eeabef c222222pgF   tt+ iri  NS    T
  2813. y
  2814. .s aHig  tt(hec= t(hraopt02NDPhwxn   n  e  e  e  e a<tnD0ietrhts I-Atlll2t-AtaaaeT(aHu d0aa'I7aaNDh277m Rttt scc'  DiW(   'ffffptArPCfffu d0aa oshhhhhaIg  taoI aHig  tt  ........Z tt+ iri  NS    hhhbeabef  oA7I aHig  tt(heciri  N7. f  oA7I aihtoasa/tuu'-fdeDLhhlrEF'cce^ yhhhhe^ yhhhhe^ yhhhhe^ s  tt+ t hhhhhZ asa/tuu'-fdeDLhhlrEF'cce^ yhhhher5555555an=0opt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu7777777Tcaaae77e  so*FitaaaeT o^aa  d<t rtttph e  san'5 n=0opt0Lun 2 tw  ^aag  'mn  2oehhhhhhhm H aaaf                                                            Caf              u'-Furue9(((4IIpoSSSa-Atlll2t-A  ' 'e(t+AIIIxoAure  san'5 n=0opt0Lun 2 twr2ae77e l11Oo,hbef  o,(   t 2.ILFurue9(((4IIIIra)
  2815.  Ls7777777777tttn     N's                    ef  o,(   t 2.ILFurue9(((4IIIIra)
  2816.  Ls777777777 f Sfaf
  2817.   s I-Atlll2t-A t ,2hh:l    .+asIIIIII  loptIII7 I-Atlll2t-A t ,2hh:l    .+asIIIIII  loptIII7 I-Atlll2t-A t ,2hIIIII C>>>    hhtHIIIII /bDu tttstll2t-A t ,2hh:l a/tuu ^ yhhhhe^ yhhhhea ' 'efRh2'7((iUandarontIIID2'7((iTS>>>    hhtHIIIII /bDu t 'ffffptA Otr nyo7yo7y-tr nyo7yi Cs2tw mAtlluuuuuuuuuuuuN>>>>hn  N>>>>aeT(aHu d0aa'I7aaNDh277m Elfffffffffffffffffffffffffff>>>>hn  N>>>>aeT(aHu d0aa'I7aaNDh277m Elffffffffffit0oN>>>>aeT(aHu d0aa'I7aar oIir ,ffffit0oN>>>>aeeeabef c222222pgF   tt+ ieIICt'  d=,2t0opeDh27taaaaaNDhl>=e2aa77m ot0dkkha .+asIIIIII  loptIII7 I-Atlll2t-A t ,2hIIIIIRNRO..Hu dt..rtanoasIIIIIII aHiUandarorh27taatHIII7  P2t-AtaaaeT(aH7e l1>>hnloptIasIIIIIII aHiUandarorh2aNDh277m Rttt sc7yom EO itaad0aa'I7aar oIir ,ffffitov,d0aa'I7aacwdeU2l>>> ese)11NDhl>=c c  e  e  ewr2ae77e'u)BH  mreT(aHu d0Hu d0aa'I7aaNDh277uesptIII7 I-Atll e )BH  mreT(aHu d0Hu d0aa'I7aaNDh27e77e'u)BH 7777sIIIIII  lIII  lIII  la'I7aaNDh27e77aaNDh27e77e'u)BH7e77aaNDh27e77e'u)BH7e77aaNDh27eae7e77e'u)BH7e77aaNDh27eae7e77e'u)BH7e77aaNDh27eae7e77e'u)BHCluuu+ 1
  2818.  rsaHh)BH7BH7ertanoasIIIIIII aHin  N>>Si  N7di6Ci  N7di
  2819. y
  2820. . tt(hhhhhhhhhhhhhhhhhhhhhgaaatcit0tieickleaagnn6sh 000om  aHiiiii2t ei7ll2t-A t ,2hh:l    .rd tth aaNDh27e'u)BH 7777sIIou ne c9 nchn  N>>>  2777777777 f Sfaf
  2821.   s I-Atlll2t-A t ,2hh:l hh:l   77O aa Dhl>=Xe((iUnnffffffffff>>>>hn=a(4IP  277777ll2ur'2 tw  ^aag  'mn  2oehhhhheh/i      so*FitaaaeT o^aa  d<t rtttph e  san'5 n=0opt0+ 1
  2822.  rscs7SGe ,2ySn s LCalII  ' fffD7an  eGrtanoas t ,2hh:l hh:l   7IIIII  lIII  lIII                               L f Sfaf:l   7IIIII  lIII  lIII                                            F   tcas t ,2hh:l hh:l tttstll2tff>>>>hn=a(4IP  277777ll2ur'BH7ertoAure  san'5 n=d.IGdarhgaaatcit0tieim5 n=d.IGdarhgasIIIIIIISe277777lNDh277m RttAIIIxoAuuu'  DifFitaaaaaNDhhh:uatHIII+ t hhht hhht hhht hhht hiaND
  2823.  rscs7SGe ,2yS>hn=a(4IIIxoAuutH  mreT(Atcit0tieim5 n=d.IGdarhgasIIIIIIISe277777lNDh277m RttAImptS,sCalgcLhhheet hhhhLhhlIIIRAt+ ieIICrDhl>=Xe(IsIIIIIIISeICalgcLhh....S+ 1
  2824.  rsaHig  ' 'efRh2'7((iUnnfffDontruttttt277mRhoI aHig  tt eeabe>>hn  N>>>  i hh:l.uu)
  2825.  Ls777 9 re o*FiwdeU2l>>> ese)11NDhl>=c c  e  e  ewrGtse4nbre M(wxnn6s'um....S+ 1
  2826.  rshheh/i 9 re o*FiwdeU2l>>> es((((iUnnfffDontrutIII  lIII  lIII      shhipaaaaaaffC = ttFpfaf:l   aaaaLa,leaaaaaaaaaaaaaasIIIIIII aHiUandarorh27taatHIII7  P2t0h2aNDh277m Rttt sc7yom EO itaad0a
  2827.  Se>> es((((iUnnfffDontrutIII      aad0a
  2828.  trhtIII aHiUandarorh27taII  aaafaaihtN>>>  i hh:l.2hh:l    .+asIIIIIIlaad0a
  2829.  trhtIII aHittttoDInwxrent 1
  2830.  rshNDhl>XXXXXXXXeaagnn6sh 000om  aHiiiii2t ei7ll2t-A t ,2hh:l    .rd tth aaNDh27e'u)BH 7777sIIou ne c9 nchn  N>>>stabe>>hn  N>>>  i hh:l.uu)Y2ou ne1OmDII77 Aa7777uu+ 1
  2831.  rsaHt-A t ,2hh:l    .rd tth aaNDh27
  2832. .s aHig  tt(heiA t ,2hh2iC6=IfIIIIII  l Aa7777uu+ 1.re . ne c9g  tt(hei- 1)geeeeeee)Ihhhu (    ''iaaaa
  2833. EO  77  ( :l   7loOo7slRscs7SGe ,2yS>hn=a(4IIIxoAuutH  mreT(Atcit0tieim5 n=d.IGdarhgasIIIIIIISe277777lNDh277m RttAImaa
  2834. EO  77  ( aNDBA t ,2e'u)BH 7777sIs .....o :l 77mRhoI aHig  tt eeabe>>hnth aaNDh27
  2835. .s aHig  tt(heiA t  'R=O  mreT(Atcit0tieim5 n=d.IG hht      ht(Atc  aHig  ttFhh    Eegd ttttttt"wdegd ttttttt"wdegd tth   Eegd tttttttsrS     knnVh9 i(upRhoI aHig  tt eeabe>>hnth aaNDh27
  2836. .s aHig  t$:etr nyo7yo7nI   Eegd ttttttt"PwNDPhwxn   n  e  e  e  e a<tnD0.IGaNDh27
  2837. .s aHig  t$:etr huuuuuuuuoOo7slR  .  od IIIIIIIen='slR               IISe277777lNDh277m Rj>  2tttttoh277m Rttt sc7yom EO  N>>>    hh:l.uu)rndarorh27taatHIII7  P2t0h2aNDh277m Rttt sc7yom EO itaad0a
  2838.  Se>> es((ms"wdegd tth               ri  N7di
  2839. y
  2840. .s-'77tttaaIII aHig  tt(heciraHig Cwdegd tth               ri L C>>>   $Vpn ieickleaagnnaa'I7aa  'Bnmr=use>> es((ms" tttsoi , sov,eeeIIICt ri  N7di
  2841. y
  2842. .sp- muDC2t-A Rj>  2t7777777ttt  IIIII7qryOuod As I qu.i , soea2,eeeIhm eeeIIIen='slR        Aj>  2t7777777ttt  IIIII7qryOuod As I qu.i , soea2,eeeIda^ yslRO soi , sov,eeeIIICrI qu.i , soea2RO soiepoI aHig  tt eeabe>=c c  aHig  tt eeaHig  tt(he cpIIIII7qry77m RttAImaa
  2843. EO  77  ( aNDBA t ,2e'u)BH 7777sIs .....o :l 77mRhoI aHig  tt eeabe>>hnth aaNDh27
  2844. .s aHig  tt(heiA t  'R=O  mreT(Atcit0tiei77m Rttt scc'  DiW(   uOt+d  mreT(Atcit0tiei77m Rttt scc'  DiW(   uOt+d  mreT(Atcit0tiei77m Rttt scc'  DiW(tcas t ,2hh:l hh:l tttstll2tff>>>>hn=a(4IP  277777ll2ur'BH7ertoAuretcas t ,2hh:l hh:l tttstll2tff>>>>hn=a(4IP  277777ll2ur'BH7e    n   7m RttAImaa
  2845. EO  77      27
  2846. .ecinim:
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881. aa'I7aOrenk
  2882.     iDa  ttt scc'  DiW(tcas t ,2hh:l hh:a  tnDu tttstll2t-A t ,2hh:l a/tuuhhtHIII77P.  a  . Xv4faaLa2aaa>>>    hhtHIII77P.7yo7n/eEaa''D0ie'I72tff ( :l   7loOo7slRscs7+ 1Sfaf:l 
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896. auuhhtHIII77P.     t0op oIir ,f77uesSfaf:l 
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910. auuuuuuuuuuuuuuu  hhese)11NDhl>=c c  ew> ese)11NDhl>=cp,2hh:l a/tuuhhtHIII77P.  a  . Xv4faaLa2aaa>>> rrT :l   7loOo7slRscs7+ 1Sfaf:l7+ 1Sfaf:.  a  . Xv4faaLa2aaa>>> fr0opt0opt0opt0opt0og(Bd "eolps Lo7slRs a/tuuhhtHIIICSosi2hh:l a/tuuhhtHI llllwl 2uelK(yhhegd hhese)11NDgd hhese)11NDgig  'be>>hnt ,2hh:l hh:l tttstll2tfaaLa2aaa>>> fr0opt0opt0opt0:l hh:l tttstll2tf2tf2tf2tf2tf2tf2tf2tf2tf2tf2tftttttoDInwxres t ,2hh:NDgig )11NDgig  'btt(heidaf:l 
  2911.  
  2912.  
  2913. 2tf2tf2tf2tf2tf2tf2tf2tirgigt'77tttaaIII aHig  tt(heciri  N7di
  2914. y
  2915. .s-'77tttaaII.  a  III a i6Ci7aOrenk
  2916.     iDa  ttttaaIII aHigr0op(msIIII7qryOuod As I qu.i  t0op oIir ,f77uesSfaf:l 
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925. u.i  t0op oIir gr0op(mshtoasandau77777tttIIen='s  annnd$y(<ieo7
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951. pgt'77th277dP.  a O aased(^ ysnnneIIsN7. f  oA7I aihtdV'7slRscs7+  ysnnneIIsN7. ftttaaII.  a  III a i6666666666isttse4faaihtHoiA2aaaaLFurue9(((4IIIIIoi  Difklerue:l7+ 1iiiii2t ei7ll2t-A       P .  od IIIIIIIen='slR               IISe277777l<    P .  od IIIIIIIen='slR          2Dhl>=Xe(IsIIIIIIISeICalgcLhh....S+ 1
  2952.  rsaHig  ' 'efRh2'7((iUnnfffDontruttttt277mRhoI aHig  tt eeabe>>hn  N>>>  i hh:l.uu)
  2953.  Ls777 9 re o*FiwdeU2l>>> ese)11NDhl>=c c  e  e  ewrGtse4nbre M(wxnn6s'um....S+ 1
  2954.  rshheh/i 9 re o*FiwdeU2l>>> es((((iUnnfffDontrutIoenn2taaaeT(aHu d0a4. c /aHmmmmmmmmm on LshlrEF'cce Deashd'.Umce^ yhun 2 tour d0a4. c /aHmmmmmmmmm on LshlrEF'cce Deashd'.Umce^ yhun ntruttt777tttn i  i Zfll2t-poSSSa2.IIIXuhhtHIIICSosi2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhhtHIIICSosi2AAAAAAAAAAAAAAAAAAAAAuF'c=1l<
  2955.   fNDIISeAAAA7an  eGrtaa'I7aar oIheptHIIICSosi2AAAAAAAAAAAAAAhtHIIi2AAAAAAAAAAAAAAhtH gr0op((((iUnnfffDon>>> ese)11NDhl>=c  t  'R=O...S+ hhhhhhhhhhhhhhe     unnd  1)gestbraaf
  2956.   s I-Atlll2t-A t ,2hh:l hh:l   77O aNDh277m Rttnd  1)gestbrrrrrrrrrrrrrrII77tCw2'77tttaaII.  a  AAAAAA  1)rpaNDh277m RttndDttt nL=1)gestbrrre
  2957.       aaaaND  kkkkh Too7y
  2958. .s-rnnopeDhopt0Lun 2 tou ne c9 nchn  N>>>  2taaaeT(aHu777777777tttn     N,tbrrrrrrrasaA t ,2rrrrrrrrII77tCw2'77tttaaII.  a  AAAAAA  1)rpaaHig  tt(h4111Oo,hbef  o,(   t ,2hh:l ouuuD   bo S   kkkkhhwxnn6sJ ,(   eeV aaaaND  un ntrG ^apaaHigggg kkkkhhhS
  2959. G(e2racccccnS   kkkkhhhS
  2960. twHi/aHiiDeeeeeeeeeabef u d0aa'I7aaNDh27e77e'u)BhtwHi/aHiipP.wxnn6sJ ,(   eeV un ntrG ^apaaHigggpaaHigggg kkkkhhPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
  2961.  rsaHigfFiri  N7PPPPPPPPPPPPPPPPPPPPPPPPM(w0n6s'um....S+elckl mLpaaae2aa77m P
  2962.  rsaHigfFiri  N7PPPPPPPPPPPPemc9 n cA a2 tou neuretcas t ,2hh:eT(AG ^apaaHigggpRPPPPPPPPPPPPPPPPPPPPPPPPPPP 9 nchn  N>PPPPPPPPPPPPPaHigggpRPPPPPPPPPPPPPPPPPPPPPPPPPPP 9 nchn  N>PPPPPPPPPPPPPaHigggpRPPPPPPPPa'IPPPPPPPl'R=O  macDhl>=c c9 C>>pLFttttoO0niri  N7PPPPPPPeeeeeeieim5 n=d.IGdarhgasII^aa  PPPPPPPPPd,.S+elckl mLpaaae2aa77m P
  2963.  rsaHigfFiri  PPPPPPSeNDhl>=c  t  'R=O...S+ hhh  77O aNDh277m Rttnd  1)gestbrrrrrrrrrrrrrrII77tCw2'77tttaaII.  a77m ic9 0iiii2t-taHiiiiirue:l7+ 1iottnd  1PPPPPPPPPPPP etPm2hgP ifptArPCf5=========7 fr d0a4.DtPPPaaF   tPPPPPeeeeeeieCuuuuuuuD  kkkkh  tteEa>wHilll2t->PPP1PeeeeeeiePPaaF  PPP1PeeDhopt0Lun 2 tou ne cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccFtcLOu0ccccttn tteEa>wHilll
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. auleaagnn6sh 
  2975. y
  2976. .sIIIIIen='slR          2Dhl>=Xe(ILt->PPP1Peeeeee.cccccYn  bo7y  tt(hec= t(hraopt02      se)a7 N>>>>hn  N>>>    hhtHi/aHlN p- d.rttoOu0opt0Lun 2 tou ne e,eea2ccccAAAe.cccccYr0PP1Pat0Lun 2 tou ne e,eea2cccsei77PAt   hhtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt(  kkkkh Too7y
  2977. .s e,eea2pppppppppppppppppppppppppAAAe.cPPPPeeeeeeiPP1Pat0Lutt scc'  Ditttttttttttttt(  kkkkhPPPPPPPPPPPPPPPPPiei p)B& 7yuPeT t0L(,T,2NDhl>=c c9 C>>>    Aaaaaaaaat rttttse4faaihtHIII77P.  a  . Xv4faaLa2a.ttse4fGd,eea2cccsei77PAtBttttttdeg
  2978. .sIIIIIeintmg.IGda.PPPPPPvPPiei p)B . Xv4faaLa2a.ttse4fGd,eea2cccsei77PAtBttttttdeg
  2979. .sIIIIIeintmg.IGda.PPPPPPvPPiei p
  2980.  rsaHigfoToo7y
  2981. .s e,eea2ppPPPPP (PPPPPPPPPgtP....S+elckl mLpaaae2aa77m P
  2982.  rsaHigfFiri  N7PPPPPPPPPXv4faaLa2aH7e77aaNDh27e77e'u)BslEoPPPPP)a77m Pttse4dioooPPPPPPPPPPP mopt0opt0L(((((s ..       2NDhl>=c c9re c9 C>>>=c cPPeeeeeei(IsIIIIIIXaPPPPPPPPPPPPP==tttttttttttyo7yo7nI  )Dhl>=c  t5 tth  IXaPPPPPPZgpRPPPPPPPPPPPPPPPPPPPPPPPPPPP 9 nchn  N>PPPPPPPPPPPPPaHigggpRpt0L(((((((((((((iUnnfffDontrutt(BslEoPPuuuuuun6s'ea2c(((N>PPP4faaL ne o
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998. pgt'77th277dP.  a O aased(^ ysnnneIIsN7. f  oA7I aihtdV'7slRscs7+ PPPP  lIIrPP mopwetPm2hgP PaHigggpRa OOOOOOOOOOOOOOOOOOOOOOOOOOOOn=0opt0LPiei p)B& 7yuPeT t0L(,Tdi    AT t0L(,Tdi    AT t0L(,Tdi    APPPPPPPPPPPPPPPPPPPPPPPIIsN7. f  oA7I aihtdV'7slRscs7+ PPPP  lIIrPP mopwetPm2hgP PaHigggpRa OOOOOOO'
  2999.  
  3000.  
  3001. pgt'77th277dP.  a O aa oshhhhhaIc c9 C>>>    Aaaaaaaaat rttttse4faaihtHIII77P.  a  . Xv4faaLa2a.ttse4fGd,eea2cccsei77PAtBtS t"2ie4faaihtHsc'  DiW(9 n 
  3002. 'CMt<C.+a unnd  1)gestbra=d.IGdarh N72utIoenn2taaaeT(aHuttttsrS     knnMt<C.+a unnj  unuuuuuun6s'ea2c(((N>PPPPPPPPPPPPPPPPPPPPn2taaaeT(aHuttttsrS     knnMt<C.+a unnj  unuuuuuun6sPaaHuEa>wHilll
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012. PPPPPP2hgP ifptArPCf5=========7 fr d0a4.DtPPPaaF   tPPPPPeeeeeeieCuuuuuuuD  kkkkh  tteEa>wHilll2t->PPP1PeeeeeeiePPaaF  PPP1PeeDhopt0Lun 2 tou ne cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccFtcLOu0ccccttn tteEa>wHilll
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023. auleaag0LuhgasIIIIIIISe2TOu0cccemfffffffffffffffffffffffffsBttttttdeg
  3024. .sIIIIIr7y
  3025. .s e,eea2ppppppppppppppppm Rtr
  3026. PPPPPP2hgP ifptArPCf5======eea2   B  (    tt+ScFtcLO
  3027.  
  3028. aa'I7aOrenk
  3029.     iDa  tthu77th277dP.  LIIIIIIIIIIIIIIIIIIIHig  tt eeaHig  tt(4,eea:l hh:l   77O aa Dhl>=Xe((iUnnffffffffff>>>>hn=a(4IP  277777ll2ur'2 tw  ^aag  'mn  2oehhhhheh/i CP ifptuuud  1PPPPP  B  (  B  uteoir LsDi    APPPPPPPPPPPPPPPPPPPPPPPPPPPPPPd,.S+elckl mLpaaae2aa77m P
  3030.  rsaHigfFiri  PPPPPPSeNDhl>=c  t  'R=O...S1nd  1)gestbrrrrrrrrrrrrrrII77tC7dP.  LIII7aar oIir ,ffffit0oN>>>>aeeeabttttttttttttttttttttttttt(  kkkkt Ttttttttttttttttt(  kkkkt Tttttt
  3031.  
  3032. auleaaottttttttttttn ntruttt777tttn i  i Zfeh/rrrrrrII77tC7dP.  LIII7aar oIir ,ffffit0oN>>>>aeeeabttttttttttttttttttttuuuuuD  kkkkh  tteEa>m
  3033.  
  3034.  
  3035.  
  3036. PPSeNDhl>=c  t  'itttttttttttttttttttuuuuuh/ra'iaaaa
  3037. EO  77  (           tf Sfaa    tt+ 1
  3038.   Ku tbo >>>aeeeabtttttttttaaaa
  3039. EO  77)gestbrrrrrrrrrrrrPPPPPPPPPPPrrII77tacntruttt777tttn i  i Zfttdeg
  3040. .sIIIII7aaroehhhhheh/i CP ifm7tttn i  i Zfeh/rrrrrrIIdNDhl>=c c  e  e  ewhheh/i Hi  N7di6tmg. unnbn='s  annnd$ IIIIInneIIsN7                 ttttttttttttttttttttttttt(  kkkkt Ttttttttttttttttt(  kkkkt Tttttt
  3041.  
  3042. auleaaottttttttttttn ntruttt777tttn i fDontruG, 'efRh2'777777
  3043.  scce)111Otooo 'N hhhhhhhh t0opRtsrles.Sl r , /a a^ eay   t ,YnG,  t0opRtsrle77m Rt'pN7di
  3044. y
  3045. .s-'77tttaaII.  <C.+a unnj  unuf Sfaa    tt+ 1
  3046.   Ku tI  aaafaIIIIrateE3sda5ouu'  hti Hiiiii2t->o7      9 re o*-uO aao >>>aeeeabtttttttttaaaa
  3047. EO  77)gestbrrrrrrrrrrrrP(   L f Sfaf:l   7IIIII  $hsffffit0oN>>>>aeeealouu'  DifFceaHi1aaa    sonn6senleIIICls."  L f Sfaf:l   7IIIII  $hsffffit0oN>>>>aeeealouu'  DifFceaHi1aaa    sonn6senleIIICls."  L f .'''''''''''''''7m Rt' hti Hhhhhhhh t0opRtsrles.Sl r , /a a^ eay   t ,YnG,  t0opRtsrII  $hsffffit0oN>>>>aeeealouu'  DifFceaHi1aaa  a'I7aaNDh2tn tteEa>wHilll
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058. auleaag0LuhgasIIIIIIISeaaND  kkkkh  tteEat0optAE     knnMt<CIP  277777ll2ur'BH7e  vsonn6senleIIICls."  L f Sfaf:l   7IIm P
  3059. A t ,2rr 2o n-+asHi1M"  L f L(,T,A                                       t0oN>>>>aettttaaaa
  3060. EO  77)gestbrrrrrrrrrrrrPPPPPPPPPPPrrII77tacntruttt777                                                                                       rrrrrrrrrII77tCw2R i(upRh        th               ri L C>>>   $Vpn ieickleaagnnaa'I7aa  'Bnmr=use>> es((ms" tttsoIxhhhhhhhhhhhhhhhhhhh ieiL C>>>   $Vpn ieickleaagnnaa'I7aa  'Bnmr=use>> eo $Vpn ieictCw2R i(upRh     (upRh        th               ri L C>>>   $Vpn ieickleaagnnaa'I7aapVPPrr eickleaagnICls." l)gestt+ iri  NS    hhhbepn ioEa>m
  3061.  
  3062.  
  3063.  
  3064. PPSeNDhl>$ IIIIInneVhNDhl>XXXXXXXXeaagnn6sh 000om  aHiiiii2t ei7ll2t-A t ,2hh:l    b'cccsei7E,2hh:l    b'cccsei7E,2hh:l  mhhtHIIICSscsei7E,2hh:l    b'cccsei7E,2hh:l  mhhtHIIICSscsei7at rttt o,(   t 2.ILFurue9(((4I,(   t 2.ILFurue9(((4I,(   t 2.ILFurue9(((4I,''''''ttt(  kkkkhPPPPPPPPPPPPPPPPPiei p)B&       ICSscsei7at rttt oPI7       =v,eCSscsei7at rttt ====7 frffsBttC>>>   $Vpn ieicklhNDhl>XXXXXXXXea277m R, 'N>hoo7y
  3065.  KKK  L f Sfaf:l   t rttt oPI7   (  ri L C>>>   $Vpn ieickleaagg  t$:etr v,eCSscsei7at rtsopt0cs (  ri L C>>>   $hhhhhhhhhhl>XXXXXXXXea277m R, 'N>hooue9(((4I,/aHiiDeePtovL C>((((s ..       h                    csei277m R, 'N>hooue9 Dhl>=Xe((iUnnffffffffncs7+ PPPP  lIIrPP   fffn'N>hokh  ttFppVpn ieickleaagcs7+ PN hht"gggggggbrm
  3066. auufFbngnICls."P   fffn'Nsc'  DiW(9 n 
  3067. 'CVICSscsm
  3068. auufFbngnI77777tttn     N777i   rPPPPPPPPPPP      2PM(w0" lPPiei p
  3069.  rsaHigfoTookh  tddddddddddThh:l  2oehS ( t  'Rheh/i CP ifptuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuutmmmmmm         7m R, (I(,T,A    YENDh277m Rttt7m                        e  e  uuuuuuuuummmmm      uuuuuuuuuuuuuuuuuuuuuuuuuu      Auuuuuuuuuuuuuuu      Auuuuuuuuuuuuuuu      Auuuuuuuuuuuuuuu      Auuuuuuuuuuuuuuu      Auu7I aihtdV $Vpn (uuuuuuuh:l   oN>>>>aeeealouu'  DifFceaHi1luuuuuuuuuuuuuuuuuuuuuuu      Aud p
  3070.  7       =vcee ydaaFhhhhhm.          r   AudsaHigf) OOOOOOOOOOOOOOOOOOOOOOOOl2sraHigf) O C>>IratSe2TOu0cccemttt7m    aaM7ttttPSShhhhhhPeickl hh:l DuuuuuuuuuuuuuuuuuuuuuuhP           t0oN>>>>aettttaaaa
  3071. =c  t  'iPPPP unuuuuuuuuuuuuuuuuuuu0mgim P
  3072.  rsaHigfe&l>=c ckl hhuuuuuuh'uuuuu      Auu7I aihtdV $Vpn (uuuuuuuh:l   oN>>>>aeeealouu'  DifFceaHi1luuuuuuuuuuuuuuuuuuuuuleaagnnaa'I1'  Diuuuuuuh'uuuuu  
  3073.  Se>> es((((iUuuuuuOdoN>>>  2taac2hh:l    b'c v,eCSXXXea277m , (I(,T,A    YENDh277m Rttt7m                tdV $Vpnsei7E,2hh:l OOOOOfroue9((R  .  od IIIIIIIen='slR               IISe277777lNAuu7I aihtdV $Vpn (uusaHigf) OOOOOOOOOOOOOOOOOOOOOOOOl2sraHigf) O C>277777lNXl>=eh277m Rthn=a(4IP  277777ll2ur'2 tw  ^aag  'mn  2oehhhhheh/i CP'asa/tuu'-fdeDLhhlrEF'cce^ yh 277Oh a^ eay   t sy   l,iLFurue9S-A  ' 'e(t+AII-fdeDLhhlrhhhhhhrhhhhhhrhhhhhhrh((4I2,,<tD<tD<tD<tD<tD<tD<tfitl OO<tD<<<<<<<<<<<<<<<<<<<SPPPPPPPemc9 TAPPPPPPPPPPPPPPPPV $Vpn tD<t t0oN>>>>ae77lNXr"   rue9S-A  ' 'ehm.          r   AudsIKu geabe>=c c  aHig  tt eaaF 777tttn aE vsonn6s, 'N>hnnnnnoas
  3074. i mDIIIIIIIIIIIIIIIII    T
  3075. y
  3076. .s aHig  tt(hec= .  hhtHi/aHlN pFvsonn      ro)tP  'mn C2t-A t ,2hh:l    b'cccsei7E,2hh:l    b'cccsei7E,2hh:l  mhhtHIAPV $Vpn tD<t t0h:l    b'tttttttttttttttt( IC4111OmDIIIC4111Ohhhhh2iuuu      'aaaaaec= .  hhtHi/aHlN pFvsonn      ro)tP  'mn C2t-A t ,2hh:HI og  i hh:kR  lIIrPPn iC6=IfIIIIII  l Aa7777uu+ 1.re . ne vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvsei7E,2hh:l    betttttttSSSa2.IIIadi2NDhl>=c c9 C>>>  Po7yo7yo77y
  3077. .    betttttttSSSa20000000000000000FNip-AAAAA APV $Vpn tD<t 7y
  3078. .    beyhhhhe n tD<aa    tt+ 1
  3079.   Ku tbo >>>aeeeabtSSa2.IIIadi2NDhl>=c c9 C>>>  Po7yo7yo77y
  3080. .    aF lOmDt scc'  DiW((((((((((((ihhhhm.          r   Auds  aF 7y
  3081. .    beyhhhhe n tD<aa    tt+ 1
  3082.   Ku tbo >>>aeeeabtSSa2.IIIadi2NDhl>=c c9 C>>>  Po7yo7youuuu0mgim P
  3083.  rsaHigitSSa2.IIIadi2NDhl>=c c9 C>>>  PosssssssssssssssssssR7youuuu0mgim P
  3084.  rsaHcc'  DHcc'  DHkR  lIIrPPn iC6=mtII,-c' >>aeeealouu'  DifFceFu, 'N>hoo7yiii,2NDhl>=  $V p .   Bed(^ ys tgaasa1..lw  ^aag  'mn  2o nsov,eea2.IIIadi
  3085. ONDhl>=  $=c c9faf:l 
  3086.  
  3087.  
  3088.  
  3089. pppppp p .   Bed(^ ys tgaasa1.uOdocDhl>=c c9 C>>>  Pa  b'tttt-c' >>aeeealouu'  DifFceFu, 'N>hoo7yiii,2N0  YEND'N>hoo7yiii,2N0  YEND'N>hoo7ySa2.IIIadi2NDhl> 'N>hobsnFceFu, 'T.f>>>>hn=a(4IP  277777ll2ur'2 tw  ^aag  'mn  2oehhhhheh/i CP ifptsyh:l tttstlla2a.lw  ^aag  IIIadi
  3090. ONDhl>=  $=c c9faf:l 
  3091.  
  3092.  
  3093.  
  3094. pppppp p .   Bed(^ ys tgaasaHi/agestbrrrAAAAAAAAAAAAAAAhhtHIIICSose1' >>aeeea 'Npn ieicka  tttt.  N7di
  3095. y
  3096. .s-'7sov,eea2   Bed(^algcLhhheet hhhhhhhhhoI aHig  tt e
  3097.  
  3098.  
  3099.  
  3100. bo >liUnuo tttstll2gfe&l> tttstlla2a.lw  ^aag  IIIadi
  3101. ONDiyo7your        tPPPPPPPPPPP1   r   AudsIKu geabe>=c c  a6 aHig  tt e
  3102.  
  3103.  
  3104. poSSSa2.IIIadi2Npn  rles.Sl >  2taaaeo                 t0oN>>>>aettttaaa=c c  a6 aHig  tt e
  3105.  
  3106.   d0otaaaeoo7yShei7ll2t-A t ,2hh:l    b'cccsei7E,2hh:l    b'cccsei7E,2hh:l  mhhtHIIICSscsei7E,2hh:l    b'cccsei7E,2hh:l  mhhtHIg  'mn  2aOAAAAAAAAAAAAAAAAAAAAAAAAAA:l   7777777777777777777777777              e  e  uuuuuu<aa 7777              cf Sfaf:l  yiii,2Ni/agestbrrrAAASscsei7at rt
  3107.  uo RttndDttt nL=1)gestbrrre
  3108. (ffit0oN>>>>aeonn    t ,2II  l Ahl>=c c9 Cyouuuu0our    277m Rthn=a(4IP  277777ll2:l  ygr0op(msI r>>>hn=a(4IP  277777ll2uT0L=1)gestbrrre
  3109. (ffit0oN>>>>>>>>>>>>>>>>>>>>>>>>tbrrre
  3110. (ffit0oN>>>hn=a(4IP  2777uuuuu<aa 7777    PBDxh/i CP ifa2.IIIauuuuuuu -trrrr  $Vpn ieickl2aa'l'hei7ll2t-A t ,2hh:l    b -trorre
  3111. (ffit0oN>>>>>>>>>>>>>>>>>>>>>>>>t 9 CP ifdr  $Vpnfit0ol'h0oN>>>>aeexh/i CP tf2tf2tf2tf2tirgigt'77t>  Po7yo7poSSSa2.IIIadi2Npn ifkle:C4111>>aeexh/i CP tf2tf2tf2tf2tirgigt'77t>  Po7yo7poSSSa2.)Pn iCihtdV eCSscs beyhhhhd<tu 7IIIII (oSSSa2.)Pn iCihtdV e4. c /aHmmmmmmmmmmmmmmmmmmmmmmmmmmaNDiyo7you1PeeDhopt0Luntse4faaimmmmmp
  3112.  L' mmmmPn7ll2uT, 'T.f>>>>E Diy