KEMBAR78
Basics of Batch Scripting | PPTX
Technical Workshop 1ADVANCED SYSTEMS MANAGEMENTPresented By Arik FletcherThursday January 29th 2009
Why Are We Here?These workshops aim to relay a simple mantra:A little TIME, EFFORT, and the right RESOURCES combined with TRAINING, PRACTICE, and TEAMWORK will vastly improve your KNOWLEDGE, ABILITY, and EXPERIENCE.KNOWLEDGETEAMWORKTIMETRAININGRESOURCESEXPERIENCEPRACTICEEFFORTABILITYTechnical Workshop 1 - Advanced Network Management
AgendaTechnical Workshop 1 - Advanced Network ManagementAdministration Essentials09:45 – 10:30Discussion:IT Support ExpectationsExercise:Task Management and AutomationTutorial:	The Realities of AutomationBREAK						10:30 –10:40Scripting Essentials10:40 – 12:10Overview:	Introduction to ScriptingTutorial:	Syntax and Reference DocumentsTutorial:	Structure and Sample CodeExercise:	Script Writing and TroubleshootingBREAK						12:10 –12:20Toolkit Essentials12:0 – 13:00Overview: 	Utility DVD contentsDiscussion:	Recommended Tools
Administration EssentialsTASK MANAGEMENT FOR SYSTEMS ENGINEERSTechnical Workshop 1 - Advanced Network Management
IT Support:ExpectationsInterviews with staff at the Computer Depot in the University of Vermont.This video focuses on what IT Support Technicians expect from their computers.Technical Workshop 1 - Advanced Network Management
What Do You Expect From Your Computers?Technical Workshop 1 - Advanced Network Management
Recommended Admin TasksDaily Checks:Server ServicesServer Event LogsServer Hardware StatusFirewall Logs and StatusBackup StatusAntivirus UpdatesWeekly Checks:Server Disk SpaceMail Store & Database SpaceTechnical Workshop 1 - Advanced Network ManagementMonthly Checks:Restore StatusServer Security UpdatesNetwork Application PatchesServer Disk FragmentationWorkstation Hardware StatusPrinter Hardware StatusDocumentation StatusQuarterly Checks:Workstation Builds
Where Does The Day Go?If you feel like this guy...don’t panic, help is at hand!Technical Workshop 1 - Advanced Network Management
Automated vs. Manual TasksAutomated Checks:Server ServicesServer Event LogsServer Hardware StatusFirewall Logs and StatusBackup StatusAntivirus UpdatesServer Disk SpaceMail Store & Database SpaceServer Security UpdatesNetwork Application PatchesServer Disk FragmentationWorkstation Hardware StatusPrinter Hardware StatusTechnical Workshop 1 - Advanced Network ManagementManual Checks:Restore StatusDocumentation StatusWorkstation Builds
Follow The A.R.P.C.E.D. LawTechnical Workshop 1 - Advanced Network Management
The Truth Is Out There...Search before indulging in a potentially long and complex coding projectSomeone else has been there before and has probably written a scriptIf in doubt, ask the team!Technical Workshop 1 - Advanced Network Management
All The Time In The World...Scripting is a long-term gain, but a short-term loss...A script can save you time once completed, but it will need a fair amount of time and energy to be invested in its initial development.Even when your script is done, you will find yourself spending further time and resources on testing and improving it.Technical Workshop 1 - Advanced Network Management
Can You Handle The Truth?Technical Workshop 1 - Advanced Network ManagementTAKE THE RED PILL:Stay in Wonderland and I show you how deep the rabbit-hole goes...TAKE THE BLUE PILL:The story ends, you wake up in your bed and believe whatever you want to believe...THE CHOICE IS YOURS...
Scripting EssentialsA LOOK AT WINDOWS SHELL SCRIPTINGTechnical Workshop 1 - Advanced Network Management
Scripting Essentials OverviewWhat is shell scripting?What can/can’t it do?What else is out there?How do I get started?Where do I learn more?Will this happen to me?Technical Workshop 1 - Advanced Network Management
What is Shell Scripting?A collection or ‘batch’ of commands run in sequence to complete a task or set of tasks.Quick and easy method of automating the most common admin or user tasks.An essential tool for both improving task efficiency and time management.Technical Workshop 1 - Advanced Network Management
What can/can’t shell scripts do?Technical Workshop 1 - Advanced Network Management
What Else Is Out There?Technical Workshop 1 - Advanced Network Management
Code Writing GuidelinesTechnical Workshop 1 - Advanced Network Management
When In Rome (or America)...Scripts are designed to be written in American English. Regional Settings will not change the commands‘Correct’ spelling is critical- “It is the American Way!”e.g. COLOR, Favorites, Organization, Customize, etcTechnical Workshop 1 - Advanced Network Management
Shell Command SymbolsTechnical Workshop 1 - Advanced Network Management
Shell Prompt ModificationTechnical Workshop 1 - Advanced Network Management
Arguments & VariablesARGUMENTSRepresented by single % symbolValues set by end userNumbered from 1 (0 is script)Generally used as switchese.g. ArguVars.cmd/testVARIABLESIdentified by enclosed % symbolsValues set by OS or script writerNamed by OS or script writerCan be used as argumentse.g. ArguVars.cmd%os%Technical Workshop 1 - Advanced Network Management
Environmental VariablesTechnical Workshop 1 - Advanced Network Management
Environmental Variables (cont.)Technical Workshop 1 - Advanced Network Management
Internal & External CommandsINTERNAL COMMANDSPart of CMD shellNo file extensionsCannot run without shellHelp command can be usede.g. HELP DIREXTERNAL COMMANDSSeparate from CMD shellUsually .exe or .com extensionsCan be run outside of shellExternal help is usually needede.g. MSTSC/?Technical Workshop 1 - Advanced Network Management
Internal CommandsTechnical Workshop 1 - Advanced Network Management
Internal Commands (cont.)Technical Workshop 1 - Advanced Network Management
External CommandsTechnical Workshop 1 - Advanced Network Management
External Commands (cont.)Technical Workshop 1 - Advanced Network Management
Recommended Code Layout@ECHO off	- only show outputCLS		- clear screen:START		- label start of codeTITLE		- window/script titleREM		- author/copyright:RUN		- label body of codeREM		- command notesECHO- a command to run:FINISH	- label end of codeREM		- closing commentsGOTO :EOF	- exit the scriptTechnical Workshop 1 - Advanced Network Management
Importance of Comments and LayoutTechnical Workshop 1 - Advanced Network Management
FORUsed to iterate (repeat) tasks USAGE:Uses lettered arguments with double % symbol in scripts and single % symbol from shellRequires in and do functionsCOMMON SWITCHES:Follow numeric series: FOR /lPerform file functions: FOR /fTechnical Workshop 1 - Advanced Network Management
IFAllows for conditional tasksUSAGEFollow with not for negativesUses else in place of multiplesCase sensitive unless /i is usedUses double = symbol in scripts and single = symbol in shellCOMMON USES:File Check: IFexist %path%Variable Check: IFdefined osCompare: IF“%1”==“%path%”Technical Workshop 1 - Advanced Network Management
SETCreates temporary variablesValues from script writer or userPerforms arithmetic functionsCOMMON USES:Set Variable: SETvar=valueCalculate: SET/a var=equationPrompt:SET/p var=questionTechnical Workshop 1 - Advanced Network Management
Green Code is Good CodeRE-USABLE CODE:Mini-script within main scriptReduces development timeGuarantees fewer mistakesImproves code legibilityUSAGE GUIDELINES:Use labels to identify routinesUse arguments and variablesShould be after ‘end’ of scriptMust be called not directed toTechnical Workshop 1 - Advanced Network Management
I can only show you the door, you're the one that has to walk through it...Technical Workshop 1 - Advanced Network Management
Script This!Print a line of textClear the screenChange window colorView a text fileSave output to a fileCreate a variableCompare a variableRepeat a file taskCalculate an equationECHOvalueCLSCOLOR valueTYPEpath\file.extIPCONFIG> file.extSETvar=valueIF “%var%”==“value”FOR/f%%ain (‘cmd’) doSET/avar=equationTechnical Workshop 1 - Advanced Network Management
Un-script This!Disables command echoChange window titleRun the SUBTASK routineExit the scriptShow a file in single pagesCheck for variableCheck if command workedPrompt user for valuePerform a task five times@ECHO offTITLE valueCALL :SUBTASKGOTO:EOFTYPEfile.ext |MOREIFDEFINEDvarIF “%errorlevel%”==“0”SET/p var=valueFOR/l%%ain (1,1,5) doTechnical Workshop 1 - Advanced Network Management
Scripting ResourcesWeb LinksBooksCS Portal Script Repositoryhttp://tinyurl.com/cspscriptsFrank-Peter Schultze Scriptshttp://tinyurl.com/fpschultzeTSCMD FAQ: Scripting Trickshttp://tinyurl.com/tscmdfaqTechNet A-Z Command Referencehttp://tinyurl.com/mscmdrefBackup Exec 11d Documentshttp://tinyurl.com/be11docsBackup Exec 12d Documentshttp://tinyurl.com/be12doczipWindows NT Shell ScriptingISBN: 1-57870-047-7Zero Administration for WindowsISBN: 1-56592-508-4Windows 2000 Active DirectoryISBN: 1-56592-638-2Windows 2000 Scripting BibleISBN: 0-7645-4677-5Windows Desktop Deployment Resource KitISBN: 0-7356-1898-4Windows Command Pocket ConsultantISBN: 0-7356-2262-0Technical Workshop 1 - Advanced Network Management
Toolkit EssentialsVITAL TOOLS AND UTILITIES FOR ALL TECHIESTechnical Workshop 1 - Advanced Network Management
Technical Workshop 1 - Advanced Network Management
Utility Disc – DigiWiz miniPE2-XTTechnical Workshop 1 - Advanced Network Management
Utility Disc – Hiren’s Boot CDTechnical Workshop 1 - Advanced Network ManagementDOS Utility Boot CDwith additional Windows Tools
Recommended ToolsScript Writing:Notepad2Notepad++System Information:AIDA32EZAuditPassword Reset:Password RenewNT Offline Password ResetProduct Key Recovery:Magic Jelly Bean KeyfinderNirsoftProduKeyFile Compression:IzArc2Go7-ZipDisk Cloning:Symantec GhostAcronis True ImageDisk Partitioning:Partition MagicParagon Partition ManagerPartition Recovery:TestDiskOntrack Easy Recovery ProDeep Data Recovery:NTFS UndeleteGetDataBack-NTFS/GetDataBack-FATUser Friendly Data Recovery:RecuvaRestorationTechnical Workshop 1 - Advanced Network Management
Recommended Tools (cont.)Floppy/USB Key Cloning:WinImageAntiSpyware:SDFixWebroot Spy SweeperCD Image Creation:LCISOCreatorISO BusterCD Burning:ImgBurnExpress BurnDisk Defragmentation:DefragglerJkDefragFile Copier:FastCopySyncToySystem Optimisation:CCleanerWinASOEasyTweakDriver Backup and Restore:Smart Driver Backup DriverBackup!PE Editor:Resource HackerPE Resource ExplorerPersonal Antivirus:Avast!NOD32Technical Workshop 1 - Advanced Network Management

Basics of Batch Scripting

  • 1.
    Technical Workshop 1ADVANCEDSYSTEMS MANAGEMENTPresented By Arik FletcherThursday January 29th 2009
  • 2.
    Why Are WeHere?These workshops aim to relay a simple mantra:A little TIME, EFFORT, and the right RESOURCES combined with TRAINING, PRACTICE, and TEAMWORK will vastly improve your KNOWLEDGE, ABILITY, and EXPERIENCE.KNOWLEDGETEAMWORKTIMETRAININGRESOURCESEXPERIENCEPRACTICEEFFORTABILITYTechnical Workshop 1 - Advanced Network Management
  • 3.
    AgendaTechnical Workshop 1- Advanced Network ManagementAdministration Essentials09:45 – 10:30Discussion:IT Support ExpectationsExercise:Task Management and AutomationTutorial: The Realities of AutomationBREAK 10:30 –10:40Scripting Essentials10:40 – 12:10Overview: Introduction to ScriptingTutorial: Syntax and Reference DocumentsTutorial: Structure and Sample CodeExercise: Script Writing and TroubleshootingBREAK 12:10 –12:20Toolkit Essentials12:0 – 13:00Overview: Utility DVD contentsDiscussion: Recommended Tools
  • 4.
    Administration EssentialsTASK MANAGEMENTFOR SYSTEMS ENGINEERSTechnical Workshop 1 - Advanced Network Management
  • 5.
    IT Support:ExpectationsInterviews withstaff at the Computer Depot in the University of Vermont.This video focuses on what IT Support Technicians expect from their computers.Technical Workshop 1 - Advanced Network Management
  • 6.
    What Do YouExpect From Your Computers?Technical Workshop 1 - Advanced Network Management
  • 7.
    Recommended Admin TasksDailyChecks:Server ServicesServer Event LogsServer Hardware StatusFirewall Logs and StatusBackup StatusAntivirus UpdatesWeekly Checks:Server Disk SpaceMail Store & Database SpaceTechnical Workshop 1 - Advanced Network ManagementMonthly Checks:Restore StatusServer Security UpdatesNetwork Application PatchesServer Disk FragmentationWorkstation Hardware StatusPrinter Hardware StatusDocumentation StatusQuarterly Checks:Workstation Builds
  • 8.
    Where Does TheDay Go?If you feel like this guy...don’t panic, help is at hand!Technical Workshop 1 - Advanced Network Management
  • 9.
    Automated vs. ManualTasksAutomated Checks:Server ServicesServer Event LogsServer Hardware StatusFirewall Logs and StatusBackup StatusAntivirus UpdatesServer Disk SpaceMail Store & Database SpaceServer Security UpdatesNetwork Application PatchesServer Disk FragmentationWorkstation Hardware StatusPrinter Hardware StatusTechnical Workshop 1 - Advanced Network ManagementManual Checks:Restore StatusDocumentation StatusWorkstation Builds
  • 10.
    Follow The A.R.P.C.E.D.LawTechnical Workshop 1 - Advanced Network Management
  • 11.
    The Truth IsOut There...Search before indulging in a potentially long and complex coding projectSomeone else has been there before and has probably written a scriptIf in doubt, ask the team!Technical Workshop 1 - Advanced Network Management
  • 12.
    All The TimeIn The World...Scripting is a long-term gain, but a short-term loss...A script can save you time once completed, but it will need a fair amount of time and energy to be invested in its initial development.Even when your script is done, you will find yourself spending further time and resources on testing and improving it.Technical Workshop 1 - Advanced Network Management
  • 13.
    Can You HandleThe Truth?Technical Workshop 1 - Advanced Network ManagementTAKE THE RED PILL:Stay in Wonderland and I show you how deep the rabbit-hole goes...TAKE THE BLUE PILL:The story ends, you wake up in your bed and believe whatever you want to believe...THE CHOICE IS YOURS...
  • 14.
    Scripting EssentialsA LOOKAT WINDOWS SHELL SCRIPTINGTechnical Workshop 1 - Advanced Network Management
  • 15.
    Scripting Essentials OverviewWhatis shell scripting?What can/can’t it do?What else is out there?How do I get started?Where do I learn more?Will this happen to me?Technical Workshop 1 - Advanced Network Management
  • 16.
    What is ShellScripting?A collection or ‘batch’ of commands run in sequence to complete a task or set of tasks.Quick and easy method of automating the most common admin or user tasks.An essential tool for both improving task efficiency and time management.Technical Workshop 1 - Advanced Network Management
  • 17.
    What can/can’t shellscripts do?Technical Workshop 1 - Advanced Network Management
  • 18.
    What Else IsOut There?Technical Workshop 1 - Advanced Network Management
  • 19.
    Code Writing GuidelinesTechnicalWorkshop 1 - Advanced Network Management
  • 20.
    When In Rome(or America)...Scripts are designed to be written in American English. Regional Settings will not change the commands‘Correct’ spelling is critical- “It is the American Way!”e.g. COLOR, Favorites, Organization, Customize, etcTechnical Workshop 1 - Advanced Network Management
  • 21.
    Shell Command SymbolsTechnicalWorkshop 1 - Advanced Network Management
  • 22.
    Shell Prompt ModificationTechnicalWorkshop 1 - Advanced Network Management
  • 23.
    Arguments & VariablesARGUMENTSRepresentedby single % symbolValues set by end userNumbered from 1 (0 is script)Generally used as switchese.g. ArguVars.cmd/testVARIABLESIdentified by enclosed % symbolsValues set by OS or script writerNamed by OS or script writerCan be used as argumentse.g. ArguVars.cmd%os%Technical Workshop 1 - Advanced Network Management
  • 24.
    Environmental VariablesTechnical Workshop1 - Advanced Network Management
  • 25.
    Environmental Variables (cont.)TechnicalWorkshop 1 - Advanced Network Management
  • 26.
    Internal & ExternalCommandsINTERNAL COMMANDSPart of CMD shellNo file extensionsCannot run without shellHelp command can be usede.g. HELP DIREXTERNAL COMMANDSSeparate from CMD shellUsually .exe or .com extensionsCan be run outside of shellExternal help is usually needede.g. MSTSC/?Technical Workshop 1 - Advanced Network Management
  • 27.
    Internal CommandsTechnical Workshop1 - Advanced Network Management
  • 28.
    Internal Commands (cont.)TechnicalWorkshop 1 - Advanced Network Management
  • 29.
    External CommandsTechnical Workshop1 - Advanced Network Management
  • 30.
    External Commands (cont.)TechnicalWorkshop 1 - Advanced Network Management
  • 31.
    Recommended Code Layout@ECHOoff - only show outputCLS - clear screen:START - label start of codeTITLE - window/script titleREM - author/copyright:RUN - label body of codeREM - command notesECHO- a command to run:FINISH - label end of codeREM - closing commentsGOTO :EOF - exit the scriptTechnical Workshop 1 - Advanced Network Management
  • 32.
    Importance of Commentsand LayoutTechnical Workshop 1 - Advanced Network Management
  • 33.
    FORUsed to iterate(repeat) tasks USAGE:Uses lettered arguments with double % symbol in scripts and single % symbol from shellRequires in and do functionsCOMMON SWITCHES:Follow numeric series: FOR /lPerform file functions: FOR /fTechnical Workshop 1 - Advanced Network Management
  • 34.
    IFAllows for conditionaltasksUSAGEFollow with not for negativesUses else in place of multiplesCase sensitive unless /i is usedUses double = symbol in scripts and single = symbol in shellCOMMON USES:File Check: IFexist %path%Variable Check: IFdefined osCompare: IF“%1”==“%path%”Technical Workshop 1 - Advanced Network Management
  • 35.
    SETCreates temporary variablesValuesfrom script writer or userPerforms arithmetic functionsCOMMON USES:Set Variable: SETvar=valueCalculate: SET/a var=equationPrompt:SET/p var=questionTechnical Workshop 1 - Advanced Network Management
  • 36.
    Green Code isGood CodeRE-USABLE CODE:Mini-script within main scriptReduces development timeGuarantees fewer mistakesImproves code legibilityUSAGE GUIDELINES:Use labels to identify routinesUse arguments and variablesShould be after ‘end’ of scriptMust be called not directed toTechnical Workshop 1 - Advanced Network Management
  • 37.
    I can onlyshow you the door, you're the one that has to walk through it...Technical Workshop 1 - Advanced Network Management
  • 38.
    Script This!Print aline of textClear the screenChange window colorView a text fileSave output to a fileCreate a variableCompare a variableRepeat a file taskCalculate an equationECHOvalueCLSCOLOR valueTYPEpath\file.extIPCONFIG> file.extSETvar=valueIF “%var%”==“value”FOR/f%%ain (‘cmd’) doSET/avar=equationTechnical Workshop 1 - Advanced Network Management
  • 39.
    Un-script This!Disables commandechoChange window titleRun the SUBTASK routineExit the scriptShow a file in single pagesCheck for variableCheck if command workedPrompt user for valuePerform a task five times@ECHO offTITLE valueCALL :SUBTASKGOTO:EOFTYPEfile.ext |MOREIFDEFINEDvarIF “%errorlevel%”==“0”SET/p var=valueFOR/l%%ain (1,1,5) doTechnical Workshop 1 - Advanced Network Management
  • 40.
    Scripting ResourcesWeb LinksBooksCSPortal Script Repositoryhttp://tinyurl.com/cspscriptsFrank-Peter Schultze Scriptshttp://tinyurl.com/fpschultzeTSCMD FAQ: Scripting Trickshttp://tinyurl.com/tscmdfaqTechNet A-Z Command Referencehttp://tinyurl.com/mscmdrefBackup Exec 11d Documentshttp://tinyurl.com/be11docsBackup Exec 12d Documentshttp://tinyurl.com/be12doczipWindows NT Shell ScriptingISBN: 1-57870-047-7Zero Administration for WindowsISBN: 1-56592-508-4Windows 2000 Active DirectoryISBN: 1-56592-638-2Windows 2000 Scripting BibleISBN: 0-7645-4677-5Windows Desktop Deployment Resource KitISBN: 0-7356-1898-4Windows Command Pocket ConsultantISBN: 0-7356-2262-0Technical Workshop 1 - Advanced Network Management
  • 41.
    Toolkit EssentialsVITAL TOOLSAND UTILITIES FOR ALL TECHIESTechnical Workshop 1 - Advanced Network Management
  • 42.
    Technical Workshop 1- Advanced Network Management
  • 43.
    Utility Disc –DigiWiz miniPE2-XTTechnical Workshop 1 - Advanced Network Management
  • 44.
    Utility Disc –Hiren’s Boot CDTechnical Workshop 1 - Advanced Network ManagementDOS Utility Boot CDwith additional Windows Tools
  • 45.
    Recommended ToolsScript Writing:Notepad2Notepad++SystemInformation:AIDA32EZAuditPassword Reset:Password RenewNT Offline Password ResetProduct Key Recovery:Magic Jelly Bean KeyfinderNirsoftProduKeyFile Compression:IzArc2Go7-ZipDisk Cloning:Symantec GhostAcronis True ImageDisk Partitioning:Partition MagicParagon Partition ManagerPartition Recovery:TestDiskOntrack Easy Recovery ProDeep Data Recovery:NTFS UndeleteGetDataBack-NTFS/GetDataBack-FATUser Friendly Data Recovery:RecuvaRestorationTechnical Workshop 1 - Advanced Network Management
  • 46.
    Recommended Tools (cont.)Floppy/USBKey Cloning:WinImageAntiSpyware:SDFixWebroot Spy SweeperCD Image Creation:LCISOCreatorISO BusterCD Burning:ImgBurnExpress BurnDisk Defragmentation:DefragglerJkDefragFile Copier:FastCopySyncToySystem Optimisation:CCleanerWinASOEasyTweakDriver Backup and Restore:Smart Driver Backup DriverBackup!PE Editor:Resource HackerPE Resource ExplorerPersonal Antivirus:Avast!NOD32Technical Workshop 1 - Advanced Network Management

Editor's Notes

  • #2 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #3 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #4 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #5 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #8 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #9 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #10 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #11 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #12 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #13 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #14 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #15 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #16 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #17 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #18 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #19 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #20 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #21 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #22 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #23 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #24 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #25 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #26 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #27 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #28 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #29 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #30 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #31 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #32 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #33 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #34 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #35 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #36 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #37 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #39 _________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #40 ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #42 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #44 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
  • #45 ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________