workflowr
Last updated: 2025-10-14
Checks: 2
0
Knit directory:
DigitalResearchSkillsNetwork/
This reproducible R Markdown
analysis was created with workflowr (version
1.7.1). The Checks tab describes the reproducibility checks
that were applied when the results were created. The Past
versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git
repository, you know the exact version of the code that produced these
results.
Great! You are using Git for version control. Tracking code development
and connecting the code version to the results is critical for
reproducibility.
The results in this page were generated with repository version
2d56bb9 .
See the Past versions tab to see a history of the changes made
to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish or
wflow_git_commit). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
Ignored: .DS_Store
Ignored: .RData
Ignored: .Rhistory
Ignored: analysis/.DS_Store
Ignored: analysis/.RData
Ignored: analysis/.Rhistory
Ignored: analysis/adit/.DS_Store
Ignored: plots/
Ignored: raw/
Ignored: todo.R
Untracked files:
Untracked: analysis/0_test.Rmd
Untracked: analysis/x202504.Rmd
Untracked: analysis/x202505.Rmd
Untracked: analysis/x202505_Workshop (2).Rmd
Untracked: analysis/x202506.Rmd
Untracked: analysis/x202506_stats.Rmd
Untracked: analysis/x202506_tidyverse.Rmd
Untracked: analysis/x202507.Rmd
Untracked: analysis/x202508.Rmd
Unstaged changes:
Deleted: analysis/202504.Rmd
Deleted: analysis/202505.Rmd
Deleted: analysis/202505_Workshop.Rmd
Deleted: analysis/202506.Rmd
Deleted: analysis/202506_stats.Rmd
Deleted: analysis/202506_tidyverse.Rmd
Deleted: analysis/202507.Rmd
Deleted: analysis/202508.Rmd
Modified: workflow.R
Note that any generated files, e.g. HTML, png, CSS, etc., are not
included in this status report because it is ok for generated content to
have uncommitted changes.
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/0_resources.Rmd) and HTML
(docs/0_resources.html) files. If you’ve configured a
remote Git repository (see ?wflow_git_remote), click on the
hyperlinks in the table below to view the files as they were in that
past version.
File
Version
Author
Date
Message
Rmd
2d56bb9
DrThomasOneil
2025-10-14
wflow_publish(c("analysis/0_resources.Rmd", "analysis/index.Rmd",
html
377b249
DrThomasOneil
2025-09-05
Build site.
html
6f8a683
DrThomasOneil
2025-09-04
Build site.
html
19f6841
DrThomasOneil
2025-08-28
Build site.
Rmd
26c0703
DrThomasOneil
2025-08-28
wflow_publish(c("analysis/0_resources.Rmd"))
html
0dd27e2
DrThomasOneil
2025-08-13
Build site.
html
05dd2b2
DrThomasOneil
2025-08-12
Build site.
html
5336148
DrThomasOneil
2025-06-30
Build site.
html
80762c1
DrThomasOneil
2025-05-23
Build site.
html
e794405
DrThomasOneil
2025-05-15
Build site.
Rmd
b102ce1
DrThomasOneil
2025-05-15
wflow_publish(files)
html
fb553e5
DrThomasOneil
2025-05-14
Build site.
html
cff7923
DrThomasOneil
2025-05-07
Build site.
Rmd
ff95f8f
DrThomasOneil
2025-05-07
wflow_publish(files)
html
16a9613
DrThomasOneil
2025-04-30
Build site.
html
862d6b6
DrThomasOneil
2025-04-29
Build site.
html
938818e
DrThomasOneil
2025-04-14
Build site.
html
ed690e6
DrThomasOneil
2025-04-14
Build site.
html
cb886ef
DrThomasOneil
2025-04-10
Build site.
html
f6c0433
YuchenLi
2025-04-09
Build site.
html
8d78b0f
YuchenLi
2025-04-09
Build site.
html
7421f69
DrThomasOneil
2025-04-08
Build site.
html
f2d3385
DrThomasOneil
2025-03-24
update
html
517dcf9
DrThomasOneil
2025-03-24
Build site.
html
6a4432b
DrThomasOneil
2025-03-24
Build site.
html
1f218f3
DrThomasOneil
2025-03-24
Build site.
html
dca90e9
DrThomasOneil
2025-03-24
Build site.
html
1d1c076
DrThomasOneil
2025-03-24
Build site.
html
956ba9b
DrThomasOneil
2025-03-24
Build site.
Rmd
6b72e34
DrThomasOneil
2025-03-24
wflow_publish(c("analysis/*.Rmd"))
html
d600337
DrThomasOneil
2025-03-18
Build site.
html
b537f69
DrThomasOneil
2025-03-18
Build site.
html
b7982e9
DrThomasOneil
2025-03-16
Build site.
html
fc5dd81
DrThomasOneil
2025-03-16
Build site.
html
8e1c1a3
DrThomasOneil
2025-03-16
Build site.
html
36dc5fc
DrThomasOneil
2025-03-03
Build site.
html
49bb28c
DrThomasOneil
2025-03-03
Build site.
html
8258922
DrThomasOneil
2025-03-03
Build site.
html
71646a5
DrThomasOneil
2025-02-27
Build site.
Rmd
c05aafe
DrThomasOneil
2025-02-27
wflow_publish(c("analysis/*.Rmd"))
html
c7f5738
DrThomasOneil
2025-02-24
Build site.
html
79d09b1
DrThomasOneil
2025-02-24
Build site.
html
a5c9f2c
DrThomasOneil
2025-02-24
Build site.
html
ca2c086
DrThomasOneil
2025-02-24
Build site.
html
fca0503
DrThomasOneil
2025-02-24
Build site.
html
af42fba
DrThomasOneil
2025-02-24
Build site.
html
1aeefc7
DrThomasOneil
2025-02-20
Build site.
html
5fe30de
DrThomasOneil
2025-02-20
Build site.
html
5ef4f12
DrThomasOneil
2025-02-11
Build site.
Rmd
4f9c6de
DrThomasOneil
2025-02-11
update book
html
f48f4f0
DrThomasOneil
2025-02-10
Build site.
html
3bfe847
DrThomasOneil
2025-02-10
Build site.
html
b14f3b5
DrThomasOneil
2025-02-10
Build site.
html
bfba3e0
DrThomasOneil
2025-02-07
Build site.
Rmd
b7989a4
DrThomasOneil
2025-02-07
wflow_publish(c("analysis/*.Rmd"))
html
f3d6f87
DrThomasOneil
2025-02-04
Build site.
html
f654b8d
DrThomasOneil
2025-02-04
Build site.
Rmd
e6ea78d
DrThomasOneil
2025-02-04
wflow_publish(c("analysis/*.Rmd"))
html
4968925
DrThomasOneil
2025-01-30
Build site.
Rmd
afccf59
DrThomasOneil
2025-01-30
wflow_publish(c("analysis/*.Rmd"))
html
299ff3d
DrThomasOneil
2025-01-28
Build site.
Rmd
272b312
DrThomasOneil
2025-01-28
wflow_publish(c("analysis/*"))
html
023005d
DrThomasOneil
2025-01-07
Build site.
html
c893d70
DrThomasOneil
2025-01-06
Build site.
Rmd
8eec2ce
DrThomasOneil
2025-01-06
Initial Deployment
html
660b0f8
DrThomasOneil
2025-01-06
Build site.
html
2e79a1d
DrThomasOneil
2025-01-06
Build site.
Rmd
451a21f
DrThomasOneil
2025-01-06
Initial Deployment
We’ll drop resources that we find
that might be useful to others.
Coding and Single cell crash course
From a single cell and spatial analysis course by Cold Spring Harbour
Laboratory, these resources are great for both total beginners to coding
and analysis to those starting to analyse their own data.
This is the Basics
of Linux/Shell and R where you how to navigate through your Terminal
and the start of your R journey.
Processing
scRNA and Visium HD can be daunting but this breaks down all the
steps you need to clean, cluster, and visualise your data, as well as
the theory behind it.
The purpose of the Sydney Precision Data Science Centre is to engage
in high quality and transformational multidisciplinary research and to
provide a research hub to all interdisciplinary researchers in
data-intensive science.
We generate innovative, fit-for-purpose applied analytical
methodologies that are critical to knowledge discovery through the deep
integration of various quantitative disciplines and research
paradigms.
Sign
up to the network to receive emails on upcoming webinars and
events.
Computational Genomics with R is an exceptionally comprehensive
resource for biomedical bioinformatics. It covers a broad range of
topics—statistics, machine learning, sequencing data processing, and
more—while providing both code examples and clear explanations. Although
it may not be the most accessible starting point for wet-lab
researchers, it serves as an invaluable reference for deeper
explorations of bioinformatic analyses.
10X Analysis Resources
10X Genomics are a unique company, in that they provide a
lot of supporting materials. In the drop down below, we have listed
a series of resources that 10X have provided, including how-to videos
and tutorials.
Drop-down
Xenium In situ
Downloads and documentation
Webinars and workshops
Visium HD
Downloads and documentation
Webinars and workshops
Stretchly is an open-source app designed to
encourage healthy work habits by prompting regular short (30-second) and
long (20-minute) breaks. I’ve found it invaluable for maintaining focus
and preventing burnout. It’s highly customizable, allowing you to tailor
prompts to your needs.
roadmap.sh provides structured learning pathways for
various tech-related skills, from Data Science to DevOps. The Data
Science and AI roadmap outlines essential topics such as mathematics,
statistics, and coding, along with curated free and paid learning
resources. These roadmaps are community-driven and frequently updated,
making them a great guide for self-paced learning.
LinkedIn Learning offers a vast library of online
courses covering data analysis, programming (including R and Python),
statistics, research skills, and professional development. There is a
short R
for Data Science course that is quite nice.
You should have access to LinkedIn Learning through your University
email. Otherwise, WIMR staff can apply for a license through WIMR.
Interactive R learning UI
learnr is a package that you
can install which provides a nice little UI if you want to practice
basicR skills and prefer some interactivity.
ggplot2 book
ggplot2:Elegant
Graphics for Data Analysis is a nice, comprehensive handbook for
graphing using ggplot2. It covers the basic layout, different graph
types, customizing elements such as colours, group overlays,
annotations, etc.
LS0tCnRpdGxlOiAiRXh0cmEgUmVzb3VyY2VzIgpvdXRwdXQ6CiAgd29ya2Zsb3dyOjp3Zmxvd19odG1sOgogICAgdG9jOiBubwotLS0KCjxkZXYgY2xhc3M9ImhpbnQtaW5mbyI+IAoqKldlJ2xsIGRyb3AgcmVzb3VyY2VzIHRoYXQgd2UgZmluZCB0aGF0IG1pZ2h0IGJlIHVzZWZ1bCB0byBvdGhlcnMuKioKPC9kZXY+CgojIyMgKipDb2RpbmcgYW5kIFNpbmdsZSBjZWxsIGNyYXNoIGNvdXJzZSoqCgpGcm9tIGEgc2luZ2xlIGNlbGwgYW5kIHNwYXRpYWwgYW5hbHlzaXMgY291cnNlIGJ5IENvbGQgU3ByaW5nIEhhcmJvdXIgTGFib3JhdG9yeSwgdGhlc2UgcmVzb3VyY2VzIGFyZSBncmVhdCBmb3IgYm90aCB0b3RhbCBiZWdpbm5lcnMgdG8gY29kaW5nIGFuZCBhbmFseXNpcyB0byB0aG9zZSBzdGFydGluZyB0byBhbmFseXNlIHRoZWlyIG93biBkYXRhLgoKVGhpcyBpcyB0aGUgW0Jhc2ljcyBvZiBMaW51eC9TaGVsbCBhbmQgUl0oaHR0cHM6Ly9naXRodWIuY29tL3dmbHlubnkvY3NobC1iaW9pbmYtY3Jhc2gtY291cnNlL3dpa2kpIHdoZXJlIHlvdSBob3cgdG8gbmF2aWdhdGUgdGhyb3VnaCB5b3VyIFRlcm1pbmFsIGFuZCB0aGUgc3RhcnQgb2YgeW91ciBSIGpvdXJuZXkuCgpbUHJvY2Vzc2luZyBzY1JOQSBhbmQgVmlzaXVtIEhEXShodHRwczovL2dpdGh1Yi5jb20vbmF2aW5sYWJjb2RlL0NTSExfd29ya3Nob3BzL3dpa2kpIGNhbiBiZSBkYXVudGluZyBidXQgdGhpcyBicmVha3MgZG93biBhbGwgdGhlIHN0ZXBzIHlvdSBuZWVkIHRvIGNsZWFuLCBjbHVzdGVyLCBhbmQgdmlzdWFsaXNlIHlvdXIgZGF0YSwgYXMgd2VsbCBhcyB0aGUgdGhlb3J5IGJlaGluZCBpdC4KCiMjIyBbU3lkbmV5IFByZWNpc2lvbiBEYXRhIFNjaWVuY2UgQ2VudHJlXShodHRwczovL3NwZHMuc3lkbmV5LmVkdS5hdS8pCgpUaGUgcHVycG9zZSBvZiB0aGUgU3lkbmV5IFByZWNpc2lvbiBEYXRhIFNjaWVuY2UgQ2VudHJlIGlzIHRvIGVuZ2FnZSBpbiBoaWdoIHF1YWxpdHkgYW5kIHRyYW5zZm9ybWF0aW9uYWwgbXVsdGlkaXNjaXBsaW5hcnkgcmVzZWFyY2ggYW5kIHRvIHByb3ZpZGUgYSByZXNlYXJjaCBodWIgdG8gYWxsIGludGVyZGlzY2lwbGluYXJ5IHJlc2VhcmNoZXJzIGluIGRhdGEtaW50ZW5zaXZlIHNjaWVuY2UuCgpXZSBnZW5lcmF0ZSBpbm5vdmF0aXZlLCBmaXQtZm9yLXB1cnBvc2UgYXBwbGllZCBhbmFseXRpY2FsIG1ldGhvZG9sb2dpZXMgdGhhdCBhcmUgY3JpdGljYWwgdG8ga25vd2xlZGdlIGRpc2NvdmVyeSB0aHJvdWdoIHRoZSBkZWVwIGludGVncmF0aW9uIG9mIHZhcmlvdXMgcXVhbnRpdGF0aXZlIGRpc2NpcGxpbmVzIGFuZCByZXNlYXJjaCBwYXJhZGlnbXMuCgpbU2lnbiB1cCB0byB0aGUgbmV0d29ya10oaHR0cHM6Ly9mb3Jtcy5vZmZpY2UuY29tL1BhZ2VzL1Jlc3BvbnNlUGFnZS5hc3B4P2lkPWZ1T3pnbkdCWFVpeEN6amE1LTBVcUt6cXVZYVp5eUZDa2puWUJsMkRpNGRVTmpoWVJsZENTVEZDVkVaVU4wVkpRMGM0VERsRVNrSkNSUzR1KSB0byByZWNlaXZlIGVtYWlscyBvbiB1cGNvbWluZyB3ZWJpbmFycyBhbmQgZXZlbnRzLiAKCiMjIyBbQ29tcHV0YXRpb25hbCBHZW5vbWljcyB3aXRoIFJdKGh0dHBzOi8vY29tcGdlbm9tci5naXRodWIuaW8vYm9vay8pCgpDb21wdXRhdGlvbmFsIEdlbm9taWNzIHdpdGggUiBpcyBhbiBleGNlcHRpb25hbGx5IGNvbXByZWhlbnNpdmUgcmVzb3VyY2UgZm9yIGJpb21lZGljYWwgYmlvaW5mb3JtYXRpY3MuIEl0IGNvdmVycyBhIGJyb2FkIHJhbmdlIG9mIHRvcGljc+KAlHN0YXRpc3RpY3MsIG1hY2hpbmUgbGVhcm5pbmcsIHNlcXVlbmNpbmcgZGF0YSBwcm9jZXNzaW5nLCBhbmQgbW9yZeKAlHdoaWxlIHByb3ZpZGluZyBib3RoIGNvZGUgZXhhbXBsZXMgYW5kIGNsZWFyIGV4cGxhbmF0aW9ucy4gQWx0aG91Z2ggaXQgbWF5IG5vdCBiZSB0aGUgbW9zdCBhY2Nlc3NpYmxlIHN0YXJ0aW5nIHBvaW50IGZvciB3ZXQtbGFiIHJlc2VhcmNoZXJzLCBpdCBzZXJ2ZXMgYXMgYW4gaW52YWx1YWJsZSByZWZlcmVuY2UgZm9yIGRlZXBlciBleHBsb3JhdGlvbnMgb2YgYmlvaW5mb3JtYXRpYyBhbmFseXNlcy4KCiMjIyAqKjEwWCBBbmFseXNpcyBSZXNvdXJjZXMqKgoKMTBYIEdlbm9taWNzIGFyZSBhIHVuaXF1ZSBjb21wYW55LCBpbiB0aGF0IHRoZXkgcHJvdmlkZSAqYSBsb3QqIG9mIHN1cHBvcnRpbmcgbWF0ZXJpYWxzLiBJbiB0aGUgZHJvcCBkb3duIGJlbG93LCB3ZSBoYXZlIGxpc3RlZCBhIHNlcmllcyBvZiByZXNvdXJjZXMgdGhhdCAxMFggaGF2ZSBwcm92aWRlZCwgaW5jbHVkaW5nIGhvdy10byB2aWRlb3MgYW5kIHR1dG9yaWFscy4gCgo8ZGV0YWlscz48c3VtbWFyeT4qKkRyb3AtZG93bioqPC9zdW1tYXJ5PjxkaXY+CgojIyMjIFhlbml1bSBJbiBzaXR1CgoqKkRvd25sb2FkcyBhbmQgZG9jdW1lbnRhdGlvbioqCgotIFtYZW5pdW0gQW5hbHlzaXMgT3ZlcnZpZXddKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLzZzSnRDeG5nd09meFJ5SzN3c3ZoMWZ5cmI0UT9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKLSBbWGVuaXVtIE9uYm9hcmQgQW5hbHlzaXNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL3I3ODFDeW9qeFFUTDJnRVJrY1FpR2Z4SUVMYz9kb21haW49MTB4Z2Vub21pY3MuY29tKSwgW1hlbml1bSBSYW5nZXJdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLy1RMEJDenZreVZDNHczdkE5Q0tzWmY5dVRJcD9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKLSBbWGVuaXVtIEV4cGxvcmVyXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9zUjRrQ0FOcGdqQ0VsZ016MkNRdGtmR3VRbGg/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkKCioqV2ViaW5hcnMgYW5kIHdvcmtzaG9wcyoqCgotIFtEZW15c3RpZnlpbmcgc2luZ2xlLWNlbGwgYW5kIHNwYXRpYWwgc2VxdWVuY2luZyBkYXRhIGFuYWx5c2lzOiBUaGUgcGF0aCB0byBtYWtpbmcgYmlvbG9naWNhbCBkaXNjb3ZlcmllcyByb3V0aW5lXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy81d0gxQ0JOcWpsQzhSMTNPQnMxdUdmMmV5OW8/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkKCi0gW1hlbml1bTogU3BhdGlhbCBhbmFseXNpcyBvZiBsdW5nIGNhbmNlcnMgcmV2ZWFscyBoZXRlcm9nZW5laXR5IGluIHR1bW9yIG1pY3JvLWVudmlyb25tZW50c10oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvQ0RxaENEMXZscFQzSjFRazBmUkNtZmpJYWR5P2RvbWFpbj0xMHhnZW5vbWljcy5jb20pCgotIFtYZW5pdW0gdG8gdW5yYXZlbCB0dW1vci1pbW11bmUgbWljcm9lbnZpcm9ubWVudCBkdXJpbmcgbGVwdG9tZW5pbmdlYWwgbWV0YXN0YXNpc10oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvNkZRZ0NFOHdtcnRwMG1LTk1JeEYxZjd6WEZhP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pCgotIFtYZW5pdW0gNWsgV2ViaW5hciAtIE11bHRpbW9kYWwgc3BhdGlhbCByZWNvbnN0cnVjdGlvbiBvZiBhdXRvaW1tdW5lIGRpc2Vhc2VzIHdpdGggNSwwMDAtZ2VuZSBhc3NheXNdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL1JQWF9DR3Ywb3lDQU9tb1FHU3JIUmZCSVF4aD9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKIyMjIyBWaXNpdW0gSEQKCioqRG93bmxvYWRzIGFuZCBkb2N1bWVudGF0aW9uKioKCi0gW1Zpc2l1bSBBbmFseXNpcyBPdmVydmlld10oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvWVVKeENKeUJyR2ZLQVJQRDVIS0lLZnlmb2JGP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pCgotIFtTcGFjZSBSYW5nZXJdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL2lCRmpDSzFEdktUNE1sMEdtQ2tTbWY1cEdhVz9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKLSAqKkNsb3VkIEFuYWx5c2lzKioKCiAgLSBbQ2xvdWQgQW5hbHlzaXMgT3ZlcnZpZXddKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL0hUTFhDTDdFd01mUXdBNVo0U1lUMGZ5eGdKVT9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKICAtIFtDbG91ZCBBbmFseXNpcyBTdXBwb3J0IERvY3VtZW50YXRpb25dKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL0RXWkdDTXdHeE90emtnR0FXSXFVV2Y4V2dYNj9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKICAtIFtXYWxrdGhyb3VnaCBUdXRvcmlhbCAod2l0aCBzbWFsbCBkZW1vIGRhdGFzZXQpXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9VNDhzQ05MSnlRVWpQQTFHWFUzY1pmeThBS3M/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkgCgotIFtMb3VwZSBCcm93c2VyXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9KUVdoQ09NS3pWVHZaSm95NEM5ZjRmR3MteUs/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkKCiAgLSBbVHV0b3JpYWxzXShodHRwczovL3VybC5hdS5tLm1pbWVjYXN0cHJvdGVjdC5jb20vcy9DVlFqQ1A3TEFYZjNOT3FrTWZKaHBmeEV2U0w/ZG9tYWluPTEweGdlbm9taWNzLmNvbSkKCioqV2ViaW5hcnMgYW5kIHdvcmtzaG9wcyoqCgotIFtEaXNjb3ZlciBzcGF0aWFsIGluc2lnaHRzIHdpdGggaW50dWl0aXZlIGFuYWx5c2lzIHRvb2xzIGZvciBWaXNpdW0gSEQgZGF0YV0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvSjdLQ0NRbk1CWmZvbDhteXJDbGl4ZkdRR1kwP2RvbWFpbj0xMHhnZW5vbWljcy5jb20pCgotIFtEYXRhLWRyaXZlbiBkaXNjb3Zlcnkgd2l0aCBWaXNpdW0gU3BhdGlhbCBHZW5lIEV4cHJlc3Npb24gZm9yIEZGUEVdKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zL2ZtX3BDUk9ORDJ1NTBKOHpCSFZzcWYxRTZnZT9kb21haW49MTB4Z2Vub21pY3MuY29tKQoKLSBbU3BhdGlhbCB0cmFuc2NyaXB0b21pY3MgZGF0YSBhbmFseXNpcyBpbiBQeXRob25dKGh0dHBzOi8vdXJsLmF1Lm0ubWltZWNhc3Rwcm90ZWN0LmNvbS9zLzA5UnBDVkFSS2dDZ2s3MVI5Zm90UmZFc3dEcj9kb21haW49Z2l0aHViLmNvbSkKCi0gW1Zpc2l1bSBIRCBCaW9pbmZvcm1hdGljcyBib290Y2FtcDogSGFuZHMtb24gVmlzaXVtIEhEIGRhdGEgdmlzdWFsaXphdGlvbl0oaHR0cHM6Ly91cmwuYXUubS5taW1lY2FzdHByb3RlY3QuY29tL3MvTWV5Z0NXTFZYa1VEWDJ2V0d1TXVWZm85Nm14P2RvbWFpbj0xMHhnZW5vbWljcy5jb20pCgo8L2Rpdj48L2RldGFpbHM+CgojIyMgW1N0cmV0Y2hseV0oaHR0cHM6Ly9ob3ZhbmNpay5uZXQvc3RyZXRjaGx5LykKCioqU3RyZXRjaGx5KiogaXMgYW4gb3Blbi1zb3VyY2UgYXBwIGRlc2lnbmVkIHRvIGVuY291cmFnZSBoZWFsdGh5IHdvcmsgaGFiaXRzIGJ5IHByb21wdGluZyByZWd1bGFyIHNob3J0ICgzMC1zZWNvbmQpIGFuZCBsb25nICgyMC1taW51dGUpIGJyZWFrcy4gSeKAmXZlIGZvdW5kIGl0IGludmFsdWFibGUgZm9yIG1haW50YWluaW5nIGZvY3VzIGFuZCBwcmV2ZW50aW5nIGJ1cm5vdXQuIEl04oCZcyBoaWdobHkgY3VzdG9taXphYmxlLCBhbGxvd2luZyB5b3UgdG8gdGFpbG9yIHByb21wdHMgdG8geW91ciBuZWVkcy4KCiMjIyBbcm9hZG1hcC5zaF0oaHR0cHM6Ly9yb2FkbWFwLnNoKQoKKipyb2FkbWFwLnNoKiogcHJvdmlkZXMgc3RydWN0dXJlZCBsZWFybmluZyBwYXRod2F5cyBmb3IgdmFyaW91cyB0ZWNoLXJlbGF0ZWQgc2tpbGxzLCBmcm9tIERhdGEgU2NpZW5jZSB0byBEZXZPcHMuIFRoZSBEYXRhIFNjaWVuY2UgYW5kIEFJIHJvYWRtYXAgb3V0bGluZXMgZXNzZW50aWFsIHRvcGljcyBzdWNoIGFzIG1hdGhlbWF0aWNzLCBzdGF0aXN0aWNzLCBhbmQgY29kaW5nLCBhbG9uZyB3aXRoIGN1cmF0ZWQgZnJlZSBhbmQgcGFpZCBsZWFybmluZyByZXNvdXJjZXMuIFRoZXNlIHJvYWRtYXBzIGFyZSBjb21tdW5pdHktZHJpdmVuIGFuZCBmcmVxdWVudGx5IHVwZGF0ZWQsIG1ha2luZyB0aGVtIGEgZ3JlYXQgZ3VpZGUgZm9yIHNlbGYtcGFjZWQgbGVhcm5pbmcuCgojIyMgW0xpbmtlZEluIExlYXJuaW5nXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vbGVhcm5pbmcvKQoKKipMaW5rZWRJbiBMZWFybmluZyoqIG9mZmVycyBhIHZhc3QgbGlicmFyeSBvZiBvbmxpbmUgY291cnNlcyBjb3ZlcmluZyBkYXRhIGFuYWx5c2lzLCBwcm9ncmFtbWluZyAoaW5jbHVkaW5nIFIgYW5kIFB5dGhvbiksIHN0YXRpc3RpY3MsIHJlc2VhcmNoIHNraWxscywgYW5kIHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudC4gVGhlcmUgaXMgYSBzaG9ydCBbUiBmb3IgRGF0YSBTY2llbmNlXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vbGVhcm5pbmctbG9naW4vc2hhcmU/YWNjb3VudD0yMTk2MjA0JmZvcmNlQWNjb3VudD1mYWxzZSZyZWRpcmVjdD1odHRwcyUzQSUyRiUyRnd3dy5saW5rZWRpbi5jb20lMkZsZWFybmluZyUyRnItZm9yLWRhdGEtc2NpZW5jZS1hbmFseXNpcy1hbmQtdmlzdWFsaXphdGlvbiUzRnRyayUzRHNoYXJlX2VudF91cmwlMjZzaGFyZUlkJTNEZ1ZFQnJZMU5TcWVKUXFCYVF2ek9MUSUyNTNEJTI1M0QpIGNvdXJzZSB0aGF0IGlzIHF1aXRlIG5pY2UuIAoKWW91IHNob3VsZCBoYXZlIGFjY2VzcyB0byBMaW5rZWRJbiBMZWFybmluZyB0aHJvdWdoIHlvdXIgVW5pdmVyc2l0eSBlbWFpbC4gT3RoZXJ3aXNlLCBXSU1SIHN0YWZmIGNhbiBhcHBseSBmb3IgYSBsaWNlbnNlIHRocm91Z2ggV0lNUi4gCgojIyMgU3lkbmV5IEluZm9ybWF0aWNzIEh1YiAKClN5ZG5leSBJbmZvcm1hdGljcyBIdWIgb2ZmZXJzIFt0cmFpbmluZyB3b3Jrc2hvcHNdKGh0dHBzOi8vd3d3LnN5ZG5leS5lZHUuYXUvcmVzZWFyY2gvZmFjaWxpdGllcy9zeWRuZXktaW5mb3JtYXRpY3MtaHViL3dvcmtzaG9wcy1hbmQtdHJhaW5pbmcvdHJhaW5pbmctY2FsZW5kYXIuaHRtbCkgcmVndWxhcmx5IG9uIHJlc2VhcmNoIGRhdGEgbWFuYWdlbWVudCwgc3RhdGlzdGljYWwgbWV0aG9kcywgYW5kIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nLiBUaGVzZSBhcmUgbW9yZSBnZW5lcmFsIG1ldGhvZHMgdGhhdCBub3Qgb25seSBhcHBseSB0byBiaW9tZWRpY2FsIHJlc2VhcmNoLCBidXQgbWF5IHByb3ZpZGUgaW5zcGlyYXRpb24gb3IgZ29vZCBmdW5kYW1lbnRhbCBrbm93bGVkZ2Ugb24gdGhlIGFuYWx5dGljYWwgbWV0aG9kcyB3ZSB1c2UuCgojIyMgSW50ZXJhY3RpdmUgUiBsZWFybmluZyBVSQoKW2xlYXJucl0ocnN0dWRpby5naXRodWIuaW8vbGVhcm5yKSBpcyBhIHBhY2thZ2UgdGhhdCB5b3UgY2FuIGluc3RhbGwgd2hpY2ggcHJvdmlkZXMgYSBuaWNlIGxpdHRsZSBVSSBpZiB5b3Ugd2FudCB0byBwcmFjdGljZSBiYXNpY1Igc2tpbGxzIGFuZCBwcmVmZXIgc29tZSBpbnRlcmFjdGl2aXR5LgoKIyMjIGdncGxvdDIgYm9vawoKW2dncGxvdDI6RWxlZ2FudCBHcmFwaGljcyBmb3IgRGF0YSBBbmFseXNpc10oaHR0cHM6Ly9nZ3Bsb3QyLWJvb2sub3JnL2ludHJvZHVjdGlvbikgaXMgYSBuaWNlLCBjb21wcmVoZW5zaXZlIGhhbmRib29rIGZvciBncmFwaGluZyB1c2luZyBnZ3Bsb3QyLiBJdCBjb3ZlcnMgdGhlIGJhc2ljIGxheW91dCwgZGlmZmVyZW50IGdyYXBoIHR5cGVzLCBjdXN0b21pemluZyBlbGVtZW50cyBzdWNoIGFzIGNvbG91cnMsIGdyb3VwIG92ZXJsYXlzLCBhbm5vdGF0aW9ucywgZXRjLiAKCg==