Course Setup for Day 1

In this course we will demonstrate how to run some standard analysis tools for RNA-seq data. The majority of Bioinformatics tools are built with a command-line environment in mind, rather than Windows or Mac OSX. To simplify the installation of these tools, we are providing some resources on the cloud that you can log into for the duration of the course.

1. Create an account at InstanceHub

InstanceHub is a tool created at The University of Sheffield for creating cloud resources for computing practicals. You will need to go to instancehub.com and create an account. Make sure that you specify the same email address that you signed-up to the course.

2. Launch the Lab

Choose the menu option View my labs on the left-hand menu. The lab Introduction to the Command Line for Bioinformatics should be visible. Click the Participate button.

3. Connect to the lab

Press the Start Lab (green) button and wait whilst the lab loads…

Once Start Lab has been replaced by Disconnect, the Connection Information tab will be updated with an IP address etc.

Enter the following address in your web browser

Replacing IP_ADDRESS with the numbers next to Instance IP in the Connection Information box.

http://IP_ADDRESS:6080

e.g.

http://3.8.149.23:6080

Do not click Disconnect

4. Open a termninal window

You should be presented with a unix desktop environment that we can use to learn about the command-line and tools for processing RNA-seq data.

To open a Terminal (in order to enter Unix commands), there is a “Start menu” in the bottom-left corner from which you can select System Tools and then LXTerminal

5. Change user

Finally, in order to follow the materials we need to change the user that we logged in as from root to dcuser.

Type the command into the terminal window exactly as it appears below

su - dcuser

Setup on your own machine

Both Mac OSX and Windows 10 have the ability to run some of the commands presented in this course to navigate around a file system, copy files and list directories. However, you may prefer to practice in a “safe” environment, such as that used during the workshop. Furthermore, the NGS tools presented may be difficult to install.

You can launch the same computing environment on your own machine using a tool called Docker.

Docker is an open platform for developers to build and ship applications, whether on laptops, servers in a data center, or the cloud.

  • Or, it is a (relatively) painless way for you to install and try out Bioinformatics software.
  • You can think of it as an isolated environment inside your exising operating system where you can install and run software without messing with the main OS
    • Really useful for testing software
    • Clear benefits for working reproducibly
  • Instead of just distributing the code used for a paper, you can effectively share the computer you did the analysis on
  • For those of you that have used Virtual Machines, it is a similar concept

Installing Docker

Windows

Once you have installed Docker using the insructions above, you can open a terminal (Mac) or command prompt (Windows) and type the following to run the Day 1 environment

docker run --rm -p 6080:80 markdunning/rnaseq-toolbox

Entering the address in your web browser should display the environment

http://localhost:6080

Using the environment to analyse your own data

With the default settings, the computing environment is isolated from your own laptop; we can neither bring files that we create back to our own OS, or analyse our own data.

However, adding an -v argument allows certain folders on your own OS to be visible within the enviroment.

Assuming the files I want to analyse are to be found in the folder PATH_TO_FASTQ, the following command would map that directory to the folder /home/dcuser/rnaseq_data

docker run --rm -p 6080:80 -v /PATH_TO_FASTQ/:/home/dcuser/rnaseq_data markdunning/rnaseq-toolbox

At the terminal, we should be able to see our files with the ls command

ls /home/dcuser/rnaseq_data

Analysis on the UoS cluster

As described above, docker can be used to run the environment presented in this course on a personal laptop. However, there are some security implications of docker that prohibits it being installed on a high-performance computing system. An alternative is singularity, which allows computing environments to be distributed as a single image file. We have created such a singularity image and made it available on sharc (The University of Sheffield’s HPC).

Firstly, login to sharc in the usual manner and then open an interactive shell.

ssh USERNAME@sharc.shef.ac.uk
qrsh

The singularity image is available at the following location:-

ls /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif

The commands presented in the Introduction to Shell section (e.g. ls, cd, pwd…) are already available when you first login to sharc. However, the tools specific to NGS analysis will require you to add the path to the singularity image before the command.

For example, to run fastqc you can navigate to your directory containing your fastq files with the usual cd command.

cd /path/to/your/fastq/files
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif fastqc *.fastq.gz

Other commands that require you to list give the path to the singularity image are as follows:-

singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif multiqc
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif hisat2-build
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif hisat2 
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif samtools 
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif featureCounts
singularity exec /shared/bioinformatics_core1/Shared/software/singularity/command_line_20200212.sif salmon
LS0tCnRpdGxlOiAiQ291cnNlIFNldHVwIgphdXRob3I6ICJNYXJrIER1bm5pbmciCmRhdGU6ICJGZWJydWFyeSAyMDIwIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyBDb3Vyc2UgU2V0dXAgZm9yIERheSAxCgpJbiB0aGlzIGNvdXJzZSB3ZSB3aWxsIGRlbW9uc3RyYXRlIGhvdyB0byBydW4gc29tZSBzdGFuZGFyZCBhbmFseXNpcyB0b29scyBmb3IgUk5BLXNlcSBkYXRhLiBUaGUgbWFqb3JpdHkgb2YgQmlvaW5mb3JtYXRpY3MgdG9vbHMgYXJlIGJ1aWx0IHdpdGggYSAqY29tbWFuZC1saW5lKiBlbnZpcm9ubWVudCBpbiBtaW5kLCByYXRoZXIgdGhhbiBXaW5kb3dzIG9yIE1hYyBPU1guIFRvIHNpbXBsaWZ5IHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlc2UgdG9vbHMsIHdlIGFyZSBwcm92aWRpbmcgc29tZSByZXNvdXJjZXMgb24gdGhlICpjbG91ZCogdGhhdCB5b3UgY2FuIGxvZyBpbnRvIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNvdXJzZS4gCgojIyAxLiBDcmVhdGUgYW4gYWNjb3VudCBhdCBJbnN0YW5jZUh1YgoKKkluc3RhbmNlSHViKiBpcyBhIHRvb2wgY3JlYXRlZCBhdCBUaGUgVW5pdmVyc2l0eSBvZiBTaGVmZmllbGQgZm9yIGNyZWF0aW5nIGNsb3VkIHJlc291cmNlcyBmb3IgY29tcHV0aW5nIHByYWN0aWNhbHMuIFlvdSB3aWxsIG5lZWQgdG8gZ28gdG8gW2luc3RhbmNlaHViLmNvbV0oaW5zdGFuY2VodWIuY29tKSBhbmQgY3JlYXRlIGFuIGFjY291bnQuICoqTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIHNhbWUgZW1haWwgYWRkcmVzcyB0aGF0IHlvdSBzaWduZWQtdXAgdG8gdGhlIGNvdXJzZSoqLgoKCiMjIDIuIExhdW5jaCB0aGUgTGFiIAoKQ2hvb3NlIHRoZSBtZW51IG9wdGlvbiAqVmlldyBteSBsYWJzKiBvbiB0aGUgbGVmdC1oYW5kIG1lbnUuIFRoZSBsYWIgKipJbnRyb2R1Y3Rpb24gdG8gdGhlIENvbW1hbmQgTGluZSBmb3IgQmlvaW5mb3JtYXRpY3MqKiBzaG91bGQgYmUgdmlzaWJsZS4gQ2xpY2sgdGhlICpQYXJ0aWNpcGF0ZSogYnV0dG9uLgoKIVtdKGltYWdlcy9pbnN0YW5jZS1odWIxLnBuZykKCiMjIDMuIENvbm5lY3QgdG8gdGhlIGxhYgoKUHJlc3MgdGhlICpTdGFydCBMYWIqIChncmVlbikgYnV0dG9uIGFuZCB3YWl0IHdoaWxzdCB0aGUgbGFiIGxvYWRzLi4uCgohW10oaW1hZ2VzL2luc3RhbmNlLWh1YjIucG5nKQoKT25jZSAqU3RhcnQgTGFiKiBoYXMgYmVlbiByZXBsYWNlZCBieSAqRGlzY29ubmVjdCosIHRoZSAqQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiogdGFiIHdpbGwgYmUgdXBkYXRlZCB3aXRoIGFuIElQIGFkZHJlc3MgZXRjLgoKIVtdKGltYWdlcy9pbnN0YW5jZS1odWIzLnBuZykKCkVudGVyIHRoZSBmb2xsb3dpbmcgYWRkcmVzcyBpbiB5b3VyIHdlYiBicm93c2VyIAoKUmVwbGFjaW5nICoqSVBfQUREUkVTUyoqIHdpdGggdGhlIG51bWJlcnMgbmV4dCB0byAqKkluc3RhbmNlIElQKiogaW4gdGhlICpDb25uZWN0aW9uIEluZm9ybWF0aW9uKiBib3guCgpgYGAKaHR0cDovL0lQX0FERFJFU1M6NjA4MApgYGAKCmUuZy4gCgpgYGAKaHR0cDovLzMuOC4xNDkuMjM6NjA4MApgYGAKCioqRG8gbm90IGNsaWNrIERpc2Nvbm5lY3QqKgoKIyMgNC4gT3BlbiBhIHRlcm1uaW5hbCB3aW5kb3cKCllvdSBzaG91bGQgYmUgcHJlc2VudGVkIHdpdGggYSB1bml4IGRlc2t0b3AgZW52aXJvbm1lbnQgdGhhdCB3ZSBjYW4gdXNlIHRvIGxlYXJuIGFib3V0IHRoZSBjb21tYW5kLWxpbmUgYW5kIHRvb2xzIGZvciBwcm9jZXNzaW5nIFJOQS1zZXEgZGF0YS4KClRvIG9wZW4gYSAqVGVybWluYWwqIChpbiBvcmRlciB0byBlbnRlciBVbml4IGNvbW1hbmRzKSwgdGhlcmUgaXMgYSAiU3RhcnQgbWVudSIgaW4gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBmcm9tIHdoaWNoIHlvdSBjYW4gc2VsZWN0ICpTeXN0ZW0gVG9vbHMqIGFuZCB0aGVuICpMWFRlcm1pbmFsKgoKIVtdKGltYWdlcy90ZXJtaW5hbC1sYXVuY2gucG5nKQoKIyMgNS4gQ2hhbmdlIHVzZXIKCkZpbmFsbHksIGluIG9yZGVyIHRvIGZvbGxvdyB0aGUgbWF0ZXJpYWxzIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB1c2VyIHRoYXQgd2UgbG9nZ2VkIGluIGFzIGZyb20gYHJvb3RgIHRvIGBkY3VzZXJgLgoKVHlwZSB0aGUgY29tbWFuZCBpbnRvIHRoZSB0ZXJtaW5hbCB3aW5kb3cgKipleGFjdGx5KiogYXMgaXQgYXBwZWFycyBiZWxvdwoKYGBgCnN1IC0gZGN1c2VyCmBgYAoKIVtdKGltYWdlcy9jaGFuZ2UtdXNlci5wbmcpCgoKIyBTZXR1cCBvbiB5b3VyIG93biBtYWNoaW5lCgpCb3RoIE1hYyBPU1ggYW5kIFdpbmRvd3MgMTAgaGF2ZSB0aGUgYWJpbGl0eSB0byBydW4gc29tZSBvZiB0aGUgY29tbWFuZHMgcHJlc2VudGVkIGluIHRoaXMgY291cnNlIHRvIG5hdmlnYXRlIGFyb3VuZCBhIGZpbGUgc3lzdGVtLCBjb3B5IGZpbGVzIGFuZCBsaXN0IGRpcmVjdG9yaWVzLiBIb3dldmVyLCB5b3UgbWF5IHByZWZlciB0byBwcmFjdGljZSBpbiBhICJzYWZlIiBlbnZpcm9ubWVudCwgc3VjaCBhcyB0aGF0IHVzZWQgZHVyaW5nIHRoZSB3b3Jrc2hvcC4gRnVydGhlcm1vcmUsIHRoZSBOR1MgdG9vbHMgcHJlc2VudGVkIG1heSBiZSBkaWZmaWN1bHQgdG8gaW5zdGFsbC4gCgpZb3UgY2FuIGxhdW5jaCB0aGUgc2FtZSBjb21wdXRpbmcgZW52aXJvbm1lbnQgb24geW91ciBvd24gbWFjaGluZSB1c2luZyBhIHRvb2wgY2FsbGVkICpEb2NrZXIqLgoKRG9ja2VyIGlzIGFuIG9wZW4gcGxhdGZvcm0gZm9yIGRldmVsb3BlcnMgdG8gYnVpbGQgYW5kIHNoaXAgYXBwbGljYXRpb25zLCB3aGV0aGVyIG9uIGxhcHRvcHMsIHNlcnZlcnMgaW4gYSBkYXRhIGNlbnRlciwgb3IgdGhlIGNsb3VkLgoKLSBPciwgaXQgaXMgYSAocmVsYXRpdmVseSkgcGFpbmxlc3Mgd2F5IGZvciB5b3UgdG8gaW5zdGFsbCBhbmQgdHJ5IG91dCBCaW9pbmZvcm1hdGljcyBzb2Z0d2FyZS4KLSBZb3UgY2FuIHRoaW5rIG9mIGl0IGFzIGFuIGlzb2xhdGVkIGVudmlyb25tZW50IGluc2lkZSB5b3VyIGV4aXNpbmcgb3BlcmF0aW5nIHN5c3RlbSB3aGVyZSB5b3UgY2FuIGluc3RhbGwgYW5kIHJ1biBzb2Z0d2FyZSB3aXRob3V0IG1lc3Npbmcgd2l0aCB0aGUgbWFpbiBPUwogICAgKyBSZWFsbHkgdXNlZnVsIGZvciB0ZXN0aW5nIHNvZnR3YXJlCiAgICArIENsZWFyIGJlbmVmaXRzIGZvciB3b3JraW5nIHJlcHJvZHVjaWJseQotIEluc3RlYWQgb2YganVzdCBkaXN0cmlidXRpbmcgdGhlIGNvZGUgdXNlZCBmb3IgYSBwYXBlciwgeW91IGNhbiBlZmZlY3RpdmVseSBzaGFyZSB0aGUgY29tcHV0ZXIgeW91IGRpZCB0aGUgYW5hbHlzaXMgb24KLSBGb3IgdGhvc2Ugb2YgeW91IHRoYXQgaGF2ZSB1c2VkIFZpcnR1YWwgTWFjaGluZXMsIGl0IGlzIGEgc2ltaWxhciBjb25jZXB0CgoKIyMgSW5zdGFsbGluZyBEb2NrZXIKCgojIyMgTWFjCgotIFtNYWMgT1NYIC0gMTAuMTAuMyBvciBuZXdlcl0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9kb2NrZXItbWFjKQotIFtPbGRlciBNYWNzXShodHRwczovL2Rvd25sb2FkLmRvY2tlci5jb20vbWFjL3N0YWJsZS9Eb2NrZXJUb29sYm94LnBrZykKCiMjIyBXaW5kb3dzCgotIFtXaW5kb3dzIDEwIFByb2Zlc3Npb25hbF0oaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9kb2NrZXItd2luZG93cykKLSBbT3RoZXIgV2luZG93c10oaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL3dpbi9zdGFibGUvRG9ja2VyVG9vbGJveC5leGUpCgpPbmNlIHlvdSBoYXZlIGluc3RhbGxlZCBEb2NrZXIgdXNpbmcgdGhlIGluc3J1Y3Rpb25zIGFib3ZlLCB5b3UgY2FuIG9wZW4gYSB0ZXJtaW5hbCAoTWFjKSBvciBjb21tYW5kIHByb21wdCAoV2luZG93cykgYW5kIHR5cGUgdGhlIGZvbGxvd2luZyB0byBydW4gdGhlIERheSAxIGVudmlyb25tZW50CgpgYGAKZG9ja2VyIHJ1biAtLXJtIC1wIDYwODA6ODAgbWFya2R1bm5pbmcvcm5hc2VxLXRvb2xib3gKYGBgCgpFbnRlcmluZyB0aGUgYWRkcmVzcyBpbiB5b3VyIHdlYiBicm93c2VyIHNob3VsZCBkaXNwbGF5IHRoZSBlbnZpcm9ubWVudAoKYGBgCmh0dHA6Ly9sb2NhbGhvc3Q6NjA4MApgYGAKCgojIyMgVXNpbmcgdGhlIGVudmlyb25tZW50IHRvIGFuYWx5c2UgeW91ciBvd24gZGF0YQoKV2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncywgdGhlIGNvbXB1dGluZyBlbnZpcm9ubWVudCBpcyBpc29sYXRlZCBmcm9tIHlvdXIgb3duIGxhcHRvcDsgd2UgY2FuIG5laXRoZXIgYnJpbmcgZmlsZXMgdGhhdCB3ZSBjcmVhdGUgYmFjayB0byBvdXIgb3duIE9TLCBvciBhbmFseXNlIG91ciBvd24gZGF0YS4KCkhvd2V2ZXIsIGFkZGluZyBhbiBgLXZgIGFyZ3VtZW50IGFsbG93cyBjZXJ0YWluIGZvbGRlcnMgb24geW91ciBvd24gT1MgdG8gYmUgdmlzaWJsZSB3aXRoaW4gdGhlIGVudmlyb21lbnQuIAoKQXNzdW1pbmcgdGhlIGZpbGVzIEkgd2FudCB0byBhbmFseXNlIGFyZSB0byBiZSBmb3VuZCBpbiB0aGUgZm9sZGVyIGBQQVRIX1RPX0ZBU1RRYCwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHdvdWxkIG1hcCB0aGF0IGRpcmVjdG9yeSB0byB0aGUgZm9sZGVyIGAvaG9tZS9kY3VzZXIvcm5hc2VxX2RhdGFgCgpgYGAKZG9ja2VyIHJ1biAtLXJtIC1wIDYwODA6ODAgLXYgL1BBVEhfVE9fRkFTVFEvOi9ob21lL2RjdXNlci9ybmFzZXFfZGF0YSBtYXJrZHVubmluZy9ybmFzZXEtdG9vbGJveApgYGAKCkF0IHRoZSB0ZXJtaW5hbCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc2VlIG91ciBmaWxlcyB3aXRoIHRoZSBgbHNgIGNvbW1hbmQKCmBgYApscyAvaG9tZS9kY3VzZXIvcm5hc2VxX2RhdGEKYGBgCgojIyMgQW5hbHlzaXMgb24gdGhlIFVvUyBjbHVzdGVyCgpBcyBkZXNjcmliZWQgYWJvdmUsIGBkb2NrZXJgIGNhbiBiZSB1c2VkIHRvIHJ1biB0aGUgZW52aXJvbm1lbnQgcHJlc2VudGVkIGluIHRoaXMgY291cnNlIG9uIGEgcGVyc29uYWwgbGFwdG9wLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgZG9ja2VyIHRoYXQgcHJvaGliaXRzIGl0IGJlaW5nIGluc3RhbGxlZCBvbiBhIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIHN5c3RlbS4gQW4gYWx0ZXJuYXRpdmUgaXMgYHNpbmd1bGFyaXR5YCwgd2hpY2ggYWxsb3dzIGNvbXB1dGluZyBlbnZpcm9ubWVudHMgdG8gYmUgZGlzdHJpYnV0ZWQgYXMgYSBzaW5nbGUgaW1hZ2UgZmlsZS4gV2UgaGF2ZSBjcmVhdGVkIHN1Y2ggYSBzaW5ndWxhcml0eSBpbWFnZSBhbmQgbWFkZSBpdCBhdmFpbGFibGUgb24gc2hhcmMgKFRoZSBVbml2ZXJzaXR5IG9mIFNoZWZmaWVsZCdzIEhQQykuCgpGaXJzdGx5LCBsb2dpbiB0byBzaGFyYyBpbiB0aGUgdXN1YWwgbWFubmVyIGFuZCB0aGVuIG9wZW4gYW4gaW50ZXJhY3RpdmUgc2hlbGwuCgpgYGB7YmFzaCBldmFsPUZBTFNFfQpzc2ggVVNFUk5BTUVAc2hhcmMuc2hlZi5hYy51awpxcnNoCmBgYAoKVGhlIHNpbmd1bGFyaXR5IGltYWdlIGlzIGF2YWlsYWJsZSBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9uOi0KCmBgYHtiYXNoIGV2YWw9RkFMU0V9CmxzIC9zaGFyZWQvYmlvaW5mb3JtYXRpY3NfY29yZTEvU2hhcmVkL3NvZnR3YXJlL3Npbmd1bGFyaXR5L2NvbW1hbmRfbGluZV8yMDIwMDIxMi5zaWYKYGBgCgoqKlRoZSBjb21tYW5kcyBwcmVzZW50ZWQgaW4gdGhlIEludHJvZHVjdGlvbiB0byBTaGVsbCBzZWN0aW9uIChlLmcuIGBsc2AsIGBjZGAsIGBwd2RgLi4uKSBhcmUgYWxyZWFkeSBhdmFpbGFibGUgd2hlbiB5b3UgZmlyc3QgbG9naW4gdG8gYHNoYXJjYCoqLiBIb3dldmVyLCB0aGUgdG9vbHMgc3BlY2lmaWMgdG8gTkdTIGFuYWx5c2lzIHdpbGwgcmVxdWlyZSB5b3UgdG8gYWRkIHRoZSBwYXRoIHRvIHRoZSBzaW5ndWxhcml0eSBpbWFnZSBiZWZvcmUgdGhlIGNvbW1hbmQuCgpGb3IgZXhhbXBsZSwgdG8gcnVuIGBmYXN0cWNgIHlvdSBjYW4gbmF2aWdhdGUgdG8geW91ciBkaXJlY3RvcnkgY29udGFpbmluZyB5b3VyIGZhc3RxIGZpbGVzIHdpdGggdGhlIHVzdWFsIGBjZGAgY29tbWFuZC4KCmBgYHtiYXNoIGV2YWw9RkFMU0V9CmNkIC9wYXRoL3RvL3lvdXIvZmFzdHEvZmlsZXMKc2luZ3VsYXJpdHkgZXhlYyAvc2hhcmVkL2Jpb2luZm9ybWF0aWNzX2NvcmUxL1NoYXJlZC9zb2Z0d2FyZS9zaW5ndWxhcml0eS9jb21tYW5kX2xpbmVfMjAyMDAyMTIuc2lmIGZhc3RxYyAqLmZhc3RxLmd6CmBgYAoKT3RoZXIgY29tbWFuZHMgdGhhdCByZXF1aXJlIHlvdSB0byBsaXN0IGdpdmUgdGhlIHBhdGggdG8gdGhlIHNpbmd1bGFyaXR5IGltYWdlIGFyZSBhcyBmb2xsb3dzOi0KCmBgYHtiYXNoIGV2YWw9RkFMU0V9CnNpbmd1bGFyaXR5IGV4ZWMgL3NoYXJlZC9iaW9pbmZvcm1hdGljc19jb3JlMS9TaGFyZWQvc29mdHdhcmUvc2luZ3VsYXJpdHkvY29tbWFuZF9saW5lXzIwMjAwMjEyLnNpZiBtdWx0aXFjCmBgYAoKYGBge2Jhc2ggZXZhbD1GQUxTRX0Kc2luZ3VsYXJpdHkgZXhlYyAvc2hhcmVkL2Jpb2luZm9ybWF0aWNzX2NvcmUxL1NoYXJlZC9zb2Z0d2FyZS9zaW5ndWxhcml0eS9jb21tYW5kX2xpbmVfMjAyMDAyMTIuc2lmIGhpc2F0Mi1idWlsZApgYGAKCgpgYGB7YmFzaCBldmFsPUZBTFNFfQpzaW5ndWxhcml0eSBleGVjIC9zaGFyZWQvYmlvaW5mb3JtYXRpY3NfY29yZTEvU2hhcmVkL3NvZnR3YXJlL3Npbmd1bGFyaXR5L2NvbW1hbmRfbGluZV8yMDIwMDIxMi5zaWYgaGlzYXQyIApgYGAKCmBgYHtiYXNoIGV2YWw9RkFMU0V9CnNpbmd1bGFyaXR5IGV4ZWMgL3NoYXJlZC9iaW9pbmZvcm1hdGljc19jb3JlMS9TaGFyZWQvc29mdHdhcmUvc2luZ3VsYXJpdHkvY29tbWFuZF9saW5lXzIwMjAwMjEyLnNpZiBzYW10b29scyAKYGBgCgpgYGB7YmFzaCBldmFsPUZBTFNFfQpzaW5ndWxhcml0eSBleGVjIC9zaGFyZWQvYmlvaW5mb3JtYXRpY3NfY29yZTEvU2hhcmVkL3NvZnR3YXJlL3Npbmd1bGFyaXR5L2NvbW1hbmRfbGluZV8yMDIwMDIxMi5zaWYgZmVhdHVyZUNvdW50cwpgYGAKCmBgYHtiYXNoIGV2YWw9RkFMU0V9CnNpbmd1bGFyaXR5IGV4ZWMgL3NoYXJlZC9iaW9pbmZvcm1hdGljc19jb3JlMS9TaGFyZWQvc29mdHdhcmUvc2luZ3VsYXJpdHkvY29tbWFuZF9saW5lXzIwMjAwMjEyLnNpZiBzYWxtb24KYGBgCgo=