From b80f0c7958b891f1aec324555be27d2ccebe8f63 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Mon, 21 Jun 2021 07:32:47 -0600
Subject: [PATCH] markdown lint edits

---
 .markdownlint.yml                         | 10 +++-
 docs/Developer-Basics.md                  |  2 +-
 docs/Functional-PSHA.md                   | 28 +++++----
 docs/Ground-Motion-Models.md              | 18 ++++--
 docs/Logic-Trees-&-Uncertainty.md         |  3 +-
 docs/Magnitude-Frequency-Distributions.md | 69 ++++++++++++++---------
 docs/Model Editions.md                    |  5 +-
 docs/Model-Files.md                       | 17 +++---
 docs/Model-Structure.md                   |  2 +-
 docs/README.md                            | 16 ++++--
 docs/Rupture-Scaling-Relations.md         |  5 +-
 docs/Site-Specification.md                | 13 ++---
 docs/Source-Types.md                      | 54 +++++++++++-------
 13 files changed, 143 insertions(+), 99 deletions(-)

diff --git a/.markdownlint.yml b/.markdownlint.yml
index d2b7b5483..865f20520 100644
--- a/.markdownlint.yml
+++ b/.markdownlint.yml
@@ -14,6 +14,12 @@ MD013:
   heading_line_length: 100
   # Number of characters for code blocks
   code_block_line_length: 100
-  # Line length requirement disabled for
-  code_blocks: false
+  # Exclude tables
   tables: false
+  # Exclude code blocks
+  code_blocks: false
+
+# MD033/no-inline-html - Inline HTML
+MD033:
+  # Allowed elements
+  allowed_elements: [ br, sup ]
diff --git a/docs/Developer-Basics.md b/docs/Developer-Basics.md
index 4f222768d..51cf8c2cd 100644
--- a/docs/Developer-Basics.md
+++ b/docs/Developer-Basics.md
@@ -56,5 +56,5 @@ Eclipse provides automatic compilation, syntax highlighting, and integration wit
 other useful features. To build or modify *nshmp-haz* using [Eclipse](http://www.eclipse.org/),
 install the [Eclipse IDE for Java Developers](https://www.eclipse.org/downloads/packages/) or
 [Eclipse IDE for Enterprise Java and Web Developers](https://www.eclipse.org/downloads/packages/),
-if you plan on developing web services. Import the project into Eclipse: `File > Import > 
+if you plan on developing web services. Import the project into Eclipse: `File > Import >
 Gradle > Existing Gradle Project`
diff --git a/docs/Functional-PSHA.md b/docs/Functional-PSHA.md
index 87d3897ff..726864a1d 100644
--- a/docs/Functional-PSHA.md
+++ b/docs/Functional-PSHA.md
@@ -1,4 +1,6 @@
-### Abstract
+# Functional PSHA
+
+## Abstract
 
 Probabilistic seismic hazard analysis (PSHA; Cornell, 1968) is elegant in its relative simplicity.
 However, in the more than 40-years since its publication, the methodology has come to be applied
@@ -18,7 +20,7 @@ intermediate results as immutable objects, making it easier to: chain actions to
 intermediate data or results that may still be relevant (e.g. as in a deaggregation); and leverage
 the concurrency supported by many modern programming languages.
 
-#### Traditional PSHA formulation (after Baker, 2013):
+## Traditional PSHA formulation (after Baker, 2013)
 
 ![image](images/psha-formula.png "PSHA formulation of Baker (2013)")
 Briefly, the rate, *λ*, of exceeding an intensity measure, *IM*, level may be computed as a
@@ -39,7 +41,7 @@ more than magnitude and distance, including, but not limited to:
 * __Fault geometry__ (e.g. dip, width, rupture depth, hypocentral depth)
 * __Site characteristics__ (e.g. basin depth terms, site type or Vs30 value)
 
-#### Simple, yes, but used for so much more…
+## Simple, yes, but used for so much more…
 
 While this formulation is relatively straightforward and is typically presented with examples for
 a single site, using a single GMM, and a nominal number of sources, modern PSHAs commonly include:
@@ -56,7 +58,7 @@ a single site, using a single GMM, and a nominal number of sources, modern PSHAs
 * Source models that do not adhere to the traditional formulation (e.g. cluster models of the NSHM).
 * Logic trees of ground motion models.
 
-#### And further extended to support…
+## And further extended to support…
 
 * Response Spectra, Conditional Mean Spectra – multiple intensity measure types (IMTs; e.g. PGA,
   PGD, PGV, multiple SAs)
@@ -65,11 +67,12 @@ a single site, using a single GMM, and a nominal number of sources, modern PSHAs
 * Maps – many thousands of sites
 * Uncertainty analyses
 
-#### How are such calculations managed?
+## How are such calculations managed?
 
 * PSHA codes typically compute hazard in a linear fashion, looping over all relevant sources for
   a site.
 * Adding additional GMMs, logic trees, IMT’s, and sites is addressed with more, outer loops:
+
 ```PHP
 foreach IMT {
     foreach Site {
@@ -83,10 +86,11 @@ foreach IMT {
     }
 }
 ```
+
 * Support for secondary analyses, such as deaggregation is supplied by a separate code or codes
   and can require repeating many of the steps performed to generate an initial hazard curve.
 
-#### What about scaleability, maintenance, and performance?
+## What about scaleability, maintenance, and performance?
 
 * Although scaleability can be addressed for secondary products, such as maps, by distributing
   individual site calculations over multiple processors and threads, it is often difficult to
@@ -98,9 +102,9 @@ foreach IMT {
 * Multiple codes repeating identical tasks invite error and complicate maintenance by multiple
   individuals.
 
-#### Enter functional programming…
+## Enter functional programming…
 
-* http://en.wikipedia.org/wiki/Functional_programming
+* <http://en.wikipedia.org/wiki/Functional_programming>
 * Functional programming languages have been around for some time (e.g. Haskell, Lisp, R), and
   fundamental aspects of functional programming/design are common in many languages. For example,
   a cornerstone of the functional paradigm is the anonymous (or lambda) function; in Matlab, one
@@ -110,7 +114,7 @@ foreach IMT {
   popularity of the functional style, Java 8 recently added constructs in the form of the function
   and streaming APIs, and libraries exists for other languages.
 
-#### How do PSHA and related calculations leverage such an approach?
+## How do PSHA and related calculations leverage such an approach?
 
 Break the traditional PSHA formulation down into discrete steps and preserve the data associated
 with each step:
@@ -132,7 +136,7 @@ The functional pipeline can be processed stepwise:
 
 **Need a response spectra?** Spawn more calculations, one for each IMT, at step 2.
 
-#### Benefits:
+## Benefits
 
 * It’s possible to build a single calculation pipeline that will handle a standard hazard curve
   calculation and all of its extensions without repetition.
@@ -141,12 +145,12 @@ The functional pipeline can be processed stepwise:
 * Can add or remove transforms or data at any point in the pipeline, or build new pipelines
   without adversely affecting existing code.
 
-#### Drawbacks:
+## Drawbacks
 
 * Greater memory requirements.
 * Additional (processor) work to manage the flow of calculation steps.
 
-#### References
+## References
 
 * Baker J.W. (2013). An Introduction to Probabilistic Seismic Hazard Analysis (PSHA), White Paper,
   Version 2.0, 79 pp.
diff --git a/docs/Ground-Motion-Models.md b/docs/Ground-Motion-Models.md
index 91aec294a..82f109b62 100644
--- a/docs/Ground-Motion-Models.md
+++ b/docs/Ground-Motion-Models.md
@@ -97,11 +97,16 @@ TODO
 | [Tavakoli & Pezeshk, 2005](http://dx.doi.org/10.1785/0120050030) | TP_05<br>TP_05_AB<br>TP_05_J | not specified | Mean values clamped |
 | [Toro et al., 1997](http://dx.doi.org/10.1785/gssrl.68.1.41)<br>[Toro, 2002](http://www.ce.memphis.edu/7137/PDFs/attenuations/Toro_2001_(modification_1997).pdf) | TORO_97_MB<br>TORO_97_MW | not specified | Mean values clamped |
 
-<a id="one-nga-east-median-model-ids"></a>
-:one: NGA-East Median Model IDs: NGA_EAST_USGS_1, NGA_EAST_USGS_2, NGA_EAST_USGS_3, NGA_EAST_USGS_4, NGA_EAST_USGS_5, NGA_EAST_USGS_6, NGA_EAST_USGS_7, NGA_EAST_USGS_8, NGA_EAST_USGS_9, NGA_EAST_USGS_10, NGA_EAST_USGS_11, NGA_EAST_USGS_12, NGA_EAST_USGS_13, NGA_EAST_USGS_14, NGA_EAST_USGS_15, NGA_EAST_USGS_16, NGA_EAST_USGS_17
-
-<a id="one-nga-east-seed-model-ids"></a>
-:two: NGA-East Seed Model IDs: NGA_EAST_SEED_1CCSP, NGA_EAST_SEED_1CVSP, NGA_EAST_SEED_2CCSP, NGA_EAST_SEED_2CVSP, NGA_EAST_SEED_B_A04, NGA_EAST_SEED_B_AB14, NGA_EAST_SEED_B_AB95, NGA_EAST_SEED_B_BCA10D, NGA_EAST_SEED_B_BS11, NGA_EAST_SEED_B_SGD02, NGA_EAST_SEED_FRANKEL, NGA_EAST_SEED_GRAIZER, NGA_EAST_SEED_GRAIZER16, NGA_EAST_SEED_GRAIZER17, NGA_EAST_SEED_HA15, NGA_EAST_SEED_PEER_EX, NGA_EAST_SEED_PEER_GP, NGA_EAST_SEED_PZCT15_M1SS, NGA_EAST_SEED_PZCT15_M2ES, NGA_EAST_SEED_SP15, NGA_EAST_SEED_SP16, NGA_EAST_SEED_YA15
+1. NGA-East Median Model IDs: NGA_EAST_USGS_1, NGA_EAST_USGS_2, NGA_EAST_USGS_3, NGA_EAST_USGS_4,
+   NGA_EAST_USGS_5, NGA_EAST_USGS_6, NGA_EAST_USGS_7, NGA_EAST_USGS_8, NGA_EAST_USGS_9,
+   NGA_EAST_USGS_10, NGA_EAST_USGS_11, NGA_EAST_USGS_12, NGA_EAST_USGS_13, NGA_EAST_USGS_14,
+   NGA_EAST_USGS_15, NGA_EAST_USGS_16, NGA_EAST_USGS_17
+2. NGA-East Seed Model IDs: NGA_EAST_SEED_1CCSP, NGA_EAST_SEED_1CVSP, NGA_EAST_SEED_2CCSP,
+   NGA_EAST_SEED_2CVSP, NGA_EAST_SEED_B_A04, NGA_EAST_SEED_B_AB14, NGA_EAST_SEED_B_AB95,
+   NGA_EAST_SEED_B_BCA10D, NGA_EAST_SEED_B_BS11, NGA_EAST_SEED_B_SGD02, NGA_EAST_SEED_FRANKEL,
+   NGA_EAST_SEED_GRAIZER, NGA_EAST_SEED_GRAIZER16, NGA_EAST_SEED_GRAIZER17, NGA_EAST_SEED_HA15,
+   NGA_EAST_SEED_PEER_EX, NGA_EAST_SEED_PEER_GP, NGA_EAST_SEED_PZCT15_M1SS,
+   NGA_EAST_SEED_PZCT15_M2ES, NGA_EAST_SEED_SP15, NGA_EAST_SEED_SP16, NGA_EAST_SEED_YA15
 
 ## Subduction GMMs  
 
@@ -146,7 +151,8 @@ TODO
 
 ## Auxilliary Models
 
-Auxilliary models are not used directly, they can be used by concrete implementations of GMMs to modify model output.
+Auxilliary models are not used directly, they can be used by concrete implementations of GMMs to
+modify model output.
 
 | Reference | Purpose | Component | Notes |
 |:---------:|:-------:|:---------:|:------|
diff --git a/docs/Logic-Trees-&-Uncertainty.md b/docs/Logic-Trees-&-Uncertainty.md
index a49ec7032..5b51aaec2 100644
--- a/docs/Logic-Trees-&-Uncertainty.md
+++ b/docs/Logic-Trees-&-Uncertainty.md
@@ -1,8 +1,7 @@
 # USGS Models: Logic Trees & Uncertainty
 
 The following page details the logic trees of epistemic uncertainty considered in NSHMs supported
-by *nshmp-haz*. Logic trees are represented in a NSHM using files ending in `-tree.json`
-([example]()).
+by *nshmp-haz*. Logic trees are represented in a NSHM using files ending in `-tree.json`.
 
 [[_TOC_]]
 
diff --git a/docs/Magnitude-Frequency-Distributions.md b/docs/Magnitude-Frequency-Distributions.md
index c51b4d288..27afc4754 100644
--- a/docs/Magnitude-Frequency-Distributions.md
+++ b/docs/Magnitude-Frequency-Distributions.md
@@ -8,10 +8,11 @@ members listed in the JSON examples below are required.
 [[_TOC_]]
 
 MFD types:
- * [Single](#single-magnitude-mfd)
- * [Gutenberg-Richter](#gutenberg-richter-mfd)
- * [Tapered Gutenberg-Richter](#tapered-gutenberg-richter-mfd)
- * [Incremental](#incremental-mfd)
+
+* [Single](#single-magnitude-mfd)
+* [Gutenberg-Richter](#gutenberg-richter-mfd)
+* [Tapered Gutenberg-Richter](#tapered-gutenberg-richter-mfd)
+* [Incremental](#incremental-mfd)
 
 ## Single
 
@@ -97,26 +98,37 @@ example:
 }
 ```
 
-**mfd-config.json:** 
-
+**mfd-config.json:**
 
 MFD confguration files:
- * mfd-map.json
- * mfd-config.json
- * rate-tree.json
- * Rate files (*.csv)
 
-For instance, the final MFDs used in a hazard may be modified by an epistemic or aleatory uncertainty model specified in `mfd-config.json`. Single and Gutenberg-Richter MFDs that do not have their `rate` or `a`-value members defined rely on the presence of a `rate-tree.json` file. A rate-tree defines a logic tree of rates or pointers to CSV rate files with spatially varying rate data.
+* mfd-map.json
+* mfd-config.json
+* rate-tree.json
+* Rate files (*.csv)
 
-#### `mfd-map.json`
-
-A mfd-map defines multiple mfd-trees common to multiple branches of a source-tree.
+For instance, the final MFDs used in a hazard may be modified by an epistemic or aleatory
+uncertainty model specified in `mfd-config.json`. Single and Gutenberg-Richter MFDs that do not
+have their `rate` or `a`-value members defined rely on the presence of a `rate-tree.json` file.
+A rate-tree defines a logic tree of rates or pointers to CSV rate files with spatially varying
+rate data.
 
+### `mfd-map.json`
 
+A mfd-map defines multiple mfd-trees common to multiple branches of a source-tree.
 
-#### `mfd-config.json`
+### `mfd-config.json`
 
-Additional uncertainty in MFDs is often considered when building hazard models and is defined in a `mfd-config.json` file. Application of uncertainty models is MFD type-dependent.  The `epistemic-tree` member, if non-null, is used to create 3-branches for single and Gutenberg-Richter MFDs. For a single MFD, a moment-balanced three-point distribution of magnitudes (± 0.2 magnitude units) is created. For a Gutenberg-Richter MFD, three maximum magnidue branches are created, also moment-balanced. The `aleatory-properties` member is only applicable to single MFDs and may be applied on top of an epistemic-tree. In the example below, `aleatory-properties` defines an eleven-point, moment-balanced normal distribution with a width of ±2σ of magnitudes about a central magnitude. If no additional uncertainty model is desired,  `epistemic-tree` and  `aleatory-properties` should be set to null.
+Additional uncertainty in MFDs is often considered when building hazard models and is defined
+in a `mfd-config.json` file. Application of uncertainty models is MFD type-dependent.  The
+`epistemic-tree` member, if non-null, is used to create 3-branches for single and Gutenberg-Richter
+MFDs. For a single MFD, a moment-balanced three-point distribution of magnitudes (± 0.2 magnitude
+units) is created. For a Gutenberg-Richter MFD, three maximum magnidue branches are created, also
+moment-balanced. The `aleatory-properties` member is only applicable to single MFDs and may be
+applied on top of an epistemic-tree. In the example below, `aleatory-properties` defines an
+eleven-point, moment-balanced normal distribution with a width of ±2σ of magnitudes about a
+central magnitude. If no additional uncertainty model is desired,  `epistemic-tree` and
+`aleatory-properties` should be set to null.
 
 TODO is aleatory uncertainty in MFD ALWAYS moment-balanced???
 
@@ -137,7 +149,7 @@ TODO is aleatory uncertainty in MFD ALWAYS moment-balanced???
 }
 ```
 
-#### `rate-tree.json`
+### `rate-tree.json`
 
 A rate-tree defines each branch `value` in years (recurrence or return period):
 
@@ -211,15 +223,17 @@ For example:
 ]
 ```
 
-
-
 From Model Files:
 
-#### Magnitude Frequency Distributions (MFDs)
+### Magnitude Frequency Distributions (MFDs)
 
 `mfd-tree`, `mfd-map.json`, `mfd-config.json`, and `rate-tree.json`
 
-A `mfd-tree` property is common to all source types and defines a logic tree of magnitude frequency distributions (MFDs). The `mfd-tree` element may be an array of mfd branches defined inline or a string reference to a top-level member of an `mfd-map.json` that contains one or more mfd-trees shared across a source-tree. The branches of a mfd-tree commonly have the generic ID's: `[M1, M2, M3, ...]` to support mfd-tree matching across source-tree branches.
+A `mfd-tree` property is common to all source types and defines a logic tree of magnitude
+frequency distributions (MFDs). The `mfd-tree` element may be an array of mfd branches defined
+inline or a string reference to a top-level member of an `mfd-map.json` that contains one or
+more mfd-trees shared across a source-tree. The branches of a mfd-tree commonly have the generic
+ID's: `[M1, M2, M3, ...]` to support mfd-tree matching across source-tree branches.
 
 ```json
 "mfd-tree": [
@@ -230,10 +244,13 @@ A `mfd-tree` property is common to all source types and defines a logic tree of
 ]
 ```
 
-How MFDs are actually built depends on the settings in a `mfd-config.json` file and rates For more details on MFDs and their configuration see the [magnitude frequency distributions](magnitude-frequency-distributions) section.
-
-An `mfd-config.json` is currently only required for finite fault sources. It can be located anywhere in the file heirarchy and may be overridden in nested directories. 
-
+How MFDs are actually built depends on the settings in a `mfd-config.json` file and rates. For more
+details on MFDs and their configuration see the
+[magnitude frequency distributions](magnitude-frequency-distributions) section.
 
-Depending on the types of MFDs being modeled, a rate file may contain Gutenberg-Richter a-values or magnitude-specific rates. The branches of a rate-tree commonly have the generic ID's: `[R1, R2, R3, ...]` to support matching rate-trees across source-tree branches. 
+An `mfd-config.json` is currently only required for finite fault sources. It can be located
+anywhere in the file heirarchy and may be overridden in nested directories.
 
+Depending on the types of MFDs being modeled, a rate file may contain Gutenberg-Richter a-values
+or magnitude-specific rates. The branches of a rate-tree commonly have the generic ID's:
+`[R1, R2, R3, ...]` to support matching rate-trees across source-tree branches.
diff --git a/docs/Model Editions.md b/docs/Model Editions.md
index 94cf0cded..e4524a35c 100644
--- a/docs/Model Editions.md	
+++ b/docs/Model Editions.md	
@@ -57,7 +57,7 @@ the Atkinson & Boore (2003) model does not support long periods (see the
 Moving forward, we will continue to include the original dynamic version of the 2014 model
 (v4.1.4) in the UHT. However, we recommend that users consider the updated model (4.2.0).
 
-### Static vs. Dynamic
+## Static vs. Dynamic
 
 Historically, the USGS NSHMP has produced static datasets of hazard curves that accompany the
 'official' release or update to a model. In the context of providing interactive web services,
@@ -89,7 +89,7 @@ Dynamic editions are supported through web-services provided by the `nshmp-haz-w
 (this repository). Static editions are supported via a separate set of services. Both are
 documented on the [web services](web-services) page.
 
-### Region specific changes
+## Region specific changes
 
 Changes between editions in model regions are documented in the release notes of the individual
 model repositories.
@@ -97,4 +97,3 @@ model repositories.
 * [Conterminous US (2014)](/usgs/nshmp-model-cous-2014/wiki)  
 * [Conterminous US (2008)](/usgs/nshmp-model-cous-2008/wiki)  
 * [Alaska (2007)](/usgs/nshmp-model-ak-2007/wiki)  
-
diff --git a/docs/Model-Files.md b/docs/Model-Files.md
index 267950cd9..73d8400d2 100644
--- a/docs/Model-Files.md
+++ b/docs/Model-Files.md
@@ -135,14 +135,12 @@ using the same MFDs on multiple branches of a source tree.
 How MFDs are intialized (or realized) depends on the presence and contents of `mfd-config.json` and
 `rate-tree.json` files. See the
 [magnitude frequency distributions](magnitude-frequency-distributions) page for details on these
-files and the types of MFDs supported in _nshmp-haz_. 
+files and the types of MFDs supported in _nshmp-haz_.
 
 ## Rupture Sets
 
-A `rupture-set` is the terminal file of a source-tree branch and defines the fault sections and
-MFD's required to intialize a source.
-
-**rupture-set.json**
+**rupture-set.json**: A `rupture-set` is the terminal file of a source-tree branch and defines the
+fault sections and MFD's required to intialize a source.
 
 ```json
 {
@@ -160,11 +158,10 @@ case, `mfd-tree` points to a named tree that will be present in an `mfd-map.json
 the source-tree. The `sections` member may be absent. In this case, the `id` of the rupture-set
 is the same as the single, associated fault section.
 
-**cluster-set.json**
-
-Fault sources also support cluster models where the total hazard is computed from the probability
-of exceeding some ground motion level is conditioned on the occurrence of 2 or more, roughly
-contemporaneous events. A cluster-set is composed of an array of rupture-sets.
+**cluster-set.json**: A specialized form of a rupture set. Fault sources also support cluster
+models where the total hazard is computed from the probability of exceeding some ground motion
+level is conditioned on the occurrence of 2 or more, roughly contemporaneous events. A cluster-set
+is composed of an array of rupture-sets.
 
 ```json
 {
diff --git a/docs/Model-Structure.md b/docs/Model-Structure.md
index 4ca92befd..c4fdfc6ca 100644
--- a/docs/Model-Structure.md
+++ b/docs/Model-Structure.md
@@ -99,7 +99,7 @@ See also: [Finite Fault Source Type](source-types#finite-fault-sources)
 
 ## Crustal Grid Sources
 
-*TODO this isn't quite right, needs conus-2018 refactor for verification*
+TODO this isn't quite right, needs conus-2018 refactor for verification
 
 Grid sources are based on smoothed seismicity or other spatially varying rate model and may be
 defined as either single source features, each within its own directory, or as more complex logic
diff --git a/docs/README.md b/docs/README.md
index 7cd65d878..3df0badcb 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -17,7 +17,7 @@ to use *nshmp-haz* as well as underlying model implementation details.
   * [Developer Basics](developer-basics)
   * [Calculation Configuration](calculation-configuration)
   * [Site Specification](site-specification)
-  * [Examples](/ghsc/nshmp/nshmp-haz-v2/-/tree/master/etc/examples)
+  * [Examples](/ghsc/nshmp/nshmp-haz/-/tree/master/etc/examples)
 * [Hazard Model](hazard-model)
   * [Model Structure](model-structure)
   * [Model Files](model-files)
@@ -31,8 +31,12 @@ to use *nshmp-haz* as well as underlying model implementation details.
 
 ## Other Pages & References
 
-  * [nshmp-lib](/ghsc/nshmp/nshmp-lib): USGS hazard modeling library
-  * [Functional PSHA](functional-psha)
-  * [Probabilistic Seismic Hazard Analysis, a Primer [PDF]](http://www.opensha.org/sites/opensha.org/files/PSHA_Primer_v2_0.pdf) by Edward Field  
-  * [An Introduction to Probabilistic Seismic Hazard Analysis [PDF]](http://web.stanford.edu/~bakerjw/Publications/Baker_(2015)_Intro_to_PSHA.pdf) by Jack Baker  
-  * [License](../LICENSE.md)
+* [nshmp-lib](/ghsc/nshmp/nshmp-lib): USGS hazard modeling library
+* [Functional PSHA](functional-psha)
+* [Probabilistic Seismic Hazard Analysis, a Primer
+  [PDF]](http://www.opensha.org/sites/opensha.org/files/PSHA_Primer_v2_0.pdf)
+  by Edward Field  
+* [An Introduction to Probabilistic Seismic Hazard Analysis
+  [PDF]](http://web.stanford.edu/~bakerjw/Publications/Baker_(2015)_Intro_to_PSHA.pdf)
+  by Jack Baker  
+* [License](../LICENSE.md)
diff --git a/docs/Rupture-Scaling-Relations.md b/docs/Rupture-Scaling-Relations.md
index 268648315..0a79a5e4f 100644
--- a/docs/Rupture-Scaling-Relations.md
+++ b/docs/Rupture-Scaling-Relations.md
@@ -2,12 +2,12 @@
 
 Rupture scaling models describe relationships between rupture geometry and magnitude. Such models
 are used in a NSHM to:
+
 * Compute an expected magnitude from a rupture geometry.
 * Compute the size (length or area) of a rupture from a magnitude.
 * Compute point-source distance corrections (optimization for unknown strike)
 
-Rupture scaling model implementations typically impose restrictions on rupture aspect ratio. For
-more details see the [rupture scaling implementation]() reference.
+Rupture scaling model implementations typically impose restrictions on rupture aspect ratio.
 
 ## Magnitude-Scaling Relationships
 
@@ -25,7 +25,6 @@ more details see the [rupture scaling implementation]() reference.
 | Papazachos-04      | Papazachos et al. (2004)   | subduction   | magnitude-length |
 | Youngs-97          | Youngs et al. (1997)       | subduction   | magnitude-length |
 
-
 ¹ UCERF3 uses rupture scaling relationships to also balance slip rate when computing rupture
 rates. These models consider alternative slip-length scaling relations relative to the default
 computed from rupture area and moment; see Field et al. (2014) for details.
diff --git a/docs/Site-Specification.md b/docs/Site-Specification.md
index 04b002b88..c2a27fa42 100644
--- a/docs/Site-Specification.md
+++ b/docs/Site-Specification.md
@@ -36,13 +36,13 @@ it's 'default' basin depth scale factor.
 
 ## Comma-Delimited Format (\*.csv)
 
-* Header row must identify columns.  
-* Valid and [optional] column names are:  
+* Header row must identify columns.
+* Valid and [optional] column names are:
   `[name,] lon, lat [, vs30] [, vsInf] [, z1p0] [, z2p5]`  
-* At a minimum, `lon` and `lat` must be defined.  
-* Columns can be in any order and any missing fields will be populated with the default values 
-  listed above.  
-* If a site `name` is supplied, it is included in the first column of any output curve files.  
+* At a minimum, `lon` and `lat` must be defined.
+* Columns can be in any order and any missing fields will be populated with the default values
+  listed above.
+* If a site `name` is supplied, it is included in the first column of any output curve files.
 
 ## GeoJSON Format (\*.geojson)
 
@@ -91,7 +91,6 @@ GeoJSON is also used to define *nshmp-haz* map regions. For example, see the fil
 region commonly used when creating hazard and other maps for the
 [Los Angeles basin](/usgs/nshmp-haz/blob/master/etc/nshm/map-la-basin.geojson).
 
-
 A map region is expected as a `Polygon` `FeatureCollection`. Currently, *nshmp-haz* only supports
 a `FeatureCollection` with 1 or 2 polygons. When a single polygon is defined, it must consist of a
 single, simple closed loop. Additional arrays that define holes in the polygon (per the GeoJSON
diff --git a/docs/Source-Types.md b/docs/Source-Types.md
index 0b6dfa3ce..03b47b1b9 100644
--- a/docs/Source-Types.md
+++ b/docs/Source-Types.md
@@ -17,15 +17,24 @@ configuration files are provided with each [source type](source-types) descripti
 files must be fully specified with `null` JSON member values used to specify 'do nothing' where
 appropriate.
 
-Source models for use with *nshmp-haz* are defined using [JSON](https://www.json.org) and [GeoJSON](https://geojson.org). *nshmp-haz* makes determinations about how to represent a source based on a GeoJSON geometry type in conjunction with supporting JSON configuration files.
+Source models for use with *nshmp-haz* are defined using [JSON](https://www.json.org) and
+[GeoJSON](https://geojson.org). *nshmp-haz* makes determinations about how to represent a source
+based on a GeoJSON geometry type in conjunction with supporting JSON configuration files.
 
-Values in source model files in ALL_CAPS generally map to enum types, [for example](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/gmm/Gmm.html).
+Values in source model files in ALL_CAPS generally map to enum types,
+[for example](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/gmm/Gmm.html).
 
-__Note on Coordinates:__ *nshmp-haz* supports longitude and latitude values in the closed ranges `[-360°‥360°]` and `[-90°‥90°]`. Note, however, that mixing site and/or source coordinates across the antimeridian (the -180° to 180° transition) will yield unexpected results. For Pacific models and calculations, always use positive or negative longitudes exclusively.
+__Note on Coordinates:__ *nshmp-haz* supports longitude and latitude values in the closed ranges
+`[-360°‥360°]` and `[-90°‥90°]`. Note, however, that mixing site and/or source coordinates across
+the antimeridian (the -180° to 180° transition) will yield unexpected results. For Pacific models
+and calculations, always use positive or negative longitudes exclusively.
 
-### Model Initialization Parameters
+## Model Initialization Parameters
 
-Model initialization parameters *must* be supplied; there are no default values. In addition, these parameters may *not* be overridden once a model has been initialized in memory. However, one can configure parts of a model differently, [for example](/usgs/nshmp-model-cous-2014/blob/master/Western%20US/Interface/config.json).
+Model initialization parameters *must* be supplied; there are no default values. In addition,
+these parameters may *not* be overridden once a model has been initialized in memory. However,
+one can configure parts of a model differently,
+[for example](/usgs/nshmp-model-cous-2014/blob/master/Western%20US/Interface/config.json).
 
 Parameter | Type | Notes |
 --------- | ---- | ----- |
@@ -37,8 +46,7 @@ __`model`__ |
 &nbsp;&nbsp;&nbsp;`.pointSourceType`    |`String`  |[PointSourceType](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/eq/model/PointSourceType.html)
 &nbsp;&nbsp;&nbsp;`.areaGridScaling`    |`String`  |[AreaSource.GridScaling](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/eq/model/AreaSource.GridScaling.html)
 
-
-### Outline
+## Outline
 
 * [Area Sources](#area-sources)
 * [Cluster Sources](#cluster-sources)
@@ -50,7 +58,8 @@ __`model`__ |
 
 * Basic source types
 * Fault Modeling Approaches
-  * cluster models are a source model specialization; currently used in both cratonic and active crustal environments.
+  * cluster models are a source model specialization; currently used in both cratonic and active
+    crustal environments.
   * system
 
 ### Zone Sources
@@ -155,7 +164,7 @@ smaller events) during earthquakes. Smaller events are modeled as 'floating'
 ruptures; they occur in multiple locations on the fault surface with
 appropriately scaled rates.
 
-Many fault-based earthquake sources are strightforward to model using a single geojson file that 
+Many fault-based earthquake sources are strightforward to model using a single geojson file that
 
 ```json
 {
@@ -181,7 +190,7 @@ MFDs associated with finite fault models may be explicitely defined or or derive
 ]
 ```
 
-##### Geodetic slip variants
+#### Geodetic slip variants
 
 ```json
 "rateModels": [
@@ -215,7 +224,7 @@ MFDs associated with finite fault models may be explicitely defined or or derive
 ]
 ```
 
-##### `fault-config.json`
+#### `fault-config.json`
 
 ```json
 {
@@ -230,7 +239,6 @@ MFDs associated with finite fault models may be explicitely defined or or derive
 }
 ```
 
-
 ### Fault Zone (Area) Sources
 
 ```json
@@ -347,7 +355,8 @@ It is not uncommon for rupture models to be defined by complex logic trees. In t
 
 expectation that all MFDs are some flavor of GR*
 
-Always floats when used for a fault source; never floats for grid sources. 'a' is the incremental log10(number of M=0 events).
+Always floats when used for a fault source; never floats for grid sources. 'a' is the incremental
+log10(number of M=0 events).
 
 grid polygons generally offset (expanded) due to includes() operations on grid nodes.
 
@@ -355,7 +364,8 @@ grid sources must define a rate-tree, even if it is a singleton.
 
 ANy grid sources/rates defined outside grid polygon are skipped.
 
-No `mfd-config` for grid, slab, or zone sources at this time. (implies we don't use epi or aleatory variability in grid-based source MFDs)
+No `mfd-config` for grid, slab, or zone sources at this time. (implies we don't use epi or
+aleatory variability in grid-based source MFDs)
 
 ...tapered GR  Currently only used for grid sources.
 
@@ -421,7 +431,7 @@ No `mfd-config` for grid, slab, or zone sources at this time. (implies we don't
 </GridSourceSet>
 ```
 
-##### `grid-config.json`
+#### `grid-config.json`
 
 ```json
 {
@@ -451,7 +461,10 @@ No `mfd-config` for grid, slab, or zone sources at this time. (implies we don't
 }
 ```
 
-A `grid-depth-map` defines a mapping of magnitude ranges to logic trees of depth distributions. The map can use arbitrary names as keys, but the magnitude ranges defined by each member must be non-overlapping. The magnitude ranges are interpreted as closed (inclusive) – open (exclusive), e.g. [mMin..mMax).
+A `grid-depth-map` defines a mapping of magnitude ranges to logic trees of depth distributions.
+The map can use arbitrary names as keys, but the magnitude ranges defined by each member must
+be non-overlapping. The magnitude ranges are interpreted as closed (inclusive) – open (exclusive),
+e.g. [mMin..mMax).
 
 ## Grid Data Files (*.csv)
 
@@ -462,7 +475,6 @@ then latitude (lower-left to upper-right). While most gridded rate files contain
 longitude, latitude, and rate, some may contain depth values (intraslab sources), maximum
 magnitude caps, or other values.
 
-
 ### Subduction Interface Sources
 
 ```xml
@@ -516,7 +528,7 @@ magnitude caps, or other values.
 </SubductionSourceSet>
 ```
 
-##### `interface-config.json`
+#### `interface-config.json`
 
 ```json
 {
@@ -530,7 +542,7 @@ magnitude caps, or other values.
 
 Subduction intraslab sources are currently specified the same way as [Grid Sources](#grid-sources).
 
-##### `slab-config.json`
+#### `slab-config.json`
 
 ```json
 {
@@ -551,7 +563,9 @@ Fault system source sets require three files:
 * `fault_ruptures.xml`
 * `grid_sources.xml`
 
-that are placed together within a _source group_ folder. Fault system source sets represent a single logic-tree branch or an average over a group of branches and has a gridded (or smoothed seismicity) source component that is coupled with the fault-based rates in the model.
+that are placed together within a _source group_ folder. Fault system source sets represent a
+single logic-tree branch or an average over a group of branches and has a gridded (or smoothed
+seismicity) source component that is coupled with the fault-based rates in the model.
 
 `fault_sections.xml` defines the geometry of a fault network as a set of indexed fault sections:
 
-- 
GitLab