diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..ab40bee7b148c606c519a425b810704c92691b29
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,4 @@
+.*
+node_modules
+npm-debug.log
+*.sublime-project
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 615776276627c3445513db121e5a050df0bde3c9..0a3b7f8735c7d35dc3f41e205ef535385079078e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,4 @@ debug.log
 npm-debug.log
 
 *.sublime-workspace
-
-web/render-test/index.js
\ No newline at end of file
+.idea
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..9f10bcd80045efad9dedf20db38f7170e3a8dd64
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,37 @@
+# This is to build a container that demos the Mol* canvas app
+# Source material: https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
+# Source material: https://derickbailey.com/2017/05/31/how-a-650mb-node-js-image-for-docker-uses-less-space-than-a-50mb-image/
+# Source material: https://hub.docker.com/_/node/
+
+# Use the slimed NodeJS source, yielding a space savings of 600MB (~66% of total)
+FROM node:alpine
+
+# Create app directory
+WORKDIR /usr/src/app
+
+# Install app dependencies
+# A wildcard is used to ensure both package.json AND package-lock.json AND tslint.json AND tsconfig.json are copied
+# where available (npm@5+)
+COPY *.json ./
+
+# Install all dependencies and copy results
+RUN npm install
+COPY . .
+
+# Build library and canvas application then copy results
+RUN npm run build
+RUN npm run build-canvas
+COPY build/canvas/ build/canvas/
+
+# Open ports for HTTP
+EXPOSE 8080/tcp
+
+# Setup standalone simple webserver to run the demo
+RUN npm install http-server -g
+
+# Start NodeJS at container stand up
+CMD [ "http-server", "build/canvas/", "-p", "8080" ]
+
+# Developer helpers (what is inside this container?)
+RUN node -v
+RUN ls -alh
diff --git a/README.md b/README.md
index 97489da489920b579a693ca4c8305ce75fb33e23..dde6fcb355b95f304ca7a3e1635e5a69eb83aa57 100644
--- a/README.md
+++ b/README.md
@@ -78,6 +78,19 @@ From the root of the project:
 
 and navigate to `build/viewer`
 
+
+**Run via Docker**
+
+Build the docker image
+
+    docker build -t molstar-proto .
+
+Run the image
+
+    docker run -p 8080:8080 molstar-proto
+
+
+
 ### Code generation
 **CIF schemas**
 
diff --git a/data/mmcif-field-names.csv b/data/mmcif-field-names.csv
index 1d629c1fa923ee133a80caebaf4dc1e805c82b3d..45602d31ed609b3422c9bff19906fd5ffe8f1ce8 100644
--- a/data/mmcif-field-names.csv
+++ b/data/mmcif-field-names.csv
@@ -41,6 +41,12 @@ chem_comp_bond.atom_id_1
 chem_comp_bond.atom_id_2
 chem_comp_bond.value_order
 
+pdbx_chem_comp_identifier.comp_id
+pdbx_chem_comp_identifier.type
+pdbx_chem_comp_identifier.program
+pdbx_chem_comp_identifier.program_version
+pdbx_chem_comp_identifier.identifier
+
 cell.entry_id
 cell.length_a
 cell.length_b
@@ -66,8 +72,8 @@ entity_poly.entity_id
 entity_poly.type
 entity_poly.nstd_linkage
 entity_poly.nstd_monomer
-entity_poly.pdbx_seq_one_letter_code  
-entity_poly.pdbx_seq_one_letter_code_can 
+entity_poly.pdbx_seq_one_letter_code
+entity_poly.pdbx_seq_one_letter_code_can
 entity_poly.pdbx_strand_id
 entity_poly.pdbx_target_identifier
 
@@ -76,6 +82,47 @@ entity_poly_seq.num
 entity_poly_seq.mon_id
 entity_poly_seq.hetero
 
+pdbx_entity_branch.entity_id
+pdbx_entity_branch.type
+
+pdbx_entity_branch_list.entity_id
+pdbx_entity_branch_list.comp_id
+pdbx_entity_branch_list.num
+pdbx_entity_branch_list.component_comp_id
+pdbx_entity_branch_list.hetero
+
+pdbx_entity_branch_link.link_id
+pdbx_entity_branch_link.entity_id
+pdbx_entity_branch_link.entity_branch_list_num_1
+pdbx_entity_branch_link.comp_id_1
+pdbx_entity_branch_link.atom_id_1
+pdbx_entity_branch_link.leaving_atom_id_1
+pdbx_entity_branch_link.atom_stereo_config_1
+pdbx_entity_branch_link.entity_branch_list_num_2
+pdbx_entity_branch_link.comp_id_2
+pdbx_entity_branch_link.atom_id_2
+pdbx_entity_branch_link.leaving_atom_id_2
+pdbx_entity_branch_link.atom_stereo_config_2
+pdbx_entity_branch_link.value_order
+pdbx_entity_branch_link.details
+
+pdbx_branch_scheme.asym_id
+pdbx_branch_scheme.entity_id
+pdbx_branch_scheme.mon_id
+pdbx_branch_scheme.num
+pdbx_branch_scheme.auth_seq_num
+pdbx_branch_scheme.auth_mon_id
+pdbx_branch_scheme.auth_strand_id
+pdbx_branch_scheme.auth_ins_code
+pdbx_branch_scheme.hetero
+
+pdbx_entity_descriptor.ordinal
+pdbx_entity_descriptor.entity_id
+pdbx_entity_descriptor.descriptor
+pdbx_entity_descriptor.type
+pdbx_entity_descriptor.program
+pdbx_entity_descriptor.program_version
+
 entry.id
 
 exptl.entry_id
diff --git a/package-lock.json b/package-lock.json
index eef7df4dae9988c64bf224ddff9ae23168532855..07548755dbc1dbc907eab692407d9650201d6438 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index bf83b6ed96ae7bbc625481cfa8e7fa64284a6433..d114fb55c4e7fd6f88bbcd99f6ba5450dd07b5c0 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,7 @@
     "@types/compression": "0.0.36",
     "@types/express": "^4.16.0",
     "@types/jest": "^23.3.2",
-    "@types/node": "^10.9.4",
+    "@types/node": "^10.10.1",
     "@types/node-fetch": "^2.1.2",
     "@types/react": "^16.4.14",
     "@types/react-dom": "^16.0.7",
@@ -87,22 +87,22 @@
     "file-loader": "^2.0.0",
     "glslify-import": "^3.1.0",
     "glslify-loader": "^1.0.2",
-    "graphql-code-generator": "^0.12.2",
-    "graphql-codegen-typescript-template": "^0.12.2",
+    "graphql-code-generator": "^0.12.5",
+    "graphql-codegen-typescript-template": "^0.12.5",
     "jest": "^23.6.0",
     "jest-raw-loader": "^1.0.1",
-    "mini-css-extract-plugin": "^0.4.2",
+    "mini-css-extract-plugin": "^0.4.3",
     "node-sass": "^4.9.3",
     "raw-loader": "^0.5.1",
     "resolve-url-loader": "^3.0.0",
     "sass-loader": "^7.1.0",
     "style-loader": "^0.23.0",
-    "ts-jest": "^23.1.4",
+    "ts-jest": "^23.10.0",
     "tslint": "^5.11.0",
     "typescript": "^3.0.3",
     "uglify-js": "^3.4.9",
     "util.promisify": "^1.0.0",
-    "webpack": "^4.19.0",
+    "webpack": "^4.19.1",
     "webpack-cli": "^3.1.0"
   },
   "dependencies": {
@@ -111,10 +111,10 @@
     "express": "^4.16.3",
     "graphql": "^14.0.2",
     "graphql-request": "^1.8.2",
-    "immer": "^1.6.0",
+    "immer": "^1.7.1",
     "node-fetch": "^2.2.0",
-    "react": "^16.5.1",
-    "react-dom": "^16.5.1",
+    "react": "^16.5.2",
+    "react-dom": "^16.5.2",
     "rxjs": "^6.3.2"
   }
 }
diff --git a/src/apps/canvas/app.ts b/src/apps/canvas/app.ts
index af974f06c57097f5051fc13ab0976574fbbc4f4d..3615bbc0e4dcdbd0bb497f524821deebdecfe0f3 100644
--- a/src/apps/canvas/app.ts
+++ b/src/apps/canvas/app.ts
@@ -32,23 +32,46 @@ export class App {
         }
     }
 
+    setStatus(msg: string) {
+
+    }
+
+    private taskCount = 0
+    taskCountChanged = new BehaviorSubject({ count: 0, info: '' })
+
+    private changeTaskCount(delta: number, info = '') {
+        this.taskCount += delta
+        this.taskCountChanged.next({ count: this.taskCount, info })
+    }
+
+    async runTask<T>(promise: Promise<T>, info: string) {
+        this.changeTaskCount(1, info)
+        let result: T
+        try {
+            result = await promise
+        } finally {
+            this.changeTaskCount(-1)
+        }
+        return result
+    }
+
     async loadCif(cif: CifBlock, assemblyId?: string) {
-        const models = await getModelsFromMmcif(cif)
-        this.structureView = await StructureView(this.viewer, models, { assemblyId })
+        const models = await this.runTask(getModelsFromMmcif(cif), 'Build models')
+        this.structureView = await this.runTask(StructureView(this, this.viewer, models, { assemblyId }), 'Init structure view')
         this.pdbIdLoaded.next(this.structureView)
     }
 
     async loadPdbIdOrUrl(idOrUrl: string, options?: { assemblyId?: string, binary?: boolean }) {
         if (this.structureView) this.structureView.destroy();
         const url = idOrUrl.length <= 4 ? `https://files.rcsb.org/download/${idOrUrl}.cif` : idOrUrl;
-        const cif = await getCifFromUrl(url, options ? !!options.binary : false)
+        const cif = await this.runTask(getCifFromUrl(url, options ? !!options.binary : false), 'Load mmCIF from URL')
         this.loadCif(cif, options ? options.assemblyId : void 0)
     }
 
     async loadCifFile(file: File) {
         if (this.structureView) this.structureView.destroy();
         const binary = /\.bcif$/.test(file.name);
-        const cif = await getCifFromFile(file, binary)
+        const cif = await this.runTask(getCifFromFile(file, binary), 'Load mmCIF from file')
         this.loadCif(cif)
     }
 }
\ No newline at end of file
diff --git a/src/apps/canvas/component/structure-representation.tsx b/src/apps/canvas/component/structure-representation.tsx
index 13cc8cac48dfe6179a956df3cc56147a5d33c513..2cdb76e8f2b496b6850b50633ec3d3fc670f2aa5 100644
--- a/src/apps/canvas/component/structure-representation.tsx
+++ b/src/apps/canvas/component/structure-representation.tsx
@@ -12,8 +12,10 @@ import { Color } from 'mol-util/color';
 import { Progress } from 'mol-task';
 import { VisualQuality, VisualQualityNames } from 'mol-geo/geometry/geometry';
 import { SizeThemeProps } from 'mol-view/theme/size';
+import { App } from '../app';
 
 export interface StructureRepresentationComponentProps {
+    app: App
     viewer: Viewer
     representation: StructureRepresentation<StructureProps>
 }
@@ -82,9 +84,9 @@ export class StructureRepresentationComponent extends React.Component<StructureR
         if (state.pointFilledCircle !== undefined) (props as any).pointFilledCircle = state.pointFilledCircle
         if (state.pointEdgeBleach !== undefined) (props as any).pointEdgeBleach = state.pointEdgeBleach
 
-        await repr.createOrUpdate(props).run(
+        await this.props.app.runTask(repr.createOrUpdate(props).run(
             progress => console.log(Progress.format(progress))
-        )
+        ), 'Create/update representation')
         this.props.viewer.add(repr)
         this.props.viewer.draw(true)
         console.log(this.props.viewer.stats)
@@ -163,7 +165,7 @@ export class StructureRepresentationComponent extends React.Component<StructureR
                     <input type='range'
                         defaultValue={this.state.radiusOffset.toString()}
                         min='0'
-                        max='10'
+                        max='4'
                         step='0.1'
                         onInput={(e) => this.update({ radiusOffset: parseFloat(e.currentTarget.value) })}
                     >
@@ -220,8 +222,8 @@ export class StructureRepresentationComponent extends React.Component<StructureR
                                     background: `linear-gradient(to right, ${ct.legend.colors.map(c => Color.toStyle(c)).join(', ')})`
                                 }}
                             >
-                                <span style={{float: 'left', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.min}</span>
-                                <span style={{float: 'right', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.max}</span>
+                                <span style={{float: 'left', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.minLabel}</span>
+                                <span style={{float: 'right', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.maxLabel}</span>
                             </div>
                         : ct.legend && ct.legend.kind === 'table-legend'
                             ? <div>
diff --git a/src/apps/canvas/component/structure-view.tsx b/src/apps/canvas/component/structure-view.tsx
index d27172fe1a03e176cef4feb892862b35fadc4c92..82ca7a29d46acbbeafbc3496ffb6a31e91ae0829 100644
--- a/src/apps/canvas/component/structure-view.tsx
+++ b/src/apps/canvas/component/structure-view.tsx
@@ -185,6 +185,7 @@ export class StructureViewComponent extends React.Component<StructureViewCompone
                                 <StructureRepresentationComponent
                                     representation={structureRepresentations[k]}
                                     viewer={structureView.viewer}
+                                    app={structureView.app}
                                 />
                             </div>
                         } else {
diff --git a/src/apps/canvas/component/viewport.tsx b/src/apps/canvas/component/viewport.tsx
index 6a7f3ffc62f33d638da124e62c5726f052651a65..0085461d7f307e8d3d9849eff9cfa645af1a23bd 100644
--- a/src/apps/canvas/component/viewport.tsx
+++ b/src/apps/canvas/component/viewport.tsx
@@ -15,8 +15,9 @@ interface ViewportProps {
 }
 
 interface ViewportState {
-    noWebGl: boolean,
-    info: string
+    noWebGl: boolean
+    pickingInfo: string
+    taskInfo: string
 }
 
 export class Viewport extends React.Component<ViewportProps, ViewportState> {
@@ -25,7 +26,8 @@ export class Viewport extends React.Component<ViewportProps, ViewportState> {
 
     state: ViewportState = {
         noWebGl: false,
-        info: ''
+        pickingInfo: '',
+        taskInfo: ''
     };
 
     handleResize() {
@@ -55,11 +57,15 @@ export class Viewport extends React.Component<ViewportProps, ViewportState> {
                     prevLoci = loci
 
                     const label = labelFirst(loci)
-                    const info = `${label}`
-                    this.setState({ info })
+                    const pickingInfo = `${label}`
+                    this.setState({ pickingInfo })
                 }
             }
         })
+
+        this.props.app.taskCountChanged.subscribe(({ count, info }) => {
+            this.setState({ taskInfo: count > 0 ? info : '' })
+        })
     }
 
     componentWillUnmount() {
@@ -94,8 +100,22 @@ export class Viewport extends React.Component<ViewportProps, ViewportState> {
                     background: 'rgba(0, 0, 0, 0.2)'
                 }}
             >
-                {this.state.info}
+                {this.state.pickingInfo}
             </div>
+            { this.state.taskInfo ?
+                <div
+                    style={{
+                        position: 'absolute',
+                        top: 10,
+                        right: 10,
+                        padding: 10,
+                        color: 'lightgrey',
+                        background: 'rgba(0, 0, 0, 0.2)'
+                    }}
+                >
+                    {this.state.taskInfo}
+                </div>
+            : '' }
         </div>;
     }
 }
\ No newline at end of file
diff --git a/src/apps/canvas/structure-view.ts b/src/apps/canvas/structure-view.ts
index e4acd4e8e3deea2217ac17b790f826bd74becdcb..1f0d7149f9e1448b31bc362619ad84299b2cf198 100644
--- a/src/apps/canvas/structure-view.ts
+++ b/src/apps/canvas/structure-view.ts
@@ -25,9 +25,11 @@ import { BehaviorSubject } from 'rxjs';
 import { SpacefillRepresentation } from 'mol-geo/representation/structure/representation/spacefill';
 import { DistanceRestraintRepresentation } from 'mol-geo/representation/structure/representation/distance-restraint';
 import { SurfaceRepresentation } from 'mol-geo/representation/structure/representation/surface';
-// import { Progress } from 'mol-task';
+import { App } from './app';
+import { Progress } from 'mol-task';
 
 export interface StructureView {
+    readonly app: App
     readonly viewer: Viewer
 
     readonly label: string
@@ -64,7 +66,7 @@ interface StructureViewProps {
 
 
 
-export async function StructureView(viewer: Viewer, models: ReadonlyArray<Model>, props: StructureViewProps = {}): Promise<StructureView> {
+export async function StructureView(app: App, viewer: Viewer, models: ReadonlyArray<Model>, props: StructureViewProps = {}): Promise<StructureView> {
     const active: { [k: string]: boolean } = {
         cartoon: true,
         point: false,
@@ -105,7 +107,7 @@ export async function StructureView(viewer: Viewer, models: ReadonlyArray<Model>
         if (!value) {
             assemblySymmetry = undefined
         } else {
-            await AssemblySymmetry.attachFromCifOrAPI(models[modelId])
+            await app.runTask(AssemblySymmetry.attachFromCifOrAPI(models[modelId]), 'Load symmetry annotation')
             assemblySymmetry = AssemblySymmetry.get(models[modelId])
         }
         active.symmetryAxes = value
@@ -195,7 +197,7 @@ export async function StructureView(viewer: Viewer, models: ReadonlyArray<Model>
     }
 
     async function getStructure() {
-        if (model) structure = await getStructureFromModel(model, assemblyId)
+        if (model) structure = await app.runTask(getStructureFromModel(model, assemblyId), 'Build structure')
         if (model && structure) {
             label = `${model.label} - Assembly ${assemblyId}`
         } else {
@@ -209,9 +211,9 @@ export async function StructureView(viewer: Viewer, models: ReadonlyArray<Model>
             console.log('createStructureRepr')
             for (const k in structureRepresentations) {
                 if (active[k]) {
-                    await structureRepresentations[k].createOrUpdate({}, structure).run(
-                        // progress => console.log(Progress.format(progress))
-                    )
+                    await app.runTask(structureRepresentations[k].createOrUpdate({}, structure).run(
+                        progress => console.log(Progress.format(progress))
+                    ), 'Create/update representation')
                     viewer.add(structureRepresentations[k])
                 } else {
                     viewer.remove(structureRepresentations[k])
@@ -288,6 +290,7 @@ export async function StructureView(viewer: Viewer, models: ReadonlyArray<Model>
     await setModel(0, props.assemblyId, props.symmetryFeatureId)
 
     return {
+        app,
         viewer,
 
         get label() { return label },
diff --git a/src/apps/schema-generator/schema-from-cif-dic.ts b/src/apps/schema-generator/schema-from-cif-dic.ts
index 72dd804af122e1d8442f3f9f99002a2f2d6214b6..ecef972dd62070a65ff748f39688db29b95483c4 100644
--- a/src/apps/schema-generator/schema-from-cif-dic.ts
+++ b/src/apps/schema-generator/schema-from-cif-dic.ts
@@ -24,11 +24,17 @@ async function runGenerateSchema(name: string, fieldNamesPath?: string, typescri
     const ihmDic = await CIF.parseText(fs.readFileSync(IHM_DIC_PATH, 'utf8')).run();
     if (ihmDic.isError) throw ihmDic
 
+    await ensureBranchDicAvailable()
+    const branchDic = await CIF.parseText(fs.readFileSync(BRANCH_DIC_PATH, 'utf8')).run();
+    if (branchDic.isError) throw branchDic
+
     const mmcifDicVersion = CIF.schema.dic(mmcifDic.result.blocks[0]).dictionary.version.value(0)
     const ihmDicVersion = CIF.schema.dic(ihmDic.result.blocks[0]).dictionary.version.value(0)
-    const version = `Dictionary versions: mmCIF ${mmcifDicVersion}, IHM ${ihmDicVersion}.`
+    // const branchDicVersion = CIF.schema.dic(branchDic.result.blocks[0]).dictionary.version.value(0)
+    const branchDicVersion = 'draft'
+    const version = `Dictionary versions: mmCIF ${mmcifDicVersion}, IHM ${ihmDicVersion}, entity_branch ${branchDicVersion}.`
 
-    const frames: CifFrame[] = [...mmcifDic.result.blocks[0].saveFrames, ...ihmDic.result.blocks[0].saveFrames]
+    const frames: CifFrame[] = [...mmcifDic.result.blocks[0].saveFrames, ...ihmDic.result.blocks[0].saveFrames, ...branchDic.result.blocks[0].saveFrames]
     const schema = generateSchema(frames)
 
     const filter = fieldNamesPath ? await getFieldNamesFilter(fieldNamesPath) : undefined
@@ -70,15 +76,20 @@ async function ensureIhmDicAvailable() {
     await ensureDicAvailable(IHM_DIC_PATH, IHM_DIC_URL)
 }
 
+async function ensureBranchDicAvailable() {
+    await ensureDicAvailable(BRANCH_DIC_PATH, BRANCH_DIC_URL)
+}
+
 async function ensureDicAvailable(dicPath: string, dicUrl: string) {
     if (FORCE_DIC_DOWNLOAD || !fs.existsSync(dicPath)) {
-        console.log('downloading mmcif dic...')
+        const name = dicUrl.substr(dicUrl.lastIndexOf('/') + 1)
+        console.log(`downloading ${name}...`)
         const data = await fetch(dicUrl)
         if (!fs.existsSync(DIC_DIR)) {
             fs.mkdirSync(DIC_DIR);
         }
         fs.writeFileSync(dicPath, await data.text())
-        console.log('done downloading mmcif dic')
+        console.log(`done downloading ${name}`)
     }
 }
 
@@ -87,10 +98,12 @@ const MMCIF_DIC_PATH = `${DIC_DIR}/mmcif_pdbx_v50.dic`
 const MMCIF_DIC_URL = 'http://mmcif.wwpdb.org/dictionaries/ascii/mmcif_pdbx_v50.dic'
 const IHM_DIC_PATH = `${DIC_DIR}/ihm-extension.dic`
 const IHM_DIC_URL = 'https://raw.githubusercontent.com/ihmwg/IHM-dictionary/master/ihm-extension.dic'
+const BRANCH_DIC_PATH = `${DIC_DIR}/entity_branch-extension.dic`
+const BRANCH_DIC_URL = 'https://raw.githubusercontent.com/wwpdb-dictionaries/mmcif_pdbx/master/extensions/entity_branch-extension.dic'
 
 const parser = new argparse.ArgumentParser({
   addHelp: true,
-  description: 'Create schema from mmcif dictionary (v50, downloaded from wwPDB)'
+  description: 'Create schema from mmcif dictionary (v50 plus IHM and entity_branch extensions, downloaded from wwPDB)'
 });
 parser.addArgument([ '--name', '-n' ], {
     defaultValue: 'mmCIF',
@@ -123,5 +136,7 @@ const args: Args = parser.parseArgs();
 const FORCE_DIC_DOWNLOAD = args.forceDicDownload
 
 if (args.name) {
-    runGenerateSchema(args.name, args.fieldNamesPath, args.typescript, args.out)
+    runGenerateSchema(args.name, args.fieldNamesPath, args.typescript, args.out).catch(e => {
+        console.error(e)
+    })
 }
diff --git a/src/mol-geo/geometry/mesh/mesh.ts b/src/mol-geo/geometry/mesh/mesh.ts
index ed8f545de24e0a50e801795dbb896fc3f816f36d..1aaca0343f897a56d20a26c65d733edb0908a22d 100644
--- a/src/mol-geo/geometry/mesh/mesh.ts
+++ b/src/mol-geo/geometry/mesh/mesh.ts
@@ -15,6 +15,7 @@ import { createMarkers } from '../marker-data';
 import { TransformData } from '../transform-data';
 import { LocationIterator } from '../../util/location-iterator';
 import { createColors } from '../color-data';
+import { ChunkedArray } from 'mol-data/util';
 
 export interface Mesh {
     readonly kind: 'mesh',
@@ -80,7 +81,7 @@ export namespace Mesh {
             Vec3.fromArray(y, v, b);
             Vec3.fromArray(z, v, c);
             Vec3.sub(d1, z, y);
-            Vec3.sub(d2, y, x);
+            Vec3.sub(d2, x, y);
             Vec3.cross(n, d1, d2);
 
             normals[a] += n[0]; normals[a + 1] += n[1]; normals[a + 2] += n[2];
@@ -160,6 +161,71 @@ export namespace Mesh {
         });
     }
 
+    /**
+     * Ensure that each vertices of each triangle have the same group id.
+     * Note that normals are copied over and can't be re-created from the new mesh.
+     */
+    export function uniformTriangleGroup(mesh: Mesh) {
+        const { indexBuffer, vertexBuffer, groupBuffer, normalBuffer, triangleCount, vertexCount } = mesh
+        const ib = indexBuffer.ref.value
+        const vb = vertexBuffer.ref.value
+        const gb = groupBuffer.ref.value
+        const nb = normalBuffer.ref.value
+
+        // new
+        const index = ChunkedArray.create(Uint32Array, 3, 1024, triangleCount)
+
+        // re-use
+        const vertex = ChunkedArray.create(Float32Array, 3, 1024, vb)
+        vertex.currentIndex = vertexCount * 3
+        vertex.elementCount = vertexCount
+        const normal = ChunkedArray.create(Float32Array, 3, 1024, nb)
+        normal.currentIndex = vertexCount * 3
+        normal.elementCount = vertexCount
+        const group = ChunkedArray.create(Float32Array, 1, 1024, gb)
+        group.currentIndex = vertexCount
+        group.elementCount = vertexCount
+
+        const v = Vec3.zero()
+        const n = Vec3.zero()
+
+        function add(i: number) {
+            Vec3.fromArray(v, vb, i * 3)
+            Vec3.fromArray(n, nb, i * 3)
+            ChunkedArray.add3(vertex, v[0], v[1], v[2])
+            ChunkedArray.add3(normal, n[0], n[1], n[2])
+        }
+
+        let newVertexCount = vertexCount
+        for (let i = 0, il = triangleCount; i < il; ++i) {
+            const v0 = ib[i * 3], v1 = ib[i * 3 + 1], v2 = ib[i * 3 + 2]
+            const g0 = gb[v0], g1 = gb[v1], g2 = gb[v2]
+            if (g0 !== g1 || g0 !== g2) {
+                add(v0); add(v1); add(v2)
+                ChunkedArray.add3(index, newVertexCount, newVertexCount + 1, newVertexCount + 2)
+                const g = g1 === g2 ? g1 : g0
+                for (let j = 0; j < 3; ++j) ChunkedArray.add(group, g)
+                newVertexCount += 3
+            } else {
+                ChunkedArray.add3(index, v0, v1, v2)
+            }
+        }
+
+        const newIb = ChunkedArray.compact(index)
+        const newVb = ChunkedArray.compact(vertex)
+        const newNb = ChunkedArray.compact(normal)
+        const newGb = ChunkedArray.compact(group)
+
+        mesh.vertexCount = newVertexCount
+
+        ValueCell.update(vertexBuffer, newVb) as ValueCell<Float32Array>
+        ValueCell.update(groupBuffer, newGb) as ValueCell<Float32Array>
+        ValueCell.update(indexBuffer, newIb) as ValueCell<Uint32Array>
+        ValueCell.update(normalBuffer, newNb) as ValueCell<Float32Array>
+
+        return mesh
+    }
+
     //
 
     export const DefaultProps = {
diff --git a/src/mol-geo/representation/structure/visual/gaussian-surface-mesh.ts b/src/mol-geo/representation/structure/visual/gaussian-surface-mesh.ts
index 59485b6727f1f20830516cdd34265b523ef608ae..8c99efa9716391433384bde15728e10951173277 100644
--- a/src/mol-geo/representation/structure/visual/gaussian-surface-mesh.ts
+++ b/src/mol-geo/representation/structure/visual/gaussian-surface-mesh.ts
@@ -15,16 +15,18 @@ import { computeGaussianDensity, DefaultGaussianDensityProps } from './util/gaus
 
 async function createGaussianSurfaceMesh(ctx: RuntimeContext, unit: Unit, structure: Structure, props: GaussianSurfaceProps, mesh?: Mesh): Promise<Mesh> {
     const { smoothness } = props
-    const { transform, field } = await computeGaussianDensity(unit, structure, props).runAsChild(ctx)
+    const { transform, field, idField } = await computeGaussianDensity(unit, structure, props).runAsChild(ctx)
 
     const surface = await computeMarchingCubes({
         isoLevel: Math.exp(-smoothness),
         scalarField: field,
+        idField,
         oldSurface: mesh
     }).runAsChild(ctx)
 
     Mesh.transformImmediate(surface, transform)
     Mesh.computeNormalsImmediate(surface)
+    Mesh.uniformTriangleGroup(surface)
 
     return surface;
 }
@@ -32,8 +34,6 @@ async function createGaussianSurfaceMesh(ctx: RuntimeContext, unit: Unit, struct
 export const DefaultGaussianSurfaceProps = {
     ...DefaultUnitsMeshProps,
     ...DefaultGaussianDensityProps,
-
-    flipSided: true, // TODO should not be required
 }
 export type GaussianSurfaceProps = typeof DefaultGaussianSurfaceProps
 
diff --git a/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts b/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts
index 6ecfa05d443b4bd7e725898ad697ca32b0f287be..1fe0a7e3718f62a71d5e49ce830a34876f290ee3 100644
--- a/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts
+++ b/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts
@@ -36,6 +36,7 @@ async function createPolymerTraceMesh(ctx: RuntimeContext, unit: Unit, structure
     const vertexCount = linearSegments * radialSegments * polymerElementCount + (radialSegments + 1) * polymerElementCount * 2
     const builder = MeshBuilder.create(vertexCount, vertexCount / 10, mesh)
 
+    const isCoarse = Unit.isCoarse(unit)
     const state = createCurveSegmentState(linearSegments)
     const { curvePoints, normalVectors, binormalVectors } = state
 
@@ -54,6 +55,7 @@ async function createPolymerTraceMesh(ctx: RuntimeContext, unit: Unit, structure
         interpolateCurveSegment(state, v, tension, shift)
 
         let width = sizeTheme.size(v.center)
+        if (isCoarse) width *= aspectRatio / 2
 
         if (isSheet) {
             const height = width * aspectRatio
diff --git a/src/mol-geo/representation/structure/visual/util/gaussian.ts b/src/mol-geo/representation/structure/visual/util/gaussian.ts
index 20505c1f1573567723ed0b1ef8b5813e82a3ee4f..ce06f079db8ad584c7b3814cf4c301aab98e6aa4 100644
--- a/src/mol-geo/representation/structure/visual/util/gaussian.ts
+++ b/src/mol-geo/representation/structure/visual/util/gaussian.ts
@@ -11,7 +11,7 @@ import { Box3D } from 'mol-math/geometry';
 import { SizeTheme } from 'mol-view/theme/size';
 
 export const DefaultGaussianDensityProps = {
-    resolutionFactor: 7,
+    resolutionFactor: 6,
     radiusOffset: 0,
     smoothness: 1.5,
 }
@@ -28,7 +28,7 @@ function getDelta(box: Box3D, resolutionFactor: number) {
     return delta
 }
 
-type Density = { transform: Mat4, field: Tensor }
+type Density = { transform: Mat4, field: Tensor, idField: Tensor }
 
 export function computeGaussianDensity(unit: Unit, structure: Structure, props: GaussianDensityProps) {
     return Task.create('Gaussian Density', async ctx => {
@@ -62,6 +62,11 @@ export async function GaussianDensity(ctx: RuntimeContext, unit: Unit, structure
     const data = space.create()
     const field = Tensor.create(space, data)
 
+    const idData = space.create()
+    const idField = Tensor.create(space, idData)
+
+    const densData = space.create()
+
     const c = Vec3.zero()
 
     const alpha = smoothness
@@ -74,6 +79,8 @@ export async function GaussianDensity(ctx: RuntimeContext, unit: Unit, structure
     const beg = Vec3.zero()
     const end = Vec3.zero()
 
+    const gridPad = 1 / Math.max(...delta)
+
     for (let i = 0; i < elementCount; i++) {
         l.element = elements[i]
         pos(elements[i], v)
@@ -84,7 +91,7 @@ export async function GaussianDensity(ctx: RuntimeContext, unit: Unit, structure
         const radius = sizeTheme.size(l) + radiusOffset
         const rSq = radius * radius
 
-        const r2 = (radiusOffset + radius * 2)
+        const r2 = radiusOffset + radius * 2 + gridPad
         const radius2 = Vec3.create(r2, r2, r2)
         Vec3.mul(radius2, radius2, delta)
         const r2sq = r2 * r2
@@ -99,7 +106,12 @@ export async function GaussianDensity(ctx: RuntimeContext, unit: Unit, structure
                     Vec3.div(p, p, delta)
                     const distSq = Vec3.squaredDistance(p, v)
                     if (distSq <= r2sq) {
-                        space.add(data, x, y, z, Math.exp(-alpha * (distSq / rSq)))
+                        const dens = Math.exp(-alpha * (distSq / rSq))
+                        space.add(data, x, y, z, dens)
+                        if (dens > space.get(densData, x, y, z)) {
+                            space.set(densData, x, y, z, dens)
+                            space.set(idData, x, y, z, i)
+                        }
                     }
                 }
             }
@@ -110,12 +122,9 @@ export async function GaussianDensity(ctx: RuntimeContext, unit: Unit, structure
         }
     }
 
-    const t = Mat4.identity()
-    Mat4.fromScaling(t, Vec3.inverse(Vec3.zero(), delta))
-    Mat4.setTranslation(t, expandedBox.min)
+    const transform = Mat4.identity()
+    Mat4.fromScaling(transform, Vec3.inverse(Vec3.zero(), delta))
+    Mat4.setTranslation(transform, expandedBox.min)
 
-    return {
-        field,
-        transform: t
-    }
+    return { field, idField, transform }
 }
\ No newline at end of file
diff --git a/src/mol-geo/representation/structure/visual/util/polymer/trace-iterator.ts b/src/mol-geo/representation/structure/visual/util/polymer/trace-iterator.ts
index e4b98c009cfe449ea2bd183a5280b6c564fcff9c..37bfc18d317b5c96c015f13bda2c9c15bafbb37b 100644
--- a/src/mol-geo/representation/structure/visual/util/polymer/trace-iterator.ts
+++ b/src/mol-geo/representation/structure/visual/util/polymer/trace-iterator.ts
@@ -11,7 +11,7 @@ import Iterator from 'mol-data/iterator';
 import { Vec3 } from 'mol-math/linear-algebra';
 import SortedRanges from 'mol-data/int/sorted-ranges';
 import { CoarseSphereConformation, CoarseGaussianConformation } from 'mol-model/structure/model/properties/coarse';
-import { getMoleculeType, getElementIndexForAtomRole } from 'mol-model/structure/util';
+import { getAtomicMoleculeType, getElementIndexForAtomRole } from 'mol-model/structure/util';
 import { getPolymerRanges } from '../polymer';
 
 /**
@@ -165,7 +165,7 @@ export class AtomicPolymerTraceIterator implements Iterator<PolymerTraceElement>
             value.first = residueIndex === this.residueSegmentMin
             value.last = residueIndex === this.residueSegmentMax
             value.secStrucChange = this.unit.model.properties.secondaryStructure.key[residueIndex] !== this.unit.model.properties.secondaryStructure.key[residueIndex + 1]
-            value.moleculeType = getMoleculeType(this.unit.model, residueIndex)
+            value.moleculeType = getAtomicMoleculeType(this.unit.model, residueIndex)
 
             if (!residueIt.hasNext) {
                 this.state = AtomicPolymerTraceIteratorState.nextPolymer
diff --git a/src/mol-geo/representation/util.ts b/src/mol-geo/representation/util.ts
index 407ade0f2311b0472fd15688a57b63b555251444..b16444f081f7431283f8807e3aab802f1d388953 100644
--- a/src/mol-geo/representation/util.ts
+++ b/src/mol-geo/representation/util.ts
@@ -22,7 +22,8 @@ export function getQualityProps(props: Partial<QualityProps>, structure?: Struct
     let linearSegments = defaults(props.linearSegments, 8)
 
     if (quality === 'auto' && structure) {
-        const score = structure.elementCount
+        let score = structure.elementCount
+        if (structure.isCoarse) score *= 10
         if (score > 500_000) {
             quality = 'lowest'
         } else if (score > 100_000) {
diff --git a/src/mol-gl/shader/point.frag b/src/mol-gl/shader/point.frag
index c23b0e311b8565d7dc2c445e103c32b48e330aa3..5ef4153d4cfc66a9f10177a2eca17ecc3a836c36 100644
--- a/src/mol-gl/shader/point.frag
+++ b/src/mol-gl/shader/point.frag
@@ -27,9 +27,9 @@ void main(){
 
         #ifdef dPointFilledCircle
             float dist = distance(gl_PointCoord, center);
-            float alpha = 1.0 - smoothstep(radius - uPointEdgeBleach * 2.0, radius, dist);
+            float alpha = 1.0 - smoothstep(radius - uPointEdgeBleach, radius, dist);
+            if (alpha < 0.0001) discard;
             gl_FragColor.a *= alpha;
-            if (gl_FragColor.a < 0.1) discard;
         #endif
 
         #pragma glslify: import('./chunks/apply-marker-color.glsl')
diff --git a/src/mol-io/common/binary-cif/array-encoder.ts b/src/mol-io/common/binary-cif/array-encoder.ts
index 934f338d4f99ab0be94a728d40d6770d030823d9..a681faeef47f5645f73c32128ba5f360f6613f81 100644
--- a/src/mol-io/common/binary-cif/array-encoder.ts
+++ b/src/mol-io/common/binary-cif/array-encoder.ts
@@ -55,8 +55,8 @@ export namespace ArrayEncoder {
     }
 
     export function fromEncoding(encoding: Encoding[]) {
-        const e = by(getProvider(encoding[0]));
-        for (let i = 1; i < encoding.length; i++) e.and(getProvider(encoding[i]));
+        let e = by(getProvider(encoding[0]));
+        for (let i = 1; i < encoding.length; i++) e = e.and(getProvider(encoding[i]));
         return e;
     }
 
@@ -358,9 +358,9 @@ export namespace ArrayEncoding {
      * Packs Int32 array. The packing level is determined automatically to either 1-, 2-, or 4-byte words.
      */
     export function integerPacking(data: Int32Array): Result {
-        if (!(data instanceof Int32Array)) {
-            throw new Error('Integer packing can only be applied to Int32 data.');
-        }
+        // if (!(data instanceof Int32Array)) {
+        //     throw new Error('Integer packing can only be applied to Int32 data.');
+        // }
 
         const packing = determinePacking(data);
 
diff --git a/src/mol-io/common/binary-cif/encoding.ts b/src/mol-io/common/binary-cif/encoding.ts
index 2194d318f3014f16673bd3cfa487acbad58bafb1..6fc0d20a092e7dad6df07756618ad773fbc328ec 100644
--- a/src/mol-io/common/binary-cif/encoding.ts
+++ b/src/mol-io/common/binary-cif/encoding.ts
@@ -84,12 +84,16 @@ export namespace Encoding {
         else if (data instanceof Uint32Array) srcType = Encoding.IntDataType.Uint32;
         else if (data instanceof Float32Array) srcType = Encoding.FloatDataType.Float32;
         else if (data instanceof Float64Array) srcType = Encoding.FloatDataType.Float64;
-        else throw new Error('Unsupported integer data type.');
+        else srcType = Encoding.IntDataType.Int32; // throw new Error('Unsupported integer data type.');
         return srcType;
     }
 
     export function isSignedIntegerDataType(data: TypedIntArray) {
-        return data instanceof Int8Array || data instanceof Int16Array || data instanceof Int32Array;
+        if (data instanceof Int8Array || data instanceof Int16Array || data instanceof Int32Array) return true;
+        for (let i = 0, _i = data.length; i < _i; i++) {
+            if (i < 0) return false;
+        }
+        return true;
     }
 
     // type[] -> Uint8[]
diff --git a/src/mol-io/reader/cif/data-model.ts b/src/mol-io/reader/cif/data-model.ts
index fa90cab9466f3d9412a25ecfe129a3be84b86f5b..fe044426017e052ae96a2e9d420f8c13d52c53c1 100644
--- a/src/mol-io/reader/cif/data-model.ts
+++ b/src/mol-io/reader/cif/data-model.ts
@@ -114,17 +114,20 @@ export function getTensor(category: CifCategory, field: string, space: Tensor.Sp
 }
 
 export function getCifFieldType(field: CifField): Column.Schema.Int | Column.Schema.Float | Column.Schema.Str {
-    let floatCount = 0, hasString = false;
+    let floatCount = 0, hasString = false, undefinedCount = 0;
     for (let i = 0, _i = field.rowCount; i < _i; i++) {
         const k = field.valueKind(i);
-        if (k !== Column.ValueKind.Present) continue;
+        if (k !== Column.ValueKind.Present) {
+            undefinedCount++;
+            continue;
+        }
         const type = getNumberType(field.str(i));
         if (type === NumberType.Int) continue;
         else if (type === NumberType.Float) floatCount++;
         else { hasString = true; break; }
     }
 
-    if (hasString) return Column.Schema.str;
+    if (hasString || undefinedCount === field.rowCount) return Column.Schema.str;
     if (floatCount > 0) return Column.Schema.float;
     return Column.Schema.int;
 }
\ No newline at end of file
diff --git a/src/mol-io/reader/cif/schema/bird.ts b/src/mol-io/reader/cif/schema/bird.ts
index 0614e84107ffc60182a213c6c27fcc01df209493..5cf18d4663f9ec48ae251730e3174961f9cb5c1b 100644
--- a/src/mol-io/reader/cif/schema/bird.ts
+++ b/src/mol-io/reader/cif/schema/bird.ts
@@ -1,7 +1,7 @@
 /**
  * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
- * Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.298, IHM 0.134.
+ * Code-generated 'BIRD' schema file. Dictionary versions: mmCIF 5.299, IHM 0.134.
  *
  * @author mol-star package (src/apps/schema-generator/generate)
  */
diff --git a/src/mol-io/reader/cif/schema/ccd.ts b/src/mol-io/reader/cif/schema/ccd.ts
index 3a5e0d2c0987fb983c92c8ae555634513e5a4fab..06a77ba67de4616307baa458397f54a9a9809e5c 100644
--- a/src/mol-io/reader/cif/schema/ccd.ts
+++ b/src/mol-io/reader/cif/schema/ccd.ts
@@ -1,7 +1,7 @@
 /**
  * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
- * Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.298, IHM 0.134.
+ * Code-generated 'CCD' schema file. Dictionary versions: mmCIF 5.299, IHM 0.134.
  *
  * @author mol-star package (src/apps/schema-generator/generate)
  */
diff --git a/src/mol-io/reader/cif/schema/mmcif.ts b/src/mol-io/reader/cif/schema/mmcif.ts
index 526cb248bf6d32e7953eb55055e8673db48d9931..b0799e894d3049013f18076b7fe913df6b2df5fd 100644
--- a/src/mol-io/reader/cif/schema/mmcif.ts
+++ b/src/mol-io/reader/cif/schema/mmcif.ts
@@ -1,7 +1,7 @@
 /**
  * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
- * Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.298, IHM 0.134.
+ * Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.299, IHM 0.134, entity_branch draft.
  *
  * @author mol-star package (src/apps/schema-generator/generate)
  */
@@ -1470,6 +1470,36 @@ export const mmCIF_Schema = {
          */
         'space_group_name_H-M': str,
     },
+    /**
+     * Data items in the CHEM_COMP_IDENTIFIER category provide
+     * identifiers for chemical components.
+     */
+    pdbx_chem_comp_identifier: {
+        /**
+         * This data item is a pointer to _chem_comp.id in the CHEM_COMP
+         * category.
+         */
+        comp_id: str,
+        /**
+         * This data item contains the identifier value for this
+         * component.
+         */
+        identifier: str,
+        /**
+         * This data item contains the identifier type.
+         */
+        type: Aliased<'COMMON NAME' | 'SYSTEMATIC NAME' | 'CAS REGISTRY NUMBER' | 'PUBCHEM Identifier' | 'MDL Identifier' | 'SYNONYM'>(str),
+        /**
+         * This data item contains the name of the program
+         * or library used to compute the identifier.
+         */
+        program: str,
+        /**
+         * This data item contains the version of the program
+         * or library used to compute the identifier.
+         */
+        program_version: str,
+    },
     /**
      * Data items in the PDBX_STRUCT_MOD_RESIDUE category list the
      * modified polymer components in the entry and provide some
@@ -1886,6 +1916,40 @@ export const mmCIF_Schema = {
          */
         details: str,
     },
+    /**
+     * Data items in the PDBX_ENTITY_DESCRIPTOR category provide
+     * string descriptors of entity chemical structure.
+     */
+    pdbx_entity_descriptor: {
+        /**
+         * This data item is a pointer to _entity_poly.entity_id in the ENTITY
+         * category.
+         */
+        entity_id: str,
+        /**
+         * This data item contains the descriptor value for this
+         * entity.
+         */
+        descriptor: str,
+        /**
+         * This data item contains the descriptor type.
+         */
+        type: Aliased<'LINUCS' | 'IUPAC' | 'IUPAC Abbreviated'>(str),
+        /**
+         * This data item contains the name of the program
+         * or library used to compute the descriptor.
+         */
+        program: str,
+        /**
+         * This data item contains the version of the program
+         * or library used to compute the descriptor.
+         */
+        program_version: str,
+        /**
+         * Ordinal index for this category.
+         */
+        ordinal: int,
+    },
     /**
      * Data items in the IHM_STARTING_MODEL_DETAILS category records the
      * details about structural models used as starting inputs in
@@ -3682,6 +3746,168 @@ export const mmCIF_Schema = {
          */
         dataset_list_id: int,
     },
+    /**
+     * Data items in the PDBX_ENTITY_BRANCH_LIST category specify the list
+     * of monomers in a branched entity.  Allowance is made for the possibility
+     * of microheterogeneity in a sample by allowing a given sequence
+     * number to be correlated with more than one monomer ID. The
+     * corresponding ATOM_SITE entries should reflect this
+     * heterogeneity.
+     */
+    pdbx_entity_branch_list: {
+        /**
+         * This data item is a pointer to _entity.id in the ENTITY category.
+         */
+        entity_id: str,
+        /**
+         * A flag to indicate whether this monomer in the entity is
+         * heterogeneous in sequence.
+         */
+        hetero: Aliased<'no' | 'n' | 'yes' | 'y'>(str),
+        /**
+         * This data item is a pointer to _chem_comp.id in the CHEM_COMP
+         * category.
+         */
+        comp_id: str,
+        /**
+         * The value pair  _pdbx_entity_branch_list.num and _pdbx_entity_branch_list.comp_id
+         * must uniquely identify a record in the PDBX_ENTITY_BRANCH_LIST list.
+         */
+        num: int,
+    },
+    /**
+     * Data items in the PDBX_ENTITY_BRANCH_LINK category give details about
+     * the linkages between components within branched entities.
+     */
+    pdbx_entity_branch_link: {
+        /**
+         * The value of _pdbx_entity_branch_link.link_id uniquely identifies
+         * linkages within the branched entity.
+         */
+        link_id: int,
+        /**
+         * A description of special aspects of this linkage.
+         */
+        details: str,
+        /**
+         * The entity id for this branched entity.
+         *
+         * This data item is a pointer to _pdbx_entity_branch_list.entity_id
+         * in the PDBX_ENTITY_BRANCH_LIST category.
+         */
+        entity_id: str,
+        /**
+         * The component number for the first component making the linkage.
+         *
+         * This data item is a pointer to _pdbx_entity_branch_list.num
+         * in the PDBX_ENTITY_BRANCH_LIST category.
+         */
+        entity_branch_list_num_1: int,
+        /**
+         * The component number for the second component making the linkage.
+         *
+         * This data item is a pointer to _pdbx_entity_branch_list.num
+         * in the PDBX_ENTITY_BRANCH_LIST category.
+         */
+        entity_branch_list_num_2: int,
+        /**
+         * The component identifier for the first component making the linkage.
+         *
+         * This data item is a pointer to _pdbx_entity_branch_list.comp_id
+         * in the PDBX_ENTITY_BRANCH_LIST category.
+         */
+        comp_id_1: str,
+        /**
+         * The component identifier for the second component making the linkage.
+         *
+         * This data item is a pointer to _pdbx_entity_branch_list.comp_id
+         * in the PDBX_ENTITY_BRANCH_LIST category.
+         */
+        comp_id_2: str,
+        /**
+         * The atom identifier/name for the first atom making the linkage.
+         */
+        atom_id_1: str,
+        /**
+         * The leaving atom identifier/name bonded to the first atom making the linkage.
+         */
+        leaving_atom_id_1: str,
+        /**
+         * The chiral configuration of the first atom making the linkage.
+         */
+        atom_stereo_config_1: Aliased<'R' | 'S' | 'N'>(str),
+        /**
+         * The atom identifier/name for the second atom making the linkage.
+         */
+        atom_id_2: str,
+        /**
+         * The leaving atom identifier/name bonded to the second atom making the linkage.
+         */
+        leaving_atom_id_2: str,
+        /**
+         * The chiral configuration of the second atom making the linkage.
+         */
+        atom_stereo_config_2: Aliased<'R' | 'S' | 'N'>(str),
+        /**
+         * The bond order target for the chemical linkage.
+         */
+        value_order: Aliased<'sing' | 'doub' | 'trip' | 'quad' | 'arom' | 'poly' | 'delo' | 'pi'>(str),
+    },
+    /**
+     * Data items in the PDBX_ENTITY_BRANCH category specify the list
+     * of branched entities and the type.
+     */
+    pdbx_entity_branch: {
+        /**
+         * The entity id for this branched entity.
+         *
+         * This data item is a pointer to _entity.id
+         */
+        entity_id: str,
+        /**
+         * The type of this branched oligosaccharide.
+         */
+        type: Aliased<'oligosaccharide'>(str),
+    },
+    /**
+     * The PDBX_BRANCH_SCHEME category provides residue level nomenclature
+     * mapping for branch chain entitie.
+     */
+    pdbx_branch_scheme: {
+        /**
+         * This data item is a pointer to _entity.id in the ENTITY category.
+         */
+        entity_id: str,
+        /**
+         * A flag to indicate whether this monomer in the entity is
+         * heterogeneous in sequence.
+         */
+        hetero: Aliased<'no' | 'n' | 'yes' | 'y'>(str),
+        /**
+         * Pointer to _atom_site.label_asym_id.
+         */
+        asym_id: str,
+        /**
+         * This data item is a pointer to _atom_site.label_comp_id in the
+         * PDBX_ENTITY_BRANCH_LIST category.
+         */
+        mon_id: str,
+        /**
+         * This data item is a pointer to _pdbx_entity_branch_list.num in the
+         * PDBX_ENTITY_BRANCH_LIST category.
+         */
+        num: int,
+        /**
+         * This data item is a pointer to _atom_site.pdbx_auth_seq_id in the
+         * ATOM_SITE category.
+         */
+        auth_seq_num: str,
+        /**
+         * This data item is a pointer to _atom_site.pdbx_auth_comp_id in the
+         * ATOM_SITE category.
+         */
+        auth_mon_id: str,
+    },
 }
 
 export type mmCIF_Schema = typeof mmCIF_Schema;
diff --git a/src/mol-io/reader/cif/text/parser.ts b/src/mol-io/reader/cif/text/parser.ts
index 610c7b0f8eb780224f4fb822295887bded4d50c6..3ee75e270731600d06f6ab72b39d9359c1227f06 100644
--- a/src/mol-io/reader/cif/text/parser.ts
+++ b/src/mol-io/reader/cif/text/parser.ts
@@ -635,7 +635,7 @@ async function parseInternal(data: string, runtimeCtx: RuntimeContext) {
         return error(tokenizer.lineNumber, `Unfinished save frame (${saveFrame.header}).`);
     }
 
-    if (blockCtx.categoryNames.length > 0) {
+    if (blockCtx.categoryNames.length > 0 || saveFrames.length > 0) {
         dataBlocks.push(Data.CifBlock(blockCtx.categoryNames, blockCtx.categories, blockHeader, saveFrames));
     }
 
diff --git a/src/mol-math/geometry/lookup3d/grid.ts b/src/mol-math/geometry/lookup3d/grid.ts
index e91b0aff68af67792644b4ce9f4348b9186d0fb5..6fa09806898f2d7122b88a673613ca356d17a4a6 100644
--- a/src/mol-math/geometry/lookup3d/grid.ts
+++ b/src/mol-math/geometry/lookup3d/grid.ts
@@ -212,7 +212,7 @@ function build(data: PositionData, cellSize?: Vec3) {
 }
 
 interface QueryContext {
-    structure: Grid3D,
+    grid: Grid3D,
     x: number,
     y: number,
     z: number,
@@ -221,12 +221,12 @@ interface QueryContext {
     isCheck: boolean
 }
 
-function createContext(structure: Grid3D): QueryContext {
-    return { structure, x: 0.1, y: 0.1, z: 0.1, radius: 0.1, result: Result.create(), isCheck: false }
+function createContext(grid: Grid3D): QueryContext {
+    return { grid, x: 0.1, y: 0.1, z: 0.1, radius: 0.1, result: Result.create(), isCheck: false }
 }
 
 function query(ctx: QueryContext): boolean {
-    const { min, size: [sX, sY, sZ], bucketOffset, bucketCounts, bucketArray, grid, data: { x: px, y: py, z: pz, indices, radius }, delta, maxRadius } = ctx.structure;
+    const { min, size: [sX, sY, sZ], bucketOffset, bucketCounts, bucketArray, grid, data: { x: px, y: py, z: pz, indices, radius }, delta, maxRadius } = ctx.grid;
     const { radius: inputRadius, isCheck, x, y, z, result } = ctx;
 
     const r = inputRadius + maxRadius;
diff --git a/src/mol-model/structure/export/mmcif.ts b/src/mol-model/structure/export/mmcif.ts
index dd9c71b1f3b64573eacbb03d828bc96f812b62b9..2bfa34c5609985e4f10e006109f0baffbeb80905 100644
--- a/src/mol-model/structure/export/mmcif.ts
+++ b/src/mol-model/structure/export/mmcif.ts
@@ -70,9 +70,15 @@ const Categories = [
     copy_mmCif_category('entity_poly'),
     copy_mmCif_category('entity_poly_seq'),
 
+    // Branch
+    copy_mmCif_category('pdbx_entity_branch'),
+    copy_mmCif_category('pdbx_entity_branch_link'),
+    copy_mmCif_category('pdbx_branch_scheme'),
+
     // Misc
     // TODO: filter for actual present residues?
     copy_mmCif_category('chem_comp'),
+    copy_mmCif_category('pdbx_chem_comp_identifier'),
     copy_mmCif_category('atom_sites'),
 
     _pdbx_struct_mod_residue,
diff --git a/src/mol-model/structure/model/properties/utils/atomic-ranges.ts b/src/mol-model/structure/model/properties/utils/atomic-ranges.ts
index 52db07fc11d0cb33654db16bef3e6ddb83b52713..7853fb37776f4f9abc625c332e08b55883357a20 100644
--- a/src/mol-model/structure/model/properties/utils/atomic-ranges.ts
+++ b/src/mol-model/structure/model/properties/utils/atomic-ranges.ts
@@ -22,13 +22,13 @@ function getMoleculeType(compId: string, chemicalComponentMap: ChemicalComponent
     return cc ? cc.moleculeType : MoleculeType.unknown
 }
 
-function getElementIndexForAtomId(rI: ResidueIndex, atomId: string, data: AtomicData, segments: AtomicSegments, ): ElementIndex {
+function getElementIndexForAtomId(rI: ResidueIndex, atomId: string, data: AtomicData, segments: AtomicSegments): ElementIndex {
     const { offsets } = segments.residueAtomSegments
     const { label_atom_id } = data.atoms
     for (let j = offsets[rI], _j = offsets[rI + 1]; j < _j; j++) {
-        if (label_atom_id.value(j) === atomId) return j as ElementIndex
+        if (label_atom_id.value(j) === atomId) return j
     }
-    return offsets[rI] as ElementIndex
+    return offsets[rI]
 }
 
 function areBackboneConnected(riStart: ResidueIndex, riEnd: ResidueIndex, data: AtomicData, segments: AtomicSegments, conformation: AtomicConformation, chemicalComponentMap: ChemicalComponentMap) {
@@ -46,7 +46,7 @@ function areBackboneConnected(riStart: ResidueIndex, riEnd: ResidueIndex, data:
     const { x, y, z } = conformation
     const pStart = Vec3.create(x[eiStart], y[eiStart], z[eiStart])
     const pEnd = Vec3.create(x[eiEnd], y[eiEnd], z[eiEnd])
-    return Vec3.distance(pStart, pEnd) < 2
+    return Vec3.distance(pStart, pEnd) < 10
 }
 
 export function getAtomicRanges(data: AtomicData, segments: AtomicSegments, conformation: AtomicConformation, chemicalComponentMap: ChemicalComponentMap): AtomicRanges {
@@ -90,6 +90,13 @@ export function getAtomicRanges(data: AtomicData, segments: AtomicSegments, conf
                         startIndex = residueSegment.start
                     } else if (!residueIt.hasNext) {
                         polymerRanges.push(startIndex, residueSegment.end - 1)
+                    } else {
+                        const riStart = segments.residueAtomSegments.index[residueSegment.start]
+                        const riEnd = segments.residueAtomSegments.index[prevEnd - 1]
+                        if (!areBackboneConnected(riStart, riEnd, data, segments, conformation, chemicalComponentMap)) {
+                            polymerRanges.push(startIndex, prevEnd - 1)
+                            startIndex = residueSegment.start
+                        }
                     }
                 } else {
                     startIndex = residueSegment.start // start polymer
diff --git a/src/mol-model/structure/structure/carbohydrates/compute.ts b/src/mol-model/structure/structure/carbohydrates/compute.ts
index d983593c0036ca5c3107a784781e6406c984e366..1c0a7f7ea04bd23a09b790117146511a363b2ca2 100644
--- a/src/mol-model/structure/structure/carbohydrates/compute.ts
+++ b/src/mol-model/structure/structure/carbohydrates/compute.ts
@@ -13,7 +13,7 @@ import PrincipalAxes from 'mol-math/linear-algebra/matrix/principal-axes';
 import { fillSerial } from 'mol-util/array';
 import { ResidueIndex } from '../../model';
 import { ElementSymbol, MoleculeType } from '../../model/types';
-import { getMoleculeType, getPositionMatrix } from '../../util';
+import { getAtomicMoleculeType, getPositionMatrix } from '../../util';
 import StructureElement from '../element';
 import Structure from '../structure';
 import Unit from '../unit';
@@ -131,13 +131,13 @@ export function computeCarbohydrates(structure: Structure): Carbohydrates {
     }
 
     function fixLinkDirection(iA: number, iB: number) {
-        Vec3.sub(elements[iA].geometry!.direction, elements[iB].geometry!.center, elements[iA].geometry!.center)
-        Vec3.normalize(elements[iA].geometry!.direction, elements[iA].geometry!.direction)
+        Vec3.sub(elements[iA].geometry.direction, elements[iB].geometry.center, elements[iA].geometry.center)
+        Vec3.normalize(elements[iA].geometry.direction, elements[iA].geometry.direction)
     }
 
     const tmpV = Vec3.zero()
     function fixTerminalLinkDirection(iA: number, indexB: number, unitB: Unit.Atomic) {
-        const pos = unitB.conformation.position, geo = elements[iA].geometry!;
+        const pos = unitB.conformation.position, geo = elements[iA].geometry;
         Vec3.sub(geo.direction, pos(unitB.elements[indexB], tmpV), geo.center)
         Vec3.normalize(geo.direction, geo.direction)
     }
@@ -164,7 +164,7 @@ export function computeCarbohydrates(structure: Structure): Carbohydrates {
 
                 const saccharideComp = SaccharideNameMap.get(label_comp_id.value(residueIndex)) || UnknownSaccharideComponent
                 if (saccharideComp === UnknownSaccharideComponent) {
-                    if (getMoleculeType(unit.model, residueIndex) !== MoleculeType.saccharide) continue
+                    if (getAtomicMoleculeType(unit.model, residueIndex) !== MoleculeType.saccharide) continue
                 }
 
                 if (!sugarResidueMap) {
@@ -191,36 +191,35 @@ export function computeCarbohydrates(structure: Structure): Carbohydrates {
                     const direction = getDirection(Vec3.zero(), unit, anomericCarbon, center)
                     Vec3.orthogonalize(direction, normal, direction)
 
-                    const altId = getRingAltId(unit, ringAtoms)
+                    const ringAltId = getRingAltId(unit, ringAtoms)
                     const elementIndex = elements.length
                     ringElements.push(elementIndex)
-                    elementsWithRingMap.set(ringElementKey(residueIndex, unit.id, altId), elementIndex)
+                    elementsWithRingMap.set(ringElementKey(residueIndex, unit.id, ringAltId), elementIndex)
                     elements.push({
                         geometry: { center, normal, direction },
                         component: saccharideComp,
-                        unit, residueIndex, anomericCarbon
+                        unit, residueIndex, anomericCarbon, ringAltId
                     })
                 }
 
                 // add carbohydrate links induced by intra-residue bonds
+                // (e.g. for structures from the PDB archive __before__ carbohydrate remediation)
                 const ringCombinations = combinations(fillSerial(new Array(sugarRings.length) as number[]), 2)
                 for (let j = 0, jl = ringCombinations.length; j < jl; ++j) {
                     const rc = ringCombinations[j];
                     const r0 = rings.all[sugarRings[rc[0]]], r1 = rings.all[sugarRings[rc[1]]];
                     // 1,6 glycosidic links are distance 3 and 1,4 glycosidic links are distance 2
                     if (IntAdjacencyGraph.areVertexSetsConnected(unit.links, r0, r1, 3)) {
-                        // TODO handle better, for now fix both directions as it is unclear where the C1 atom is
-                        //  would need to know the path connecting the two rings
-                        fixLinkDirection(ringElements[rc[0]], ringElements[rc[1]])
-                        fixLinkDirection(ringElements[rc[1]], ringElements[rc[0]])
-                        links.push({
-                            carbohydrateIndexA: ringElements[rc[0]],
-                            carbohydrateIndexB: ringElements[rc[1]]
-                        })
-                        links.push({
-                            carbohydrateIndexA: ringElements[rc[1]],
-                            carbohydrateIndexB: ringElements[rc[0]]
-                        })
+                        const re0 = ringElements[rc[0]]
+                        const re1 = ringElements[rc[1]]
+                        if (elements[re0].ringAltId === elements[re1].ringAltId) {
+                            // TODO handle better, for now fix both directions as it is unclear where the C1 atom is
+                            //  would need to know the path connecting the two rings
+                            fixLinkDirection(re0, re1)
+                            fixLinkDirection(re1, re0)
+                            links.push({ carbohydrateIndexA: re0, carbohydrateIndexB: re1 })
+                            links.push({ carbohydrateIndexA: re1, carbohydrateIndexB: re0 })
+                        }
                     }
                 }
             }
@@ -231,7 +230,36 @@ export function computeCarbohydrates(structure: Structure): Carbohydrates {
         return elementsWithRingMap.get(ringElementKey(unit.getResidueIndex(index), unit.id, getAltId(unit, index)))
     }
 
+    // add carbohydrate links induced by intra-unit bonds
+    // (e.g. for structures from the PDB archive __after__ carbohydrate remediation)
+    for (let i = 0, il = elements.length; i < il; ++i) {
+        const carbohydrate = elements[i]
+        const { unit, residueIndex, anomericCarbon } = carbohydrate
+        const { offset, b } = unit.links
+        const ac = SortedArray.indexOf(unit.elements, anomericCarbon) as StructureElement.UnitIndex
+
+        for (let j = offset[ac], jl = offset[ac + 1]; j < jl; ++j) {
+            const bj = b[j] as StructureElement.UnitIndex
+            if (residueIndex !== unit.getResidueIndex(bj)) {
+                const ringElementIndex = getRingElementIndex(unit, bj)
+                if (ringElementIndex !== undefined && ringElementIndex !== i) {
+                    fixLinkDirection(i, ringElementIndex)
+                    links.push({
+                        carbohydrateIndexA: i,
+                        carbohydrateIndexB: ringElementIndex
+                    })
+                    links.push({
+                        carbohydrateIndexA: ringElementIndex,
+                        carbohydrateIndexB: i
+                    })
+                }
+            }
+        }
+
+    }
+
     // get carbohydrate links induced by inter-unit bonds
+    // (e.g. for structures from the PDB archive __before__ carbohydrate remediation)
     for (let i = 0, il = structure.units.length; i < il; ++i) {
         const unit = structure.units[i]
         if (!Unit.isAtomic(unit)) continue
diff --git a/src/mol-model/structure/structure/carbohydrates/data.ts b/src/mol-model/structure/structure/carbohydrates/data.ts
index 4afcf03e445fc2c9671ac8aee04e84ab7a1edb60..0a8d383755bac79c9ffde4be7de61a4b8f331cf0 100644
--- a/src/mol-model/structure/structure/carbohydrates/data.ts
+++ b/src/mol-model/structure/structure/carbohydrates/data.ts
@@ -28,6 +28,7 @@ export interface CarbohydrateElement {
     readonly unit: Unit.Atomic,
     readonly residueIndex: ResidueIndex,
     readonly component: SaccharideComponent,
+    readonly ringAltId: string,
 }
 
 // partial carbohydrate with no ring present
diff --git a/src/mol-model/structure/structure/structure.ts b/src/mol-model/structure/structure/structure.ts
index e22d4b3fba06f57d2ecd2d6dd101ec171e2bfbad..b93f7e96c4edb81c001556a6681763f2b19490ab 100644
--- a/src/mol-model/structure/structure/structure.ts
+++ b/src/mol-model/structure/structure/structure.ts
@@ -40,7 +40,8 @@ class Structure {
         models?: ReadonlyArray<Model>,
         hashCode: number,
         elementCount: number,
-    } = { hashCode: -1, elementCount: 0 };
+        polymerResidueCount: number,
+    } = { hashCode: -1, elementCount: 0, polymerResidueCount: 0 };
 
     subsetBuilder(isSorted: boolean) {
         return new StructureSubsetBuilder(this, isSorted);
@@ -51,6 +52,18 @@ class Structure {
         return this._props.elementCount;
     }
 
+    /** Count of all polymer residues in the structure */
+    get polymerResidueCount() {
+        return this._props.polymerResidueCount;
+    }
+
+    /** Coarse structure, defined as Containing less than twice as many elements as polymer residues */
+    get isCoarse() {
+        const ec = this.elementCount
+        const prc = this.polymerResidueCount
+        return prc && ec ? ec / prc < 2 : false
+    }
+
     get hashCode() {
         if (this._props.hashCode !== -1) return this._props.hashCode;
         return this.computeHash();
@@ -123,12 +136,14 @@ class Structure {
     constructor(units: ArrayLike<Unit>) {
         const map = IntMap.Mutable<Unit>();
         let elementCount = 0;
+        let polymerResidueCount = 0;
         let isSorted = true;
         let lastId = units.length > 0 ? units[0].id : 0;
         for (let i = 0, _i = units.length; i < _i; i++) {
             const u = units[i];
             map.set(u.id, u);
             elementCount += u.elements.length;
+            polymerResidueCount += u.polymerElements.length;
             if (u.id < lastId) isSorted = false;
             lastId = u.id;
         }
@@ -136,6 +151,7 @@ class Structure {
         this.unitMap = map;
         this.units = units as ReadonlyArray<Unit>;
         this._props.elementCount = elementCount;
+        this._props.polymerResidueCount = polymerResidueCount;
     }
 }
 
diff --git a/src/mol-model/structure/structure/util/polymer.ts b/src/mol-model/structure/structure/util/polymer.ts
index e3e9825b4e8f674e1be14efddbeeed2ec77c01e3..a03621f416fa50f264761577f5822fe57be44e30 100644
--- a/src/mol-model/structure/structure/util/polymer.ts
+++ b/src/mol-model/structure/structure/util/polymer.ts
@@ -21,7 +21,7 @@ export function getAtomicPolymerElements(unit: Unit.Atomic) {
         while (residueIt.hasNext) {
             const residueSegment = residueIt.move()
             const { start, end, index } = residueSegment
-            if (OrderedSet.areIntersecting(Interval.ofBounds(elements[start], elements[end - 1]), elements)) {
+            if (OrderedSet.areIntersecting(Interval.ofRange(elements[start], elements[end - 1]), elements)) {
                 const elementIndex = getElementIndexForAtomRole(model, index, 'trace')
                 indices.push(elementIndex === -1 ? residueAtomSegments.offsets[index] : elementIndex)
             }
diff --git a/src/mol-model/structure/util.ts b/src/mol-model/structure/util.ts
index ba416db932b2ef93f2ae7a66884dcbc214773c16..d09d0c6378ba524a2e05a2e0f24bb3b645dd9fdc 100644
--- a/src/mol-model/structure/util.ts
+++ b/src/mol-model/structure/util.ts
@@ -10,7 +10,30 @@ import { Vec3 } from 'mol-math/linear-algebra';
 import { Unit } from './structure';
 import Matrix from 'mol-math/linear-algebra/matrix/matrix';
 
-export function getMoleculeType(model: Model, rI: ResidueIndex) {
+export function getCoarseBegCompId(unit: Unit.Spheres | Unit.Gaussians, element: ElementIndex) {
+    const entityKey = unit.coarseElements.entityKey[element]
+    const seq = unit.model.sequence.byEntityKey[entityKey]
+    const seq_id_begin = unit.coarseElements.seq_id_begin.value(element)
+    return seq.compId.value(seq_id_begin - 1) // 1-indexed
+}
+
+export function getElementMoleculeType(unit: Unit, element: ElementIndex) {
+    let compId = ''
+    switch (unit.kind) {
+        case Unit.Kind.Atomic:
+            compId = unit.model.atomicHierarchy.residues.label_comp_id.value(unit.residueIndex[element])
+            break
+        case Unit.Kind.Spheres:
+        case Unit.Kind.Gaussians:
+            compId = getCoarseBegCompId(unit, element)
+            break
+    }
+    const chemCompMap = unit.model.properties.chemicalComponentMap
+    const cc = chemCompMap.get(compId)
+    return cc ? cc.moleculeType : MoleculeType.unknown
+}
+
+export function getAtomicMoleculeType(model: Model, rI: ResidueIndex) {
     const compId = model.atomicHierarchy.residues.label_comp_id.value(rI)
     const chemCompMap = model.properties.chemicalComponentMap
     const cc = chemCompMap.get(compId)
@@ -36,7 +59,7 @@ export function getElementIndexForAtomId(model: Model, rI: ResidueIndex, atomId:
 }
 
 export function getElementIndexForAtomRole(model: Model, rI: ResidueIndex, atomRole: AtomRole) {
-    const atomId = getAtomIdForAtomRole(getMoleculeType(model, rI), atomRole)
+    const atomId = getAtomIdForAtomRole(getAtomicMoleculeType(model, rI), atomRole)
     return getElementIndexForAtomId(model, rI, atomId)
 }
 
diff --git a/src/mol-util/color/color.ts b/src/mol-util/color/color.ts
index 764875f9470a22faa0e0de4d2d4a8701c41301b1..1668282d9125336756abbd5b20296924472b2552 100644
--- a/src/mol-util/color/color.ts
+++ b/src/mol-util/color/color.ts
@@ -14,6 +14,10 @@ export namespace Color {
         return `rgb(${hexColor >> 16 & 255}, ${hexColor >> 8 & 255}, ${hexColor & 255})`
     }
 
+    export function toHexString(hexColor: Color) {
+        return '0x' + ('000000' + hexColor.toString(16)).slice(-6)
+    }
+
     export function toRgb(hexColor: Color) {
         return [ hexColor >> 16 & 255, hexColor >> 8 & 255, hexColor & 255 ]
     }
@@ -26,6 +30,10 @@ export namespace Color {
         return ((r << 16) | (g << 8) | b) as Color
     }
 
+    export function fromNormalizedRgb(r: number, g: number, b: number ): Color {
+        return (((r * 255) << 16) | ((g * 255) << 8) | (b * 255)) as Color
+    }
+
     /** Copies hex color to rgb array */
     export function toArray(hexColor: Color, array: Helpers.NumberArray, offset: number) {
         array[ offset ] = (hexColor >> 16 & 255)
diff --git a/src/mol-util/color/scale.ts b/src/mol-util/color/scale.ts
index ed486d44d46aa382cf8e5f24402b2060e43f6983..403bf485bec674d3081764df61ddbc7a049f0428 100644
--- a/src/mol-util/color/scale.ts
+++ b/src/mol-util/color/scale.ts
@@ -7,6 +7,7 @@
 import { Color } from './color'
 import { ColorBrewer } from './tables'
 import { ScaleLegend } from 'mol-view/theme/color';
+import { defaults } from 'mol-util';
 
 export interface ColorScale {
     /** Returns hex color for given value */
@@ -15,7 +16,9 @@ export interface ColorScale {
     colorToArray: (value: number, array: Helpers.NumberArray, offset: number) => void
     /** Copies normalized (0 to 1) hex color to rgb array */
     normalizedColorToArray: (value: number, array: Helpers.NumberArray, offset: number) => void
-    /** */
+    /**  */
+    setDomain: (min: number, max: number) => void
+    /** Legend */
     readonly legend: ScaleLegend
 }
 
@@ -23,16 +26,27 @@ export const DefaultColorScale = {
     domain: [0, 1],
     reverse: false,
     colors: ColorBrewer.RdYlBu,
+    minLabel: '' as string | undefined,
+    maxLabel: '' as string | undefined,
 }
 export type ColorScaleProps = Partial<typeof DefaultColorScale>
 
 export namespace ColorScale {
     export function create(props: ColorScaleProps): ColorScale {
         const { domain, reverse, colors: _colors } = { ...DefaultColorScale, ...props }
-        const [ min, max ] = domain
         const colors = reverse ? _colors.slice().reverse() : _colors
         const count1 = colors.length - 1
-        const diff = (max - min) || 1
+
+        let diff = 0, min = 0, max = 0
+        function setDomain(_min: number, _max: number) {
+            min = _min
+            max = _max
+            diff = (max - min) || 1
+        }
+        setDomain(domain[0], domain[1])
+
+        const minLabel = defaults(props.minLabel, min.toString())
+        const maxLabel = defaults(props.maxLabel, max.toString())
 
         function color(value: number) {
             const t = Math.min(colors.length - 1, Math.max(0, ((value - min) / diff) * count1))
@@ -49,7 +63,8 @@ export namespace ColorScale {
             normalizedColorToArray: (value: number, array: Helpers.NumberArray, offset: number) => {
                 Color.toArrayNormalized(color(value), array, offset)
             },
-            get legend() { return ScaleLegend(min, max, colors) }
+            setDomain,
+            get legend() { return ScaleLegend(minLabel, maxLabel, colors) }
         }
     }
 }
diff --git a/src/mol-util/color/tables.ts b/src/mol-util/color/tables.ts
index a9012c3ea2c22a9ed28d914abdab9e75b32f728e..6ee4aa931104f3307f87d2717ec01a9f36d391c4 100644
--- a/src/mol-util/color/tables.ts
+++ b/src/mol-util/color/tables.ts
@@ -56,6 +56,44 @@ export const ColorBrewer = ColorTable({
     Pastel1: [0xfbb4ae, 0xb3cde3, 0xccebc5, 0xdecbe4, 0xfed9a6, 0xffffcc, 0xe5d8bd, 0xfddaec, 0xf2f2f2]
 })
 
+/**
+ * Matplotlib colormaps, including various perceptually uniform shades, see https://bids.github.io/colormap/
+ */
+export const ColorMatplotlib = ColorTable({
+    /** perceptually uniform shades of black-red-white */
+    magma: [
+        0x420f74, 0x4a1079, 0x52127c, 0x5a157e, 0x61187f, 0x691c80, 0x711f81, 0x792281, 0x812581, 0x892881, 0x912a80, 0x992d7f, 0xa12f7e, 0xa9327c, 0xb1357a, 0xb93778, 0xc23a75, 0xca3e72, 0xd1426e, 0xd9466a, 0xe04b66, 0xe65162, 0xec585f, 0xf0605d, 0xf4685b, 0xf7715b, 0xf97b5d, 0xfb8460, 0xfc8e63, 0xfd9768, 0xfda16e, 0xfeaa74, 0xfeb37b, 0xfebc82, 0xfec689, 0xfdcf92, 0xfdd89a, 0xfde1a3, 0xfceaac, 0xfcf3b5, 0xfbfcbf
+    ],
+    /** perceptually uniform shades of black-red-yellow */
+    inferno: [
+        0x480b6a, 0x500d6c, 0x58106d, 0x60136e, 0x68166e, 0x70196e, 0x781c6d, 0x801f6b, 0x88216a, 0x902468, 0x982765, 0xa02a62, 0xa72d5f, 0xaf315b, 0xb73456, 0xbe3852, 0xc53d4d, 0xcc4148, 0xd24742, 0xd94d3d, 0xde5337, 0xe45a31, 0xe8612b, 0xed6825, 0xf0701e, 0xf37918, 0xf68111, 0xf88a0b, 0xfa9306, 0xfb9d06, 0xfba60b, 0xfbb014, 0xfbb91e, 0xf9c32a, 0xf8cd37, 0xf5d745, 0xf3e056, 0xf1e968, 0xf1f27d, 0xf5f891, 0xfcfea4
+    ],
+    /** perceptually uniform shades of blue-red-yellow */
+    plasma: [
+        0x1b068c, 0x250591, 0x2f0495, 0x380499, 0x40039c, 0x49029f, 0x5101a2, 0x5901a4, 0x6100a6, 0x6800a7, 0x7000a8, 0x7801a8, 0x7f03a7, 0x8607a6, 0x8e0ca4, 0x9511a1, 0x9b179e, 0xa21c9a, 0xa82296, 0xae2791, 0xb42d8d, 0xb93388, 0xbe3883, 0xc33e7f, 0xc8447a, 0xcd4975, 0xd14f71, 0xd6556d, 0xda5a68, 0xde6064, 0xe26660, 0xe56c5b, 0xe97257, 0xec7853, 0xef7e4e, 0xf2854a, 0xf58b46, 0xf79241, 0xf9993d, 0xfaa039, 0xfca735, 0xfdaf31, 0xfdb62d, 0xfdbe29, 0xfdc626, 0xfcce25, 0xfad624, 0xf8df24, 0xf5e726, 0xf2f026, 0xeff821
+    ],
+    /** perceptually uniform shades of blue-green-yellow */
+    viridis: [
+        0x45085b, 0x470f62, 0x471669, 0x481d6f, 0x482374, 0x472a79, 0x46307d, 0x453681, 0x433c84, 0x414286, 0x3e4888, 0x3c4d8a, 0x3a538b, 0x37588c, 0x355d8c, 0x32628d, 0x30678d, 0x2e6c8e, 0x2c718e, 0x2a768e, 0x287a8e, 0x267f8e, 0x24848d, 0x23898d, 0x218d8c, 0x1f928c, 0x1e978a, 0x1e9b89, 0x1ea087, 0x20a585, 0x23a982, 0x28ae7f, 0x2eb27c, 0x35b778, 0x3dbb74, 0x45bf6f, 0x4fc369, 0x59c764, 0x64cb5d, 0x70ce56, 0x7cd24f, 0x88d547, 0x95d73f, 0xa2da37, 0xafdc2e, 0xbdde26, 0xcae01e, 0xd7e219, 0xe4e318, 0xf1e51c, 0xfde724
+    ],
+    /**
+     * perceptually uniform shades of blue-green-yellow,
+     * should look effectively identical to colorblind and non-colorblind users
+     */
+    cividis: [
+        0x002c67, 0x003070, 0x083370, 0x16366f, 0x1f3a6e, 0x273d6d, 0x2e416c, 0x34446c, 0x39486c, 0x3f4b6b, 0x444f6b, 0x49526b, 0x4e566c, 0x52596c, 0x575d6d, 0x5b606e, 0x60646e, 0x64676f, 0x686b71, 0x6d6e72, 0x717273, 0x757575, 0x797977, 0x7e7d78, 0x838078, 0x878478, 0x8c8878, 0x918c77, 0x968f77, 0x9b9376, 0xa09775, 0xa59b73, 0xaa9f72, 0xafa370, 0xb4a76f, 0xb9ab6d, 0xbeb06a, 0xc4b468, 0xc9b865, 0xcebc62, 0xd4c15e, 0xd9c55a, 0xdfca56, 0xe4ce51, 0xead34c, 0xefd846, 0xf5dc3f, 0xfbe136, 0xfde737
+    ],
+    /** perceptually uniform shades of white-blue-black-red-white, cyclic */
+    twilight: [
+        0xdfd9e1, 0xd8d7dd, 0xced3d8, 0xc2cdd3, 0xb4c7ce, 0xa7c0ca, 0x9ab8c7, 0x8eb0c5, 0x83a8c3, 0x7a9fc2, 0x7297c0, 0x6b8ebf, 0x6684bd, 0x637bbb, 0x6171b9, 0x5f67b6, 0x5e5cb2, 0x5e51ad, 0x5d46a7, 0x5c3c9f, 0x5b3196, 0x58278b, 0x531e7d, 0x4d176e, 0x46135f, 0x3e1151, 0x381045, 0x32113b, 0x301336, 0x361138, 0x3e113c, 0x471240, 0x521445, 0x5e1749, 0x6a1a4d, 0x761e4f, 0x812350, 0x8b2a50, 0x95324f, 0x9d3a4f, 0xa5434f, 0xac4d50, 0xb25752, 0xb86155, 0xbc6c59, 0xc0775f, 0xc48267, 0xc78d70, 0xc9987b, 0xcca389, 0xceae97, 0xd2b8a6, 0xd6c1b5, 0xdacac4, 0xddd1d1, 0xe0d6db, 0xe1d8e1
+    ]
+})
+
+export const ColorOther = ColorTable({
+    rainbow: [ 0x3361E1, 0x35A845, 0xF9FF00, 0xEC8711, 0xBF2222 ],
+    rwb: [ 0xBF2222, 0xFFFFFF, 0x3361E1 ],
+})
+
 /** X11 color names http://www.w3.org/TR/css3-color/#svg-color */
 export const ColorNames = ColorMap({
     aliceblue: 0xf0f8ff,
diff --git a/src/mol-view/label.ts b/src/mol-view/label.ts
index 39fad6853ccecbd87d3a706083bc9708eba2d550..a2fe43fc6ae887b5963d28037d93f75fe68e96a6 100644
--- a/src/mol-view/label.ts
+++ b/src/mol-view/label.ts
@@ -9,7 +9,7 @@ import { Unit, StructureElement, StructureProperties as Props, Link } from 'mol-
 import { Loci } from 'mol-model/loci';
 import { OrderedSet } from 'mol-data/int';
 
-// for `labelFirst`, don't create right away to avaiod problems with circular dependencies/imports
+// for `labelFirst`, don't create right away to avoid problems with circular dependencies/imports
 let elementLocA: StructureElement
 let elementLocB: StructureElement
 
@@ -53,24 +53,25 @@ export function linkLabel(link: Link.Location) {
     return `${elementLabel(elementLocA)} - ${elementLabel(elementLocB)}`
 }
 
-export function elementLabel(element: StructureElement) {
-    const model = element.unit.model.label
-    const instance = element.unit.conformation.operator.name
+export function elementLabel(location: StructureElement) {
+    const model = location.unit.model.label
+    const instance = location.unit.conformation.operator.name
     let label = ''
 
-    if (Unit.isAtomic(element.unit)) {
-        const asym_id = Props.chain.auth_asym_id(element)
-        const seq_id = Props.residue.auth_seq_id(element)
-        const comp_id = Props.residue.auth_comp_id(element)
-        const atom_id = Props.atom.auth_atom_id(element)
-        label = `[${comp_id}]${seq_id}:${asym_id}.${atom_id}`
-    } else if (Unit.isCoarse(element.unit)) {
-        const asym_id = Props.coarse.asym_id(element)
-        const seq_id_begin = Props.coarse.seq_id_begin(element)
-        const seq_id_end = Props.coarse.seq_id_end(element)
+    if (Unit.isAtomic(location.unit)) {
+        const asym_id = Props.chain.auth_asym_id(location)
+        const seq_id = Props.residue.auth_seq_id(location)
+        const comp_id = Props.residue.auth_comp_id(location)
+        const atom_id = Props.atom.auth_atom_id(location)
+        const alt_id = Props.atom.label_alt_id(location)
+        label = `[${comp_id}]${seq_id}:${asym_id}.${atom_id}${alt_id ? `%${alt_id}` : ''}`
+    } else if (Unit.isCoarse(location.unit)) {
+        const asym_id = Props.coarse.asym_id(location)
+        const seq_id_begin = Props.coarse.seq_id_begin(location)
+        const seq_id_end = Props.coarse.seq_id_end(location)
         if (seq_id_begin === seq_id_end) {
-            const entityKey = Props.coarse.entityKey(element)
-            const seq = element.unit.model.sequence.byEntityKey[entityKey]
+            const entityIndex = Props.coarse.entityKey(location)
+            const seq = location.unit.model.sequence.byEntityKey[entityIndex]
             const comp_id = seq.compId.value(seq_id_begin - 1) // 1-indexed
             label = `[${comp_id}]${seq_id_begin}:${asym_id}`
         } else {
diff --git a/src/mol-view/theme/color.ts b/src/mol-view/theme/color.ts
index f901a17e9caf7304d0c24ad0a47e72e3c7d17a2f..a9ca94485f94d2d8b80b3fae6920662af8c40cba 100644
--- a/src/mol-view/theme/color.ts
+++ b/src/mol-view/theme/color.ts
@@ -19,17 +19,20 @@ import { CrossLinkColorTheme } from './color/cross-link';
 import { ShapeGroupColorTheme } from './color/shape-group';
 import { CustomColorTheme } from './color/custom';
 import { ResidueNameColorTheme } from './color/residue-name';
+import { SequenceIdColorTheme } from './color/sequence-id';
+import { SecondaryStructureColorTheme } from './color/secondary-structure';
+import { MoleculeTypeColorTheme } from './color/molecule-type';
 
 export type LocationColor = (location: Location, isSecondary: boolean) => Color
 
 export interface ScaleLegend {
     kind: 'scale-legend'
-    min: number,
-    max: number,
+    minLabel: string,
+    maxLabel: string,
     colors: Color[]
 }
-export function ScaleLegend(min: number, max: number, colors: Color[]): ScaleLegend {
-    return { kind: 'scale-legend', min, max, colors }
+export function ScaleLegend(minLabel: string, maxLabel: string, colors: Color[]): ScaleLegend {
+    return { kind: 'scale-legend', minLabel, maxLabel, colors }
 }
 
 export interface TableLegend {
@@ -49,16 +52,19 @@ export interface ColorTheme {
 
 export function ColorTheme(props: ColorThemeProps): ColorTheme {
     switch (props.name) {
-        case 'element-index': return ElementIndexColorTheme(props)
         case 'carbohydrate-symbol': return CarbohydrateSymbolColorTheme(props)
-        case 'cross-link': return CrossLinkColorTheme(props)
         case 'chain-id': return ChainIdColorTheme(props)
+        case 'cross-link': return CrossLinkColorTheme(props)
+        case 'custom': return CustomColorTheme(props)
+        case 'element-index': return ElementIndexColorTheme(props)
         case 'element-symbol': return ElementSymbolColorTheme(props)
+        case 'molecule-type': return MoleculeTypeColorTheme(props)
         case 'residue-name': return ResidueNameColorTheme(props)
+        case 'secondary-structure': return SecondaryStructureColorTheme(props)
+        case 'sequence-id': return SequenceIdColorTheme(props)
+        case 'shape-group': return ShapeGroupColorTheme(props)
         case 'unit-index': return UnitIndexColorTheme(props)
         case 'uniform': return UniformColorTheme(props)
-        case 'shape-group': return ShapeGroupColorTheme(props)
-        case 'custom': return CustomColorTheme(props)
     }
 }
 
@@ -74,16 +80,19 @@ export interface ColorThemeProps {
 }
 
 export const ColorThemeInfo = {
-    'element-index': {},
     'carbohydrate-symbol': {},
-    'cross-link': {},
     'chain-id': {},
+    'cross-link': {},
+    'custom': {},
+    'element-index': {},
     'element-symbol': {},
+    'molecule-type': {},
     'residue-name': {},
+    'secondary-structure': {},
+    'sequence-id': {},
+    'shape-group': {},
     'unit-index': {},
     'uniform': {},
-    'shape-group': {},
-    'custom': {}
 }
 export type ColorThemeName = keyof typeof ColorThemeInfo
 export const ColorThemeNames = Object.keys(ColorThemeInfo)
\ No newline at end of file
diff --git a/src/mol-view/theme/color/molecule-type.ts b/src/mol-view/theme/color/molecule-type.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f2be520fe8c9791b3d4920d8634aa7da709d9662
--- /dev/null
+++ b/src/mol-view/theme/color/molecule-type.ts
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
+ */
+
+import { Color, ColorMap } from 'mol-util/color';
+import { StructureElement, Unit, Link, ElementIndex } from 'mol-model/structure';
+import { Location } from 'mol-model/location';
+import { ColorThemeProps, ColorTheme, TableLegend } from '../color';
+import { MoleculeType } from 'mol-model/structure/model/types';
+import { getElementMoleculeType } from 'mol-model/structure/util';
+
+const MoleculeTypeColors = ColorMap({
+    water: 0x386cb0,
+    ion: 0xf0027f,
+    protein: 0xbeaed4,
+    RNA: 0xfdc086,
+    DNA: 0xbf5b17,
+    PNA: 0x42A49A,
+    saccharide: 0x7fc97f,
+})
+
+const DefaultMoleculeTypeColor = Color(0xffff99)
+const Description = 'Assigns a color based on the molecule type of a residue.'
+
+export function moleculeTypeColor(unit: Unit, element: ElementIndex): Color {
+    const moleculeType = getElementMoleculeType(unit, element)
+    switch (moleculeType) {
+        case MoleculeType.water: return MoleculeTypeColors.water
+        case MoleculeType.ion: return MoleculeTypeColors.ion
+        case MoleculeType.protein: return MoleculeTypeColors.protein
+        case MoleculeType.RNA: return MoleculeTypeColors.RNA
+        case MoleculeType.DNA: return MoleculeTypeColors.DNA
+        case MoleculeType.PNA: return MoleculeTypeColors.PNA
+        case MoleculeType.saccharide: return MoleculeTypeColors.saccharide
+    }
+    return DefaultMoleculeTypeColor
+}
+
+export function MoleculeTypeColorTheme(props: ColorThemeProps): ColorTheme {
+    function color(location: Location): Color {
+        if (StructureElement.isLocation(location)) {
+            return moleculeTypeColor(location.unit, location.element)
+        } else if (Link.isLocation(location)) {
+            return moleculeTypeColor(location.aUnit, location.aUnit.elements[location.aIndex])
+        }
+        return DefaultMoleculeTypeColor
+    }
+
+    return {
+        granularity: 'group',
+        color,
+        description: Description,
+        legend: TableLegend(Object.keys(MoleculeTypeColors).map(name => {
+            return [name, (MoleculeTypeColors as any)[name] as Color] as [string, Color]
+        }).concat([[ 'Other/unknown', DefaultMoleculeTypeColor ]]))
+    }
+}
\ No newline at end of file
diff --git a/src/mol-view/theme/color/secondary-structure.ts b/src/mol-view/theme/color/secondary-structure.ts
new file mode 100644
index 0000000000000000000000000000000000000000..55e76a3da44858ad6703322fc7956abfc38f3434
--- /dev/null
+++ b/src/mol-view/theme/color/secondary-structure.ts
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
+ */
+
+import { Color, ColorMap } from 'mol-util/color';
+import { StructureElement, Unit, Link, ElementIndex } from 'mol-model/structure';
+import { Location } from 'mol-model/location';
+import { ColorThemeProps, ColorTheme, TableLegend } from '../color';
+import { SecondaryStructureType, MoleculeType } from 'mol-model/structure/model/types';
+import { getElementMoleculeType } from 'mol-model/structure/util';
+
+// from Jmol http://jmol.sourceforge.net/jscolors/ (shapely)
+const SecondaryStructureColors = ColorMap({
+    'alphaHelix': 0xFF0080,
+    'threeTenHelix': 0xA00080,
+    'piHelix': 0x600080,
+    'betaTurn': 0x6080FF,
+    'betaStrand': 0xFFC800,
+    'coil': 0xFFFFFF,
+
+    'dna': 0xAE00FE,
+    'rna': 0xFD0162,
+
+    'carbohydrate': 0xA6A6FA
+})
+
+const DefaultSecondaryStructureColor = Color(0x808080)
+const Description = 'Assigns a color based on the type of secondary structure and basic molecule type.'
+
+export function secondaryStructureColor(unit: Unit, element: ElementIndex): Color {
+    let secStrucType = SecondaryStructureType.create(SecondaryStructureType.Flag.None)
+    if (Unit.isAtomic(unit)) {
+        secStrucType = unit.model.properties.secondaryStructure.type[unit.residueIndex[element]]
+    }
+
+    if (SecondaryStructureType.is(secStrucType, SecondaryStructureType.Flag.Helix)) {
+        if (SecondaryStructureType.is(secStrucType, SecondaryStructureType.Flag.Helix3Ten)) {
+            return SecondaryStructureColors.threeTenHelix
+        } else if (SecondaryStructureType.is(secStrucType, SecondaryStructureType.Flag.HelixPi)) {
+            return SecondaryStructureColors.piHelix
+        }
+        return SecondaryStructureColors.alphaHelix
+    } else if (SecondaryStructureType.is(secStrucType, SecondaryStructureType.Flag.Beta)) {
+        return SecondaryStructureColors.betaStrand
+    } else if (SecondaryStructureType.is(secStrucType, SecondaryStructureType.Flag.Turn)) {
+        return SecondaryStructureColors.coil
+    } else {
+        const moleculeType = getElementMoleculeType(unit, element)
+        if (moleculeType === MoleculeType.DNA) {
+            return SecondaryStructureColors.dna
+        } else if (moleculeType === MoleculeType.RNA) {
+            return SecondaryStructureColors.rna
+        } else if (moleculeType === MoleculeType.saccharide) {
+            return SecondaryStructureColors.carbohydrate
+        } else if (moleculeType === MoleculeType.protein) {
+            return SecondaryStructureColors.coil
+        }
+    }
+    return DefaultSecondaryStructureColor
+}
+
+export function SecondaryStructureColorTheme(props: ColorThemeProps): ColorTheme {
+    function color(location: Location): Color {
+        if (StructureElement.isLocation(location)) {
+            return secondaryStructureColor(location.unit, location.element)
+        } else if (Link.isLocation(location)) {
+            return secondaryStructureColor(location.aUnit, location.aUnit.elements[location.aIndex])
+        }
+        return DefaultSecondaryStructureColor
+    }
+
+    return {
+        granularity: 'group',
+        color,
+        description: Description,
+        legend: TableLegend(Object.keys(SecondaryStructureColors).map(name => {
+            return [name, (SecondaryStructureColors as any)[name] as Color] as [string, Color]
+        }).concat([[ 'Other', DefaultSecondaryStructureColor ]]))
+    }
+}
\ No newline at end of file
diff --git a/src/mol-view/theme/color/sequence-id.ts b/src/mol-view/theme/color/sequence-id.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7f68bf57e787716054a599e67c789c1214e5814e
--- /dev/null
+++ b/src/mol-view/theme/color/sequence-id.ts
@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
+ */
+
+import { Unit, StructureElement, Link, ElementIndex } from 'mol-model/structure';
+
+import { ColorScale, Color } from 'mol-util/color';
+import { Location } from 'mol-model/location';
+import { ColorThemeProps, ColorTheme } from '../color';
+import { ColorOther } from 'mol-util/color/tables';
+
+const DefaultColor = Color(0xCCCCCC)
+const Description = 'Gives every polymer residue a color based on its `seq_id` value.'
+
+function getSeqId(unit: Unit, element: ElementIndex): number {
+    const { model } = unit
+    switch (unit.kind) {
+        case Unit.Kind.Atomic:
+            const residueIndex = model.atomicHierarchy.residueAtomSegments.index[element]
+            return model.atomicHierarchy.residues.label_seq_id.value(residueIndex)
+        case Unit.Kind.Spheres:
+            return Math.round(
+                (model.coarseHierarchy.spheres.seq_id_begin.value(element) +
+                    model.coarseHierarchy.spheres.seq_id_end.value(element)) / 2
+            )
+        case Unit.Kind.Gaussians:
+            return Math.round(
+                (model.coarseHierarchy.gaussians.seq_id_begin.value(element) +
+                    model.coarseHierarchy.gaussians.seq_id_end.value(element)) / 2
+            )
+    }
+}
+
+function getSequenceLength(unit: Unit, element: ElementIndex) {
+    const { model } = unit
+    let entityId = ''
+    switch (unit.kind) {
+        case Unit.Kind.Atomic:
+            const chainIndex = model.atomicHierarchy.chainAtomSegments.index[element]
+            entityId = model.atomicHierarchy.chains.label_entity_id.value(chainIndex)
+            break
+        case Unit.Kind.Spheres:
+            entityId = model.coarseHierarchy.spheres.entity_id.value(element)
+            break
+        case Unit.Kind.Gaussians:
+            entityId = model.coarseHierarchy.gaussians.entity_id.value(element)
+            break
+    }
+    if (entityId === '') return 0
+    const entityIndex = model.entities.getEntityIndex(entityId)
+    if (entityIndex === -1) return 0
+    return model.sequence.byEntityKey[entityIndex].sequence.sequence.length
+}
+
+export function SequenceIdColorTheme(props: ColorThemeProps): ColorTheme {
+    const p = {
+        ...props,
+        colors: ColorOther.rainbow,
+        minLabel: 'Start',
+        maxLabel: 'End',
+    }
+
+    const scale = ColorScale.create(p)
+    const color = (location: Location): Color => {
+        if (StructureElement.isLocation(location)) {
+            const { unit, element } = location
+            const seq_id = getSeqId(unit, element)
+            if (seq_id > 0) {
+                scale.setDomain(0, getSequenceLength(unit, element) - 1)
+                return scale.color(seq_id)
+            }
+        } else if (Link.isLocation(location)) {
+            const { aUnit, aIndex } = location
+            const seq_id = getSeqId(aUnit, aUnit.elements[aIndex])
+            if (seq_id > 0) {
+                scale.setDomain(0, getSequenceLength(aUnit, aUnit.elements[aIndex]) - 1)
+                return scale.color(seq_id)
+            }
+        }
+        return DefaultColor
+    }
+
+    return {
+        granularity: 'group',
+        color,
+        description: Description,
+        // legend: scale ? TableLegend(table) : undefined
+        legend: scale ? scale.legend : undefined
+    }
+}
\ No newline at end of file
diff --git a/src/servers/model/config.ts b/src/servers/model/config.ts
index 2422cd555d36535c2c5bb84117411ad41468a068..8ae2425e76e98e9dd8e0f4d7c4903802b0e55f2c 100644
--- a/src/servers/model/config.ts
+++ b/src/servers/model/config.ts
@@ -47,6 +47,14 @@ const config = {
     /** Maximum number of requests before "server busy" */
     maxQueueLength: 30,
 
+    /**
+     * Paths (relative to the root directory of the model server) to JavaScript files that specify custom properties
+     */
+    customPropertyProviders: [
+        './properties/pdbe',
+        './properties/rcsb'
+    ],
+
     /**
      * Maps a request identifier to a filename.
      *
@@ -57,7 +65,8 @@ const config = {
      */
     mapFile(source: string, id: string) {
         switch (source.toLowerCase()) {
-            case 'pdb': return `e:/test/quick/${id}_updated.cif`;
+            // case 'pdb': return `e:/test/quick/${id}_updated.cif`;
+            case 'pdb': return `e:/test/mol-star/model/out/${id}_updated.bcif`;
             default: return void 0;
         }
     }
diff --git a/src/servers/model/preprocess/preprocess.ts b/src/servers/model/preprocess/preprocess.ts
index bc6b5abca1b3d748e6d2b06d0dcd0691d61ab225..cf45825dfd51fe76379a5a1d37695f7f37c02d6c 100644
--- a/src/servers/model/preprocess/preprocess.ts
+++ b/src/servers/model/preprocess/preprocess.ts
@@ -23,7 +23,8 @@ export async function preprocessFile(filename: string, outputCif?: string, outpu
 
     //const started = now();
     //ConsoleLogger.log(`${linearId}`, `Reading '${filename}'...`);
-    const input = await readStructure('entry', '_local_', filename);
+    // TODO: support the custom prop provider list here.
+    const input = await readStructure('entry', '_local_', filename, void 0);
     //ConsoleLogger.log(`${linearId}`, `Classifying CIF categories...`);
     const categories = await classifyCif(input.cifFrame);
     //clearLine();
diff --git a/src/servers/model/properties.ts b/src/servers/model/properties.ts
deleted file mode 100644
index 5f292223862c4d3266daaf8e53333e8911241811..0000000000000000000000000000000000000000
--- a/src/servers/model/properties.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
- *
- * @author David Sehnal <david.sehnal@gmail.com>
- * @author Alexander Rose <alexander.rose@weirdbyte.de>
- */
-
-import { Model } from 'mol-model/structure';
-//import { PDBe_structureQualityReport } from './properties/pdbe';
-//import { RCSB_assemblySymmetry } from './properties/rcsb';
-
-export function attachModelProperties(model: Model): Promise<any>[] {
-    // return a list of promises that start attaching the props in parallel
-    // (if there are downloads etc.)
-    return [
-        //PDBe_structureQualityReport(model),
-        //RCSB_assemblySymmetry(model)
-    ];
-}
\ No newline at end of file
diff --git a/src/servers/model/properties/pdbe.ts b/src/servers/model/properties/pdbe.ts
index acda123fe369344a804c4edfb3f4a8d7abfe9200..61d968f9c0ab694b93b9c9b4adb29b728f1c19bc 100644
--- a/src/servers/model/properties/pdbe.ts
+++ b/src/servers/model/properties/pdbe.ts
@@ -2,17 +2,16 @@
  * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
  */
 
- import { Model } from 'mol-model/structure';
-import { StructureQualityReport } from 'mol-model-props/pdbe/structure-quality-report';
-import { fetchRetry } from '../utils/fetch-retry';
+import { Model } from 'mol-model/structure';
+import { PDBe_structureQualityReport } from './providers/pdbe';
 
-export function PDBe_structureQualityReport(model: Model) {
-    return StructureQualityReport.attachFromCifOrApi(model, {
-        PDBe_apiSourceJson: async model => {
-            const rawData = await fetchRetry(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/${model.label.toLowerCase()}`, 1500, 5);
-            return await rawData.json();
-        }
-    });
+export function attachModelProperties(model: Model): Promise<any>[] {
+    // return a list of promises that start attaching the props in parallel
+    // (if there are downloads etc.)
+    return [
+        PDBe_structureQualityReport(model)
+    ];
 }
\ No newline at end of file
diff --git a/src/servers/model/properties/providers/pdbe.ts b/src/servers/model/properties/providers/pdbe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cbc60c8c7e328914f61110adc18cf2d8563ebf0b
--- /dev/null
+++ b/src/servers/model/properties/providers/pdbe.ts
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author David Sehnal <david.sehnal@gmail.com>
+ */
+
+ import { Model } from 'mol-model/structure';
+import { StructureQualityReport } from 'mol-model-props/pdbe/structure-quality-report';
+import { fetchRetry } from '../../utils/fetch-retry';
+
+export function PDBe_structureQualityReport(model: Model) {
+    return StructureQualityReport.attachFromCifOrApi(model, {
+        PDBe_apiSourceJson: async model => {
+            const rawData = await fetchRetry(`https://www.ebi.ac.uk/pdbe/api/validation/residuewise_outlier_summary/entry/${model.label.toLowerCase()}`, 1500, 5);
+            return await rawData.json();
+        }
+    });
+}
\ No newline at end of file
diff --git a/src/servers/model/properties/providers/rcsb.ts b/src/servers/model/properties/providers/rcsb.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fbc3347d3f2812891f9fc36e4a1f0387bda80a31
--- /dev/null
+++ b/src/servers/model/properties/providers/rcsb.ts
@@ -0,0 +1,12 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
+ */
+
+import { Model } from 'mol-model/structure';
+import { AssemblySymmetry } from 'mol-model-props/rcsb/symmetry';
+
+export function RCSB_assemblySymmetry(model: Model) {
+    return AssemblySymmetry.attachFromCifOrAPI(model)
+}
\ No newline at end of file
diff --git a/src/servers/model/properties/rcsb.ts b/src/servers/model/properties/rcsb.ts
index fbc3347d3f2812891f9fc36e4a1f0387bda80a31..9cfaaebcd032270827e765ffe7840a2df1cac499 100644
--- a/src/servers/model/properties/rcsb.ts
+++ b/src/servers/model/properties/rcsb.ts
@@ -1,12 +1,17 @@
 /**
  * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
+ * @author David Sehnal <david.sehnal@gmail.com>
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
  */
 
 import { Model } from 'mol-model/structure';
-import { AssemblySymmetry } from 'mol-model-props/rcsb/symmetry';
+import { RCSB_assemblySymmetry } from './providers/rcsb';
 
-export function RCSB_assemblySymmetry(model: Model) {
-    return AssemblySymmetry.attachFromCifOrAPI(model)
+export function attachModelProperties(model: Model): Promise<any>[] {
+    // return a list of promises that start attaching the props in parallel
+    // (if there are downloads etc.)
+    return [
+        RCSB_assemblySymmetry(model)
+    ];
 }
\ No newline at end of file
diff --git a/src/servers/model/provider.ts b/src/servers/model/provider.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a2789b49055a4232f3273c0381f8e99e7cdbbc50
--- /dev/null
+++ b/src/servers/model/provider.ts
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ *
+ * @author David Sehnal <david.sehnal@gmail.com>
+ */
+
+import { Model } from 'mol-model/structure';
+import Config from './config';
+
+export type ModelPropertiesProvider = (model: Model) => Promise<any>[]
+
+export function createModelPropertiesProviderFromConfig(): ModelPropertiesProvider {
+    if (!Config.customPropertyProviders || Config.customPropertyProviders.length === 0) return () => [];
+
+    const ps: ModelPropertiesProvider[] = [];
+    for (const p of Config.customPropertyProviders) {
+        ps.push(require(p).attachModelProperties);
+    }
+
+    return model => {
+        const ret: Promise<any>[] = [];
+        for (const p of ps) {
+            for (const e of p(model)) ret.push(e);
+        }
+        return ret;
+    }
+}
+
diff --git a/src/servers/model/server/query.ts b/src/servers/model/server/query.ts
index 3fce312b7d55b9959251fbe384cd3f2f33c3c188..f4b699b997fe205d03f3a6290398db1b4ff3d5fe 100644
--- a/src/servers/model/server/query.ts
+++ b/src/servers/model/server/query.ts
@@ -16,6 +16,7 @@ import Version from '../version';
 import { Job } from './jobs';
 import { getStructure, StructureWrapper } from './structure-wrapper';
 import CifField = CifWriter.Field
+import { createModelPropertiesProviderFromConfig } from '../provider';
 
 export interface Stats {
     structure: StructureWrapper,
@@ -25,13 +26,14 @@ export interface Stats {
 
 const perf = new PerformanceMonitor();
 
+const propertyProvider = createModelPropertiesProviderFromConfig();
+
 export async function resolveJob(job: Job): Promise<CifWriter.Encoder<any>> {
     ConsoleLogger.logId(job.id, 'Query', 'Starting.');
 
-    const wrappedStructure = await getStructure(job);
+    const wrappedStructure = await getStructure(job, propertyProvider);
 
     try {
-        const encoder = CifWriter.createEncoder({ binary: job.responseFormat.isBinary, encoderName: `ModelServer ${Version}` });
         perf.start('query');
         const structure = job.queryDefinition.structureTransform
             ? await job.queryDefinition.structureTransform(job.normalizedParams, wrappedStructure.structure)
@@ -40,6 +42,13 @@ export async function resolveJob(job: Job): Promise<CifWriter.Encoder<any>> {
         const result = await StructureSelection.unionStructure(StructureQuery.run(query, structure, Config.maxQueryTimeInMs));
         perf.end('query');
 
+        const encoder = CifWriter.createEncoder({
+            binary: job.responseFormat.isBinary,
+            encoderName: `ModelServer ${Version}`,
+            binaryEncodingPovider: getEncodingProvider(wrappedStructure),
+            binaryAutoClassifyEncoding: true
+        });
+
         ConsoleLogger.logId(job.id, 'Query', 'Query finished.');
 
         perf.start('encode');
@@ -68,6 +77,11 @@ export async function resolveJob(job: Job): Promise<CifWriter.Encoder<any>> {
     }
 }
 
+function getEncodingProvider(structure: StructureWrapper) {
+    if (!structure.isBinary) return void 0;
+    return CifWriter.createEncodingProviderFromCifFrame(structure.cifFrame);
+}
+
 function doError(job: Job, e: any) {
     const encoder = CifWriter.createEncoder({ binary: job.responseFormat.isBinary, encoderName: `ModelServer ${Version}` });
     encoder.writeCategory(_model_server_result, [job]);
diff --git a/src/servers/model/server/structure-wrapper.ts b/src/servers/model/server/structure-wrapper.ts
index 073c737e3bb669f9e44e47c74b89ce01995b3022..cf3506a13d9d3a0ee859da8f00d5c666323f63fa 100644
--- a/src/servers/model/server/structure-wrapper.ts
+++ b/src/servers/model/server/structure-wrapper.ts
@@ -14,7 +14,7 @@ import * as fs from 'fs'
 import * as zlib from 'zlib'
 import { Job } from './jobs';
 import { ConsoleLogger } from 'mol-util/console-logger';
-import { attachModelProperties } from '../properties';
+import { ModelPropertiesProvider } from '../provider';
 
 require('util.promisify').shim();
 
@@ -37,18 +37,19 @@ export interface StructureInfo {
 export interface StructureWrapper {
     info: StructureInfo,
 
+    isBinary: boolean,
     key: string,
     approximateSize: number,
     structure: Structure,
     cifFrame: CifFrame
 }
 
-export async function getStructure(job: Job, allowCache = true): Promise<StructureWrapper> {
+export async function getStructure(job: Job, propertyProvider: ModelPropertiesProvider | undefined, allowCache = true): Promise<StructureWrapper> {
     if (allowCache && Config.cacheParams.useCache) {
         const ret = StructureCache.get(job.key);
         if (ret) return ret;
     }
-    const ret = await readStructure(job.key, job.sourceId, job.entryId);
+    const ret = await readStructure(job.key, job.sourceId, job.entryId, propertyProvider);
     if (allowCache && Config.cacheParams.useCache) {
         StructureCache.add(ret);
     }
@@ -85,7 +86,7 @@ async function parseCif(data: string|Uint8Array) {
     return parsed.result;
 }
 
-export async function readStructure(key: string, sourceId: string | '_local_', entryId: string) {
+export async function readStructure(key: string, sourceId: string | '_local_', entryId: string, propertyProvider: ModelPropertiesProvider | undefined) {
     const filename = sourceId === '_local_' ? entryId : Config.mapFile(sourceId, entryId);
     if (!filename) throw new Error(`Cound not map '${key}' to a valid filename.`);
     if (!fs.existsSync(filename)) throw new Error(`Could not find source file for '${key}'.`);
@@ -108,9 +109,11 @@ export async function readStructure(key: string, sourceId: string | '_local_', e
     perf.end('createModel');
 
     perf.start('attachProps');
-    const modelProps = attachModelProperties(models[0]);
-    for (const p of modelProps) {
-        await tryAttach(key, p);
+    if (propertyProvider) {
+        const modelProps = propertyProvider(models[0]);
+        for (const p of modelProps) {
+            await tryAttach(key, p);
+        }
     }
     perf.end('attachProps');
 
@@ -126,6 +129,7 @@ export async function readStructure(key: string, sourceId: string | '_local_', e
             sourceId,
             entryId
         },
+        isBinary: /\.bcif/.test(filename),
         key,
         approximateSize: typeof data === 'string' ? 2 * data.length : data.length,
         structure,
diff --git a/web/render-test/index.js b/web/render-test/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..bbc178ed8462c881ce85d708e0bf6ee2d60466e2
--- /dev/null
+++ b/web/render-test/index.js
@@ -0,0 +1,8009 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = "./build/node_modules/apps/render-test/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./build/node_modules/apps/render-test/components/assemblies.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/assemblies.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Menu_1 = __webpack_require__(/*! material-ui/Menu */ \"./node_modules/material-ui/Menu/index.js\");\r\nvar Input_1 = __webpack_require__(/*! material-ui/Input */ \"./node_modules/material-ui/Input/index.js\");\r\nvar Form_1 = __webpack_require__(/*! material-ui/Form */ \"./node_modules/material-ui/Form/index.js\");\r\nvar Select_1 = __webpack_require__(/*! material-ui/Select */ \"./node_modules/material-ui/Select/index.js\");\r\nvar observer_1 = __webpack_require__(/*! ./observer */ \"./build/node_modules/apps/render-test/components/observer.js\");\r\nvar Assemblies = /** @class */ (function (_super) {\r\n    __extends(Assemblies, _super);\r\n    function Assemblies() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.state = { loading: false, assemblies: [], value: '' };\r\n        _this.handleValueChange = function (event) {\r\n            _this.props.state.assembly.next(event.target.value);\r\n        };\r\n        return _this;\r\n    }\r\n    Assemblies.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        this.subscribe(this.props.state.loading, function (value) {\r\n            _this.setState({ loading: value });\r\n        });\r\n        this.subscribe(this.props.state.model, function (value) {\r\n            _this.setState({ assemblies: value ? value.symmetry.assemblies : [] });\r\n        });\r\n        this.subscribe(this.props.state.assembly, function (value) {\r\n            _this.setState({ value: value });\r\n        });\r\n    };\r\n    Assemblies.prototype.render = function () {\r\n        var classes = this.props.classes;\r\n        var items = this.state.assemblies.map(function (value, idx) {\r\n            return React.createElement(Menu_1.MenuItem, { key: idx, value: value.id }, value.details);\r\n        });\r\n        return React.createElement(Form_1.FormControl, { className: classes.formControl },\r\n            React.createElement(Input_1.InputLabel, { htmlFor: 'assembly-value' }, \"Assembly\"),\r\n            React.createElement(Select_1.default, { className: classes.selectField, value: this.state.value, onChange: this.handleValueChange, inputProps: {\r\n                    name: 'value',\r\n                    id: 'assembly-value',\r\n                } }, items));\r\n    };\r\n    return Assemblies;\r\n}(observer_1.default));\r\nexports.default = Assemblies;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/assemblies.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/color-theme.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/color-theme.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Menu_1 = __webpack_require__(/*! material-ui/Menu */ \"./node_modules/material-ui/Menu/index.js\");\r\nvar Input_1 = __webpack_require__(/*! material-ui/Input */ \"./node_modules/material-ui/Input/index.js\");\r\nvar Form_1 = __webpack_require__(/*! material-ui/Form */ \"./node_modules/material-ui/Form/index.js\");\r\nvar Select_1 = __webpack_require__(/*! material-ui/Select */ \"./node_modules/material-ui/Select/index.js\");\r\nvar state_1 = __webpack_require__(/*! ../state */ \"./build/node_modules/apps/render-test/state.js\");\r\nvar observer_1 = __webpack_require__(/*! ./observer */ \"./build/node_modules/apps/render-test/components/observer.js\");\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\nvar ColorTheme = /** @class */ (function (_super) {\r\n    __extends(ColorTheme, _super);\r\n    function ColorTheme() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.state = { loading: false, name: 'element-symbol', value: 0xFF0000 };\r\n        _this.handleNameChange = function (event) {\r\n            _this.props.state.colorTheme.next(event.target.value);\r\n        };\r\n        _this.handleValueChange = function (event) {\r\n            _this.props.state.colorValue.next(event.target.value);\r\n        };\r\n        return _this;\r\n    }\r\n    ColorTheme.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        this.subscribe(this.props.state.loading, function (value) {\r\n            _this.setState({ loading: value });\r\n        });\r\n        this.subscribe(this.props.state.colorTheme, function (value) {\r\n            _this.setState({ name: value });\r\n        });\r\n        this.subscribe(this.props.state.colorValue, function (value) {\r\n            _this.setState({ value: value });\r\n        });\r\n    };\r\n    ColorTheme.prototype.render = function () {\r\n        var classes = this.props.classes;\r\n        var colorThemeItems = Object.keys(state_1.ColorTheme).map(function (name, idx) {\r\n            return React.createElement(Menu_1.MenuItem, { key: idx, value: name }, name);\r\n        });\r\n        var colorValueItems = Object.keys(color_1.ColorNames).map(function (name, idx) {\r\n            return React.createElement(Menu_1.MenuItem, { key: idx, value: color_1.ColorNames[name] }, name);\r\n        });\r\n        return React.createElement(\"div\", null,\r\n            React.createElement(Form_1.FormControl, { className: classes.formControl },\r\n                React.createElement(Input_1.InputLabel, { htmlFor: 'color-theme-name' }, \"Color Theme\"),\r\n                React.createElement(Select_1.default, { className: classes.selectField, value: this.state.name, onChange: this.handleNameChange, inputProps: {\r\n                        name: 'name',\r\n                        id: 'color-theme-name',\r\n                    } }, colorThemeItems)),\r\n            React.createElement(Form_1.FormControl, { className: classes.formControl },\r\n                React.createElement(Input_1.InputLabel, { htmlFor: 'uniform-color-value' }, \"Color Value\"),\r\n                React.createElement(Select_1.default, { className: classes.selectField, value: this.state.value, onChange: this.handleValueChange, inputProps: {\r\n                        name: 'value',\r\n                        id: 'uniform-color-value',\r\n                    } }, colorValueItems)));\r\n    };\r\n    return ColorTheme;\r\n}(observer_1.default));\r\nexports.default = ColorTheme;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/color-theme.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/file-input.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/file-input.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar TextField_1 = __webpack_require__(/*! material-ui/TextField */ \"./node_modules/material-ui/TextField/index.js\");\r\nvar Button_1 = __webpack_require__(/*! material-ui/Button */ \"./node_modules/material-ui/Button/index.js\");\r\nvar observer_1 = __webpack_require__(/*! ./observer */ \"./build/node_modules/apps/render-test/components/observer.js\");\r\nvar FileInput = /** @class */ (function (_super) {\r\n    __extends(FileInput, _super);\r\n    function FileInput() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.state = { loading: false };\r\n        return _this;\r\n    }\r\n    FileInput.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        this.subscribe(this.props.state.loading, function (value) {\r\n            _this.setState({ loading: value });\r\n        });\r\n    };\r\n    FileInput.prototype.render = function () {\r\n        var _a = this.props, classes = _a.classes, state = _a.state;\r\n        return React.createElement(\"div\", null,\r\n            React.createElement(TextField_1.default, { label: 'PDB ID', className: classes.textField, disabled: this.state.loading, margin: 'normal', onChange: function (event) {\r\n                    state.pdbId = event.target.value;\r\n                }, onKeyPress: function (event) {\r\n                    if (event.key === 'Enter')\r\n                        state.loadPdbId();\r\n                } }),\r\n            React.createElement(\"input\", { accept: '*.cif', className: classes.input, id: 'button-file', type: 'file', onChange: function (event) {\r\n                    if (event.target.files) {\r\n                        state.loadFile(event.target.files[0]);\r\n                    }\r\n                } }),\r\n            React.createElement(\"label\", { htmlFor: 'button-file' },\r\n                React.createElement(Button_1.default, { variant: 'raised', component: 'span', className: classes.button }, \"Open CIF\")));\r\n    };\r\n    return FileInput;\r\n}(observer_1.default));\r\nexports.default = FileInput;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/file-input.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/observer.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/observer.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Observer = /** @class */ (function (_super) {\r\n    __extends(Observer, _super);\r\n    function Observer() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this._subs = [];\r\n        return _this;\r\n    }\r\n    Observer.prototype.subscribe = function (obs, onNext) {\r\n        this._subs.push(obs.subscribe(onNext));\r\n    };\r\n    Observer.prototype.componentWillUnmount = function () {\r\n        for (var _i = 0, _a = this._subs; _i < _a.length; _i++) {\r\n            var s = _a[_i];\r\n            s.unsubscribe();\r\n        }\r\n        this._subs = [];\r\n    };\r\n    return Observer;\r\n}(React.Component));\r\nexports.default = Observer;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/observer.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/sphere-detail.js":
+/*!*************************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/sphere-detail.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Menu_1 = __webpack_require__(/*! material-ui/Menu */ \"./node_modules/material-ui/Menu/index.js\");\r\nvar Input_1 = __webpack_require__(/*! material-ui/Input */ \"./node_modules/material-ui/Input/index.js\");\r\nvar Form_1 = __webpack_require__(/*! material-ui/Form */ \"./node_modules/material-ui/Form/index.js\");\r\nvar Select_1 = __webpack_require__(/*! material-ui/Select */ \"./node_modules/material-ui/Select/index.js\");\r\nvar observer_1 = __webpack_require__(/*! ./observer */ \"./build/node_modules/apps/render-test/components/observer.js\");\r\nvar SphereDetail = /** @class */ (function (_super) {\r\n    __extends(SphereDetail, _super);\r\n    function SphereDetail() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.state = { loading: false, value: 2 };\r\n        _this.handleValueChange = function (event) {\r\n            _this.props.state.sphereDetail.next(event.target.value);\r\n        };\r\n        return _this;\r\n    }\r\n    SphereDetail.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        this.subscribe(this.props.state.loading, function (value) {\r\n            _this.setState({ loading: value });\r\n        });\r\n        this.subscribe(this.props.state.sphereDetail, function (value) {\r\n            _this.setState({ value: value });\r\n        });\r\n    };\r\n    SphereDetail.prototype.render = function () {\r\n        var classes = this.props.classes;\r\n        var items = [0, 1, 2, 3].map(function (value, idx) {\r\n            return React.createElement(Menu_1.MenuItem, { key: idx, value: value }, value.toString());\r\n        });\r\n        return React.createElement(Form_1.FormControl, { className: classes.formControl },\r\n            React.createElement(Input_1.InputLabel, { htmlFor: 'sphere-detail-value' }, \"Sphere Detail\"),\r\n            React.createElement(Select_1.default, { className: classes.selectField, value: this.state.value, onChange: this.handleValueChange, inputProps: {\r\n                    name: 'value',\r\n                    id: 'sphere-detail-value',\r\n                } }, items));\r\n    };\r\n    return SphereDetail;\r\n}(observer_1.default));\r\nexports.default = SphereDetail;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/sphere-detail.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/viewport.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/viewport.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Viewport = /** @class */ (function (_super) {\r\n    __extends(Viewport, _super);\r\n    function Viewport() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.container = null;\r\n        _this.canvas = null;\r\n        _this.state = { initialized: false };\r\n        return _this;\r\n    }\r\n    Viewport.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        if (this.container && this.canvas) {\r\n            this.props.state.initRenderer(this.canvas, this.container).then(function () {\r\n                _this.setState({ initialized: true });\r\n            });\r\n        }\r\n    };\r\n    Viewport.prototype.render = function () {\r\n        var _this = this;\r\n        return React.createElement(\"div\", { ref: function (elm) { return _this.container = elm; }, style: { height: '100%' } },\r\n            React.createElement(\"canvas\", { ref: function (elm) { return _this.canvas = elm; } }));\r\n    };\r\n    return Viewport;\r\n}(React.Component));\r\nexports.default = Viewport;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/viewport.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/components/visibility.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/components/visibility.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar Form_1 = __webpack_require__(/*! material-ui/Form */ \"./node_modules/material-ui/Form/index.js\");\r\nvar Checkbox_1 = __webpack_require__(/*! material-ui/Checkbox */ \"./node_modules/material-ui/Checkbox/index.js\");\r\nvar observer_1 = __webpack_require__(/*! ./observer */ \"./build/node_modules/apps/render-test/components/observer.js\");\r\nvar Visibility = /** @class */ (function (_super) {\r\n    __extends(Visibility, _super);\r\n    function Visibility() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.state = { loading: false, spacefill: true, point: true };\r\n        _this.handleChange = function (event) {\r\n            switch (event.target.name) {\r\n                case 'point':\r\n                    _this.props.state.pointVisibility.next(event.target.checked);\r\n                    break;\r\n                case 'spacefill':\r\n                    _this.props.state.spacefillVisibility.next(event.target.checked);\r\n                    break;\r\n            }\r\n        };\r\n        return _this;\r\n    }\r\n    Visibility.prototype.componentDidMount = function () {\r\n        var _this = this;\r\n        this.subscribe(this.props.state.loading, function (value) {\r\n            _this.setState({ loading: value });\r\n        });\r\n        this.subscribe(this.props.state.spacefillVisibility, function (value) {\r\n            _this.setState({ spacefill: value });\r\n        });\r\n        this.subscribe(this.props.state.pointVisibility, function (value) {\r\n            _this.setState({ point: value });\r\n        });\r\n    };\r\n    Visibility.prototype.render = function () {\r\n        var classes = this.props.classes;\r\n        return React.createElement(\"div\", { className: classes.formControl },\r\n            React.createElement(Form_1.FormControl, { component: 'fieldset' },\r\n                React.createElement(Form_1.FormLabel, { component: 'legend' }, \"Visibility\"),\r\n                React.createElement(Form_1.FormGroup, null,\r\n                    React.createElement(Form_1.FormControlLabel, { control: React.createElement(Checkbox_1.default, { checked: this.state.point, onChange: this.handleChange, name: 'point' }), label: 'Point' }),\r\n                    React.createElement(Form_1.FormControlLabel, { control: React.createElement(Checkbox_1.default, { checked: this.state.spacefill, onChange: this.handleChange, name: 'spacefill' }), label: 'Spacefill' }))));\r\n    };\r\n    return Visibility;\r\n}(observer_1.default));\r\nexports.default = Visibility;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/components/visibility.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/index.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/apps/render-test/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ui_1 = __webpack_require__(/*! ./ui */ \"./build/node_modules/apps/render-test/ui.js\");\r\nvar state_1 = __webpack_require__(/*! ./state */ \"./build/node_modules/apps/render-test/state.js\");\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar ReactDOM = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\r\nvar state = new state_1.default();\r\nReactDOM.render(React.createElement(ui_1.default, { state: state }), document.getElementById('app'));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/state.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/apps/render-test/state.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rxjs_1 = __webpack_require__(/*! rxjs */ \"./node_modules/rxjs/_esm5/index.js\");\r\n// import { ValueCell } from 'mol-util/value-cell'\r\n// import { Vec3, Mat4 } from 'mol-math/linear-algebra'\r\nvar viewer_1 = __webpack_require__(/*! mol-view/viewer */ \"./build/node_modules/mol-view/viewer.js\");\r\n// import { createColorTexture } from 'mol-gl/util';\r\n// import Icosahedron from 'mol-geo/primitive/icosahedron'\r\n// import Box from 'mol-geo/primitive/box'\r\nvar spacefill_1 = __webpack_require__(/*! mol-geo/representation/structure/spacefill */ \"./build/node_modules/mol-geo/representation/structure/spacefill.js\");\r\nvar point_1 = __webpack_require__(/*! mol-geo/representation/structure/point */ \"./build/node_modules/mol-geo/representation/structure/point.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\n// import mcubes from './utils/mcubes'\r\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./build/node_modules/apps/render-test/utils/index.js\");\r\nvar structure_2 = __webpack_require__(/*! mol-geo/representation/structure */ \"./build/node_modules/mol-geo/representation/structure/index.js\");\r\nvar surface_1 = __webpack_require__(/*! mol-geo/representation/volume/surface */ \"./build/node_modules/mol-geo/representation/volume/surface.js\");\r\nvar volume_1 = __webpack_require__(/*! mol-model/volume */ \"./build/node_modules/mol-model/volume.js\");\r\nvar volume_2 = __webpack_require__(/*! mol-geo/representation/volume */ \"./build/node_modules/mol-geo/representation/volume/index.js\");\r\n// import Cylinder from 'mol-geo/primitive/cylinder';\r\nexports.ColorTheme = {\r\n    'atom-index': {},\r\n    'chain-id': {},\r\n    'element-symbol': {},\r\n    'instance-index': {},\r\n    'uniform': {}\r\n};\r\nvar State = /** @class */ (function () {\r\n    function State() {\r\n        var _this = this;\r\n        this.pdbId = '1crn';\r\n        // pdbId = '5ire'\r\n        this.emdId = '8116';\r\n        // pdbId = '6G1K'\r\n        // emdId = '4339'\r\n        // pdbId = '4cup'\r\n        // emdId = ''\r\n        this.model = new rxjs_1.BehaviorSubject(undefined);\r\n        this.volume = new rxjs_1.BehaviorSubject(undefined);\r\n        this.initialized = new rxjs_1.BehaviorSubject(false);\r\n        this.loading = new rxjs_1.BehaviorSubject(false);\r\n        this.colorTheme = new rxjs_1.BehaviorSubject('element-symbol');\r\n        this.colorValue = new rxjs_1.BehaviorSubject(0xFF4411);\r\n        this.sphereDetail = new rxjs_1.BehaviorSubject(0);\r\n        this.assembly = new rxjs_1.BehaviorSubject('');\r\n        this.pointVisibility = new rxjs_1.BehaviorSubject(true);\r\n        this.spacefillVisibility = new rxjs_1.BehaviorSubject(true);\r\n        this.colorTheme.subscribe(function () { return _this.update(); });\r\n        this.colorValue.subscribe(function () { return _this.update(); });\r\n        this.sphereDetail.subscribe(function () { return _this.update(); });\r\n        this.assembly.subscribe(function () { return _this.initStructure(); });\r\n        this.pointVisibility.subscribe(function () { return _this.updateVisibility(); });\r\n        this.spacefillVisibility.subscribe(function () { return _this.updateVisibility(); });\r\n    }\r\n    State.prototype.getSpacefillProps = function () {\r\n        var colorThemeName = this.colorTheme.getValue();\r\n        return {\r\n            doubleSided: true,\r\n            detail: this.sphereDetail.getValue(),\r\n            colorTheme: colorThemeName === 'uniform' ?\r\n                { name: colorThemeName, value: this.colorValue.getValue() } :\r\n                { name: colorThemeName }\r\n        };\r\n    };\r\n    State.prototype.getPointProps = function () {\r\n        var colorThemeName = this.colorTheme.getValue();\r\n        return {\r\n            sizeTheme: { name: 'uniform', value: 0.1 },\r\n            colorTheme: colorThemeName === 'uniform' ?\r\n                { name: colorThemeName, value: this.colorValue.getValue() } :\r\n                { name: colorThemeName }\r\n        };\r\n    };\r\n    State.prototype.initRenderer = function (canvas, container) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                this.viewer = viewer_1.default.create(canvas, container);\r\n                this.initialized.next(true);\r\n                this.loadPdbId();\r\n                this.loadEmdId();\r\n                this.viewer.animate();\r\n                return [2 /*return*/];\r\n            });\r\n        });\r\n    };\r\n    State.prototype.getStructure = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var model, assembly, structure, assemblies;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        model = this.model.getValue();\r\n                        if (!model)\r\n                            return [2 /*return*/];\r\n                        assembly = this.assembly.getValue();\r\n                        assemblies = model.symmetry.assemblies;\r\n                        if (!assemblies.length) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, mol_task_1.Run(structure_1.StructureSymmetry.buildAssembly(structure_1.Structure.ofModel(model), assembly || '1'), utils_1.log, 500)];\r\n                    case 1:\r\n                        structure = _a.sent();\r\n                        return [3 /*break*/, 3];\r\n                    case 2:\r\n                        structure = structure_1.Structure.ofModel(model);\r\n                        _a.label = 3;\r\n                    case 3: return [2 /*return*/, structure];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.initStructure = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var viewer, structure;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        viewer = this.viewer;\r\n                        if (!viewer || !this.model.getValue())\r\n                            return [2 /*return*/];\r\n                        if (this.pointRepr)\r\n                            this.viewer.remove(this.pointRepr);\r\n                        if (this.spacefillRepr)\r\n                            this.viewer.remove(this.spacefillRepr);\r\n                        return [4 /*yield*/, this.getStructure()];\r\n                    case 1:\r\n                        structure = _a.sent();\r\n                        if (!structure)\r\n                            return [2 /*return*/];\r\n                        this.pointRepr = structure_2.StructureRepresentation(point_1.default);\r\n                        return [4 /*yield*/, mol_task_1.Run(this.pointRepr.create(structure, this.getPointProps()), utils_1.log, 500)];\r\n                    case 2:\r\n                        _a.sent();\r\n                        viewer.add(this.pointRepr);\r\n                        this.spacefillRepr = structure_2.StructureRepresentation(spacefill_1.default);\r\n                        return [4 /*yield*/, mol_task_1.Run(this.spacefillRepr.create(structure, this.getSpacefillProps()), utils_1.log, 500)];\r\n                    case 3:\r\n                        _a.sent();\r\n                        viewer.add(this.spacefillRepr);\r\n                        this.updateVisibility();\r\n                        viewer.requestDraw();\r\n                        console.log(viewer.stats);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.setModel = function (model) {\r\n        this.model.next(model);\r\n        this.initStructure();\r\n        this.loading.next(false);\r\n    };\r\n    State.prototype.loadFile = function (file) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        this.viewer.clear();\r\n                        this.loading.next(true);\r\n                        _a = this.setModel;\r\n                        return [4 /*yield*/, utils_1.getModelFromFile(file)];\r\n                    case 1:\r\n                        _a.apply(this, [(_b.sent())[0]]);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.initVolume = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var viewer, v;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        viewer = this.viewer;\r\n                        v = this.volume.getValue();\r\n                        if (!viewer || !v)\r\n                            return [2 /*return*/];\r\n                        if (this.surfaceRepr)\r\n                            this.viewer.remove(this.surfaceRepr);\r\n                        this.surfaceRepr = volume_2.VolumeRepresentation(surface_1.default);\r\n                        return [4 /*yield*/, mol_task_1.Run(this.surfaceRepr.create(v.volume, {\r\n                                isoValue: volume_1.VolumeIsoValue.relative(v.volume.dataStats, 3.0),\r\n                                alpha: 0.5,\r\n                                flatShaded: false,\r\n                                flipSided: true,\r\n                                doubleSided: true\r\n                            }), utils_1.log, 500)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        viewer.add(this.surfaceRepr);\r\n                        viewer.requestDraw();\r\n                        console.log(viewer.stats);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.loadPdbId = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        if (this.pointRepr)\r\n                            this.viewer.remove(this.pointRepr);\r\n                        if (this.spacefillRepr)\r\n                            this.viewer.remove(this.spacefillRepr);\r\n                        if (this.pdbId.length !== 4)\r\n                            return [2 /*return*/];\r\n                        this.loading.next(true);\r\n                        _a = this.setModel;\r\n                        return [4 /*yield*/, utils_1.getModelFromPdbId(this.pdbId)];\r\n                    case 1:\r\n                        _a.apply(this, [(_b.sent())[0]]);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.setVolume = function (volume) {\r\n        this.volume.next(volume);\r\n        this.initVolume();\r\n        this.loading.next(false);\r\n    };\r\n    State.prototype.loadEmdId = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        if (this.surfaceRepr)\r\n                            this.viewer.remove(this.surfaceRepr);\r\n                        if (this.emdId.length !== 4)\r\n                            return [2 /*return*/];\r\n                        this.loading.next(true);\r\n                        _a = this.setVolume;\r\n                        return [4 /*yield*/, utils_1.getVolumeFromEmdId(this.emdId)];\r\n                    case 1:\r\n                        _a.apply(this, [_b.sent()]);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.update = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (!this.spacefillRepr)\r\n                            return [2 /*return*/];\r\n                        return [4 /*yield*/, mol_task_1.Run(this.spacefillRepr.update(this.getSpacefillProps()), utils_1.log, 500)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [4 /*yield*/, mol_task_1.Run(this.pointRepr.update(this.getPointProps()), utils_1.log, 500)];\r\n                    case 2:\r\n                        _a.sent();\r\n                        this.viewer.add(this.spacefillRepr);\r\n                        this.viewer.add(this.pointRepr);\r\n                        this.viewer.update();\r\n                        this.viewer.requestDraw();\r\n                        console.log(this.viewer.stats);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    State.prototype.updateVisibility = function () {\r\n        if (!this.viewer)\r\n            return;\r\n        if (this.pointRepr) {\r\n            if (this.pointVisibility.getValue()) {\r\n                this.viewer.show(this.pointRepr);\r\n            }\r\n            else {\r\n                this.viewer.hide(this.pointRepr);\r\n            }\r\n        }\r\n        if (this.spacefillRepr) {\r\n            if (this.spacefillVisibility.getValue()) {\r\n                this.viewer.show(this.spacefillRepr);\r\n            }\r\n            else {\r\n                this.viewer.hide(this.spacefillRepr);\r\n            }\r\n        }\r\n        this.viewer.requestDraw();\r\n    };\r\n    return State;\r\n}());\r\nexports.default = State;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/state.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/ui.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/apps/render-test/ui.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\r\nvar styles_1 = __webpack_require__(/*! material-ui/styles */ \"./node_modules/material-ui/styles/index.js\");\r\nvar Typography_1 = __webpack_require__(/*! material-ui/Typography */ \"./node_modules/material-ui/Typography/index.js\");\r\nvar Toolbar_1 = __webpack_require__(/*! material-ui/Toolbar */ \"./node_modules/material-ui/Toolbar/index.js\");\r\nvar AppBar_1 = __webpack_require__(/*! material-ui/AppBar */ \"./node_modules/material-ui/AppBar/index.js\");\r\nvar Drawer_1 = __webpack_require__(/*! material-ui/Drawer */ \"./node_modules/material-ui/Drawer/index.js\");\r\nvar viewport_1 = __webpack_require__(/*! ./components/viewport */ \"./build/node_modules/apps/render-test/components/viewport.js\");\r\nvar file_input_1 = __webpack_require__(/*! ./components/file-input */ \"./build/node_modules/apps/render-test/components/file-input.js\");\r\nvar color_theme_1 = __webpack_require__(/*! ./components/color-theme */ \"./build/node_modules/apps/render-test/components/color-theme.js\");\r\nvar sphere_detail_1 = __webpack_require__(/*! ./components/sphere-detail */ \"./build/node_modules/apps/render-test/components/sphere-detail.js\");\r\nvar visibility_1 = __webpack_require__(/*! ./components/visibility */ \"./build/node_modules/apps/render-test/components/visibility.js\");\r\nvar assemblies_1 = __webpack_require__(/*! ./components/assemblies */ \"./build/node_modules/apps/render-test/components/assemblies.js\");\r\nvar styles = function (theme) { return ({\r\n    root: {\r\n        flexGrow: 1,\r\n        height: 830,\r\n        zIndex: 1,\r\n        overflow: 'hidden',\r\n        position: 'relative',\r\n        display: 'flex',\r\n    },\r\n    appBar: {\r\n        zIndex: theme.zIndex.drawer + 1,\r\n    },\r\n    drawerPaper: {\r\n        position: 'relative',\r\n        width: 240,\r\n    },\r\n    content: {\r\n        flexGrow: 1,\r\n        backgroundColor: theme.palette.background.default,\r\n        padding: theme.spacing.unit * 3,\r\n        minWidth: 0,\r\n    },\r\n    toolbar: theme.mixins.toolbar,\r\n    formControl: {\r\n        margin: theme.spacing.unit,\r\n        width: 200,\r\n    },\r\n    textField: {\r\n        marginLeft: theme.spacing.unit,\r\n        marginRight: theme.spacing.unit,\r\n        width: 200,\r\n    },\r\n    button: {\r\n        margin: theme.spacing.unit,\r\n    },\r\n    input: {\r\n        display: 'none',\r\n    },\r\n}); };\r\nvar decorate = styles_1.withStyles(styles);\r\n;\r\nvar UI = /** @class */ (function (_super) {\r\n    __extends(UI, _super);\r\n    function UI() {\r\n        return _super !== null && _super.apply(this, arguments) || this;\r\n    }\r\n    UI.prototype.render = function () {\r\n        var _a = this.props, classes = _a.classes, state = _a.state;\r\n        return (React.createElement(\"div\", { className: classes.root },\r\n            React.createElement(AppBar_1.default, { position: 'absolute', className: classes.appBar },\r\n                React.createElement(Toolbar_1.default, null,\r\n                    React.createElement(Typography_1.default, { variant: 'title', color: 'inherit', noWrap: true }, \"Mol* Render Test\"))),\r\n            React.createElement(Drawer_1.default, { variant: 'permanent', classes: { paper: classes.drawerPaper, } },\r\n                React.createElement(\"div\", { className: classes.toolbar }),\r\n                React.createElement(file_input_1.default, { state: state, classes: classes }),\r\n                React.createElement(\"form\", { className: classes.root, autoComplete: 'off' },\r\n                    React.createElement(\"div\", null,\r\n                        React.createElement(assemblies_1.default, { state: state, classes: classes }),\r\n                        React.createElement(color_theme_1.default, { state: state, classes: classes }),\r\n                        React.createElement(sphere_detail_1.default, { state: state, classes: classes }),\r\n                        React.createElement(visibility_1.default, { state: state, classes: classes })))),\r\n            React.createElement(\"main\", { className: classes.content },\r\n                React.createElement(\"div\", { className: classes.toolbar }),\r\n                React.createElement(viewport_1.default, { state: state }))));\r\n    };\r\n    return UI;\r\n}(React.Component));\r\nexports.default = decorate(UI);\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/ui.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/apps/render-test/utils/index.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/apps/render-test/utils/index.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar cif_1 = __webpack_require__(/*! mol-io/reader/cif */ \"./build/node_modules/mol-io/reader/cif.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar volume_1 = __webpack_require__(/*! mol-model/volume */ \"./build/node_modules/mol-model/volume.js\");\r\nfunction log(progress) {\r\n    var p = progress.root.progress;\r\n    console.log(p.message + \" \" + (p.current / p.max * 100).toFixed(2) + \"%\");\r\n}\r\nexports.log = log;\r\nfunction downloadCif(url, isBinary) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var data, _a, _b, _c;\r\n        return __generator(this, function (_d) {\r\n            switch (_d.label) {\r\n                case 0: return [4 /*yield*/, fetch(url)];\r\n                case 1:\r\n                    data = _d.sent();\r\n                    _a = parseCif;\r\n                    if (!isBinary) return [3 /*break*/, 3];\r\n                    _c = Uint8Array.bind;\r\n                    return [4 /*yield*/, data.arrayBuffer()];\r\n                case 2:\r\n                    _b = new (_c.apply(Uint8Array, [void 0, _d.sent()]))();\r\n                    return [3 /*break*/, 5];\r\n                case 3: return [4 /*yield*/, data.text()];\r\n                case 4:\r\n                    _b = _d.sent();\r\n                    _d.label = 5;\r\n                case 5: return [2 /*return*/, _a.apply(void 0, [_b])];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.downloadCif = downloadCif;\r\nfunction parseCif(data) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var comp, parsed;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    comp = cif_1.default.parse(data);\r\n                    return [4 /*yield*/, mol_task_1.Run(comp, log, 500)];\r\n                case 1:\r\n                    parsed = _a.sent();\r\n                    if (parsed.isError)\r\n                        throw parsed;\r\n                    return [2 /*return*/, parsed.result];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.parseCif = parseCif;\r\nfunction getModelFromPdbId(pdbid) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var cif;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0: return [4 /*yield*/, downloadCif(\"https://files.rcsb.org/download/\" + pdbid + \".cif\", false)];\r\n                case 1:\r\n                    cif = _a.sent();\r\n                    return [2 /*return*/, structure_1.Model.create({ kind: 'mmCIF', data: cif_1.default.schema.mmCIF(cif.blocks[0]) })];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.getModelFromPdbId = getModelFromPdbId;\r\nvar readFileAsText = function (file) {\r\n    var fileReader = new FileReader();\r\n    return new Promise(function (resolve, reject) {\r\n        fileReader.onerror = function () {\r\n            fileReader.abort();\r\n            reject(new DOMException('Error parsing input file.'));\r\n        };\r\n        fileReader.onload = function () { return resolve(fileReader.result); };\r\n        fileReader.readAsText(file);\r\n    });\r\n};\r\nfunction getModelFromFile(file) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var cif, _a;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    _a = parseCif;\r\n                    return [4 /*yield*/, readFileAsText(file)];\r\n                case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent()])];\r\n                case 2:\r\n                    cif = _b.sent();\r\n                    return [2 /*return*/, structure_1.Model.create({ kind: 'mmCIF', data: cif_1.default.schema.mmCIF(cif.blocks[0]) })];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.getModelFromFile = getModelFromFile;\r\nfunction getVolumeFromEmdId(emdid) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var cif, data, _a;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0: return [4 /*yield*/, downloadCif(\"https://webchem.ncbr.muni.cz/DensityServer/em/emd-\" + emdid + \"/cell?detail=4\", true)];\r\n                case 1:\r\n                    cif = _b.sent();\r\n                    data = cif_1.default.schema.densityServer(cif.blocks[1]);\r\n                    _a = { source: data };\r\n                    return [4 /*yield*/, mol_task_1.Run(volume_1.parseDensityServerData(data))];\r\n                case 2: return [2 /*return*/, (_a.volume = _b.sent(), _a)];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.getVolumeFromEmdId = getVolumeFromEmdId;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/apps/render-test/utils/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/db.js":
+/*!*******************************************!*\
+  !*** ./build/node_modules/mol-data/db.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar database_1 = __webpack_require__(/*! ./db/database */ \"./build/node_modules/mol-data/db/database.js\");\r\nexports.Database = database_1.default;\r\nvar table_1 = __webpack_require__(/*! ./db/table */ \"./build/node_modules/mol-data/db/table.js\");\r\nexports.Table = table_1.default;\r\nvar column_1 = __webpack_require__(/*! ./db/column */ \"./build/node_modules/mol-data/db/column.js\");\r\nexports.Column = column_1.default;\r\nvar ColumnHelpers = __webpack_require__(/*! ./db/column-helpers */ \"./build/node_modules/mol-data/db/column-helpers.js\");\r\nexports.ColumnHelpers = ColumnHelpers;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/db.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/db/column-helpers.js":
+/*!**********************************************************!*\
+  !*** ./build/node_modules/mol-data/db/column-helpers.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction getArrayBounds(rowCount, params) {\r\n    var start = params && typeof params.start !== 'undefined' ? Math.max(Math.min(params.start, rowCount - 1), 0) : 0;\r\n    var end = params && typeof params.end !== 'undefined' ? Math.min(params.end, rowCount) : rowCount;\r\n    return { start: start, end: end };\r\n}\r\nexports.getArrayBounds = getArrayBounds;\r\nfunction createArray(rowCount, params) {\r\n    var c = params && typeof params.array !== 'undefined' ? params.array : Array;\r\n    var _a = getArrayBounds(rowCount, params), start = _a.start, end = _a.end;\r\n    return { array: new c(end - start), start: start, end: end };\r\n}\r\nexports.createArray = createArray;\r\nfunction fillArrayValues(value, target, start) {\r\n    for (var i = 0, _e = target.length; i < _e; i++)\r\n        target[i] = value(start + i);\r\n    return target;\r\n}\r\nexports.fillArrayValues = fillArrayValues;\r\nfunction createAndFillArray(rowCount, value, params) {\r\n    var _a = createArray(rowCount, params), array = _a.array, start = _a.start;\r\n    return fillArrayValues(value, array, start);\r\n}\r\nexports.createAndFillArray = createAndFillArray;\r\nfunction isTypedArray(data) {\r\n    return !!data.buffer && typeof data.byteLength === 'number' && typeof data.BYTES_PER_ELEMENT === 'number';\r\n}\r\nexports.isTypedArray = isTypedArray;\r\nfunction typedArrayWindow(data, params) {\r\n    var constructor = data.constructor, buffer = data.buffer, length = data.length, byteOffset = data.byteOffset, BYTES_PER_ELEMENT = data.BYTES_PER_ELEMENT;\r\n    var _a = getArrayBounds(length, params), start = _a.start, end = _a.end;\r\n    if (start === 0 && end === length)\r\n        return data;\r\n    return new constructor(buffer, byteOffset + BYTES_PER_ELEMENT * start, Math.min(length, end - start));\r\n}\r\nexports.typedArrayWindow = typedArrayWindow;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/db/column-helpers.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/db/column.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-data/db/column.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ColumnHelpers = __webpack_require__(/*! ./column-helpers */ \"./build/node_modules/mol-data/db/column-helpers.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar Column;\r\n(function (Column) {\r\n    var Schema;\r\n    (function (Schema) {\r\n        // T also serves as a default value for undefined columns\r\n        Schema.str = { '@type': 'str', T: '', valueType: 'str' };\r\n        Schema.int = { '@type': 'int', T: 0, valueType: 'int' };\r\n        Schema.coord = { '@type': 'coord', T: 0, valueType: 'float' };\r\n        Schema.float = { '@type': 'float', T: 0, valueType: 'float' };\r\n        function Str(defaultValue) {\r\n            if (defaultValue === void 0) { defaultValue = ''; }\r\n            return { '@type': 'str', T: defaultValue, valueType: 'str' };\r\n        }\r\n        Schema.Str = Str;\r\n        ;\r\n        function Int(defaultValue) {\r\n            if (defaultValue === void 0) { defaultValue = 0; }\r\n            return { '@type': 'int', T: defaultValue, valueType: 'int' };\r\n        }\r\n        Schema.Int = Int;\r\n        ;\r\n        function Float(defaultValue) {\r\n            if (defaultValue === void 0) { defaultValue = 0; }\r\n            return { '@type': 'float', T: defaultValue, valueType: 'float' };\r\n        }\r\n        Schema.Float = Float;\r\n        ;\r\n        function Tensor(space, baseType) {\r\n            if (baseType === void 0) { baseType = Schema.float; }\r\n            return { '@type': 'tensor', T: space.create(), space: space, valueType: 'tensor', baseType: baseType };\r\n        }\r\n        Schema.Tensor = Tensor;\r\n        function Vector(dim, baseType) {\r\n            if (baseType === void 0) { baseType = Schema.float; }\r\n            return Tensor(linear_algebra_1.Tensor.Vector(dim, baseType['@type'] === 'int' ? Int32Array : Float64Array), baseType);\r\n        }\r\n        Schema.Vector = Vector;\r\n        function Matrix(rows, cols, baseType) {\r\n            if (baseType === void 0) { baseType = Schema.float; }\r\n            return Tensor(linear_algebra_1.Tensor.ColumnMajorMatrix(rows, cols, baseType['@type'] === 'int' ? Int32Array : Float64Array), baseType);\r\n        }\r\n        Schema.Matrix = Matrix;\r\n        function Aliased(t, defaultValue) {\r\n            if (typeof defaultValue !== 'undefined')\r\n                return __assign({}, t, { T: defaultValue });\r\n            return t;\r\n        }\r\n        Schema.Aliased = Aliased;\r\n        function List(separator, itemParse, defaultValue) {\r\n            if (defaultValue === void 0) { defaultValue = []; }\r\n            return { '@type': 'list', T: defaultValue, separator: separator, itemParse: itemParse, valueType: 'list' };\r\n        }\r\n        Schema.List = List;\r\n    })(Schema = Column.Schema || (Column.Schema = {}));\r\n    function is(v) {\r\n        return !!v && !!v.schema && !!v.value;\r\n    }\r\n    Column.is = is;\r\n    function Undefined(rowCount, schema) {\r\n        return constColumn(schema['T'], rowCount, schema, 1 /* NotPresent */);\r\n    }\r\n    Column.Undefined = Undefined;\r\n    function ofConst(v, rowCount, type) {\r\n        return constColumn(v, rowCount, type, 0 /* Present */);\r\n    }\r\n    Column.ofConst = ofConst;\r\n    function ofLambda(spec) {\r\n        return lambdaColumn(spec);\r\n    }\r\n    Column.ofLambda = ofLambda;\r\n    function ofArray(spec) {\r\n        return arrayColumn(spec);\r\n    }\r\n    Column.ofArray = ofArray;\r\n    function ofIntArray(array) {\r\n        return arrayColumn({ array: array, schema: Schema.int });\r\n    }\r\n    Column.ofIntArray = ofIntArray;\r\n    function ofFloatArray(array) {\r\n        return arrayColumn({ array: array, schema: Schema.float });\r\n    }\r\n    Column.ofFloatArray = ofFloatArray;\r\n    function ofStringArray(array) {\r\n        return arrayColumn({ array: array, schema: Schema.str });\r\n    }\r\n    Column.ofStringArray = ofStringArray;\r\n    function window(column, start, end) {\r\n        return windowColumn(column, start, end);\r\n    }\r\n    Column.window = window;\r\n    function view(column, indices, checkIndentity) {\r\n        if (checkIndentity === void 0) { checkIndentity = true; }\r\n        return columnView(column, indices, checkIndentity);\r\n    }\r\n    Column.view = view;\r\n    /** A map of the 1st occurence of each value. */\r\n    function createFirstIndexMap(column) {\r\n        return createFirstIndexMapOfColumn(column);\r\n    }\r\n    Column.createFirstIndexMap = createFirstIndexMap;\r\n    function createIndexer(column) {\r\n        return createIndexerOfColumn(column);\r\n    }\r\n    Column.createIndexer = createIndexer;\r\n    function mapToArray(column, f, ctor) {\r\n        return mapToArrayImpl(column, f, ctor || Array);\r\n    }\r\n    Column.mapToArray = mapToArray;\r\n    function areEqual(a, b) {\r\n        return areColumnsEqual(a, b);\r\n    }\r\n    Column.areEqual = areEqual;\r\n    function indicesOf(c, test) {\r\n        return columnIndicesOf(c, test);\r\n    }\r\n    Column.indicesOf = indicesOf;\r\n    /** Makes the column backed by an array. Useful for columns that are accessed often. */\r\n    function asArrayColumn(c, array) {\r\n        if (c['@array'])\r\n            return c;\r\n        if (!c.isDefined)\r\n            return Undefined(c.rowCount, c.schema);\r\n        return arrayColumn({ array: c.toArray({ array: array }), schema: c.schema, valueKind: c.valueKind });\r\n    }\r\n    Column.asArrayColumn = asArrayColumn;\r\n    function copyToArray(c, array, offset) {\r\n        if (offset === void 0) { offset = 0; }\r\n        if (!c.isDefined)\r\n            return;\r\n        var cArray = c['@array'];\r\n        if (cArray) {\r\n            for (var i = 0, _i = cArray.length; i < _i; i++)\r\n                array[offset + i] = cArray[i];\r\n        }\r\n        else {\r\n            for (var i = 0, _i = c.rowCount; i < _i; i++)\r\n                array[offset + i] = c.value(i);\r\n        }\r\n    }\r\n    Column.copyToArray = copyToArray;\r\n})(Column || (Column = {}));\r\nexports.default = Column;\r\nfunction createFirstIndexMapOfColumn(c) {\r\n    var map = new Map();\r\n    for (var i = 0, _i = c.rowCount; i < _i; i++) {\r\n        var v = c.value(i);\r\n        if (!map.has(v))\r\n            map.set(c.value(i), i);\r\n    }\r\n    return map;\r\n}\r\nfunction createIndexerOfColumn(c) {\r\n    var map = new Map();\r\n    for (var i = 0, _i = c.rowCount; i < _i; i++) {\r\n        var v = c.value(i);\r\n        if (!map.has(v))\r\n            map.set(c.value(i), i);\r\n    }\r\n    return function (v) { return map.has(v) ? map.get(v) : -1; };\r\n}\r\nfunction constColumn(v, rowCount, schema, valueKind) {\r\n    var value = function (row) { return v; };\r\n    return {\r\n        schema: schema,\r\n        '@array': void 0,\r\n        isDefined: valueKind === 0 /* Present */,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: function (row) { return valueKind; },\r\n        toArray: function (params) {\r\n            var array = ColumnHelpers.createArray(rowCount, params).array;\r\n            for (var i = 0, _i = array.length; i < _i; i++)\r\n                array[i] = v;\r\n            return array;\r\n        },\r\n        areValuesEqual: function (rowA, rowB) { return true; }\r\n    };\r\n}\r\nfunction lambdaColumn(_a) {\r\n    var value = _a.value, valueKind = _a.valueKind, rowCount = _a.rowCount, schema = _a.schema;\r\n    return {\r\n        schema: schema,\r\n        '@array': void 0,\r\n        isDefined: true,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: valueKind ? valueKind : function (row) { return 0 /* Present */; },\r\n        toArray: function (params) {\r\n            var _a = ColumnHelpers.createArray(rowCount, params), array = _a.array, start = _a.start;\r\n            for (var i = 0, _i = array.length; i < _i; i++)\r\n                array[i] = value(i + start);\r\n            return array;\r\n        },\r\n        areValuesEqual: function (rowA, rowB) { return value(rowA) === value(rowB); }\r\n    };\r\n}\r\nfunction arrayColumn(_a) {\r\n    var array = _a.array, schema = _a.schema, valueKind = _a.valueKind;\r\n    var rowCount = array.length;\r\n    var value = schema.valueType === 'str'\r\n        ? function (row) { var v = array[row]; return typeof v === 'string' ? v : '' + v; }\r\n        : function (row) { return array[row]; };\r\n    var isTyped = ColumnHelpers.isTypedArray(array);\r\n    return {\r\n        schema: schema,\r\n        '@array': array,\r\n        isDefined: true,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: valueKind ? valueKind : function (row) { return 0 /* Present */; },\r\n        toArray: schema.valueType === 'str'\r\n            ? function (params) {\r\n                var _a = ColumnHelpers.getArrayBounds(rowCount, params), start = _a.start, end = _a.end;\r\n                var ret = new (params && typeof params.array !== 'undefined' ? params.array : array.constructor)(end - start);\r\n                for (var i = 0, _i = end - start; i < _i; i++) {\r\n                    var v = array[start + i];\r\n                    ret[i] = typeof v === 'string' ? v : '' + v;\r\n                }\r\n                return ret;\r\n            }\r\n            : isTyped\r\n                ? function (params) { return ColumnHelpers.typedArrayWindow(array, params); }\r\n                : function (params) {\r\n                    var _a = ColumnHelpers.getArrayBounds(rowCount, params), start = _a.start, end = _a.end;\r\n                    if (start === 0 && end === array.length)\r\n                        return array;\r\n                    var ret = new (params && typeof params.array !== 'undefined' ? params.array : array.constructor)(end - start);\r\n                    for (var i = 0, _i = end - start; i < _i; i++)\r\n                        ret[i] = array[start + i];\r\n                    return ret;\r\n                },\r\n        areValuesEqual: function (rowA, rowB) { return array[rowA] === array[rowB]; }\r\n    };\r\n}\r\nfunction windowColumn(column, start, end) {\r\n    if (!column.isDefined)\r\n        return Column.Undefined(end - start, column.schema);\r\n    if (!!column['@array'] && ColumnHelpers.isTypedArray(column['@array']))\r\n        return windowTyped(column, start, end);\r\n    return windowFull(column, start, end);\r\n}\r\nfunction windowTyped(c, start, end) {\r\n    var array = ColumnHelpers.typedArrayWindow(c['@array'], { start: start, end: end });\r\n    return arrayColumn({ array: array, schema: c.schema, valueKind: c.valueKind });\r\n}\r\nfunction windowFull(c, start, end) {\r\n    var v = c.value, vk = c.valueKind, ave = c.areValuesEqual;\r\n    var value = start === 0 ? v : function (row) { return v(row + start); };\r\n    var rowCount = end - start;\r\n    return {\r\n        schema: c.schema,\r\n        '@array': void 0,\r\n        isDefined: c.isDefined,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: start === 0 ? vk : function (row) { return vk(row + start); },\r\n        toArray: function (params) {\r\n            var array = ColumnHelpers.createArray(rowCount, params).array;\r\n            for (var i = 0, _i = array.length; i < _i; i++)\r\n                array[i] = v(i + start);\r\n            return array;\r\n        },\r\n        areValuesEqual: start === 0 ? ave : function (rowA, rowB) { return ave(rowA + start, rowB + start); }\r\n    };\r\n}\r\nfunction isIdentity(map, rowCount) {\r\n    if (map.length !== rowCount)\r\n        return false;\r\n    for (var i = 0, _i = map.length; i < _i; i++) {\r\n        if (map[i] !== i)\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nfunction columnView(c, map, checkIdentity) {\r\n    if (!c.isDefined)\r\n        return c;\r\n    if (checkIdentity && isIdentity(map, c.rowCount))\r\n        return c;\r\n    if (!!c['@array'])\r\n        return arrayView(c, map);\r\n    return viewFull(c, map);\r\n}\r\nfunction arrayView(c, map) {\r\n    var array = c['@array'];\r\n    var ret = new array.constructor(map.length);\r\n    for (var i = 0, _i = map.length; i < _i; i++)\r\n        ret[i] = array[map[i]];\r\n    return arrayColumn({ array: ret, schema: c.schema, valueKind: c.valueKind });\r\n}\r\nfunction viewFull(c, map) {\r\n    var v = c.value, vk = c.valueKind, ave = c.areValuesEqual;\r\n    var value = function (row) { return v(map[row]); };\r\n    var rowCount = map.length;\r\n    return {\r\n        schema: c.schema,\r\n        '@array': void 0,\r\n        isDefined: c.isDefined,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: function (row) { return vk(map[row]); },\r\n        toArray: function (params) {\r\n            var array = ColumnHelpers.createArray(rowCount, params).array;\r\n            for (var i = 0, _i = array.length; i < _i; i++)\r\n                array[i] = v(map[i]);\r\n            return array;\r\n        },\r\n        areValuesEqual: function (rowA, rowB) { return ave(map[rowA], map[rowB]); }\r\n    };\r\n}\r\nfunction mapToArrayImpl(c, f, ctor) {\r\n    var ret = new ctor(c.rowCount);\r\n    for (var i = 0, _i = c.rowCount; i < _i; i++)\r\n        ret[i] = f(c.value(i));\r\n    return ret;\r\n}\r\nfunction areColumnsEqual(a, b) {\r\n    if (a === b)\r\n        return true;\r\n    if (a.rowCount !== b.rowCount || a.isDefined !== b.isDefined || a.schema.valueType !== b.schema.valueType)\r\n        return false;\r\n    if (!!a['@array'] && !!b['@array'])\r\n        return areArraysEqual(a, b);\r\n    return areValuesEqual(a, b);\r\n}\r\nfunction areArraysEqual(a, b) {\r\n    var xs = a['@array'], ys = b['@array'];\r\n    for (var i = 0, _i = a.rowCount; i < _i; i++) {\r\n        if (xs[i] !== ys[i])\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nfunction areValuesEqual(a, b) {\r\n    var va = a.value, vb = b.value;\r\n    for (var i = 0, _i = a.rowCount; i < _i; i++) {\r\n        if (va(i) !== vb(i))\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nfunction columnIndicesOf(c, test) {\r\n    var ret = [], v = c.value;\r\n    for (var i = 0, _i = c.rowCount; i < _i; i++) {\r\n        if (test(v(i)))\r\n            ret[ret.length] = i;\r\n    }\r\n    return ret;\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/db/column.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/db/database.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-data/db/database.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar table_1 = __webpack_require__(/*! ./table */ \"./build/node_modules/mol-data/db/table.js\");\r\nvar Database;\r\n(function (Database) {\r\n    function ofTables(name, schema, tables) {\r\n        var keys = Object.keys(tables);\r\n        var ret = Object.create(null);\r\n        var tableNames = [];\r\n        ret._name = name;\r\n        ret._tableNames = tableNames;\r\n        ret._schema = schema;\r\n        for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n            var k = keys_1[_i];\r\n            if (!table_1.default.is(tables[k]))\r\n                continue;\r\n            ret[k] = tables[k];\r\n            tableNames[tableNames.length] = k;\r\n        }\r\n        return ret;\r\n    }\r\n    Database.ofTables = ofTables;\r\n    function getTablesAsRows(database) {\r\n        var ret = {};\r\n        for (var _i = 0, _a = database._tableNames; _i < _a.length; _i++) {\r\n            var k = _a[_i];\r\n            ret[k] = table_1.default.getRows(database[k]);\r\n        }\r\n        return ret;\r\n    }\r\n    Database.getTablesAsRows = getTablesAsRows;\r\n})(Database || (Database = {}));\r\nexports.default = Database;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/db/database.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/db/table.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-data/db/table.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar column_1 = __webpack_require__(/*! ./column */ \"./build/node_modules/mol-data/db/column.js\");\r\nvar sort_1 = __webpack_require__(/*! ../util/sort */ \"./build/node_modules/mol-data/util/sort.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\n/** An immutable table */\r\nvar Table;\r\n(function (Table) {\r\n    function is(t) {\r\n        return t && typeof t._rowCount === 'number' && !!t._columns && !!t._schema;\r\n    }\r\n    Table.is = is;\r\n    function pickColumns(schema, table, guard) {\r\n        if (guard === void 0) { guard = {}; }\r\n        var ret = Object.create(null);\r\n        var keys = Object.keys(schema);\r\n        ret._rowCount = table._rowCount;\r\n        ret._columns = keys;\r\n        ret._schema = schema;\r\n        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\r\n            var k = keys_1[_a];\r\n            if (!!table[k])\r\n                ret[k] = table[k];\r\n            else if (!!guard[k])\r\n                ret[k] = guard[k];\r\n            else\r\n                throw Error(\"Cannot find column '\" + k + \"'.\");\r\n        }\r\n        return ret;\r\n    }\r\n    Table.pickColumns = pickColumns;\r\n    function ofColumns(schema, columns) {\r\n        var _columns = Object.keys(columns);\r\n        var _rowCount = columns[_columns[0]].rowCount;\r\n        return __assign({ _rowCount: _rowCount, _columns: _columns, _schema: schema }, columns);\r\n    }\r\n    Table.ofColumns = ofColumns;\r\n    function ofUndefinedColumns(schema, rowCount) {\r\n        var ret = Object.create(null);\r\n        var columns = Object.keys(schema);\r\n        ret._rowCount = rowCount;\r\n        ret._columns = columns;\r\n        ret._schema = schema;\r\n        for (var _a = 0, columns_1 = columns; _a < columns_1.length; _a++) {\r\n            var k = columns_1[_a];\r\n            ret[k] = column_1.default.Undefined(rowCount, schema[k]);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.ofUndefinedColumns = ofUndefinedColumns;\r\n    function ofRows(schema, rows) {\r\n        var ret = Object.create(null);\r\n        var rowCount = rows.length;\r\n        var columns = Object.keys(schema);\r\n        ret._rowCount = rowCount;\r\n        ret._columns = columns;\r\n        ret._schema = schema;\r\n        var _loop_1 = function (k) {\r\n            ret[k] = column_1.default.ofLambda({\r\n                rowCount: rowCount,\r\n                schema: schema[k],\r\n                value: function (r) { return rows[r][k]; },\r\n                valueKind: function (r) { return typeof rows[r][k] === 'undefined' ? 1 /* NotPresent */ : 0 /* Present */; }\r\n            });\r\n        };\r\n        for (var _a = 0, columns_2 = columns; _a < columns_2.length; _a++) {\r\n            var k = columns_2[_a];\r\n            _loop_1(k);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.ofRows = ofRows;\r\n    function ofArrays(schema, arrays) {\r\n        var ret = Object.create(null);\r\n        var columns = Object.keys(schema);\r\n        ret._rowCount = arrays[columns[0]].length;\r\n        ret._columns = columns;\r\n        ret._schema = schema;\r\n        for (var _a = 0, columns_3 = columns; _a < columns_3.length; _a++) {\r\n            var k = columns_3[_a];\r\n            ret[k] = typeof arrays[k] !== 'undefined' ? column_1.default.ofArray({ array: arrays[k], schema: schema[k] }) : column_1.default.Undefined(ret._rowCount, schema[k]);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.ofArrays = ofArrays;\r\n    function view(table, schema, view) {\r\n        var ret = Object.create(null);\r\n        var columns = Object.keys(schema);\r\n        ret._rowCount = view.length;\r\n        ret._columns = columns;\r\n        ret._schema = schema;\r\n        for (var _a = 0, columns_4 = columns; _a < columns_4.length; _a++) {\r\n            var k = columns_4[_a];\r\n            ret[k] = column_1.default.view(table[k], view);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.view = view;\r\n    function concat(tables, schema) {\r\n        var ret = Object.create(null);\r\n        var columns = Object.keys(schema);\r\n        ret._rowCount = 0;\r\n        for (var _a = 0, tables_1 = tables; _a < tables_1.length; _a++) {\r\n            var table = tables_1[_a];\r\n            ret._rowCount += table._rowCount;\r\n        }\r\n        var arrays = {};\r\n        for (var _b = 0, columns_5 = columns; _b < columns_5.length; _b++) {\r\n            var column = columns_5[_b];\r\n            arrays[column] = new Array(ret._rowCount);\r\n        }\r\n        ret._columns = columns;\r\n        ret._schema = schema;\r\n        var offset = 0;\r\n        for (var _c = 0, tables_2 = tables; _c < tables_2.length; _c++) {\r\n            var table = tables_2[_c];\r\n            for (var _d = 0, columns_6 = columns; _d < columns_6.length; _d++) {\r\n                var k = columns_6[_d];\r\n                column_1.default.copyToArray(table[k], arrays[k], offset);\r\n            }\r\n            offset += table._rowCount;\r\n        }\r\n        for (var _e = 0, columns_7 = columns; _e < columns_7.length; _e++) {\r\n            var k = columns_7[_e];\r\n            ret[k] = column_1.default.ofArray({ array: arrays[k], schema: schema[k] });\r\n        }\r\n        return ret;\r\n    }\r\n    Table.concat = concat;\r\n    function columnToArray(table, name, array) {\r\n        table[name] = column_1.default.asArrayColumn(table[name], array);\r\n    }\r\n    Table.columnToArray = columnToArray;\r\n    /** Sort and return a new table */\r\n    function sort(table, cmp) {\r\n        var indices = new Int32Array(table._rowCount);\r\n        for (var i = 0, _i = indices.length; i < _i; i++)\r\n            indices[i] = i;\r\n        sort_1.sortArray(indices, function (_, i, j) { return cmp(i, j); });\r\n        var isIdentity = true;\r\n        for (var i = 0, _i = indices.length; i < _i; i++) {\r\n            if (indices[i] !== i) {\r\n                isIdentity = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isIdentity)\r\n            return table;\r\n        var ret = Object.create(null);\r\n        ret._rowCount = table._rowCount;\r\n        ret._columns = table._columns;\r\n        ret._schema = table._schema;\r\n        for (var _a = 0, _b = table._columns; _a < _b.length; _a++) {\r\n            var c = _b[_a];\r\n            ret[c] = column_1.default.view(table[c], indices, false);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.sort = sort;\r\n    function areEqual(a, b) {\r\n        if (a._rowCount !== b._rowCount)\r\n            return false;\r\n        if (a._columns.length !== b._columns.length)\r\n            return false;\r\n        for (var _a = 0, _b = a._columns; _a < _b.length; _a++) {\r\n            var c = _b[_a];\r\n            if (!b[c])\r\n                return false;\r\n        }\r\n        for (var _c = 0, _d = a._columns; _c < _d.length; _c++) {\r\n            var c = _d[_c];\r\n            if (!column_1.default.areEqual(a[c], b[c]))\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n    Table.areEqual = areEqual;\r\n    /** Allocate a new object with the given row values. */\r\n    function getRow(table, index) {\r\n        var row = Object.create(null);\r\n        var cols = table._columns;\r\n        for (var i = 0; i < cols.length; i++) {\r\n            var c = cols[i];\r\n            row[c] = table[c].value(index);\r\n        }\r\n        return row;\r\n    }\r\n    Table.getRow = getRow;\r\n    function getRows(table) {\r\n        var ret = [];\r\n        var c = table._rowCount;\r\n        for (var i = 0; i < c; i++) {\r\n            ret[i] = getRow(table, i);\r\n        }\r\n        return ret;\r\n    }\r\n    Table.getRows = getRows;\r\n    function formatToString(table) {\r\n        var sb = mol_util_1.StringBuilder.create();\r\n        var cols = table._columns, _rowCount = table._rowCount;\r\n        var headerLength = 1;\r\n        mol_util_1.StringBuilder.write(sb, '|');\r\n        for (var i = 0; i < cols.length; i++) {\r\n            mol_util_1.StringBuilder.write(sb, cols[i]);\r\n            mol_util_1.StringBuilder.write(sb, '|');\r\n            headerLength += cols[i].length + 1;\r\n        }\r\n        mol_util_1.StringBuilder.newline(sb);\r\n        mol_util_1.StringBuilder.write(sb, new Array(headerLength + 1).join('-'));\r\n        mol_util_1.StringBuilder.newline(sb);\r\n        for (var r = 0; r < _rowCount; r++) {\r\n            mol_util_1.StringBuilder.write(sb, '|');\r\n            for (var i = 0; i < cols.length; i++) {\r\n                var c = table[cols[i]];\r\n                if (c.valueKind(r) === 0 /* Present */) {\r\n                    mol_util_1.StringBuilder.write(sb, c.value(r));\r\n                    mol_util_1.StringBuilder.write(sb, '|');\r\n                }\r\n                else {\r\n                    mol_util_1.StringBuilder.write(sb, '.|');\r\n                }\r\n            }\r\n            mol_util_1.StringBuilder.newline(sb);\r\n        }\r\n        return mol_util_1.StringBuilder.getString(sb);\r\n    }\r\n    Table.formatToString = formatToString;\r\n})(Table || (Table = {}));\r\nexports.default = Table;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/db/table.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/generic.js":
+/*!************************************************!*\
+  !*** ./build/node_modules/mol-data/generic.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./generic/hash-set */ \"./build/node_modules/mol-data/generic/hash-set.js\"));\r\n__export(__webpack_require__(/*! ./generic/linked-list */ \"./build/node_modules/mol-data/generic/linked-list.js\"));\r\n__export(__webpack_require__(/*! ./generic/unique-array */ \"./build/node_modules/mol-data/generic/unique-array.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/generic.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/generic/hash-set.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-data/generic/hash-set.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HashSetImpl = /** @class */ (function () {\r\n    function HashSetImpl(getHash, areEqual) {\r\n        this.getHash = getHash;\r\n        this.areEqual = areEqual;\r\n        this.size = 0;\r\n        this.byHash = new Map();\r\n    }\r\n    HashSetImpl.prototype.add = function (a) {\r\n        var hash = this.getHash(a);\r\n        if (this.byHash.has(hash)) {\r\n            var xs = this.byHash.get(hash);\r\n            for (var i = 0, _i = xs.length; i < _i; i++) {\r\n                if (this.areEqual(a, xs[i]))\r\n                    return false;\r\n            }\r\n            xs[xs.length] = a;\r\n            this.size++;\r\n            return true;\r\n        }\r\n        else {\r\n            this.byHash.set(hash, [a]);\r\n            this.size++;\r\n            return true;\r\n        }\r\n    };\r\n    HashSetImpl.prototype.has = function (v) {\r\n        var hash = this.getHash(v);\r\n        if (!this.byHash.has(hash))\r\n            return false;\r\n        var xs = this.byHash.get(hash);\r\n        for (var i = 0, _i = xs.length; i < _i; i++) {\r\n            if (this.areEqual(v, xs[i]))\r\n                return true;\r\n        }\r\n        return false;\r\n    };\r\n    return HashSetImpl;\r\n}());\r\n// TODO: add implementations with multilevel hashing support?\r\nfunction HashSet(getHash, areEqual) {\r\n    return new HashSetImpl(getHash, areEqual);\r\n}\r\nexports.HashSet = HashSet;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/generic/hash-set.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/generic/linked-list.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-data/generic/linked-list.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction LinkedList() {\r\n    return new LinkedListImpl();\r\n}\r\nexports.LinkedList = LinkedList;\r\nfunction createListNode(value) {\r\n    return { previous: null, next: null, inList: true, value: value };\r\n}\r\nvar LinkedListImpl = /** @class */ (function () {\r\n    function LinkedListImpl() {\r\n        this.count = 0;\r\n        this.first = null;\r\n        this.last = null;\r\n    }\r\n    LinkedListImpl.prototype.addFirst = function (value) {\r\n        var node = createListNode(value);\r\n        node.inList = true;\r\n        if (this.first)\r\n            this.first.previous = node;\r\n        node.next = this.first;\r\n        this.first = node;\r\n        this.count++;\r\n        if (!this.last)\r\n            this.last = node;\r\n        return node;\r\n    };\r\n    LinkedListImpl.prototype.addLast = function (value) {\r\n        var node = createListNode(value);\r\n        if (this.last !== null) {\r\n            this.last.next = node;\r\n        }\r\n        node.previous = this.last;\r\n        this.last = node;\r\n        if (this.first === null) {\r\n            this.first = node;\r\n        }\r\n        node.inList = true;\r\n        this.count++;\r\n        return node;\r\n    };\r\n    LinkedListImpl.prototype.removeFirst = function () {\r\n        var fst = this.first;\r\n        if (fst) {\r\n            this.remove(fst);\r\n            return fst.value;\r\n        }\r\n        return void 0;\r\n    };\r\n    LinkedListImpl.prototype.removeLast = function () {\r\n        var last = this.last;\r\n        if (last) {\r\n            this.remove(last);\r\n            return last.value;\r\n        }\r\n        return void 0;\r\n    };\r\n    LinkedListImpl.prototype.remove = function (node) {\r\n        if (!node.inList)\r\n            return;\r\n        node.inList = false;\r\n        if (node.previous !== null) {\r\n            node.previous.next = node.next;\r\n        }\r\n        else if ( /*first == item*/node.previous === null) {\r\n            this.first = node.next;\r\n        }\r\n        if (node.next !== null) {\r\n            node.next.previous = node.previous;\r\n        }\r\n        else if ( /*last == item*/node.next === null) {\r\n            this.last = node.previous;\r\n        }\r\n        node.next = null;\r\n        node.previous = null;\r\n        this.count--;\r\n    };\r\n    LinkedListImpl.prototype.find = function (value) {\r\n        var current = this.first;\r\n        while (current !== null) {\r\n            if (current.value === value)\r\n                return current;\r\n            current = current.next;\r\n        }\r\n        return void 0;\r\n    };\r\n    return LinkedListImpl;\r\n}());\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/generic/linked-list.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/generic/unique-array.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-data/generic/unique-array.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UniqueArray;\r\n(function (UniqueArray) {\r\n    function create() {\r\n        return { keys: new Set(), array: [] };\r\n    }\r\n    UniqueArray.create = create;\r\n    function add(_a, key, value) {\r\n        var keys = _a.keys, array = _a.array;\r\n        if (keys.has(key))\r\n            return;\r\n        keys.add(key);\r\n        array[array.length] = value;\r\n    }\r\n    UniqueArray.add = add;\r\n})(UniqueArray || (UniqueArray = {}));\r\nexports.UniqueArray = UniqueArray;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/generic/unique-array.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int.js":
+/*!********************************************!*\
+  !*** ./build/node_modules/mol-data/int.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar interval_1 = __webpack_require__(/*! ./int/interval */ \"./build/node_modules/mol-data/int/interval.js\");\r\nexports.Interval = interval_1.default;\r\nvar ordered_set_1 = __webpack_require__(/*! ./int/ordered-set */ \"./build/node_modules/mol-data/int/ordered-set.js\");\r\nexports.OrderedSet = ordered_set_1.default;\r\nvar segmentation_1 = __webpack_require__(/*! ./int/segmentation */ \"./build/node_modules/mol-data/int/segmentation.js\");\r\nexports.Segmentation = segmentation_1.default;\r\nvar sorted_array_1 = __webpack_require__(/*! ./int/sorted-array */ \"./build/node_modules/mol-data/int/sorted-array.js\");\r\nexports.SortedArray = sorted_array_1.default;\r\nvar tuple_1 = __webpack_require__(/*! ./int/tuple */ \"./build/node_modules/mol-data/int/tuple.js\");\r\nexports.Tuple = tuple_1.default;\r\nvar linked_index_1 = __webpack_require__(/*! ./int/linked-index */ \"./build/node_modules/mol-data/int/linked-index.js\");\r\nexports.LinkedIndex = linked_index_1.default;\r\nvar map_1 = __webpack_require__(/*! ./int/map */ \"./build/node_modules/mol-data/int/map.js\");\r\nexports.IntMap = map_1.default;\r\nvar iterator_1 = __webpack_require__(/*! ./iterator */ \"./build/node_modules/mol-data/iterator.js\");\r\nexports.Iterator = iterator_1.default;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/impl/interval.js":
+/*!**********************************************************!*\
+  !*** ./build/node_modules/mol-data/int/impl/interval.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tuple_1 = __webpack_require__(/*! ../tuple */ \"./build/node_modules/mol-data/int/tuple.js\");\r\nexports.Empty = tuple_1.default.Zero;\r\nfunction ofRange(min, max) { return max < min ? tuple_1.default.create(min, min) : tuple_1.default.create(min, max + 1); }\r\nexports.ofRange = ofRange;\r\nfunction ofBounds(start, end) { return end <= start ? tuple_1.default.create(start, start) : tuple_1.default.create(start, end); }\r\nexports.ofBounds = ofBounds;\r\nexports.is = tuple_1.default.is;\r\nexports.start = tuple_1.default.fst;\r\nexports.end = tuple_1.default.snd;\r\nexports.min = tuple_1.default.fst;\r\nfunction max(i) { return tuple_1.default.snd(i) - 1; }\r\nexports.max = max;\r\nfunction size(i) { return tuple_1.default.snd(i) - tuple_1.default.fst(i); }\r\nexports.size = size;\r\nexports.hashCode = tuple_1.default.hashCode;\r\nfunction has(int, v) { return tuple_1.default.fst(int) <= v && v < tuple_1.default.snd(int); }\r\nexports.has = has;\r\nfunction indexOf(int, x) { var m = exports.start(int); return x >= m && x < exports.end(int) ? x - m : -1; }\r\nexports.indexOf = indexOf;\r\nfunction getAt(int, i) { return tuple_1.default.fst(int) + i; }\r\nexports.getAt = getAt;\r\nexports.areEqual = tuple_1.default.areEqual;\r\nfunction areIntersecting(a, b) {\r\n    var sa = size(a), sb = size(b);\r\n    if (sa === 0 && sb === 0)\r\n        return true;\r\n    return sa > 0 && sb > 0 && max(a) >= exports.min(b) && exports.min(a) <= max(b);\r\n}\r\nexports.areIntersecting = areIntersecting;\r\nfunction isSubInterval(a, b) {\r\n    if (!size(a))\r\n        return size(b) === 0;\r\n    if (!size(b))\r\n        return true;\r\n    return exports.start(a) <= exports.start(b) && exports.end(a) >= exports.end(b);\r\n}\r\nexports.isSubInterval = isSubInterval;\r\nfunction findPredecessorIndex(int, v) {\r\n    var s = exports.start(int);\r\n    if (v <= s)\r\n        return 0;\r\n    var e = exports.end(int);\r\n    if (v >= e)\r\n        return e - s;\r\n    return v - s;\r\n}\r\nexports.findPredecessorIndex = findPredecessorIndex;\r\nfunction findPredecessorIndexInInterval(int, v, bounds) {\r\n    var bS = exports.start(bounds);\r\n    var s = exports.start(int);\r\n    if (v <= bS + s)\r\n        return bS;\r\n    var bE = exports.end(bounds);\r\n    if (v >= bE + s)\r\n        return bE;\r\n    return v - s;\r\n}\r\nexports.findPredecessorIndexInInterval = findPredecessorIndexInInterval;\r\nfunction findRange(int, min, max) {\r\n    return ofBounds(findPredecessorIndex(int, min), findPredecessorIndex(int, max + 1));\r\n}\r\nexports.findRange = findRange;\r\nfunction intersect(a, b) {\r\n    if (!areIntersecting(a, b))\r\n        return exports.Empty;\r\n    return ofBounds(Math.max(exports.start(a), exports.start(b)), Math.min(exports.end(a), exports.end(b)));\r\n}\r\nexports.intersect = intersect;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/impl/interval.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/impl/ordered-set.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-data/int/impl/ordered-set.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar sorted_array_1 = __webpack_require__(/*! ../sorted-array */ \"./build/node_modules/mol-data/int/sorted-array.js\");\r\nvar interval_1 = __webpack_require__(/*! ../interval */ \"./build/node_modules/mol-data/int/interval.js\");\r\nexports.Empty = interval_1.default.Empty;\r\nexports.ofSingleton = interval_1.default.ofSingleton;\r\nexports.ofRange = interval_1.default.ofRange;\r\nexports.ofBounds = interval_1.default.ofBounds;\r\nfunction ofSortedArray(xs) {\r\n    if (!xs.length)\r\n        return exports.Empty;\r\n    // check if the array is just a range\r\n    if (xs[xs.length - 1] - xs[0] + 1 === xs.length)\r\n        return interval_1.default.ofRange(xs[0], xs[xs.length - 1]);\r\n    return xs;\r\n}\r\nexports.ofSortedArray = ofSortedArray;\r\nfunction size(set) { return interval_1.default.is(set) ? interval_1.default.size(set) : sorted_array_1.default.size(set); }\r\nexports.size = size;\r\nfunction has(set, x) { return interval_1.default.is(set) ? interval_1.default.has(set, x) : sorted_array_1.default.has(set, x); }\r\nexports.has = has;\r\nfunction indexOf(set, x) { return interval_1.default.is(set) ? interval_1.default.indexOf(set, x) : sorted_array_1.default.indexOf(set, x); }\r\nexports.indexOf = indexOf;\r\nfunction getAt(set, i) { return interval_1.default.is(set) ? interval_1.default.getAt(set, i) : set[i]; }\r\nexports.getAt = getAt;\r\nfunction min(set) { return interval_1.default.is(set) ? interval_1.default.min(set) : sorted_array_1.default.min(set); }\r\nexports.min = min;\r\nfunction max(set) { return interval_1.default.is(set) ? interval_1.default.max(set) : sorted_array_1.default.max(set); }\r\nexports.max = max;\r\nfunction hashCode(set) { return interval_1.default.is(set) ? interval_1.default.hashCode(set) : sorted_array_1.default.hashCode(set); }\r\nexports.hashCode = hashCode;\r\n// TODO: possibly add more hash functions to allow for multilevel hashing.\r\nfunction areEqual(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return interval_1.default.areEqual(a, b);\r\n        return areEqualIS(a, b);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return areEqualIS(b, a);\r\n    return sorted_array_1.default.areEqual(a, b);\r\n}\r\nexports.areEqual = areEqual;\r\nfunction areIntersecting(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return interval_1.default.areIntersecting(a, b);\r\n        return areIntersectingSI(b, a);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return areIntersectingSI(a, b);\r\n    return sorted_array_1.default.areIntersecting(a, b);\r\n}\r\nexports.areIntersecting = areIntersecting;\r\n/** Check if the 2nd argument is a subset of the 1st */\r\nfunction isSubset(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return interval_1.default.isSubInterval(a, b);\r\n        return isSubsetIS(a, b);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return isSubsetSI(a, b);\r\n    return sorted_array_1.default.isSubset(a, b);\r\n}\r\nexports.isSubset = isSubset;\r\nfunction findPredecessorIndex(set, x) {\r\n    return interval_1.default.is(set) ? interval_1.default.findPredecessorIndex(set, x) : sorted_array_1.default.findPredecessorIndex(set, x);\r\n}\r\nexports.findPredecessorIndex = findPredecessorIndex;\r\nfunction findPredecessorIndexInInterval(set, x, bounds) {\r\n    return interval_1.default.is(set) ? interval_1.default.findPredecessorIndexInInterval(set, x, bounds) : sorted_array_1.default.findPredecessorIndexInInterval(set, x, bounds);\r\n}\r\nexports.findPredecessorIndexInInterval = findPredecessorIndexInInterval;\r\nfunction findRange(set, min, max) {\r\n    return interval_1.default.is(set) ? interval_1.default.findRange(set, min, max) : sorted_array_1.default.findRange(set, min, max);\r\n}\r\nexports.findRange = findRange;\r\nfunction union(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return unionII(a, b);\r\n        return unionSI(b, a);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return unionSI(a, b);\r\n    return ofSortedArray(sorted_array_1.default.union(a, b));\r\n}\r\nexports.union = union;\r\nfunction intersect(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return interval_1.default.intersect(a, b);\r\n        return intersectSI(b, a);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return intersectSI(a, b);\r\n    return ofSortedArray(sorted_array_1.default.intersect(a, b));\r\n}\r\nexports.intersect = intersect;\r\nfunction subtract(a, b) {\r\n    if (interval_1.default.is(a)) {\r\n        if (interval_1.default.is(b))\r\n            return subtractII(a, b);\r\n        return subtractIS(a, b);\r\n    }\r\n    else if (interval_1.default.is(b))\r\n        return subtractSI(a, b);\r\n    return ofSortedArray(sorted_array_1.default.subtract(a, b));\r\n}\r\nexports.subtract = subtract;\r\nfunction areEqualIS(a, b) { return interval_1.default.size(a) === sorted_array_1.default.size(b) && interval_1.default.start(a) === sorted_array_1.default.start(b) && interval_1.default.end(a) === sorted_array_1.default.end(b); }\r\nfunction areIntersectingSI(a, b) {\r\n    return areRangesIntersecting(a, b);\r\n}\r\nfunction isSubsetSI(a, b) {\r\n    var minB = interval_1.default.min(b), maxB = interval_1.default.max(b);\r\n    if (maxB - minB + 1 === 0)\r\n        return true;\r\n    var minA = sorted_array_1.default.min(a), maxA = sorted_array_1.default.max(a);\r\n    if (minB < minA || maxB > maxA)\r\n        return false;\r\n    var r = sorted_array_1.default.findRange(a, minB, maxB);\r\n    return interval_1.default.size(r) === interval_1.default.size(b);\r\n}\r\nfunction isSubsetIS(a, b) {\r\n    var minA = interval_1.default.min(a), maxA = interval_1.default.max(a);\r\n    if (maxA - minA + 1 === 0)\r\n        return false;\r\n    var minB = sorted_array_1.default.min(b), maxB = sorted_array_1.default.max(b);\r\n    return minB >= minA && maxA <= maxB;\r\n}\r\nfunction areRangesIntersecting(a, b) {\r\n    var sa = size(a), sb = size(b);\r\n    if (sa === 0 && sb === 0)\r\n        return true;\r\n    return sa > 0 && sb > 0 && max(a) >= min(b) && min(a) <= max(b);\r\n}\r\nfunction isRangeSubset(a, b) {\r\n    if (!size(a))\r\n        return size(b) === 0;\r\n    if (!size(b))\r\n        return true;\r\n    return min(a) <= min(b) && max(a) >= max(b);\r\n}\r\nfunction unionII(a, b) {\r\n    if (interval_1.default.areEqual(a, b))\r\n        return a;\r\n    var sizeA = interval_1.default.size(a), sizeB = interval_1.default.size(b);\r\n    if (!sizeB)\r\n        return a;\r\n    if (!sizeA)\r\n        return b;\r\n    var minA = interval_1.default.min(a), minB = interval_1.default.min(b);\r\n    if (areRangesIntersecting(a, b))\r\n        return interval_1.default.ofRange(Math.min(minA, minB), Math.max(interval_1.default.max(a), interval_1.default.max(b)));\r\n    var lSize, lMin, rSize, rMin;\r\n    if (minA < minB) {\r\n        lSize = sizeA;\r\n        lMin = minA;\r\n        rSize = sizeB;\r\n        rMin = minB;\r\n    }\r\n    else {\r\n        lSize = sizeB;\r\n        lMin = minB;\r\n        rSize = sizeA;\r\n        rMin = minA;\r\n    }\r\n    var arr = new Int32Array(sizeA + sizeB);\r\n    for (var i = 0; i < lSize; i++)\r\n        arr[i] = i + lMin;\r\n    for (var i = 0; i < rSize; i++)\r\n        arr[i + lSize] = i + rMin;\r\n    return ofSortedArray(arr);\r\n}\r\nfunction unionSI(a, b) {\r\n    var bSize = interval_1.default.size(b);\r\n    if (!bSize)\r\n        return a;\r\n    // is the array fully contained in the range?\r\n    if (isRangeSubset(b, a))\r\n        return b;\r\n    var min = interval_1.default.min(b), max = interval_1.default.max(b);\r\n    var r = sorted_array_1.default.findRange(a, min, max);\r\n    var start = interval_1.default.start(r), end = interval_1.default.end(r);\r\n    var indices = new Int32Array(start + (a.length - end) + bSize);\r\n    var offset = 0;\r\n    for (var i = 0; i < start; i++)\r\n        indices[offset++] = a[i];\r\n    for (var i = min; i <= max; i++)\r\n        indices[offset++] = i;\r\n    for (var i = end, _i = a.length; i < _i; i++)\r\n        indices[offset] = a[i];\r\n    return ofSortedArray(indices);\r\n}\r\nfunction intersectSI(a, b) {\r\n    if (!interval_1.default.size(b))\r\n        return exports.Empty;\r\n    var r = sorted_array_1.default.findRange(a, interval_1.default.min(b), interval_1.default.max(b));\r\n    var start = interval_1.default.start(r), end = interval_1.default.end(r);\r\n    var resultSize = end - start;\r\n    if (!resultSize)\r\n        return exports.Empty;\r\n    if (resultSize === a.length)\r\n        return a;\r\n    var indices = new Int32Array(resultSize);\r\n    var offset = 0;\r\n    for (var i = start; i < end; i++) {\r\n        indices[offset++] = a[i];\r\n    }\r\n    return ofSortedArray(indices);\r\n}\r\nfunction subtractII(a, b) {\r\n    if (interval_1.default.areEqual(a, b))\r\n        return exports.Empty;\r\n    if (!interval_1.default.areIntersecting(a, b))\r\n        return a;\r\n    var minA = interval_1.default.min(a), maxA = interval_1.default.max(a);\r\n    var minB = interval_1.default.min(b), maxB = interval_1.default.max(b);\r\n    if (maxA < minA || maxB < minB)\r\n        return a;\r\n    // is A subset of B? ==> Empty\r\n    if (interval_1.default.isSubInterval(b, a))\r\n        return exports.Empty;\r\n    if (interval_1.default.isSubInterval(a, b)) {\r\n        // this splits the interval into two, gotta represent it as a set.\r\n        var l = minB - minA, r = maxA - maxB;\r\n        if (l <= 0)\r\n            return interval_1.default.ofRange(maxB + 1, maxB + r);\r\n        if (r <= 0)\r\n            return interval_1.default.ofRange(minA, minA + l - 1);\r\n        var ret = new Int32Array(l + r);\r\n        var offset = 0;\r\n        for (var i = 0; i < l; i++)\r\n            ret[offset++] = minA + i;\r\n        for (var i = 1; i <= r; i++)\r\n            ret[offset++] = maxB + i;\r\n        return ofSortedArray(ret);\r\n    }\r\n    if (minA < minB)\r\n        return interval_1.default.ofRange(minA, minB - 1);\r\n    return interval_1.default.ofRange(maxB + 1, maxA);\r\n}\r\nfunction subtractSI(a, b) {\r\n    var min = interval_1.default.min(b), max = interval_1.default.max(b);\r\n    // is empty?\r\n    if (max < min)\r\n        return a;\r\n    var r = sorted_array_1.default.findRange(a, min, max);\r\n    var start = interval_1.default.start(r), end = interval_1.default.end(r);\r\n    var resultSize = a.length - (end - start);\r\n    // A is subset of B\r\n    if (resultSize <= 0)\r\n        return exports.Empty;\r\n    // No common elements\r\n    if (resultSize === a.length)\r\n        return a;\r\n    var ret = new Int32Array(resultSize);\r\n    var offset = 0;\r\n    for (var i = 0; i < start; i++)\r\n        ret[offset++] = a[i];\r\n    for (var i = end, _i = a.length; i < _i; i++)\r\n        ret[offset++] = a[i];\r\n    return ofSortedArray(ret);\r\n}\r\nfunction subtractIS(a, b) {\r\n    var min = interval_1.default.min(a), max = interval_1.default.max(a);\r\n    // is empty?\r\n    if (max < min)\r\n        return a;\r\n    var rSize = max - min + 1;\r\n    var interval = sorted_array_1.default.findRange(b, min, max);\r\n    var start = interval_1.default.start(interval), end = interval_1.default.end(interval);\r\n    var commonCount = end - start;\r\n    // No common elements.\r\n    if (commonCount === 0)\r\n        return a;\r\n    var resultSize = rSize - commonCount;\r\n    // A is subset of B\r\n    if (resultSize <= 0)\r\n        return exports.Empty;\r\n    var ret = new Int32Array(resultSize);\r\n    var li = b.length - 1;\r\n    var fst = b[Math.min(start, li)], last = b[Math.min(end, li)];\r\n    var offset = 0;\r\n    for (var i = min; i < fst; i++)\r\n        ret[offset++] = i;\r\n    for (var i = fst; i <= last; i++) {\r\n        if (sorted_array_1.default.indexOfInInterval(b, i, interval) < 0)\r\n            ret[offset++] = i;\r\n    }\r\n    for (var i = last + 1; i <= max; i++)\r\n        ret[offset++] = i;\r\n    return ofSortedArray(ret);\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/impl/ordered-set.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/impl/segmentation.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-data/int/impl/segmentation.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ordered_set_1 = __webpack_require__(/*! ../ordered-set */ \"./build/node_modules/mol-data/int/ordered-set.js\");\r\nvar interval_1 = __webpack_require__(/*! ../interval */ \"./build/node_modules/mol-data/int/interval.js\");\r\nvar sorted_array_1 = __webpack_require__(/*! ../sorted-array */ \"./build/node_modules/mol-data/int/sorted-array.js\");\r\nfunction create(values) {\r\n    var segments = sorted_array_1.default.ofSortedArray(values);\r\n    var max = sorted_array_1.default.max(segments);\r\n    var segmentMap = new Int32Array(max);\r\n    for (var i = 0, _i = values.length - 1; i < _i; i++) {\r\n        for (var j = values[i], _j = values[i + 1]; j < _j; j++) {\r\n            segmentMap[j] = i;\r\n        }\r\n    }\r\n    return { segments: segments, segmentMap: segmentMap, count: values.length - 1 };\r\n}\r\nexports.create = create;\r\nfunction ofOffsets(offsets, bounds) {\r\n    var s = interval_1.default.start(bounds);\r\n    var segments = new Int32Array(offsets.length + 1);\r\n    for (var i = 0, _i = offsets.length; i < _i; i++) {\r\n        segments[i] = offsets[i] - s;\r\n    }\r\n    segments[offsets.length] = interval_1.default.end(bounds) - s;\r\n    return create(segments);\r\n}\r\nexports.ofOffsets = ofOffsets;\r\nfunction count(_a) {\r\n    var count = _a.count;\r\n    return count;\r\n}\r\nexports.count = count;\r\nfunction getSegment(_a, value) {\r\n    var segmentMap = _a.segmentMap;\r\n    return segmentMap[value];\r\n}\r\nexports.getSegment = getSegment;\r\nfunction projectValue(_a, set, value) {\r\n    var segments = _a.segments;\r\n    var last = ordered_set_1.default.max(segments);\r\n    var idx = value >= last ? -1 : ordered_set_1.default.findPredecessorIndex(segments, value - 1);\r\n    return ordered_set_1.default.findRange(set, ordered_set_1.default.getAt(segments, idx), ordered_set_1.default.getAt(segments, idx + 1) - 1);\r\n}\r\nexports.projectValue = projectValue;\r\nvar SegmentIterator = /** @class */ (function () {\r\n    function SegmentIterator(segments, segmentMap, set, inputRange) {\r\n        this.segments = segments;\r\n        this.segmentMap = segmentMap;\r\n        this.set = set;\r\n        this.segmentMin = 0;\r\n        this.segmentMax = 0;\r\n        this.setRange = interval_1.default.Empty;\r\n        this.value = { index: 0, start: 0, end: 0 };\r\n        this.hasNext = false;\r\n        this.setRange = inputRange;\r\n        this.updateSegmentRange();\r\n    }\r\n    SegmentIterator.prototype.move = function () {\r\n        while (this.hasNext) {\r\n            if (this.updateValue()) {\r\n                this.value.index = this.segmentMin++;\r\n                this.hasNext = this.segmentMax >= this.segmentMin && interval_1.default.size(this.setRange) > 0;\r\n                break;\r\n            }\r\n            else {\r\n                this.updateSegmentRange();\r\n            }\r\n        }\r\n        return this.value;\r\n    };\r\n    SegmentIterator.prototype.updateValue = function () {\r\n        var segmentEnd = this.segments[this.segmentMin + 1];\r\n        // TODO: add optimized version for interval and array?\r\n        var setEnd = ordered_set_1.default.findPredecessorIndexInInterval(this.set, segmentEnd, this.setRange);\r\n        this.value.start = interval_1.default.start(this.setRange);\r\n        this.value.end = setEnd;\r\n        this.setRange = interval_1.default.ofBounds(setEnd, interval_1.default.end(this.setRange));\r\n        return setEnd > this.value.start;\r\n    };\r\n    SegmentIterator.prototype.updateSegmentRange = function () {\r\n        var sMin = interval_1.default.min(this.setRange), sMax = interval_1.default.max(this.setRange);\r\n        if (sMax < sMin) {\r\n            this.hasNext = false;\r\n            return;\r\n        }\r\n        this.segmentMin = this.segmentMap[ordered_set_1.default.getAt(this.set, sMin)];\r\n        this.segmentMax = this.segmentMap[ordered_set_1.default.getAt(this.set, sMax)];\r\n        this.hasNext = this.segmentMax >= this.segmentMin;\r\n    };\r\n    SegmentIterator.prototype.setSegment = function (segment) {\r\n        this.setRange = interval_1.default.ofBounds(segment.start, segment.end);\r\n        this.updateSegmentRange();\r\n    };\r\n    return SegmentIterator;\r\n}());\r\nexports.SegmentIterator = SegmentIterator;\r\nfunction segments(segs, set, segment) {\r\n    var int = typeof segment !== 'undefined' ? interval_1.default.ofBounds(segment.start, segment.end) : interval_1.default.ofBounds(0, ordered_set_1.default.size(set));\r\n    return new SegmentIterator(segs.segments, segs.segmentMap, set, int);\r\n}\r\nexports.segments = segments;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/impl/segmentation.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/impl/sorted-array.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-data/int/impl/sorted-array.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ../../util */ \"./build/node_modules/mol-data/util.js\");\r\nvar interval_1 = __webpack_require__(/*! ../interval */ \"./build/node_modules/mol-data/int/interval.js\");\r\nexports.Empty = [];\r\nfunction ofSingleton(v) { return [v]; }\r\nexports.ofSingleton = ofSingleton;\r\nfunction ofSortedArray(xs) { return xs; }\r\nexports.ofSortedArray = ofSortedArray;\r\nfunction ofUnsortedArray(xs) { util_1.sortArray(xs); return xs; }\r\nexports.ofUnsortedArray = ofUnsortedArray;\r\nfunction ofRange(min, max) {\r\n    if (max < min)\r\n        return [];\r\n    var ret = new Int32Array(max - min + 1);\r\n    for (var i = min; i <= max; i++)\r\n        ret[i - min] = i;\r\n    return ret;\r\n}\r\nexports.ofRange = ofRange;\r\nfunction is(xs) { return xs && (Array.isArray(xs) || !!xs.buffer); }\r\nexports.is = is;\r\nfunction start(xs) { return xs[0]; }\r\nexports.start = start;\r\nfunction end(xs) { return xs[xs.length - 1] + 1; }\r\nexports.end = end;\r\nfunction min(xs) { return xs[0]; }\r\nexports.min = min;\r\nfunction max(xs) { return xs[xs.length - 1]; }\r\nexports.max = max;\r\nfunction size(xs) { return xs.length; }\r\nexports.size = size;\r\nfunction hashCode(xs) {\r\n    // hash of tuple (size, min, max, mid)\r\n    var s = xs.length;\r\n    if (!s)\r\n        return 0;\r\n    if (s > 2)\r\n        return util_1.hash4(s, xs[0], xs[s - 1], xs[s << 1]);\r\n    return util_1.hash3(s, xs[0], xs[s - 1]);\r\n}\r\nexports.hashCode = hashCode;\r\nfunction indexOf(xs, v) {\r\n    var l = xs.length;\r\n    return l === 0 ? -1 : xs[0] <= v && v <= xs[l - 1] ? binarySearchRange(xs, v, 0, l) : -1;\r\n}\r\nexports.indexOf = indexOf;\r\nfunction indexOfInInterval(xs, v, bounds) {\r\n    var l = xs.length;\r\n    var s = interval_1.default.start(bounds), e = interval_1.default.end(bounds);\r\n    return l === 0 || e <= s ? -1 : xs[s] <= v && v <= xs[e - 1] ? binarySearchRange(xs, v, s, e) : -1;\r\n}\r\nexports.indexOfInInterval = indexOfInInterval;\r\nfunction has(xs, v) { return indexOf(xs, v) >= 0; }\r\nexports.has = has;\r\nfunction getAt(xs, i) { return xs[i]; }\r\nexports.getAt = getAt;\r\nfunction areEqual(a, b) {\r\n    if (a === b)\r\n        return true;\r\n    var aSize = a.length;\r\n    if (aSize !== b.length || a[0] !== b[0] || a[aSize - 1] !== b[aSize - 1])\r\n        return false;\r\n    for (var i = 0; i < aSize; i++) {\r\n        if (a[i] !== b[i])\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nexports.areEqual = areEqual;\r\nfunction findPredecessorIndex(xs, v) {\r\n    var len = xs.length;\r\n    if (v <= xs[0])\r\n        return 0;\r\n    if (v > xs[len - 1])\r\n        return len;\r\n    return binarySearchPredIndexRange(xs, v, 0, len);\r\n}\r\nexports.findPredecessorIndex = findPredecessorIndex;\r\nfunction findPredecessorIndexInInterval(xs, v, bounds) {\r\n    var s = interval_1.default.start(bounds), e = interval_1.default.end(bounds);\r\n    var sv = xs[s];\r\n    if (v <= sv)\r\n        return s;\r\n    if (e > s && v > xs[e - 1])\r\n        return e;\r\n    if (v - sv <= 11)\r\n        return linearSearchPredInRange(xs, v, s + 1, e);\r\n    return binarySearchPredIndexRange(xs, v, s, e);\r\n}\r\nexports.findPredecessorIndexInInterval = findPredecessorIndexInInterval;\r\nfunction findRange(xs, min, max) {\r\n    return interval_1.default.ofBounds(findPredecessorIndex(xs, min), findPredecessorIndex(xs, max + 1));\r\n}\r\nexports.findRange = findRange;\r\nfunction binarySearchRange(xs, value, start, end) {\r\n    var min = start, max = end - 1;\r\n    while (min <= max) {\r\n        if (min + 11 > max) {\r\n            for (var i = min; i <= max; i++) {\r\n                if (value === xs[i])\r\n                    return i;\r\n            }\r\n            return -1;\r\n        }\r\n        var mid = (min + max) >> 1;\r\n        var v = xs[mid];\r\n        if (value < v)\r\n            max = mid - 1;\r\n        else if (value > v)\r\n            min = mid + 1;\r\n        else\r\n            return mid;\r\n    }\r\n    return -1;\r\n}\r\nfunction binarySearchPredIndexRange(xs, value, start, end) {\r\n    var min = start, max = end - 1;\r\n    while (min < max) {\r\n        if (min + 11 > max) {\r\n            for (var i = min; i <= max; i++) {\r\n                if (value <= xs[i])\r\n                    return i;\r\n            }\r\n            return max + 1;\r\n        }\r\n        var mid = (min + max) >> 1;\r\n        var v = xs[mid];\r\n        if (value < v)\r\n            max = mid - 1;\r\n        else if (value > v)\r\n            min = mid + 1;\r\n        else\r\n            return mid;\r\n    }\r\n    if (min > max)\r\n        return max + 1;\r\n    return xs[min] >= value ? min : min + 1;\r\n}\r\nfunction linearSearchPredInRange(xs, value, start, end) {\r\n    for (var i = start; i < end; i++) {\r\n        if (value <= xs[i])\r\n            return i;\r\n    }\r\n    return end;\r\n}\r\nfunction areIntersecting(a, b) {\r\n    if (a === b)\r\n        return true;\r\n    var _a = getSuitableIntersectionRange(a, b), i = _a.startI, j = _a.startJ, endI = _a.endI, endJ = _a.endJ;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else\r\n            return true;\r\n    }\r\n    return false;\r\n}\r\nexports.areIntersecting = areIntersecting;\r\nfunction isSubset(a, b) {\r\n    if (a === b)\r\n        return true;\r\n    var lenB = b.length;\r\n    var _a = getSuitableIntersectionRange(a, b), i = _a.startI, j = _a.startJ, endI = _a.endI, endJ = _a.endJ;\r\n    // must be able to advance by lenB elements\r\n    if (endJ - j < lenB || endI - i < lenB)\r\n        return false;\r\n    var equal = 0;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            i++;\r\n            j++;\r\n            equal++;\r\n        }\r\n    }\r\n    return equal === lenB;\r\n}\r\nexports.isSubset = isSubset;\r\nfunction union(a, b) {\r\n    if (a === b)\r\n        return a;\r\n    var _a = getSuitableIntersectionRange(a, b), sI = _a.startI, sJ = _a.startJ, endI = _a.endI, endJ = _a.endJ;\r\n    var i = sI, j = sJ;\r\n    var commonCount = 0;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            i++;\r\n            j++;\r\n            commonCount++;\r\n        }\r\n    }\r\n    var lenA = a.length, lenB = b.length;\r\n    // A === B || B is subset of A ==> A\r\n    if ((commonCount === lenA && commonCount === lenB) || commonCount === lenB)\r\n        return a;\r\n    // A is subset of B ===> B\r\n    if (commonCount === lenA)\r\n        return b;\r\n    var indices = new Int32Array(lenA + lenB - commonCount);\r\n    var offset = 0;\r\n    // insert the \"prefixes\"\r\n    for (var k = 0; k < sI; k++)\r\n        indices[offset++] = a[k];\r\n    for (var k = 0; k < sJ; k++)\r\n        indices[offset++] = b[k];\r\n    // insert the common part\r\n    i = sI;\r\n    j = sJ;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            indices[offset++] = x;\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            indices[offset++] = y;\r\n            j++;\r\n        }\r\n        else {\r\n            indices[offset++] = x;\r\n            i++;\r\n            j++;\r\n        }\r\n    }\r\n    // insert the \"tail\"\r\n    for (; i < lenA; i++)\r\n        indices[offset++] = a[i];\r\n    for (; j < lenB; j++)\r\n        indices[offset++] = b[j];\r\n    return ofSortedArray(indices);\r\n}\r\nexports.union = union;\r\nfunction intersect(a, b) {\r\n    if (a === b)\r\n        return a;\r\n    var _a = getSuitableIntersectionRange(a, b), sI = _a.startI, sJ = _a.startJ, endI = _a.endI, endJ = _a.endJ;\r\n    var i = sI, j = sJ;\r\n    var commonCount = 0;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            i++;\r\n            j++;\r\n            commonCount++;\r\n        }\r\n    }\r\n    var lenA = a.length, lenB = b.length;\r\n    // no common elements\r\n    if (!commonCount)\r\n        return exports.Empty;\r\n    // A === B || B is subset of A ==> B\r\n    if ((commonCount === lenA && commonCount === lenB) || commonCount === lenB)\r\n        return b;\r\n    // A is subset of B ==> A\r\n    if (commonCount === lenA)\r\n        return a;\r\n    var indices = new Int32Array(commonCount);\r\n    var offset = 0;\r\n    i = sI;\r\n    j = sJ;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            indices[offset++] = x;\r\n            i++;\r\n            j++;\r\n        }\r\n    }\r\n    return ofSortedArray(indices);\r\n}\r\nexports.intersect = intersect;\r\nfunction subtract(a, b) {\r\n    if (a === b)\r\n        return exports.Empty;\r\n    var lenA = a.length;\r\n    var _a = getSuitableIntersectionRange(a, b), sI = _a.startI, sJ = _a.startJ, endI = _a.endI, endJ = _a.endJ;\r\n    var i = sI, j = sJ;\r\n    var commonCount = 0;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            i++;\r\n            j++;\r\n            commonCount++;\r\n        }\r\n    }\r\n    // A isnt intersecting B ===> A\r\n    if (!commonCount)\r\n        return a;\r\n    // A === B || A is subset of B ===> Empty\r\n    if (commonCount >= lenA)\r\n        return exports.Empty;\r\n    var indices = new Int32Array(lenA - commonCount);\r\n    var offset = 0;\r\n    // insert the \"prefix\"\r\n    for (var k = 0; k < sI; k++)\r\n        indices[offset++] = a[k];\r\n    i = sI;\r\n    j = sJ;\r\n    while (i < endI && j < endJ) {\r\n        var x = a[i], y = b[j];\r\n        if (x < y) {\r\n            indices[offset++] = x;\r\n            i++;\r\n        }\r\n        else if (x > y) {\r\n            j++;\r\n        }\r\n        else {\r\n            i++;\r\n            j++;\r\n        }\r\n    }\r\n    // insert the \"tail\"\r\n    for (; i < lenA; i++)\r\n        indices[offset++] = a[i];\r\n    return ofSortedArray(indices);\r\n}\r\nexports.subtract = subtract;\r\nvar _maxIntRangeRet = { startI: 0, startJ: 0, endI: 0, endJ: 0 };\r\n// for small sets, just gets the whole range, for large sets does a bunch of binary searches\r\nfunction getSuitableIntersectionRange(a, b) {\r\n    var la = a.length, lb = b.length;\r\n    var ratio = la / lb;\r\n    if (la >= 128 || lb >= 128 || ratio <= 0.34 || ratio >= 2.99) {\r\n        _maxIntRangeRet.startI = findPredecessorIndex(a, start(b));\r\n        _maxIntRangeRet.startJ = findPredecessorIndex(b, start(a));\r\n        _maxIntRangeRet.endI = findPredecessorIndex(a, end(b));\r\n        _maxIntRangeRet.endJ = findPredecessorIndex(b, end(a));\r\n    }\r\n    else {\r\n        _maxIntRangeRet.startI = 0;\r\n        _maxIntRangeRet.startJ = 0;\r\n        _maxIntRangeRet.endI = la;\r\n        _maxIntRangeRet.endJ = lb;\r\n    }\r\n    return _maxIntRangeRet;\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/impl/sorted-array.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/interval.js":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-data/int/interval.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Impl = __webpack_require__(/*! ./impl/interval */ \"./build/node_modules/mol-data/int/impl/interval.js\");\r\nvar Interval;\r\n(function (Interval) {\r\n    Interval.Empty = Impl.Empty;\r\n    Interval.ofSingleton = function (v) { return Impl.ofRange(v, v); };\r\n    /** Create interval from range [min, max] */\r\n    Interval.ofRange = Impl.ofRange;\r\n    /** Create interval from bounds [start, end), i.e. [start, end - 1] */\r\n    Interval.ofBounds = Impl.ofBounds;\r\n    Interval.is = Impl.is;\r\n    /** Test if a value is within the bounds of the interval */\r\n    Interval.has = Impl.has;\r\n    Interval.indexOf = Impl.indexOf;\r\n    Interval.getAt = Impl.getAt;\r\n    /** Start value of the interval, same as min value */\r\n    Interval.start = Impl.start;\r\n    /** End value of the interval, same as max + 1 */\r\n    Interval.end = Impl.end;\r\n    /** Min value of the interval, same as start value */\r\n    Interval.min = Impl.min;\r\n    /** Max value of the interval, same as end - 1 */\r\n    Interval.max = Impl.max;\r\n    /** Number of values in the interval */\r\n    Interval.size = Impl.size;\r\n    /** Hash code describing the interval */\r\n    Interval.hashCode = Impl.hashCode;\r\n    /** Test if two intervals are identical */\r\n    Interval.areEqual = Impl.areEqual;\r\n    /** Test if two intervals are intersecting, i.e. their bounds overlap */\r\n    Interval.areIntersecting = Impl.areIntersecting;\r\n    /** Test if interval b is fully included in interval a */\r\n    Interval.isSubInterval = Impl.isSubInterval;\r\n    Interval.findPredecessorIndex = Impl.findPredecessorIndex;\r\n    Interval.findPredecessorIndexInInterval = Impl.findPredecessorIndexInInterval;\r\n    Interval.findRange = Impl.findRange;\r\n    /** Get a new interval that is the intersection of the two intervals */\r\n    Interval.intersect = Impl.intersect;\r\n})(Interval || (Interval = {}));\r\nexports.default = Interval;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/interval.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/linked-index.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-data/int/linked-index.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction LinkedIndex(size) {\r\n    return new LinkedIndexImpl(size);\r\n}\r\nvar LinkedIndexImpl = /** @class */ (function () {\r\n    function LinkedIndexImpl(size) {\r\n        this.head = size > 0 ? 0 : -1;\r\n        this.prev = new Int32Array(size);\r\n        this.next = new Int32Array(size);\r\n        for (var i = 0; i < size; i++) {\r\n            this.next[i] = i + 1;\r\n            this.prev[i] = i - 1;\r\n        }\r\n        this.prev[0] = -1;\r\n        this.next[size - 1] = -1;\r\n    }\r\n    LinkedIndexImpl.prototype.remove = function (i) {\r\n        var _a = this, prev = _a.prev, next = _a.next;\r\n        var p = prev[i], n = next[i];\r\n        if (p >= 0) {\r\n            next[p] = n;\r\n            prev[i] = -1;\r\n        }\r\n        if (n >= 0) {\r\n            prev[n] = p;\r\n            next[i] = -1;\r\n        }\r\n        if (i === this.head) {\r\n            if (p < 0)\r\n                this.head = n;\r\n            else\r\n                this.head = p;\r\n        }\r\n    };\r\n    LinkedIndexImpl.prototype.has = function (i) {\r\n        return this.prev[i] >= 0 || this.next[i] >= 0 || this.head === i;\r\n    };\r\n    return LinkedIndexImpl;\r\n}());\r\nexports.default = LinkedIndex;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/linked-index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/map.js":
+/*!************************************************!*\
+  !*** ./build/node_modules/mol-data/int/map.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ../util */ \"./build/node_modules/mol-data/util.js\");\r\nvar IntMap;\r\n(function (IntMap) {\r\n    IntMap.Empty = new Map();\r\n    function keyArray(map) {\r\n        return util_1.iterableToArray(map.keys());\r\n    }\r\n    IntMap.keyArray = keyArray;\r\n    function Mutable() {\r\n        return new Map();\r\n    }\r\n    IntMap.Mutable = Mutable;\r\n    function asImmutable(map) {\r\n        return map;\r\n    }\r\n    IntMap.asImmutable = asImmutable;\r\n    function copy(map) {\r\n        var ret = Mutable();\r\n        var it = map.keys();\r\n        while (true) {\r\n            var _a = it.next(), done = _a.done, value = _a.value;\r\n            if (done)\r\n                break;\r\n            ret.set(value, map.get(value));\r\n        }\r\n        return ret;\r\n    }\r\n    IntMap.copy = copy;\r\n    function addFrom(map, src) {\r\n        var it = src.keys();\r\n        while (true) {\r\n            var _a = it.next(), done = _a.done, value = _a.value;\r\n            if (done)\r\n                break;\r\n            map.set(value, src.get(value));\r\n        }\r\n        return map;\r\n    }\r\n    IntMap.addFrom = addFrom;\r\n})(IntMap || (IntMap = {}));\r\nexports.default = IntMap;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/map.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/ordered-set.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-data/int/ordered-set.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Base = __webpack_require__(/*! ./impl/ordered-set */ \"./build/node_modules/mol-data/int/impl/ordered-set.js\");\r\nvar OrderedSet;\r\n(function (OrderedSet) {\r\n    OrderedSet.Empty = Base.Empty;\r\n    OrderedSet.ofSingleton = Base.ofSingleton;\r\n    OrderedSet.ofRange = Base.ofRange;\r\n    OrderedSet.ofBounds = Base.ofBounds;\r\n    /** It is the responsibility of the caller to ensure the array is sorted and contains unique values. */\r\n    OrderedSet.ofSortedArray = Base.ofSortedArray;\r\n    OrderedSet.has = Base.has;\r\n    OrderedSet.indexOf = Base.indexOf;\r\n    OrderedSet.getAt = Base.getAt;\r\n    OrderedSet.min = Base.min;\r\n    OrderedSet.max = Base.max;\r\n    OrderedSet.size = Base.size;\r\n    OrderedSet.hashCode = Base.hashCode;\r\n    OrderedSet.areEqual = Base.areEqual;\r\n    OrderedSet.areIntersecting = Base.areIntersecting;\r\n    OrderedSet.isSubset = Base.isSubset;\r\n    OrderedSet.union = Base.union;\r\n    OrderedSet.intersect = Base.intersect;\r\n    OrderedSet.subtract = Base.subtract;\r\n    OrderedSet.findPredecessorIndex = Base.findPredecessorIndex;\r\n    OrderedSet.findPredecessorIndexInInterval = Base.findPredecessorIndexInInterval;\r\n    OrderedSet.findRange = Base.findRange;\r\n})(OrderedSet || (OrderedSet = {}));\r\nexports.default = OrderedSet;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/ordered-set.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/segmentation.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-data/int/segmentation.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Impl = __webpack_require__(/*! ./impl/segmentation */ \"./build/node_modules/mol-data/int/impl/segmentation.js\");\r\nvar Segmentation;\r\n(function (Segmentation) {\r\n    Segmentation.create = Impl.create;\r\n    Segmentation.ofOffsets = Impl.ofOffsets;\r\n    Segmentation.count = Impl.count;\r\n    Segmentation.getSegment = Impl.getSegment;\r\n    Segmentation.projectValue = Impl.projectValue;\r\n    // Segment iterator that mutates a single segment object to mark all the segments.\r\n    Segmentation.transientSegments = Impl.segments;\r\n})(Segmentation || (Segmentation = {}));\r\nexports.default = Segmentation;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/segmentation.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/sorted-array.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-data/int/sorted-array.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Impl = __webpack_require__(/*! ./impl/sorted-array */ \"./build/node_modules/mol-data/int/impl/sorted-array.js\");\r\nvar SortedArray;\r\n(function (SortedArray) {\r\n    SortedArray.Empty = Impl.Empty;\r\n    SortedArray.ofUnsortedArray = Impl.ofUnsortedArray;\r\n    SortedArray.ofSingleton = Impl.ofSingleton;\r\n    SortedArray.ofSortedArray = Impl.ofSortedArray;\r\n    // create sorted array [min, max] (it DOES contain the max value)\r\n    SortedArray.ofRange = Impl.ofRange;\r\n    // create sorted array [min, max) (it DOES not contain the max value)\r\n    SortedArray.ofBounds = function (min, max) { return Impl.ofRange(min, max - 1); };\r\n    SortedArray.is = Impl.is;\r\n    SortedArray.has = Impl.has;\r\n    SortedArray.indexOf = Impl.indexOf;\r\n    SortedArray.indexOfInInterval = Impl.indexOfInInterval;\r\n    SortedArray.start = Impl.start;\r\n    SortedArray.end = Impl.end;\r\n    SortedArray.min = Impl.min;\r\n    SortedArray.max = Impl.max;\r\n    SortedArray.size = Impl.size;\r\n    SortedArray.hashCode = Impl.hashCode;\r\n    SortedArray.areEqual = Impl.areEqual;\r\n    SortedArray.areIntersecting = Impl.areIntersecting;\r\n    SortedArray.isSubset = Impl.isSubset;\r\n    SortedArray.union = Impl.union;\r\n    SortedArray.intersect = Impl.intersect;\r\n    SortedArray.subtract = Impl.subtract;\r\n    SortedArray.findPredecessorIndex = Impl.findPredecessorIndex;\r\n    SortedArray.findPredecessorIndexInInterval = Impl.findPredecessorIndexInInterval;\r\n    SortedArray.findRange = Impl.findRange;\r\n})(SortedArray || (SortedArray = {}));\r\nexports.default = SortedArray;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/sorted-array.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/int/tuple.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-data/int/tuple.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ../util */ \"./build/node_modules/mol-data/util.js\");\r\nvar IntTuple;\r\n(function (IntTuple) {\r\n    IntTuple.Zero = 0;\r\n    var _a = (function () {\r\n        var data = new ArrayBuffer(8);\r\n        var data_1 = new ArrayBuffer(8);\r\n        return {\r\n            _int32: new Int32Array(data),\r\n            _float64: new Float64Array(data),\r\n            _int32_1: new Int32Array(data_1),\r\n            _float64_1: new Float64Array(data_1)\r\n        };\r\n    }()), _int32 = _a._int32, _float64 = _a._float64, _int32_1 = _a._int32_1, _float64_1 = _a._float64_1;\r\n    function is(x) {\r\n        return typeof x === 'number';\r\n    }\r\n    IntTuple.is = is;\r\n    function create(fst, snd) {\r\n        _int32[0] = fst;\r\n        _int32[1] = snd;\r\n        return _float64[0];\r\n    }\r\n    IntTuple.create = create;\r\n    function fst(t) {\r\n        _float64[0] = t;\r\n        return _int32[0];\r\n    }\r\n    IntTuple.fst = fst;\r\n    function snd(t) {\r\n        _float64[0] = t;\r\n        return _int32[1];\r\n    }\r\n    IntTuple.snd = snd;\r\n    /** Normal equality does not work, because NaN === NaN ~> false */\r\n    function areEqual(a, b) {\r\n        _float64[0] = a;\r\n        _float64_1[0] = b;\r\n        return _int32[0] === _int32_1[0] && _int32[1] === _int32_1[1];\r\n    }\r\n    IntTuple.areEqual = areEqual;\r\n    function compare(a, b) {\r\n        _float64[0] = a;\r\n        _float64_1[0] = b;\r\n        var x = _int32[0] - _int32_1[0];\r\n        if (x !== 0)\r\n            return x;\r\n        return _int32[1] - _int32_1[1];\r\n    }\r\n    IntTuple.compare = compare;\r\n    function compareInArray(xs, i, j) {\r\n        _float64[0] = xs[i];\r\n        _float64_1[0] = xs[j];\r\n        var x = _int32[0] - _int32_1[0];\r\n        if (x !== 0)\r\n            return x;\r\n        return _int32[1] - _int32_1[1];\r\n    }\r\n    IntTuple.compareInArray = compareInArray;\r\n    function hashCode(t) {\r\n        _float64[0] = t;\r\n        return util_1.hash2(_int32[0], _int32[1]);\r\n    }\r\n    IntTuple.hashCode = hashCode;\r\n})(IntTuple || (IntTuple = {}));\r\nexports.default = IntTuple;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/int/tuple.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/iterator.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-data/iterator.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ArrayIteratorImpl = /** @class */ (function () {\r\n    function ArrayIteratorImpl(xs) {\r\n        this.xs = [];\r\n        this.index = -1;\r\n        this.length = 0;\r\n        this.hasNext = false;\r\n        this.length = xs.length;\r\n        this.hasNext = xs.length > 0;\r\n        this.xs = xs;\r\n        this.index = -1;\r\n        // try to avoid deoptimization with undefined values\r\n        this.lastValue = xs.length > 0 ? xs[0] : void 0;\r\n    }\r\n    ArrayIteratorImpl.prototype.move = function () {\r\n        ++this.index;\r\n        this.lastValue = this.xs[this.index];\r\n        this.hasNext = this.index < this.length - 1;\r\n        return this.lastValue;\r\n    };\r\n    return ArrayIteratorImpl;\r\n}());\r\nvar RangeIteratorImpl = /** @class */ (function () {\r\n    function RangeIteratorImpl(min, max) {\r\n        this.max = max;\r\n        this.value = 0;\r\n        this.hasNext = false;\r\n        this.value = min - 1;\r\n        this.hasNext = max >= min;\r\n    }\r\n    RangeIteratorImpl.prototype.move = function () {\r\n        ++this.value;\r\n        this.hasNext = this.value < this.max;\r\n        return this.value;\r\n    };\r\n    return RangeIteratorImpl;\r\n}());\r\nvar ValueIterator = /** @class */ (function () {\r\n    function ValueIterator(value) {\r\n        this.value = value;\r\n        this.hasNext = true;\r\n    }\r\n    ValueIterator.prototype.move = function () { this.hasNext = false; return this.value; };\r\n    return ValueIterator;\r\n}());\r\nvar MapIteratorImpl = /** @class */ (function () {\r\n    function MapIteratorImpl(base, f) {\r\n        this.base = base;\r\n        this.f = f;\r\n        this.hasNext = false;\r\n        this.hasNext = base.hasNext;\r\n    }\r\n    MapIteratorImpl.prototype.move = function () {\r\n        var v = this.f(this.base.move());\r\n        this.hasNext = this.base.hasNext;\r\n        return v;\r\n    };\r\n    return MapIteratorImpl;\r\n}());\r\nvar FilterIteratorImpl = /** @class */ (function () {\r\n    function FilterIteratorImpl(base, p) {\r\n        this.base = base;\r\n        this.p = p;\r\n        this.hasNext = this.findNext();\r\n    }\r\n    FilterIteratorImpl.prototype.move = function () {\r\n        var ret = this.next;\r\n        this.hasNext = this.findNext();\r\n        return ret;\r\n    };\r\n    FilterIteratorImpl.prototype.findNext = function () {\r\n        while (this.base.hasNext) {\r\n            this.next = this.base.move();\r\n            if (this.p(this.next))\r\n                return true;\r\n        }\r\n        return false;\r\n    };\r\n    return FilterIteratorImpl;\r\n}());\r\nvar Iterator;\r\n(function (Iterator) {\r\n    Iterator.Empty = new RangeIteratorImpl(0, -1);\r\n    function Array(xs) { return new ArrayIteratorImpl(xs); }\r\n    Iterator.Array = Array;\r\n    function Value(value) { return new ValueIterator(value); }\r\n    Iterator.Value = Value;\r\n    function Range(min, max) { return new RangeIteratorImpl(min, max); }\r\n    Iterator.Range = Range;\r\n    function map(base, f) { return new MapIteratorImpl(base, f); }\r\n    Iterator.map = map;\r\n    function filter(base, p) { return new FilterIteratorImpl(base, p); }\r\n    Iterator.filter = filter;\r\n    // Iterate until first truthy value is returned.\r\n    function forEach(it, f, ctx) {\r\n        while (it.hasNext) {\r\n            var c = f(it.move(), ctx);\r\n            if (c)\r\n                return ctx;\r\n        }\r\n        return ctx;\r\n    }\r\n    Iterator.forEach = forEach;\r\n})(Iterator || (Iterator = {}));\r\nexports.default = Iterator;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/iterator.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util.js":
+/*!*********************************************!*\
+  !*** ./build/node_modules/mol-data/util.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./util/chunked-array */ \"./build/node_modules/mol-data/util/chunked-array.js\"));\r\n__export(__webpack_require__(/*! ./util/equivalence-classes */ \"./build/node_modules/mol-data/util/equivalence-classes.js\"));\r\n__export(__webpack_require__(/*! ./util/hash-functions */ \"./build/node_modules/mol-data/util/hash-functions.js\"));\r\n__export(__webpack_require__(/*! ./util/sort */ \"./build/node_modules/mol-data/util/sort.js\"));\r\n__export(__webpack_require__(/*! ./util/grouping */ \"./build/node_modules/mol-data/util/grouping.js\"));\r\n__export(__webpack_require__(/*! ./util/array */ \"./build/node_modules/mol-data/util/array.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/array.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-data/util/array.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * from https://github.com/dsehnal/CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction arrayFind(array, f) {\r\n    for (var i = 0, _i = array.length; i < _i; i++) {\r\n        if (f(array[i]))\r\n            return array[i];\r\n    }\r\n    return void 0;\r\n}\r\nexports.arrayFind = arrayFind;\r\nfunction iterableToArray(it) {\r\n    if (Array.from)\r\n        return Array.from(it);\r\n    var ret = [];\r\n    while (true) {\r\n        var _a = it.next(), done = _a.done, value = _a.value;\r\n        if (done)\r\n            break;\r\n        ret[ret.length] = value;\r\n    }\r\n    return ret;\r\n}\r\nexports.iterableToArray = iterableToArray;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/array.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/chunked-array.js":
+/*!***********************************************************!*\
+  !*** ./build/node_modules/mol-data/util/chunked-array.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * from https://github.com/dsehnal/CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChunkedArray;\r\n(function (ChunkedArray) {\r\n    function is(x) {\r\n        return x.creator && x.chunkSize;\r\n    }\r\n    ChunkedArray.is = is;\r\n    function allocateNext(array) {\r\n        var nextSize = array.growBy * array.elementSize;\r\n        array.currentSize = nextSize;\r\n        array.currentIndex = 0;\r\n        array.currentChunk = new array.ctor(nextSize);\r\n        array.allocatedSize += nextSize;\r\n        array.chunks[array.chunks.length] = array.currentChunk;\r\n    }\r\n    function add4(array, x, y, z, w) {\r\n        if (array.currentIndex >= array.currentSize)\r\n            allocateNext(array);\r\n        var c = array.currentChunk;\r\n        c[array.currentIndex++] = x;\r\n        c[array.currentIndex++] = y;\r\n        c[array.currentIndex++] = z;\r\n        c[array.currentIndex++] = w;\r\n        return array.elementCount++;\r\n    }\r\n    ChunkedArray.add4 = add4;\r\n    function add3(array, x, y, z) {\r\n        if (array.currentIndex >= array.currentSize)\r\n            allocateNext(array);\r\n        var c = array.currentChunk;\r\n        c[array.currentIndex++] = x;\r\n        c[array.currentIndex++] = y;\r\n        c[array.currentIndex++] = z;\r\n        return array.elementCount++;\r\n    }\r\n    ChunkedArray.add3 = add3;\r\n    function add2(array, x, y) {\r\n        if (array.currentIndex >= array.currentSize)\r\n            allocateNext(array);\r\n        var c = array.currentChunk;\r\n        c[array.currentIndex++] = x;\r\n        c[array.currentIndex++] = y;\r\n        return array.elementCount++;\r\n    }\r\n    ChunkedArray.add2 = add2;\r\n    function add(array, x) {\r\n        if (array.currentIndex >= array.currentSize)\r\n            allocateNext(array);\r\n        array.currentChunk[array.currentIndex++] = x;\r\n        return array.elementCount++;\r\n    }\r\n    ChunkedArray.add = add;\r\n    function addMany(array, data) {\r\n        var elementSize = array.elementSize;\r\n        for (var i = 0, _i = data.length; i < _i; i += elementSize) {\r\n            if (array.currentIndex >= array.currentSize)\r\n                allocateNext(array);\r\n            var currentChunk = array.currentChunk;\r\n            for (var j = 0; j < elementSize; j++) {\r\n                currentChunk[array.currentIndex++] = data[i + j];\r\n            }\r\n            array.elementCount++;\r\n        }\r\n        return array.elementCount;\r\n    }\r\n    ChunkedArray.addMany = addMany;\r\n    /** If doNotResizeSingleton = true and the data fit into a single chunk, do not resize it. */\r\n    function compact(array, doNotResizeSingleton) {\r\n        if (doNotResizeSingleton === void 0) { doNotResizeSingleton = false; }\r\n        return _compact(array, doNotResizeSingleton);\r\n    }\r\n    ChunkedArray.compact = compact;\r\n    function _compact(array, doNotResizeSingleton) {\r\n        var ctor = array.ctor, chunks = array.chunks, currentIndex = array.currentIndex;\r\n        if (!chunks.length)\r\n            return new ctor(0);\r\n        if (chunks.length === 1) {\r\n            if (doNotResizeSingleton || currentIndex === array.allocatedSize) {\r\n                return chunks[0];\r\n            }\r\n        }\r\n        var size = 0;\r\n        for (var i = 0, _i = chunks.length - 1; i < _i; i++)\r\n            size += chunks[i].length;\r\n        size += array.currentIndex;\r\n        var ret = new ctor(size);\r\n        var offset = 0;\r\n        if (ret.buffer) {\r\n            for (var i = 0, _i = chunks.length - 1; i < _i; i++) {\r\n                ret.set(chunks[i], offset);\r\n                offset += chunks[i].length;\r\n            }\r\n        }\r\n        else {\r\n            for (var i = 0, _i = chunks.length - 1; i < _i; i++) {\r\n                var chunk = chunks[i];\r\n                for (var j = 0, _j = chunk.length; j < _j; j++)\r\n                    ret[offset + j] = chunk[j];\r\n                offset += chunk.length;\r\n            }\r\n        }\r\n        var lastChunk = chunks[chunks.length - 1];\r\n        if (ret.buffer && currentIndex >= array.currentSize) {\r\n            ret.set(lastChunk, offset);\r\n        }\r\n        else {\r\n            for (var j = 0, _j = lastChunk.length; j < _j; j++)\r\n                ret[offset + j] = lastChunk[j];\r\n        }\r\n        return ret;\r\n    }\r\n    ChunkedArray._compact = _compact;\r\n    function create(ctor, elementSize, chunkSize, initialChunkOrCount) {\r\n        var ret = {\r\n            ctor: ctor,\r\n            elementSize: elementSize,\r\n            growBy: chunkSize,\r\n            allocatedSize: 0,\r\n            elementCount: 0,\r\n            currentSize: 0,\r\n            currentChunk: void 0,\r\n            currentIndex: 0,\r\n            chunks: []\r\n        };\r\n        if (typeof initialChunkOrCount === 'undefined')\r\n            return ret;\r\n        if (typeof initialChunkOrCount === 'number') {\r\n            ret.currentChunk = new ctor(initialChunkOrCount * elementSize);\r\n            ret.allocatedSize = initialChunkOrCount * elementSize;\r\n            ret.currentSize = ret.currentChunk.length;\r\n            ret.chunks[0] = ret.currentChunk;\r\n            return ret;\r\n        }\r\n        var initialChunk = initialChunkOrCount;\r\n        if (initialChunk.length % elementSize !== 0)\r\n            throw new Error('initialChunk length must be a multiple of the element size.');\r\n        ret.currentChunk = initialChunk;\r\n        ret.allocatedSize = initialChunk.length;\r\n        ret.currentSize = initialChunk.length;\r\n        ret.chunks[0] = initialChunk;\r\n        return ret;\r\n    }\r\n    ChunkedArray.create = create;\r\n})(ChunkedArray || (ChunkedArray = {}));\r\nexports.ChunkedArray = ChunkedArray;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/chunked-array.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/equivalence-classes.js":
+/*!*****************************************************************!*\
+  !*** ./build/node_modules/mol-data/util/equivalence-classes.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EquivalenceClassesImpl = /** @class */ (function () {\r\n    function EquivalenceClassesImpl(getHash, areEqual) {\r\n        this.getHash = getHash;\r\n        this.areEqual = areEqual;\r\n        this.id = 0;\r\n        this.byHash = new Map();\r\n        this.groups = [];\r\n    }\r\n    EquivalenceClassesImpl.prototype.createGroup = function (key, value) {\r\n        var id = this.id++;\r\n        var keys = [key];\r\n        this.groups[id] = keys;\r\n        return { id: id, keys: keys, value: value };\r\n    };\r\n    // Return the group representative.\r\n    EquivalenceClassesImpl.prototype.add = function (key, a) {\r\n        var hash = this.getHash(a);\r\n        if (this.byHash.has(hash)) {\r\n            var groups = this.byHash.get(hash);\r\n            for (var i = 0, _i = groups.length; i < _i; i++) {\r\n                var group_1 = groups[i];\r\n                if (this.areEqual(a, group_1.value)) {\r\n                    group_1.keys[group_1.keys.length] = key;\r\n                    return group_1.value;\r\n                }\r\n            }\r\n            var group = this.createGroup(key, a);\r\n            groups[groups.length] = group;\r\n            return group.value;\r\n        }\r\n        else {\r\n            var group = this.createGroup(key, a);\r\n            this.byHash.set(hash, [group]);\r\n            return group.value;\r\n        }\r\n    };\r\n    return EquivalenceClassesImpl;\r\n}());\r\nfunction EquivalenceClasses(getHash, areEqual) {\r\n    return new EquivalenceClassesImpl(getHash, areEqual);\r\n}\r\nexports.EquivalenceClasses = EquivalenceClasses;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/equivalence-classes.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/grouping.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/mol-data/util/grouping.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! ../db */ \"./build/node_modules/mol-data/db.js\");\r\nvar GroupingImpl = /** @class */ (function () {\r\n    function GroupingImpl(getKey) {\r\n        this.getKey = getKey;\r\n        this.map = new Map();\r\n        this.keys = [];\r\n        this.groups = [];\r\n    }\r\n    GroupingImpl.prototype.add = function (a) {\r\n        var key = this.getKey(a);\r\n        if (!!this.map.has(key)) {\r\n            var group = this.map.get(key);\r\n            group[group.length] = a;\r\n        }\r\n        else {\r\n            var group = [a];\r\n            this.map.set(key, group);\r\n            this.keys[this.keys.length] = key;\r\n            this.groups[this.groups.length] = group;\r\n        }\r\n    };\r\n    GroupingImpl.prototype.getGrouping = function () {\r\n        return { keys: this.keys, groups: this.groups, map: this.map };\r\n    };\r\n    return GroupingImpl;\r\n}());\r\nfunction Grouper(getKey) {\r\n    return new GroupingImpl(getKey);\r\n}\r\nexports.Grouper = Grouper;\r\nfunction groupBy(values, getKey) {\r\n    var gs = Grouper(getKey);\r\n    if (db_1.Column.is(values)) {\r\n        var v = values.value;\r\n        for (var i = 0, _i = values.rowCount; i < _i; i++)\r\n            gs.add(v(i));\r\n    }\r\n    else {\r\n        for (var i = 0, _i = values.length; i < _i; i++)\r\n            gs.add(values[i]);\r\n    }\r\n    return gs.getGrouping();\r\n}\r\nexports.groupBy = groupBy;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/grouping.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/hash-functions.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-data/util/hash-functions.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// from http://burtleburtle.net/bob/hash/integer.html\r\nfunction hash1(i) {\r\n    var a = i ^ (i >> 4);\r\n    a = (a ^ 0xdeadbeef) + (a << 5);\r\n    a = a ^ (a >> 11);\r\n    return a;\r\n}\r\nexports.hash1 = hash1;\r\nfunction hash2(i, j) {\r\n    var a = 23;\r\n    a = (31 * a + i) | 0;\r\n    a = (31 * a + j) | 0;\r\n    a = a ^ (a >> 4);\r\n    a = (a ^ 0xdeadbeef) + (a << 5);\r\n    a = a ^ (a >> 11);\r\n    return a;\r\n}\r\nexports.hash2 = hash2;\r\nfunction hash3(i, j, k) {\r\n    var a = 23;\r\n    a = (31 * a + i) | 0;\r\n    a = (31 * a + j) | 0;\r\n    a = (31 * a + k) | 0;\r\n    a = a ^ (a >> 4);\r\n    a = (a ^ 0xdeadbeef) + (a << 5);\r\n    a = a ^ (a >> 11);\r\n    return a;\r\n}\r\nexports.hash3 = hash3;\r\nfunction hash4(i, j, k, l) {\r\n    var a = 23;\r\n    a = (31 * a + i) | 0;\r\n    a = (31 * a + j) | 0;\r\n    a = (31 * a + k) | 0;\r\n    a = (31 * a + l) | 0;\r\n    a = a ^ (a >> 4);\r\n    a = (a ^ 0xdeadbeef) + (a << 5);\r\n    a = a ^ (a >> 11);\r\n    return a;\r\n}\r\nexports.hash4 = hash4;\r\nfunction hashString(s) {\r\n    var h = 0;\r\n    for (var i = 0, l = s.length; i < l; i++) {\r\n        h = (h << 5) - h + s.charCodeAt(i++) | 0;\r\n    }\r\n    return h;\r\n}\r\nexports.hashString = hashString;\r\n/**\r\n * A unique number for each pair of integers\r\n * Biggest representable pair is (67108863, 67108863) (limit imposed by Number.MAX_SAFE_INTEGER)\r\n */\r\nfunction cantorPairing(a, b) {\r\n    return (a + b) * (a + b + 1) / 2 + b;\r\n}\r\nexports.cantorPairing = cantorPairing;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/hash-functions.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-data/util/sort.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-data/util/sort.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction arrayLess(arr, i, j) {\r\n    return arr[i] - arr[j];\r\n}\r\nexports.arrayLess = arrayLess;\r\nfunction arraySwap(arr, i, j) {\r\n    var temp = arr[i];\r\n    arr[i] = arr[j];\r\n    arr[j] = temp;\r\n}\r\nexports.arraySwap = arraySwap;\r\nfunction medianPivotIndex(data, cmp, l, r) {\r\n    var m = (l + r) >> 1;\r\n    if (cmp(data, l, r) > 0)\r\n        return cmp(data, l, m) > 0 ? cmp(data, m, r) > 0 ? m : r : l;\r\n    else\r\n        return cmp(data, r, m) > 0 ? cmp(data, m, l) > 0 ? m : l : r;\r\n}\r\nfunction partition(ctx, l, r) {\r\n    var cmp = ctx.cmp, swap = ctx.swap, data = ctx.data, parts = ctx.parts;\r\n    var equals = l + 1, tail = r;\r\n    // move the median to the 1st spot\r\n    swap(data, l, medianPivotIndex(data, cmp, l, r));\r\n    while (cmp(data, tail, l) > 0) {\r\n        --tail;\r\n    }\r\n    for (var i = l + 1; i <= tail; i++) {\r\n        var c = cmp(data, i, l);\r\n        if (c > 0) {\r\n            swap(data, i, tail);\r\n            --tail;\r\n            while (cmp(data, tail, l) > 0) {\r\n                --tail;\r\n            }\r\n            i--;\r\n        }\r\n        else if (c === 0) {\r\n            swap(data, i, equals);\r\n            equals++;\r\n        }\r\n    }\r\n    // move the medians to the correct spots\r\n    for (var i = l; i < equals; i++) {\r\n        swap(data, i, l + tail - i);\r\n    }\r\n    parts[0] = tail - equals + l + 1;\r\n    parts[1] = tail;\r\n}\r\nfunction insertionSort(_a, start, end) {\r\n    var data = _a.data, cmp = _a.cmp, swap = _a.swap;\r\n    for (var i = start + 1; i <= end; i++) {\r\n        var j = i - 1;\r\n        while (j >= start && cmp(data, j, j + 1) > 0) {\r\n            swap(data, j, j + 1);\r\n            j = j - 1;\r\n        }\r\n    }\r\n}\r\nfunction quickSort(ctx, low, high) {\r\n    var parts = ctx.parts;\r\n    while (low < high) {\r\n        if (high - low < 16) {\r\n            insertionSort(ctx, low, high);\r\n            return;\r\n        }\r\n        partition(ctx, low, high);\r\n        var li = parts[0], ri = parts[1];\r\n        if (li - low < high - ri) {\r\n            quickSort(ctx, low, li - 1);\r\n            low = ri + 1;\r\n        }\r\n        else {\r\n            quickSort(ctx, ri + 1, high);\r\n            high = li - 1;\r\n        }\r\n    }\r\n}\r\nfunction partitionArrayAsc(data, parts, l, r) {\r\n    var equals = l + 1, tail = r;\r\n    // move the median to the 1st spot\r\n    arraySwap(data, l, medianPivotIndex(data, arrayLess, l, r));\r\n    var pivot = data[l];\r\n    while (data[tail] > pivot) {\r\n        --tail;\r\n    }\r\n    for (var i = l + 1; i <= tail; i++) {\r\n        var v = data[i];\r\n        if (v > pivot) {\r\n            arraySwap(data, i, tail);\r\n            --tail;\r\n            while (data[tail] > pivot) {\r\n                --tail;\r\n            }\r\n            i--;\r\n        }\r\n        else if (v === pivot) {\r\n            arraySwap(data, i, equals);\r\n            ++equals;\r\n        }\r\n    }\r\n    // move all medians to the correct spots\r\n    for (var i = l; i < equals; i++) {\r\n        arraySwap(data, i, l + tail - i);\r\n    }\r\n    parts[0] = tail - equals + l + 1;\r\n    parts[1] = tail;\r\n}\r\nfunction insertionSortArrayAsc(data, start, end) {\r\n    for (var i = start + 1; i <= end; i++) {\r\n        var key = data[i];\r\n        var j = i - 1;\r\n        while (j >= start && data[j] > key) {\r\n            data[j + 1] = data[j];\r\n            j = j - 1;\r\n        }\r\n        data[j + 1] = key;\r\n    }\r\n}\r\nfunction quickSortArrayAsc(data, parts, low, high) {\r\n    while (low < high) {\r\n        if (high - low < 16) {\r\n            insertionSortArrayAsc(data, low, high);\r\n            return;\r\n        }\r\n        partitionArrayAsc(data, parts, low, high);\r\n        var li = parts[0], ri = parts[1];\r\n        if (li - low < high - ri) {\r\n            quickSortArrayAsc(data, parts, low, li - 1);\r\n            low = ri + 1;\r\n        }\r\n        else {\r\n            quickSortArrayAsc(data, parts, ri + 1, high);\r\n            high = li - 1;\r\n        }\r\n    }\r\n}\r\nfunction sortArray(data, cmp) {\r\n    if (cmp === void 0) { cmp = arrayLess; }\r\n    return sortArrayRange(data, 0, data.length, cmp);\r\n}\r\nexports.sortArray = sortArray;\r\nfunction sortArrayRange(data, start, end, cmp) {\r\n    if (cmp === void 0) { cmp = arrayLess; }\r\n    if (cmp === arrayLess)\r\n        quickSortArrayAsc(data, [0, 0], start, end - 1);\r\n    else\r\n        quickSort({ data: data, cmp: cmp, swap: arraySwap, parts: [0, 0] }, start, end - 1);\r\n    return data;\r\n}\r\nexports.sortArrayRange = sortArrayRange;\r\nfunction sort(data, start, end, cmp, swap) {\r\n    var ctx = { data: data, cmp: cmp, swap: swap, parts: [0, 0] };\r\n    quickSort(ctx, start, end - 1);\r\n    return data;\r\n}\r\nexports.sort = sort;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-data/util/sort.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/primitive/box.js":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-geo/primitive/box.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// adapted from three.js, MIT License Copyright 2010-2018 three.js authors\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nexports.DefaultBoxProps = {\r\n    width: 1,\r\n    height: 1,\r\n    depth: 1,\r\n    widthSegments: 1,\r\n    heightSegments: 1,\r\n    depthSegments: 1\r\n};\r\nfunction Box(props) {\r\n    var _a = __assign({}, exports.DefaultBoxProps, props), width = _a.width, height = _a.height, depth = _a.depth, widthSegments = _a.widthSegments, heightSegments = _a.heightSegments, depthSegments = _a.depthSegments;\r\n    // buffers\r\n    var indices = [];\r\n    var vertices = [];\r\n    var normals = [];\r\n    // helper variables\r\n    var numberOfVertices = 0;\r\n    // build each side of the box geometry\r\n    buildPlane(2, 1, 0, -1, -1, depth, height, width, depthSegments, heightSegments); // px\r\n    buildPlane(2, 1, 0, 1, -1, depth, height, -width, depthSegments, heightSegments); // nx\r\n    buildPlane(0, 2, 1, 1, 1, width, depth, height, widthSegments, depthSegments); // py\r\n    buildPlane(0, 2, 1, 1, -1, width, depth, -height, widthSegments, depthSegments); // ny\r\n    buildPlane(0, 1, 2, 1, -1, width, height, depth, widthSegments, heightSegments); // pz\r\n    buildPlane(0, 1, 2, -1, -1, width, height, -depth, widthSegments, heightSegments); // nz\r\n    return {\r\n        vertices: new Float32Array(vertices),\r\n        normals: new Float32Array(normals),\r\n        indices: new Uint32Array(indices)\r\n    };\r\n    function buildPlane(u, v, w, udir, vdir, width, height, depth, gridX, gridY) {\r\n        var segmentWidth = width / gridX;\r\n        var segmentHeight = height / gridY;\r\n        var widthHalf = width / 2;\r\n        var heightHalf = height / 2;\r\n        var depthHalf = depth / 2;\r\n        var gridX1 = gridX + 1;\r\n        var gridY1 = gridY + 1;\r\n        var vertexCounter = 0;\r\n        var vector = linear_algebra_1.Vec3.zero();\r\n        // generate vertices and normals\r\n        for (var iy = 0; iy < gridY1; ++iy) {\r\n            var y = iy * segmentHeight - heightHalf;\r\n            for (var ix = 0; ix < gridX1; ++ix) {\r\n                var x = ix * segmentWidth - widthHalf;\r\n                // set values to correct vector component\r\n                vector[u] = x * udir;\r\n                vector[v] = y * vdir;\r\n                vector[w] = depthHalf;\r\n                // now apply vector to vertex buffer\r\n                vertices.push.apply(vertices, vector);\r\n                // set values to correct vector component\r\n                vector[u] = 0;\r\n                vector[v] = 0;\r\n                vector[w] = depth > 0 ? 1 : -1;\r\n                // now apply vector to normal buffer\r\n                normals.push.apply(normals, vector);\r\n                vertexCounter += 1;\r\n            }\r\n        }\r\n        // indices\r\n        // 1. you need three indices to draw a single face\r\n        // 2. a single segment consists of two faces\r\n        // 3. so we need to generate six (2*3) indices per segment\r\n        for (var iy = 0; iy < gridY; ++iy) {\r\n            for (var ix = 0; ix < gridX; ++ix) {\r\n                var a = numberOfVertices + ix + gridX1 * iy;\r\n                var b = numberOfVertices + ix + gridX1 * (iy + 1);\r\n                var c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\r\n                var d = numberOfVertices + (ix + 1) + gridX1 * iy;\r\n                // faces\r\n                indices.push(a, b, d);\r\n                indices.push(b, c, d);\r\n            }\r\n        }\r\n        numberOfVertices += vertexCounter;\r\n    }\r\n}\r\nexports.default = Box;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/primitive/box.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/primitive/cylinder.js":
+/*!**********************************************************!*\
+  !*** ./build/node_modules/mol-geo/primitive/cylinder.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// adapted from three.js, MIT License Copyright 2010-2018 three.js authors\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nexports.DefaultCylinderProps = {\r\n    radiusTop: 1,\r\n    radiusBottom: 1,\r\n    height: 1,\r\n    radialSegments: 8,\r\n    heightSegments: 1,\r\n    openEnded: false,\r\n    thetaStart: 0.0,\r\n    thetaLength: Math.PI * 2\r\n};\r\nfunction Cylinder(props) {\r\n    var _a = __assign({}, exports.DefaultCylinderProps, props), radiusTop = _a.radiusTop, radiusBottom = _a.radiusBottom, height = _a.height, radialSegments = _a.radialSegments, heightSegments = _a.heightSegments, openEnded = _a.openEnded, thetaStart = _a.thetaStart, thetaLength = _a.thetaLength;\r\n    // buffers\r\n    var indices = [];\r\n    var vertices = [];\r\n    var normals = [];\r\n    // helper variables\r\n    var index = 0;\r\n    var indexArray = [];\r\n    var halfHeight = height / 2;\r\n    // generate geometry\r\n    generateTorso();\r\n    if (openEnded === false) {\r\n        if (radiusTop > 0)\r\n            generateCap(true);\r\n        if (radiusBottom > 0)\r\n            generateCap(false);\r\n    }\r\n    return {\r\n        vertices: new Float32Array(vertices),\r\n        normals: new Float32Array(normals),\r\n        indices: new Uint32Array(indices)\r\n    };\r\n    function generateTorso() {\r\n        var normal = linear_algebra_1.Vec3.zero();\r\n        // this will be used to calculate the normal\r\n        var slope = (radiusBottom - radiusTop) / height;\r\n        // generate vertices, normals and uvs\r\n        for (var y = 0; y <= heightSegments; ++y) {\r\n            var indexRow = [];\r\n            var v = y / heightSegments;\r\n            // calculate the radius of the current row\r\n            var radius = v * (radiusBottom - radiusTop) + radiusTop;\r\n            for (var x = 0; x <= radialSegments; ++x) {\r\n                var u = x / radialSegments;\r\n                var theta = u * thetaLength + thetaStart;\r\n                var sinTheta = Math.sin(theta);\r\n                var cosTheta = Math.cos(theta);\r\n                // vertex\r\n                vertices.push(radius * sinTheta, -v * height + halfHeight, radius * cosTheta);\r\n                // normal\r\n                linear_algebra_1.Vec3.normalize(normal, linear_algebra_1.Vec3.set(normal, sinTheta, slope, cosTheta));\r\n                normals.push.apply(normals, normal);\r\n                // save index of vertex in respective row\r\n                indexRow.push(index++);\r\n            }\r\n            // now save vertices of the row in our index array\r\n            indexArray.push(indexRow);\r\n        }\r\n        // generate indices\r\n        for (var x = 0; x < radialSegments; ++x) {\r\n            for (var y = 0; y < heightSegments; ++y) {\r\n                // we use the index array to access the correct indices\r\n                var a = indexArray[y][x];\r\n                var b = indexArray[y + 1][x];\r\n                var c = indexArray[y + 1][x + 1];\r\n                var d = indexArray[y][x + 1];\r\n                // faces\r\n                indices.push(a, b, d);\r\n                indices.push(b, c, d);\r\n            }\r\n        }\r\n    }\r\n    function generateCap(top) {\r\n        var radius = (top === true) ? radiusTop : radiusBottom;\r\n        var sign = (top === true) ? 1 : -1;\r\n        // save the index of the first center vertex\r\n        var centerIndexStart = index;\r\n        // first we generate the center vertex data of the cap.\r\n        // because the geometry needs one set of uvs per face,\r\n        // we must generate a center vertex per face/segment\r\n        for (var x = 1; x <= radialSegments; ++x) {\r\n            // vertex\r\n            vertices.push(0, halfHeight * sign, 0);\r\n            // normal\r\n            normals.push(0, sign, 0);\r\n            // increase index\r\n            ++index;\r\n        }\r\n        // save the index of the last center vertex\r\n        var centerIndexEnd = index;\r\n        // now we generate the surrounding vertices, normals and uvs\r\n        for (var x = 0; x <= radialSegments; ++x) {\r\n            var u = x / radialSegments;\r\n            var theta = u * thetaLength + thetaStart;\r\n            var cosTheta = Math.cos(theta);\r\n            var sinTheta = Math.sin(theta);\r\n            // vertex\r\n            vertices.push(radius * sinTheta, halfHeight * sign, radius * cosTheta);\r\n            // normal\r\n            normals.push(0, sign, 0);\r\n            // increase index\r\n            ++index;\r\n        }\r\n        // generate indices\r\n        for (var x = 0; x < radialSegments; ++x) {\r\n            var c = centerIndexStart + x;\r\n            var i = centerIndexEnd + x;\r\n            if (top === true) {\r\n                indices.push(i, i + 1, c); // face top\r\n            }\r\n            else {\r\n                indices.push(i + 1, i, c); // face bottom\r\n            }\r\n        }\r\n    }\r\n}\r\nexports.default = Cylinder;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/primitive/cylinder.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/primitive/icosahedron.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-geo/primitive/icosahedron.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// adapted from three.js, MIT License Copyright 2010-2018 three.js authors\r\nvar polyhedron_1 = __webpack_require__(/*! ./polyhedron */ \"./build/node_modules/mol-geo/primitive/polyhedron.js\");\r\nvar t = (1 + Math.sqrt(5)) / 2;\r\nvar vertices = [\r\n    -1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, 0,\r\n    0, -1, t, 0, 1, t, 0, -1, -t, 0, 1, -t,\r\n    t, 0, -1, t, 0, 1, -t, 0, -1, -t, 0, 1\r\n];\r\nvar indices = [\r\n    0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\r\n    1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8,\r\n    3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\r\n    4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1\r\n];\r\nfunction icosahedronVertexCount(detail) {\r\n    return 10 * Math.pow(Math.pow(2, detail), 2) + 2;\r\n}\r\nexports.icosahedronVertexCount = icosahedronVertexCount;\r\nexports.DefaultIcosahedronProps = {\r\n    radius: 1,\r\n    detail: 0\r\n};\r\nfunction Icosahedron(props) {\r\n    return polyhedron_1.default(vertices, indices, __assign({}, exports.DefaultIcosahedronProps, props));\r\n}\r\nexports.default = Icosahedron;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/primitive/icosahedron.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/primitive/polyhedron.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-geo/primitive/polyhedron.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// adapted from three.js, MIT License Copyright 2010-2018 three.js authors\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar util_1 = __webpack_require__(/*! ../util */ \"./build/node_modules/mol-geo/util.js\");\r\nexports.DefaultPolyhedronProps = {\r\n    radius: 1,\r\n    detail: 0\r\n};\r\nfunction Polyhedron(_vertices, _indices, props) {\r\n    var _a = __assign({}, exports.DefaultPolyhedronProps, props), radius = _a.radius, detail = _a.detail;\r\n    var builder = createBuilder();\r\n    var vertices = builder.vertices, indices = builder.indices;\r\n    // the subdivision creates the vertex buffer data\r\n    subdivide(detail);\r\n    // all vertices should lie on a conceptual sphere with a given radius\r\n    util_1.appplyRadius(vertices, radius);\r\n    var normals = new Float32Array(vertices.length);\r\n    util_1.computeIndexedVertexNormals(vertices, indices, normals);\r\n    // this.normalizeNormals(); // smooth normals\r\n    return {\r\n        vertices: new Float32Array(vertices),\r\n        normals: new Float32Array(normals),\r\n        indices: new Uint32Array(indices)\r\n    };\r\n    // helper functions\r\n    function subdivide(detail) {\r\n        var a = linear_algebra_1.Vec3.zero();\r\n        var b = linear_algebra_1.Vec3.zero();\r\n        var c = linear_algebra_1.Vec3.zero();\r\n        // iterate over all faces and apply a subdivison with the given detail value\r\n        for (var i = 0; i < _indices.length; i += 3) {\r\n            // get the vertices of the face\r\n            linear_algebra_1.Vec3.fromArray(a, _vertices, _indices[i + 0] * 3);\r\n            linear_algebra_1.Vec3.fromArray(b, _vertices, _indices[i + 1] * 3);\r\n            linear_algebra_1.Vec3.fromArray(c, _vertices, _indices[i + 2] * 3);\r\n            // perform subdivision\r\n            subdivideFace(a, b, c, detail);\r\n        }\r\n    }\r\n    function subdivideFace(a, b, c, detail) {\r\n        var cols = Math.pow(2, detail);\r\n        // we use this multidimensional array as a data structure for creating the subdivision\r\n        var v = [];\r\n        // construct all of the vertices for this subdivision\r\n        for (var i = 0; i <= cols; ++i) {\r\n            v[i] = [];\r\n            var aj = linear_algebra_1.Vec3.zero();\r\n            linear_algebra_1.Vec3.lerp(aj, a, c, i / cols);\r\n            var bj = linear_algebra_1.Vec3.zero();\r\n            linear_algebra_1.Vec3.lerp(bj, b, c, i / cols);\r\n            var rows = cols - i;\r\n            for (var j = 0; j <= rows; ++j) {\r\n                if (j === 0 && i === cols) {\r\n                    v[i][j] = aj;\r\n                }\r\n                else {\r\n                    var abj = linear_algebra_1.Vec3.zero();\r\n                    linear_algebra_1.Vec3.lerp(abj, aj, bj, j / rows);\r\n                    v[i][j] = abj;\r\n                }\r\n            }\r\n        }\r\n        // // construct all of the faces\r\n        // for (let i = 0; i < cols; ++i) {\r\n        //     for (let j = 0; j < 2 * (cols - i) - 1; ++j) {\r\n        //         const k = Math.floor(j / 2)\r\n        //         if (j % 2 === 0) {\r\n        //             vertices.push(...v[i][k + 1], ...v[i + 1][k], ...v[i][k])\r\n        //         } else {\r\n        //             vertices.push(...v[i][k + 1], ...v[i + 1][k + 1], ...v[i + 1][k])\r\n        //         }\r\n        //         const l = vertices.length / 3\r\n        //         indices.push(l - 3, l - 2, l - 1)\r\n        //     }\r\n        // }\r\n        // construct all of the faces\r\n        for (var i = 0; i < cols; ++i) {\r\n            for (var j = 0; j < 2 * (cols - i) - 1; ++j) {\r\n                var k = Math.floor(j / 2);\r\n                if (j % 2 === 0) {\r\n                    builder.add;\r\n                    builder.add(v[i][k + 1], v[i + 1][k], v[i][k]);\r\n                }\r\n                else {\r\n                    builder.add(v[i][k + 1], v[i + 1][k + 1], v[i + 1][k]);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\nexports.default = Polyhedron;\r\nfunction createBuilder() {\r\n    var vertices = [];\r\n    var indices = [];\r\n    var vertexMap = new Map();\r\n    function addVertex(v) {\r\n        var key = v[0].toFixed(5) + \"|\" + v[1].toFixed(5) + \"|\" + v[2].toFixed(5);\r\n        var idx = vertexMap.get(key);\r\n        if (idx === undefined) {\r\n            idx = vertices.length / 3;\r\n            vertexMap.set(key, idx);\r\n            vertices.push.apply(vertices, v);\r\n        }\r\n        return idx;\r\n    }\r\n    return {\r\n        vertices: vertices,\r\n        indices: indices,\r\n        add: function (v1, v2, v3) {\r\n            indices.push(addVertex(v1), addVertex(v2), addVertex(v3));\r\n        }\r\n    };\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/primitive/polyhedron.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/structure/index.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/structure/index.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nfunction StructureRepresentation(reprCtor) {\r\n    var renderObjects = [];\r\n    var groupReprs = [];\r\n    return {\r\n        renderObjects: renderObjects,\r\n        create: function (structure, props) {\r\n            var _this = this;\r\n            if (props === void 0) { props = {}; }\r\n            return mol_task_1.Task.create('StructureRepresentation.create', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var groups, i, group, repr;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            groups = structure_1.StructureSymmetry.getTransformGroups(structure);\r\n                            i = 0;\r\n                            _a.label = 1;\r\n                        case 1:\r\n                            if (!(i < groups.length)) return [3 /*break*/, 4];\r\n                            group = groups[i];\r\n                            repr = reprCtor();\r\n                            groupReprs.push({ repr: repr, group: group });\r\n                            return [4 /*yield*/, ctx.runChild(repr.create(group, props), { message: 'Building structure unit representations...', current: i, max: groups.length })];\r\n                        case 2:\r\n                            _a.sent();\r\n                            renderObjects.push.apply(renderObjects, repr.renderObjects);\r\n                            _a.label = 3;\r\n                        case 3:\r\n                            i++;\r\n                            return [3 /*break*/, 1];\r\n                        case 4: return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        },\r\n        update: function (props) {\r\n            var _this = this;\r\n            return mol_task_1.Task.create('StructureRepresentation.update', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var i, il, groupRepr, repr, group, state;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            // TODO check model.id, conformation.id, unit.id, elementGroup(.hashCode/.areEqual)\r\n                            renderObjects.length = 0; // clear\r\n                            i = 0, il = groupReprs.length;\r\n                            _a.label = 1;\r\n                        case 1:\r\n                            if (!(i < il)) return [3 /*break*/, 6];\r\n                            groupRepr = groupReprs[i];\r\n                            repr = groupRepr.repr, group = groupRepr.group;\r\n                            state = { message: 'Updating structure unit representations...', current: i, max: il };\r\n                            return [4 /*yield*/, ctx.runChild(repr.update(props), state)];\r\n                        case 2:\r\n                            if (!!(_a.sent())) return [3 /*break*/, 4];\r\n                            return [4 /*yield*/, ctx.runChild(repr.create(group, props), state)];\r\n                        case 3:\r\n                            _a.sent();\r\n                            _a.label = 4;\r\n                        case 4:\r\n                            renderObjects.push.apply(renderObjects, repr.renderObjects);\r\n                            _a.label = 5;\r\n                        case 5:\r\n                            ++i;\r\n                            return [3 /*break*/, 1];\r\n                        case 6: return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        }\r\n    };\r\n}\r\nexports.StructureRepresentation = StructureRepresentation;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/structure/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/structure/point.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/structure/point.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar value_cell_1 = __webpack_require__(/*! mol-util/value-cell */ \"./build/node_modules/mol-util/value-cell.js\");\r\nvar scene_1 = __webpack_require__(/*! mol-gl/scene */ \"./build/node_modules/mol-gl/scene.js\");\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar util_1 = __webpack_require__(/*! mol-gl/renderable/util */ \"./build/node_modules/mol-gl/renderable/util.js\");\r\nvar vertex_map_1 = __webpack_require__(/*! ../../shape/vertex-map */ \"./build/node_modules/mol-geo/shape/vertex-map.js\");\r\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./build/node_modules/mol-geo/representation/structure/utils.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nexports.DefaultPointProps = {\r\n    colorTheme: { name: 'instance-index' },\r\n    sizeTheme: { name: 'vdw' },\r\n    alpha: 1,\r\n    visible: true\r\n};\r\nfunction createPointVertices(unit) {\r\n    var elements = unit.elements;\r\n    var elementCount = elements.length;\r\n    var vertices = new Float32Array(elementCount * 3);\r\n    var _a = unit.conformation, x = _a.x, y = _a.y, z = _a.z;\r\n    var l = structure_1.Element.Location();\r\n    l.unit = unit;\r\n    for (var i = 0; i < elementCount; i++) {\r\n        l.element = elements[i];\r\n        var i3 = i * 3;\r\n        vertices[i3] = x(l.element);\r\n        vertices[i3 + 1] = y(l.element);\r\n        vertices[i3 + 2] = z(l.element);\r\n    }\r\n    return vertices;\r\n}\r\nexports.createPointVertices = createPointVertices;\r\nfunction Point() {\r\n    var renderObjects = [];\r\n    var points;\r\n    var curProps = exports.DefaultPointProps;\r\n    var _units;\r\n    var _elements;\r\n    return {\r\n        renderObjects: renderObjects,\r\n        create: function (group, props) {\r\n            var _this = this;\r\n            if (props === void 0) { props = {}; }\r\n            return mol_task_1.Task.create('Point.create', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var colorTheme, sizeTheme, alpha, visible, elementCount, unitCount, vertexMap, vertices, transforms, color, size;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            renderObjects.length = 0; // clear\r\n                            curProps = __assign({}, exports.DefaultPointProps, props);\r\n                            _units = group.units;\r\n                            _elements = group.elements;\r\n                            colorTheme = curProps.colorTheme, sizeTheme = curProps.sizeTheme, alpha = curProps.alpha, visible = curProps.visible;\r\n                            elementCount = _elements.length;\r\n                            unitCount = _units.length;\r\n                            vertexMap = vertex_map_1.default.create(elementCount, elementCount + 1, util_1.fillSerial(new Uint32Array(elementCount)), util_1.fillSerial(new Uint32Array(elementCount + 1)));\r\n                            return [4 /*yield*/, ctx.update('Computing point vertices')];\r\n                        case 1:\r\n                            _a.sent();\r\n                            vertices = createPointVertices(_units[0]);\r\n                            return [4 /*yield*/, ctx.update('Computing point transforms')];\r\n                        case 2:\r\n                            _a.sent();\r\n                            transforms = utils_1.createTransforms(group);\r\n                            return [4 /*yield*/, ctx.update('Computing point colors')];\r\n                        case 3:\r\n                            _a.sent();\r\n                            color = utils_1.createColors(group, vertexMap, colorTheme);\r\n                            return [4 /*yield*/, ctx.update('Computing point sizes')];\r\n                        case 4:\r\n                            _a.sent();\r\n                            size = utils_1.createSizes(group, vertexMap, sizeTheme);\r\n                            points = scene_1.createPointRenderObject({\r\n                                objectId: 0,\r\n                                alpha: alpha,\r\n                                visible: visible,\r\n                                position: value_cell_1.ValueCell.create(vertices),\r\n                                id: value_cell_1.ValueCell.create(util_1.fillSerial(new Float32Array(elementCount))),\r\n                                size: size,\r\n                                color: color,\r\n                                transform: value_cell_1.ValueCell.create(transforms),\r\n                                instanceCount: unitCount,\r\n                                elementCount: elementCount,\r\n                                positionCount: vertices.length / 3,\r\n                                usePointSizeAttenuation: true\r\n                            });\r\n                            renderObjects.push(points);\r\n                            return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        },\r\n        update: function (props) {\r\n            var _this = this;\r\n            return mol_task_1.Task.create('Point.update', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var newProps;\r\n                return __generator(this, function (_a) {\r\n                    if (!points || !_units || !_elements)\r\n                        return [2 /*return*/, false];\r\n                    newProps = __assign({}, curProps, props);\r\n                    if (mol_util_1.deepEqual(curProps, newProps)) {\r\n                        console.log('props identical, nothing to change');\r\n                        return [2 /*return*/, true];\r\n                    }\r\n                    // const elementCount = OrderedSet.size(_elementGroup.elements)\r\n                    // const unitCount = _units.length\r\n                    // const vertexMap = VertexMap.create(\r\n                    //     elementCount,\r\n                    //     elementCount + 1,\r\n                    //     fillSerial(new Uint32Array(elementCount)),\r\n                    //     fillSerial(new Uint32Array(elementCount + 1))\r\n                    // )\r\n                    if (!mol_util_1.deepEqual(curProps.colorTheme, newProps.colorTheme)) {\r\n                        console.log('colorTheme changed', curProps.colorTheme, newProps.colorTheme);\r\n                        // await ctx.update('Computing point colors');\r\n                        // const color = createColors(_units, _elementGroup, vertexMap, newProps.colorTheme)\r\n                        // ValueCell.update(points.props.color, color)\r\n                    }\r\n                    if (!mol_util_1.deepEqual(curProps.sizeTheme, newProps.sizeTheme)) {\r\n                        console.log('sizeTheme changed', curProps.sizeTheme, newProps.sizeTheme);\r\n                    }\r\n                    curProps = newProps;\r\n                    return [2 /*return*/, false];\r\n                });\r\n            }); });\r\n        }\r\n    };\r\n}\r\nexports.default = Point;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/structure/point.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/structure/spacefill.js":
+/*!**************************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/structure/spacefill.js ***!
+  \**************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar value_cell_1 = __webpack_require__(/*! mol-util/value-cell */ \"./build/node_modules/mol-util/value-cell.js\");\r\nvar scene_1 = __webpack_require__(/*! mol-gl/scene */ \"./build/node_modules/mol-gl/scene.js\");\r\n// import { createColorTexture } from 'mol-gl/util';\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar mesh_builder_1 = __webpack_require__(/*! ../../shape/mesh-builder */ \"./build/node_modules/mol-geo/shape/mesh-builder.js\");\r\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./build/node_modules/mol-geo/representation/structure/utils.js\");\r\nvar vertex_map_1 = __webpack_require__(/*! ../../shape/vertex-map */ \"./build/node_modules/mol-geo/shape/vertex-map.js\");\r\nvar icosahedron_1 = __webpack_require__(/*! ../../primitive/icosahedron */ \"./build/node_modules/mol-geo/primitive/icosahedron.js\");\r\nexports.DefaultSpacefillProps = {\r\n    detail: 0,\r\n    colorTheme: { name: 'instance-index' },\r\n    alpha: 1,\r\n    visible: true,\r\n    doubleSided: false\r\n};\r\nfunction createSpacefillMesh(unit, detail) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Sphere mesh', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var elements, elementCount, vertexCount, meshBuilder, radius, v, m, _a, x, y, z, l, i;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    elements = unit.elements;\r\n                    elementCount = elements.length;\r\n                    vertexCount = elementCount * icosahedron_1.icosahedronVertexCount(detail);\r\n                    meshBuilder = mesh_builder_1.MeshBuilder.create(vertexCount);\r\n                    if (structure_1.Unit.isAtomic(unit)) {\r\n                        radius = structure_1.Queries.props.atom.vdw_radius;\r\n                    }\r\n                    else if (structure_1.Unit.isSpheres(unit)) {\r\n                        radius = structure_1.Queries.props.coarse.sphere_radius;\r\n                    }\r\n                    else {\r\n                        console.warn('Unsupported unit type');\r\n                        return [2 /*return*/, meshBuilder.getMesh()];\r\n                    }\r\n                    v = linear_algebra_1.Vec3.zero();\r\n                    m = linear_algebra_1.Mat4.identity();\r\n                    _a = unit.conformation, x = _a.x, y = _a.y, z = _a.z;\r\n                    l = structure_1.Element.Location();\r\n                    l.unit = unit;\r\n                    i = 0;\r\n                    _b.label = 1;\r\n                case 1:\r\n                    if (!(i < elementCount)) return [3 /*break*/, 4];\r\n                    l.element = elements[i];\r\n                    v[0] = x(l.element);\r\n                    v[1] = y(l.element);\r\n                    v[2] = z(l.element);\r\n                    linear_algebra_1.Mat4.setTranslation(m, v);\r\n                    meshBuilder.setId(i);\r\n                    meshBuilder.addIcosahedron(m, { radius: radius(l), detail: detail });\r\n                    if (!(i % 10000 === 0 && ctx.shouldUpdate)) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, ctx.update({ message: 'Sphere mesh', current: i, max: elementCount })];\r\n                case 2:\r\n                    _b.sent();\r\n                    _b.label = 3;\r\n                case 3:\r\n                    i++;\r\n                    return [3 /*break*/, 1];\r\n                case 4: return [2 /*return*/, meshBuilder.getMesh()];\r\n            }\r\n        });\r\n    }); });\r\n}\r\nfunction Spacefill() {\r\n    var renderObjects = [];\r\n    var spheres;\r\n    return {\r\n        renderObjects: renderObjects,\r\n        create: function (group, props) {\r\n            var _this = this;\r\n            if (props === void 0) { props = {}; }\r\n            return mol_task_1.Task.create('Spacefill.create', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var _a, detail, colorTheme, alpha, visible, doubleSided, mesh, vertexMap, transforms, color;\r\n                return __generator(this, function (_b) {\r\n                    switch (_b.label) {\r\n                        case 0:\r\n                            renderObjects.length = 0; // clear\r\n                            _a = __assign({}, exports.DefaultSpacefillProps, props), detail = _a.detail, colorTheme = _a.colorTheme, alpha = _a.alpha, visible = _a.visible, doubleSided = _a.doubleSided;\r\n                            return [4 /*yield*/, ctx.update('Computing spacefill mesh')];\r\n                        case 1:\r\n                            _b.sent();\r\n                            return [4 /*yield*/, ctx.runChild(createSpacefillMesh(group.units[0], detail))\r\n                                // console.log(mesh)\r\n                            ];\r\n                        case 2:\r\n                            mesh = _b.sent();\r\n                            vertexMap = vertex_map_1.default.fromMesh(mesh);\r\n                            return [4 /*yield*/, ctx.update('Computing spacefill transforms')];\r\n                        case 3:\r\n                            _b.sent();\r\n                            transforms = utils_1.createTransforms(group);\r\n                            return [4 /*yield*/, ctx.update('Computing spacefill colors')];\r\n                        case 4:\r\n                            _b.sent();\r\n                            color = utils_1.createColors(group, vertexMap, colorTheme);\r\n                            spheres = scene_1.createMeshRenderObject({\r\n                                objectId: 0,\r\n                                alpha: alpha,\r\n                                visible: visible,\r\n                                doubleSided: doubleSided,\r\n                                position: mesh.vertexBuffer,\r\n                                normal: mesh.normalBuffer,\r\n                                color: color,\r\n                                id: mesh.idBuffer,\r\n                                transform: value_cell_1.ValueCell.create(transforms),\r\n                                index: mesh.indexBuffer,\r\n                                instanceCount: group.units.length,\r\n                                indexCount: mesh.triangleCount,\r\n                                elementCount: group.elements.length,\r\n                                positionCount: mesh.vertexCount\r\n                            });\r\n                            renderObjects.push(spheres);\r\n                            return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        },\r\n        update: function (props) {\r\n            var _this = this;\r\n            return mol_task_1.Task.create('Spacefill.update', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                return __generator(this, function (_a) {\r\n                    if (!spheres)\r\n                        return [2 /*return*/, false];\r\n                    return [2 /*return*/, false];\r\n                });\r\n            }); });\r\n        }\r\n    };\r\n}\r\nexports.default = Spacefill;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/structure/spacefill.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/structure/utils.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/structure/utils.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar color_data_1 = __webpack_require__(/*! ../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\nvar size_data_1 = __webpack_require__(/*! ../../util/size-data */ \"./build/node_modules/mol-geo/util/size-data.js\");\r\nvar element_1 = __webpack_require__(/*! ../../theme/structure/size/element */ \"./build/node_modules/mol-geo/theme/structure/size/element.js\");\r\nvar color_1 = __webpack_require__(/*! ../../theme/structure/color */ \"./build/node_modules/mol-geo/theme/structure/color/index.js\");\r\nfunction createTransforms(_a) {\r\n    var units = _a.units;\r\n    var unitCount = units.length;\r\n    var transforms = new Float32Array(unitCount * 16);\r\n    for (var i = 0; i < unitCount; i++) {\r\n        linear_algebra_1.Mat4.toArray(units[i].conformation.operator.matrix, transforms, i * 16);\r\n    }\r\n    return transforms;\r\n}\r\nexports.createTransforms = createTransforms;\r\nfunction createColors(group, vertexMap, props) {\r\n    switch (props.name) {\r\n        case 'atom-index':\r\n            return color_1.elementIndexColorData({ group: group, vertexMap: vertexMap });\r\n        case 'chain-id':\r\n            return color_1.chainIdColorData({ group: group, vertexMap: vertexMap });\r\n        case 'element-symbol':\r\n            return color_1.elementSymbolColorData({ group: group, vertexMap: vertexMap });\r\n        case 'instance-index':\r\n            return color_1.instanceIndexColorData({ group: group, vertexMap: vertexMap });\r\n        case 'uniform':\r\n            return color_data_1.createUniformColor(props);\r\n    }\r\n}\r\nexports.createColors = createColors;\r\nfunction createSizes(group, vertexMap, props) {\r\n    switch (props.name) {\r\n        case 'uniform':\r\n            return size_data_1.createUniformSize(props);\r\n        case 'vdw':\r\n            return element_1.elementSizeData({ group: group, vertexMap: vertexMap });\r\n    }\r\n}\r\nexports.createSizes = createSizes;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/structure/utils.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/volume/index.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/volume/index.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nfunction VolumeRepresentation(reprCtor) {\r\n    var renderObjects = [];\r\n    return {\r\n        renderObjects: renderObjects,\r\n        create: function (volumeData, props) {\r\n            var _this = this;\r\n            if (props === void 0) { props = {}; }\r\n            return mol_task_1.Task.create('VolumeRepresentation.create', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var repr;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            repr = reprCtor();\r\n                            return [4 /*yield*/, ctx.update({ message: 'Building volume representation...', current: 0, max: 1 })];\r\n                        case 1:\r\n                            _a.sent();\r\n                            return [4 /*yield*/, ctx.runChild(repr.create(volumeData, props))];\r\n                        case 2:\r\n                            _a.sent();\r\n                            renderObjects.push.apply(renderObjects, repr.renderObjects);\r\n                            return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        },\r\n        update: function (props) {\r\n            var _this = this;\r\n            return mol_task_1.Task.create('VolumeRepresentation.update', function (ctx) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\r\n                return [2 /*return*/];\r\n            }); }); });\r\n        }\r\n    };\r\n}\r\nexports.VolumeRepresentation = VolumeRepresentation;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/volume/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/representation/volume/surface.js":
+/*!*********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/representation/volume/surface.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar volume_1 = __webpack_require__(/*! mol-model/volume */ \"./build/node_modules/mol-model/volume.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar algorithm_1 = __webpack_require__(/*! ../../util/marching-cubes/algorithm */ \"./build/node_modules/mol-geo/util/marching-cubes/algorithm.js\");\r\nvar mesh_1 = __webpack_require__(/*! ../../shape/mesh */ \"./build/node_modules/mol-geo/shape/mesh.js\");\r\nvar scene_1 = __webpack_require__(/*! mol-gl/scene */ \"./build/node_modules/mol-gl/scene.js\");\r\nvar util_1 = __webpack_require__(/*! mol-gl/renderable/util */ \"./build/node_modules/mol-gl/renderable/util.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar color_data_1 = __webpack_require__(/*! ../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\nfunction computeVolumeSurface(volume, isoValue) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Volume Surface', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var mesh, transform;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    ctx.update({ message: 'Marching cubes...' });\r\n                    return [4 /*yield*/, ctx.runChild(algorithm_1.computeMarchingCubes({\r\n                            isoLevel: volume_1.VolumeIsoValue.toAbsolute(isoValue).absoluteValue,\r\n                            scalarField: volume.data\r\n                        }))];\r\n                case 1:\r\n                    mesh = _a.sent();\r\n                    transform = volume_1.VolumeData.getGridToCartesianTransform(volume);\r\n                    ctx.update({ message: 'Transforming mesh...' });\r\n                    mesh_1.Mesh.transformImmediate(mesh, transform);\r\n                    return [2 /*return*/, mesh];\r\n            }\r\n        });\r\n    }); });\r\n}\r\nexports.computeVolumeSurface = computeVolumeSurface;\r\nexports.DefaultSurfaceProps = {\r\n    isoValue: volume_1.VolumeIsoValue.relative({ min: 0, max: 0, mean: 0, sigma: 0 }, 0),\r\n    alpha: 0.5,\r\n    visible: true,\r\n    flatShaded: true,\r\n    flipSided: true,\r\n    doubleSided: true\r\n};\r\nfunction Surface() {\r\n    var renderObjects = [];\r\n    var surface;\r\n    var curProps = exports.DefaultSurfaceProps;\r\n    return {\r\n        renderObjects: renderObjects,\r\n        create: function (volume, props) {\r\n            var _this = this;\r\n            if (props === void 0) { props = {}; }\r\n            return mol_task_1.Task.create('Point.create', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                var alpha, visible, flatShaded, flipSided, doubleSided, mesh;\r\n                return __generator(this, function (_a) {\r\n                    switch (_a.label) {\r\n                        case 0:\r\n                            renderObjects.length = 0; // clear\r\n                            curProps = __assign({}, exports.DefaultSurfaceProps, props);\r\n                            alpha = curProps.alpha, visible = curProps.visible, flatShaded = curProps.flatShaded, flipSided = curProps.flipSided, doubleSided = curProps.doubleSided;\r\n                            return [4 /*yield*/, ctx.runChild(computeVolumeSurface(volume, curProps.isoValue))];\r\n                        case 1:\r\n                            mesh = _a.sent();\r\n                            if (!flatShaded) {\r\n                                mesh_1.Mesh.computeNormalsImmediate(mesh);\r\n                            }\r\n                            surface = scene_1.createMeshRenderObject({\r\n                                objectId: 0,\r\n                                alpha: alpha,\r\n                                visible: visible,\r\n                                position: mesh.vertexBuffer,\r\n                                normal: mesh.normalBuffer,\r\n                                id: mol_util_1.ValueCell.create(util_1.fillSerial(new Float32Array(mesh.vertexCount / 3))),\r\n                                color: color_data_1.createUniformColor({ value: 0x7ec0ee }),\r\n                                transform: mol_util_1.ValueCell.create(new Float32Array(linear_algebra_1.Mat4.identity())),\r\n                                index: mesh.indexBuffer,\r\n                                instanceCount: 1,\r\n                                indexCount: mesh.triangleCount,\r\n                                elementCount: mesh.triangleCount,\r\n                                positionCount: mesh.vertexCount / 3,\r\n                                flatShaded: flatShaded,\r\n                                doubleSided: doubleSided,\r\n                                flipSided: flipSided\r\n                            });\r\n                            renderObjects.push(surface);\r\n                            return [2 /*return*/];\r\n                    }\r\n                });\r\n            }); });\r\n        },\r\n        update: function (props) {\r\n            var _this = this;\r\n            return mol_task_1.Task.create('Surface.update', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n                return __generator(this, function (_a) {\r\n                    // TODO\r\n                    return [2 /*return*/, false];\r\n                });\r\n            }); });\r\n        }\r\n    };\r\n}\r\nexports.default = Surface;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/representation/volume/surface.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/shape/mesh-builder.js":
+/*!**********************************************************!*\
+  !*** ./build/node_modules/mol-geo/shape/mesh-builder.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar value_cell_1 = __webpack_require__(/*! mol-util/value-cell */ \"./build/node_modules/mol-util/value-cell.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar box_1 = __webpack_require__(/*! ../primitive/box */ \"./build/node_modules/mol-geo/primitive/box.js\");\r\nvar cylinder_1 = __webpack_require__(/*! ../primitive/cylinder */ \"./build/node_modules/mol-geo/primitive/cylinder.js\");\r\nvar icosahedron_1 = __webpack_require__(/*! ../primitive/icosahedron */ \"./build/node_modules/mol-geo/primitive/icosahedron.js\");\r\nvar tmpV = linear_algebra_1.Vec3.zero();\r\n// TODO cache primitives based on props\r\nvar MeshBuilder;\r\n(function (MeshBuilder) {\r\n    function create(initialCount, chunkSize) {\r\n        if (initialCount === void 0) { initialCount = 2048; }\r\n        if (chunkSize === void 0) { chunkSize = 1024; }\r\n        var vertices = util_1.ChunkedArray.create(Float32Array, 3, chunkSize, initialCount);\r\n        var normals = util_1.ChunkedArray.create(Float32Array, 3, chunkSize, initialCount);\r\n        var indices = util_1.ChunkedArray.create(Uint32Array, 3, chunkSize * 3, initialCount * 3);\r\n        var ids = util_1.ChunkedArray.create(Float32Array, 1, chunkSize, initialCount);\r\n        var offsets = util_1.ChunkedArray.create(Uint32Array, 1, chunkSize, initialCount);\r\n        var currentId = -1;\r\n        var icosahedronMap = new Map();\r\n        var add = function (t, _vertices, _normals, _indices) {\r\n            var elementCount = vertices.elementCount, elementSize = vertices.elementSize;\r\n            for (var i = 0, il = _vertices.length; i < il; i += 3) {\r\n                // position\r\n                linear_algebra_1.Vec3.fromArray(tmpV, _vertices, i);\r\n                linear_algebra_1.Vec3.transformMat4(tmpV, tmpV, t);\r\n                util_1.ChunkedArray.add3(vertices, tmpV[0], tmpV[1], tmpV[2]);\r\n                // normal\r\n                linear_algebra_1.Vec3.fromArray(tmpV, _normals, i);\r\n                // Vec3.transformDirection(tmpV, tmpV, n)  // TODO\r\n                util_1.ChunkedArray.add3(normals, tmpV[0], tmpV[1], tmpV[2]);\r\n                util_1.ChunkedArray.add(ids, currentId);\r\n            }\r\n            for (var i = 0, il = _indices.length; i < il; i += 3) {\r\n                util_1.ChunkedArray.add3(indices, _indices[i] + elementCount, _indices[i + 1] + elementCount, _indices[i + 2] + elementCount);\r\n            }\r\n            return elementCount * elementSize;\r\n        };\r\n        return {\r\n            add: add,\r\n            addBox: function (t, props) {\r\n                var box = box_1.default(props);\r\n                return add(t, box.vertices, box.normals, box.indices);\r\n            },\r\n            addCylinder: function (t, props) {\r\n                var cylinder = cylinder_1.default(props);\r\n                return add(t, cylinder.vertices, cylinder.normals, cylinder.indices);\r\n            },\r\n            addIcosahedron: function (t, props) {\r\n                var key = JSON.stringify(props);\r\n                var icosahedron = icosahedronMap.get(key);\r\n                if (icosahedron === undefined) {\r\n                    icosahedron = icosahedron_1.default(props);\r\n                    icosahedronMap.set(key, icosahedron);\r\n                }\r\n                return add(t, icosahedron.vertices, icosahedron.normals, icosahedron.indices);\r\n            },\r\n            setId: function (id) {\r\n                if (currentId !== id) {\r\n                    currentId = id;\r\n                    util_1.ChunkedArray.add(offsets, vertices.elementCount);\r\n                }\r\n            },\r\n            getMesh: function () {\r\n                util_1.ChunkedArray.add(offsets, vertices.elementCount);\r\n                var mesh = {\r\n                    vertexCount: vertices.elementCount,\r\n                    triangleCount: indices.elementCount,\r\n                    offsetCount: offsets.elementCount,\r\n                    vertexBuffer: value_cell_1.ValueCell.create(util_1.ChunkedArray.compact(vertices, true)),\r\n                    indexBuffer: value_cell_1.ValueCell.create(util_1.ChunkedArray.compact(indices, true)),\r\n                    normalBuffer: value_cell_1.ValueCell.create(util_1.ChunkedArray.compact(normals, true)),\r\n                    idBuffer: value_cell_1.ValueCell.create(util_1.ChunkedArray.compact(ids, true)),\r\n                    offsetBuffer: value_cell_1.ValueCell.create(util_1.ChunkedArray.compact(offsets, true)),\r\n                    normalsComputed: true,\r\n                };\r\n                return mesh;\r\n            }\r\n        };\r\n    }\r\n    MeshBuilder.create = create;\r\n})(MeshBuilder = exports.MeshBuilder || (exports.MeshBuilder = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/shape/mesh-builder.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/shape/mesh.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-geo/shape/mesh.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar util_1 = __webpack_require__(/*! ../util */ \"./build/node_modules/mol-geo/util.js\");\r\nvar Mesh;\r\n(function (Mesh) {\r\n    function computeNormalsImmediate(surface) {\r\n        if (surface.normalsComputed)\r\n            return;\r\n        var normals = surface.normalBuffer.ref.value && surface.normalBuffer.ref.value.length >= surface.vertexCount * 3\r\n            ? surface.normalBuffer.ref.value : new Float32Array(surface.vertexBuffer.ref.value.length);\r\n        var v = surface.vertexBuffer.ref.value, triangles = surface.indexBuffer.ref.value;\r\n        var x = linear_algebra_1.Vec3.zero(), y = linear_algebra_1.Vec3.zero(), z = linear_algebra_1.Vec3.zero(), d1 = linear_algebra_1.Vec3.zero(), d2 = linear_algebra_1.Vec3.zero(), n = linear_algebra_1.Vec3.zero();\r\n        for (var i = 0, ii = 3 * surface.triangleCount; i < ii; i += 3) {\r\n            var a = 3 * triangles[i], b = 3 * triangles[i + 1], c = 3 * triangles[i + 2];\r\n            linear_algebra_1.Vec3.fromArray(x, v, a);\r\n            linear_algebra_1.Vec3.fromArray(y, v, b);\r\n            linear_algebra_1.Vec3.fromArray(z, v, c);\r\n            linear_algebra_1.Vec3.sub(d1, z, y);\r\n            linear_algebra_1.Vec3.sub(d2, y, x);\r\n            linear_algebra_1.Vec3.cross(n, d1, d2);\r\n            normals[a] += n[0];\r\n            normals[a + 1] += n[1];\r\n            normals[a + 2] += n[2];\r\n            normals[b] += n[0];\r\n            normals[b + 1] += n[1];\r\n            normals[b + 2] += n[2];\r\n            normals[c] += n[0];\r\n            normals[c + 1] += n[1];\r\n            normals[c + 2] += n[2];\r\n        }\r\n        for (var i = 0, ii = 3 * surface.vertexCount; i < ii; i += 3) {\r\n            var nx = normals[i];\r\n            var ny = normals[i + 1];\r\n            var nz = normals[i + 2];\r\n            var f = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);\r\n            normals[i] *= f;\r\n            normals[i + 1] *= f;\r\n            normals[i + 2] *= f;\r\n            // console.log([normals[i], normals[i + 1], normals[i + 2]], [v[i], v[i + 1], v[i + 2]])\r\n        }\r\n        surface.normalBuffer = mol_util_1.ValueCell.update(surface.normalBuffer, normals);\r\n        surface.normalsComputed = true;\r\n    }\r\n    Mesh.computeNormalsImmediate = computeNormalsImmediate;\r\n    function computeNormals(surface) {\r\n        var _this = this;\r\n        return mol_task_1.Task.create('Surface (Compute Normals)', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (surface.normalsComputed)\r\n                            return [2 /*return*/, surface];\r\n                        return [4 /*yield*/, ctx.update('Computing normals...')];\r\n                    case 1:\r\n                        _a.sent();\r\n                        computeNormalsImmediate(surface);\r\n                        return [2 /*return*/, surface];\r\n                }\r\n            });\r\n        }); });\r\n    }\r\n    Mesh.computeNormals = computeNormals;\r\n    function transformImmediate(mesh, t) {\r\n        transformRangeImmediate(mesh, t, 0, mesh.vertexCount);\r\n    }\r\n    Mesh.transformImmediate = transformImmediate;\r\n    function transformRangeImmediate(mesh, t, offset, count) {\r\n        util_1.transformPositionArray(t, mesh.vertexBuffer.ref.value, offset, count);\r\n        // TODO normals transformation does not work for an unknown reason, ASR\r\n        // if (mesh.normalBuffer.ref.value) {\r\n        //     const n = getNormalMatrix(Mat3.zero(), t)\r\n        //     transformDirectionArray(n, mesh.normalBuffer.ref.value, offset, count)\r\n        //     mesh.normalsComputed = true;\r\n        // }\r\n        mesh.normalsComputed = false;\r\n        // mesh.boundingSphere = void 0;\r\n    }\r\n    Mesh.transformRangeImmediate = transformRangeImmediate;\r\n    function computeBoundingSphere(mesh) {\r\n        var _this = this;\r\n        return mol_task_1.Task.create('Mesh (Compute Bounding Sphere)', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n            var vertices, x, y, z, i, _c, r, i, _c, dx, dy, dz;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (mesh.boundingSphere) {\r\n                            return [2 /*return*/, mesh];\r\n                        }\r\n                        return [4 /*yield*/, ctx.update('Computing bounding sphere...')];\r\n                    case 1:\r\n                        _a.sent();\r\n                        vertices = mesh.vertexBuffer.ref.value;\r\n                        x = 0, y = 0, z = 0;\r\n                        for (i = 0, _c = vertices.length; i < _c; i += 3) {\r\n                            x += vertices[i];\r\n                            y += vertices[i + 1];\r\n                            z += vertices[i + 2];\r\n                        }\r\n                        x /= mesh.vertexCount;\r\n                        y /= mesh.vertexCount;\r\n                        z /= mesh.vertexCount;\r\n                        r = 0;\r\n                        for (i = 0, _c = vertices.length; i < _c; i += 3) {\r\n                            dx = x - vertices[i];\r\n                            dy = y - vertices[i + 1];\r\n                            dz = z - vertices[i + 2];\r\n                            r = Math.max(r, dx * dx + dy * dy + dz * dz);\r\n                        }\r\n                        mesh.boundingSphere = {\r\n                            center: linear_algebra_1.Vec3.create(x, y, z),\r\n                            radius: Math.sqrt(r)\r\n                        };\r\n                        return [2 /*return*/, mesh];\r\n                }\r\n            });\r\n        }); });\r\n    }\r\n    Mesh.computeBoundingSphere = computeBoundingSphere;\r\n})(Mesh = exports.Mesh || (exports.Mesh = {}));\r\n//     function addVertex(src: Float32Array, i: number, dst: Float32Array, j: number) {\r\n//         dst[3 * j] += src[3 * i];\r\n//         dst[3 * j + 1] += src[3 * i + 1];\r\n//         dst[3 * j + 2] += src[3 * i + 2];\r\n//     }\r\n//     function laplacianSmoothIter(surface: Surface, vertexCounts: Int32Array, vs: Float32Array, vertexWeight: number) {\r\n//         const triCount = surface.triangleIndices.length,\r\n//             src = surface.vertices;\r\n//         const triangleIndices = surface.triangleIndices;\r\n//         for (let i = 0; i < triCount; i += 3) {\r\n//             const a = triangleIndices[i],\r\n//                 b = triangleIndices[i + 1],\r\n//                 c = triangleIndices[i + 2];\r\n//             addVertex(src, b, vs, a);\r\n//             addVertex(src, c, vs, a);\r\n//             addVertex(src, a, vs, b);\r\n//             addVertex(src, c, vs, b);\r\n//             addVertex(src, a, vs, c);\r\n//             addVertex(src, b, vs, c);\r\n//         }\r\n//         const vw = 2 * vertexWeight;\r\n//         for (let i = 0, _b = surface.vertexCount; i < _b; i++) {\r\n//             const n = vertexCounts[i] + vw;\r\n//             vs[3 * i] = (vs[3 * i] + vw * src[3 * i]) / n;\r\n//             vs[3 * i + 1] = (vs[3 * i + 1] + vw * src[3 * i + 1]) / n;\r\n//             vs[3 * i + 2] = (vs[3 * i + 2] + vw * src[3 * i + 2]) / n;\r\n//         }\r\n//     }\r\n//     async function laplacianSmoothComputation(ctx: Computation.Context, surface: Surface, iterCount: number, vertexWeight: number) {\r\n//         await ctx.updateProgress('Smoothing surface...', true);\r\n//         const vertexCounts = new Int32Array(surface.vertexCount),\r\n//             triCount = surface.triangleIndices.length;\r\n//         const tris = surface.triangleIndices;\r\n//         for (let i = 0; i < triCount; i++) {\r\n//             // in a triangle 2 edges touch each vertex, hence the constant.\r\n//             vertexCounts[tris[i]] += 2;\r\n//         }\r\n//         let vs = new Float32Array(surface.vertices.length);\r\n//         let started = Utils.PerformanceMonitor.currentTime();\r\n//         await ctx.updateProgress('Smoothing surface...', true);\r\n//         for (let i = 0; i < iterCount; i++) {\r\n//             if (i > 0) {\r\n//                 for (let j = 0, _b = vs.length; j < _b; j++) vs[j] = 0;\r\n//             }\r\n//             surface.normals = void 0;\r\n//             laplacianSmoothIter(surface, vertexCounts, vs, vertexWeight);\r\n//             const t = surface.vertices;\r\n//             surface.vertices = <any>vs;\r\n//             vs = <any>t;\r\n//             const time = Utils.PerformanceMonitor.currentTime();\r\n//             if (time - started > Computation.UpdateProgressDelta) {\r\n//                 started = time;\r\n//                 await ctx.updateProgress('Smoothing surface...', true, i + 1, iterCount);\r\n//             }\r\n//         }\r\n//         return surface;\r\n//     }\r\n//     /*\r\n//      * Smooths the vertices by averaging the neighborhood.\r\n//      *\r\n//      * Resets normals. Might replace vertex array.\r\n//      */\r\n//     export function laplacianSmooth(surface: Surface, iterCount: number = 1, vertexWeight: number = 1): Computation<Surface> {\r\n//         if (iterCount < 1) iterCount = 0;\r\n//         if (iterCount === 0) return Computation.resolve(surface);\r\n//         return computation(async ctx => await laplacianSmoothComputation(ctx, surface, iterCount, (1.1 * vertexWeight) / 1.1));\r\n//     }\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/shape/mesh.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/shape/vertex-map.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-geo/shape/vertex-map.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nfunction createOffsets(idCount, ids) {\r\n    if (!ids)\r\n        return new Uint32Array(0);\r\n    var offsets = util_1.ChunkedArray.create(Uint32Array, 1, 1024, 2048);\r\n    var prevId = ids[0];\r\n    util_1.ChunkedArray.add(offsets, 0);\r\n    for (var i = 1; i < idCount; ++i) {\r\n        if (prevId !== ids[i]) {\r\n            prevId = ids[i];\r\n            util_1.ChunkedArray.add(offsets, i);\r\n        }\r\n    }\r\n    util_1.ChunkedArray.add(offsets, idCount);\r\n    return util_1.ChunkedArray.compact(offsets, false);\r\n}\r\nvar VertexMap;\r\n(function (VertexMap) {\r\n    function create(idCount, offsetCount, ids, offsets) {\r\n        return {\r\n            idCount: idCount,\r\n            offsetCount: offsetCount,\r\n            ids: ids,\r\n            offsets: offsets\r\n        };\r\n    }\r\n    VertexMap.create = create;\r\n    function fromMesh(mesh) {\r\n        var ids = mesh.idBuffer.ref.value;\r\n        var offsets = createOffsets(mesh.vertexCount, ids);\r\n        return create(mesh.vertexCount, offsets.length, ids, offsets);\r\n    }\r\n    VertexMap.fromMesh = fromMesh;\r\n    function rangeFromId(id, vertexMap) {\r\n        return [0, 0];\r\n    }\r\n    VertexMap.rangeFromId = rangeFromId;\r\n})(VertexMap || (VertexMap = {}));\r\nexports.default = VertexMap;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/shape/vertex-map.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/color/chain-id.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/color/chain-id.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar color_data_1 = __webpack_require__(/*! ../../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\nfunction createChainIdMap(unit) {\r\n    var map = new Map();\r\n    var index = 0;\r\n    var count;\r\n    var asym_id;\r\n    if (structure_1.Unit.isAtomic(unit)) {\r\n        asym_id = unit.model.atomicHierarchy.chains.label_asym_id;\r\n        count = unit.model.atomicHierarchy.chains._rowCount;\r\n    }\r\n    else if (structure_1.Unit.isCoarse(unit)) {\r\n        asym_id = unit.coarseElements.asym_id;\r\n        count = unit.coarseElements.count;\r\n    }\r\n    else {\r\n        console.warn('Unknown unit type');\r\n        return { map: map, count: index };\r\n    }\r\n    for (var i = 0; i < count; ++i) {\r\n        var chainId = asym_id.value(i);\r\n        if (map.get(chainId) === undefined) {\r\n            map.set(chainId, index);\r\n            index += 1;\r\n        }\r\n    }\r\n    return { map: map, count: index };\r\n}\r\nfunction chainIdColorData(props) {\r\n    var _a = props.group, units = _a.units, elements = _a.elements, vertexMap = props.vertexMap;\r\n    var unit = units[0];\r\n    var _b = createChainIdMap(unit), map = _b.map, count = _b.count;\r\n    var domain = [0, count - 1];\r\n    var scale = color_1.ColorScale.create({ domain: domain });\r\n    var asym_id;\r\n    if (structure_1.Unit.isAtomic(unit)) {\r\n        asym_id = structure_1.Queries.props.chain.label_asym_id;\r\n    }\r\n    else if (structure_1.Unit.isCoarse(unit)) {\r\n        asym_id = structure_1.Queries.props.coarse.asym_id;\r\n    }\r\n    var l = structure_1.Element.Location();\r\n    l.unit = unit;\r\n    return color_data_1.createAttributeOrElementColor(vertexMap, {\r\n        colorFn: function (elementIdx) {\r\n            l.element = elements[elementIdx];\r\n            return scale.color(map.get(asym_id(l)) || 0);\r\n        },\r\n        vertexMap: vertexMap\r\n    });\r\n}\r\nexports.chainIdColorData = chainIdColorData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/color/chain-id.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/color/element-index.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/color/element-index.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\nvar color_data_1 = __webpack_require__(/*! ../../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\nfunction elementIndexColorData(props) {\r\n    var _a = props.group, units = _a.units, elements = _a.elements, vertexMap = props.vertexMap;\r\n    var instanceCount = units.length;\r\n    var elementCount = elements.length;\r\n    var domain = [0, instanceCount * elementCount - 1];\r\n    var scale = color_1.ColorScale.create({ domain: domain });\r\n    return color_data_1.createElementInstanceColor({\r\n        colorFn: function (instanceIdx, elementIdx) { return scale.color(instanceIdx * elementCount + elementIdx); },\r\n        instanceCount: instanceCount,\r\n        vertexMap: vertexMap\r\n    });\r\n}\r\nexports.elementIndexColorData = elementIndexColorData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/color/element-index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/color/element-symbol.js":
+/*!****************************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/color/element-symbol.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar color_data_1 = __webpack_require__(/*! ../../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\n// from Jmol http://jmol.sourceforge.net/jscolors/ (or 0xFFFFFF)\r\nexports.ElementSymbolColors = {\r\n    'H': 0xFFFFFF, 'HE': 0xD9FFFF, 'LI': 0xCC80FF, 'BE': 0xC2FF00, 'B': 0xFFB5B5, 'C': 0x909090, 'N': 0x3050F8, 'O': 0xFF0D0D, 'F': 0x90E050, 'NE': 0xB3E3F5, 'NA': 0xAB5CF2, 'MG': 0x8AFF00, 'AL': 0xBFA6A6, 'SI': 0xF0C8A0, 'P': 0xFF8000, 'S': 0xFFFF30, 'CL': 0x1FF01F, 'AR': 0x80D1E3, 'K': 0x8F40D4, 'CA': 0x3DFF00, 'SC': 0xE6E6E6, 'TI': 0xBFC2C7, 'V': 0xA6A6AB, 'CR': 0x8A99C7, 'MN': 0x9C7AC7, 'FE': 0xE06633, 'CO': 0xF090A0, 'NI': 0x50D050, 'CU': 0xC88033, 'ZN': 0x7D80B0, 'GA': 0xC28F8F, 'GE': 0x668F8F, 'AS': 0xBD80E3, 'SE': 0xFFA100, 'BR': 0xA62929, 'KR': 0x5CB8D1, 'RB': 0x702EB0, 'SR': 0x00FF00, 'Y': 0x94FFFF, 'ZR': 0x94E0E0, 'NB': 0x73C2C9, 'MO': 0x54B5B5, 'TC': 0x3B9E9E, 'RU': 0x248F8F, 'RH': 0x0A7D8C, 'PD': 0x006985, 'AG': 0xC0C0C0, 'CD': 0xFFD98F, 'IN': 0xA67573, 'SN': 0x668080, 'SB': 0x9E63B5, 'TE': 0xD47A00, 'I': 0x940094, 'XE': 0x940094, 'CS': 0x57178F, 'BA': 0x00C900, 'LA': 0x70D4FF, 'CE': 0xFFFFC7, 'PR': 0xD9FFC7, 'ND': 0xC7FFC7, 'PM': 0xA3FFC7, 'SM': 0x8FFFC7, 'EU': 0x61FFC7, 'GD': 0x45FFC7, 'TB': 0x30FFC7, 'DY': 0x1FFFC7, 'HO': 0x00FF9C, 'ER': 0x00E675, 'TM': 0x00D452, 'YB': 0x00BF38, 'LU': 0x00AB24, 'HF': 0x4DC2FF, 'TA': 0x4DA6FF, 'W': 0x2194D6, 'RE': 0x267DAB, 'OS': 0x266696, 'IR': 0x175487, 'PT': 0xD0D0E0, 'AU': 0xFFD123, 'HG': 0xB8B8D0, 'TL': 0xA6544D, 'PB': 0x575961, 'BI': 0x9E4FB5, 'PO': 0xAB5C00, 'AT': 0x754F45, 'RN': 0x428296, 'FR': 0x420066, 'RA': 0x007D00, 'AC': 0x70ABFA, 'TH': 0x00BAFF, 'PA': 0x00A1FF, 'U': 0x008FFF, 'NP': 0x0080FF, 'PU': 0x006BFF, 'AM': 0x545CF2, 'CM': 0x785CE3, 'BK': 0x8A4FE3, 'CF': 0xA136D4, 'ES': 0xB31FD4, 'FM': 0xB31FBA, 'MD': 0xB30DA6, 'NO': 0xBD0D87, 'LR': 0xC70066, 'RF': 0xCC0059, 'DB': 0xD1004F, 'SG': 0xD90045, 'BH': 0xE00038, 'HS': 0xE6002E, 'MT': 0xEB0026, 'DS': 0xFFFFFF, 'RG': 0xFFFFFF, 'CN': 0xFFFFFF, 'UUT': 0xFFFFFF, 'FL': 0xFFFFFF, 'UUP': 0xFFFFFF, 'LV': 0xFFFFFF, 'UUH': 0xFFFFFF, 'D': 0xFFFFC0, 'T': 0xFFFFA0\r\n};\r\nvar DefaultElementSymbolColor = 0xFFFFFF;\r\nfunction elementSymbolColor(element) {\r\n    var c = exports.ElementSymbolColors[element];\r\n    return c === void 0 ? DefaultElementSymbolColor : c;\r\n}\r\nexports.elementSymbolColor = elementSymbolColor;\r\nfunction elementSymbolColorData(props) {\r\n    var _a = props.group, units = _a.units, elements = _a.elements, vertexMap = props.vertexMap;\r\n    var type_symbol = units[0].model.atomicHierarchy.atoms.type_symbol;\r\n    return color_data_1.createAttributeOrElementColor(vertexMap, {\r\n        colorFn: function (elementIdx) {\r\n            var e = elements[elementIdx];\r\n            return elementSymbolColor(type_symbol.value(e));\r\n        },\r\n        vertexMap: vertexMap\r\n    });\r\n}\r\nexports.elementSymbolColorData = elementSymbolColorData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/color/element-symbol.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/color/index.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/color/index.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar element_index_1 = __webpack_require__(/*! ./element-index */ \"./build/node_modules/mol-geo/theme/structure/color/element-index.js\");\r\nexports.elementIndexColorData = element_index_1.elementIndexColorData;\r\nvar chain_id_1 = __webpack_require__(/*! ./chain-id */ \"./build/node_modules/mol-geo/theme/structure/color/chain-id.js\");\r\nexports.chainIdColorData = chain_id_1.chainIdColorData;\r\nvar element_symbol_1 = __webpack_require__(/*! ./element-symbol */ \"./build/node_modules/mol-geo/theme/structure/color/element-symbol.js\");\r\nexports.elementSymbolColorData = element_symbol_1.elementSymbolColorData;\r\nvar instance_index_1 = __webpack_require__(/*! ./instance-index */ \"./build/node_modules/mol-geo/theme/structure/color/instance-index.js\");\r\nexports.instanceIndexColorData = instance_index_1.instanceIndexColorData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/color/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/color/instance-index.js":
+/*!****************************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/color/instance-index.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\nvar color_data_1 = __webpack_require__(/*! ../../../util/color-data */ \"./build/node_modules/mol-geo/util/color-data.js\");\r\nfunction instanceIndexColorData(props) {\r\n    var units = props.group.units;\r\n    var instanceCount = units.length;\r\n    var domain = [0, instanceCount - 1];\r\n    var scale = color_1.ColorScale.create({ domain: domain });\r\n    return color_data_1.createInstanceColor({\r\n        colorFn: scale.color,\r\n        instanceCount: instanceCount\r\n    });\r\n}\r\nexports.instanceIndexColorData = instanceIndexColorData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/color/instance-index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/theme/structure/size/element.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/theme/structure/size/element.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! mol-model/structure */ \"./build/node_modules/mol-model/structure.js\");\r\nvar size_data_1 = __webpack_require__(/*! ../../../util/size-data */ \"./build/node_modules/mol-geo/util/size-data.js\");\r\n/** Create attribute data with the size of an element, i.e. vdw for atoms and radius for coarse spheres */\r\nfunction elementSizeData(props) {\r\n    var group = props.group, vertexMap = props.vertexMap;\r\n    var unit = group.units[0];\r\n    var elements = group.elements;\r\n    var radius;\r\n    if (structure_1.Unit.isAtomic(unit)) {\r\n        radius = structure_1.Queries.props.atom.vdw_radius;\r\n    }\r\n    else if (structure_1.Unit.isSpheres(unit)) {\r\n        radius = structure_1.Queries.props.coarse.sphere_radius;\r\n    }\r\n    var l = structure_1.Element.Location();\r\n    l.unit = unit;\r\n    return size_data_1.createAttributeSize({\r\n        sizeFn: function (elementIdx) {\r\n            l.element = elements[elementIdx];\r\n            return radius(l);\r\n        },\r\n        vertexMap: vertexMap\r\n    });\r\n}\r\nexports.elementSizeData = elementSizeData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/theme/structure/size/element.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/util.js":
+/*!********************************************!*\
+  !*** ./build/node_modules/mol-geo/util.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nfunction normalizeVec3Array(a) {\r\n    var n = a.length;\r\n    for (var i = 0; i < n; i += 3) {\r\n        var x = a[i];\r\n        var y = a[i + 1];\r\n        var z = a[i + 2];\r\n        var s = 1 / Math.sqrt(x * x + y * y + z * z);\r\n        a[i] = x * s;\r\n        a[i + 1] = y * s;\r\n        a[i + 2] = z * s;\r\n    }\r\n}\r\nexports.normalizeVec3Array = normalizeVec3Array;\r\nfunction getNormalMatrix(out, t) {\r\n    linear_algebra_1.Mat3.fromMat4(out, t);\r\n    linear_algebra_1.Mat3.invert(out, out);\r\n    linear_algebra_1.Mat3.transpose(out, out);\r\n    return out;\r\n}\r\nexports.getNormalMatrix = getNormalMatrix;\r\nvar tmpV3 = linear_algebra_1.Vec3.zero();\r\nfunction transformPositionArray(t, array, offset, count) {\r\n    for (var i = 0, il = count * 3; i < il; i += 3) {\r\n        linear_algebra_1.Vec3.fromArray(tmpV3, array, offset + i);\r\n        linear_algebra_1.Vec3.transformMat4(tmpV3, tmpV3, t);\r\n        linear_algebra_1.Vec3.toArray(tmpV3, array, offset + i);\r\n    }\r\n}\r\nexports.transformPositionArray = transformPositionArray;\r\nfunction transformDirectionArray(n, array, offset, count) {\r\n    for (var i = 0, il = count * 3; i < il; i += 3) {\r\n        linear_algebra_1.Vec3.fromArray(tmpV3, array, offset + i);\r\n        linear_algebra_1.Vec3.transformMat3(tmpV3, tmpV3, n);\r\n        linear_algebra_1.Vec3.toArray(tmpV3, array, offset + i);\r\n    }\r\n}\r\nexports.transformDirectionArray = transformDirectionArray;\r\nfunction setArrayZero(array) {\r\n    var n = array.length;\r\n    for (var i = 0; i < n; ++i)\r\n        array[i] = 0;\r\n}\r\nexports.setArrayZero = setArrayZero;\r\n/** iterate over the entire buffer and apply the radius to each vertex */\r\nfunction appplyRadius(vertices, radius) {\r\n    var v = linear_algebra_1.Vec3.zero();\r\n    var n = vertices.length;\r\n    for (var i = 0; i < n; i += 3) {\r\n        linear_algebra_1.Vec3.fromArray(v, vertices, i);\r\n        linear_algebra_1.Vec3.normalize(v, v);\r\n        linear_algebra_1.Vec3.scale(v, v, radius);\r\n        linear_algebra_1.Vec3.toArray(v, vertices, i);\r\n    }\r\n}\r\nexports.appplyRadius = appplyRadius;\r\n/**\r\n * indexed vertex normals weighted by triangle areas http://www.iquilezles.org/www/articles/normals/normals.htm\r\n * normal array must contain only zeros\r\n */\r\nfunction computeIndexedVertexNormals(vertices, indices, normals) {\r\n    var a = linear_algebra_1.Vec3.zero();\r\n    var b = linear_algebra_1.Vec3.zero();\r\n    var c = linear_algebra_1.Vec3.zero();\r\n    var cb = linear_algebra_1.Vec3.zero();\r\n    var ab = linear_algebra_1.Vec3.zero();\r\n    for (var i = 0, il = indices.length; i < il; i += 3) {\r\n        var ai = indices[i] * 3;\r\n        var bi = indices[i + 1] * 3;\r\n        var ci = indices[i + 2] * 3;\r\n        linear_algebra_1.Vec3.fromArray(a, vertices, ai);\r\n        linear_algebra_1.Vec3.fromArray(b, vertices, bi);\r\n        linear_algebra_1.Vec3.fromArray(c, vertices, ci);\r\n        linear_algebra_1.Vec3.sub(cb, c, b);\r\n        linear_algebra_1.Vec3.sub(ab, a, b);\r\n        linear_algebra_1.Vec3.cross(cb, cb, ab);\r\n        normals[ai] += cb[0];\r\n        normals[ai + 1] += cb[1];\r\n        normals[ai + 2] += cb[2];\r\n        normals[bi] += cb[0];\r\n        normals[bi + 1] += cb[1];\r\n        normals[bi + 2] += cb[2];\r\n        normals[ci] += cb[0];\r\n        normals[ci + 1] += cb[1];\r\n        normals[ci + 2] += cb[2];\r\n    }\r\n    normalizeVec3Array(normals);\r\n    return normals;\r\n}\r\nexports.computeIndexedVertexNormals = computeIndexedVertexNormals;\r\n/** vertex normals for unindexed triangle soup, normal array must contain only zeros */\r\nfunction computeVertexNormals(vertices, normals) {\r\n    setArrayZero(normals);\r\n    var a = linear_algebra_1.Vec3.zero();\r\n    var b = linear_algebra_1.Vec3.zero();\r\n    var c = linear_algebra_1.Vec3.zero();\r\n    var cb = linear_algebra_1.Vec3.zero();\r\n    var ab = linear_algebra_1.Vec3.zero();\r\n    for (var i = 0, il = vertices.length; i < il; i += 9) {\r\n        linear_algebra_1.Vec3.fromArray(a, vertices, i);\r\n        linear_algebra_1.Vec3.fromArray(b, vertices, i + 3);\r\n        linear_algebra_1.Vec3.fromArray(c, vertices, i + 6);\r\n        linear_algebra_1.Vec3.sub(cb, c, b);\r\n        linear_algebra_1.Vec3.sub(ab, a, b);\r\n        linear_algebra_1.Vec3.cross(cb, cb, ab);\r\n        normals[i] = cb[0];\r\n        normals[i + 1] = cb[1];\r\n        normals[i + 2] = cb[2];\r\n        normals[i + 3] = cb[0];\r\n        normals[i + 4] = cb[1];\r\n        normals[i + 5] = cb[2];\r\n        normals[i + 6] = cb[0];\r\n        normals[i + 7] = cb[1];\r\n        normals[i + 8] = cb[2];\r\n    }\r\n    normalizeVec3Array(normals);\r\n    return normals;\r\n}\r\nexports.computeVertexNormals = computeVertexNormals;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/util/color-data.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-geo/util/color-data.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nvar util_1 = __webpack_require__(/*! mol-gl/renderable/util */ \"./build/node_modules/mol-gl/renderable/util.js\");\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\n/** Creates color uniform */\r\nfunction createUniformColor(props) {\r\n    return { type: 'uniform', data: color_1.Color.toRgbNormalized(props.value) };\r\n}\r\nexports.createUniformColor = createUniformColor;\r\n/** Creates color attribute with color for each element (i.e. shared across instances/units) */\r\nfunction createAttributeColor(props) {\r\n    var colorFn = props.colorFn, vertexMap = props.vertexMap;\r\n    var idCount = vertexMap.idCount, offsetCount = vertexMap.offsetCount, offsets = vertexMap.offsets;\r\n    var colors = new Float32Array(idCount * 3);\r\n    for (var i = 0, il = offsetCount - 1; i < il; ++i) {\r\n        var start = offsets[i];\r\n        var end = offsets[i + 1];\r\n        var hexColor = colorFn(i);\r\n        for (var i_1 = start, il_1 = end; i_1 < il_1; ++i_1) {\r\n            color_1.Color.toArrayNormalized(hexColor, colors, i_1 * 3);\r\n        }\r\n    }\r\n    return { type: 'attribute', data: mol_util_1.ValueCell.create(colors) };\r\n}\r\nexports.createAttributeColor = createAttributeColor;\r\n/** Creates color texture with color for each instance/unit */\r\nfunction createInstanceColor(props) {\r\n    var colorFn = props.colorFn, instanceCount = props.instanceCount;\r\n    var colors = util_1.createColorTexture(instanceCount);\r\n    for (var i = 0; i < instanceCount; i++) {\r\n        color_1.Color.toArray(colorFn(i), colors.array, i * 3);\r\n    }\r\n    return { type: 'instance', data: mol_util_1.ValueCell.create(colors) };\r\n}\r\nexports.createInstanceColor = createInstanceColor;\r\n/** Creates color texture with color for each element (i.e. shared across instances/units) */\r\nfunction createElementColor(props) {\r\n    var colorFn = props.colorFn, vertexMap = props.vertexMap;\r\n    var elementCount = vertexMap.offsetCount - 1;\r\n    var colors = util_1.createColorTexture(elementCount);\r\n    for (var i = 0, il = elementCount; i < il; ++i) {\r\n        color_1.Color.toArray(colorFn(i), colors.array, i * 3);\r\n    }\r\n    return { type: 'element', data: mol_util_1.ValueCell.create(colors) };\r\n}\r\nexports.createElementColor = createElementColor;\r\n/** Creates color texture with color for each element instance (i.e. for each unit) */\r\nfunction createElementInstanceColor(props) {\r\n    var colorFn = props.colorFn, instanceCount = props.instanceCount, vertexMap = props.vertexMap;\r\n    var elementCount = vertexMap.offsetCount - 1;\r\n    var count = instanceCount * elementCount;\r\n    var colors = util_1.createColorTexture(count);\r\n    var colorOffset = 0;\r\n    for (var i = 0; i < instanceCount; i++) {\r\n        for (var j = 0, jl = elementCount; j < jl; ++j) {\r\n            color_1.Color.toArray(colorFn(i, j), colors.array, colorOffset);\r\n            colorOffset += 3;\r\n        }\r\n    }\r\n    return { type: 'element-instance', data: mol_util_1.ValueCell.create(colors) };\r\n}\r\nexports.createElementInstanceColor = createElementInstanceColor;\r\n/** Create color attribute or texture, depending on the vertexMap */\r\nfunction createAttributeOrElementColor(vertexMap, props) {\r\n    return vertexMap.idCount < 4 * vertexMap.offsetCount ? createAttributeColor(props) : createElementColor(props);\r\n}\r\nexports.createAttributeOrElementColor = createAttributeOrElementColor;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/util/color-data.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/util/marching-cubes/algorithm.js":
+/*!*********************************************************************!*\
+  !*** ./build/node_modules/mol-geo/util/marching-cubes/algorithm.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar tables_1 = __webpack_require__(/*! ./tables */ \"./build/node_modules/mol-geo/util/marching-cubes/tables.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nfunction computeMarchingCubes(parameters) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Marching Cubes', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var comp;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    comp = new MarchingCubesComputation(parameters, ctx);\r\n                    return [4 /*yield*/, comp.run()];\r\n                case 1: return [2 /*return*/, _a.sent()];\r\n            }\r\n        });\r\n    }); });\r\n}\r\nexports.computeMarchingCubes = computeMarchingCubes;\r\nvar MarchingCubesComputation = /** @class */ (function () {\r\n    function MarchingCubesComputation(parameters, ctx) {\r\n        this.ctx = ctx;\r\n        this.minX = 0;\r\n        this.minY = 0;\r\n        this.minZ = 0;\r\n        this.maxX = 0;\r\n        this.maxY = 0;\r\n        this.maxZ = 0;\r\n        var params = __assign({}, parameters);\r\n        this.parameters = params;\r\n        if (!params.bottomLeft)\r\n            params.bottomLeft = [0, 0, 0];\r\n        if (!params.topRight)\r\n            params.topRight = params.scalarField.space.dimensions;\r\n        this.state = new MarchingCubesState(params),\r\n            this.minX = params.bottomLeft[0];\r\n        this.minY = params.bottomLeft[1];\r\n        this.minZ = params.bottomLeft[2];\r\n        this.maxX = params.topRight[0] - 1;\r\n        this.maxY = params.topRight[1] - 1;\r\n        this.maxZ = params.topRight[2] - 1;\r\n        this.size = (this.maxX - this.minX) * (this.maxY - this.minY) * (this.maxZ - this.minZ);\r\n        this.sliceSize = (this.maxX - this.minX) * (this.maxY - this.minY);\r\n    }\r\n    MarchingCubesComputation.prototype.doSlices = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var done, k;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        done = 0;\r\n                        k = this.minZ;\r\n                        _a.label = 1;\r\n                    case 1:\r\n                        if (!(k < this.maxZ)) return [3 /*break*/, 4];\r\n                        this.slice(k);\r\n                        done += this.sliceSize;\r\n                        if (!this.ctx.shouldUpdate) return [3 /*break*/, 3];\r\n                        return [4 /*yield*/, this.ctx.update({ message: 'Computing surface...', current: done, max: this.size })];\r\n                    case 2:\r\n                        _a.sent();\r\n                        _a.label = 3;\r\n                    case 3:\r\n                        k++;\r\n                        return [3 /*break*/, 1];\r\n                    case 4: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    MarchingCubesComputation.prototype.slice = function (k) {\r\n        for (var j = this.minY; j < this.maxY; j++) {\r\n            for (var i = this.minX; i < this.maxX; i++) {\r\n                this.state.processCell(i, j, k);\r\n            }\r\n        }\r\n        this.state.clearEdgeVertexIndexSlice(k);\r\n    };\r\n    MarchingCubesComputation.prototype.finish = function () {\r\n        var vb = util_1.ChunkedArray.compact(this.state.vertexBuffer, true);\r\n        var ib = util_1.ChunkedArray.compact(this.state.triangleBuffer, true);\r\n        this.state.vertexBuffer = void 0;\r\n        this.state.verticesOnEdges = void 0;\r\n        var os = this.parameters.oldSurface;\r\n        var ret = {\r\n            vertexCount: this.state.vertexCount,\r\n            triangleCount: this.state.triangleCount,\r\n            vertexBuffer: os ? mol_util_1.ValueCell.update(os.vertexBuffer, vb) : mol_util_1.ValueCell.create(vb),\r\n            indexBuffer: os ? mol_util_1.ValueCell.update(os.indexBuffer, ib) : mol_util_1.ValueCell.create(ib),\r\n            normalBuffer: os ? os.normalBuffer : mol_util_1.ValueCell.create(void 0),\r\n            idBuffer: this.state.assignIds\r\n                ? os && os.idBuffer\r\n                    ? mol_util_1.ValueCell.update(os.idBuffer, util_1.ChunkedArray.compact(this.state.idBuffer))\r\n                    : mol_util_1.ValueCell.create(util_1.ChunkedArray.compact(this.state.idBuffer))\r\n                : mol_util_1.ValueCell.create(void 0),\r\n            normalsComputed: false\r\n        };\r\n        return ret;\r\n    };\r\n    MarchingCubesComputation.prototype.run = function () {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4 /*yield*/, this.ctx.update({ message: 'Computing surface...', current: 0, max: this.size })];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [4 /*yield*/, this.doSlices()];\r\n                    case 2:\r\n                        _a.sent();\r\n                        return [4 /*yield*/, this.ctx.update('Finalizing...')];\r\n                    case 3:\r\n                        _a.sent();\r\n                        return [2 /*return*/, this.finish()];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    return MarchingCubesComputation;\r\n}());\r\nvar MarchingCubesState = /** @class */ (function () {\r\n    function MarchingCubesState(params) {\r\n        this.vertList = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n        this.i = 0;\r\n        this.j = 0;\r\n        this.k = 0;\r\n        this.vertexCount = 0;\r\n        this.triangleCount = 0;\r\n        var dims = params.scalarField.space.dimensions;\r\n        this.nX = dims[0];\r\n        this.nY = dims[1];\r\n        this.nZ = dims[2];\r\n        this.isoLevel = params.isoLevel;\r\n        this.scalarFieldGet = params.scalarField.space.get;\r\n        this.scalarField = params.scalarField.data;\r\n        if (params.idField) {\r\n            this.idField = params.idField.data;\r\n            this.idFieldGet = params.idField.space.get;\r\n        }\r\n        var dX = params.topRight[0] - params.bottomLeft[0], dY = params.topRight[1] - params.bottomLeft[1], dZ = params.topRight[2] - params.bottomLeft[2], vertexBufferSize = Math.min(262144, Math.max(dX * dY * dZ / 16, 1024) | 0), triangleBufferSize = Math.min(1 << 16, vertexBufferSize * 4);\r\n        this.vertexBuffer = util_1.ChunkedArray.create(Float32Array, 3, vertexBufferSize, params.oldSurface && params.oldSurface.vertexBuffer.ref.value);\r\n        this.triangleBuffer = util_1.ChunkedArray.create(Uint32Array, 3, triangleBufferSize, params.oldSurface && params.oldSurface.indexBuffer.ref.value);\r\n        this.assignIds = !!params.idField;\r\n        if (this.assignIds)\r\n            this.idBuffer = util_1.ChunkedArray.create(Int32Array, 1, vertexBufferSize);\r\n        // two layers of vertex indices. Each vertex has 3 edges associated.\r\n        this.verticesOnEdges = new Int32Array(3 * this.nX * this.nY * 2);\r\n    }\r\n    MarchingCubesState.prototype.get3dOffsetFromEdgeInfo = function (index) {\r\n        return (this.nX * (((this.k + index.k) % 2) * this.nY + this.j + index.j) + this.i + index.i);\r\n    };\r\n    /**\r\n     * This clears the \"vertex index buffer\" for the slice that will not be accessed anymore.\r\n     */\r\n    MarchingCubesState.prototype.clearEdgeVertexIndexSlice = function (k) {\r\n        // clear either the top or bottom half of the buffer...\r\n        var start = k % 2 === 0 ? 0 : 3 * this.nX * this.nY;\r\n        var end = k % 2 === 0 ? 3 * this.nX * this.nY : this.verticesOnEdges.length;\r\n        for (var i = start; i < end; i++)\r\n            this.verticesOnEdges[i] = 0;\r\n    };\r\n    MarchingCubesState.prototype.interpolate = function (edgeNum) {\r\n        var info = tables_1.EdgeIdInfo[edgeNum], edgeId = 3 * this.get3dOffsetFromEdgeInfo(info) + info.e;\r\n        var ret = this.verticesOnEdges[edgeId];\r\n        if (ret > 0)\r\n            return (ret - 1) | 0;\r\n        var edge = tables_1.CubeEdges[edgeNum];\r\n        var a = edge.a, b = edge.b;\r\n        var li = a.i + this.i, lj = a.j + this.j, lk = a.k + this.k;\r\n        var hi = b.i + this.i, hj = b.j + this.j, hk = b.k + this.k;\r\n        var v0 = this.scalarFieldGet(this.scalarField, li, lj, lk);\r\n        var v1 = this.scalarFieldGet(this.scalarField, hi, hj, hk);\r\n        var t = (this.isoLevel - v0) / (v0 - v1);\r\n        var id = util_1.ChunkedArray.add3(this.vertexBuffer, li + t * (li - hi), lj + t * (lj - hj), lk + t * (lk - hk)) | 0;\r\n        this.verticesOnEdges[edgeId] = id + 1;\r\n        if (this.assignIds) {\r\n            var u = this.idFieldGet(this.idField, li, lj, lk);\r\n            var v = this.idFieldGet(this.idField, hi, hj, hk);\r\n            var a_1 = t < 0.5 ? u : v;\r\n            if (a_1 < 0)\r\n                a_1 = t < 0.5 ? v : u;\r\n            util_1.ChunkedArray.add(this.idBuffer, a_1);\r\n        }\r\n        this.vertexCount++;\r\n        return id;\r\n    };\r\n    MarchingCubesState.prototype.get = function (i, j, k) {\r\n        return this.scalarFieldGet(this.scalarField, i, j, k);\r\n    };\r\n    MarchingCubesState.prototype.processCell = function (i, j, k) {\r\n        var tableIndex = 0;\r\n        if (this.get(i, j, k) < this.isoLevel)\r\n            tableIndex |= 1;\r\n        if (this.get(i + 1, j, k) < this.isoLevel)\r\n            tableIndex |= 2;\r\n        if (this.get(i + 1, j + 1, k) < this.isoLevel)\r\n            tableIndex |= 4;\r\n        if (this.get(i, j + 1, k) < this.isoLevel)\r\n            tableIndex |= 8;\r\n        if (this.get(i, j, k + 1) < this.isoLevel)\r\n            tableIndex |= 16;\r\n        if (this.get(i + 1, j, k + 1) < this.isoLevel)\r\n            tableIndex |= 32;\r\n        if (this.get(i + 1, j + 1, k + 1) < this.isoLevel)\r\n            tableIndex |= 64;\r\n        if (this.get(i, j + 1, k + 1) < this.isoLevel)\r\n            tableIndex |= 128;\r\n        if (tableIndex === 0 || tableIndex === 255)\r\n            return;\r\n        this.i = i;\r\n        this.j = j;\r\n        this.k = k;\r\n        var edgeInfo = tables_1.EdgeTable[tableIndex];\r\n        if ((edgeInfo & 1) > 0)\r\n            this.vertList[0] = this.interpolate(0); // 0 1\r\n        if ((edgeInfo & 2) > 0)\r\n            this.vertList[1] = this.interpolate(1); // 1 2\r\n        if ((edgeInfo & 4) > 0)\r\n            this.vertList[2] = this.interpolate(2); // 2 3\r\n        if ((edgeInfo & 8) > 0)\r\n            this.vertList[3] = this.interpolate(3); // 0 3\r\n        if ((edgeInfo & 16) > 0)\r\n            this.vertList[4] = this.interpolate(4); // 4 5\r\n        if ((edgeInfo & 32) > 0)\r\n            this.vertList[5] = this.interpolate(5); // 5 6\r\n        if ((edgeInfo & 64) > 0)\r\n            this.vertList[6] = this.interpolate(6); // 6 7\r\n        if ((edgeInfo & 128) > 0)\r\n            this.vertList[7] = this.interpolate(7); // 4 7\r\n        if ((edgeInfo & 256) > 0)\r\n            this.vertList[8] = this.interpolate(8); // 0 4\r\n        if ((edgeInfo & 512) > 0)\r\n            this.vertList[9] = this.interpolate(9); // 1 5\r\n        if ((edgeInfo & 1024) > 0)\r\n            this.vertList[10] = this.interpolate(10); // 2 6\r\n        if ((edgeInfo & 2048) > 0)\r\n            this.vertList[11] = this.interpolate(11); // 3 7\r\n        var triInfo = tables_1.TriTable[tableIndex];\r\n        for (var t = 0; t < triInfo.length; t += 3) {\r\n            this.triangleCount++;\r\n            util_1.ChunkedArray.add3(this.triangleBuffer, this.vertList[triInfo[t]], this.vertList[triInfo[t + 1]], this.vertList[triInfo[t + 2]]);\r\n        }\r\n    };\r\n    return MarchingCubesState;\r\n}());\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/util/marching-cubes/algorithm.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/util/marching-cubes/tables.js":
+/*!******************************************************************!*\
+  !*** ./build/node_modules/mol-geo/util/marching-cubes/tables.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction Index(i, j, k) { return { i: i, j: j, k: k }; }\r\nexports.Index = Index;\r\nfunction IndexPair(a, b) { return { a: a, b: b }; }\r\nexports.IndexPair = IndexPair;\r\nexports.EdgesXY = [\r\n    [],\r\n    [0, 3],\r\n    [0, 1],\r\n    [1, 3],\r\n    [1, 2],\r\n    [0, 1, 1, 2, 2, 3, 0, 3],\r\n    [0, 2],\r\n    [2, 3],\r\n    [2, 3],\r\n    [0, 2],\r\n    [0, 1, 1, 2, 2, 3, 0, 3],\r\n    [1, 2],\r\n    [1, 3],\r\n    [0, 1],\r\n    [0, 3],\r\n    []\r\n];\r\nexports.EdgesXZ = [\r\n    [],\r\n    [0, 8],\r\n    [0, 9],\r\n    [9, 8],\r\n    [9, 4],\r\n    [0, 9, 9, 4, 4, 8, 0, 8],\r\n    [0, 4],\r\n    [4, 8],\r\n    [4, 8],\r\n    [0, 4],\r\n    [0, 9, 9, 4, 4, 8, 0, 8],\r\n    [9, 4],\r\n    [9, 8],\r\n    [0, 9],\r\n    [0, 8],\r\n    []\r\n];\r\nexports.EdgesYZ = [\r\n    [],\r\n    [3, 8],\r\n    [3, 11],\r\n    [11, 8],\r\n    [11, 7],\r\n    [3, 11, 11, 7, 7, 8, 3, 8],\r\n    [3, 7],\r\n    [7, 8],\r\n    [7, 8],\r\n    [3, 7],\r\n    [3, 11, 11, 7, 7, 8, 3, 8],\r\n    [11, 7],\r\n    [11, 8],\r\n    [3, 11],\r\n    [3, 8],\r\n    []\r\n];\r\nexports.CubeVertices = [\r\n    Index(0, 0, 0),\r\n    Index(1, 0, 0),\r\n    Index(1, 1, 0),\r\n    Index(0, 1, 0),\r\n    Index(0, 0, 1),\r\n    Index(1, 0, 1),\r\n    Index(1, 1, 1),\r\n    Index(0, 1, 1),\r\n];\r\nexports.CubeEdges = [\r\n    IndexPair(exports.CubeVertices[0], exports.CubeVertices[1]),\r\n    IndexPair(exports.CubeVertices[1], exports.CubeVertices[2]),\r\n    IndexPair(exports.CubeVertices[2], exports.CubeVertices[3]),\r\n    IndexPair(exports.CubeVertices[3], exports.CubeVertices[0]),\r\n    IndexPair(exports.CubeVertices[4], exports.CubeVertices[5]),\r\n    IndexPair(exports.CubeVertices[5], exports.CubeVertices[6]),\r\n    IndexPair(exports.CubeVertices[6], exports.CubeVertices[7]),\r\n    IndexPair(exports.CubeVertices[7], exports.CubeVertices[4]),\r\n    IndexPair(exports.CubeVertices[0], exports.CubeVertices[4]),\r\n    IndexPair(exports.CubeVertices[1], exports.CubeVertices[5]),\r\n    IndexPair(exports.CubeVertices[2], exports.CubeVertices[6]),\r\n    IndexPair(exports.CubeVertices[3], exports.CubeVertices[7]),\r\n];\r\nexports.EdgeIdInfo = [\r\n    { i: 0, j: 0, k: 0, e: 0 },\r\n    { i: 1, j: 0, k: 0, e: 1 },\r\n    { i: 0, j: 1, k: 0, e: 0 },\r\n    { i: 0, j: 0, k: 0, e: 1 },\r\n    { i: 0, j: 0, k: 1, e: 0 },\r\n    { i: 1, j: 0, k: 1, e: 1 },\r\n    { i: 0, j: 1, k: 1, e: 0 },\r\n    { i: 0, j: 0, k: 1, e: 1 },\r\n    { i: 0, j: 0, k: 0, e: 2 },\r\n    { i: 1, j: 0, k: 0, e: 2 },\r\n    { i: 1, j: 1, k: 0, e: 2 },\r\n    { i: 0, j: 1, k: 0, e: 2 }\r\n];\r\n// Tables EdgeTable and TriTable taken from http://paulbourke.net/geometry/polygonise/\r\nexports.EdgeTable = [\r\n    0x0, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,\r\n    0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,\r\n    0x190, 0x99, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,\r\n    0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,\r\n    0x230, 0x339, 0x33, 0x13a, 0x636, 0x73f, 0x435, 0x53c,\r\n    0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,\r\n    0x3a0, 0x2a9, 0x1a3, 0xaa, 0x7a6, 0x6af, 0x5a5, 0x4ac,\r\n    0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,\r\n    0x460, 0x569, 0x663, 0x76a, 0x66, 0x16f, 0x265, 0x36c,\r\n    0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,\r\n    0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff, 0x3f5, 0x2fc,\r\n    0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,\r\n    0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55, 0x15c,\r\n    0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,\r\n    0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc,\r\n    0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,\r\n    0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,\r\n    0xcc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,\r\n    0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,\r\n    0x15c, 0x55, 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,\r\n    0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,\r\n    0x2fc, 0x3f5, 0xff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,\r\n    0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,\r\n    0x36c, 0x265, 0x16f, 0x66, 0x76a, 0x663, 0x569, 0x460,\r\n    0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,\r\n    0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa, 0x1a3, 0x2a9, 0x3a0,\r\n    0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,\r\n    0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33, 0x339, 0x230,\r\n    0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,\r\n    0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99, 0x190,\r\n    0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,\r\n    0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0\r\n];\r\nexports.TriTable = [\r\n    [],\r\n    [0, 8, 3],\r\n    [0, 1, 9],\r\n    [1, 8, 3, 9, 8, 1],\r\n    [1, 2, 10],\r\n    [0, 8, 3, 1, 2, 10],\r\n    [9, 2, 10, 0, 2, 9],\r\n    [2, 8, 3, 2, 10, 8, 10, 9, 8],\r\n    [3, 11, 2],\r\n    [0, 11, 2, 8, 11, 0],\r\n    [1, 9, 0, 2, 3, 11],\r\n    [1, 11, 2, 1, 9, 11, 9, 8, 11],\r\n    [3, 10, 1, 11, 10, 3],\r\n    [0, 10, 1, 0, 8, 10, 8, 11, 10],\r\n    [3, 9, 0, 3, 11, 9, 11, 10, 9],\r\n    [9, 8, 10, 10, 8, 11],\r\n    [4, 7, 8],\r\n    [4, 3, 0, 7, 3, 4],\r\n    [0, 1, 9, 8, 4, 7],\r\n    [4, 1, 9, 4, 7, 1, 7, 3, 1],\r\n    [1, 2, 10, 8, 4, 7],\r\n    [3, 4, 7, 3, 0, 4, 1, 2, 10],\r\n    [9, 2, 10, 9, 0, 2, 8, 4, 7],\r\n    [2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4],\r\n    [8, 4, 7, 3, 11, 2],\r\n    [11, 4, 7, 11, 2, 4, 2, 0, 4],\r\n    [9, 0, 1, 8, 4, 7, 2, 3, 11],\r\n    [4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1],\r\n    [3, 10, 1, 3, 11, 10, 7, 8, 4],\r\n    [1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4],\r\n    [4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3],\r\n    [4, 7, 11, 4, 11, 9, 9, 11, 10],\r\n    [9, 5, 4],\r\n    [9, 5, 4, 0, 8, 3],\r\n    [0, 5, 4, 1, 5, 0],\r\n    [8, 5, 4, 8, 3, 5, 3, 1, 5],\r\n    [1, 2, 10, 9, 5, 4],\r\n    [3, 0, 8, 1, 2, 10, 4, 9, 5],\r\n    [5, 2, 10, 5, 4, 2, 4, 0, 2],\r\n    [2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8],\r\n    [9, 5, 4, 2, 3, 11],\r\n    [0, 11, 2, 0, 8, 11, 4, 9, 5],\r\n    [0, 5, 4, 0, 1, 5, 2, 3, 11],\r\n    [2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5],\r\n    [10, 3, 11, 10, 1, 3, 9, 5, 4],\r\n    [4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10],\r\n    [5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3],\r\n    [5, 4, 8, 5, 8, 10, 10, 8, 11],\r\n    [9, 7, 8, 5, 7, 9],\r\n    [9, 3, 0, 9, 5, 3, 5, 7, 3],\r\n    [0, 7, 8, 0, 1, 7, 1, 5, 7],\r\n    [1, 5, 3, 3, 5, 7],\r\n    [9, 7, 8, 9, 5, 7, 10, 1, 2],\r\n    [10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3],\r\n    [8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2],\r\n    [2, 10, 5, 2, 5, 3, 3, 5, 7],\r\n    [7, 9, 5, 7, 8, 9, 3, 11, 2],\r\n    [9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11],\r\n    [2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7],\r\n    [11, 2, 1, 11, 1, 7, 7, 1, 5],\r\n    [9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11],\r\n    [5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0],\r\n    [11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0],\r\n    [11, 10, 5, 7, 11, 5],\r\n    [10, 6, 5],\r\n    [0, 8, 3, 5, 10, 6],\r\n    [9, 0, 1, 5, 10, 6],\r\n    [1, 8, 3, 1, 9, 8, 5, 10, 6],\r\n    [1, 6, 5, 2, 6, 1],\r\n    [1, 6, 5, 1, 2, 6, 3, 0, 8],\r\n    [9, 6, 5, 9, 0, 6, 0, 2, 6],\r\n    [5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8],\r\n    [2, 3, 11, 10, 6, 5],\r\n    [11, 0, 8, 11, 2, 0, 10, 6, 5],\r\n    [0, 1, 9, 2, 3, 11, 5, 10, 6],\r\n    [5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11],\r\n    [6, 3, 11, 6, 5, 3, 5, 1, 3],\r\n    [0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6],\r\n    [3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9],\r\n    [6, 5, 9, 6, 9, 11, 11, 9, 8],\r\n    [5, 10, 6, 4, 7, 8],\r\n    [4, 3, 0, 4, 7, 3, 6, 5, 10],\r\n    [1, 9, 0, 5, 10, 6, 8, 4, 7],\r\n    [10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4],\r\n    [6, 1, 2, 6, 5, 1, 4, 7, 8],\r\n    [1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7],\r\n    [8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6],\r\n    [7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9],\r\n    [3, 11, 2, 7, 8, 4, 10, 6, 5],\r\n    [5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11],\r\n    [0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6],\r\n    [9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6],\r\n    [8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6],\r\n    [5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11],\r\n    [0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7],\r\n    [6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9],\r\n    [10, 4, 9, 6, 4, 10],\r\n    [4, 10, 6, 4, 9, 10, 0, 8, 3],\r\n    [10, 0, 1, 10, 6, 0, 6, 4, 0],\r\n    [8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10],\r\n    [1, 4, 9, 1, 2, 4, 2, 6, 4],\r\n    [3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4],\r\n    [0, 2, 4, 4, 2, 6],\r\n    [8, 3, 2, 8, 2, 4, 4, 2, 6],\r\n    [10, 4, 9, 10, 6, 4, 11, 2, 3],\r\n    [0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6],\r\n    [3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10],\r\n    [6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1],\r\n    [9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3],\r\n    [8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1],\r\n    [3, 11, 6, 3, 6, 0, 0, 6, 4],\r\n    [6, 4, 8, 11, 6, 8],\r\n    [7, 10, 6, 7, 8, 10, 8, 9, 10],\r\n    [0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10],\r\n    [10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0],\r\n    [10, 6, 7, 10, 7, 1, 1, 7, 3],\r\n    [1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7],\r\n    [2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9],\r\n    [7, 8, 0, 7, 0, 6, 6, 0, 2],\r\n    [7, 3, 2, 6, 7, 2],\r\n    [2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7],\r\n    [2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7],\r\n    [1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11],\r\n    [11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1],\r\n    [8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6],\r\n    [0, 9, 1, 11, 6, 7],\r\n    [7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0],\r\n    [7, 11, 6],\r\n    [7, 6, 11],\r\n    [3, 0, 8, 11, 7, 6],\r\n    [0, 1, 9, 11, 7, 6],\r\n    [8, 1, 9, 8, 3, 1, 11, 7, 6],\r\n    [10, 1, 2, 6, 11, 7],\r\n    [1, 2, 10, 3, 0, 8, 6, 11, 7],\r\n    [2, 9, 0, 2, 10, 9, 6, 11, 7],\r\n    [6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8],\r\n    [7, 2, 3, 6, 2, 7],\r\n    [7, 0, 8, 7, 6, 0, 6, 2, 0],\r\n    [2, 7, 6, 2, 3, 7, 0, 1, 9],\r\n    [1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6],\r\n    [10, 7, 6, 10, 1, 7, 1, 3, 7],\r\n    [10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8],\r\n    [0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7],\r\n    [7, 6, 10, 7, 10, 8, 8, 10, 9],\r\n    [6, 8, 4, 11, 8, 6],\r\n    [3, 6, 11, 3, 0, 6, 0, 4, 6],\r\n    [8, 6, 11, 8, 4, 6, 9, 0, 1],\r\n    [9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6],\r\n    [6, 8, 4, 6, 11, 8, 2, 10, 1],\r\n    [1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6],\r\n    [4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9],\r\n    [10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3],\r\n    [8, 2, 3, 8, 4, 2, 4, 6, 2],\r\n    [0, 4, 2, 4, 6, 2],\r\n    [1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8],\r\n    [1, 9, 4, 1, 4, 2, 2, 4, 6],\r\n    [8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1],\r\n    [10, 1, 0, 10, 0, 6, 6, 0, 4],\r\n    [4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3],\r\n    [10, 9, 4, 6, 10, 4],\r\n    [4, 9, 5, 7, 6, 11],\r\n    [0, 8, 3, 4, 9, 5, 11, 7, 6],\r\n    [5, 0, 1, 5, 4, 0, 7, 6, 11],\r\n    [11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5],\r\n    [9, 5, 4, 10, 1, 2, 7, 6, 11],\r\n    [6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5],\r\n    [7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2],\r\n    [3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6],\r\n    [7, 2, 3, 7, 6, 2, 5, 4, 9],\r\n    [9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7],\r\n    [3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0],\r\n    [6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8],\r\n    [9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7],\r\n    [1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4],\r\n    [4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10],\r\n    [7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10],\r\n    [6, 9, 5, 6, 11, 9, 11, 8, 9],\r\n    [3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5],\r\n    [0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11],\r\n    [6, 11, 3, 6, 3, 5, 5, 3, 1],\r\n    [1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6],\r\n    [0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10],\r\n    [11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5],\r\n    [6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3],\r\n    [5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2],\r\n    [9, 5, 6, 9, 6, 0, 0, 6, 2],\r\n    [1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8],\r\n    [1, 5, 6, 2, 1, 6],\r\n    [1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6],\r\n    [10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0],\r\n    [0, 3, 8, 5, 6, 10],\r\n    [10, 5, 6],\r\n    [11, 5, 10, 7, 5, 11],\r\n    [11, 5, 10, 11, 7, 5, 8, 3, 0],\r\n    [5, 11, 7, 5, 10, 11, 1, 9, 0],\r\n    [10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1],\r\n    [11, 1, 2, 11, 7, 1, 7, 5, 1],\r\n    [0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11],\r\n    [9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7],\r\n    [7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2],\r\n    [2, 5, 10, 2, 3, 5, 3, 7, 5],\r\n    [8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5],\r\n    [9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2],\r\n    [9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2],\r\n    [1, 3, 5, 3, 7, 5],\r\n    [0, 8, 7, 0, 7, 1, 1, 7, 5],\r\n    [9, 0, 3, 9, 3, 5, 5, 3, 7],\r\n    [9, 8, 7, 5, 9, 7],\r\n    [5, 8, 4, 5, 10, 8, 10, 11, 8],\r\n    [5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0],\r\n    [0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5],\r\n    [10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4],\r\n    [2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8],\r\n    [0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11],\r\n    [0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5],\r\n    [9, 4, 5, 2, 11, 3],\r\n    [2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4],\r\n    [5, 10, 2, 5, 2, 4, 4, 2, 0],\r\n    [3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9],\r\n    [5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2],\r\n    [8, 4, 5, 8, 5, 3, 3, 5, 1],\r\n    [0, 4, 5, 1, 0, 5],\r\n    [8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5],\r\n    [9, 4, 5],\r\n    [4, 11, 7, 4, 9, 11, 9, 10, 11],\r\n    [0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11],\r\n    [1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11],\r\n    [3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4],\r\n    [4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2],\r\n    [9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3],\r\n    [11, 7, 4, 11, 4, 2, 2, 4, 0],\r\n    [11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4],\r\n    [2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9],\r\n    [9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7],\r\n    [3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10],\r\n    [1, 10, 2, 8, 7, 4],\r\n    [4, 9, 1, 4, 1, 7, 7, 1, 3],\r\n    [4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1],\r\n    [4, 0, 3, 7, 4, 3],\r\n    [4, 8, 7],\r\n    [9, 10, 8, 10, 11, 8],\r\n    [3, 0, 9, 3, 9, 11, 11, 9, 10],\r\n    [0, 1, 10, 0, 10, 8, 8, 10, 11],\r\n    [3, 1, 10, 11, 3, 10],\r\n    [1, 2, 11, 1, 11, 9, 9, 11, 8],\r\n    [3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9],\r\n    [0, 2, 11, 8, 0, 11],\r\n    [3, 2, 11],\r\n    [2, 3, 8, 2, 8, 10, 10, 8, 9],\r\n    [9, 10, 2, 0, 9, 2],\r\n    [2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8],\r\n    [1, 10, 2],\r\n    [1, 3, 8, 9, 1, 8],\r\n    [0, 9, 1],\r\n    [0, 3, 8],\r\n    []\r\n];\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/util/marching-cubes/tables.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-geo/util/size-data.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/mol-geo/util/size-data.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\n/** Creates size uniform */\r\nfunction createUniformSize(props) {\r\n    return { type: 'uniform', value: props.value };\r\n}\r\nexports.createUniformSize = createUniformSize;\r\n/** Creates size attribute with size for each element (i.e. shared across indtances/units) */\r\nfunction createAttributeSize(props) {\r\n    var sizeFn = props.sizeFn, vertexMap = props.vertexMap;\r\n    var idCount = vertexMap.idCount, offsetCount = vertexMap.offsetCount, offsets = vertexMap.offsets;\r\n    var sizes = new Float32Array(idCount);\r\n    for (var i = 0, il = offsetCount - 1; i < il; ++i) {\r\n        var start = offsets[i];\r\n        var end = offsets[i + 1];\r\n        var size = sizeFn(i);\r\n        for (var i_1 = start, il_1 = end; i_1 < il_1; ++i_1) {\r\n            sizes[i_1] = size;\r\n        }\r\n    }\r\n    return { type: 'attribute', value: mol_util_1.ValueCell.create(sizes) };\r\n}\r\nexports.createAttributeSize = createAttributeSize;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-geo/util/size-data.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/renderable.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-gl/renderable.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar point_1 = __webpack_require__(/*! ./renderable/point */ \"./build/node_modules/mol-gl/renderable/point.js\");\r\nexports.PointRenderable = point_1.default;\r\nvar mesh_1 = __webpack_require__(/*! ./renderable/mesh */ \"./build/node_modules/mol-gl/renderable/mesh.js\");\r\nexports.MeshRenderable = mesh_1.default;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/renderable.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/renderable/mesh.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/mol-gl/renderable/mesh.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./build/node_modules/mol-gl/renderable/util.js\");\r\nvar shader_code_1 = __webpack_require__(/*! ../shader-code */ \"./build/node_modules/mol-gl/shader-code.js\");\r\nvar render_item_1 = __webpack_require__(/*! ../webgl/render-item */ \"./build/node_modules/mol-gl/webgl/render-item.js\");\r\nvar Mesh;\r\n(function (Mesh) {\r\n    function create(ctx, props) {\r\n        var defines = util_1.getBaseDefines(props);\r\n        if (props.flatShaded)\r\n            defines.FLAT_SHADED = '';\r\n        if (props.doubleSided)\r\n            defines.DOUBLE_SIDED = '';\r\n        if (props.flipSided)\r\n            defines.FLIP_SIDED = '';\r\n        var defs = __assign({}, util_1.getBaseDefs(props), { shaderCode: shader_code_1.addShaderDefines(defines, shader_code_1.MeshShaderCode), drawMode: 'triangles', elementsKind: 'uint32' });\r\n        var values = __assign({}, util_1.getBaseValues(props), { drawCount: props.indexCount * 3, instanceCount: props.instanceCount, elements: props.index.ref.value });\r\n        var renderItem = render_item_1.createRenderItem(ctx, defs, values);\r\n        // let curProps = props\r\n        return {\r\n            draw: function () {\r\n                renderItem.draw();\r\n            },\r\n            name: 'mesh',\r\n            get program() { return renderItem.program; },\r\n            update: function (newProps) {\r\n                console.log('Updating mesh renderable');\r\n            },\r\n            dispose: function () {\r\n                renderItem.destroy();\r\n            }\r\n        };\r\n    }\r\n    Mesh.create = create;\r\n})(Mesh || (Mesh = {}));\r\nexports.default = Mesh;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/renderable/mesh.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/renderable/point.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-gl/renderable/point.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./build/node_modules/mol-gl/renderable/util.js\");\r\nvar shader_code_1 = __webpack_require__(/*! ../shader-code */ \"./build/node_modules/mol-gl/shader-code.js\");\r\nvar render_item_1 = __webpack_require__(/*! ../webgl/render-item */ \"./build/node_modules/mol-gl/webgl/render-item.js\");\r\nvar Point;\r\n(function (Point) {\r\n    function create(ctx, props) {\r\n        var defines = util_1.getBaseDefines(props);\r\n        if (props.usePointSizeAttenuation)\r\n            defines.POINT_SIZE_ATTENUATION = '';\r\n        var defs = __assign({}, util_1.getBaseDefs(props), { shaderCode: shader_code_1.addShaderDefines(defines, shader_code_1.PointShaderCode), drawMode: 'points' });\r\n        var values = __assign({}, util_1.getBaseValues(props), { drawCount: props.positionCount, instanceCount: props.instanceCount });\r\n        var renderItem = render_item_1.createRenderItem(ctx, defs, values);\r\n        // let curProps = props\r\n        return {\r\n            draw: function () {\r\n                renderItem.draw();\r\n            },\r\n            name: 'point',\r\n            get program() { return renderItem.program; },\r\n            update: function (newProps) {\r\n                console.log('Updating point renderable');\r\n            },\r\n            dispose: function () {\r\n                renderItem.destroy();\r\n            }\r\n        };\r\n    }\r\n    Point.create = create;\r\n})(Point || (Point = {}));\r\nexports.default = Point;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/renderable/point.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/renderable/util.js":
+/*!******************************************************!*\
+  !*** ./build/node_modules/mol-gl/renderable/util.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar value_cell_1 = __webpack_require__(/*! mol-util/value-cell */ \"./build/node_modules/mol-util/value-cell.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nfunction calculateTextureInfo(n, itemSize) {\r\n    var sqN = Math.sqrt(n * itemSize);\r\n    var width = Math.ceil(sqN);\r\n    width = width + (itemSize - (width % itemSize)) % itemSize;\r\n    var height = width > 0 ? Math.ceil(n * itemSize / width) : 0;\r\n    return { width: width, height: height, length: width * height * itemSize };\r\n}\r\nexports.calculateTextureInfo = calculateTextureInfo;\r\nfunction createColorTexture(n) {\r\n    var _a = calculateTextureInfo(n, 3), length = _a.length, width = _a.width, height = _a.height;\r\n    return { array: new Uint8Array(length), width: width, height: height };\r\n}\r\nexports.createColorTexture = createColorTexture;\r\nfunction getColorDefines(color) {\r\n    var defines = {};\r\n    switch (color.type) {\r\n        case 'uniform':\r\n            defines.UNIFORM_COLOR = '';\r\n            break;\r\n        case 'attribute':\r\n            defines.ATTRIBUTE_COLOR = '';\r\n            break;\r\n        case 'element':\r\n            defines.ELEMENT_COLOR = '';\r\n            break;\r\n        case 'instance':\r\n            defines.INSTANCE_COLOR = '';\r\n            break;\r\n        case 'element-instance':\r\n            defines.ELEMENT_INSTANCE_COLOR = '';\r\n            break;\r\n    }\r\n    return defines;\r\n}\r\nexports.getColorDefines = getColorDefines;\r\nfunction getSizeDefines(size) {\r\n    var defines = {};\r\n    switch (size.type) {\r\n        case 'uniform':\r\n            defines.UNIFORM_SIZE = '';\r\n            break;\r\n        case 'attribute':\r\n            defines.ATTRIBUTE_SIZE = '';\r\n            break;\r\n    }\r\n    return defines;\r\n}\r\nexports.getSizeDefines = getSizeDefines;\r\nfunction fillSerial(array) {\r\n    var n = array.length;\r\n    for (var i = 0; i < n; ++i)\r\n        array[i] = i;\r\n    return array;\r\n}\r\nexports.fillSerial = fillSerial;\r\nfunction getBaseUniformDefs(props) {\r\n    var uniformDefs = {\r\n        model: 'm4',\r\n        view: 'm4',\r\n        projection: 'm4',\r\n        pixelRatio: 'f',\r\n        viewportHeight: 'f',\r\n        // light_position: 'v3',\r\n        light_color: 'v3',\r\n        light_ambient: 'v3',\r\n        alpha: 'f',\r\n        objectId: 'i',\r\n        instanceCount: 'i',\r\n        elementCount: 'i'\r\n    };\r\n    var color = props.color;\r\n    if (color.type === 'instance' || color.type === 'element' || color.type === 'element-instance') {\r\n        // uniformDefs.colorTex = 't2'\r\n        uniformDefs.colorTexSize = 'v2';\r\n    }\r\n    else if (color.type === 'uniform') {\r\n        uniformDefs.color = 'v3';\r\n    }\r\n    var size = props.size;\r\n    if (size && size.type === 'uniform') {\r\n        uniformDefs.size = 'f';\r\n    }\r\n    return uniformDefs;\r\n}\r\nexports.getBaseUniformDefs = getBaseUniformDefs;\r\nfunction getBaseUniformValues(props) {\r\n    var objectId = props.objectId, instanceCount = props.instanceCount, elementCount = props.elementCount, alpha = props.alpha;\r\n    var uniformValues = {\r\n        objectId: objectId, instanceCount: instanceCount, elementCount: elementCount, alpha: alpha\r\n    };\r\n    var color = props.color;\r\n    if (color.type === 'instance' || color.type === 'element' || color.type === 'element-instance') {\r\n        var _a = color.data.ref.value, width = _a.width, height = _a.height;\r\n        // uniformValues.colorTex = color.value.ref.value.array\r\n        uniformValues.colorTexSize = linear_algebra_1.Vec2.create(width, height);\r\n    }\r\n    else if (color.type === 'uniform') {\r\n        uniformValues.color = color.data;\r\n    }\r\n    var size = props.size;\r\n    if (size && size.type === 'uniform') {\r\n        uniformValues.size = size.value;\r\n    }\r\n    return uniformValues;\r\n}\r\nexports.getBaseUniformValues = getBaseUniformValues;\r\nfunction getBaseAttributeDefs(props) {\r\n    var attributeDefs = {\r\n        instanceId: { kind: 'float32', itemSize: 1, divisor: 1 },\r\n        position: { kind: 'float32', itemSize: 3, divisor: 0 },\r\n        elementId: { kind: 'float32', itemSize: 1, divisor: 0 },\r\n        transform: { kind: 'float32', itemSize: 16, divisor: 1 },\r\n    };\r\n    if (props.normal && props.normal.ref.value) {\r\n        attributeDefs.normal = { kind: 'float32', itemSize: 3, divisor: 0 };\r\n    }\r\n    var color = props.color;\r\n    if (color.type === 'attribute') {\r\n        attributeDefs.color = { kind: 'float32', itemSize: 3, divisor: 0 };\r\n    }\r\n    var size = props.size;\r\n    if (size && size.type === 'attribute') {\r\n        attributeDefs.size = { kind: 'float32', itemSize: 1, divisor: 0 };\r\n    }\r\n    return attributeDefs;\r\n}\r\nexports.getBaseAttributeDefs = getBaseAttributeDefs;\r\nfunction getBaseAttributeValues(props) {\r\n    var instanceCount = props.instanceCount, position = props.position, id = props.id, normal = props.normal, transform = props.transform;\r\n    var instanceId = value_cell_1.ValueCell.create(fillSerial(new Float32Array(instanceCount)));\r\n    var attributeValues = {\r\n        instanceId: instanceId.ref.value,\r\n        position: position.ref.value,\r\n        elementId: id.ref.value,\r\n        transform: transform.ref.value\r\n    };\r\n    if (normal && normal.ref.value) {\r\n        attributeValues.normal = normal.ref.value;\r\n    }\r\n    var color = props.color;\r\n    if (color.type === 'attribute') {\r\n        attributeValues.color = color.data.ref.value;\r\n    }\r\n    var size = props.size;\r\n    if (size && size.type === 'attribute') {\r\n        attributeValues.size = size.value.ref.value;\r\n    }\r\n    return attributeValues;\r\n}\r\nexports.getBaseAttributeValues = getBaseAttributeValues;\r\nfunction getBaseTextureDefs(props) {\r\n    var textureDefs = {};\r\n    var color = props.color;\r\n    if (color.type === 'instance' || color.type === 'element' || color.type === 'element-instance') {\r\n        textureDefs.colorTex = true;\r\n    }\r\n    return textureDefs;\r\n}\r\nexports.getBaseTextureDefs = getBaseTextureDefs;\r\nfunction getBaseTextureValues(props) {\r\n    var textureValues = {};\r\n    var color = props.color;\r\n    if (color.type === 'instance' || color.type === 'element' || color.type === 'element-instance') {\r\n        textureValues.colorTex = color.data.ref.value;\r\n    }\r\n    return textureValues;\r\n}\r\nexports.getBaseTextureValues = getBaseTextureValues;\r\nfunction getBaseDefines(props) {\r\n    return __assign({}, getColorDefines(props.color), (props.size ? getSizeDefines(props.size) : undefined));\r\n}\r\nexports.getBaseDefines = getBaseDefines;\r\nfunction getBaseDefs(props) {\r\n    return {\r\n        uniformDefs: getBaseUniformDefs(props),\r\n        attributeDefs: getBaseAttributeDefs(props),\r\n        textureDefs: getBaseTextureDefs(props),\r\n    };\r\n}\r\nexports.getBaseDefs = getBaseDefs;\r\nfunction getBaseValues(props) {\r\n    return {\r\n        uniformValues: getBaseUniformValues(props),\r\n        attributeValues: getBaseAttributeValues(props),\r\n        textureValues: getBaseTextureValues(props),\r\n    };\r\n}\r\nexports.getBaseValues = getBaseValues;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/renderable/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/renderer.js":
+/*!***********************************************!*\
+  !*** ./build/node_modules/mol-gl/renderer.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// import { Vec3, Mat4 } from 'mol-math/linear-algebra'\r\nvar util_1 = __webpack_require__(/*! mol-view/camera/util */ \"./build/node_modules/mol-view/camera/util.js\");\r\nvar scene_1 = __webpack_require__(/*! ./scene */ \"./build/node_modules/mol-gl/scene.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar color_1 = __webpack_require__(/*! mol-util/color */ \"./build/node_modules/mol-util/color/index.js\");\r\nfunction getPixelRatio() {\r\n    return (typeof window !== 'undefined') ? window.devicePixelRatio : 1;\r\n}\r\nexports.DefaultRendererProps = {\r\n    clearColor: 0x000000,\r\n    viewport: util_1.Viewport.create(0, 0, 0, 0)\r\n};\r\nvar Renderer;\r\n(function (Renderer) {\r\n    function create(ctx, camera, props) {\r\n        if (props === void 0) { props = {}; }\r\n        var gl = ctx.gl;\r\n        var _a = __assign({}, exports.DefaultRendererProps, props), clearColor = _a.clearColor, _viewport = _a.viewport;\r\n        var scene = scene_1.default.create(ctx);\r\n        var model = linear_algebra_1.Mat4.identity();\r\n        var viewport = util_1.Viewport.clone(_viewport);\r\n        var pixelRatio = getPixelRatio();\r\n        // const light_position = Vec3.create(0, 0, -100)\r\n        var light_color = linear_algebra_1.Vec3.create(1.0, 1.0, 1.0);\r\n        var light_ambient = linear_algebra_1.Vec3.create(0.5, 0.5, 0.5);\r\n        function setClearColor(color) {\r\n            var _a = color_1.Color.toRgbNormalized(color), r = _a[0], g = _a[1], b = _a[2];\r\n            gl.clearColor(r, g, b, 1.0);\r\n        }\r\n        setClearColor(clearColor);\r\n        var currentProgramId = -1;\r\n        var drawObject = function (r, o) {\r\n            if (o.props.visible) {\r\n                if (currentProgramId !== r.program.id) {\r\n                    if (o.props.doubleSided) {\r\n                        gl.disable(gl.CULL_FACE);\r\n                    }\r\n                    else {\r\n                        gl.enable(gl.CULL_FACE);\r\n                    }\r\n                    if (o.props.flipSided) {\r\n                        gl.frontFace(gl.CW);\r\n                        gl.cullFace(gl.FRONT);\r\n                    }\r\n                    else {\r\n                        gl.frontFace(gl.CCW);\r\n                        gl.cullFace(gl.BACK);\r\n                    }\r\n                    r.program.use();\r\n                    r.program.setUniforms({\r\n                        model: model,\r\n                        view: camera.view,\r\n                        projection: camera.projection,\r\n                        pixelRatio: pixelRatio,\r\n                        viewportHeight: viewport.height,\r\n                        // light_position,\r\n                        light_color: light_color,\r\n                        light_ambient: light_ambient,\r\n                    });\r\n                    currentProgramId = r.program.id;\r\n                }\r\n                r.draw();\r\n            }\r\n        };\r\n        var draw = function () {\r\n            currentProgramId = -1;\r\n            gl.depthMask(true);\r\n            gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\r\n            gl.disable(gl.BLEND);\r\n            gl.enable(gl.DEPTH_TEST);\r\n            scene.eachOpaque(drawObject);\r\n            gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\r\n            gl.enable(gl.BLEND);\r\n            gl.depthMask(false);\r\n            scene.eachTransparent(drawObject);\r\n        };\r\n        return {\r\n            add: function (o) {\r\n                scene.add(o);\r\n            },\r\n            remove: function (o) {\r\n                scene.remove(o);\r\n            },\r\n            update: function () {\r\n                scene.forEach(function (r, o) { return r.update(o); });\r\n            },\r\n            clear: function () {\r\n                scene.clear();\r\n            },\r\n            draw: draw,\r\n            setClearColor: setClearColor,\r\n            setViewport: function (newViewport) {\r\n                util_1.Viewport.copy(viewport, newViewport);\r\n                gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);\r\n            },\r\n            get stats() {\r\n                return {\r\n                    renderableCount: scene.count,\r\n                    programCount: ctx.programCache.count,\r\n                    shaderCount: ctx.shaderCache.count,\r\n                    bufferCount: ctx.bufferCount,\r\n                    textureCount: ctx.textureCount,\r\n                    vaoCount: ctx.vaoCount,\r\n                };\r\n            },\r\n            dispose: function () {\r\n                scene.clear();\r\n            }\r\n        };\r\n    }\r\n    Renderer.create = create;\r\n})(Renderer || (Renderer = {}));\r\nexports.default = Renderer;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/renderer.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/scene.js":
+/*!********************************************!*\
+  !*** ./build/node_modules/mol-gl/scene.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar renderable_1 = __webpack_require__(/*! ./renderable */ \"./build/node_modules/mol-gl/renderable.js\");\r\nvar _renderObjectId = 0;\r\nfunction getNextId() {\r\n    return _renderObjectId++ % 0x7FFFFFFF;\r\n}\r\nfunction createMeshRenderObject(props) {\r\n    return { id: getNextId(), type: 'mesh', props: props };\r\n}\r\nexports.createMeshRenderObject = createMeshRenderObject;\r\nfunction createPointRenderObject(props) {\r\n    return { id: getNextId(), type: 'point', props: props };\r\n}\r\nexports.createPointRenderObject = createPointRenderObject;\r\nfunction createRenderable(ctx, o) {\r\n    switch (o.type) {\r\n        case 'mesh': return renderable_1.MeshRenderable.create(ctx, o.props);\r\n        case 'point': return renderable_1.PointRenderable.create(ctx, o.props);\r\n    }\r\n}\r\nexports.createRenderable = createRenderable;\r\nvar Scene;\r\n(function (Scene) {\r\n    function create(ctx) {\r\n        var renderableMap = new Map();\r\n        return {\r\n            add: function (o) {\r\n                if (!renderableMap.has(o)) {\r\n                    renderableMap.set(o, createRenderable(ctx, o));\r\n                }\r\n                else {\r\n                    console.warn(\"RenderObject with id '\" + o.id + \"' already present\");\r\n                }\r\n            },\r\n            remove: function (o) {\r\n                var renderable = renderableMap.get(o);\r\n                if (renderable) {\r\n                    renderable.dispose();\r\n                    renderableMap.delete(o);\r\n                }\r\n            },\r\n            clear: function () {\r\n                renderableMap.forEach(function (renderable) { return renderable.dispose(); });\r\n                renderableMap.clear();\r\n            },\r\n            forEach: function (callbackFn) {\r\n                renderableMap.forEach(callbackFn);\r\n            },\r\n            eachOpaque: function (callbackFn) {\r\n                renderableMap.forEach(function (r, o) {\r\n                    if (o.props.alpha === 1)\r\n                        callbackFn(r, o);\r\n                });\r\n            },\r\n            eachTransparent: function (callbackFn) {\r\n                renderableMap.forEach(function (r, o) {\r\n                    if (o.props.alpha < 1)\r\n                        callbackFn(r, o);\r\n                });\r\n            },\r\n            get count() {\r\n                return renderableMap.size;\r\n            }\r\n        };\r\n    }\r\n    Scene.create = create;\r\n})(Scene || (Scene = {}));\r\nexports.default = Scene;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/scene.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/shader-code.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-gl/shader-code.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PointShaderCode = {\r\n    vert: __webpack_require__(/*! mol-gl/shader/point.vert */ \"./build/node_modules/mol-gl/shader/point.vert\"),\r\n    frag: __webpack_require__(/*! mol-gl/shader/point.frag */ \"./build/node_modules/mol-gl/shader/point.frag\")\r\n};\r\nexports.MeshShaderCode = {\r\n    vert: __webpack_require__(/*! mol-gl/shader/mesh.vert */ \"./build/node_modules/mol-gl/shader/mesh.vert\"),\r\n    frag: __webpack_require__(/*! mol-gl/shader/mesh.frag */ \"./build/node_modules/mol-gl/shader/mesh.frag\")\r\n};\r\nfunction getDefinesCode(defines) {\r\n    if (defines === undefined)\r\n        return '';\r\n    var lines = [];\r\n    for (var name_1 in defines) {\r\n        var value = defines[name_1];\r\n        if (value) {\r\n            lines.push(\"#define \" + name_1 + \" \" + value);\r\n        }\r\n        else {\r\n            lines.push(\"#define \" + name_1);\r\n        }\r\n    }\r\n    return lines.join('\\n') + '\\n';\r\n}\r\nfunction addShaderDefines(defines, shaders) {\r\n    var header = getDefinesCode(defines);\r\n    return {\r\n        vert: \"\" + header + shaders.vert,\r\n        frag: \"\" + header + shaders.frag\r\n    };\r\n}\r\nexports.addShaderDefines = addShaderDefines;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/shader-code.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/shader/mesh.frag":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/shader/mesh.frag ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = \"/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\n#ifdef FLAT_SHADED\\n    #extension GL_OES_standard_derivatives : enable\\n#endif\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\n// uniform vec3 light_position;\\nuniform vec3 light_color;\\nuniform vec3 light_ambient;\\nuniform mat4 view;\\nuniform float alpha;\\n\\n#ifndef FLAT_SHADED\\n    varying vec3 vNormal;\\n#endif\\nvarying vec3 vViewPosition;\\n\\n#if defined(UNIFORM_COLOR)\\n    uniform vec3 color;\\n#elif defined(ATTRIBUTE_COLOR) || defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    varying vec3 vColor;\\n#endif\\n\\n// by Tom Madams\\n// Simple:\\n// https://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/\\n//\\n// Improved\\n// https://imdoingitwrong.wordpress.com/2011/02/10/improved-light-attenuation/\\nfloat attenuation_1_0(float r, float f, float d) {\\n    float denom = d / r + 1.0;\\n    float attenuation = 1.0 / (denom*denom);\\n    float t = (attenuation - f) / (1.0 - f);\\n    return max(t, 0.0);\\n}\\n\\n\\n// (c) 2014 Mikola Lysenko. MIT License\\n// https://github.com/glslify/glsl-specular-phong\\n\\nfloat phongSpecular_2_1(vec3 lightDirection, vec3 viewDirection, vec3 surfaceNormal, float shininess) {\\n    //Calculate Phong power\\n    vec3 R = -reflect(lightDirection, surfaceNormal);\\n    return pow(max(0.0, dot(viewDirection, R)), shininess);\\n}\\n\\n\\n// (c) 2014 Mikola Lysenko. MIT License\\n// https://github.com/glslify/glsl-diffuse-oren-nayar\\n\\n#define PI 3.14159265\\n\\nfloat orenNayarDiffuse_3_2(vec3 lightDirection, vec3 viewDirection, vec3 surfaceNormal, float roughness, float albedo) {\\n    float LdotV = dot(lightDirection, viewDirection);\\n    float NdotL = dot(lightDirection, surfaceNormal);\\n    float NdotV = dot(surfaceNormal, viewDirection);\\n\\n    float s = LdotV - NdotL * NdotV;\\n    float t = mix(1.0, max(NdotL, NdotV), step(0.0, s));\\n\\n    float sigma2 = roughness * roughness;\\n    float A = 1.0 + sigma2 * (albedo / (sigma2 + 0.13) + 0.5 / (sigma2 + 0.33));\\n    float B = 0.45 * sigma2 / (sigma2 + 0.09);\\n\\n    return albedo * max(0.0, NdotL) * (A + B * s / t) / PI;\\n}\\n\\n\\n\\nconst float specularScale = 0.65;\\nconst float shininess = 100.0;\\nconst float roughness = 5.0;\\nconst float albedo = 0.95;\\n\\nvoid main() {\\n    // material color\\n    #if defined(UNIFORM_COLOR)\\n    vec3 material = color;\\n#elif defined(ATTRIBUTE_COLOR) || defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    vec3 material = vColor;\\n#endif\\n\\n    // determine surface to light direction\\n    // vec4 lightPosition = view * vec4(light_position, 1.0);\\n    // vec3 lightVector = lightPosition.xyz - vViewPosition;\\n    vec3 lightVector = vViewPosition;\\n\\n    vec3 L = normalize(lightVector); // light direction\\n    vec3 V = normalize(vViewPosition); // eye direction\\n\\n    // surface normal\\n    #ifdef FLAT_SHADED\\n        vec3 fdx = dFdx(vViewPosition);\\n        vec3 fdy = dFdy(vViewPosition);\\n        vec3 N = -normalize(cross(fdx, fdy));\\n    #else\\n        vec3 N = -normalize(vNormal);\\n        #ifdef DOUBLE_SIDED\\n            N = N * (float(gl_FrontFacing) * 2.0 - 1.0);\\n        #endif\\n    #endif\\n\\n    // compute our diffuse & specular terms\\n    float specular = phongSpecular_2_1(L, V, N, shininess) * specularScale;\\n    vec3 diffuse = light_color * orenNayarDiffuse_3_2(L, V, N, roughness, albedo);\\n    vec3 ambient = light_ambient;\\n\\n    // add the lighting\\n    vec3 finalColor = material * (diffuse + ambient) + specular;\\n\\n    // gl_FragColor.rgb = N;\\n    // gl_FragColor.a = 1.0;\\n    // gl_FragColor.rgb = vec3(1.0, 0.0, 0.0);\\n    gl_FragColor.rgb = finalColor;\\n    gl_FragColor.a = alpha;\\n}\"\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/shader/mesh.frag?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/shader/mesh.vert":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/shader/mesh.vert ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = \"/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform mat4 projection, model, view;\\n\\nuniform int objectId;\\nuniform int instanceCount;\\nuniform int elementCount;\\n\\n#if defined(UNIFORM_COLOR)\\n    uniform vec3 color;\\n#elif defined(ATTRIBUTE_COLOR)\\n    varying vec3 vColor;\\n    attribute vec3 color;\\n#elif defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    varying vec3 vColor;\\n    uniform vec2 colorTexSize;\\n    uniform sampler2D colorTex;\\n#endif\\n\\n/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\nvec3 read_vec3_1_0 (sampler2D tex_1_1, float i_1_2, vec2 size_1_3) {\\n    float x = mod(i_1_2, size_1_3.x);\\n    float y = floor(i_1_2 / size_1_3.x);\\n    vec2 uv = (vec2(x, y) + 0.5) / size_1_3;\\n    return texture2D(tex_1_1, uv).rgb;\\n}\\n\\n\\nattribute vec3 position;\\nattribute mat4 transform;\\nattribute float instanceId;\\nattribute float elementId;\\n\\n#ifndef FLAT_SHADED\\n    attribute vec3 normal;\\n    varying vec3 vNormal;\\n#endif\\n\\nvarying vec3 vViewPosition;\\n\\n// (c) 2014 Mikola Lysenko. MIT License\\n// https://github.com/glslify/glsl-inverse\\n\\nfloat inverse_2_4(float m) {\\n  return 1.0 / m;\\n}\\n\\nmat2 inverse_2_4(mat2 m) {\\n  return mat2(m[1][1],-m[0][1],\\n             -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\\n}\\n\\nmat3 inverse_2_4(mat3 m) {\\n  float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\\n  float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\\n  float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\\n\\n  float b01 = a22 * a11 - a12 * a21;\\n  float b11 = -a22 * a10 + a12 * a20;\\n  float b21 = a21 * a10 - a11 * a20;\\n\\n  float det = a00 * b01 + a01 * b11 + a02 * b21;\\n\\n  return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\\n              b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\\n              b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\\n}\\n\\nmat4 inverse_2_4(mat4 m) {\\n  float\\n      a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\\n      a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\\n      a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\\n      a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\\n\\n      b00 = a00 * a11 - a01 * a10,\\n      b01 = a00 * a12 - a02 * a10,\\n      b02 = a00 * a13 - a03 * a10,\\n      b03 = a01 * a12 - a02 * a11,\\n      b04 = a01 * a13 - a03 * a11,\\n      b05 = a02 * a13 - a03 * a12,\\n      b06 = a20 * a31 - a21 * a30,\\n      b07 = a20 * a32 - a22 * a30,\\n      b08 = a20 * a33 - a23 * a30,\\n      b09 = a21 * a32 - a22 * a31,\\n      b10 = a21 * a33 - a23 * a31,\\n      b11 = a22 * a33 - a23 * a32,\\n\\n      det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\\n\\n  return mat4(\\n      a11 * b11 - a12 * b10 + a13 * b09,\\n      a02 * b10 - a01 * b11 - a03 * b09,\\n      a31 * b05 - a32 * b04 + a33 * b03,\\n      a22 * b04 - a21 * b05 - a23 * b03,\\n      a12 * b08 - a10 * b11 - a13 * b07,\\n      a00 * b11 - a02 * b08 + a03 * b07,\\n      a32 * b02 - a30 * b05 - a33 * b01,\\n      a20 * b05 - a22 * b02 + a23 * b01,\\n      a10 * b10 - a11 * b08 + a13 * b06,\\n      a01 * b08 - a00 * b10 - a03 * b06,\\n      a30 * b04 - a31 * b02 + a33 * b00,\\n      a21 * b02 - a20 * b04 - a23 * b00,\\n      a11 * b07 - a10 * b09 - a12 * b06,\\n      a00 * b09 - a01 * b07 + a02 * b06,\\n      a31 * b01 - a30 * b03 - a32 * b00,\\n      a20 * b03 - a21 * b01 + a22 * b00) / det;\\n}\\n\\n\\n// (c) 2014 Mikola Lysenko. MIT License\\n// https://github.com/glslify/glsl-transpose\\n\\nfloat transpose_3_5(float m) {\\n  return m;\\n}\\n\\nmat2 transpose_3_5(mat2 m) {\\n  return mat2(m[0][0], m[1][0],\\n              m[0][1], m[1][1]);\\n}\\n\\nmat3 transpose_3_5(mat3 m) {\\n  return mat3(m[0][0], m[1][0], m[2][0],\\n              m[0][1], m[1][1], m[2][1],\\n              m[0][2], m[1][2], m[2][2]);\\n}\\n\\nmat4 transpose_3_5(mat4 m) {\\n  return mat4(m[0][0], m[1][0], m[2][0], m[3][0],\\n              m[0][1], m[1][1], m[2][1], m[3][1],\\n              m[0][2], m[1][2], m[2][2], m[3][2],\\n              m[0][3], m[1][3], m[2][3], m[3][3]);\\n}\\n\\n\\n\\nvoid main(){\\n    #if defined(ATTRIBUTE_COLOR)\\n    vColor = color;\\n#elif defined(INSTANCE_COLOR)\\n    vColor = read_vec3_1_0(colorTex, instanceId, colorTexSize);\\n#elif defined(ELEMENT_COLOR)\\n    vColor = read_vec3_1_0(colorTex, elementId, colorTexSize);\\n#elif defined(ELEMENT_INSTANCE_COLOR)\\n    vColor = read_vec3_1_0(colorTex, instanceId * float(elementCount) + elementId, colorTexSize);\\n#endif\\n\\n    mat4 modelView = view * model * transform;\\n    vec4 mvPosition = modelView * vec4(position, 1.0);\\n    vViewPosition = mvPosition.xyz;\\n    gl_Position = projection * mvPosition;\\n\\n    #ifndef FLAT_SHADED\\n        mat3 normalMatrix = transpose_3_5(inverse_2_4(mat3(modelView)));\\n        vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\\n        #if defined(FLIP_SIDED) && !defined(DOUBLE_SIDED) // TODO checking DOUBLE_SIDED should not be required, ASR\\n            transformedNormal = -transformedNormal;\\n        #endif\\n        vNormal = transformedNormal;\\n    #endif\\n}\"\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/shader/mesh.vert?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/shader/point.frag":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-gl/shader/point.frag ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = \"/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform float alpha;\\n\\n#if defined(UNIFORM_COLOR)\\n    uniform vec3 color;\\n#elif defined(ATTRIBUTE_COLOR) || defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    varying vec3 vColor;\\n#endif\\n\\nvoid main(){\\n    #if defined(UNIFORM_COLOR)\\n    vec3 material = color;\\n#elif defined(ATTRIBUTE_COLOR) || defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    vec3 material = vColor;\\n#endif\\n    gl_FragColor = vec4(material, alpha);\\n}\"\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/shader/point.frag?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/shader/point.vert":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-gl/shader/point.vert ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = \"/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform mat4 projection, model, view;\\n\\nuniform int objectId;\\nuniform int instanceCount;\\nuniform int elementCount;\\n\\nuniform float pixelRatio;\\nuniform float viewportHeight;\\n\\n#if defined(UNIFORM_COLOR)\\n    uniform vec3 color;\\n#elif defined(ATTRIBUTE_COLOR)\\n    varying vec3 vColor;\\n    attribute vec3 color;\\n#elif defined(INSTANCE_COLOR) || defined(ELEMENT_COLOR) || defined(ELEMENT_INSTANCE_COLOR)\\n    varying vec3 vColor;\\n    uniform vec2 colorTexSize;\\n    uniform sampler2D colorTex;\\n#endif\\n\\n/**\\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\\n *\\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\\n */\\n\\nvec3 read_vec3_1_0 (sampler2D tex_1_1, float i_1_2, vec2 size_1_3) {\\n    float x = mod(i_1_2, size_1_3.x);\\n    float y = floor(i_1_2 / size_1_3.x);\\n    vec2 uv = (vec2(x, y) + 0.5) / size_1_3;\\n    return texture2D(tex_1_1, uv).rgb;\\n}\\n\\n\\n#if defined(UNIFORM_SIZE)\\n    uniform float size;\\n#elif defined(ATTRIBUTE_SIZE)\\n    attribute float size;\\n#endif\\n\\nattribute vec3 position;\\nattribute mat4 transform;\\nattribute float instanceId;\\nattribute float elementId;\\n\\nvoid main(){\\n    #if defined(ATTRIBUTE_COLOR)\\n    vColor = color;\\n#elif defined(INSTANCE_COLOR)\\n    vColor = read_vec3_1_0(colorTex, instanceId, colorTexSize);\\n#elif defined(ELEMENT_COLOR)\\n    vColor = read_vec3_1_0(colorTex, elementId, colorTexSize);\\n#elif defined(ELEMENT_INSTANCE_COLOR)\\n    vColor = read_vec3_1_0(colorTex, instanceId * float(elementCount) + elementId, colorTexSize);\\n#endif\\n\\n    mat4 modelView = view * model * transform;\\n    vec4 mvPosition = modelView * vec4(position, 1.0);\\n\\n    #ifdef POINT_SIZE_ATTENUATION\\n        gl_PointSize = size * pixelRatio * ((viewportHeight / 2.0) / -mvPosition.z) * 5.0;\\n    #else\\n        gl_PointSize = size * pixelRatio;\\n    #endif\\n\\n    gl_Position = projection * mvPosition;\\n}\"\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/shader/point.vert?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/buffer.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/buffer.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction getUsageHint(ctx, usageHint) {\r\n    var gl = ctx.gl;\r\n    switch (usageHint) {\r\n        case 'static': return gl.STATIC_DRAW;\r\n        case 'dynamic': return gl.DYNAMIC_DRAW;\r\n        case 'stream': return gl.STREAM_DRAW;\r\n    }\r\n}\r\nexports.getUsageHint = getUsageHint;\r\nfunction getDataType(ctx, dataType) {\r\n    var gl = ctx.gl;\r\n    switch (dataType) {\r\n        case 'uint8': return gl.UNSIGNED_BYTE;\r\n        case 'int8': return gl.BYTE;\r\n        case 'uint16': return gl.UNSIGNED_SHORT;\r\n        case 'int16': return gl.SHORT;\r\n        case 'uint32': return gl.UNSIGNED_INT;\r\n        case 'int32': return gl.INT;\r\n        case 'float32': return gl.FLOAT;\r\n    }\r\n}\r\nexports.getDataType = getDataType;\r\nfunction dataTypeFromArray(ctx, array) {\r\n    var gl = ctx.gl;\r\n    if (array instanceof Uint8Array) {\r\n        return gl.UNSIGNED_BYTE;\r\n    }\r\n    else if (array instanceof Int8Array) {\r\n        return gl.BYTE;\r\n    }\r\n    else if (array instanceof Uint16Array) {\r\n        return gl.UNSIGNED_SHORT;\r\n    }\r\n    else if (array instanceof Int16Array) {\r\n        return gl.SHORT;\r\n    }\r\n    else if (array instanceof Uint32Array) {\r\n        return gl.UNSIGNED_INT;\r\n    }\r\n    else if (array instanceof Int32Array) {\r\n        return gl.INT;\r\n    }\r\n    else if (array instanceof Float32Array) {\r\n        return gl.FLOAT;\r\n    }\r\n    else {\r\n        throw new Error('Should nevver happen');\r\n    }\r\n}\r\nfunction getBufferType(ctx, bufferType) {\r\n    var gl = ctx.gl;\r\n    switch (bufferType) {\r\n        case 'attribute': return gl.ARRAY_BUFFER;\r\n        case 'elements': return gl.ELEMENT_ARRAY_BUFFER;\r\n    }\r\n}\r\nexports.getBufferType = getBufferType;\r\nfunction createBuffer(ctx, array, itemSize, usageHint, bufferType) {\r\n    var gl = ctx.gl;\r\n    var _buffer = gl.createBuffer();\r\n    if (_buffer === null) {\r\n        throw new Error('Could not create WebGL buffer');\r\n    }\r\n    var _usageHint = getUsageHint(ctx, usageHint);\r\n    var _bufferType = getBufferType(ctx, bufferType);\r\n    var _dataType = dataTypeFromArray(ctx, array);\r\n    var _bpe = array.BYTES_PER_ELEMENT;\r\n    function updateData(array) {\r\n        gl.bindBuffer(_bufferType, _buffer);\r\n        gl.bufferData(_bufferType, array, _usageHint);\r\n    }\r\n    updateData(array);\r\n    var destroyed = false;\r\n    ctx.bufferCount += 1;\r\n    return {\r\n        _buffer: _buffer,\r\n        _usageHint: _usageHint,\r\n        _bufferType: _bufferType,\r\n        _dataType: _dataType,\r\n        _bpe: _bpe,\r\n        updateData: updateData,\r\n        updateSubData: function (array, offset, count) {\r\n            gl.bindBuffer(_bufferType, _buffer);\r\n            gl.bufferSubData(_bufferType, offset * _bpe, array.subarray(offset, offset + count));\r\n        },\r\n        destroy: function () {\r\n            if (destroyed)\r\n                return;\r\n            gl.bindBuffer(_bufferType, _buffer);\r\n            // set size to 1 before deleting\r\n            gl.bufferData(_bufferType, 1, _usageHint);\r\n            gl.deleteBuffer(_buffer);\r\n            destroyed = true;\r\n            ctx.bufferCount -= 1;\r\n        }\r\n    };\r\n}\r\nexports.createBuffer = createBuffer;\r\nfunction createAttributeBuffer(ctx, array, itemSize, divisor, usageHint) {\r\n    if (usageHint === void 0) { usageHint = 'dynamic'; }\r\n    var gl = ctx.gl;\r\n    var angleInstancedArrays = ctx.extensions.angleInstancedArrays;\r\n    var buffer = createBuffer(ctx, array, itemSize, usageHint, 'attribute');\r\n    var _buffer = buffer._buffer, _bufferType = buffer._bufferType, _dataType = buffer._dataType, _bpe = buffer._bpe;\r\n    return __assign({}, buffer, { bind: function (location) {\r\n            gl.bindBuffer(_bufferType, _buffer);\r\n            if (itemSize === 16) {\r\n                for (var i = 0; i < 4; ++i) {\r\n                    gl.enableVertexAttribArray(location + i);\r\n                    gl.vertexAttribPointer(location + i, 4, _dataType, false, 4 * 4 * _bpe, i * 4 * _bpe);\r\n                    angleInstancedArrays.vertexAttribDivisorANGLE(location + i, divisor);\r\n                }\r\n            }\r\n            else {\r\n                gl.enableVertexAttribArray(location);\r\n                gl.vertexAttribPointer(location, itemSize, _dataType, false, 0, 0);\r\n                angleInstancedArrays.vertexAttribDivisorANGLE(location, divisor);\r\n            }\r\n        } });\r\n}\r\nexports.createAttributeBuffer = createAttributeBuffer;\r\nfunction createAttributeBuffers(ctx, props, state) {\r\n    var buffers = {};\r\n    Object.keys(props).forEach(function (k) {\r\n        buffers[k] = createAttributeBuffer(ctx, state[k], props[k].itemSize, props[k].divisor);\r\n    });\r\n    return buffers;\r\n}\r\nexports.createAttributeBuffers = createAttributeBuffers;\r\nfunction createElementsBuffer(ctx, array, usageHint) {\r\n    if (usageHint === void 0) { usageHint = 'static'; }\r\n    var gl = ctx.gl;\r\n    var buffer = createBuffer(ctx, array, 1, usageHint, 'elements');\r\n    var _buffer = buffer._buffer;\r\n    return __assign({}, buffer, { bind: function () {\r\n            gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _buffer);\r\n        } });\r\n}\r\nexports.createElementsBuffer = createElementsBuffer;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/buffer.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/context.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/context.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar program_1 = __webpack_require__(/*! ./program */ \"./build/node_modules/mol-gl/webgl/program.js\");\r\nvar shader_1 = __webpack_require__(/*! ./shader */ \"./build/node_modules/mol-gl/webgl/shader.js\");\r\nfunction unbindResources(gl) {\r\n    // bind null to all texture units\r\n    var maxTextureImageUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\r\n    for (var i = 0; i < maxTextureImageUnits; ++i) {\r\n        gl.activeTexture(gl.TEXTURE0 + i);\r\n        gl.bindTexture(gl.TEXTURE_2D, null);\r\n        gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);\r\n    }\r\n    // assign the smallest possible buffer to all attributes\r\n    var buf = gl.createBuffer();\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, buf);\r\n    var maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\r\n    for (var i = 0; i < maxVertexAttribs; ++i) {\r\n        gl.vertexAttribPointer(i, 1, gl.FLOAT, false, 0, 0);\r\n    }\r\n    // bind null to all buffers\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\r\n    gl.bindRenderbuffer(gl.RENDERBUFFER, null);\r\n    gl.bindFramebuffer(gl.FRAMEBUFFER, null);\r\n}\r\nfunction createContext(gl) {\r\n    var angleInstancedArrays = gl.getExtension('ANGLE_instanced_arrays');\r\n    if (angleInstancedArrays === null) {\r\n        throw new Error('Could not get \"ANGLE_instanced_arrays\" extension');\r\n    }\r\n    var standardDerivatives = gl.getExtension('OES_standard_derivatives');\r\n    if (standardDerivatives === null) {\r\n        throw new Error('Could not get \"OES_standard_derivatives\" extension');\r\n    }\r\n    var oesElementIndexUint = gl.getExtension('OES_element_index_uint');\r\n    if (oesElementIndexUint === null) {\r\n        console.warn('Could not get \"OES_element_index_uint\" extension');\r\n    }\r\n    var oesVertexArrayObject = gl.getExtension('OES_vertex_array_object');\r\n    if (oesVertexArrayObject === null) {\r\n        console.log('Could not get \"OES_vertex_array_object\" extension');\r\n    }\r\n    var shaderCache = shader_1.createShaderCache();\r\n    var programCache = program_1.createProgramCache();\r\n    return {\r\n        gl: gl,\r\n        extensions: { angleInstancedArrays: angleInstancedArrays, standardDerivatives: standardDerivatives, oesElementIndexUint: oesElementIndexUint, oesVertexArrayObject: oesVertexArrayObject },\r\n        shaderCache: shaderCache,\r\n        programCache: programCache,\r\n        bufferCount: 0,\r\n        textureCount: 0,\r\n        vaoCount: 0,\r\n        destroy: function () {\r\n            unbindResources(gl);\r\n            programCache.dispose();\r\n            shaderCache.dispose();\r\n            // TODO destroy buffers and textures\r\n        }\r\n    };\r\n}\r\nexports.createContext = createContext;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/context.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/program.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/program.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar uniform_1 = __webpack_require__(/*! ./uniform */ \"./build/node_modules/mol-gl/webgl/uniform.js\");\r\nvar reference_cache_1 = __webpack_require__(/*! mol-util/reference-cache */ \"./build/node_modules/mol-util/reference-cache.js\");\r\nvar id_factory_1 = __webpack_require__(/*! mol-util/id-factory */ \"./build/node_modules/mol-util/id-factory.js\");\r\nvar getNextProgramId = id_factory_1.idFactory();\r\nfunction getAttributeLocations(ctx, program, attributeDefs) {\r\n    var gl = ctx.gl;\r\n    var locations = {};\r\n    gl.useProgram(program);\r\n    Object.keys(attributeDefs).forEach(function (k) {\r\n        var loc = gl.getAttribLocation(program, k);\r\n        if (loc === -1) {\r\n            console.info(\"Could not get attribute location for '\" + k + \"'\");\r\n        }\r\n        locations[k] = loc;\r\n    });\r\n    return locations;\r\n}\r\nfunction getTextureUniformDefs(textureDefs) {\r\n    var textureUniformDefs = {};\r\n    Object.keys(textureDefs).forEach(function (k) { return textureUniformDefs[k] = 't2'; });\r\n    return textureUniformDefs;\r\n}\r\nfunction createProgram(ctx, props) {\r\n    var gl = ctx.gl, shaderCache = ctx.shaderCache;\r\n    var shaderCode = props.shaderCode, uniformDefs = props.uniformDefs, attributeDefs = props.attributeDefs, textureDefs = props.textureDefs;\r\n    var program = gl.createProgram();\r\n    if (program === null) {\r\n        throw new Error('Could not create WebGL program');\r\n    }\r\n    var vertShaderRef = shaderCache.get(ctx, { type: 'vert', source: shaderCode.vert });\r\n    var fragShaderRef = shaderCache.get(ctx, { type: 'frag', source: shaderCode.frag });\r\n    vertShaderRef.value.attach(program);\r\n    fragShaderRef.value.attach(program);\r\n    gl.linkProgram(program);\r\n    var uniformSetters = uniform_1.getUniformSetters(ctx, program, uniformDefs);\r\n    var attributeLocations = getAttributeLocations(ctx, program, attributeDefs);\r\n    var textureUniformDefs = getTextureUniformDefs(textureDefs);\r\n    var textureUniformSetters = uniform_1.getUniformSetters(ctx, program, textureUniformDefs);\r\n    var destroyed = false;\r\n    return {\r\n        id: getNextProgramId(),\r\n        use: function () {\r\n            gl.useProgram(program);\r\n        },\r\n        setUniforms: function (uniformValues) {\r\n            Object.keys(uniformValues).forEach(function (k) {\r\n                var value = uniformValues[k];\r\n                if (value !== undefined)\r\n                    uniformSetters[k](value);\r\n            });\r\n        },\r\n        bindAttributes: function (attribueBuffers) {\r\n            Object.keys(attribueBuffers).forEach(function (k) {\r\n                var loc = attributeLocations[k];\r\n                if (loc !== -1)\r\n                    attribueBuffers[k].bind(loc);\r\n            });\r\n        },\r\n        bindTextures: function (textures) {\r\n            Object.keys(textures).forEach(function (k, i) {\r\n                textures[k].bind(i);\r\n                textureUniformSetters[k](i);\r\n            });\r\n        },\r\n        destroy: function () {\r\n            if (destroyed)\r\n                return;\r\n            vertShaderRef.free();\r\n            fragShaderRef.free();\r\n            gl.deleteProgram(program);\r\n            destroyed = true;\r\n        }\r\n    };\r\n}\r\nexports.createProgram = createProgram;\r\nfunction createProgramCache() {\r\n    return reference_cache_1.createReferenceCache(function (props) { return JSON.stringify(props); }, function (ctx, props) { return createProgram(ctx, props); }, function (program) { program.destroy(); });\r\n}\r\nexports.createProgramCache = createProgramCache;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/program.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/render-item.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/render-item.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar buffer_1 = __webpack_require__(/*! ./buffer */ \"./build/node_modules/mol-gl/webgl/buffer.js\");\r\nvar texture_1 = __webpack_require__(/*! ./texture */ \"./build/node_modules/mol-gl/webgl/texture.js\");\r\nfunction getDrawMode(ctx, drawMode) {\r\n    var gl = ctx.gl;\r\n    switch (drawMode) {\r\n        case 'points': return gl.POINTS;\r\n        case 'lines': return gl.LINES;\r\n        case 'line-strip': return gl.LINE_STRIP;\r\n        case 'line-loop': return gl.LINE_LOOP;\r\n        case 'triangles': return gl.TRIANGLES;\r\n        case 'triangle-strip': return gl.TRIANGLE_STRIP;\r\n        case 'triangle-fan': return gl.TRIANGLE_FAN;\r\n    }\r\n}\r\nexports.getDrawMode = getDrawMode;\r\nfunction createRenderItem(ctx, props, state) {\r\n    var programCache = ctx.programCache;\r\n    var _a = ctx.extensions, angleInstancedArrays = _a.angleInstancedArrays, oesVertexArrayObject = _a.oesVertexArrayObject;\r\n    var shaderCode = props.shaderCode, uniformDefs = props.uniformDefs, attributeDefs = props.attributeDefs, textureDefs = props.textureDefs, elementsKind = props.elementsKind;\r\n    var attributeValues = state.attributeValues, textureValues = state.textureValues, uniformValues = state.uniformValues, elements = state.elements;\r\n    var hash = JSON.stringify(props);\r\n    var drawMode = getDrawMode(ctx, props.drawMode);\r\n    var programRef = programCache.get(ctx, { shaderCode: shaderCode, uniformDefs: uniformDefs, attributeDefs: attributeDefs, textureDefs: textureDefs });\r\n    var program = programRef.value;\r\n    var textures = texture_1.createTextures(ctx, textureDefs, textureValues);\r\n    var attributeBuffers = buffer_1.createAttributeBuffers(ctx, attributeDefs, attributeValues);\r\n    var vertexArray;\r\n    if (oesVertexArrayObject) {\r\n        vertexArray = oesVertexArrayObject.createVertexArrayOES();\r\n        oesVertexArrayObject.bindVertexArrayOES(vertexArray);\r\n        program.bindAttributes(attributeBuffers);\r\n        ctx.vaoCount += 1;\r\n    }\r\n    var elementsBuffer;\r\n    if (elements && elementsKind) {\r\n        elementsBuffer = buffer_1.createElementsBuffer(ctx, elements);\r\n    }\r\n    // needs to come after elements buffer creation to include it in the vao\r\n    if (oesVertexArrayObject) {\r\n        oesVertexArrayObject.bindVertexArrayOES(null);\r\n    }\r\n    var drawCount = state.drawCount, instanceCount = state.instanceCount;\r\n    var destroyed = false;\r\n    return {\r\n        hash: hash,\r\n        programId: program.id,\r\n        program: program,\r\n        draw: function () {\r\n            program.setUniforms(uniformValues);\r\n            if (oesVertexArrayObject) {\r\n                oesVertexArrayObject.bindVertexArrayOES(vertexArray);\r\n            }\r\n            else {\r\n                program.bindAttributes(attributeBuffers);\r\n                elementsBuffer.bind();\r\n            }\r\n            program.bindTextures(textures);\r\n            if (elementsBuffer) {\r\n                angleInstancedArrays.drawElementsInstancedANGLE(drawMode, drawCount, elementsBuffer._dataType, 0, instanceCount);\r\n            }\r\n            else {\r\n                angleInstancedArrays.drawArraysInstancedANGLE(drawMode, 0, drawCount, instanceCount);\r\n            }\r\n        },\r\n        update: function (state) {\r\n            // TODO\r\n            var attributeValues = state.attributeValues;\r\n            Object.keys(attributeValues).forEach(function (k) {\r\n                var value = attributeValues[k];\r\n                if (value !== undefined)\r\n                    attributeBuffers[k].updateData(value);\r\n            });\r\n        },\r\n        destroy: function () {\r\n            if (destroyed)\r\n                return;\r\n            programRef.free();\r\n            Object.keys(textures).forEach(function (k) { return textures[k].destroy(); });\r\n            Object.keys(attributeBuffers).forEach(function (k) { return attributeBuffers[k].destroy(); });\r\n            if (elements && elementsKind) {\r\n                elementsBuffer.destroy();\r\n            }\r\n            if (oesVertexArrayObject) {\r\n                oesVertexArrayObject.deleteVertexArrayOES(vertexArray);\r\n                ctx.vaoCount -= 1;\r\n            }\r\n            destroyed = true;\r\n        }\r\n    };\r\n}\r\nexports.createRenderItem = createRenderItem;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/render-item.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/shader.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/shader.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar reference_cache_1 = __webpack_require__(/*! mol-util/reference-cache */ \"./build/node_modules/mol-util/reference-cache.js\");\r\nfunction addLineNumbers(source) {\r\n    var lines = source.split('\\n');\r\n    for (var i = 0; i < lines.length; ++i) {\r\n        lines[i] = (i + 1) + ': ' + lines[i];\r\n    }\r\n    return lines.join('\\n');\r\n}\r\nfunction createShader(ctx, props) {\r\n    var gl = ctx.gl;\r\n    var type = props.type, source = props.source;\r\n    var shader = gl.createShader(type === 'vert' ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\r\n    if (shader === null) {\r\n        throw new Error(\"Error creating \" + type + \" shader\");\r\n    }\r\n    gl.shaderSource(shader, source);\r\n    gl.compileShader(shader);\r\n    if (gl.getShaderParameter(shader, gl.COMPILE_STATUS) === false) {\r\n        console.warn(\"'\" + type + \"' shader info log '\" + gl.getShaderInfoLog(shader) + \"'\\n\" + addLineNumbers(source));\r\n        throw new Error(\"Error compiling \" + type + \" shader\");\r\n    }\r\n    return {\r\n        attach: function (program) {\r\n            gl.attachShader(program, shader);\r\n        },\r\n        destroy: function () {\r\n            gl.deleteShader(shader);\r\n        }\r\n    };\r\n}\r\nfunction createShaderCache() {\r\n    return reference_cache_1.createReferenceCache(function (props) { return JSON.stringify(props); }, function (ctx, props) { return createShader(ctx, props); }, function (shader) { shader.destroy(); });\r\n}\r\nexports.createShaderCache = createShaderCache;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/shader.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/texture.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/texture.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction createTexture(ctx) {\r\n    var gl = ctx.gl;\r\n    var texture = gl.createTexture();\r\n    if (texture === null) {\r\n        throw new Error('Could not create WebGL texture');\r\n    }\r\n    var _textureType = gl.TEXTURE_2D;\r\n    var _magFilter = gl.NEAREST;\r\n    var _minFilter = gl.NEAREST;\r\n    var _format = gl.RGB;\r\n    var _arrayType = gl.UNSIGNED_BYTE;\r\n    var destroyed = false;\r\n    ctx.textureCount += 1;\r\n    return {\r\n        load: function (image) {\r\n            var array = image.array, width = image.width, height = image.height;\r\n            gl.bindTexture(_textureType, texture);\r\n            // unpack alignment of 1 since we use textures only for data\r\n            gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\r\n            gl.texImage2D(_textureType, 0, _format, width, height, 0, _format, _arrayType, array);\r\n            gl.texParameteri(_textureType, gl.TEXTURE_MAG_FILTER, _magFilter);\r\n            gl.texParameteri(_textureType, gl.TEXTURE_MIN_FILTER, _minFilter);\r\n            // clamp-to-edge needed for non-power-of-two textures\r\n            gl.texParameteri(_textureType, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n            gl.texParameteri(_textureType, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n            gl.bindTexture(_textureType, null);\r\n        },\r\n        bind: function (id) {\r\n            gl.activeTexture(gl.TEXTURE0 + id);\r\n            gl.bindTexture(_textureType, texture);\r\n        },\r\n        unbind: function (id) {\r\n            gl.activeTexture(gl.TEXTURE0 + id);\r\n            gl.bindTexture(_textureType, null);\r\n        },\r\n        destroy: function () {\r\n            if (destroyed)\r\n                return;\r\n            gl.deleteTexture(texture);\r\n            destroyed = true;\r\n            ctx.textureCount -= 1;\r\n        }\r\n    };\r\n}\r\nexports.createTexture = createTexture;\r\nfunction createTextures(ctx, props, state) {\r\n    var textures = {};\r\n    Object.keys(props).forEach(function (k) {\r\n        var texture = createTexture(ctx);\r\n        texture.load(state[k]);\r\n        textures[k] = texture;\r\n    });\r\n    return textures;\r\n}\r\nexports.createTextures = createTextures;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/texture.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-gl/webgl/uniform.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-gl/webgl/uniform.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction createUniformSetter(ctx, program, name, kind) {\r\n    var gl = ctx.gl;\r\n    var location = gl.getUniformLocation(program, name);\r\n    if (location === null) {\r\n        console.info(\"Could not get WebGL uniform location for '\" + name + \"'\");\r\n    }\r\n    switch (kind) {\r\n        case 'f': return function (value) { return gl.uniform1f(location, value); };\r\n        case 'i':\r\n        case 't2': return function (value) { return gl.uniform1i(location, value); };\r\n        case 'v2': return function (value) { return gl.uniform2fv(location, value); };\r\n        case 'v3': return function (value) { return gl.uniform3fv(location, value); };\r\n        case 'v4': return function (value) { return gl.uniform4fv(location, value); };\r\n        case 'm3': return function (value) { return gl.uniformMatrix3fv(location, false, value); };\r\n        case 'm4': return function (value) { return gl.uniformMatrix4fv(location, false, value); };\r\n    }\r\n}\r\nexports.createUniformSetter = createUniformSetter;\r\nfunction getUniformSetters(ctx, program, uniforms) {\r\n    var setters = {};\r\n    Object.keys(uniforms).forEach(function (k) {\r\n        setters[k] = createUniformSetter(ctx, program, k, uniforms[k]);\r\n    });\r\n    return setters;\r\n}\r\nexports.getUniformSetters = getUniformSetters;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-gl/webgl/uniform.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/binary-cif.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-io/common/binary-cif.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar decoder_1 = __webpack_require__(/*! ./binary-cif/decoder */ \"./build/node_modules/mol-io/common/binary-cif/decoder.js\");\r\nexports.decode = decoder_1.default;\r\n__export(__webpack_require__(/*! ./binary-cif/encoding */ \"./build/node_modules/mol-io/common/binary-cif/encoding.js\"));\r\n__export(__webpack_require__(/*! ./binary-cif/array-encoder */ \"./build/node_modules/mol-io/common/binary-cif/array-encoder.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/binary-cif.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/binary-cif/array-encoder.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-io/common/binary-cif/array-encoder.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Adapted from CIFTools.js (https://github.com/dsehnal/CIFTools.js; MIT) and MMTF (https://github.com/rcsb/mmtf-javascript/; MIT)\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar encoding_1 = __webpack_require__(/*! ./encoding */ \"./build/node_modules/mol-io/common/binary-cif/encoding.js\");\r\nvar ArrayEncoderImpl = /** @class */ (function () {\r\n    function ArrayEncoderImpl(providers) {\r\n        this.providers = providers;\r\n    }\r\n    ArrayEncoderImpl.prototype.and = function (f) {\r\n        return new ArrayEncoderImpl(this.providers.concat([f]));\r\n    };\r\n    ArrayEncoderImpl.prototype.encode = function (data) {\r\n        var encoding = [];\r\n        for (var _i = 0, _a = this.providers; _i < _a.length; _i++) {\r\n            var p = _a[_i];\r\n            var t = p(data);\r\n            if (!t.encodings.length) {\r\n                throw new Error('Encodings must be non-empty.');\r\n            }\r\n            data = t.data;\r\n            for (var _b = 0, _c = t.encodings; _b < _c.length; _b++) {\r\n                var e = _c[_b];\r\n                encoding.push(e);\r\n            }\r\n        }\r\n        if (!(data instanceof Uint8Array)) {\r\n            throw new Error('The encoding must result in a Uint8Array. Fix your encoding chain.');\r\n        }\r\n        return {\r\n            encoding: encoding,\r\n            data: data\r\n        };\r\n    };\r\n    return ArrayEncoderImpl;\r\n}());\r\nexports.ArrayEncoderImpl = ArrayEncoderImpl;\r\nvar ArrayEncoder;\r\n(function (ArrayEncoder) {\r\n    function by(f) {\r\n        return new ArrayEncoderImpl([f]);\r\n    }\r\n    ArrayEncoder.by = by;\r\n})(ArrayEncoder = exports.ArrayEncoder || (exports.ArrayEncoder = {}));\r\nvar ArrayEncoding;\r\n(function (ArrayEncoding) {\r\n    function by(f) {\r\n        return new ArrayEncoderImpl([f]);\r\n    }\r\n    ArrayEncoding.by = by;\r\n    function uint8(data) {\r\n        return {\r\n            encodings: [{ kind: 'ByteArray', type: 4 /* Uint8 */ }],\r\n            data: data\r\n        };\r\n    }\r\n    function int8(data) {\r\n        return {\r\n            encodings: [{ kind: 'ByteArray', type: 1 /* Int8 */ }],\r\n            data: new Uint8Array(data.buffer, data.byteOffset)\r\n        };\r\n    }\r\n    var writers = (_a = {},\r\n        _a[2 /* Int16 */] = function (v, i, a) { v.setInt16(2 * i, a, true); },\r\n        _a[5 /* Uint16 */] = function (v, i, a) { v.setUint16(2 * i, a, true); },\r\n        _a[3 /* Int32 */] = function (v, i, a) { v.setInt32(4 * i, a, true); },\r\n        _a[6 /* Uint32 */] = function (v, i, a) { v.setUint32(4 * i, a, true); },\r\n        _a[32 /* Float32 */] = function (v, i, a) { v.setFloat32(4 * i, a, true); },\r\n        _a[33 /* Float64 */] = function (v, i, a) { v.setFloat64(8 * i, a, true); },\r\n        _a);\r\n    var byteSizes = (_b = {},\r\n        _b[2 /* Int16 */] = 2,\r\n        _b[5 /* Uint16 */] = 2,\r\n        _b[3 /* Int32 */] = 4,\r\n        _b[6 /* Uint32 */] = 4,\r\n        _b[32 /* Float32 */] = 4,\r\n        _b[33 /* Float64 */] = 8,\r\n        _b);\r\n    function byteArray(data) {\r\n        var type = encoding_1.Encoding.getDataType(data);\r\n        if (type === 1 /* Int8 */)\r\n            return int8(data);\r\n        else if (type === 4 /* Uint8 */)\r\n            return uint8(data);\r\n        var result = new Uint8Array(data.length * byteSizes[type]);\r\n        var w = writers[type];\r\n        var view = new DataView(result.buffer);\r\n        for (var i = 0, n = data.length; i < n; i++) {\r\n            w(view, i, data[i]);\r\n        }\r\n        return {\r\n            encodings: [{ kind: 'ByteArray', type: type }],\r\n            data: result\r\n        };\r\n    }\r\n    ArrayEncoding.byteArray = byteArray;\r\n    function _fixedPoint(data, factor) {\r\n        var srcType = encoding_1.Encoding.getDataType(data);\r\n        var result = new Int32Array(data.length);\r\n        for (var i = 0, n = data.length; i < n; i++) {\r\n            result[i] = Math.round(data[i] * factor);\r\n        }\r\n        return {\r\n            encodings: [{ kind: 'FixedPoint', factor: factor, srcType: srcType }],\r\n            data: result\r\n        };\r\n    }\r\n    function fixedPoint(factor) { return function (data) { return _fixedPoint(data, factor); }; }\r\n    ArrayEncoding.fixedPoint = fixedPoint;\r\n    function _intervalQuantizaiton(data, min, max, numSteps, arrayType) {\r\n        var srcType = encoding_1.Encoding.getDataType(data);\r\n        if (!data.length) {\r\n            return {\r\n                encodings: [{ kind: 'IntervalQuantization', min: min, max: max, numSteps: numSteps, srcType: srcType }],\r\n                data: new Int32Array(0)\r\n            };\r\n        }\r\n        if (max < min) {\r\n            var t = min;\r\n            min = max;\r\n            max = t;\r\n        }\r\n        var delta = (max - min) / (numSteps - 1);\r\n        var output = new arrayType(data.length);\r\n        for (var i = 0, n = data.length; i < n; i++) {\r\n            var v = data[i];\r\n            if (v <= min)\r\n                output[i] = 0;\r\n            else if (v >= max)\r\n                output[i] = numSteps;\r\n            else\r\n                output[i] = (Math.round((v - min) / delta)) | 0;\r\n        }\r\n        return {\r\n            encodings: [{ kind: 'IntervalQuantization', min: min, max: max, numSteps: numSteps, srcType: srcType }],\r\n            data: output\r\n        };\r\n    }\r\n    function intervalQuantizaiton(min, max, numSteps, arrayType) {\r\n        if (arrayType === void 0) { arrayType = Int32Array; }\r\n        return function (data) { return _intervalQuantizaiton(data, min, max, numSteps, arrayType); };\r\n    }\r\n    ArrayEncoding.intervalQuantizaiton = intervalQuantizaiton;\r\n    function runLength(data) {\r\n        var srcType = encoding_1.Encoding.getDataType(data);\r\n        if (srcType === void 0) {\r\n            data = new Int32Array(data);\r\n            srcType = 3 /* Int32 */;\r\n        }\r\n        if (!data.length) {\r\n            return {\r\n                encodings: [{ kind: 'RunLength', srcType: srcType, srcSize: 0 }],\r\n                data: new Int32Array(0)\r\n            };\r\n        }\r\n        // calculate output size\r\n        var fullLength = 2;\r\n        for (var i = 1, il = data.length; i < il; i++) {\r\n            if (data[i - 1] !== data[i]) {\r\n                fullLength += 2;\r\n            }\r\n        }\r\n        var output = new Int32Array(fullLength);\r\n        var offset = 0;\r\n        var runLength = 1;\r\n        for (var i = 1, il = data.length; i < il; i++) {\r\n            if (data[i - 1] !== data[i]) {\r\n                output[offset] = data[i - 1];\r\n                output[offset + 1] = runLength;\r\n                runLength = 1;\r\n                offset += 2;\r\n            }\r\n            else {\r\n                ++runLength;\r\n            }\r\n        }\r\n        output[offset] = data[data.length - 1];\r\n        output[offset + 1] = runLength;\r\n        return {\r\n            encodings: [{ kind: 'RunLength', srcType: srcType, srcSize: data.length }],\r\n            data: output\r\n        };\r\n    }\r\n    ArrayEncoding.runLength = runLength;\r\n    function delta(data) {\r\n        if (!encoding_1.Encoding.isSignedIntegerDataType(data)) {\r\n            throw new Error('Only signed integer types can be encoded using delta encoding.');\r\n        }\r\n        var srcType = encoding_1.Encoding.getDataType(data);\r\n        if (srcType === void 0) {\r\n            data = new Int32Array(data);\r\n            srcType = 3 /* Int32 */;\r\n        }\r\n        if (!data.length) {\r\n            return {\r\n                encodings: [{ kind: 'Delta', origin: 0, srcType: srcType }],\r\n                data: new data.constructor(0)\r\n            };\r\n        }\r\n        var output = new data.constructor(data.length);\r\n        var origin = data[0];\r\n        output[0] = data[0];\r\n        for (var i = 1, n = data.length; i < n; i++) {\r\n            output[i] = data[i] - data[i - 1];\r\n        }\r\n        output[0] = 0;\r\n        return {\r\n            encodings: [{ kind: 'Delta', origin: origin, srcType: srcType }],\r\n            data: output\r\n        };\r\n    }\r\n    ArrayEncoding.delta = delta;\r\n    function isSigned(data) {\r\n        for (var i = 0, n = data.length; i < n; i++) {\r\n            if (data[i] < 0)\r\n                return true;\r\n        }\r\n        return false;\r\n    }\r\n    function packingSize(data, upperLimit) {\r\n        var lowerLimit = -upperLimit - 1;\r\n        var size = 0;\r\n        for (var i = 0, n = data.length; i < n; i++) {\r\n            var value = data[i];\r\n            if (value === 0) {\r\n                size += 1;\r\n            }\r\n            else if (value > 0) {\r\n                size += Math.ceil(value / upperLimit);\r\n                if (value % upperLimit === 0)\r\n                    size += 1;\r\n            }\r\n            else {\r\n                size += Math.ceil(value / lowerLimit);\r\n                if (value % lowerLimit === 0)\r\n                    size += 1;\r\n            }\r\n        }\r\n        return size;\r\n    }\r\n    function determinePacking(data) {\r\n        var signed = isSigned(data);\r\n        var size8 = signed ? packingSize(data, 0x7F) : packingSize(data, 0xFF);\r\n        var size16 = signed ? packingSize(data, 0x7FFF) : packingSize(data, 0xFFFF);\r\n        if (data.length * 4 < size16 * 2) {\r\n            // 4 byte packing is the most effective\r\n            return {\r\n                isSigned: signed,\r\n                size: data.length,\r\n                bytesPerElement: 4\r\n            };\r\n        }\r\n        else if (size16 * 2 < size8) {\r\n            // 2 byte packing is the most effective\r\n            return {\r\n                isSigned: signed,\r\n                size: size16,\r\n                bytesPerElement: 2\r\n            };\r\n        }\r\n        else {\r\n            // 1 byte packing is the most effective\r\n            return {\r\n                isSigned: signed,\r\n                size: size8,\r\n                bytesPerElement: 1\r\n            };\r\n        }\r\n        ;\r\n    }\r\n    function _integerPacking(data, packing) {\r\n        var upperLimit = packing.isSigned\r\n            ? (packing.bytesPerElement === 1 ? 0x7F : 0x7FFF)\r\n            : (packing.bytesPerElement === 1 ? 0xFF : 0xFFFF);\r\n        var lowerLimit = -upperLimit - 1;\r\n        var n = data.length;\r\n        var packed = packing.isSigned\r\n            ? packing.bytesPerElement === 1 ? new Int8Array(packing.size) : new Int16Array(packing.size)\r\n            : packing.bytesPerElement === 1 ? new Uint8Array(packing.size) : new Uint16Array(packing.size);\r\n        var j = 0;\r\n        for (var i = 0; i < n; i++) {\r\n            var value = data[i];\r\n            if (value >= 0) {\r\n                while (value >= upperLimit) {\r\n                    packed[j] = upperLimit;\r\n                    ++j;\r\n                    value -= upperLimit;\r\n                }\r\n            }\r\n            else {\r\n                while (value <= lowerLimit) {\r\n                    packed[j] = lowerLimit;\r\n                    ++j;\r\n                    value -= lowerLimit;\r\n                }\r\n            }\r\n            packed[j] = value;\r\n            ++j;\r\n        }\r\n        var result = byteArray(packed);\r\n        return {\r\n            encodings: [{\r\n                    kind: 'IntegerPacking',\r\n                    byteCount: packing.bytesPerElement,\r\n                    isUnsigned: !packing.isSigned,\r\n                    srcSize: n\r\n                },\r\n                result.encodings[0]\r\n            ],\r\n            data: result.data\r\n        };\r\n    }\r\n    /**\r\n     * Packs Int32 array. The packing level is determined automatically to either 1-, 2-, or 4-byte words.\r\n     */\r\n    function integerPacking(data) {\r\n        if (!(data instanceof Int32Array)) {\r\n            throw new Error('Integer packing can only be applied to Int32 data.');\r\n        }\r\n        var packing = determinePacking(data);\r\n        if (packing.bytesPerElement === 4) {\r\n            // no packing done, Int32 encoding will be used\r\n            return byteArray(data);\r\n        }\r\n        return _integerPacking(data, packing);\r\n    }\r\n    ArrayEncoding.integerPacking = integerPacking;\r\n    function stringArray(data) {\r\n        var map = Object.create(null);\r\n        var strings = [];\r\n        var accLength = 0;\r\n        var offsets = util_1.ChunkedArray.create(Int32Array, 1, Math.min(1024, data.length < 32 ? data.length + 1 : Math.round(data.length / 8) + 1));\r\n        var output = new Int32Array(data.length);\r\n        util_1.ChunkedArray.add(offsets, 0);\r\n        var i = 0;\r\n        for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\r\n            var s = data_1[_i];\r\n            // handle null strings.\r\n            if (s === null || s === void 0) {\r\n                output[i++] = -1;\r\n                continue;\r\n            }\r\n            var index = map[s];\r\n            if (index === void 0) {\r\n                // increment the length\r\n                accLength += s.length;\r\n                // store the string and index\r\n                index = strings.length;\r\n                strings[index] = s;\r\n                map[s] = index;\r\n                // write the offset\r\n                util_1.ChunkedArray.add(offsets, accLength);\r\n            }\r\n            output[i++] = index;\r\n        }\r\n        var encOffsets = ArrayEncoder.by(delta).and(integerPacking).encode(util_1.ChunkedArray.compact(offsets));\r\n        var encOutput = ArrayEncoder.by(delta).and(runLength).and(integerPacking).encode(output);\r\n        return {\r\n            encodings: [{ kind: 'StringArray', dataEncoding: encOutput.encoding, stringData: strings.join(''), offsetEncoding: encOffsets.encoding, offsets: encOffsets.data }],\r\n            data: encOutput.data\r\n        };\r\n    }\r\n    ArrayEncoding.stringArray = stringArray;\r\n    var _a, _b;\r\n})(ArrayEncoding = exports.ArrayEncoding || (exports.ArrayEncoding = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/binary-cif/array-encoder.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/binary-cif/decoder.js":
+/*!****************************************************************!*\
+  !*** ./build/node_modules/mol-io/common/binary-cif/decoder.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * From CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Fixed point, delta, RLE, integer packing adopted from https://github.com/rcsb/mmtf-javascript/\r\n * by Alexander Rose <alexander.rose@weirdbyte.de>, MIT License, Copyright (c) 2016\r\n */\r\nfunction decode(data) {\r\n    var current = data.data;\r\n    for (var i = data.encoding.length - 1; i >= 0; i--) {\r\n        current = decodeStep(current, data.encoding[i]);\r\n    }\r\n    return current;\r\n}\r\nexports.default = decode;\r\nfunction decodeStep(data, encoding) {\r\n    switch (encoding.kind) {\r\n        case 'ByteArray': {\r\n            switch (encoding.type) {\r\n                case 4 /* Uint8 */: return data;\r\n                case 1 /* Int8 */: return int8(data);\r\n                case 2 /* Int16 */: return int16(data);\r\n                case 5 /* Uint16 */: return uint16(data);\r\n                case 3 /* Int32 */: return int32(data);\r\n                case 6 /* Uint32 */: return uint32(data);\r\n                case 32 /* Float32 */: return float32(data);\r\n                case 33 /* Float64 */: return float64(data);\r\n                default: throw new Error('Unsupported ByteArray type.');\r\n            }\r\n        }\r\n        case 'FixedPoint': return fixedPoint(data, encoding);\r\n        case 'IntervalQuantization': return intervalQuantization(data, encoding);\r\n        case 'RunLength': return runLength(data, encoding);\r\n        case 'Delta': return delta(data, encoding);\r\n        case 'IntegerPacking': return integerPacking(data, encoding);\r\n        case 'StringArray': return stringArray(data, encoding);\r\n    }\r\n}\r\nfunction getIntArray(type, size) {\r\n    switch (type) {\r\n        case 1 /* Int8 */: return new Int8Array(size);\r\n        case 2 /* Int16 */: return new Int16Array(size);\r\n        case 3 /* Int32 */: return new Int32Array(size);\r\n        case 4 /* Uint8 */: return new Uint8Array(size);\r\n        case 5 /* Uint16 */: return new Uint16Array(size);\r\n        case 6 /* Uint32 */: return new Uint32Array(size);\r\n        default: throw new Error('Unsupported integer data type.');\r\n    }\r\n}\r\nfunction getFloatArray(type, size) {\r\n    switch (type) {\r\n        case 32 /* Float32 */: return new Float32Array(size);\r\n        case 33 /* Float64 */: return new Float64Array(size);\r\n        default: throw new Error('Unsupported floating data type.');\r\n    }\r\n}\r\n/* http://stackoverflow.com/questions/7869752/javascript-typed-arrays-and-endianness */\r\nvar isLittleEndian = (function () {\r\n    var arrayBuffer = new ArrayBuffer(2);\r\n    var uint8Array = new Uint8Array(arrayBuffer);\r\n    var uint16array = new Uint16Array(arrayBuffer);\r\n    uint8Array[0] = 0xAA;\r\n    uint8Array[1] = 0xBB;\r\n    if (uint16array[0] === 0xBBAA)\r\n        return true;\r\n    return false;\r\n})();\r\nfunction int8(data) { return new Int8Array(data.buffer, data.byteOffset); }\r\nfunction flipByteOrder(data, bytes) {\r\n    var buffer = new ArrayBuffer(data.length);\r\n    var ret = new Uint8Array(buffer);\r\n    for (var i = 0, n = data.length; i < n; i += bytes) {\r\n        for (var j = 0; j < bytes; j++) {\r\n            ret[i + bytes - j - 1] = data[i + j];\r\n        }\r\n    }\r\n    return buffer;\r\n}\r\nfunction view(data, byteSize, c) {\r\n    if (isLittleEndian)\r\n        return new c(data.buffer);\r\n    return new c(flipByteOrder(data, byteSize));\r\n}\r\nfunction int16(data) { return view(data, 2, Int16Array); }\r\nfunction uint16(data) { return view(data, 2, Uint16Array); }\r\nfunction int32(data) { return view(data, 4, Int32Array); }\r\nfunction uint32(data) { return view(data, 4, Uint32Array); }\r\nfunction float32(data) { return view(data, 4, Float32Array); }\r\nfunction float64(data) { return view(data, 8, Float64Array); }\r\nfunction fixedPoint(data, encoding) {\r\n    var n = data.length;\r\n    var output = getFloatArray(encoding.srcType, n);\r\n    var f = 1 / encoding.factor;\r\n    for (var i = 0; i < n; i++) {\r\n        output[i] = f * data[i];\r\n    }\r\n    return output;\r\n}\r\nfunction intervalQuantization(data, encoding) {\r\n    var n = data.length;\r\n    var output = getFloatArray(encoding.srcType, n);\r\n    var delta = (encoding.max - encoding.min) / (encoding.numSteps - 1);\r\n    var min = encoding.min;\r\n    for (var i = 0; i < n; i++) {\r\n        output[i] = min + delta * data[i];\r\n    }\r\n    return output;\r\n}\r\nfunction runLength(data, encoding) {\r\n    var output = getIntArray(encoding.srcType, encoding.srcSize);\r\n    var dataOffset = 0;\r\n    for (var i = 0, il = data.length; i < il; i += 2) {\r\n        var value = data[i]; // value to be repeated\r\n        var length_1 = data[i + 1]; // number of repeats\r\n        for (var j = 0; j < length_1; ++j) {\r\n            output[dataOffset++] = value;\r\n        }\r\n    }\r\n    return output;\r\n}\r\nfunction delta(data, encoding) {\r\n    var n = data.length;\r\n    var output = getIntArray(encoding.srcType, n);\r\n    if (!n)\r\n        return data;\r\n    output[0] = data[0] + (encoding.origin | 0);\r\n    for (var i = 1; i < n; ++i) {\r\n        output[i] = data[i] + output[i - 1];\r\n    }\r\n    return output;\r\n}\r\nfunction integerPackingSigned(data, encoding) {\r\n    var upperLimit = encoding.byteCount === 1 ? 0x7F : 0x7FFF;\r\n    var lowerLimit = -upperLimit - 1;\r\n    var n = data.length;\r\n    var output = new Int32Array(encoding.srcSize);\r\n    var i = 0;\r\n    var j = 0;\r\n    while (i < n) {\r\n        var value = 0, t = data[i];\r\n        while (t === upperLimit || t === lowerLimit) {\r\n            value += t;\r\n            i++;\r\n            t = data[i];\r\n        }\r\n        value += t;\r\n        output[j] = value;\r\n        i++;\r\n        j++;\r\n    }\r\n    return output;\r\n}\r\nfunction integerPackingUnsigned(data, encoding) {\r\n    var upperLimit = encoding.byteCount === 1 ? 0xFF : 0xFFFF;\r\n    var n = data.length;\r\n    var output = new Int32Array(encoding.srcSize);\r\n    var i = 0;\r\n    var j = 0;\r\n    while (i < n) {\r\n        var value = 0, t = data[i];\r\n        while (t === upperLimit) {\r\n            value += t;\r\n            i++;\r\n            t = data[i];\r\n        }\r\n        value += t;\r\n        output[j] = value;\r\n        i++;\r\n        j++;\r\n    }\r\n    return output;\r\n}\r\nfunction integerPacking(data, encoding) {\r\n    if (data.length === encoding.srcSize)\r\n        return data;\r\n    return encoding.isUnsigned ? integerPackingUnsigned(data, encoding) : integerPackingSigned(data, encoding);\r\n}\r\nfunction stringArray(data, encoding) {\r\n    var offsets = decode({ encoding: encoding.offsetEncoding, data: encoding.offsets });\r\n    var indices = decode({ encoding: encoding.dataEncoding, data: data });\r\n    var str = encoding.stringData;\r\n    var strings = new Array(offsets.length);\r\n    strings[0] = '';\r\n    for (var i = 1, _i = offsets.length; i < _i; i++) {\r\n        strings[i] = str.substring(offsets[i - 1], offsets[i]);\r\n    }\r\n    var offset = 0;\r\n    var result = new Array(indices.length);\r\n    for (var i = 0, _i = indices.length; i < _i; i++) {\r\n        result[offset++] = strings[indices[i] + 1];\r\n    }\r\n    return result;\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/binary-cif/decoder.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/binary-cif/encoding.js":
+/*!*****************************************************************!*\
+  !*** ./build/node_modules/mol-io/common/binary-cif/encoding.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * From CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.VERSION = '0.3.0';\r\nvar Encoding;\r\n(function (Encoding) {\r\n    function getDataType(data) {\r\n        var srcType;\r\n        if (data instanceof Int8Array)\r\n            srcType = 1 /* Int8 */;\r\n        else if (data instanceof Int16Array)\r\n            srcType = 2 /* Int16 */;\r\n        else if (data instanceof Int32Array)\r\n            srcType = 3 /* Int32 */;\r\n        else if (data instanceof Uint8Array)\r\n            srcType = 4 /* Uint8 */;\r\n        else if (data instanceof Uint16Array)\r\n            srcType = 5 /* Uint16 */;\r\n        else if (data instanceof Uint32Array)\r\n            srcType = 6 /* Uint32 */;\r\n        else if (data instanceof Float32Array)\r\n            srcType = 32 /* Float32 */;\r\n        else if (data instanceof Float64Array)\r\n            srcType = 33 /* Float64 */;\r\n        else\r\n            throw new Error('Unsupported integer data type.');\r\n        return srcType;\r\n    }\r\n    Encoding.getDataType = getDataType;\r\n    function isSignedIntegerDataType(data) {\r\n        return data instanceof Int8Array || data instanceof Int16Array || data instanceof Int32Array;\r\n    }\r\n    Encoding.isSignedIntegerDataType = isSignedIntegerDataType;\r\n})(Encoding = exports.Encoding || (exports.Encoding = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/binary-cif/encoding.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/msgpack/decode.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-io/common/msgpack/decode.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/*\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Adapted from https://github.com/rcsb/mmtf-javascript\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar utf8_1 = __webpack_require__(/*! ../utf8 */ \"./build/node_modules/mol-io/common/utf8.js\");\r\nfunction decode(buffer) {\r\n    return parse({ buffer: buffer, offset: 0, dataView: new DataView(buffer.buffer) });\r\n}\r\nexports.default = decode;\r\n/**\r\n * decode all key-value pairs of a map into an object\r\n * @param  {Integer} length - number of key-value pairs\r\n * @return {Object} decoded map\r\n */\r\nfunction map(state, length) {\r\n    var value = {};\r\n    for (var i = 0; i < length; i++) {\r\n        var key = parse(state);\r\n        value[key] = parse(state);\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * decode binary array\r\n * @param  {Integer} length - number of elements in the array\r\n * @return {Uint8Array} decoded array\r\n */\r\nfunction bin(state, length) {\r\n    // This approach to binary parsing wastes a bit of memory to trade for speed compared to:\r\n    //\r\n    //   let value = buffer.subarray(offset, offset + length); //new Uint8Array(buffer.buffer, offset, length);\r\n    //\r\n    // It turns out that using the view created by subarray probably uses DataView\r\n    // in the background, which causes the element access to be several times slower\r\n    // than creating the new byte array.\r\n    var value = new Uint8Array(length);\r\n    var o = state.offset;\r\n    for (var i = 0; i < length; i++)\r\n        value[i] = state.buffer[i + o];\r\n    state.offset += length;\r\n    return value;\r\n}\r\n/**\r\n * decode string\r\n * @param  {Integer} length - number string characters\r\n * @return {String} decoded string\r\n */\r\nfunction str(state, length) {\r\n    var value = utf8_1.utf8Read(state.buffer, state.offset, length);\r\n    state.offset += length;\r\n    return value;\r\n}\r\n/**\r\n     * decode array\r\n     * @param  {Integer} length - number of array elements\r\n     * @return {Array} decoded array\r\n     */\r\nfunction array(state, length) {\r\n    var value = new Array(length);\r\n    for (var i = 0; i < length; i++) {\r\n        value[i] = parse(state);\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * recursively parse the MessagePack data\r\n * @return {Object|Array|String|Number|Boolean|null} decoded MessagePack data\r\n */\r\nfunction parse(state) {\r\n    var type = state.buffer[state.offset];\r\n    var value, length;\r\n    // Positive FixInt\r\n    if ((type & 0x80) === 0x00) {\r\n        state.offset++;\r\n        return type;\r\n    }\r\n    // FixMap\r\n    if ((type & 0xf0) === 0x80) {\r\n        length = type & 0x0f;\r\n        state.offset++;\r\n        return map(state, length);\r\n    }\r\n    // FixArray\r\n    if ((type & 0xf0) === 0x90) {\r\n        length = type & 0x0f;\r\n        state.offset++;\r\n        return array(state, length);\r\n    }\r\n    // FixStr\r\n    if ((type & 0xe0) === 0xa0) {\r\n        length = type & 0x1f;\r\n        state.offset++;\r\n        return str(state, length);\r\n    }\r\n    // Negative FixInt\r\n    if ((type & 0xe0) === 0xe0) {\r\n        value = state.dataView.getInt8(state.offset);\r\n        state.offset++;\r\n        return value;\r\n    }\r\n    switch (type) {\r\n        // nil\r\n        case 0xc0:\r\n            state.offset++;\r\n            return null;\r\n        // false\r\n        case 0xc2:\r\n            state.offset++;\r\n            return false;\r\n        // true\r\n        case 0xc3:\r\n            state.offset++;\r\n            return true;\r\n        // bin 8\r\n        case 0xc4:\r\n            length = state.dataView.getUint8(state.offset + 1);\r\n            state.offset += 2;\r\n            return bin(state, length);\r\n        // bin 16\r\n        case 0xc5:\r\n            length = state.dataView.getUint16(state.offset + 1);\r\n            state.offset += 3;\r\n            return bin(state, length);\r\n        // bin 32\r\n        case 0xc6:\r\n            length = state.dataView.getUint32(state.offset + 1);\r\n            state.offset += 5;\r\n            return bin(state, length);\r\n        // float 32\r\n        case 0xca:\r\n            value = state.dataView.getFloat32(state.offset + 1);\r\n            state.offset += 5;\r\n            return value;\r\n        // float 64\r\n        case 0xcb:\r\n            value = state.dataView.getFloat64(state.offset + 1);\r\n            state.offset += 9;\r\n            return value;\r\n        // uint8\r\n        case 0xcc:\r\n            value = state.buffer[state.offset + 1];\r\n            state.offset += 2;\r\n            return value;\r\n        // uint 16\r\n        case 0xcd:\r\n            value = state.dataView.getUint16(state.offset + 1);\r\n            state.offset += 3;\r\n            return value;\r\n        // uint 32\r\n        case 0xce:\r\n            value = state.dataView.getUint32(state.offset + 1);\r\n            state.offset += 5;\r\n            return value;\r\n        // int 8\r\n        case 0xd0:\r\n            value = state.dataView.getInt8(state.offset + 1);\r\n            state.offset += 2;\r\n            return value;\r\n        // int 16\r\n        case 0xd1:\r\n            value = state.dataView.getInt16(state.offset + 1);\r\n            state.offset += 3;\r\n            return value;\r\n        // int 32\r\n        case 0xd2:\r\n            value = state.dataView.getInt32(state.offset + 1);\r\n            state.offset += 5;\r\n            return value;\r\n        // str 8\r\n        case 0xd9:\r\n            length = state.dataView.getUint8(state.offset + 1);\r\n            state.offset += 2;\r\n            return str(state, length);\r\n        // str 16\r\n        case 0xda:\r\n            length = state.dataView.getUint16(state.offset + 1);\r\n            state.offset += 3;\r\n            return str(state, length);\r\n        // str 32\r\n        case 0xdb:\r\n            length = state.dataView.getUint32(state.offset + 1);\r\n            state.offset += 5;\r\n            return str(state, length);\r\n        // array 16\r\n        case 0xdc:\r\n            length = state.dataView.getUint16(state.offset + 1);\r\n            state.offset += 3;\r\n            return array(state, length);\r\n        // array 32\r\n        case 0xdd:\r\n            length = state.dataView.getUint32(state.offset + 1);\r\n            state.offset += 5;\r\n            return array(state, length);\r\n        // map 16:\r\n        case 0xde:\r\n            length = state.dataView.getUint16(state.offset + 1);\r\n            state.offset += 3;\r\n            return map(state, length);\r\n        // map 32\r\n        case 0xdf:\r\n            length = state.dataView.getUint32(state.offset + 1);\r\n            state.offset += 5;\r\n            return map(state, length);\r\n    }\r\n    throw new Error('Unknown type 0x' + type.toString(16));\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/msgpack/decode.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/common/utf8.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-io/common/utf8.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Adapted from https://github.com/rcsb/mmtf-javascript\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction utf8Write(data, offset, str) {\r\n    for (var i = 0, l = str.length; i < l; i++) {\r\n        var codePoint = str.charCodeAt(i);\r\n        // One byte of UTF-8\r\n        if (codePoint < 0x80) {\r\n            data[offset++] = codePoint >>> 0 & 0x7f | 0x00;\r\n            continue;\r\n        }\r\n        // Two bytes of UTF-8\r\n        if (codePoint < 0x800) {\r\n            data[offset++] = codePoint >>> 6 & 0x1f | 0xc0;\r\n            data[offset++] = codePoint >>> 0 & 0x3f | 0x80;\r\n            continue;\r\n        }\r\n        // Three bytes of UTF-8.\r\n        if (codePoint < 0x10000) {\r\n            data[offset++] = codePoint >>> 12 & 0x0f | 0xe0;\r\n            data[offset++] = codePoint >>> 6 & 0x3f | 0x80;\r\n            data[offset++] = codePoint >>> 0 & 0x3f | 0x80;\r\n            continue;\r\n        }\r\n        // Four bytes of UTF-8\r\n        if (codePoint < 0x110000) {\r\n            data[offset++] = codePoint >>> 18 & 0x07 | 0xf0;\r\n            data[offset++] = codePoint >>> 12 & 0x3f | 0x80;\r\n            data[offset++] = codePoint >>> 6 & 0x3f | 0x80;\r\n            data[offset++] = codePoint >>> 0 & 0x3f | 0x80;\r\n            continue;\r\n        }\r\n        throw new Error('bad codepoint ' + codePoint);\r\n    }\r\n}\r\nexports.utf8Write = utf8Write;\r\nvar __chars = function () {\r\n    var data = [];\r\n    for (var i = 0; i < 1024; i++)\r\n        data[i] = String.fromCharCode(i);\r\n    return data;\r\n}();\r\nfunction throwError(err) {\r\n    throw new Error(err);\r\n}\r\nfunction utf8Read(data, offset, length) {\r\n    var chars = __chars;\r\n    var str = void 0, chunk = [], chunkSize = 512, chunkOffset = 0;\r\n    for (var i = offset, end = offset + length; i < end; i++) {\r\n        var byte = data[i];\r\n        // One byte character\r\n        if ((byte & 0x80) === 0x00) {\r\n            chunk[chunkOffset++] = chars[byte];\r\n        }\r\n        // Two byte character\r\n        else if ((byte & 0xe0) === 0xc0) {\r\n            chunk[chunkOffset++] = chars[((byte & 0x0f) << 6) | (data[++i] & 0x3f)];\r\n        }\r\n        // Three byte character\r\n        else if ((byte & 0xf0) === 0xe0) {\r\n            chunk[chunkOffset++] = String.fromCharCode(((byte & 0x0f) << 12) |\r\n                ((data[++i] & 0x3f) << 6) |\r\n                ((data[++i] & 0x3f) << 0));\r\n        }\r\n        // Four byte character\r\n        else if ((byte & 0xf8) === 0xf0) {\r\n            chunk[chunkOffset++] = String.fromCharCode(((byte & 0x07) << 18) |\r\n                ((data[++i] & 0x3f) << 12) |\r\n                ((data[++i] & 0x3f) << 6) |\r\n                ((data[++i] & 0x3f) << 0));\r\n        }\r\n        else\r\n            throwError('Invalid byte ' + byte.toString(16));\r\n        if (chunkOffset === chunkSize) {\r\n            str = str || [];\r\n            str[str.length] = chunk.join('');\r\n            chunkOffset = 0;\r\n        }\r\n    }\r\n    if (!str)\r\n        return chunk.slice(0, chunkOffset).join('');\r\n    if (chunkOffset > 0) {\r\n        str[str.length] = chunk.slice(0, chunkOffset).join('');\r\n    }\r\n    return str.join('');\r\n}\r\nexports.utf8Read = utf8Read;\r\nfunction utf8ByteCount(str) {\r\n    var count = 0;\r\n    for (var i = 0, l = str.length; i < l; i++) {\r\n        var codePoint = str.charCodeAt(i);\r\n        if (codePoint < 0x80) {\r\n            count += 1;\r\n            continue;\r\n        }\r\n        if (codePoint < 0x800) {\r\n            count += 2;\r\n            continue;\r\n        }\r\n        if (codePoint < 0x10000) {\r\n            count += 3;\r\n            continue;\r\n        }\r\n        if (codePoint < 0x110000) {\r\n            count += 4;\r\n            continue;\r\n        }\r\n        throwError('bad codepoint ' + codePoint);\r\n    }\r\n    return count;\r\n}\r\nexports.utf8ByteCount = utf8ByteCount;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/common/utf8.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar parser_1 = __webpack_require__(/*! ./cif/text/parser */ \"./build/node_modules/mol-io/reader/cif/text/parser.js\");\r\nvar parser_2 = __webpack_require__(/*! ./cif/binary/parser */ \"./build/node_modules/mol-io/reader/cif/binary/parser.js\");\r\nvar schema_1 = __webpack_require__(/*! ./cif/schema */ \"./build/node_modules/mol-io/reader/cif/schema.js\");\r\nvar mmcif_1 = __webpack_require__(/*! ./cif/schema/mmcif */ \"./build/node_modules/mol-io/reader/cif/schema/mmcif.js\");\r\nvar ccd_1 = __webpack_require__(/*! ./cif/schema/ccd */ \"./build/node_modules/mol-io/reader/cif/schema/ccd.js\");\r\nvar bird_1 = __webpack_require__(/*! ./cif/schema/bird */ \"./build/node_modules/mol-io/reader/cif/schema/bird.js\");\r\nvar dic_1 = __webpack_require__(/*! ./cif/schema/dic */ \"./build/node_modules/mol-io/reader/cif/schema/dic.js\");\r\nvar density_server_1 = __webpack_require__(/*! ./cif/schema/density-server */ \"./build/node_modules/mol-io/reader/cif/schema/density-server.js\");\r\nexports.default = {\r\n    parse: function (data) { return typeof data === 'string' ? parser_1.default(data) : parser_2.default(data); },\r\n    parseText: parser_1.default,\r\n    parseBinary: parser_2.default,\r\n    toDatabaseCollection: schema_1.toDatabaseCollection,\r\n    toDatabase: schema_1.toDatabase,\r\n    schema: {\r\n        mmCIF: function (frame) { return schema_1.toDatabase(mmcif_1.mmCIF_Schema, frame); },\r\n        CCD: function (frame) { return schema_1.toDatabase(ccd_1.CCD_Schema, frame); },\r\n        BIRD: function (frame) { return schema_1.toDatabase(bird_1.BIRD_Schema, frame); },\r\n        dic: function (frame) { return schema_1.toDatabase(dic_1.dic_Schema, frame); },\r\n        densityServer: function (frame) { return schema_1.toDatabase(density_server_1.DensityServer_Data_Schema, frame); }\r\n    }\r\n};\r\n__export(__webpack_require__(/*! ./cif/data-model */ \"./build/node_modules/mol-io/reader/cif/data-model.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/binary/field.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/binary/field.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar binary_cif_1 = __webpack_require__(/*! ../../../common/binary-cif */ \"./build/node_modules/mol-io/common/binary-cif.js\");\r\nvar number_parser_1 = __webpack_require__(/*! ../../common/text/number-parser */ \"./build/node_modules/mol-io/reader/common/text/number-parser.js\");\r\nfunction Field(column) {\r\n    var mask = column.mask ? binary_cif_1.decode(column.mask) : void 0;\r\n    var data = binary_cif_1.decode(column.data);\r\n    var isNumeric = db_1.ColumnHelpers.isTypedArray(data);\r\n    var str = isNumeric\r\n        ? mask\r\n            ? function (row) { return mask[row] === 0 /* Present */ ? '' + data[row] : ''; }\r\n            : function (row) { return '' + data[row]; }\r\n        : mask\r\n            ? function (row) { return mask[row] === 0 /* Present */ ? data[row] : ''; }\r\n            : function (row) { return data[row]; };\r\n    var int = isNumeric\r\n        ? function (row) { return data[row]; }\r\n        : function (row) { var v = data[row]; return number_parser_1.parseInt(v, 0, v.length); };\r\n    var float = isNumeric\r\n        ? function (row) { return data[row]; }\r\n        : function (row) { var v = data[row]; return number_parser_1.parseFloat(v, 0, v.length); };\r\n    var valueKind = mask\r\n        ? function (row) { return mask[row]; }\r\n        : function (row) { return 0 /* Present */; };\r\n    var rowCount = data.length;\r\n    return {\r\n        '@array': data,\r\n        isDefined: true,\r\n        rowCount: rowCount,\r\n        str: str,\r\n        int: int,\r\n        float: float,\r\n        valueKind: valueKind,\r\n        areValuesEqual: function (rowA, rowB) { return data[rowA] === data[rowB]; },\r\n        toStringArray: function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, str, params); },\r\n        toIntArray: isNumeric\r\n            ? function (params) { return db_1.ColumnHelpers.typedArrayWindow(data, params); }\r\n            : function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, int, params); },\r\n        toFloatArray: isNumeric\r\n            ? function (params) { return db_1.ColumnHelpers.typedArrayWindow(data, params); }\r\n            : function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, float, params); }\r\n    };\r\n}\r\nexports.default = Field;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/binary/field.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/binary/parser.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/binary/parser.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Data = __webpack_require__(/*! ../data-model */ \"./build/node_modules/mol-io/reader/cif/data-model.js\");\r\nvar field_1 = __webpack_require__(/*! ./field */ \"./build/node_modules/mol-io/reader/cif/binary/field.js\");\r\nvar result_1 = __webpack_require__(/*! ../../result */ \"./build/node_modules/mol-io/reader/result.js\");\r\nvar decode_1 = __webpack_require__(/*! ../../../common/msgpack/decode */ \"./build/node_modules/mol-io/common/msgpack/decode.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nfunction checkVersions(min, current) {\r\n    for (var i = 0; i < 2; i++) {\r\n        if (min[i] > current[i])\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nfunction Category(data) {\r\n    var map = Object.create(null);\r\n    var cache = Object.create(null);\r\n    for (var _i = 0, _a = data.columns; _i < _a.length; _i++) {\r\n        var col = _a[_i];\r\n        map[col.name] = col;\r\n    }\r\n    return {\r\n        rowCount: data.rowCount,\r\n        name: data.name.substr(1),\r\n        fieldNames: data.columns.map(function (c) { return c.name; }),\r\n        getField: function (name) {\r\n            var col = map[name];\r\n            if (!col)\r\n                return void 0;\r\n            if (!!cache[name])\r\n                return cache[name];\r\n            cache[name] = field_1.default(col);\r\n            return cache[name];\r\n        }\r\n    };\r\n}\r\nfunction parse(data) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Parse BinaryCIF', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var minVersion, unpacked, file;\r\n        return __generator(this, function (_a) {\r\n            minVersion = [0, 3];\r\n            try {\r\n                unpacked = decode_1.default(data);\r\n                if (!checkVersions(minVersion, unpacked.version.match(/(\\d)\\.(\\d)\\.\\d/).slice(1).map(function (v) { return +v; }))) {\r\n                    return [2 /*return*/, result_1.default.error(\"Unsupported format version. Current \" + unpacked.version + \", required \" + minVersion.join('.') + \".\")];\r\n                }\r\n                file = Data.File(unpacked.dataBlocks.map(function (block) {\r\n                    var cats = Object.create(null);\r\n                    for (var _i = 0, _a = block.categories; _i < _a.length; _i++) {\r\n                        var cat = _a[_i];\r\n                        cats[cat.name.substr(1)] = Category(cat);\r\n                    }\r\n                    return Data.Block(block.categories.map(function (c) { return c.name.substr(1); }), cats, block.header);\r\n                }));\r\n                return [2 /*return*/, result_1.default.success(file)];\r\n            }\r\n            catch (e) {\r\n                return [2 /*return*/, result_1.default.error('' + e)];\r\n            }\r\n            return [2 /*return*/];\r\n        });\r\n    }); });\r\n}\r\nexports.default = parse;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/binary/parser.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/data-model.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/data-model.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction File(blocks, name) {\r\n    return { name: name, blocks: blocks };\r\n}\r\nexports.File = File;\r\nfunction Block(categoryNames, categories, header, saveFrames) {\r\n    if (saveFrames === void 0) { saveFrames = []; }\r\n    return { categoryNames: categoryNames, header: header, categories: categories, saveFrames: saveFrames };\r\n}\r\nexports.Block = Block;\r\nfunction SafeFrame(categoryNames, categories, header) {\r\n    return { categoryNames: categoryNames, header: header, categories: categories };\r\n}\r\nexports.SafeFrame = SafeFrame;\r\nfunction Category(name, rowCount, fieldNames, fields) {\r\n    return { rowCount: rowCount, name: name, fieldNames: fieldNames.slice(), getField: function (name) { return fields[name]; } };\r\n}\r\nexports.Category = Category;\r\n(function (Category) {\r\n    function empty(name) {\r\n        return { rowCount: 0, name: name, fieldNames: [], getField: function (name) { return void 0; } };\r\n    }\r\n    Category.empty = empty;\r\n    ;\r\n})(Category = exports.Category || (exports.Category = {}));\r\nfunction getTensor(category, field, space, row, zeroIndexed) {\r\n    var ret = space.create();\r\n    var offset = zeroIndexed ? 0 : 1;\r\n    if (space.rank === 1) {\r\n        var rows = space.dimensions[0];\r\n        for (var i = 0; i < rows; i++) {\r\n            var f = category.getField(field + \"[\" + (i + offset) + \"]\");\r\n            space.set(ret, i, !!f ? f.float(row) : 0.0);\r\n        }\r\n    }\r\n    else if (space.rank === 2) {\r\n        var rows = space.dimensions[0], cols = space.dimensions[1];\r\n        for (var i = 0; i < rows; i++) {\r\n            for (var j = 0; j < cols; j++) {\r\n                var f = category.getField(field + \"[\" + (i + offset) + \"][\" + (j + offset) + \"]\");\r\n                space.set(ret, i, j, !!f ? f.float(row) : 0.0);\r\n            }\r\n        }\r\n    }\r\n    else if (space.rank === 3) {\r\n        var d0 = space.dimensions[0], d1 = space.dimensions[1], d2 = space.dimensions[2];\r\n        for (var i = 0; i < d0; i++) {\r\n            for (var j = 0; j < d1; j++) {\r\n                for (var k = 0; k < d2; k++) {\r\n                    var f = category.getField(field + \"[\" + (i + offset) + \"][\" + (j + offset) + \"][\" + (k + offset) + \"]\");\r\n                    space.set(ret, i, j, k, !!f ? f.float(row) : 0.0);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    else\r\n        throw new Error('Tensors with rank > 3 or rank 0 are currently not supported.');\r\n    return ret;\r\n}\r\nexports.getTensor = getTensor;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/data-model.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nvar Data = __webpack_require__(/*! ./data-model */ \"./build/node_modules/mol-io/reader/cif/data-model.js\");\r\nfunction toDatabaseCollection(schema, file) {\r\n    var dbc = {};\r\n    for (var _i = 0, _a = file.blocks; _i < _a.length; _i++) {\r\n        var data = _a[_i];\r\n        dbc[data.header] = toDatabase(schema, data);\r\n    }\r\n    return dbc;\r\n}\r\nexports.toDatabaseCollection = toDatabaseCollection;\r\nfunction toDatabase(schema, frame) {\r\n    return createDatabase(schema, frame);\r\n}\r\nexports.toDatabase = toDatabase;\r\nfunction toTable(schema, category) {\r\n    return new CategoryTable(category, schema, true);\r\n}\r\nexports.toTable = toTable;\r\nfunction getColumnCtor(t) {\r\n    switch (t.valueType) {\r\n        case 'str': return function (f, c, k) { return createColumn(t, f, f.str, f.toStringArray); };\r\n        case 'int': return function (f, c, k) { return createColumn(t, f, f.int, f.toIntArray); };\r\n        case 'float': return function (f, c, k) { return createColumn(t, f, f.float, f.toFloatArray); };\r\n        case 'list': throw new Error('Use createListColumn instead.');\r\n        case 'tensor': throw new Error('Use createTensorColumn instead.');\r\n    }\r\n}\r\nfunction createColumn(schema, field, value, toArray) {\r\n    return {\r\n        schema: schema,\r\n        '@array': field['@array'],\r\n        isDefined: field.isDefined,\r\n        rowCount: field.rowCount,\r\n        value: value,\r\n        valueKind: field.valueKind,\r\n        areValuesEqual: field.areValuesEqual,\r\n        toArray: toArray\r\n    };\r\n}\r\nfunction createListColumn(schema, category, key) {\r\n    var separator = schema.separator;\r\n    var itemParse = schema.itemParse;\r\n    var f = category.getField(key);\r\n    var value = f ? function (row) { return f.str(row).split(separator).map(function (x) { return itemParse(x.trim()); }).filter(function (x) { return !!x; }); } : function (row) { return []; };\r\n    var toArray = function (params) { return db_1.ColumnHelpers.createAndFillArray(category.rowCount, value, params); };\r\n    return {\r\n        schema: schema,\r\n        '@array': void 0,\r\n        isDefined: !!f,\r\n        rowCount: category.rowCount,\r\n        value: value,\r\n        valueKind: f ? f.valueKind : function () { return 1 /* NotPresent */; },\r\n        areValuesEqual: function (rowA, rowB) { return mol_util_1.arrayEqual(value(rowA), value(rowB)); },\r\n        toArray: toArray\r\n    };\r\n}\r\nfunction createTensorColumn(schema, category, key) {\r\n    var space = schema.space;\r\n    var zeroOffset = category.fieldNames.indexOf(key + \"[0]\") >= 0;\r\n    var fst = zeroOffset ? 0 : 1;\r\n    var firstFieldName;\r\n    switch (space.rank) {\r\n        case 1:\r\n            firstFieldName = key + \"[\" + fst + \"]\";\r\n            break;\r\n        case 2:\r\n            firstFieldName = key + \"[\" + fst + \"][\" + fst + \"]\";\r\n            break;\r\n        case 3:\r\n            firstFieldName = key + \"[\" + fst + \"][\" + fst + \"][\" + fst + \"]\";\r\n            break;\r\n        default: throw new Error('Tensors with rank > 3 or rank 0 are currently not supported.');\r\n    }\r\n    var first = category.getField(firstFieldName) || db_1.Column.Undefined(category.rowCount, schema);\r\n    var value = function (row) { return Data.getTensor(category, key, space, row, zeroOffset); };\r\n    var toArray = function (params) { return db_1.ColumnHelpers.createAndFillArray(category.rowCount, value, params); };\r\n    return {\r\n        schema: schema,\r\n        '@array': void 0,\r\n        isDefined: first.isDefined,\r\n        rowCount: category.rowCount,\r\n        value: value,\r\n        valueKind: first.valueKind,\r\n        areValuesEqual: function (rowA, rowB) { return linear_algebra_1.Tensor.areEqualExact(value(rowA), value(rowB)); },\r\n        toArray: toArray\r\n    };\r\n}\r\nvar CategoryTable = /** @class */ (function () {\r\n    function CategoryTable(category, schema, _isDefined) {\r\n        this._isDefined = _isDefined;\r\n        var fieldKeys = Object.keys(schema);\r\n        this._rowCount = category.rowCount;\r\n        this._columns = fieldKeys;\r\n        this._schema = schema;\r\n        var cache = Object.create(null);\r\n        var _loop_1 = function (k) {\r\n            Object.defineProperty(this_1, k, {\r\n                get: function () {\r\n                    if (cache[k])\r\n                        return cache[k];\r\n                    var fType = schema[k];\r\n                    if (fType.valueType === 'list') {\r\n                        cache[k] = createListColumn(fType, category, k);\r\n                    }\r\n                    else if (fType.valueType === 'tensor') {\r\n                        cache[k] = createTensorColumn(fType, category, k);\r\n                    }\r\n                    else {\r\n                        var ctor = getColumnCtor(fType);\r\n                        var field = category.getField(k);\r\n                        cache[k] = !!field ? ctor(field, category, k) : db_1.Column.Undefined(category.rowCount, fType);\r\n                    }\r\n                    return cache[k];\r\n                },\r\n                enumerable: true,\r\n                configurable: false\r\n            });\r\n        };\r\n        var this_1 = this;\r\n        for (var _i = 0, fieldKeys_1 = fieldKeys; _i < fieldKeys_1.length; _i++) {\r\n            var k = fieldKeys_1[_i];\r\n            _loop_1(k);\r\n        }\r\n    }\r\n    return CategoryTable;\r\n}());\r\nfunction createDatabase(schema, frame) {\r\n    var tables = Object.create(null);\r\n    for (var _i = 0, _a = Object.keys(schema); _i < _a.length; _i++) {\r\n        var k = _a[_i];\r\n        tables[k] = createTable(k, schema[k], frame);\r\n    }\r\n    return db_1.Database.ofTables(frame.header, schema, tables);\r\n}\r\nfunction createTable(key, schema, frame) {\r\n    var cat = frame.categories[key];\r\n    return new CategoryTable(cat || Data.Category.empty(key), schema, !!cat);\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema/bird.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema/bird.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Code-generated 'BIRD' schema file\r\n *\r\n * @author mol-star package (src/apps/schema-generator/generate)\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar Schema = db_1.Column.Schema;\r\nvar str = Schema.str;\r\nvar int = Schema.int;\r\nvar float = Schema.float;\r\n// const coord = Schema.coord;\r\nvar Aliased = Schema.Aliased;\r\n// const Matrix = Schema.Matrix;\r\n// const Vector = Schema.Vector;\r\n// const List = Schema.List;\r\nexports.BIRD_Schema = {\r\n    pdbx_reference_molecule: {\r\n        prd_id: str,\r\n        formula_weight: float,\r\n        formula: str,\r\n        type: Aliased(str),\r\n        type_evidence_code: str,\r\n        class: Aliased(str),\r\n        class_evidence_code: str,\r\n        name: str,\r\n        represent_as: Aliased(str),\r\n        chem_comp_id: str,\r\n        description: str,\r\n        representative_PDB_id_code: str,\r\n        release_status: Aliased(str),\r\n        replaces: str,\r\n        replaced_by: str,\r\n    },\r\n    pdbx_reference_entity_list: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        type: str,\r\n        details: str,\r\n        component_id: int,\r\n    },\r\n    pdbx_reference_entity_nonpoly: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        name: str,\r\n        chem_comp_id: str,\r\n    },\r\n    pdbx_reference_entity_link: {\r\n        link_id: int,\r\n        prd_id: str,\r\n        details: str,\r\n        ref_entity_id_1: str,\r\n        ref_entity_id_2: str,\r\n        entity_seq_num_1: int,\r\n        entity_seq_num_2: int,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        value_order: Aliased(str),\r\n        component_1: int,\r\n        component_2: int,\r\n        link_class: Aliased(str),\r\n    },\r\n    pdbx_reference_entity_poly_link: {\r\n        link_id: int,\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        component_id: int,\r\n        entity_seq_num_1: int,\r\n        entity_seq_num_2: int,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        value_order: Aliased(str),\r\n    },\r\n    pdbx_reference_entity_poly: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        type: Aliased(str),\r\n        db_code: str,\r\n        db_name: str,\r\n    },\r\n    pdbx_reference_entity_poly_seq: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        mon_id: str,\r\n        parent_mon_id: str,\r\n        num: int,\r\n        observed: Aliased(str),\r\n        hetero: Aliased(str),\r\n    },\r\n    pdbx_reference_entity_sequence: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        type: str,\r\n        NRP_flag: Aliased(str),\r\n        one_letter_codes: str,\r\n    },\r\n    pdbx_reference_entity_src_nat: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        ordinal: int,\r\n        organism_scientific: str,\r\n        taxid: str,\r\n        db_code: str,\r\n        db_name: str,\r\n    },\r\n    pdbx_prd_audit: {\r\n        prd_id: str,\r\n        date: str,\r\n        processing_site: str,\r\n        action_type: Aliased(str),\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema/bird.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema/ccd.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema/ccd.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Code-generated 'CCD' schema file\r\n *\r\n * @author mol-star package (src/apps/schema-generator/generate)\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar Schema = db_1.Column.Schema;\r\nvar str = Schema.str;\r\nvar int = Schema.int;\r\nvar float = Schema.float;\r\nvar coord = Schema.coord;\r\nvar Aliased = Schema.Aliased;\r\n// const Matrix = Schema.Matrix;\r\n// const Vector = Schema.Vector;\r\nvar List = Schema.List;\r\nexports.CCD_Schema = {\r\n    chem_comp: {\r\n        formula: str,\r\n        formula_weight: float,\r\n        id: str,\r\n        mon_nstd_parent_comp_id: List(',', function (x) { return x; }),\r\n        name: str,\r\n        one_letter_code: str,\r\n        three_letter_code: str,\r\n        type: Aliased(str),\r\n        pdbx_synonyms: str,\r\n        pdbx_type: str,\r\n        pdbx_ambiguous_flag: str,\r\n        pdbx_replaced_by: str,\r\n        pdbx_replaces: str,\r\n        pdbx_formal_charge: int,\r\n        pdbx_model_coordinates_details: str,\r\n        pdbx_model_coordinates_db_code: str,\r\n        pdbx_ideal_coordinates_details: str,\r\n        pdbx_ideal_coordinates_missing_flag: Aliased(str),\r\n        pdbx_model_coordinates_missing_flag: Aliased(str),\r\n        pdbx_initial_date: str,\r\n        pdbx_modified_date: str,\r\n        pdbx_processing_site: Aliased(str),\r\n    },\r\n    chem_comp_atom: {\r\n        alt_atom_id: str,\r\n        atom_id: str,\r\n        charge: int,\r\n        model_Cartn_x: coord,\r\n        model_Cartn_y: coord,\r\n        model_Cartn_z: coord,\r\n        comp_id: str,\r\n        type_symbol: str,\r\n        pdbx_align: int,\r\n        pdbx_ordinal: int,\r\n        pdbx_model_Cartn_x_ideal: coord,\r\n        pdbx_model_Cartn_y_ideal: coord,\r\n        pdbx_model_Cartn_z_ideal: coord,\r\n        pdbx_stereo_config: Aliased(str),\r\n        pdbx_aromatic_flag: Aliased(str),\r\n        pdbx_leaving_atom_flag: Aliased(str),\r\n    },\r\n    chem_comp_bond: {\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        comp_id: str,\r\n        value_order: Aliased(str),\r\n        pdbx_ordinal: int,\r\n        pdbx_stereo_config: Aliased(str),\r\n        pdbx_aromatic_flag: Aliased(str),\r\n    },\r\n    pdbx_chem_comp_descriptor: {\r\n        comp_id: str,\r\n        descriptor: str,\r\n        type: Aliased(str),\r\n        program: str,\r\n        program_version: str,\r\n    },\r\n    pdbx_chem_comp_identifier: {\r\n        comp_id: str,\r\n        identifier: str,\r\n        type: Aliased(str),\r\n        program: str,\r\n        program_version: str,\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema/ccd.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema/density-server.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema/density-server.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar Schema = db_1.Column.Schema;\r\nvar str = Schema.str;\r\nvar int = Schema.int;\r\nvar float = Schema.float;\r\nvar Aliased = Schema.Aliased;\r\nvar Vector = Schema.Vector;\r\nexports.DensityServer_Header_Schema = {\r\n    density_server_result: {\r\n        'server_version': str,\r\n        'datetime_utc': str,\r\n        'guid': str,\r\n        'is_empty': Aliased(str),\r\n        'has_error': Aliased(str),\r\n        'error': str,\r\n        'query_source_id': str,\r\n        'query_type': Aliased(str),\r\n        'query_box_type': Aliased(str),\r\n        'query_box_a': Vector(3),\r\n        'query_box_b': Vector(3)\r\n    }\r\n};\r\nexports.DensityServer_Data_Schema = {\r\n    volume_data_3d_info: {\r\n        'name': str,\r\n        // zero indexed axis order of the data\r\n        'axis_order': Vector(3, int),\r\n        // Origin in fractional coords\r\n        'origin': Vector(3),\r\n        // Dimension in fractional coords\r\n        'dimensions': Vector(3),\r\n        'sample_rate': int,\r\n        // number of samples along each axis\r\n        'sample_count': Vector(3, int),\r\n        'spacegroup_number': int,\r\n        'spacegroup_cell_size': Vector(3),\r\n        // angles in degrees\r\n        'spacegroup_cell_angles': Vector(3),\r\n        'mean_source': float,\r\n        'mean_sampled': float,\r\n        'sigma_source': float,\r\n        'sigma_sampled': float,\r\n        'min_source': float,\r\n        'min_sampled': float,\r\n        'max_source': float,\r\n        'max_sampled': float\r\n    },\r\n    volume_data_3d: {\r\n        values: float\r\n    }\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema/density-server.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema/dic.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema/dic.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar Schema = db_1.Column.Schema;\r\nvar str = Schema.str;\r\nvar float = Schema.float;\r\nvar datablock = {\r\n    id: str,\r\n    description: str\r\n};\r\nvar dictionary = {\r\n    title: str,\r\n    datablock_id: str,\r\n    version: str\r\n};\r\nvar dictionary_history = {\r\n    version: str,\r\n    update: str,\r\n    revision: str\r\n};\r\nvar sub_category = {\r\n    id: str,\r\n    description: str\r\n};\r\nvar category_group_list = {\r\n    id: str,\r\n    parent_id: str,\r\n    description: str\r\n};\r\nvar item_type_list = {\r\n    code: str,\r\n    primitive_code: str,\r\n    construct: str,\r\n    detail: str\r\n};\r\nvar item_units_list = {\r\n    code: str,\r\n    detail: str\r\n};\r\nvar item_units_conversion = {\r\n    from_code: str,\r\n    to_code: str,\r\n    operator: str,\r\n    factor: float\r\n};\r\n// TODO save frame dic schema\r\nexports.dic_Schema = {\r\n    datablock: datablock,\r\n    dictionary: dictionary,\r\n    dictionary_history: dictionary_history,\r\n    sub_category: sub_category,\r\n    category_group_list: category_group_list,\r\n    item_type_list: item_type_list,\r\n    item_units_list: item_units_list,\r\n    item_units_conversion: item_units_conversion\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema/dic.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/schema/mmcif.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/schema/mmcif.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Code-generated 'mmCIF' schema file. Dictionary versions: mmCIF 5.293, IHM 0.130.\r\n *\r\n * @author mol-star package (src/apps/schema-generator/generate)\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar Schema = db_1.Column.Schema;\r\nvar str = Schema.str;\r\nvar int = Schema.int;\r\nvar float = Schema.float;\r\nvar coord = Schema.coord;\r\nvar Aliased = Schema.Aliased;\r\nvar Matrix = Schema.Matrix;\r\nvar Vector = Schema.Vector;\r\nvar List = Schema.List;\r\nexports.mmCIF_Schema = {\r\n    atom_sites: {\r\n        entry_id: str,\r\n        fract_transf_matrix: Matrix(3, 3),\r\n        fract_transf_vector: Vector(3)\r\n    },\r\n    atom_site: {\r\n        auth_asym_id: str,\r\n        auth_atom_id: str,\r\n        auth_comp_id: str,\r\n        auth_seq_id: int,\r\n        B_iso_or_equiv: float,\r\n        Cartn_x: coord,\r\n        Cartn_y: coord,\r\n        Cartn_z: coord,\r\n        group_PDB: Aliased(str),\r\n        id: int,\r\n        label_alt_id: str,\r\n        label_asym_id: str,\r\n        label_atom_id: str,\r\n        label_comp_id: str,\r\n        label_entity_id: str,\r\n        label_seq_id: int,\r\n        occupancy: float,\r\n        type_symbol: str,\r\n        pdbx_PDB_ins_code: str,\r\n        pdbx_PDB_model_num: int,\r\n        pdbx_formal_charge: int,\r\n        ihm_model_id: int,\r\n    },\r\n    cell: {\r\n        angle_alpha: float,\r\n        angle_beta: float,\r\n        angle_gamma: float,\r\n        entry_id: str,\r\n        length_a: float,\r\n        length_b: float,\r\n        length_c: float,\r\n        Z_PDB: int,\r\n        pdbx_unique_axis: str,\r\n    },\r\n    chem_comp: {\r\n        formula: str,\r\n        formula_weight: float,\r\n        id: str,\r\n        mon_nstd_flag: Aliased(str),\r\n        name: str,\r\n        type: Aliased(str),\r\n        pdbx_synonyms: str,\r\n    },\r\n    chem_comp_bond: {\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        comp_id: str,\r\n        value_order: Aliased(str),\r\n        pdbx_ordinal: int,\r\n        pdbx_stereo_config: Aliased(str),\r\n        pdbx_aromatic_flag: Aliased(str),\r\n    },\r\n    entity: {\r\n        details: str,\r\n        formula_weight: float,\r\n        id: str,\r\n        src_method: Aliased(str),\r\n        type: Aliased(str),\r\n        pdbx_description: str,\r\n        pdbx_number_of_molecules: float,\r\n        pdbx_mutation: str,\r\n        pdbx_fragment: str,\r\n        pdbx_ec: List(',', function (x) { return x; }),\r\n    },\r\n    entity_poly_seq: {\r\n        entity_id: str,\r\n        num: int,\r\n        mon_id: str,\r\n        hetero: Aliased(str)\r\n    },\r\n    entry: {\r\n        id: str,\r\n    },\r\n    exptl: {\r\n        entry_id: str,\r\n        method: Aliased(str),\r\n    },\r\n    struct: {\r\n        entry_id: str,\r\n        title: str,\r\n    },\r\n    struct_asym: {\r\n        details: str,\r\n        entity_id: str,\r\n        id: str,\r\n        pdbx_modified: str,\r\n        pdbx_blank_PDB_chainid_flag: Aliased(str),\r\n    },\r\n    struct_conf: {\r\n        beg_label_asym_id: str,\r\n        beg_label_comp_id: str,\r\n        beg_label_seq_id: int,\r\n        beg_auth_asym_id: str,\r\n        beg_auth_comp_id: str,\r\n        beg_auth_seq_id: int,\r\n        conf_type_id: Aliased(str),\r\n        details: str,\r\n        end_label_asym_id: str,\r\n        end_label_comp_id: str,\r\n        end_label_seq_id: int,\r\n        end_auth_asym_id: str,\r\n        end_auth_comp_id: str,\r\n        end_auth_seq_id: int,\r\n        id: str,\r\n        pdbx_beg_PDB_ins_code: str,\r\n        pdbx_end_PDB_ins_code: str,\r\n        pdbx_PDB_helix_class: str,\r\n        pdbx_PDB_helix_length: int,\r\n        pdbx_PDB_helix_id: str,\r\n    },\r\n    struct_conn: {\r\n        conn_type_id: Aliased(str),\r\n        details: str,\r\n        id: str,\r\n        ptnr1_label_asym_id: str,\r\n        ptnr1_label_atom_id: str,\r\n        ptnr1_label_comp_id: str,\r\n        ptnr1_label_seq_id: int,\r\n        ptnr1_auth_asym_id: str,\r\n        ptnr1_auth_comp_id: str,\r\n        ptnr1_auth_seq_id: int,\r\n        ptnr1_symmetry: str,\r\n        ptnr2_label_asym_id: str,\r\n        ptnr2_label_atom_id: str,\r\n        ptnr2_label_comp_id: str,\r\n        ptnr2_label_seq_id: int,\r\n        ptnr2_auth_asym_id: str,\r\n        ptnr2_auth_comp_id: str,\r\n        ptnr2_auth_seq_id: int,\r\n        ptnr2_symmetry: str,\r\n        pdbx_ptnr1_PDB_ins_code: str,\r\n        pdbx_ptnr1_label_alt_id: str,\r\n        pdbx_ptnr1_standard_comp_id: str,\r\n        pdbx_ptnr2_PDB_ins_code: str,\r\n        pdbx_ptnr2_label_alt_id: str,\r\n        pdbx_ptnr3_PDB_ins_code: str,\r\n        pdbx_ptnr3_label_alt_id: str,\r\n        pdbx_ptnr3_label_asym_id: str,\r\n        pdbx_ptnr3_label_atom_id: str,\r\n        pdbx_ptnr3_label_comp_id: str,\r\n        pdbx_ptnr3_label_seq_id: int,\r\n        pdbx_PDB_id: str,\r\n        pdbx_dist_value: float,\r\n        pdbx_value_order: Aliased(str),\r\n    },\r\n    struct_conn_type: {\r\n        criteria: str,\r\n        id: Aliased(str),\r\n        reference: str,\r\n    },\r\n    struct_keywords: {\r\n        entry_id: str,\r\n        text: List(',', function (x) { return x; }),\r\n        pdbx_keywords: str,\r\n    },\r\n    struct_sheet_range: {\r\n        beg_label_asym_id: str,\r\n        beg_label_comp_id: str,\r\n        beg_label_seq_id: int,\r\n        end_label_asym_id: str,\r\n        end_label_comp_id: str,\r\n        end_label_seq_id: int,\r\n        beg_auth_asym_id: str,\r\n        beg_auth_comp_id: str,\r\n        beg_auth_seq_id: int,\r\n        end_auth_asym_id: str,\r\n        end_auth_comp_id: str,\r\n        end_auth_seq_id: int,\r\n        id: str,\r\n        sheet_id: str,\r\n        pdbx_beg_PDB_ins_code: str,\r\n        pdbx_end_PDB_ins_code: str,\r\n    },\r\n    struct_site: {\r\n        details: str,\r\n        id: str,\r\n        pdbx_num_residues: int,\r\n        pdbx_evidence_code: str,\r\n        pdbx_auth_asym_id: str,\r\n        pdbx_auth_comp_id: str,\r\n        pdbx_auth_seq_id: str,\r\n        pdbx_auth_ins_code: str,\r\n    },\r\n    struct_site_gen: {\r\n        details: str,\r\n        id: str,\r\n        label_alt_id: str,\r\n        label_asym_id: str,\r\n        label_atom_id: str,\r\n        label_comp_id: str,\r\n        label_seq_id: int,\r\n        auth_asym_id: str,\r\n        auth_comp_id: str,\r\n        auth_seq_id: str,\r\n        site_id: str,\r\n        symmetry: str,\r\n        pdbx_auth_ins_code: str,\r\n        pdbx_num_res: int,\r\n    },\r\n    symmetry: {\r\n        entry_id: str,\r\n        cell_setting: Aliased(str),\r\n        Int_Tables_number: int,\r\n        space_group_name_Hall: str,\r\n        'space_group_name_H-M': str,\r\n    },\r\n    pdbx_struct_assembly: {\r\n        method_details: str,\r\n        oligomeric_details: str,\r\n        oligomeric_count: int,\r\n        details: str,\r\n        id: str,\r\n    },\r\n    pdbx_struct_mod_residue: {\r\n        id: int,\r\n        auth_asym_id: str,\r\n        auth_comp_id: str,\r\n        auth_seq_id: int,\r\n        PDB_ins_code: str,\r\n        label_asym_id: str,\r\n        label_comp_id: str,\r\n        label_seq_id: int,\r\n        parent_comp_id: str,\r\n        details: str,\r\n    },\r\n    pdbx_struct_oper_list: {\r\n        id: str,\r\n        type: Aliased(str),\r\n        name: str,\r\n        symmetry_operation: str,\r\n        matrix: Matrix(3, 3),\r\n        vector: Vector(3),\r\n    },\r\n    pdbx_struct_assembly_gen: {\r\n        asym_id_list: List(',', function (x) { return x; }),\r\n        assembly_id: str,\r\n        oper_expression: str,\r\n    },\r\n    pdbx_reference_entity_list: {\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        type: str,\r\n        details: str,\r\n        component_id: int,\r\n    },\r\n    pdbx_reference_entity_link: {\r\n        link_id: int,\r\n        prd_id: str,\r\n        details: str,\r\n        ref_entity_id_1: str,\r\n        ref_entity_id_2: str,\r\n        entity_seq_num_1: int,\r\n        entity_seq_num_2: int,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        value_order: Aliased(str),\r\n        component_1: int,\r\n        component_2: int,\r\n        link_class: Aliased(str),\r\n    },\r\n    pdbx_reference_entity_poly_link: {\r\n        link_id: int,\r\n        prd_id: str,\r\n        ref_entity_id: str,\r\n        component_id: int,\r\n        entity_seq_num_1: int,\r\n        entity_seq_num_2: int,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        value_order: Aliased(str),\r\n    },\r\n    pdbx_molecule: {\r\n        prd_id: str,\r\n        instance_id: int,\r\n        asym_id: str,\r\n    },\r\n    pdbx_molecule_features: {\r\n        prd_id: str,\r\n        class: Aliased(str),\r\n        type: Aliased(str),\r\n        name: str,\r\n        details: str,\r\n    },\r\n    ihm_starting_model_details: {\r\n        starting_model_id: str,\r\n        entity_id: str,\r\n        entity_description: str,\r\n        asym_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        starting_model_source: Aliased(str),\r\n        starting_model_auth_asym_id: str,\r\n        starting_model_sequence_offset: int,\r\n        dataset_list_id: int,\r\n    },\r\n    ihm_starting_comparative_models: {\r\n        ordinal_id: int,\r\n        starting_model_id: str,\r\n        starting_model_auth_asym_id: str,\r\n        starting_model_seq_id_begin: int,\r\n        starting_model_seq_id_end: int,\r\n        template_auth_asym_id: str,\r\n        template_seq_id_begin: int,\r\n        template_seq_id_end: int,\r\n        template_sequence_identity: float,\r\n        template_sequence_identity_denominator: Aliased(int),\r\n        template_dataset_list_id: int,\r\n        alignment_file_id: int,\r\n    },\r\n    ihm_starting_model_seq_dif: {\r\n        ordinal_id: int,\r\n        entity_id: str,\r\n        asym_id: str,\r\n        seq_id: int,\r\n        comp_id: str,\r\n        starting_model_id: str,\r\n        db_asym_id: str,\r\n        db_seq_id: int,\r\n        db_comp_id: str,\r\n        details: str,\r\n    },\r\n    ihm_model_representation: {\r\n        ordinal_id: int,\r\n        representation_id: int,\r\n        segment_id: int,\r\n        entity_id: str,\r\n        entity_description: str,\r\n        entity_asym_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        model_object_primitive: Aliased(str),\r\n        starting_model_id: str,\r\n        model_mode: Aliased(str),\r\n        model_granularity: Aliased(str),\r\n        model_object_count: int,\r\n    },\r\n    ihm_struct_assembly: {\r\n        ordinal_id: int,\r\n        assembly_id: int,\r\n        parent_assembly_id: int,\r\n        entity_description: str,\r\n        entity_id: str,\r\n        asym_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n    },\r\n    ihm_struct_assembly_details: {\r\n        assembly_id: int,\r\n        assembly_name: str,\r\n        assembly_description: str,\r\n    },\r\n    ihm_modeling_protocol: {\r\n        ordinal_id: int,\r\n        protocol_id: int,\r\n        step_id: int,\r\n        struct_assembly_id: int,\r\n        dataset_group_id: int,\r\n        struct_assembly_description: str,\r\n        protocol_name: str,\r\n        step_name: str,\r\n        step_method: str,\r\n        num_models_begin: int,\r\n        num_models_end: int,\r\n        multi_scale_flag: Aliased(str),\r\n        multi_state_flag: Aliased(str),\r\n        ordered_flag: Aliased(str),\r\n    },\r\n    ihm_multi_state_modeling: {\r\n        ordinal_id: int,\r\n        state_id: int,\r\n        state_group_id: int,\r\n        population_fraction: float,\r\n        state_type: str,\r\n        state_name: str,\r\n        model_group_id: int,\r\n        experiment_type: Aliased(str),\r\n        details: str,\r\n    },\r\n    ihm_modeling_post_process: {\r\n        id: int,\r\n        protocol_id: int,\r\n        analysis_id: int,\r\n        step_id: int,\r\n        type: Aliased(str),\r\n        feature: Aliased(str),\r\n        num_models_begin: int,\r\n        num_models_end: int,\r\n    },\r\n    ihm_ensemble_info: {\r\n        ensemble_id: int,\r\n        ensemble_name: str,\r\n        post_process_id: int,\r\n        model_group_id: int,\r\n        ensemble_clustering_method: Aliased(str),\r\n        ensemble_clustering_feature: Aliased(str),\r\n        num_ensemble_models: int,\r\n        num_ensemble_models_deposited: int,\r\n        ensemble_precision_value: float,\r\n        ensemble_file_id: int,\r\n    },\r\n    ihm_model_list: {\r\n        ordinal_id: int,\r\n        model_id: int,\r\n        model_group_id: int,\r\n        model_name: str,\r\n        model_group_name: str,\r\n        assembly_id: int,\r\n        protocol_id: int,\r\n        representation_id: int,\r\n    },\r\n    ihm_model_representative: {\r\n        id: int,\r\n        model_group_id: int,\r\n        model_id: int,\r\n        selection_criteria: Aliased(str),\r\n    },\r\n    ihm_dataset_list: {\r\n        id: int,\r\n        data_type: Aliased(str),\r\n        database_hosted: Aliased(str),\r\n    },\r\n    ihm_dataset_group: {\r\n        ordinal_id: int,\r\n        group_id: int,\r\n        dataset_list_id: int,\r\n    },\r\n    ihm_related_datasets: {\r\n        ordinal_id: int,\r\n        dataset_list_id_derived: int,\r\n        dataset_list_id_primary: int,\r\n    },\r\n    ihm_dataset_related_db_reference: {\r\n        id: int,\r\n        dataset_list_id: int,\r\n        db_name: Aliased(str),\r\n        accession_code: str,\r\n        version: str,\r\n        details: str,\r\n    },\r\n    ihm_external_reference_info: {\r\n        reference_id: int,\r\n        reference_provider: str,\r\n        reference_type: Aliased(str),\r\n        reference: str,\r\n        refers_to: Aliased(str),\r\n        associated_url: str,\r\n    },\r\n    ihm_external_files: {\r\n        id: int,\r\n        reference_id: int,\r\n        file_path: str,\r\n        content_type: Aliased(str),\r\n        file_size_bytes: float,\r\n        details: str,\r\n    },\r\n    ihm_dataset_external_reference: {\r\n        id: int,\r\n        dataset_list_id: int,\r\n        file_id: int,\r\n    },\r\n    ihm_localization_density_files: {\r\n        id: int,\r\n        file_id: int,\r\n        ensemble_id: int,\r\n        entity_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        asym_id: str,\r\n    },\r\n    ihm_predicted_contact_restraint: {\r\n        id: int,\r\n        entity_id_1: str,\r\n        entity_id_2: str,\r\n        asym_id_1: str,\r\n        asym_id_2: str,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        seq_id_1: int,\r\n        seq_id_2: int,\r\n        atom_id_1: str,\r\n        atom_id_2: str,\r\n        distance_upper_limit: float,\r\n        probability: float,\r\n        restraint_type: Aliased(str),\r\n        model_granularity: Aliased(str),\r\n        dataset_list_id: int,\r\n        software_id: int,\r\n    },\r\n    ihm_cross_link_list: {\r\n        id: int,\r\n        group_id: int,\r\n        entity_description_1: str,\r\n        entity_description_2: str,\r\n        entity_id_1: str,\r\n        entity_id_2: str,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        seq_id_1: int,\r\n        seq_id_2: int,\r\n        linker_type: Aliased(str),\r\n        dataset_list_id: int,\r\n    },\r\n    ihm_cross_link_restraint: {\r\n        id: int,\r\n        group_id: int,\r\n        entity_id_1: str,\r\n        entity_id_2: str,\r\n        asym_id_1: str,\r\n        asym_id_2: str,\r\n        comp_id_1: str,\r\n        comp_id_2: str,\r\n        seq_id_1: int,\r\n        seq_id_2: int,\r\n        restraint_type: Aliased(str),\r\n        conditional_crosslink_flag: Aliased(str),\r\n        model_granularity: Aliased(str),\r\n        distance_threshold: float,\r\n        psi: float,\r\n        sigma_1: float,\r\n        sigma_2: float,\r\n    },\r\n    ihm_cross_link_result_parameters: {\r\n        ordinal_id: int,\r\n        restraint_id: int,\r\n        model_id: int,\r\n        psi: float,\r\n        sigma_1: float,\r\n        sigma_2: float,\r\n    },\r\n    ihm_2dem_class_average_restraint: {\r\n        id: int,\r\n        dataset_list_id: int,\r\n        number_raw_micrographs: int,\r\n        pixel_size_width: float,\r\n        pixel_size_height: float,\r\n        image_resolution: float,\r\n        image_segment_flag: Aliased(str),\r\n        number_of_projections: int,\r\n        struct_assembly_id: int,\r\n        details: str,\r\n    },\r\n    ihm_2dem_class_average_fitting: {\r\n        ordinal_id: int,\r\n        restraint_id: int,\r\n        model_id: int,\r\n        cross_correlation_coefficient: float,\r\n        rot_matrix: Matrix(3, 3),\r\n        tr_vector: Vector(3),\r\n    },\r\n    ihm_3dem_restraint: {\r\n        ordinal_id: int,\r\n        dataset_list_id: int,\r\n        model_id: int,\r\n        struct_assembly_id: int,\r\n        fitting_method: str,\r\n        number_of_gaussians: int,\r\n        cross_correlation_coefficient: float,\r\n    },\r\n    ihm_sas_restraint: {\r\n        ordinal_id: int,\r\n        dataset_list_id: int,\r\n        model_id: int,\r\n        struct_assembly_id: int,\r\n        profile_segment_flag: Aliased(str),\r\n        fitting_atom_type: str,\r\n        fitting_method: str,\r\n        fitting_state: Aliased(str),\r\n        radius_of_gyration: float,\r\n        chi_value: float,\r\n        details: str,\r\n    },\r\n    ihm_starting_model_coord: {\r\n        ordinal_id: int,\r\n        starting_model_id: str,\r\n        group_PDB: Aliased(str),\r\n        id: int,\r\n        type_symbol: str,\r\n        entity_id: str,\r\n        atom_id: str,\r\n        comp_id: str,\r\n        seq_id: int,\r\n        asym_id: str,\r\n        Cartn_x: float,\r\n        Cartn_y: float,\r\n        Cartn_z: float,\r\n        B_iso_or_equiv: float,\r\n    },\r\n    ihm_sphere_obj_site: {\r\n        ordinal_id: int,\r\n        entity_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        asym_id: str,\r\n        Cartn_x: float,\r\n        Cartn_y: float,\r\n        Cartn_z: float,\r\n        object_radius: float,\r\n        rmsf: float,\r\n        model_id: int,\r\n    },\r\n    ihm_gaussian_obj_site: {\r\n        ordinal_id: int,\r\n        entity_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        asym_id: str,\r\n        mean_Cartn_x: float,\r\n        mean_Cartn_y: float,\r\n        mean_Cartn_z: float,\r\n        weight: float,\r\n        covariance_matrix: Matrix(3, 3),\r\n        model_id: int,\r\n    },\r\n    ihm_gaussian_obj_ensemble: {\r\n        ordinal_id: int,\r\n        entity_id: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n        asym_id: str,\r\n        mean_Cartn_x: float,\r\n        mean_Cartn_y: float,\r\n        mean_Cartn_z: float,\r\n        weight: float,\r\n        covariance_matrix: Matrix(3, 3),\r\n        ensemble_id: int,\r\n    },\r\n    ihm_feature_list: {\r\n        feature_id: int,\r\n        feature_type: Aliased(str),\r\n        entity_type: Aliased(str),\r\n    },\r\n    ihm_poly_residue_feature: {\r\n        ordinal_id: int,\r\n        feature_id: int,\r\n        entity_id: str,\r\n        asym_id: str,\r\n        comp_id_begin: str,\r\n        comp_id_end: str,\r\n        seq_id_begin: int,\r\n        seq_id_end: int,\r\n    },\r\n    ihm_derived_distance_restraint: {\r\n        id: int,\r\n        group_id: int,\r\n        feature_id_1: int,\r\n        feature_id_2: int,\r\n        group_conditionality: Aliased(str),\r\n        random_exclusion_fraction: float,\r\n        distance_upper_limit: float,\r\n        restraint_type: Aliased(str),\r\n        dataset_list_id: int,\r\n    },\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/schema/mmcif.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/text/field.js":
+/*!************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/text/field.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar TokenColumn = __webpack_require__(/*! ../../common/text/column/token */ \"./build/node_modules/mol-io/reader/common/text/column/token.js\");\r\nvar number_parser_1 = __webpack_require__(/*! ../../common/text/number-parser */ \"./build/node_modules/mol-io/reader/common/text/number-parser.js\");\r\nfunction CifTextField(tokens, rowCount) {\r\n    var data = tokens.data, indices = tokens.indices;\r\n    var str = function (row) {\r\n        var ret = data.substring(indices[2 * row], indices[2 * row + 1]);\r\n        if (ret === '.' || ret === '?')\r\n            return '';\r\n        return ret;\r\n    };\r\n    var int = function (row) {\r\n        return number_parser_1.parseInt(data, indices[2 * row], indices[2 * row + 1]) || 0;\r\n    };\r\n    var float = function (row) {\r\n        return number_parser_1.parseFloat(data, indices[2 * row], indices[2 * row + 1]) || 0;\r\n    };\r\n    var valueKind = function (row) {\r\n        var s = indices[2 * row];\r\n        if (indices[2 * row + 1] - s !== 1)\r\n            return 0 /* Present */;\r\n        var v = data.charCodeAt(s);\r\n        if (v === 46 /* . */)\r\n            return 1 /* NotPresent */;\r\n        if (v === 63 /* ? */)\r\n            return 2 /* Unknown */;\r\n        return 0 /* Present */;\r\n    };\r\n    return {\r\n        '@array': void 0,\r\n        isDefined: true,\r\n        rowCount: rowCount,\r\n        str: str,\r\n        int: int,\r\n        float: float,\r\n        valueKind: valueKind,\r\n        areValuesEqual: TokenColumn.areValuesEqualProvider(tokens),\r\n        toStringArray: function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, str, params); },\r\n        toIntArray: function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, int, params); },\r\n        toFloatArray: function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, float, params); }\r\n    };\r\n}\r\nexports.default = CifTextField;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/text/field.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/cif/text/parser.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/cif/text/parser.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * mmCIF parser.\r\n *\r\n * Trying to be as close to the specification http://www.iucr.org/resources/cif/spec/version1.1/cifsyntax\r\n *\r\n * Differences I'm aware of:\r\n * - Except keywords (data_, loop_, save_) everything is case sensitive.\r\n * - The tokens . and ? are treated the same as the values '.' and '?'.\r\n * - Ignores \\ in the multiline values:\r\n *     ;abc\\\r\n *     efg\r\n *     ;\r\n *   should have the value 'abcefg' but will have the value 'abc\\\\nefg' instead.\r\n *   Post processing of this is left to the consumer of the data.\r\n * - Similarly, things like punctuation (\\', ..) are left to be processed by the user if needed.\r\n *\r\n */\r\nvar Data = __webpack_require__(/*! ../data-model */ \"./build/node_modules/mol-io/reader/cif/data-model.js\");\r\nvar field_1 = __webpack_require__(/*! ./field */ \"./build/node_modules/mol-io/reader/cif/text/field.js\");\r\nvar tokenizer_1 = __webpack_require__(/*! ../../common/text/tokenizer */ \"./build/node_modules/mol-io/reader/common/text/tokenizer.js\");\r\nvar result_1 = __webpack_require__(/*! ../../result */ \"./build/node_modules/mol-io/reader/result.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\n/**\r\n * Eat everything until a whitespace/newline occurs.\r\n */\r\nfunction eatValue(state) {\r\n    while (state.position < state.length) {\r\n        switch (state.data.charCodeAt(state.position)) {\r\n            case 9: // \\t\r\n            case 10: // \\n\r\n            case 13: // \\r\r\n            case 32: // ' '\r\n                state.tokenEnd = state.position;\r\n                return;\r\n            default:\r\n                ++state.position;\r\n                break;\r\n        }\r\n    }\r\n    state.tokenEnd = state.position;\r\n}\r\n/**\r\n * Eats an escaped value. Handles the \"degenerate\" cases as well.\r\n *\r\n * \"Degenerate\" cases:\r\n * - 'xx'x' => xx'x\r\n * - 'xxxNEWLINE => 'xxx\r\n *\r\n */\r\nfunction eatEscaped(state, esc) {\r\n    var next, c;\r\n    ++state.position;\r\n    while (state.position < state.length) {\r\n        c = state.data.charCodeAt(state.position);\r\n        if (c === esc) {\r\n            next = state.data.charCodeAt(state.position + 1);\r\n            switch (next) {\r\n                case 9: // \\t\r\n                case 10: // \\n\r\n                case 13: // \\r\r\n                case 32: // ' '\r\n                    // get rid of the quotes.\r\n                    state.tokenStart++;\r\n                    state.tokenEnd = state.position;\r\n                    state.isEscaped = true;\r\n                    ++state.position;\r\n                    return;\r\n                default:\r\n                    if (next === void 0) { // = \"end of stream\"\r\n                        // get rid of the quotes.\r\n                        state.tokenStart++;\r\n                        state.tokenEnd = state.position;\r\n                        state.isEscaped = true;\r\n                        ++state.position;\r\n                        return;\r\n                    }\r\n                    ++state.position;\r\n                    break;\r\n            }\r\n        }\r\n        else {\r\n            // handle 'xxxNEWLINE => 'xxx\r\n            if (c === 10 || c === 13) {\r\n                state.tokenEnd = state.position;\r\n                return;\r\n            }\r\n            ++state.position;\r\n        }\r\n    }\r\n    state.tokenEnd = state.position;\r\n}\r\n/**\r\n * Eats a multiline token of the form NL;....NL;\r\n */\r\nfunction eatMultiline(state) {\r\n    var prev = 59, pos = state.position + 1, c;\r\n    while (pos < state.length) {\r\n        c = state.data.charCodeAt(pos);\r\n        if (c === 59 && (prev === 10 || prev === 13)) { // ;, \\n \\r\r\n            state.position = pos + 1;\r\n            // get rid of the ;\r\n            state.tokenStart++;\r\n            // remove trailing newlines\r\n            pos--;\r\n            c = state.data.charCodeAt(pos);\r\n            while (c === 10 || c === 13) {\r\n                pos--;\r\n                c = state.data.charCodeAt(pos);\r\n            }\r\n            state.tokenEnd = pos + 1;\r\n            state.isEscaped = true;\r\n            return;\r\n        }\r\n        else {\r\n            // handle line numbers\r\n            if (c === 13) { // \\r\r\n                state.lineNumber++;\r\n            }\r\n            else if (c === 10 && prev !== 13) { // \\r\\n\r\n                state.lineNumber++;\r\n            }\r\n            prev = c;\r\n            ++pos;\r\n        }\r\n    }\r\n    state.position = pos;\r\n    return prev;\r\n}\r\n/**\r\n * Skips until \\n or \\r occurs -- therefore the newlines get handled by the \"skipWhitespace\" function.\r\n */\r\nfunction skipCommentLine(state) {\r\n    while (state.position < state.length) {\r\n        var c = state.data.charCodeAt(state.position);\r\n        if (c === 10 || c === 13) {\r\n            return;\r\n        }\r\n        ++state.position;\r\n    }\r\n}\r\n/**\r\n * Skips all the whitespace - space, tab, newline, CR\r\n * Handles incrementing line count.\r\n */\r\nfunction skipWhitespace(state) {\r\n    var prev = 10;\r\n    while (state.position < state.length) {\r\n        var c = state.data.charCodeAt(state.position);\r\n        switch (c) {\r\n            case 9: // '\\t'\r\n            case 32: // ' '\r\n                prev = c;\r\n                ++state.position;\r\n                break;\r\n            case 10: // \\n\r\n                // handle \\r\\n\r\n                if (prev !== 13) {\r\n                    ++state.lineNumber;\r\n                }\r\n                prev = c;\r\n                ++state.position;\r\n                break;\r\n            case 13: // \\r\r\n                prev = c;\r\n                ++state.position;\r\n                ++state.lineNumber;\r\n                break;\r\n            default:\r\n                return prev;\r\n        }\r\n    }\r\n    return prev;\r\n}\r\nfunction isData(state) {\r\n    // here we already assume the 5th char is _ and that the length >= 5\r\n    // d/D\r\n    var c = state.data.charCodeAt(state.tokenStart);\r\n    if (c !== 68 && c !== 100)\r\n        return false;\r\n    // a/A\r\n    c = state.data.charCodeAt(state.tokenStart + 1);\r\n    if (c !== 65 && c !== 97)\r\n        return false;\r\n    // t/t\r\n    c = state.data.charCodeAt(state.tokenStart + 2);\r\n    if (c !== 84 && c !== 116)\r\n        return false;\r\n    // a/A\r\n    c = state.data.charCodeAt(state.tokenStart + 3);\r\n    if (c !== 65 && c !== 97)\r\n        return false;\r\n    return true;\r\n}\r\nfunction isSave(state) {\r\n    // here we already assume the 5th char is _ and that the length >= 5\r\n    // s/S\r\n    var c = state.data.charCodeAt(state.tokenStart);\r\n    if (c !== 83 && c !== 115)\r\n        return false;\r\n    // a/A\r\n    c = state.data.charCodeAt(state.tokenStart + 1);\r\n    if (c !== 65 && c !== 97)\r\n        return false;\r\n    // v/V\r\n    c = state.data.charCodeAt(state.tokenStart + 2);\r\n    if (c !== 86 && c !== 118)\r\n        return false;\r\n    // e/E\r\n    c = state.data.charCodeAt(state.tokenStart + 3);\r\n    if (c !== 69 && c !== 101)\r\n        return false;\r\n    return true;\r\n}\r\nfunction isLoop(state) {\r\n    // here we already assume the 5th char is _ and that the length >= 5\r\n    if (state.tokenEnd - state.tokenStart !== 5)\r\n        return false;\r\n    // l/L\r\n    var c = state.data.charCodeAt(state.tokenStart);\r\n    if (c !== 76 && c !== 108)\r\n        return false;\r\n    // o/O\r\n    c = state.data.charCodeAt(state.tokenStart + 1);\r\n    if (c !== 79 && c !== 111)\r\n        return false;\r\n    // o/O\r\n    c = state.data.charCodeAt(state.tokenStart + 2);\r\n    if (c !== 79 && c !== 111)\r\n        return false;\r\n    // p/P\r\n    c = state.data.charCodeAt(state.tokenStart + 3);\r\n    if (c !== 80 && c !== 112)\r\n        return false;\r\n    return true;\r\n}\r\n/**\r\n * Checks if the current token shares the namespace with string at <start,end).\r\n */\r\nfunction isNamespace(state, start, end) {\r\n    var i, nsLen = end - start, offset = state.tokenStart - start, tokenLen = state.tokenEnd - state.tokenStart;\r\n    if (tokenLen < nsLen)\r\n        return false;\r\n    for (i = start; i < end; ++i) {\r\n        if (state.data.charCodeAt(i) !== state.data.charCodeAt(i + offset))\r\n            return false;\r\n    }\r\n    if (nsLen === tokenLen)\r\n        return true;\r\n    if (state.data.charCodeAt(i + offset) === 46) { // .\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Returns the index of '.' in the current token. If no '.' is present, returns currentTokenEnd.\r\n */\r\nfunction getNamespaceEnd(state) {\r\n    var i;\r\n    for (i = state.tokenStart; i < state.tokenEnd; ++i) {\r\n        if (state.data.charCodeAt(i) === 46)\r\n            return i;\r\n    }\r\n    return i;\r\n}\r\n/**\r\n * Get the namespace string. endIndex is obtained by the getNamespaceEnd() function.\r\n */\r\nfunction getNamespace(state, endIndex) {\r\n    return state.data.substring(state.tokenStart, endIndex);\r\n}\r\n/**\r\n * String representation of the current token.\r\n */\r\nfunction getTokenString(state) {\r\n    return state.data.substring(state.tokenStart, state.tokenEnd);\r\n}\r\n/**\r\n * Move to the next token.\r\n */\r\nfunction moveNextInternal(state) {\r\n    var prev = skipWhitespace(state);\r\n    if (state.position >= state.length) {\r\n        state.tokenType = 6 /* End */;\r\n        return;\r\n    }\r\n    state.tokenStart = state.position;\r\n    state.tokenEnd = state.position;\r\n    state.isEscaped = false;\r\n    var c = state.data.charCodeAt(state.position);\r\n    switch (c) {\r\n        case 35: // #, comment\r\n            skipCommentLine(state);\r\n            state.tokenType = 5 /* Comment */;\r\n            break;\r\n        case 34: // \", escaped value\r\n        case 39: // ', escaped value\r\n            eatEscaped(state, c);\r\n            state.tokenType = 3 /* Value */;\r\n            break;\r\n        case 59: // ;, possible multiline value\r\n            // multiline value must start at the beginning of the line.\r\n            if (prev === 10 || prev === 13) { // /n or /r\r\n                eatMultiline(state);\r\n            }\r\n            else {\r\n                eatValue(state);\r\n            }\r\n            state.tokenType = 3 /* Value */;\r\n            break;\r\n        default:\r\n            eatValue(state);\r\n            // escaped is always Value\r\n            if (state.isEscaped) {\r\n                state.tokenType = 3 /* Value */;\r\n                // _ always means column name\r\n            }\r\n            else if (state.data.charCodeAt(state.tokenStart) === 95) { // _\r\n                state.tokenType = 4 /* ColumnName */;\r\n                // 5th char needs to be _ for data_ or loop_\r\n            }\r\n            else if (state.tokenEnd - state.tokenStart >= 5 && state.data.charCodeAt(state.tokenStart + 4) === 95) {\r\n                if (isData(state))\r\n                    state.tokenType = 0 /* Data */;\r\n                else if (isSave(state))\r\n                    state.tokenType = 1 /* Save */;\r\n                else if (isLoop(state))\r\n                    state.tokenType = 2 /* Loop */;\r\n                else\r\n                    state.tokenType = 3 /* Value */;\r\n                // all other tests failed, we are at Value token.\r\n            }\r\n            else {\r\n                state.tokenType = 3 /* Value */;\r\n            }\r\n            break;\r\n    }\r\n}\r\n/**\r\n * Moves to the next non-comment token.\r\n */\r\nfunction moveNext(state) {\r\n    moveNextInternal(state);\r\n    while (state.tokenType === 5 /* Comment */)\r\n        moveNextInternal(state);\r\n}\r\nfunction createTokenizer(data, runtimeCtx) {\r\n    return {\r\n        data: data,\r\n        length: data.length,\r\n        position: 0,\r\n        tokenStart: 0,\r\n        tokenEnd: 0,\r\n        tokenType: 6 /* End */,\r\n        lineNumber: 1,\r\n        isEscaped: false,\r\n        runtimeCtx: runtimeCtx\r\n    };\r\n}\r\nfunction FrameContext() {\r\n    return { categoryNames: [], categories: Object.create(null) };\r\n}\r\n/**\r\n * Reads a category containing a single row.\r\n */\r\nfunction handleSingle(tokenizer, ctx) {\r\n    var nsStart = tokenizer.tokenStart, nsEnd = getNamespaceEnd(tokenizer);\r\n    var name = getNamespace(tokenizer, nsEnd);\r\n    var fields = Object.create(null);\r\n    var fieldNames = [];\r\n    var readingNames = true;\r\n    while (readingNames) {\r\n        if (tokenizer.tokenType !== 4 /* ColumnName */ || !isNamespace(tokenizer, nsStart, nsEnd)) {\r\n            readingNames = false;\r\n            break;\r\n        }\r\n        var fieldName = getTokenString(tokenizer).substring(name.length + 1);\r\n        moveNext(tokenizer);\r\n        if (tokenizer.tokenType !== 3 /* Value */) {\r\n            return {\r\n                hasError: true,\r\n                errorLine: tokenizer.lineNumber,\r\n                errorMessage: 'Expected value.'\r\n            };\r\n        }\r\n        fields[fieldName] = field_1.default({ data: tokenizer.data, indices: [tokenizer.tokenStart, tokenizer.tokenEnd], count: 1 }, 1);\r\n        fieldNames[fieldNames.length] = fieldName;\r\n        moveNext(tokenizer);\r\n    }\r\n    var catName = name.substr(1);\r\n    ctx.categories[catName] = Data.Category(catName, 1, fieldNames, fields);\r\n    ctx.categoryNames.push(catName);\r\n    return {\r\n        hasError: false,\r\n        errorLine: 0,\r\n        errorMessage: ''\r\n    };\r\n}\r\nfunction readLoopChunk(chunkSize, state) {\r\n    var tokenizer = state.tokenizer, tokens = state.tokens, fieldCount = state.fieldCount;\r\n    var tokenCount = state.tokenCount;\r\n    var counter = 0;\r\n    while (tokenizer.tokenType === 3 /* Value */ && counter < chunkSize) {\r\n        tokenizer_1.TokenBuilder.add(tokens[(tokenCount++) % fieldCount], tokenizer.tokenStart, tokenizer.tokenEnd);\r\n        moveNext(tokenizer);\r\n        counter++;\r\n    }\r\n    state.tokenCount = tokenCount;\r\n    return counter;\r\n}\r\nfunction updateLoopChunk(ctx, state) {\r\n    return ctx.update({ message: 'Parsing...', current: state.tokenizer.position, max: state.tokenizer.data.length });\r\n}\r\n// const readLoopChunks = ChunkedSubtask(1000000,\r\n//     (size, state: LoopReadState) => readLoopChunk(state, size),\r\n//     (ctx, state) => ctx.update({ message: 'Parsing...', current: state.tokenizer.position, max: state.tokenizer.data.length }));\r\n/**\r\n * Reads a loop.\r\n */\r\nfunction handleLoop(tokenizer, ctx) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var loopLine, name, fieldNames, rowCountEstimate, tokens, fieldCount, i, state, rowCount, fields, i, catName;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    loopLine = tokenizer.lineNumber;\r\n                    moveNext(tokenizer);\r\n                    name = getNamespace(tokenizer, getNamespaceEnd(tokenizer));\r\n                    fieldNames = [];\r\n                    while (tokenizer.tokenType === 4 /* ColumnName */) {\r\n                        fieldNames[fieldNames.length] = getTokenString(tokenizer).substring(name.length + 1);\r\n                        moveNext(tokenizer);\r\n                    }\r\n                    rowCountEstimate = name === '_atom_site' ? (tokenizer.data.length / 100) | 0 : 32;\r\n                    tokens = [];\r\n                    fieldCount = fieldNames.length;\r\n                    for (i = 0; i < fieldCount; i++)\r\n                        tokens[i] = tokenizer_1.TokenBuilder.create(tokenizer, rowCountEstimate);\r\n                    state = {\r\n                        fieldCount: fieldCount,\r\n                        tokenCount: 0,\r\n                        tokenizer: tokenizer,\r\n                        tokens: tokens\r\n                    };\r\n                    return [4 /*yield*/, mol_task_1.chunkedSubtask(tokenizer.runtimeCtx, 1000000, state, readLoopChunk, updateLoopChunk)];\r\n                case 1:\r\n                    _a.sent();\r\n                    if (state.tokenCount % fieldCount !== 0) {\r\n                        return [2 /*return*/, {\r\n                                hasError: true,\r\n                                errorLine: tokenizer.lineNumber,\r\n                                errorMessage: \"The number of values for loop starting at line \" + loopLine + \" is not a multiple of the number of columns.\"\r\n                            }];\r\n                    }\r\n                    rowCount = (state.tokenCount / fieldCount) | 0;\r\n                    fields = Object.create(null);\r\n                    for (i = 0; i < fieldCount; i++) {\r\n                        fields[fieldNames[i]] = field_1.default(tokens[i], rowCount);\r\n                    }\r\n                    catName = name.substr(1);\r\n                    ctx.categories[catName] = Data.Category(catName, rowCount, fieldNames, fields);\r\n                    ctx.categoryNames.push(catName);\r\n                    return [2 /*return*/, {\r\n                            hasError: false,\r\n                            errorLine: 0,\r\n                            errorMessage: ''\r\n                        }];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * Creates an error result.\r\n */\r\nfunction error(line, message) {\r\n    return result_1.default.error(message, line);\r\n}\r\n/**\r\n * Creates a data result.\r\n */\r\nfunction result(data) {\r\n    return result_1.default.success(data);\r\n}\r\n/**\r\n * Parses an mmCIF file.\r\n *\r\n * @returns CifParserResult wrapper of the result.\r\n */\r\nfunction parseInternal(data, runtimeCtx) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var dataBlocks, tokenizer, blockHeader, blockCtx, inSaveFrame, saveFrames, saveCtx, saveFrame, token, saveHeader, safeHeader, cat, cat;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    dataBlocks = [];\r\n                    tokenizer = createTokenizer(data, runtimeCtx);\r\n                    blockHeader = '';\r\n                    blockCtx = FrameContext();\r\n                    inSaveFrame = false;\r\n                    saveFrames = [];\r\n                    saveCtx = FrameContext();\r\n                    saveFrame = Data.SafeFrame(saveCtx.categoryNames, saveCtx.categories, '');\r\n                    runtimeCtx.update({ message: 'Parsing...', current: 0, max: data.length });\r\n                    moveNext(tokenizer);\r\n                    _a.label = 1;\r\n                case 1:\r\n                    if (!(tokenizer.tokenType !== 6 /* End */)) return [3 /*break*/, 7];\r\n                    token = tokenizer.tokenType;\r\n                    if (!(token === 0 /* Data */)) return [3 /*break*/, 2];\r\n                    if (inSaveFrame) {\r\n                        return [2 /*return*/, error(tokenizer.lineNumber, 'Unexpected data block inside a save frame.')];\r\n                    }\r\n                    if (blockCtx.categoryNames.length > 0) {\r\n                        dataBlocks.push(Data.Block(blockCtx.categoryNames, blockCtx.categories, blockHeader, saveFrames));\r\n                    }\r\n                    blockHeader = data.substring(tokenizer.tokenStart + 5, tokenizer.tokenEnd);\r\n                    blockCtx = FrameContext();\r\n                    saveFrames = [];\r\n                    moveNext(tokenizer);\r\n                    return [3 /*break*/, 6];\r\n                case 2:\r\n                    if (!(token === 1 /* Save */)) return [3 /*break*/, 3];\r\n                    saveHeader = data.substring(tokenizer.tokenStart + 5, tokenizer.tokenEnd);\r\n                    if (saveHeader.length === 0) {\r\n                        if (saveCtx.categoryNames.length > 0) {\r\n                            saveFrames[saveFrames.length] = saveFrame;\r\n                        }\r\n                        inSaveFrame = false;\r\n                    }\r\n                    else {\r\n                        if (inSaveFrame) {\r\n                            return [2 /*return*/, error(tokenizer.lineNumber, 'Save frames cannot be nested.')];\r\n                        }\r\n                        inSaveFrame = true;\r\n                        safeHeader = data.substring(tokenizer.tokenStart + 5, tokenizer.tokenEnd);\r\n                        saveCtx = FrameContext();\r\n                        saveFrame = Data.SafeFrame(saveCtx.categoryNames, saveCtx.categories, safeHeader);\r\n                    }\r\n                    moveNext(tokenizer);\r\n                    return [3 /*break*/, 6];\r\n                case 3:\r\n                    if (!(token === 2 /* Loop */)) return [3 /*break*/, 5];\r\n                    return [4 /*yield*/, handleLoop(tokenizer, inSaveFrame ? saveCtx : blockCtx)];\r\n                case 4:\r\n                    cat = _a.sent();\r\n                    if (cat.hasError) {\r\n                        return [2 /*return*/, error(cat.errorLine, cat.errorMessage)];\r\n                    }\r\n                    return [3 /*break*/, 6];\r\n                case 5:\r\n                    if (token === 4 /* ColumnName */) {\r\n                        cat = handleSingle(tokenizer, inSaveFrame ? saveCtx : blockCtx);\r\n                        if (cat.hasError) {\r\n                            return [2 /*return*/, error(cat.errorLine, cat.errorMessage)];\r\n                        }\r\n                        // Out of options\r\n                    }\r\n                    else {\r\n                        return [2 /*return*/, error(tokenizer.lineNumber, 'Unexpected token. Expected data_, loop_, or data name.')];\r\n                    }\r\n                    _a.label = 6;\r\n                case 6: return [3 /*break*/, 1];\r\n                case 7:\r\n                    // Check if the latest save frame was closed.\r\n                    if (inSaveFrame) {\r\n                        return [2 /*return*/, error(tokenizer.lineNumber, \"Unfinished save frame (\" + saveFrame.header + \").\")];\r\n                    }\r\n                    if (blockCtx.categoryNames.length > 0) {\r\n                        dataBlocks.push(Data.Block(blockCtx.categoryNames, blockCtx.categories, blockHeader, saveFrames));\r\n                    }\r\n                    return [2 /*return*/, result(Data.File(dataBlocks))];\r\n            }\r\n        });\r\n    });\r\n}\r\nfunction parse(data) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Parse CIF', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0: return [4 /*yield*/, parseInternal(data, ctx)];\r\n                case 1: return [2 /*return*/, _a.sent()];\r\n            }\r\n        });\r\n    }); });\r\n}\r\nexports.default = parse;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/cif/text/parser.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/common/text/column/token.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/common/text/column/token.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar number_parser_1 = __webpack_require__(/*! ../number-parser */ \"./build/node_modules/mol-io/reader/common/text/number-parser.js\");\r\nfunction TokenColumnProvider(tokens) {\r\n    return function (type) {\r\n        return TokenColumn(tokens, type);\r\n    };\r\n}\r\nexports.default = TokenColumnProvider;\r\nfunction TokenColumn(tokens, schema) {\r\n    var data = tokens.data, indices = tokens.indices, rowCount = tokens.count;\r\n    var type = schema.valueType;\r\n    var value = type === 'str'\r\n        ? function (row) { return data.substring(indices[2 * row], indices[2 * row + 1]); }\r\n        : type === 'int'\r\n            ? function (row) { return number_parser_1.parseInt(data, indices[2 * row], indices[2 * row + 1]) || 0; }\r\n            : function (row) { return number_parser_1.parseFloat(data, indices[2 * row], indices[2 * row + 1]) || 0; };\r\n    return {\r\n        schema: schema,\r\n        '@array': void 0,\r\n        isDefined: true,\r\n        rowCount: rowCount,\r\n        value: value,\r\n        valueKind: function (row) { return 0 /* Present */; },\r\n        toArray: function (params) { return db_1.ColumnHelpers.createAndFillArray(rowCount, value, params); },\r\n        areValuesEqual: areValuesEqualProvider(tokens)\r\n    };\r\n}\r\nexports.TokenColumn = TokenColumn;\r\nfunction areValuesEqualProvider(tokens) {\r\n    var data = tokens.data, indices = tokens.indices;\r\n    return function (rowA, rowB) {\r\n        var aS = indices[2 * rowA], bS = indices[2 * rowB];\r\n        var len = indices[2 * rowA + 1] - aS;\r\n        if (len !== indices[2 * rowB + 1] - bS)\r\n            return false;\r\n        for (var i = 0; i < len; i++) {\r\n            if (data.charCodeAt(i + aS) !== data.charCodeAt(i + bS)) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    };\r\n}\r\nexports.areValuesEqualProvider = areValuesEqualProvider;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/common/text/column/token.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/common/text/number-parser.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/common/text/number-parser.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * from https://github.com/dsehnal/CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Efficient integer and float parsers.\r\n *\r\n * For the purposes of parsing numbers from the mmCIF data representations,\r\n * up to 4 times faster than JS parseInt/parseFloat.\r\n */\r\nfunction parseIntSkipLeadingWhitespace(str, start, end) {\r\n    while (start < end && str.charCodeAt(start) === 32)\r\n        start++;\r\n    return parseInt(str, start, end);\r\n}\r\nexports.parseIntSkipLeadingWhitespace = parseIntSkipLeadingWhitespace;\r\nfunction parseInt(str, start, end) {\r\n    var ret = 0, neg = 1;\r\n    if (str.charCodeAt(start) === 45 /* - */) {\r\n        neg = -1;\r\n        start++;\r\n    }\r\n    for (; start < end; start++) {\r\n        var c = str.charCodeAt(start) - 48;\r\n        if (c > 9 || c < 0)\r\n            return (neg * ret) | 0;\r\n        else\r\n            ret = (10 * ret + c) | 0;\r\n    }\r\n    return neg * ret;\r\n}\r\nexports.parseInt = parseInt;\r\nfunction parseScientific(main, str, start, end) {\r\n    // handle + in '1e+1' separately.\r\n    if (str.charCodeAt(start) === 43 /* + */)\r\n        start++;\r\n    return main * Math.pow(10.0, parseInt(str, start, end));\r\n}\r\nfunction parseFloatSkipLeadingWhitespace(str, start, end) {\r\n    while (start < end && str.charCodeAt(start) === 32)\r\n        start++;\r\n    return parseFloat(str, start, end);\r\n}\r\nexports.parseFloatSkipLeadingWhitespace = parseFloatSkipLeadingWhitespace;\r\nfunction parseFloat(str, start, end) {\r\n    var neg = 1.0, ret = 0.0, point = 0.0, div = 1.0;\r\n    if (str.charCodeAt(start) === 45) {\r\n        neg = -1.0;\r\n        ++start;\r\n    }\r\n    while (start < end) {\r\n        var c = str.charCodeAt(start) - 48;\r\n        if (c >= 0 && c < 10) {\r\n            ret = ret * 10 + c;\r\n            ++start;\r\n        }\r\n        else if (c === -2) { // .\r\n            ++start;\r\n            while (start < end) {\r\n                c = str.charCodeAt(start) - 48;\r\n                if (c >= 0 && c < 10) {\r\n                    point = 10.0 * point + c;\r\n                    div = 10.0 * div;\r\n                    ++start;\r\n                }\r\n                else if (c === 53 || c === 21) { // 'e'/'E'\r\n                    return parseScientific(neg * (ret + point / div), str, start + 1, end);\r\n                }\r\n                else {\r\n                    return neg * (ret + point / div);\r\n                }\r\n            }\r\n            return neg * (ret + point / div);\r\n        }\r\n        else if (c === 53 || c === 21) { // 'e'/'E'\r\n            return parseScientific(neg * ret, str, start + 1, end);\r\n        }\r\n        else\r\n            break;\r\n    }\r\n    return neg * ret;\r\n}\r\nexports.parseFloat = parseFloat;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/common/text/number-parser.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/common/text/tokenizer.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/common/text/tokenizer.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * mostly from https://github.com/dsehnal/CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nfunction Tokenizer(data) {\r\n    return {\r\n        data: data,\r\n        position: 0,\r\n        length: data.length,\r\n        lineNumber: 1,\r\n        tokenStart: 0,\r\n        tokenEnd: 0\r\n    };\r\n}\r\nexports.Tokenizer = Tokenizer;\r\n(function (Tokenizer) {\r\n    function getTokenString(state) {\r\n        return state.data.substring(state.tokenStart, state.tokenEnd);\r\n    }\r\n    Tokenizer.getTokenString = getTokenString;\r\n    /** Resets the state */\r\n    function reset(state) {\r\n        state.position = 0;\r\n        state.lineNumber = 1;\r\n        state.tokenStart = 0;\r\n        state.tokenEnd = 0;\r\n    }\r\n    Tokenizer.reset = reset;\r\n    /**\r\n     * Eat everything until a newline occurs.\r\n     */\r\n    function eatLine(state) {\r\n        var data = state.data;\r\n        while (state.position < state.length) {\r\n            switch (data.charCodeAt(state.position)) {\r\n                case 10: // \\n\r\n                    state.tokenEnd = state.position;\r\n                    ++state.position;\r\n                    ++state.lineNumber;\r\n                    return;\r\n                case 13: // \\r\r\n                    state.tokenEnd = state.position;\r\n                    ++state.position;\r\n                    ++state.lineNumber;\r\n                    if (data.charCodeAt(state.position) === 10) {\r\n                        ++state.position;\r\n                    }\r\n                    return;\r\n                default:\r\n                    ++state.position;\r\n                    break;\r\n            }\r\n        }\r\n        state.tokenEnd = state.position;\r\n    }\r\n    Tokenizer.eatLine = eatLine;\r\n    /** Sets the current token start to the current position */\r\n    function markStart(state) {\r\n        state.tokenStart = state.position;\r\n    }\r\n    Tokenizer.markStart = markStart;\r\n    /** Sets the current token start to current position and moves to the next line. */\r\n    function markLine(state) {\r\n        state.tokenStart = state.position;\r\n        eatLine(state);\r\n    }\r\n    Tokenizer.markLine = markLine;\r\n    /** Advance the state by the given number of lines and return line starts/ends as tokens. */\r\n    function readLine(state) {\r\n        markLine(state);\r\n        return getTokenString(state);\r\n    }\r\n    Tokenizer.readLine = readLine;\r\n    function readLinesChunk(state, count, tokens) {\r\n        for (var i = 0; i < count; i++) {\r\n            markLine(state);\r\n            TokenBuilder.addUnchecked(tokens, state.tokenStart, state.tokenEnd);\r\n        }\r\n    }\r\n    /** Advance the state by the given number of lines and return line starts/ends as tokens. */\r\n    function readLines(state, count) {\r\n        var lineTokens = TokenBuilder.create(state, count * 2);\r\n        readLinesChunk(state, count, lineTokens);\r\n        return lineTokens;\r\n    }\r\n    Tokenizer.readLines = readLines;\r\n    /** Advance the state by the given number of lines and return line starts/ends as tokens. */\r\n    function readLinesAsync(state, count, ctx, initialLineCount) {\r\n        if (initialLineCount === void 0) { initialLineCount = 100000; }\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var length, lineTokens, linesAlreadyRead;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        length = state.length;\r\n                        lineTokens = TokenBuilder.create(state, count * 2);\r\n                        linesAlreadyRead = 0;\r\n                        return [4 /*yield*/, mol_task_1.chunkedSubtask(ctx, initialLineCount, state, function (chunkSize, state) {\r\n                                var linesToRead = Math.min(count - linesAlreadyRead, chunkSize);\r\n                                readLinesChunk(state, linesToRead, lineTokens);\r\n                                linesAlreadyRead += linesToRead;\r\n                                return linesToRead;\r\n                            }, function (ctx, state) { return ctx.update({ message: 'Parsing...', current: state.position, max: length }); })];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [2 /*return*/, lineTokens];\r\n                }\r\n            });\r\n        });\r\n    }\r\n    Tokenizer.readLinesAsync = readLinesAsync;\r\n    /**\r\n     * Eat everything until a whitespace/newline occurs.\r\n     */\r\n    function eatValue(state) {\r\n        while (state.position < state.length) {\r\n            switch (state.data.charCodeAt(state.position)) {\r\n                case 9: // \\t\r\n                case 10: // \\n\r\n                case 13: // \\r\r\n                case 32: // ' '\r\n                    state.tokenEnd = state.position;\r\n                    return;\r\n                default:\r\n                    ++state.position;\r\n                    break;\r\n            }\r\n        }\r\n        state.tokenEnd = state.position;\r\n    }\r\n    Tokenizer.eatValue = eatValue;\r\n    /**\r\n     * Skips all the whitespace - space, tab, newline, CR\r\n     * Handles incrementing line count.\r\n     */\r\n    function skipWhitespace(state) {\r\n        var prev = 10;\r\n        while (state.position < state.length) {\r\n            var c = state.data.charCodeAt(state.position);\r\n            switch (c) {\r\n                case 9: // '\\t'\r\n                case 32: // ' '\r\n                    prev = c;\r\n                    ++state.position;\r\n                    break;\r\n                case 10: // \\n\r\n                    // handle \\r\\n\r\n                    if (prev !== 13) {\r\n                        ++state.lineNumber;\r\n                    }\r\n                    prev = c;\r\n                    ++state.position;\r\n                    break;\r\n                case 13: // \\r\r\n                    prev = c;\r\n                    ++state.position;\r\n                    ++state.lineNumber;\r\n                    break;\r\n                default:\r\n                    return prev;\r\n            }\r\n        }\r\n        return prev;\r\n    }\r\n    Tokenizer.skipWhitespace = skipWhitespace;\r\n    /** Trims spaces and tabs */\r\n    function trim(state, start, end) {\r\n        var data = state.data;\r\n        var s = start, e = end - 1;\r\n        var c = data.charCodeAt(s);\r\n        while ((c === 9 || c === 32) && s <= e)\r\n            c = data.charCodeAt(++s);\r\n        c = data.charCodeAt(e);\r\n        while ((c === 9 || c === 32) && e >= s)\r\n            c = data.charCodeAt(--e);\r\n        state.tokenStart = s;\r\n        state.tokenEnd = e + 1;\r\n        state.position = end;\r\n    }\r\n    Tokenizer.trim = trim;\r\n})(Tokenizer = exports.Tokenizer || (exports.Tokenizer = {}));\r\nfunction trimStr(data, start, end) {\r\n    var s = start, e = end - 1;\r\n    var c = data.charCodeAt(s);\r\n    while ((c === 9 || c === 32) && s <= e)\r\n        c = data.charCodeAt(++s);\r\n    c = data.charCodeAt(e);\r\n    while ((c === 9 || c === 32) && e >= s)\r\n        c = data.charCodeAt(--e);\r\n    return data.substring(s, e + 1);\r\n}\r\nexports.trimStr = trimStr;\r\nvar TokenBuilder;\r\n(function (TokenBuilder) {\r\n    function resize(builder) {\r\n        // scale the size using golden ratio, because why not.\r\n        var newBuffer = new Uint32Array((1.61 * builder.indices.length) | 0);\r\n        newBuffer.set(builder.indices);\r\n        builder.indices = newBuffer;\r\n        builder.indicesLenMinus2 = (newBuffer.length - 2) | 0;\r\n    }\r\n    function add(tokens, start, end) {\r\n        var builder = tokens;\r\n        if (builder.offset > builder.indicesLenMinus2) {\r\n            resize(builder);\r\n        }\r\n        builder.indices[builder.offset++] = start;\r\n        builder.indices[builder.offset++] = end;\r\n        tokens.count++;\r\n    }\r\n    TokenBuilder.add = add;\r\n    function addUnchecked(tokens, start, end) {\r\n        tokens.indices[tokens.offset++] = start;\r\n        tokens.indices[tokens.offset++] = end;\r\n        tokens.count++;\r\n    }\r\n    TokenBuilder.addUnchecked = addUnchecked;\r\n    function create(tokenizer, size) {\r\n        size = Math.max(10, size);\r\n        return {\r\n            data: tokenizer.data,\r\n            indicesLenMinus2: (size - 2) | 0,\r\n            count: 0,\r\n            offset: 0,\r\n            indices: new Uint32Array(size)\r\n        };\r\n    }\r\n    TokenBuilder.create = create;\r\n})(TokenBuilder = exports.TokenBuilder || (exports.TokenBuilder = {}));\r\nexports.default = Tokenizer;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/common/text/tokenizer.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-io/reader/result.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-io/reader/result.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/*\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * from https://github.com/dsehnal/CIFTools.js\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ReaderResult;\r\n(function (ReaderResult) {\r\n    function error(message, line) {\r\n        if (line === void 0) { line = -1; }\r\n        return new Error(message, line);\r\n    }\r\n    ReaderResult.error = error;\r\n    function success(result, warnings) {\r\n        if (warnings === void 0) { warnings = []; }\r\n        return new Success(result, warnings);\r\n    }\r\n    ReaderResult.success = success;\r\n})(ReaderResult || (ReaderResult = {}));\r\nvar Error = /** @class */ (function () {\r\n    function Error(message, line) {\r\n        this.message = message;\r\n        this.line = line;\r\n        this.isError = true;\r\n    }\r\n    Error.prototype.toString = function () {\r\n        if (this.line >= 0) {\r\n            return \"[Line \" + this.line + \"] \" + this.message;\r\n        }\r\n        return this.message;\r\n    };\r\n    return Error;\r\n}());\r\nexports.Error = Error;\r\nvar Success = /** @class */ (function () {\r\n    function Success(result, warnings) {\r\n        this.result = result;\r\n        this.warnings = warnings;\r\n        this.isError = false;\r\n    }\r\n    return Success;\r\n}());\r\nexports.Success = Success;\r\nexports.default = ReaderResult;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-io/reader/result.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./geometry/symmetry-operator */ \"./build/node_modules/mol-math/geometry/symmetry-operator.js\"));\r\n__export(__webpack_require__(/*! ./geometry/spacegroup/construction */ \"./build/node_modules/mol-math/geometry/spacegroup/construction.js\"));\r\n__export(__webpack_require__(/*! ./geometry/lookup3d/common */ \"./build/node_modules/mol-math/geometry/lookup3d/common.js\"));\r\n__export(__webpack_require__(/*! ./geometry/lookup3d/grid */ \"./build/node_modules/mol-math/geometry/lookup3d/grid.js\"));\r\n__export(__webpack_require__(/*! ./geometry/primitives/box3d */ \"./build/node_modules/mol-math/geometry/primitives/box3d.js\"));\r\n__export(__webpack_require__(/*! ./geometry/primitives/sphere3d */ \"./build/node_modules/mol-math/geometry/primitives/sphere3d.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/lookup3d/common.js":
+/*!*****************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/lookup3d/common.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Result;\r\n(function (Result) {\r\n    function add(result, index, distSq) {\r\n        result.squaredDistances[result.count] = distSq;\r\n        result.indices[result.count++] = index;\r\n    }\r\n    Result.add = add;\r\n    function reset(result) {\r\n        result.count = 0;\r\n    }\r\n    Result.reset = reset;\r\n    function create() {\r\n        return { count: 0, indices: [], squaredDistances: [] };\r\n    }\r\n    Result.create = create;\r\n})(Result = exports.Result || (exports.Result = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/lookup3d/common.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/lookup3d/grid.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/lookup3d/grid.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar common_1 = __webpack_require__(/*! ./common */ \"./build/node_modules/mol-math/geometry/lookup3d/common.js\");\r\nvar box3d_1 = __webpack_require__(/*! ../primitives/box3d */ \"./build/node_modules/mol-math/geometry/primitives/box3d.js\");\r\nvar sphere3d_1 = __webpack_require__(/*! ../primitives/sphere3d */ \"./build/node_modules/mol-math/geometry/primitives/sphere3d.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! ../../linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nfunction GridLookup3D(data) {\r\n    return new GridLookup3DImpl(data);\r\n}\r\nexports.GridLookup3D = GridLookup3D;\r\nvar GridLookup3DImpl = /** @class */ (function () {\r\n    function GridLookup3DImpl(data) {\r\n        var structure = build(data);\r\n        this.ctx = createContext(structure);\r\n        this.boundary = { box: structure.boundingBox, sphere: structure.boundingSphere };\r\n    }\r\n    GridLookup3DImpl.prototype.find = function (x, y, z, radius) {\r\n        this.ctx.x = x;\r\n        this.ctx.y = y;\r\n        this.ctx.z = z;\r\n        this.ctx.radius = radius;\r\n        this.ctx.isCheck = false;\r\n        query(this.ctx);\r\n        return this.ctx.result;\r\n    };\r\n    GridLookup3DImpl.prototype.check = function (x, y, z, radius) {\r\n        this.ctx.x = x;\r\n        this.ctx.y = y;\r\n        this.ctx.z = z;\r\n        this.ctx.radius = radius;\r\n        this.ctx.isCheck = true;\r\n        return query(this.ctx);\r\n    };\r\n    return GridLookup3DImpl;\r\n}());\r\nfunction _build(state) {\r\n    var expandedBox = state.expandedBox, _a = state.size, sX = _a[0], sY = _a[1], sZ = _a[2], _b = state.data, px = _b.x, py = _b.y, pz = _b.z, radius = _b.radius, indices = _b.indices, count = state.count, delta = state.delta;\r\n    var n = sX * sY * sZ;\r\n    var _c = expandedBox.min, minX = _c[0], minY = _c[1], minZ = _c[2];\r\n    var maxRadius = 0;\r\n    var bucketCount = 0;\r\n    var grid = new Uint32Array(n);\r\n    var bucketIndex = new Int32Array(count);\r\n    for (var t = 0, _t = int_1.OrderedSet.size(indices); t < _t; t++) {\r\n        var i = int_1.OrderedSet.getAt(indices, t);\r\n        var x = Math.floor((px[i] - minX) / delta[0]);\r\n        var y = Math.floor((py[i] - minY) / delta[1]);\r\n        var z = Math.floor((pz[i] - minZ) / delta[2]);\r\n        var idx = (((x * sY) + y) * sZ) + z;\r\n        if ((grid[idx] += 1) === 1) {\r\n            bucketCount += 1;\r\n        }\r\n        bucketIndex[t] = idx;\r\n    }\r\n    if (radius) {\r\n        for (var t = 0, _t = int_1.OrderedSet.size(indices); t < _t; t++) {\r\n            var i = int_1.OrderedSet.getAt(indices, t);\r\n            if (radius[i] > maxRadius)\r\n                maxRadius = radius[i];\r\n        }\r\n    }\r\n    var bucketCounts = new Int32Array(bucketCount);\r\n    for (var i = 0, j = 0; i < n; i++) {\r\n        var c = grid[i];\r\n        if (c > 0) {\r\n            grid[i] = j + 1;\r\n            bucketCounts[j] = c;\r\n            j += 1;\r\n        }\r\n    }\r\n    var bucketOffset = new Uint32Array(count);\r\n    for (var i = 1; i < count; ++i) {\r\n        bucketOffset[i] += bucketOffset[i - 1] + bucketCounts[i - 1];\r\n    }\r\n    var bucketFill = new Int32Array(bucketCount);\r\n    var bucketArray = new Int32Array(count);\r\n    for (var i = 0; i < count; i++) {\r\n        var bucketIdx = grid[bucketIndex[i]];\r\n        if (bucketIdx > 0) {\r\n            var k = bucketIdx - 1;\r\n            bucketArray[bucketOffset[k] + bucketFill[k]] = i;\r\n            bucketFill[k] += 1;\r\n        }\r\n    }\r\n    return {\r\n        size: state.size,\r\n        bucketArray: bucketArray,\r\n        bucketCounts: bucketCounts,\r\n        bucketOffset: bucketOffset,\r\n        grid: grid,\r\n        delta: delta,\r\n        min: state.expandedBox.min,\r\n        data: state.data,\r\n        maxRadius: maxRadius,\r\n        expandedBox: state.expandedBox,\r\n        boundingBox: state.boundingBox,\r\n        boundingSphere: state.boundingSphere\r\n    };\r\n}\r\nfunction build(data) {\r\n    var boundingBox = box3d_1.Box3D.computeBounding(data);\r\n    // need to expand the grid bounds to avoid rounding errors\r\n    var expandedBox = box3d_1.Box3D.expand(boundingBox, linear_algebra_1.Vec3.create(0.5, 0.5, 0.5));\r\n    var boundingSphere = sphere3d_1.Sphere3D.computeBounding(data);\r\n    var indices = data.indices;\r\n    var S = linear_algebra_1.Vec3.sub(linear_algebra_1.Vec3.zero(), expandedBox.max, expandedBox.min);\r\n    var delta, size;\r\n    var elementCount = int_1.OrderedSet.size(indices);\r\n    if (elementCount > 0) {\r\n        // size of the box\r\n        // required \"grid volume\" so that each cell contains on average 32 elements.\r\n        var V = Math.ceil(elementCount / 32);\r\n        var f = Math.pow(V / (S[0] * S[1] * S[2]), 1 / 3);\r\n        size = [Math.ceil(S[0] * f), Math.ceil(S[1] * f), Math.ceil(S[2] * f)];\r\n        delta = [S[0] / size[0], S[1] / size[1], S[2] / size[2]];\r\n    }\r\n    else {\r\n        delta = S;\r\n        size = [1, 1, 1];\r\n    }\r\n    var inputData = {\r\n        x: data.x,\r\n        y: data.y,\r\n        z: data.z,\r\n        indices: indices,\r\n        radius: data.radius\r\n    };\r\n    var state = {\r\n        size: size,\r\n        data: inputData,\r\n        expandedBox: expandedBox,\r\n        boundingBox: boundingBox,\r\n        boundingSphere: boundingSphere,\r\n        count: elementCount,\r\n        delta: delta\r\n    };\r\n    return _build(state);\r\n}\r\nfunction createContext(structure) {\r\n    return { structure: structure, x: 0.1, y: 0.1, z: 0.1, radius: 0.1, result: common_1.Result.create(), isCheck: false };\r\n}\r\nfunction query(ctx) {\r\n    var _a = ctx.structure, min = _a.min, _b = _a.size, sX = _b[0], sY = _b[1], sZ = _b[2], bucketOffset = _a.bucketOffset, bucketCounts = _a.bucketCounts, bucketArray = _a.bucketArray, grid = _a.grid, _c = _a.data, px = _c.x, py = _c.y, pz = _c.z, indices = _c.indices, radius = _c.radius, delta = _a.delta, maxRadius = _a.maxRadius;\r\n    var inputRadius = ctx.radius, isCheck = ctx.isCheck, x = ctx.x, y = ctx.y, z = ctx.z, result = ctx.result;\r\n    var r = inputRadius + maxRadius;\r\n    var rSq = r * r;\r\n    common_1.Result.reset(result);\r\n    var loX = Math.max(0, Math.floor((x - r - min[0]) / delta[0]));\r\n    var loY = Math.max(0, Math.floor((y - r - min[1]) / delta[1]));\r\n    var loZ = Math.max(0, Math.floor((z - r - min[2]) / delta[2]));\r\n    var hiX = Math.min(sX - 1, Math.floor((x + r - min[0]) / delta[0]));\r\n    var hiY = Math.min(sY - 1, Math.floor((y + r - min[1]) / delta[1]));\r\n    var hiZ = Math.min(sZ - 1, Math.floor((z + r - min[2]) / delta[2]));\r\n    if (loX > hiX || loY > hiY || loZ > hiZ)\r\n        return false;\r\n    for (var ix = loX; ix <= hiX; ix++) {\r\n        for (var iy = loY; iy <= hiY; iy++) {\r\n            for (var iz = loZ; iz <= hiZ; iz++) {\r\n                var bucketIdx = grid[(((ix * sY) + iy) * sZ) + iz];\r\n                if (bucketIdx === 0)\r\n                    continue;\r\n                var k = bucketIdx - 1;\r\n                var offset = bucketOffset[k];\r\n                var count = bucketCounts[k];\r\n                var end = offset + count;\r\n                for (var i = offset; i < end; i++) {\r\n                    var idx = int_1.OrderedSet.getAt(indices, bucketArray[i]);\r\n                    var dx = px[idx] - x;\r\n                    var dy = py[idx] - y;\r\n                    var dz = pz[idx] - z;\r\n                    var distSq = dx * dx + dy * dy + dz * dz;\r\n                    if (distSq <= rSq) {\r\n                        if (maxRadius > 0 && Math.sqrt(distSq) - radius[idx] > inputRadius)\r\n                            continue;\r\n                        if (isCheck)\r\n                            return true;\r\n                        common_1.Result.add(result, bucketArray[i], distSq);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return result.count > 0;\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/lookup3d/grid.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/primitives/box3d.js":
+/*!******************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/primitives/box3d.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! ../../linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar Box3D;\r\n(function (Box3D) {\r\n    function create(min, max) { return { min: min, max: max }; }\r\n    Box3D.create = create;\r\n    function computeBounding(data) {\r\n        var min = [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE];\r\n        var max = [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE];\r\n        var x = data.x, y = data.y, z = data.z, indices = data.indices;\r\n        for (var t = 0, _t = int_1.OrderedSet.size(indices); t < _t; t++) {\r\n            var i = int_1.OrderedSet.getAt(indices, t);\r\n            min[0] = Math.min(x[i], min[0]);\r\n            min[1] = Math.min(y[i], min[1]);\r\n            min[2] = Math.min(z[i], min[2]);\r\n            max[0] = Math.max(x[i], max[0]);\r\n            max[1] = Math.max(y[i], max[1]);\r\n            max[2] = Math.max(z[i], max[2]);\r\n        }\r\n        return { min: linear_algebra_1.Vec3.create(min[0], min[1], min[2]), max: linear_algebra_1.Vec3.create(max[0], max[1], max[2]) };\r\n    }\r\n    Box3D.computeBounding = computeBounding;\r\n    function size(box) {\r\n        return linear_algebra_1.Vec3.sub(linear_algebra_1.Vec3.zero(), box.max, box.min);\r\n    }\r\n    Box3D.size = size;\r\n    function expand(box, delta) {\r\n        return {\r\n            min: linear_algebra_1.Vec3.sub(linear_algebra_1.Vec3.zero(), box.min, delta),\r\n            max: linear_algebra_1.Vec3.add(linear_algebra_1.Vec3.zero(), box.max, delta)\r\n        };\r\n    }\r\n    Box3D.expand = expand;\r\n})(Box3D || (Box3D = {}));\r\nexports.Box3D = Box3D;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/primitives/box3d.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/primitives/sphere3d.js":
+/*!*********************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/primitives/sphere3d.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! ../../linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar Sphere3D;\r\n(function (Sphere3D) {\r\n    function create(center, radius) {\r\n        return { center: center, radius: radius };\r\n    }\r\n    Sphere3D.create = create;\r\n    function computeBounding(data) {\r\n        var x = data.x, y = data.y, z = data.z, indices = data.indices;\r\n        var cx = 0, cy = 0, cz = 0;\r\n        var radiusSq = 0;\r\n        var size = int_1.OrderedSet.size(indices);\r\n        for (var t = 0; t < size; t++) {\r\n            var i = int_1.OrderedSet.getAt(indices, t);\r\n            cx += x[i];\r\n            cy += y[i];\r\n            cz += z[i];\r\n        }\r\n        if (size > 0) {\r\n            cx /= size;\r\n            cy /= size;\r\n            cz /= size;\r\n        }\r\n        for (var t = 0; t < size; t++) {\r\n            var i = int_1.OrderedSet.getAt(indices, t);\r\n            var dx = x[i] - cx, dy = y[i] - cy, dz = z[i] - cz;\r\n            var d = dx * dx + dy * dy + dz * dz;\r\n            if (d > radiusSq)\r\n                radiusSq = d;\r\n        }\r\n        return { center: linear_algebra_1.Vec3.create(cx, cy, cz), radius: Math.sqrt(radiusSq) };\r\n    }\r\n    Sphere3D.computeBounding = computeBounding;\r\n})(Sphere3D || (Sphere3D = {}));\r\nexports.Sphere3D = Sphere3D;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/primitives/sphere3d.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/spacegroup/construction.js":
+/*!*************************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/spacegroup/construction.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! ../../linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar tables_1 = __webpack_require__(/*! ./tables */ \"./build/node_modules/mol-math/geometry/spacegroup/tables.js\");\r\nvar geometry_1 = __webpack_require__(/*! ../../geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar SpacegroupCell;\r\n(function (SpacegroupCell) {\r\n    // Create a 'P 1' with cellsize [1, 1, 1]\r\n    SpacegroupCell.Zero = create('P 1', linear_algebra_1.Vec3.create(1, 1, 1), linear_algebra_1.Vec3.create(Math.PI / 2, Math.PI / 2, Math.PI / 2));\r\n    // True if 'P 1' with cellsize [1, 1, 1]\r\n    function isZero(cell) {\r\n        return cell.index === 0 && cell.size[0] === 1 && cell.size[1] === 1 && cell.size[1] === 1;\r\n    }\r\n    SpacegroupCell.isZero = isZero;\r\n    // returns Zero cell if the spacegroup does not exist\r\n    function create(nameOrNumber, size, anglesInRadians) {\r\n        var index = tables_1.getSpacegroupIndex(nameOrNumber);\r\n        if (index < 0)\r\n            return SpacegroupCell.Zero;\r\n        var alpha = anglesInRadians[0];\r\n        var beta = anglesInRadians[1];\r\n        var gamma = anglesInRadians[2];\r\n        var xScale = size[0], yScale = size[1], zScale = size[2];\r\n        var z1 = Math.cos(beta);\r\n        var z2 = (Math.cos(alpha) - Math.cos(beta) * Math.cos(gamma)) / Math.sin(gamma);\r\n        var z3 = Math.sqrt(1.0 - z1 * z1 - z2 * z2);\r\n        var x = [xScale, 0.0, 0.0];\r\n        var y = [Math.cos(gamma) * yScale, Math.sin(gamma) * yScale, 0.0];\r\n        var z = [z1 * zScale, z2 * zScale, z3 * zScale];\r\n        var fromFractional = linear_algebra_1.Mat4.ofRows([\r\n            [x[0], y[0], z[0], 0],\r\n            [0, y[1], z[1], 0],\r\n            [0, 0, z[2], 0],\r\n            [0, 0, 0, 1.0]\r\n        ]);\r\n        var toFractional = linear_algebra_1.Mat4.invert(linear_algebra_1.Mat4.zero(), fromFractional);\r\n        return { index: index, size: size, anglesInRadians: anglesInRadians, toFractional: toFractional, fromFractional: fromFractional };\r\n    }\r\n    SpacegroupCell.create = create;\r\n})(SpacegroupCell || (SpacegroupCell = {}));\r\nexports.SpacegroupCell = SpacegroupCell;\r\nvar Spacegroup;\r\n(function (Spacegroup) {\r\n    // P1 with [1, 1, 1] cell.\r\n    Spacegroup.ZeroP1 = create(SpacegroupCell.Zero);\r\n    function create(cell) {\r\n        var operators = tables_1.GroupData[cell.index].map(function (i) { return getOperatorMatrix(tables_1.OperatorData[i]); });\r\n        return { name: tables_1.SpacegroupNames[cell.index], cell: cell, operators: operators };\r\n    }\r\n    Spacegroup.create = create;\r\n    var _tempVec = linear_algebra_1.Vec3.zero(), _tempMat = linear_algebra_1.Mat4.zero();\r\n    function updateOperatorMatrix(spacegroup, index, i, j, k, target) {\r\n        _tempVec[0] = i;\r\n        _tempVec[1] = j;\r\n        _tempVec[2] = k;\r\n        linear_algebra_1.Mat4.fromTranslation(_tempMat, _tempVec);\r\n        return linear_algebra_1.Mat4.mul(target, linear_algebra_1.Mat4.mul(target, linear_algebra_1.Mat4.mul(target, spacegroup.cell.fromFractional, _tempMat), spacegroup.operators[index]), spacegroup.cell.toFractional);\r\n    }\r\n    Spacegroup.updateOperatorMatrix = updateOperatorMatrix;\r\n    function getSymmetryOperator(spacegroup, index, i, j, k) {\r\n        var operator = updateOperatorMatrix(spacegroup, index, i, j, k, linear_algebra_1.Mat4.zero());\r\n        console.log(linear_algebra_1.Mat4.makeTable(operator));\r\n        console.log({ index: index, i: i, j: j, k: k });\r\n        return geometry_1.SymmetryOperator.create(index + 1 + \"_\" + (5 + i) + (5 + j) + (5 + k), operator, linear_algebra_1.Vec3.create(i, j, k));\r\n    }\r\n    Spacegroup.getSymmetryOperator = getSymmetryOperator;\r\n    function getOperatorMatrix(ids) {\r\n        var r1 = tables_1.TransformData[ids[0]];\r\n        var r2 = tables_1.TransformData[ids[1]];\r\n        var r3 = tables_1.TransformData[ids[2]];\r\n        return linear_algebra_1.Mat4.ofRows([r1, r2, r3, [0, 0, 0, 1]]);\r\n    }\r\n})(Spacegroup || (Spacegroup = {}));\r\nexports.Spacegroup = Spacegroup;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/spacegroup/construction.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/spacegroup/tables.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/spacegroup/tables.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TransformData = [\r\n    [1.0, 0.0, 0.0, 0.0],\r\n    [0.0, 1.0, 0.0, 0.0],\r\n    [0.0, 0.0, 1.0, 0.0],\r\n    [-1.0, 0.0, 0.0, 0.0],\r\n    [0.0, -1.0, 0.0, 0.0],\r\n    [0.0, 0.0, -1.0, 0.0],\r\n    [0.0, 1.0, 0.0, 0.5],\r\n    [1.0, 0.0, 0.0, 0.5],\r\n    [-1.0, 0.0, 0.0, 0.5],\r\n    [0.0, 0.0, 1.0, 0.5],\r\n    [0.0, -1.0, 0.0, 0.5],\r\n    [0.0, 0.0, -1.0, 0.5],\r\n    [1.0, 0.0, 0.0, 0.25],\r\n    [0.0, -1.0, 0.0, 0.25],\r\n    [0.0, 0.0, 1.0, 0.25],\r\n    [-1.0, 0.0, 0.0, 0.25],\r\n    [0.0, 1.0, 0.0, 0.25],\r\n    [0.0, -1.0, 0.0, 0.75],\r\n    [0.0, 0.0, 1.0, 0.75],\r\n    [0.0, 1.0, 0.0, 0.75],\r\n    [1.0, 0.0, 0.0, 0.75],\r\n    [-1.0, 0.0, 0.0, 0.75],\r\n    [0.0, 0.0, -1.0, 0.25],\r\n    [0.0, 0.0, -1.0, 0.75],\r\n    [1.0, -1.0, 0.0, 0.0],\r\n    [-1.0, 1.0, 0.0, 0.0],\r\n    [0.0, 0.0, 1.0, 0.333333333333333],\r\n    [0.0, 0.0, 1.0, 0.666666666666667],\r\n    [1.0, 0.0, 0.0, 0.666666666666667],\r\n    [0.0, 1.0, 0.0, 0.333333333333333],\r\n    [0.0, -1.0, 0.0, 0.666666666666667],\r\n    [1.0, -1.0, 0.0, 0.333333333333333],\r\n    [-1.0, 1.0, 0.0, 0.666666666666667],\r\n    [-1.0, 0.0, 0.0, 0.333333333333333],\r\n    [1.0, 0.0, 0.0, 0.333333333333333],\r\n    [0.0, 1.0, 0.0, 0.666666666666667],\r\n    [0.0, -1.0, 0.0, 0.333333333333333],\r\n    [1.0, -1.0, 0.0, 0.666666666666667],\r\n    [-1.0, 1.0, 0.0, 0.333333333333333],\r\n    [-1.0, 0.0, 0.0, 0.666666666666667],\r\n    [0.0, 0.0, -1.0, 0.333333333333333],\r\n    [0.0, 0.0, -1.0, 0.666666666666667],\r\n    [0.0, 0.0, 1.0, 0.833333333333333],\r\n    [0.0, 0.0, 1.0, 0.166666666666667],\r\n    [0.0, 0.0, -1.0, 0.833333333333333],\r\n    [0.0, 0.0, -1.0, 0.166666666666667],\r\n];\r\nexports.OperatorData = [\r\n    [0, 1, 2],\r\n    [3, 4, 5],\r\n    [3, 1, 5],\r\n    [3, 6, 5],\r\n    [7, 6, 2],\r\n    [8, 6, 5],\r\n    [0, 4, 2],\r\n    [0, 4, 9],\r\n    [7, 10, 2],\r\n    [7, 10, 9],\r\n    [0, 10, 2],\r\n    [8, 10, 5],\r\n    [3, 1, 11],\r\n    [3, 6, 11],\r\n    [0, 10, 9],\r\n    [8, 6, 11],\r\n    [3, 4, 2],\r\n    [0, 4, 5],\r\n    [3, 4, 9],\r\n    [7, 10, 5],\r\n    [8, 4, 9],\r\n    [8, 10, 9],\r\n    [8, 10, 2],\r\n    [0, 6, 9],\r\n    [3, 10, 9],\r\n    [0, 10, 11],\r\n    [7, 1, 9],\r\n    [8, 1, 11],\r\n    [7, 4, 11],\r\n    [7, 6, 9],\r\n    [7, 10, 11],\r\n    [3, 10, 2],\r\n    [8, 1, 5],\r\n    [0, 4, 11],\r\n    [3, 1, 2],\r\n    [3, 1, 9],\r\n    [7, 4, 2],\r\n    [8, 1, 2],\r\n    [8, 1, 9],\r\n    [3, 6, 9],\r\n    [7, 4, 9],\r\n    [8, 6, 2],\r\n    [8, 6, 9],\r\n    [3, 6, 2],\r\n    [12, 13, 14],\r\n    [15, 16, 14],\r\n    [12, 17, 18],\r\n    [15, 19, 18],\r\n    [20, 13, 18],\r\n    [21, 16, 18],\r\n    [20, 17, 14],\r\n    [21, 19, 14],\r\n    [0, 1, 5],\r\n    [8, 10, 11],\r\n    [7, 6, 11],\r\n    [7, 6, 5],\r\n    [8, 4, 2],\r\n    [7, 4, 5],\r\n    [7, 1, 5],\r\n    [7, 1, 11],\r\n    [0, 10, 5],\r\n    [0, 1, 11],\r\n    [0, 6, 11],\r\n    [0, 6, 5],\r\n    [3, 10, 11],\r\n    [8, 4, 11],\r\n    [15, 13, 22],\r\n    [12, 16, 22],\r\n    [15, 17, 23],\r\n    [12, 19, 23],\r\n    [21, 13, 23],\r\n    [20, 16, 23],\r\n    [21, 17, 22],\r\n    [20, 19, 22],\r\n    [4, 0, 2],\r\n    [1, 3, 2],\r\n    [4, 0, 14],\r\n    [1, 3, 18],\r\n    [4, 0, 9],\r\n    [1, 3, 9],\r\n    [4, 0, 18],\r\n    [1, 3, 14],\r\n    [10, 7, 9],\r\n    [6, 8, 9],\r\n    [4, 7, 14],\r\n    [6, 3, 18],\r\n    [10, 0, 18],\r\n    [1, 8, 14],\r\n    [1, 3, 5],\r\n    [4, 0, 5],\r\n    [6, 8, 11],\r\n    [10, 7, 11],\r\n    [1, 3, 11],\r\n    [4, 0, 11],\r\n    [10, 7, 2],\r\n    [6, 8, 2],\r\n    [3, 10, 22],\r\n    [7, 1, 23],\r\n    [8, 4, 23],\r\n    [0, 6, 22],\r\n    [1, 0, 5],\r\n    [4, 3, 5],\r\n    [1, 0, 23],\r\n    [4, 3, 22],\r\n    [10, 7, 14],\r\n    [6, 8, 18],\r\n    [8, 6, 22],\r\n    [7, 10, 23],\r\n    [4, 3, 11],\r\n    [1, 0, 11],\r\n    [1, 0, 22],\r\n    [4, 3, 23],\r\n    [10, 7, 18],\r\n    [6, 8, 14],\r\n    [8, 6, 23],\r\n    [7, 10, 22],\r\n    [6, 7, 11],\r\n    [10, 8, 11],\r\n    [8, 1, 23],\r\n    [0, 10, 22],\r\n    [3, 6, 22],\r\n    [7, 4, 23],\r\n    [4, 3, 2],\r\n    [1, 0, 2],\r\n    [10, 8, 2],\r\n    [6, 7, 2],\r\n    [4, 3, 9],\r\n    [1, 0, 9],\r\n    [10, 8, 9],\r\n    [6, 7, 9],\r\n    [4, 8, 14],\r\n    [6, 0, 18],\r\n    [10, 3, 18],\r\n    [1, 7, 14],\r\n    [4, 8, 18],\r\n    [6, 0, 14],\r\n    [10, 3, 14],\r\n    [1, 7, 18],\r\n    [6, 7, 5],\r\n    [10, 8, 5],\r\n    [6, 8, 5],\r\n    [10, 7, 5],\r\n    [8, 1, 22],\r\n    [0, 10, 23],\r\n    [3, 6, 23],\r\n    [7, 4, 22],\r\n    [4, 24, 2],\r\n    [25, 3, 2],\r\n    [4, 24, 26],\r\n    [25, 3, 27],\r\n    [4, 24, 27],\r\n    [25, 3, 26],\r\n    [28, 29, 26],\r\n    [30, 31, 26],\r\n    [32, 33, 26],\r\n    [34, 35, 27],\r\n    [36, 37, 27],\r\n    [38, 39, 27],\r\n    [2, 0, 1],\r\n    [1, 2, 0],\r\n    [1, 25, 5],\r\n    [24, 0, 5],\r\n    [39, 36, 40],\r\n    [35, 38, 40],\r\n    [37, 34, 40],\r\n    [33, 30, 41],\r\n    [29, 32, 41],\r\n    [31, 28, 41],\r\n    [5, 3, 4],\r\n    [4, 5, 3],\r\n    [25, 1, 5],\r\n    [0, 24, 5],\r\n    [24, 4, 5],\r\n    [3, 25, 5],\r\n    [4, 3, 41],\r\n    [25, 1, 40],\r\n    [24, 4, 41],\r\n    [3, 25, 40],\r\n    [4, 3, 40],\r\n    [25, 1, 41],\r\n    [24, 4, 40],\r\n    [3, 25, 41],\r\n    [35, 34, 40],\r\n    [37, 36, 40],\r\n    [39, 38, 40],\r\n    [29, 28, 41],\r\n    [31, 30, 41],\r\n    [33, 32, 41],\r\n    [3, 5, 4],\r\n    [5, 4, 3],\r\n    [25, 1, 2],\r\n    [0, 24, 2],\r\n    [24, 4, 2],\r\n    [3, 25, 2],\r\n    [25, 1, 9],\r\n    [0, 24, 9],\r\n    [24, 4, 9],\r\n    [3, 25, 9],\r\n    [30, 33, 26],\r\n    [32, 29, 26],\r\n    [28, 31, 26],\r\n    [36, 39, 27],\r\n    [38, 35, 27],\r\n    [34, 37, 27],\r\n    [0, 2, 1],\r\n    [2, 1, 0],\r\n    [30, 33, 42],\r\n    [32, 29, 42],\r\n    [28, 31, 42],\r\n    [36, 39, 43],\r\n    [38, 35, 43],\r\n    [34, 37, 43],\r\n    [7, 9, 6],\r\n    [9, 6, 7],\r\n    [25, 1, 11],\r\n    [0, 24, 11],\r\n    [24, 4, 11],\r\n    [3, 25, 11],\r\n    [35, 34, 44],\r\n    [37, 36, 44],\r\n    [39, 38, 44],\r\n    [29, 28, 45],\r\n    [31, 30, 45],\r\n    [33, 32, 45],\r\n    [8, 11, 10],\r\n    [11, 10, 8],\r\n    [1, 25, 2],\r\n    [24, 0, 2],\r\n    [1, 25, 42],\r\n    [24, 0, 43],\r\n    [1, 25, 43],\r\n    [24, 0, 42],\r\n    [1, 25, 27],\r\n    [24, 0, 26],\r\n    [1, 25, 26],\r\n    [24, 0, 27],\r\n    [1, 25, 9],\r\n    [24, 0, 9],\r\n    [4, 24, 5],\r\n    [25, 3, 5],\r\n    [4, 24, 11],\r\n    [25, 3, 11],\r\n    [1, 0, 40],\r\n    [4, 3, 44],\r\n    [0, 24, 45],\r\n    [1, 0, 41],\r\n    [4, 3, 45],\r\n    [0, 24, 44],\r\n    [0, 24, 40],\r\n    [0, 24, 41],\r\n    [2, 3, 4],\r\n    [5, 3, 1],\r\n    [5, 0, 4],\r\n    [4, 2, 3],\r\n    [1, 5, 3],\r\n    [4, 5, 0],\r\n    [2, 7, 6],\r\n    [2, 8, 10],\r\n    [5, 8, 6],\r\n    [5, 7, 10],\r\n    [1, 9, 7],\r\n    [4, 9, 8],\r\n    [1, 11, 8],\r\n    [4, 11, 7],\r\n    [9, 0, 6],\r\n    [9, 3, 10],\r\n    [11, 3, 6],\r\n    [11, 0, 10],\r\n    [6, 2, 7],\r\n    [10, 2, 8],\r\n    [6, 5, 8],\r\n    [10, 5, 7],\r\n    [9, 7, 1],\r\n    [9, 8, 4],\r\n    [11, 8, 1],\r\n    [11, 7, 4],\r\n    [6, 9, 0],\r\n    [10, 9, 3],\r\n    [6, 11, 3],\r\n    [10, 11, 0],\r\n    [9, 7, 6],\r\n    [9, 8, 10],\r\n    [11, 8, 6],\r\n    [11, 7, 10],\r\n    [6, 9, 7],\r\n    [10, 9, 8],\r\n    [6, 11, 8],\r\n    [10, 11, 7],\r\n    [2, 3, 10],\r\n    [5, 8, 1],\r\n    [11, 0, 4],\r\n    [10, 2, 3],\r\n    [1, 5, 8],\r\n    [4, 11, 0],\r\n    [5, 0, 1],\r\n    [2, 0, 4],\r\n    [2, 3, 1],\r\n    [1, 5, 0],\r\n    [4, 2, 0],\r\n    [1, 2, 3],\r\n    [11, 8, 10],\r\n    [11, 7, 6],\r\n    [9, 7, 10],\r\n    [9, 8, 6],\r\n    [10, 11, 8],\r\n    [6, 11, 7],\r\n    [10, 9, 7],\r\n    [6, 9, 8],\r\n    [5, 8, 10],\r\n    [5, 7, 6],\r\n    [2, 7, 10],\r\n    [2, 8, 6],\r\n    [4, 11, 8],\r\n    [1, 11, 7],\r\n    [4, 9, 7],\r\n    [1, 9, 8],\r\n    [11, 3, 10],\r\n    [11, 0, 6],\r\n    [9, 0, 10],\r\n    [9, 3, 6],\r\n    [10, 5, 8],\r\n    [6, 5, 7],\r\n    [10, 2, 7],\r\n    [6, 2, 8],\r\n    [11, 8, 4],\r\n    [11, 7, 1],\r\n    [9, 7, 4],\r\n    [9, 8, 1],\r\n    [10, 11, 3],\r\n    [6, 11, 0],\r\n    [10, 9, 0],\r\n    [6, 9, 3],\r\n    [22, 15, 13],\r\n    [22, 12, 16],\r\n    [14, 12, 13],\r\n    [14, 15, 16],\r\n    [13, 22, 15],\r\n    [16, 22, 12],\r\n    [13, 14, 12],\r\n    [16, 14, 15],\r\n    [22, 21, 17],\r\n    [22, 20, 19],\r\n    [14, 20, 17],\r\n    [14, 21, 19],\r\n    [13, 23, 21],\r\n    [16, 23, 20],\r\n    [13, 18, 20],\r\n    [16, 18, 21],\r\n    [23, 15, 17],\r\n    [23, 12, 19],\r\n    [18, 12, 17],\r\n    [18, 15, 19],\r\n    [17, 22, 21],\r\n    [19, 22, 20],\r\n    [17, 14, 20],\r\n    [19, 14, 21],\r\n    [23, 21, 13],\r\n    [23, 20, 16],\r\n    [18, 20, 13],\r\n    [18, 21, 16],\r\n    [17, 23, 15],\r\n    [19, 23, 12],\r\n    [17, 18, 12],\r\n    [19, 18, 15],\r\n    [5, 0, 6],\r\n    [2, 7, 4],\r\n    [9, 3, 1],\r\n    [6, 5, 0],\r\n    [4, 2, 7],\r\n    [1, 9, 3],\r\n    [0, 2, 4],\r\n    [3, 2, 1],\r\n    [0, 5, 1],\r\n    [2, 1, 3],\r\n    [2, 4, 0],\r\n    [5, 1, 0],\r\n    [7, 9, 10],\r\n    [8, 9, 6],\r\n    [7, 11, 6],\r\n    [9, 6, 8],\r\n    [9, 10, 7],\r\n    [11, 6, 7],\r\n    [1, 7, 11],\r\n    [4, 8, 11],\r\n    [1, 8, 9],\r\n    [4, 7, 9],\r\n    [0, 9, 10],\r\n    [3, 9, 6],\r\n    [3, 11, 10],\r\n    [0, 11, 6],\r\n    [2, 6, 8],\r\n    [2, 10, 7],\r\n    [5, 6, 7],\r\n    [5, 10, 8],\r\n    [6, 0, 11],\r\n    [10, 3, 11],\r\n    [6, 3, 9],\r\n    [10, 0, 9],\r\n    [7, 2, 10],\r\n    [8, 2, 6],\r\n    [8, 5, 10],\r\n    [7, 5, 6],\r\n    [9, 1, 8],\r\n    [9, 4, 7],\r\n    [11, 1, 7],\r\n    [11, 4, 8],\r\n    [7, 9, 4],\r\n    [8, 9, 1],\r\n    [8, 11, 4],\r\n    [7, 11, 1],\r\n    [9, 6, 3],\r\n    [9, 10, 0],\r\n    [11, 6, 0],\r\n    [11, 10, 3],\r\n    [19, 12, 23],\r\n    [13, 15, 22],\r\n    [16, 21, 18],\r\n    [17, 20, 14],\r\n    [20, 14, 17],\r\n    [21, 18, 16],\r\n    [15, 22, 13],\r\n    [12, 23, 19],\r\n    [18, 16, 21],\r\n    [14, 17, 20],\r\n    [23, 19, 12],\r\n    [22, 13, 15],\r\n    [19, 20, 22],\r\n    [13, 21, 23],\r\n    [16, 15, 14],\r\n    [17, 12, 18],\r\n    [20, 18, 13],\r\n    [21, 14, 19],\r\n    [15, 23, 17],\r\n    [12, 22, 16],\r\n    [18, 19, 15],\r\n    [14, 13, 12],\r\n    [23, 16, 20],\r\n    [22, 17, 21],\r\n    [16, 12, 22],\r\n    [17, 15, 23],\r\n    [19, 21, 14],\r\n    [13, 20, 18],\r\n    [12, 14, 13],\r\n    [15, 18, 19],\r\n    [21, 22, 17],\r\n    [20, 23, 16],\r\n    [14, 16, 15],\r\n    [18, 17, 12],\r\n    [22, 19, 20],\r\n    [23, 13, 21],\r\n    [16, 20, 23],\r\n    [17, 21, 22],\r\n    [19, 15, 18],\r\n    [13, 12, 14],\r\n    [12, 18, 17],\r\n    [15, 14, 16],\r\n    [21, 23, 13],\r\n    [20, 22, 19],\r\n    [14, 19, 21],\r\n    [18, 13, 20],\r\n    [22, 16, 12],\r\n    [23, 17, 15],\r\n    [19, 12, 22],\r\n    [17, 21, 23],\r\n    [16, 15, 18],\r\n    [13, 20, 14],\r\n    [20, 14, 13],\r\n    [15, 18, 16],\r\n    [21, 23, 17],\r\n    [12, 22, 19],\r\n    [18, 16, 15],\r\n    [14, 13, 20],\r\n    [22, 19, 12],\r\n    [23, 17, 21],\r\n    [3, 2, 4],\r\n    [3, 5, 1],\r\n    [0, 5, 4],\r\n    [2, 4, 3],\r\n    [5, 1, 3],\r\n    [5, 4, 0],\r\n    [1, 7, 9],\r\n    [4, 8, 9],\r\n    [1, 8, 11],\r\n    [4, 7, 11],\r\n    [0, 9, 6],\r\n    [3, 9, 10],\r\n    [3, 11, 6],\r\n    [0, 11, 10],\r\n    [2, 6, 7],\r\n    [2, 10, 8],\r\n    [5, 6, 8],\r\n    [5, 10, 7],\r\n    [6, 0, 9],\r\n    [10, 3, 9],\r\n    [6, 3, 11],\r\n    [10, 0, 11],\r\n    [7, 2, 6],\r\n    [8, 2, 10],\r\n    [8, 5, 6],\r\n    [7, 5, 10],\r\n    [9, 1, 7],\r\n    [9, 4, 8],\r\n    [11, 1, 8],\r\n    [11, 4, 7],\r\n    [7, 9, 1],\r\n    [8, 9, 4],\r\n    [8, 11, 1],\r\n    [7, 11, 4],\r\n    [9, 6, 0],\r\n    [9, 10, 3],\r\n    [11, 6, 3],\r\n    [11, 10, 0],\r\n    [8, 9, 10],\r\n    [8, 11, 6],\r\n    [7, 11, 10],\r\n    [9, 10, 8],\r\n    [11, 6, 8],\r\n    [11, 10, 7],\r\n    [6, 0, 2],\r\n    [10, 3, 2],\r\n    [6, 3, 5],\r\n    [10, 0, 5],\r\n    [7, 2, 1],\r\n    [8, 2, 4],\r\n    [8, 5, 1],\r\n    [7, 5, 4],\r\n    [9, 1, 0],\r\n    [9, 4, 3],\r\n    [11, 1, 3],\r\n    [11, 4, 0],\r\n    [1, 7, 2],\r\n    [4, 8, 2],\r\n    [1, 8, 5],\r\n    [4, 7, 5],\r\n    [0, 9, 1],\r\n    [3, 9, 4],\r\n    [3, 11, 1],\r\n    [0, 11, 4],\r\n    [2, 6, 0],\r\n    [2, 10, 3],\r\n    [5, 6, 3],\r\n    [5, 10, 0],\r\n    [0, 2, 6],\r\n    [3, 2, 10],\r\n    [3, 5, 6],\r\n    [0, 5, 10],\r\n    [2, 1, 7],\r\n    [2, 4, 8],\r\n    [5, 1, 8],\r\n    [5, 4, 7],\r\n    [16, 12, 14],\r\n    [13, 21, 18],\r\n    [19, 15, 23],\r\n    [17, 20, 22],\r\n    [12, 14, 16],\r\n    [21, 18, 13],\r\n    [15, 23, 19],\r\n    [20, 22, 17],\r\n    [14, 16, 12],\r\n    [18, 13, 21],\r\n    [23, 19, 15],\r\n    [22, 17, 20],\r\n    [19, 20, 18],\r\n    [17, 15, 14],\r\n    [16, 21, 22],\r\n    [13, 12, 23],\r\n    [20, 18, 19],\r\n    [15, 14, 17],\r\n    [21, 22, 16],\r\n    [12, 23, 13],\r\n    [18, 19, 20],\r\n    [14, 17, 15],\r\n    [22, 16, 21],\r\n    [23, 13, 12],\r\n    [6, 0, 5],\r\n    [10, 3, 5],\r\n    [6, 3, 2],\r\n    [10, 0, 2],\r\n    [7, 2, 4],\r\n    [8, 2, 1],\r\n    [8, 5, 4],\r\n    [7, 5, 1],\r\n    [9, 1, 3],\r\n    [9, 4, 0],\r\n    [11, 1, 0],\r\n    [11, 4, 3],\r\n    [1, 7, 5],\r\n    [4, 8, 5],\r\n    [1, 8, 2],\r\n    [4, 7, 2],\r\n    [0, 9, 4],\r\n    [3, 9, 1],\r\n    [3, 11, 4],\r\n    [0, 11, 1],\r\n    [2, 6, 3],\r\n    [2, 10, 0],\r\n    [5, 6, 0],\r\n    [5, 10, 3],\r\n    [0, 2, 10],\r\n    [3, 2, 6],\r\n    [3, 5, 10],\r\n    [0, 5, 6],\r\n    [2, 1, 8],\r\n    [2, 4, 7],\r\n    [5, 1, 7],\r\n    [5, 4, 8],\r\n    [21, 17, 23],\r\n    [20, 16, 22],\r\n    [12, 13, 18],\r\n    [15, 19, 14],\r\n    [23, 21, 17],\r\n    [22, 20, 16],\r\n    [18, 12, 13],\r\n    [14, 15, 19],\r\n    [17, 23, 21],\r\n    [16, 22, 20],\r\n    [13, 18, 12],\r\n    [19, 14, 15],\r\n    [21, 13, 22],\r\n    [20, 19, 23],\r\n    [12, 17, 14],\r\n    [15, 16, 18],\r\n    [23, 15, 13],\r\n    [22, 12, 19],\r\n    [18, 20, 17],\r\n    [14, 21, 16],\r\n    [17, 22, 15],\r\n    [16, 23, 12],\r\n    [13, 14, 20],\r\n    [19, 18, 21],\r\n    [15, 17, 22],\r\n    [12, 16, 23],\r\n    [20, 13, 14],\r\n    [21, 19, 18],\r\n    [22, 21, 13],\r\n    [23, 20, 19],\r\n    [14, 12, 17],\r\n    [18, 15, 16],\r\n    [13, 23, 15],\r\n    [19, 22, 12],\r\n    [17, 18, 20],\r\n    [16, 14, 21],\r\n    [15, 13, 23],\r\n    [12, 19, 22],\r\n    [20, 17, 18],\r\n    [21, 16, 14],\r\n    [22, 15, 17],\r\n    [23, 12, 16],\r\n    [14, 20, 13],\r\n    [18, 21, 19],\r\n    [13, 22, 21],\r\n    [19, 23, 20],\r\n    [17, 14, 12],\r\n    [16, 18, 15],\r\n    [6, 5, 3],\r\n    [4, 9, 3],\r\n    [9, 3, 4],\r\n    [5, 7, 4],\r\n    [4, 5, 7],\r\n    [5, 3, 6],\r\n];\r\nexports.GroupData = [\r\n    [0],\r\n    [0, 1],\r\n    [0, 2],\r\n    [0, 3],\r\n    [0, 2, 4, 5],\r\n    [0, 6],\r\n    [0, 7],\r\n    [0, 6, 4, 8],\r\n    [0, 7, 4, 9],\r\n    [0, 6, 2, 1],\r\n    [0, 3, 1, 10],\r\n    [0, 6, 2, 1, 4, 8, 5, 11],\r\n    [0, 12, 1, 7],\r\n    [0, 1, 13, 14],\r\n    [0, 12, 1, 7, 4, 15, 11, 9],\r\n    [0, 16, 2, 17],\r\n    [0, 18, 12, 17],\r\n    [0, 16, 5, 19],\r\n    [0, 20, 13, 19],\r\n    [0, 18, 12, 17, 4, 21, 15, 19],\r\n    [0, 16, 2, 17, 4, 22, 5, 19],\r\n    [0, 16, 2, 17, 23, 24, 13, 25, 26, 20, 27, 28, 4, 22, 5, 19],\r\n    [0, 16, 17, 2, 29, 21, 30, 15],\r\n    [0, 20, 13, 19, 29, 31, 32, 33],\r\n    [0, 16, 6, 34],\r\n    [0, 18, 7, 34],\r\n    [0, 16, 7, 35],\r\n    [0, 16, 36, 37],\r\n    [0, 18, 36, 38],\r\n    [0, 16, 14, 39],\r\n    [0, 20, 40, 34],\r\n    [0, 16, 8, 41],\r\n    [0, 18, 8, 42],\r\n    [0, 16, 9, 42],\r\n    [0, 16, 6, 34, 4, 22, 8, 41],\r\n    [0, 18, 7, 34, 4, 21, 9, 41],\r\n    [0, 16, 7, 35, 4, 22, 9, 42],\r\n    [0, 16, 6, 34, 23, 24, 14, 39],\r\n    [0, 16, 10, 43, 23, 24, 7, 35],\r\n    [0, 16, 36, 37, 23, 24, 9, 42],\r\n    [0, 16, 8, 41, 23, 24, 40, 38],\r\n    [0, 16, 6, 34, 23, 24, 14, 39, 26, 20, 40, 38, 4, 22, 8, 41],\r\n    [0, 16, 44, 45, 23, 24, 46, 47, 26, 20, 48, 49, 4, 22, 50, 51],\r\n    [0, 16, 6, 34, 29, 21, 9, 42],\r\n    [0, 16, 8, 41, 29, 21, 7, 35],\r\n    [0, 16, 36, 37, 29, 21, 14, 39],\r\n    [0, 16, 2, 17, 1, 52, 6, 34],\r\n    [0, 16, 2, 17, 53, 54, 9, 42],\r\n    [0, 16, 12, 33, 1, 52, 7, 35],\r\n    [0, 16, 2, 17, 11, 55, 8, 41],\r\n    [0, 56, 2, 57, 1, 58, 6, 37],\r\n    [0, 56, 15, 25, 1, 58, 9, 39],\r\n    [0, 20, 27, 17, 1, 59, 40, 34],\r\n    [0, 56, 12, 28, 1, 58, 7, 38],\r\n    [0, 16, 5, 19, 1, 52, 8, 41],\r\n    [0, 22, 13, 28, 1, 55, 14, 38],\r\n    [0, 18, 13, 60, 1, 61, 14, 43],\r\n    [0, 16, 15, 30, 1, 52, 9, 42],\r\n    [0, 16, 5, 19, 11, 55, 6, 34],\r\n    [0, 21, 12, 19, 1, 54, 7, 41],\r\n    [0, 20, 13, 19, 1, 59, 14, 41],\r\n    [0, 20, 3, 30, 1, 59, 10, 42],\r\n    [0, 18, 12, 17, 1, 61, 7, 34, 4, 21, 15, 19, 11, 54, 9, 41],\r\n    [0, 24, 13, 17, 1, 62, 14, 34, 4, 20, 27, 19, 11, 59, 40, 41],\r\n    [0, 16, 2, 17, 1, 52, 6, 34, 4, 22, 5, 19, 11, 55, 8, 41],\r\n    [0, 16, 12, 33, 1, 52, 7, 35, 4, 22, 15, 30, 11, 55, 9, 42],\r\n    [0, 31, 3, 17, 1, 63, 10, 34, 4, 56, 32, 19, 11, 58, 36, 41],\r\n    [0, 22, 2, 19, 64, 59, 14, 38, 4, 16, 5, 17, 65, 62, 40, 39],\r\n    [0, 16, 2, 17, 1, 52, 6, 34, 23, 24, 13, 25, 64, 62, 14, 39, 26, 20, 27, 28, 65, 59, 40, 38, 4, 22, 5, 19, 11, 55, 8, 41],\r\n    [0, 16, 2, 17, 66, 67, 44, 45, 23, 24, 13, 25, 68, 69, 46, 47, 26, 20, 27, 28, 70, 71, 48, 49, 4, 22, 5, 19, 72, 73, 50, 51],\r\n    [0, 16, 2, 17, 1, 52, 6, 34, 29, 21, 15, 30, 53, 54, 9, 42],\r\n    [0, 16, 5, 19, 1, 52, 8, 41, 29, 21, 12, 33, 53, 54, 7, 35],\r\n    [0, 20, 13, 19, 1, 59, 14, 41, 29, 31, 32, 33, 53, 63, 36, 35],\r\n    [0, 31, 3, 17, 1, 63, 10, 34, 29, 20, 27, 30, 53, 59, 40, 42],\r\n    [0, 16, 74, 75],\r\n    [0, 18, 76, 77],\r\n    [0, 16, 78, 79],\r\n    [0, 18, 80, 81],\r\n    [0, 16, 74, 75, 29, 21, 82, 83],\r\n    [0, 21, 84, 85, 29, 16, 86, 87],\r\n    [0, 16, 88, 89],\r\n    [0, 16, 88, 89, 29, 21, 90, 91],\r\n    [0, 16, 74, 75, 1, 52, 88, 89],\r\n    [0, 16, 78, 79, 1, 52, 92, 93],\r\n    [0, 16, 94, 95, 11, 55, 88, 89],\r\n    [0, 16, 82, 83, 53, 54, 88, 89],\r\n    [0, 16, 74, 75, 1, 52, 88, 89, 29, 21, 82, 83, 53, 54, 90, 91],\r\n    [0, 21, 84, 85, 96, 97, 88, 91, 29, 16, 86, 87, 98, 99, 90, 89],\r\n    [0, 16, 74, 75, 2, 17, 100, 101],\r\n    [0, 16, 94, 95, 5, 19, 100, 101],\r\n    [0, 18, 76, 77, 2, 33, 102, 103],\r\n    [0, 18, 104, 105, 106, 107, 100, 108],\r\n    [0, 16, 78, 79, 2, 17, 109, 108],\r\n    [0, 16, 82, 83, 15, 30, 100, 101],\r\n    [0, 18, 80, 81, 2, 33, 110, 111],\r\n    [0, 18, 112, 113, 114, 115, 100, 108],\r\n    [0, 16, 74, 75, 2, 17, 100, 101, 29, 21, 82, 83, 15, 30, 116, 117],\r\n    [0, 21, 84, 85, 118, 119, 116, 101, 29, 16, 86, 87, 120, 121, 100, 117],\r\n    [0, 16, 74, 75, 6, 34, 122, 123],\r\n    [0, 16, 74, 75, 8, 41, 124, 125],\r\n    [0, 16, 78, 79, 7, 35, 122, 123],\r\n    [0, 16, 82, 83, 9, 42, 122, 123],\r\n    [0, 16, 74, 75, 7, 35, 126, 127],\r\n    [0, 16, 74, 75, 9, 42, 128, 129],\r\n    [0, 16, 78, 79, 6, 34, 126, 127],\r\n    [0, 16, 78, 79, 8, 41, 128, 129],\r\n    [0, 16, 74, 75, 6, 34, 122, 123, 29, 21, 82, 83, 9, 42, 128, 129],\r\n    [0, 16, 74, 75, 7, 35, 126, 127, 29, 21, 82, 83, 8, 41, 124, 125],\r\n    [0, 21, 84, 85, 6, 42, 130, 131, 29, 16, 86, 87, 9, 34, 132, 133],\r\n    [0, 21, 84, 85, 7, 41, 134, 135, 29, 16, 86, 87, 8, 35, 136, 137],\r\n    [0, 16, 89, 88, 2, 17, 122, 123],\r\n    [0, 16, 89, 88, 12, 33, 126, 127],\r\n    [0, 16, 89, 88, 5, 19, 124, 125],\r\n    [0, 16, 89, 88, 15, 30, 128, 129],\r\n    [0, 16, 88, 89, 6, 34, 100, 101],\r\n    [0, 16, 89, 88, 7, 35, 109, 108],\r\n    [0, 16, 89, 88, 8, 41, 138, 139],\r\n    [0, 16, 89, 88, 9, 42, 116, 117],\r\n    [0, 16, 89, 88, 6, 34, 100, 101, 29, 21, 91, 90, 9, 42, 116, 117],\r\n    [0, 16, 89, 88, 7, 35, 109, 108, 29, 21, 91, 90, 8, 41, 138, 139],\r\n    [0, 16, 89, 88, 2, 17, 122, 123, 29, 21, 91, 90, 15, 30, 128, 129],\r\n    [0, 16, 89, 88, 118, 121, 132, 131, 29, 21, 91, 90, 120, 119, 130, 133],\r\n    [0, 16, 74, 75, 2, 17, 100, 101, 1, 52, 88, 89, 6, 34, 122, 123],\r\n    [0, 16, 74, 75, 12, 33, 109, 108, 1, 52, 88, 89, 7, 35, 126, 127],\r\n    [0, 16, 74, 75, 2, 17, 100, 101, 11, 55, 140, 141, 8, 41, 124, 125],\r\n    [0, 16, 74, 75, 2, 17, 100, 101, 53, 54, 90, 91, 9, 42, 128, 129],\r\n    [0, 16, 74, 75, 5, 19, 138, 139, 1, 52, 88, 89, 8, 41, 124, 125],\r\n    [0, 16, 74, 75, 15, 30, 116, 117, 1, 52, 88, 89, 9, 42, 128, 129],\r\n    [0, 16, 94, 95, 5, 19, 100, 101, 11, 55, 88, 89, 6, 34, 124, 125],\r\n    [0, 16, 94, 95, 15, 30, 109, 108, 11, 55, 88, 89, 7, 35, 128, 129],\r\n    [0, 16, 78, 79, 2, 17, 109, 108, 1, 52, 92, 93, 6, 34, 126, 127],\r\n    [0, 16, 78, 79, 12, 33, 100, 101, 1, 52, 92, 93, 7, 35, 122, 123],\r\n    [0, 16, 82, 83, 12, 33, 138, 139, 53, 54, 88, 89, 8, 41, 126, 127],\r\n    [0, 16, 82, 83, 2, 17, 116, 117, 53, 54, 88, 89, 9, 42, 122, 123],\r\n    [0, 16, 78, 79, 5, 19, 116, 117, 1, 52, 92, 93, 8, 41, 128, 129],\r\n    [0, 16, 82, 83, 15, 30, 100, 101, 1, 52, 90, 91, 9, 42, 122, 123],\r\n    [0, 16, 82, 83, 15, 30, 100, 101, 53, 54, 88, 89, 6, 34, 128, 129],\r\n    [0, 16, 82, 83, 5, 19, 109, 108, 53, 54, 88, 89, 7, 35, 124, 125],\r\n    [0, 16, 74, 75, 2, 17, 100, 101, 1, 52, 88, 89, 6, 34, 122, 123, 29, 21, 82, 83, 15, 30, 116, 117, 53, 54, 90, 91, 9, 42, 128, 129],\r\n    [0, 16, 74, 75, 12, 33, 109, 108, 1, 52, 88, 89, 7, 35, 126, 127, 29, 21, 82, 83, 5, 19, 138, 139, 53, 54, 90, 91, 8, 41, 124, 125],\r\n    [0, 21, 84, 85, 118, 119, 116, 101, 96, 97, 88, 91, 9, 34, 132, 133, 29, 16, 86, 87, 120, 121, 100, 117, 98, 99, 90, 89, 6, 42, 130, 131],\r\n    [0, 21, 84, 85, 142, 143, 138, 108, 96, 97, 88, 91, 8, 35, 136, 137, 29, 16, 86, 87, 144, 145, 109, 139, 98, 99, 90, 89, 7, 41, 134, 135],\r\n    [0, 146, 147],\r\n    [0, 148, 149],\r\n    [0, 150, 151],\r\n    [0, 146, 147, 152, 153, 154, 155, 156, 157],\r\n    [0, 158, 159],\r\n    [0, 146, 147, 1, 160, 161],\r\n    [0, 146, 147, 1, 160, 161, 152, 153, 154, 162, 163, 164, 155, 156, 157, 165, 166, 167],\r\n    [0, 158, 159, 1, 168, 169],\r\n    [0, 146, 147, 101, 170, 171],\r\n    [0, 146, 147, 100, 172, 173],\r\n    [0, 148, 149, 174, 175, 171],\r\n    [0, 148, 149, 100, 176, 177],\r\n    [0, 150, 151, 178, 179, 171],\r\n    [0, 150, 151, 100, 180, 181],\r\n    [0, 146, 147, 100, 172, 173, 152, 153, 154, 182, 183, 184, 155, 156, 157, 185, 186, 187],\r\n    [0, 158, 159, 101, 188, 189],\r\n    [0, 146, 147, 122, 190, 191],\r\n    [0, 146, 147, 123, 192, 193],\r\n    [0, 146, 147, 126, 194, 195],\r\n    [0, 146, 147, 127, 196, 197],\r\n    [0, 146, 147, 122, 190, 191, 152, 153, 154, 198, 199, 200, 155, 156, 157, 201, 202, 203],\r\n    [0, 158, 159, 123, 204, 205],\r\n    [0, 146, 147, 126, 194, 195, 152, 153, 154, 206, 207, 208, 155, 156, 157, 209, 210, 211],\r\n    [0, 158, 159, 129, 212, 213],\r\n    [0, 146, 147, 101, 170, 171, 1, 160, 161, 123, 192, 193],\r\n    [0, 146, 147, 108, 214, 215, 1, 160, 161, 127, 196, 197],\r\n    [0, 146, 147, 100, 172, 173, 1, 160, 161, 122, 190, 191],\r\n    [0, 146, 147, 109, 216, 217, 1, 160, 161, 126, 194, 195],\r\n    [0, 146, 147, 100, 172, 173, 1, 160, 161, 122, 190, 191, 152, 153, 154, 182, 183, 184, 162, 163, 164, 198, 199, 200, 155, 156, 157, 185, 186, 187, 165, 166, 167, 201, 202, 203],\r\n    [0, 158, 159, 101, 188, 189, 1, 168, 169, 123, 204, 205],\r\n    [0, 146, 147, 109, 216, 217, 1, 160, 161, 126, 194, 195, 152, 153, 154, 218, 219, 220, 162, 163, 164, 206, 207, 208, 155, 156, 157, 221, 222, 223, 165, 166, 167, 209, 210, 211],\r\n    [0, 158, 159, 117, 224, 225, 1, 168, 169, 129, 212, 213],\r\n    [0, 146, 147, 16, 226, 227],\r\n    [0, 148, 149, 18, 228, 229],\r\n    [0, 150, 151, 18, 230, 231],\r\n    [0, 150, 151, 16, 232, 233],\r\n    [0, 148, 149, 16, 234, 235],\r\n    [0, 146, 147, 18, 236, 237],\r\n    [0, 146, 147, 52, 238, 239],\r\n    [0, 146, 147, 16, 226, 227, 1, 160, 161, 52, 238, 239],\r\n    [0, 146, 147, 18, 236, 237, 1, 160, 161, 61, 240, 241],\r\n    [0, 146, 147, 16, 226, 227, 100, 172, 173, 101, 170, 171],\r\n    [0, 148, 149, 18, 228, 229, 242, 172, 181, 243, 214, 244],\r\n    [0, 150, 151, 18, 230, 231, 245, 172, 177, 246, 214, 247],\r\n    [0, 150, 151, 16, 232, 233, 245, 172, 177, 174, 170, 248],\r\n    [0, 148, 149, 16, 234, 235, 242, 172, 181, 178, 170, 249],\r\n    [0, 146, 147, 18, 236, 237, 100, 172, 173, 108, 214, 215],\r\n    [0, 146, 147, 16, 226, 227, 122, 190, 191, 123, 192, 193],\r\n    [0, 146, 147, 16, 226, 227, 126, 194, 195, 127, 196, 197],\r\n    [0, 146, 147, 18, 236, 237, 126, 194, 195, 123, 192, 193],\r\n    [0, 146, 147, 18, 236, 237, 122, 190, 191, 127, 196, 197],\r\n    [0, 146, 147, 52, 238, 239, 122, 190, 191, 101, 170, 171],\r\n    [0, 146, 147, 61, 240, 241, 126, 194, 195, 101, 170, 171],\r\n    [0, 146, 147, 52, 238, 239, 100, 172, 173, 123, 192, 193],\r\n    [0, 146, 147, 61, 240, 241, 100, 172, 173, 127, 196, 197],\r\n    [0, 146, 147, 16, 226, 227, 100, 172, 173, 101, 170, 171, 1, 160, 161, 52, 239, 238, 122, 190, 191, 123, 192, 193],\r\n    [0, 146, 147, 16, 226, 227, 109, 216, 217, 108, 214, 215, 1, 160, 161, 52, 239, 238, 126, 194, 195, 127, 196, 197],\r\n    [0, 146, 147, 18, 236, 237, 109, 216, 217, 101, 170, 171, 1, 160, 161, 61, 241, 240, 126, 194, 195, 123, 192, 193],\r\n    [0, 146, 147, 18, 236, 237, 100, 172, 173, 108, 214, 215, 1, 160, 161, 61, 241, 240, 122, 190, 191, 127, 196, 197],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 29, 21, 15, 30, 280, 281, 282, 283, 284, 285, 286, 287],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 29, 31, 32, 33, 280, 288, 289, 290, 284, 291, 292, 293],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 53, 54, 9, 42, 300, 301, 302, 303, 304, 305, 306, 307],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 64, 62, 14, 39, 308, 309, 310, 311, 312, 313, 314, 315, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 65, 59, 40, 38, 316, 317, 318, 319, 320, 321, 322, 323, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 11, 55, 8, 41, 324, 325, 326, 327, 328, 329, 330, 331],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 66, 67, 44, 45, 332, 333, 334, 335, 336, 337, 338, 339, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 68, 69, 46, 47, 340, 341, 342, 343, 344, 345, 346, 347, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 70, 71, 48, 49, 348, 349, 350, 351, 352, 353, 354, 355, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 72, 73, 50, 51, 356, 357, 358, 359, 360, 361, 362, 363],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 29, 21, 15, 30, 280, 281, 282, 283, 284, 285, 286, 287, 53, 54, 9, 42, 300, 301, 302, 303, 304, 305, 306, 307],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 1, 59, 14, 41, 168, 325, 318, 311, 169, 313, 330, 323],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 1, 59, 14, 41, 168, 325, 318, 311, 169, 313, 330, 323, 29, 31, 32, 33, 280, 288, 289, 290, 284, 291, 292, 293, 53, 63, 36, 35, 300, 364, 365, 366, 304, 367, 368, 369],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 138, 139, 95, 94, 406, 407, 408, 409, 410, 411, 412, 413],\r\n    [0, 24, 5, 28, 158, 265, 258, 275, 159, 277, 270, 263, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 23, 16, 27, 19, 256, 273, 251, 267, 260, 269, 278, 255, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 26, 22, 13, 17, 264, 250, 274, 259, 268, 261, 254, 279, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 4, 20, 2, 25, 272, 257, 266, 252, 276, 253, 262, 271, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 29, 21, 15, 30, 280, 281, 282, 283, 284, 285, 286, 287, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 450, 415, 440, 429, 454, 431, 420, 445, 458, 447, 436, 425],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 29, 31, 32, 33, 280, 288, 289, 290, 284, 291, 292, 293, 450, 415, 440, 429, 454, 431, 420, 445, 458, 447, 436, 425],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 123, 122, 88, 89, 204, 474, 475, 476, 205, 477, 478, 479],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 123, 122, 88, 89, 204, 474, 475, 476, 205, 477, 478, 479, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 125, 124, 140, 141, 504, 505, 506, 507, 508, 509, 510, 511],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 123, 122, 88, 89, 204, 474, 475, 476, 205, 477, 478, 479, 29, 21, 15, 30, 280, 281, 282, 283, 284, 285, 286, 287, 129, 128, 90, 91, 212, 512, 513, 514, 213, 515, 516, 517],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 129, 128, 90, 91, 212, 512, 513, 514, 213, 515, 516, 517],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 129, 128, 90, 91, 212, 512, 513, 514, 213, 515, 516, 517, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 127, 126, 92, 93, 542, 543, 544, 545, 546, 547, 548, 549],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 29, 31, 32, 33, 280, 288, 289, 290, 284, 291, 292, 293, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 122, 123, 89, 88, 475, 476, 204, 474, 479, 478, 477, 205],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 53, 54, 9, 42, 300, 301, 302, 303, 304, 305, 306, 307, 128, 129, 91, 90, 513, 514, 212, 512, 517, 516, 515, 213],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 128, 129, 91, 90, 513, 514, 212, 512, 517, 516, 515, 213],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225, 53, 54, 9, 42, 300, 301, 302, 303, 304, 305, 306, 307, 122, 123, 89, 88, 475, 476, 204, 474, 479, 478, 477, 205],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 122, 123, 89, 88, 475, 476, 204, 474, 479, 478, 477, 205, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 64, 62, 14, 39, 308, 309, 310, 311, 312, 313, 314, 315, 481, 480, 483, 482, 486, 487, 484, 485, 491, 490, 489, 488, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 65, 59, 40, 38, 316, 317, 318, 319, 320, 321, 322, 323, 493, 492, 495, 494, 498, 499, 496, 497, 503, 502, 501, 500, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 138, 139, 95, 94, 406, 407, 408, 409, 410, 411, 412, 413, 11, 55, 8, 41, 324, 325, 326, 327, 328, 329, 330, 331, 124, 125, 141, 140, 506, 507, 504, 505, 511, 510, 509, 508],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 128, 129, 91, 90, 513, 514, 212, 512, 517, 516, 515, 213, 23, 24, 13, 25, 256, 257, 258, 259, 260, 261, 262, 263, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 64, 62, 14, 39, 308, 309, 310, 311, 312, 313, 314, 315, 519, 518, 521, 520, 524, 525, 522, 523, 529, 528, 527, 526, 26, 20, 27, 28, 264, 265, 266, 267, 268, 269, 270, 271, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 65, 59, 40, 38, 316, 317, 318, 319, 320, 321, 322, 323, 531, 530, 533, 532, 536, 537, 534, 535, 541, 540, 539, 538, 4, 22, 5, 19, 272, 273, 274, 275, 276, 277, 278, 279, 109, 108, 79, 78, 598, 599, 600, 601, 602, 603, 604, 605, 11, 55, 8, 41, 324, 325, 326, 327, 328, 329, 330, 331, 126, 127, 93, 92, 544, 545, 542, 543, 549, 548, 547, 546],\r\n    [0, 24, 5, 28, 158, 265, 258, 275, 159, 277, 270, 263, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 66, 69, 50, 49, 332, 349, 342, 359, 336, 361, 354, 347, 493, 123, 483, 140, 498, 507, 204, 485, 503, 490, 509, 205, 23, 16, 27, 19, 256, 273, 251, 267, 260, 269, 278, 255, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 68, 67, 48, 51, 340, 357, 334, 351, 344, 353, 362, 339, 124, 480, 89, 494, 506, 499, 484, 474, 511, 478, 501, 488, 26, 22, 13, 17, 264, 250, 274, 259, 268, 261, 254, 279, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 70, 73, 46, 45, 348, 333, 358, 343, 352, 345, 338, 363, 122, 492, 141, 482, 475, 487, 496, 505, 479, 510, 489, 500, 4, 20, 2, 25, 272, 257, 266, 252, 276, 253, 262, 271, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 72, 71, 44, 47, 356, 341, 350, 335, 360, 337, 346, 355, 481, 125, 495, 88, 486, 476, 504, 497, 491, 502, 477, 508],\r\n    [0, 24, 5, 28, 158, 265, 258, 275, 159, 277, 270, 263, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 531, 129, 521, 92, 536, 545, 212, 523, 541, 528, 547, 213, 23, 16, 27, 19, 256, 273, 251, 267, 260, 269, 278, 255, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 126, 518, 91, 532, 544, 537, 522, 512, 549, 516, 539, 526, 26, 22, 13, 17, 264, 250, 274, 259, 268, 261, 254, 279, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 128, 530, 93, 520, 513, 525, 534, 543, 517, 548, 527, 538, 4, 20, 2, 25, 272, 257, 266, 252, 276, 253, 262, 271, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 519, 127, 533, 90, 524, 514, 542, 535, 529, 540, 515, 546],\r\n    [0, 16, 2, 17, 158, 250, 251, 252, 159, 253, 254, 255, 100, 101, 75, 74, 370, 371, 188, 372, 373, 374, 375, 189, 1, 52, 6, 34, 168, 294, 295, 296, 169, 297, 298, 299, 122, 123, 89, 88, 475, 476, 204, 474, 479, 478, 477, 205, 29, 21, 15, 30, 280, 281, 282, 283, 284, 285, 286, 287, 116, 117, 83, 82, 376, 377, 224, 378, 379, 380, 381, 225, 53, 54, 9, 42, 300, 301, 302, 303, 304, 305, 306, 307, 128, 129, 91, 90, 513, 514, 212, 512, 517, 516, 515, 213],\r\n    [0, 20, 13, 19, 158, 273, 266, 259, 159, 261, 278, 271, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 1, 59, 14, 41, 168, 325, 318, 311, 169, 313, 330, 323, 551, 550, 553, 552, 556, 557, 554, 555, 561, 560, 559, 558, 29, 31, 32, 33, 280, 288, 289, 290, 284, 291, 292, 293, 450, 415, 440, 429, 454, 431, 420, 445, 458, 447, 436, 425, 53, 63, 36, 35, 300, 364, 365, 366, 304, 367, 368, 369, 563, 562, 565, 564, 568, 569, 566, 567, 573, 572, 571, 570],\r\n    [0, 16],\r\n    [0, 18],\r\n    [0, 16, 26, 20],\r\n    [0, 2, 23, 13],\r\n    [0, 3, 4, 32],\r\n    [0, 2, 29, 15],\r\n    [0, 3, 29, 27],\r\n    [0, 52],\r\n    [0, 63],\r\n    [0, 52, 26, 59],\r\n    [0, 63, 26, 54],\r\n    [0, 52, 16, 1],\r\n    [0, 18, 1, 61],\r\n    [0, 52, 16, 1, 26, 59, 20, 65],\r\n    [0, 31, 1, 63],\r\n    [0, 1, 24, 62],\r\n    [0, 31, 1, 63, 26, 21, 65, 54],\r\n    [0, 2, 57, 56],\r\n    [0, 60, 3, 16],\r\n    [0, 22, 57, 3],\r\n    [0, 2, 28, 20],\r\n    [0, 17, 13, 24],\r\n    [0, 20, 19, 13, 4, 24, 17, 27],\r\n    [0, 22, 57, 3, 4, 16, 60, 32],\r\n    [0, 22, 57, 3, 23, 20, 30, 12, 26, 24, 33, 15, 4, 16, 60, 32],\r\n    [0, 22, 57, 3, 29, 18, 27, 25],\r\n    [0, 22, 3, 57, 1, 55, 10, 37],\r\n    [0, 22, 385, 396, 3, 57, 109, 117],\r\n    [0, 22, 57, 3, 159, 279, 654, 655, 158, 274, 656, 657, 29, 18, 25, 27, 284, 658, 262, 269, 280, 659, 257, 267],\r\n];\r\nexports.ZeroBasedSpacegroupNumbers = {\r\n    'P 1': 0,\r\n    'P -1': 1,\r\n    'P 1 2 1': 2,\r\n    'P 1 21 1': 3,\r\n    'C 1 2 1': 4,\r\n    'P 1 m 1': 5,\r\n    'P 1 c 1': 6,\r\n    'C 1 m 1': 7,\r\n    'C 1 c 1': 8,\r\n    'P 1 2/m 1': 9,\r\n    'P 1 21/m 1': 10,\r\n    'C 1 2/m 1': 11,\r\n    'P 1 2/c 1': 12,\r\n    'P 1 21/c 1': 13,\r\n    'C 1 2/c 1': 14,\r\n    'P 2 2 2': 15,\r\n    'P 2 2 21': 16,\r\n    'P 21 21 2': 17,\r\n    'P 21 21 21': 18,\r\n    'C 2 2 21': 19,\r\n    'C 2 2 2': 20,\r\n    'F 2 2 2': 21,\r\n    'I 2 2 2': 22,\r\n    'I 21 21 21': 23,\r\n    'P m m 2': 24,\r\n    'P m c 21': 25,\r\n    'P c c 2': 26,\r\n    'P m a 2': 27,\r\n    'P c a 21': 28,\r\n    'P n c 2': 29,\r\n    'P m n 21': 30,\r\n    'P b a 2': 31,\r\n    'P n a 21': 32,\r\n    'P n n 2': 33,\r\n    'C m m 2': 34,\r\n    'C m c 21': 35,\r\n    'C c c 2': 36,\r\n    'A m m 2': 37,\r\n    'A b m 2': 38,\r\n    'A m a 2': 39,\r\n    'A b a 2': 40,\r\n    'F m m 2': 41,\r\n    'F d d 2': 42,\r\n    'I m m 2': 43,\r\n    'I b a 2': 44,\r\n    'I m a 2': 45,\r\n    'P 2/m 2/m 2/m': 46,\r\n    'P m m m': 46,\r\n    'P 2/n 2/n 2/n': 47,\r\n    'P n n n': 47,\r\n    'P 2/c 2/c 2/m': 48,\r\n    'P c c m': 48,\r\n    'P 2/b 2/a 2/n': 49,\r\n    'P b a n': 49,\r\n    'P 21/m 2/m 2/a': 50,\r\n    'P m m a': 50,\r\n    'P 2/n 21/n 2/a': 51,\r\n    'P n n a': 51,\r\n    'P 2/m 2/n 21/a': 52,\r\n    'P m n a': 52,\r\n    'P 21/c 2/c 2/a': 53,\r\n    'P c c a': 53,\r\n    'P 21/b 21/a 2/m': 54,\r\n    'P b a m': 54,\r\n    'P 21/c 21/c 2/n': 55,\r\n    'P c c n': 55,\r\n    'P 2/b 21/c 21/m': 56,\r\n    'P b c m': 56,\r\n    'P 21/n 21/n 2/m': 57,\r\n    'P n n m': 57,\r\n    'P 21/m 21/m 2/n': 58,\r\n    'P m m n': 58,\r\n    'P 21/b 2/c 21/n': 59,\r\n    'P b c n': 59,\r\n    'P 21/b 21/c 21/a': 60,\r\n    'P b c a': 60,\r\n    'P 21/n 21/m 21/a': 61,\r\n    'P n m a': 61,\r\n    'C 2/m 2/c 21/m': 62,\r\n    'C m c m': 62,\r\n    'C 2/m 2/c 21/a': 63,\r\n    'C m c a': 63,\r\n    'C 2/m 2/m 2/m': 64,\r\n    'C m m m': 64,\r\n    'C 2/c 2/c 2/m': 65,\r\n    'C c c m': 65,\r\n    'C 2/m 2/m 2/a': 66,\r\n    'C m m a': 66,\r\n    'C 2/c 2/c 2/a': 67,\r\n    'C c c a': 67,\r\n    'F 2/m 2/m 2/m': 68,\r\n    'F m m m': 68,\r\n    'F 2/d 2/d 2/d': 69,\r\n    'F d d d': 69,\r\n    'I 2/m 2/m 2/m': 70,\r\n    'I m m m': 70,\r\n    'I 2/b 2/a 2/m': 71,\r\n    'I b a m': 71,\r\n    'I 21/b 21/c 21/a': 72,\r\n    'I b c a': 72,\r\n    'I 21/m 21/m 21/a': 73,\r\n    'I m m a': 73,\r\n    'P 4': 74,\r\n    'P 41': 75,\r\n    'P 42': 76,\r\n    'P 43': 77,\r\n    'I 4': 78,\r\n    'I 41': 79,\r\n    'P -4': 80,\r\n    'I -4': 81,\r\n    'P 4/m': 82,\r\n    'P 42/m': 83,\r\n    'P 4/n': 84,\r\n    'P 42/n': 85,\r\n    'I 4/m': 86,\r\n    'I 41/a': 87,\r\n    'P 4 2 2': 88,\r\n    'P 4 21 2': 89,\r\n    'P 41 2 2': 90,\r\n    'P 41 21 2': 91,\r\n    'P 42 2 2': 92,\r\n    'P 42 21 2': 93,\r\n    'P 43 2 2': 94,\r\n    'P 43 21 2': 95,\r\n    'I 4 2 2': 96,\r\n    'I 41 2 2': 97,\r\n    'P 4 m m': 98,\r\n    'P 4 b m': 99,\r\n    'P 42 c m': 100,\r\n    'P 42 n m': 101,\r\n    'P 4 c c': 102,\r\n    'P 4 n c': 103,\r\n    'P 42 m c': 104,\r\n    'P 42 b c': 105,\r\n    'I 4 m m': 106,\r\n    'I 4 c m': 107,\r\n    'I 41 m d': 108,\r\n    'I 41 c d': 109,\r\n    'P -4 2 m': 110,\r\n    'P -4 2 c': 111,\r\n    'P -4 21 m': 112,\r\n    'P -4 21 c': 113,\r\n    'P -4 m 2': 114,\r\n    'P -4 c 2': 115,\r\n    'P -4 b 2': 116,\r\n    'P -4 n 2': 117,\r\n    'I -4 m 2': 118,\r\n    'I -4 c 2': 119,\r\n    'I -4 2 m': 120,\r\n    'I -4 2 d': 121,\r\n    'P 4/m 2/m 2/m': 122,\r\n    'P4/m m m': 122,\r\n    'P 4/m 2/c 2/c': 123,\r\n    'P4/m c c': 123,\r\n    'P 4/n 2/b 2/m': 124,\r\n    'P4/n b m': 124,\r\n    'P 4/n 2/n 2/c': 125,\r\n    'P4/n n c': 125,\r\n    'P 4/m 21/b 2/m': 126,\r\n    'P4/m b m': 126,\r\n    'P 4/m 21/n 2/c': 127,\r\n    'P4/m n c': 127,\r\n    'P 4/n 21/m 2/m': 128,\r\n    'P4/n m m': 128,\r\n    'P 4/n 2/c 2/c': 129,\r\n    'P4/n c c': 129,\r\n    'P 42/m 2/m 2/c': 130,\r\n    'P42/m m c': 130,\r\n    'P 42/m 2/c 2/m': 131,\r\n    'P42/m c m': 131,\r\n    'P 42/n 2/b 2/c': 132,\r\n    'P42/n b c': 132,\r\n    'P 42/n 2/n 2/m': 133,\r\n    'P42/n n m': 133,\r\n    'P 42/m 21/b 2/c': 134,\r\n    'P42/m b c': 134,\r\n    'P 42/m 21/n 2/m': 135,\r\n    'P42/m n m': 135,\r\n    'P 42/n 21/m 2/c': 136,\r\n    'P42/n m c': 136,\r\n    'P 42/n 21/c 2/m': 137,\r\n    'P42/n c m': 137,\r\n    'I 4/m 2/m 2/m': 138,\r\n    'I4/m m m': 138,\r\n    'I 4/m 2/c 2/m': 139,\r\n    'I4/m c m': 139,\r\n    'I 41/a 2/m 2/d': 140,\r\n    'I41/a m d': 140,\r\n    'I 41/a 2/c 2/d': 141,\r\n    'I41/a c d': 141,\r\n    'P 3': 142,\r\n    'P 31': 143,\r\n    'P 32': 144,\r\n    'H 3': 145,\r\n    'R 3': 146,\r\n    'P -3': 147,\r\n    'H -3': 148,\r\n    'R -3': 149,\r\n    'P 3 1 2': 150,\r\n    'P 3 2 1': 151,\r\n    'P 31 1 2': 152,\r\n    'P 31 2 1': 153,\r\n    'P 32 1 2': 154,\r\n    'P 32 2 1': 155,\r\n    'H 3 2': 156,\r\n    'R 3 2': 157,\r\n    'P 3 m 1': 158,\r\n    'P 3 1 m': 159,\r\n    'P 3 c 1': 160,\r\n    'P 3 1 c': 161,\r\n    'H 3 m': 162,\r\n    'R 3 m': 163,\r\n    'H 3 c': 164,\r\n    'R 3 c': 165,\r\n    'P -3 1 2/m': 166,\r\n    'P -3 1 m': 166,\r\n    'P -3 1 2/c': 167,\r\n    'P -3 1 c': 167,\r\n    'P -3 2/m 1': 168,\r\n    'P -3 m 1': 168,\r\n    'P -3 2/c 1': 169,\r\n    'P -3 c 1': 169,\r\n    'H -3 2/m': 170,\r\n    'H -3 m': 170,\r\n    'R -3 2/m': 171,\r\n    'R -3 m': 171,\r\n    'H -3 2/c': 172,\r\n    'H -3 c': 172,\r\n    'R -3 2/c': 173,\r\n    'R -3 c': 173,\r\n    'P 6': 174,\r\n    'P 61': 175,\r\n    'P 65': 176,\r\n    'P 62': 177,\r\n    'P 64': 178,\r\n    'P 63': 179,\r\n    'P -6': 180,\r\n    'P 6/m': 181,\r\n    'P 63/m': 182,\r\n    'P 6 2 2': 183,\r\n    'P 61 2 2': 184,\r\n    'P 65 2 2': 185,\r\n    'P 62 2 2': 186,\r\n    'P 64 2 2': 187,\r\n    'P 63 2 2': 188,\r\n    'P 6 m m': 189,\r\n    'P 6 c c': 190,\r\n    'P 63 c m': 191,\r\n    'P 63 m c': 192,\r\n    'P -6 m 2': 193,\r\n    'P -6 c 2': 194,\r\n    'P -6 2 m': 195,\r\n    'P -6 2 c': 196,\r\n    'P 6/m 2/m 2/m': 197,\r\n    'P 6/m m m': 197,\r\n    'P 6/m 2/c 2/c': 198,\r\n    'P 6/m c c': 198,\r\n    'P 63/m 2/c 2/m': 199,\r\n    'P 63/m c m': 199,\r\n    'P 63/m 2/m 2/c': 200,\r\n    'P 63/m m c': 200,\r\n    'P 2 3': 201,\r\n    'F 2 3': 202,\r\n    'I 2 3': 203,\r\n    'P 21 3': 204,\r\n    'I 21 3': 205,\r\n    'P 2/m -3': 206,\r\n    'P m -3': 206,\r\n    'P 2/n -3': 207,\r\n    'P n -3': 207,\r\n    'F 2/m -3': 208,\r\n    'F m -3': 208,\r\n    'F 2/d -3': 209,\r\n    'F d -3': 209,\r\n    'I 2/m -3': 210,\r\n    'I m -3': 210,\r\n    'P 21/a -3': 211,\r\n    'P a -3': 211,\r\n    'I 21/a -3': 212,\r\n    'I a -3': 212,\r\n    'P 4 3 2': 213,\r\n    'P 42 3 2': 214,\r\n    'F 4 3 2': 215,\r\n    'F 41 3 2': 216,\r\n    'I 4 3 2': 217,\r\n    'P 43 3 2': 218,\r\n    'P 41 3 2': 219,\r\n    'I 41 3 2': 220,\r\n    'P -4 3 m': 221,\r\n    'F -4 3 m': 222,\r\n    'I -4 3 m': 223,\r\n    'P -4 3 n': 224,\r\n    'F -4 3 c': 225,\r\n    'I -4 3 d': 226,\r\n    'P 4/m -3 2/m': 227,\r\n    'P m -3 m': 227,\r\n    'P 4/n -3 2/n': 228,\r\n    'P n -3 n': 228,\r\n    'P 42/m -3 2/n': 229,\r\n    'P m -3 n': 229,\r\n    'P 42/n -3 2/m': 230,\r\n    'P n -3 m': 230,\r\n    'F 4/m -3 2/m': 231,\r\n    'F m -3 m': 231,\r\n    'F 4/m -3 2/c': 232,\r\n    'F m -3 c': 232,\r\n    'F 41/d -3 2/m': 233,\r\n    'F d -3 m': 233,\r\n    'F 41/d -3 2/c': 234,\r\n    'F d -3 c': 234,\r\n    'I 4/m -3 2/m': 235,\r\n    'I m -3 m': 235,\r\n    'I 41/a -3 2/d': 236,\r\n    'I a -3 d': 236,\r\n    'P 1 1 2': 237,\r\n    'P 1 1 21': 238,\r\n    'B 1 1 2': 239,\r\n    'B 2': 239,\r\n    'A 1 2 1': 240,\r\n    'C 1 21 1': 241,\r\n    'I 1 2 1': 242,\r\n    'I 2': 242,\r\n    'I 1 21 1': 243,\r\n    'P 1 1 m': 244,\r\n    'P 1 1 b': 245,\r\n    'B 1 1 m': 246,\r\n    'B 1 1 b': 247,\r\n    'P 1 1 2/m': 248,\r\n    'P 1 1 21/m': 249,\r\n    'B 1 1 2/m': 250,\r\n    'P 1 1 2/b': 251,\r\n    'P 1 1 21/b': 252,\r\n    'B 1 1 2/b': 253,\r\n    'P 21 2 2': 254,\r\n    'P 2 21 2': 255,\r\n    'P 21 21 2 (a)': 256,\r\n    'P 21 2 21': 257,\r\n    'P 2 21 21': 258,\r\n    'C 2 2 21a)': 259,\r\n    'C 2 2 2a': 260,\r\n    'F 2 2 2a': 261,\r\n    'I 2 2 2a': 262,\r\n    'P 21/m 21/m 2/n a': 263,\r\n    'P 42 21 2a': 264,\r\n    'I 2 3a': 265,\r\n};\r\nexports.SpacegroupNames = (function () {\r\n    var names = Object.create(null);\r\n    for (var _i = 0, _a = Object.keys(exports.ZeroBasedSpacegroupNumbers); _i < _a.length; _i++) {\r\n        var n = _a[_i];\r\n        names[exports.ZeroBasedSpacegroupNumbers[n]] = n;\r\n    }\r\n    return names;\r\n}());\r\n// return -1 if the spacegroup does not exist.\r\nfunction getSpacegroupIndex(nameOrNumber) {\r\n    var index = typeof nameOrNumber === 'number' ? nameOrNumber - 1 : exports.ZeroBasedSpacegroupNumbers[nameOrNumber];\r\n    if (typeof index === 'undefined' || typeof exports.SpacegroupNames[index] === 'undefined')\r\n        return -1;\r\n    return index;\r\n}\r\nexports.getSpacegroupIndex = getSpacegroupIndex;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/spacegroup/tables.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/geometry/symmetry-operator.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-math/geometry/symmetry-operator.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _3d_1 = __webpack_require__(/*! ../linear-algebra/3d */ \"./build/node_modules/mol-math/linear-algebra/3d.js\");\r\nvar SymmetryOperator;\r\n(function (SymmetryOperator) {\r\n    SymmetryOperator.DefaultName = '1_555';\r\n    SymmetryOperator.Default = create(SymmetryOperator.DefaultName, _3d_1.Mat4.identity());\r\n    var RotationEpsilon = 0.0001;\r\n    function create(name, matrix, hkl) {\r\n        var _hkl = hkl ? _3d_1.Vec3.copy(_3d_1.Vec3.zero(), hkl) : _3d_1.Vec3.zero();\r\n        if (_3d_1.Mat4.isIdentity(matrix))\r\n            return { name: name, matrix: matrix, inverse: _3d_1.Mat4.identity(), isIdentity: true, hkl: _hkl };\r\n        if (!_3d_1.Mat4.isRotationAndTranslation(matrix, RotationEpsilon))\r\n            throw new Error(\"Symmetry operator (\" + name + \") must be a composition of rotation and translation.\");\r\n        return { name: name, matrix: matrix, inverse: _3d_1.Mat4.invert(_3d_1.Mat4.zero(), matrix), isIdentity: false, hkl: _hkl };\r\n    }\r\n    SymmetryOperator.create = create;\r\n    // Apply the 1st and then 2nd operator. ( = second.matrix * first.matrix)\r\n    function compose(first, second) {\r\n        var matrix = _3d_1.Mat4.mul(_3d_1.Mat4.zero(), second.matrix, first.matrix);\r\n        return create(second.name, matrix, second.hkl);\r\n    }\r\n    SymmetryOperator.compose = compose;\r\n    function createMapping(operator, coords) {\r\n        var invariantPosition = SymmetryOperator.createCoordinateMapper(SymmetryOperator.Default, coords);\r\n        var position = operator.isIdentity ? invariantPosition : SymmetryOperator.createCoordinateMapper(operator, coords);\r\n        var _a = createProjections(operator, coords), x = _a.x, y = _a.y, z = _a.z;\r\n        return { operator: operator, invariantPosition: invariantPosition, position: position, x: x, y: y, z: z };\r\n    }\r\n    SymmetryOperator.createMapping = createMapping;\r\n    function createCoordinateMapper(t, coords) {\r\n        if (t.isIdentity)\r\n            return identityPosition(coords);\r\n        return generalPosition(t, coords);\r\n    }\r\n    SymmetryOperator.createCoordinateMapper = createCoordinateMapper;\r\n})(SymmetryOperator || (SymmetryOperator = {}));\r\nexports.SymmetryOperator = SymmetryOperator;\r\nfunction createProjections(t, coords) {\r\n    if (t.isIdentity)\r\n        return { x: projectCoord(coords.x), y: projectCoord(coords.y), z: projectCoord(coords.z) };\r\n    return { x: projectX(t, coords), y: projectY(t, coords), z: projectZ(t, coords) };\r\n}\r\nfunction projectCoord(xs) {\r\n    return function (i) { return xs[i]; };\r\n}\r\nfunction isW1(m) {\r\n    return m[3] === 0 && m[7] === 0 && m[11] === 0 && m[15] === 1;\r\n}\r\nfunction projectX(_a, _b) {\r\n    var m = _a.matrix;\r\n    var xs = _b.x, ys = _b.y, zs = _b.z;\r\n    var xx = m[0], yy = m[4], zz = m[8], tx = m[12];\r\n    if (isW1(m)) {\r\n        // this should always be the case.\r\n        return function (i) { return xx * xs[i] + yy * ys[i] + zz * zs[i] + tx; };\r\n    }\r\n    return function (i) {\r\n        var x = xs[i], y = ys[i], z = zs[i], w = (m[3] * x + m[7] * y + m[11] * z + m[15]) || 1.0;\r\n        return (xx * x + yy * y + zz * z + tx) / w;\r\n    };\r\n}\r\nfunction projectY(_a, _b) {\r\n    var m = _a.matrix;\r\n    var xs = _b.x, ys = _b.y, zs = _b.z;\r\n    var xx = m[1], yy = m[5], zz = m[9], ty = m[13];\r\n    if (isW1(m)) {\r\n        // this should always be the case.\r\n        return function (i) { return xx * xs[i] + yy * ys[i] + zz * zs[i] + ty; };\r\n    }\r\n    return function (i) {\r\n        var x = xs[i], y = ys[i], z = zs[i], w = (m[3] * x + m[7] * y + m[11] * z + m[15]) || 1.0;\r\n        return (xx * x + yy * y + zz * z + ty) / w;\r\n    };\r\n}\r\nfunction projectZ(_a, _b) {\r\n    var m = _a.matrix;\r\n    var xs = _b.x, ys = _b.y, zs = _b.z;\r\n    var xx = m[2], yy = m[6], zz = m[10], tz = m[14];\r\n    if (isW1(m)) {\r\n        // this should always be the case.\r\n        return function (i) { return xx * xs[i] + yy * ys[i] + zz * zs[i] + tz; };\r\n    }\r\n    return function (i) {\r\n        var x = xs[i], y = ys[i], z = zs[i], w = (m[3] * x + m[7] * y + m[11] * z + m[15]) || 1.0;\r\n        return (xx * x + yy * y + zz * z + tz) / w;\r\n    };\r\n}\r\nfunction identityPosition(_a) {\r\n    var x = _a.x, y = _a.y, z = _a.z;\r\n    return function (i, s) {\r\n        s[0] = x[i];\r\n        s[1] = y[i];\r\n        s[2] = z[i];\r\n        return s;\r\n    };\r\n}\r\nfunction generalPosition(_a, _b) {\r\n    var m = _a.matrix;\r\n    var xs = _b.x, ys = _b.y, zs = _b.z;\r\n    if (isW1(m)) {\r\n        // this should always be the case.\r\n        return function (i, r) {\r\n            var x = xs[i], y = ys[i], z = zs[i];\r\n            r[0] = m[0] * x + m[4] * y + m[8] * z + m[12];\r\n            r[1] = m[1] * x + m[5] * y + m[9] * z + m[13];\r\n            r[2] = m[2] * x + m[6] * y + m[10] * z + m[14];\r\n            return r;\r\n        };\r\n    }\r\n    return function (i, r) {\r\n        r[0] = xs[i];\r\n        r[1] = ys[i];\r\n        r[2] = zs[i];\r\n        _3d_1.Vec3.transformMat4(r, r, m);\r\n        return r;\r\n    };\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/geometry/symmetry-operator.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./linear-algebra/3d */ \"./build/node_modules/mol-math/linear-algebra/3d.js\"));\r\n__export(__webpack_require__(/*! ./linear-algebra/tensor */ \"./build/node_modules/mol-math/linear-algebra/tensor.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d.js":
+/*!**********************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/toji/gl-matrix/,\r\n * copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n */\r\nvar mat4_1 = __webpack_require__(/*! ./3d/mat4 */ \"./build/node_modules/mol-math/linear-algebra/3d/mat4.js\");\r\nexports.Mat4 = mat4_1.default;\r\nvar mat3_1 = __webpack_require__(/*! ./3d/mat3 */ \"./build/node_modules/mol-math/linear-algebra/3d/mat3.js\");\r\nexports.Mat3 = mat3_1.default;\r\nvar vec2_1 = __webpack_require__(/*! ./3d/vec2 */ \"./build/node_modules/mol-math/linear-algebra/3d/vec2.js\");\r\nexports.Vec2 = vec2_1.default;\r\nvar vec3_1 = __webpack_require__(/*! ./3d/vec3 */ \"./build/node_modules/mol-math/linear-algebra/3d/vec3.js\");\r\nexports.Vec3 = vec3_1.default;\r\nvar vec4_1 = __webpack_require__(/*! ./3d/vec4 */ \"./build/node_modules/mol-math/linear-algebra/3d/vec4.js\");\r\nexports.Vec4 = vec4_1.default;\r\nvar quat_1 = __webpack_require__(/*! ./3d/quat */ \"./build/node_modules/mol-math/linear-algebra/3d/quat.js\");\r\nexports.Quat = quat_1.default;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/common.js":
+/*!*****************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/common.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction equalEps(a, b, eps) {\r\n    return Math.abs(a - b) <= eps;\r\n}\r\nexports.equalEps = equalEps;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/common.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/mat3.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/mat3.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Mat3;\r\n(function (Mat3) {\r\n    function zero() {\r\n        // force double backing array by 0.1.\r\n        var ret = [0.1, 0, 0, 0, 0, 0, 0, 0, 0];\r\n        ret[0] = 0.0;\r\n        return ret;\r\n    }\r\n    Mat3.zero = zero;\r\n    function identity() {\r\n        var out = zero();\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 1;\r\n        out[5] = 0;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 1;\r\n        return out;\r\n    }\r\n    Mat3.identity = identity;\r\n    function setIdentity(mat) {\r\n        mat[0] = 1;\r\n        mat[1] = 0;\r\n        mat[2] = 0;\r\n        mat[3] = 0;\r\n        mat[4] = 1;\r\n        mat[5] = 0;\r\n        mat[6] = 0;\r\n        mat[7] = 0;\r\n        mat[8] = 1;\r\n        return mat;\r\n    }\r\n    Mat3.setIdentity = setIdentity;\r\n    function toArray(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n        out[offset + 2] = a[2];\r\n        out[offset + 3] = a[3];\r\n        out[offset + 4] = a[4];\r\n        out[offset + 5] = a[5];\r\n        out[offset + 6] = a[6];\r\n        out[offset + 7] = a[7];\r\n        out[offset + 8] = a[8];\r\n    }\r\n    Mat3.toArray = toArray;\r\n    function fromArray(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        a[2] = array[offset + 2];\r\n        a[3] = array[offset + 3];\r\n        a[4] = array[offset + 4];\r\n        a[5] = array[offset + 5];\r\n        a[6] = array[offset + 6];\r\n        a[7] = array[offset + 7];\r\n        a[8] = array[offset + 8];\r\n        return a;\r\n    }\r\n    Mat3.fromArray = fromArray;\r\n    /**\r\n     * Copies the upper-left 3x3 values into the given mat3.\r\n     */\r\n    function fromMat4(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[4];\r\n        out[4] = a[5];\r\n        out[5] = a[6];\r\n        out[6] = a[8];\r\n        out[7] = a[9];\r\n        out[8] = a[10];\r\n        return out;\r\n    }\r\n    Mat3.fromMat4 = fromMat4;\r\n    /**\r\n     * Creates a new Mat3 initialized with values from an existing matrix\r\n     */\r\n    function clone(a) {\r\n        return Mat3.copy(Mat3.zero(), a);\r\n    }\r\n    Mat3.clone = clone;\r\n    function setValue(a, i, j, value) {\r\n        a[3 * j + i] = value;\r\n    }\r\n    Mat3.setValue = setValue;\r\n    /**\r\n     * Copy the values from one Mat3 to another\r\n     */\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4];\r\n        out[5] = a[5];\r\n        out[6] = a[6];\r\n        out[7] = a[7];\r\n        out[8] = a[8];\r\n        return out;\r\n    }\r\n    Mat3.copy = copy;\r\n    /**\r\n     * Transpose the values of a Mat3\r\n     */\r\n    function transpose(out, a) {\r\n        // If we are transposing ourselves we can skip a few steps but have to cache some values\r\n        if (out === a) {\r\n            var a01 = a[1], a02 = a[2], a12 = a[5];\r\n            out[1] = a[3];\r\n            out[2] = a[6];\r\n            out[3] = a01;\r\n            out[5] = a[7];\r\n            out[6] = a02;\r\n            out[7] = a12;\r\n        }\r\n        else {\r\n            out[0] = a[0];\r\n            out[1] = a[3];\r\n            out[2] = a[6];\r\n            out[3] = a[1];\r\n            out[4] = a[4];\r\n            out[5] = a[7];\r\n            out[6] = a[2];\r\n            out[7] = a[5];\r\n            out[8] = a[8];\r\n        }\r\n        return out;\r\n    }\r\n    Mat3.transpose = transpose;\r\n    /**\r\n     * Inverts a Mat3\r\n     */\r\n    function invert(out, a) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2];\r\n        var a10 = a[3], a11 = a[4], a12 = a[5];\r\n        var a20 = a[6], a21 = a[7], a22 = a[8];\r\n        var b01 = a22 * a11 - a12 * a21;\r\n        var b11 = -a22 * a10 + a12 * a20;\r\n        var b21 = a21 * a10 - a11 * a20;\r\n        // Calculate the determinant\r\n        var det = a00 * b01 + a01 * b11 + a02 * b21;\r\n        if (!det) {\r\n            console.warn('non-invertible matrix.', a);\r\n            return out;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = b01 * det;\r\n        out[1] = (-a22 * a01 + a02 * a21) * det;\r\n        out[2] = (a12 * a01 - a02 * a11) * det;\r\n        out[3] = b11 * det;\r\n        out[4] = (a22 * a00 - a02 * a20) * det;\r\n        out[5] = (-a12 * a00 + a02 * a10) * det;\r\n        out[6] = b21 * det;\r\n        out[7] = (-a21 * a00 + a01 * a20) * det;\r\n        out[8] = (a11 * a00 - a01 * a10) * det;\r\n        return out;\r\n    }\r\n    Mat3.invert = invert;\r\n    function determinant(a) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2];\r\n        var a10 = a[3], a11 = a[4], a12 = a[5];\r\n        var a20 = a[6], a21 = a[7], a22 = a[8];\r\n        var b01 = a22 * a11 - a12 * a21;\r\n        var b11 = -a22 * a10 + a12 * a20;\r\n        var b21 = a21 * a10 - a11 * a20;\r\n        // Calculate the determinant\r\n        return a00 * b01 + a01 * b11 + a02 * b21;\r\n    }\r\n    Mat3.determinant = determinant;\r\n})(Mat3 || (Mat3 = {}));\r\nexports.default = Mat3;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/mat3.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/mat4.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/mat4.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/toji/gl-matrix/,\r\n * copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n */\r\nvar common_1 = __webpack_require__(/*! ./common */ \"./build/node_modules/mol-math/linear-algebra/3d/common.js\");\r\nfunction Mat4() {\r\n    return Mat4.zero();\r\n}\r\n/**\r\n * Stores a 4x4 matrix in a column major (j * 4 + i indexing) format.\r\n */\r\n(function (Mat4) {\r\n    function zero() {\r\n        // force double backing array by 0.1.\r\n        var ret = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n        ret[0] = 0.0;\r\n        return ret;\r\n    }\r\n    Mat4.zero = zero;\r\n    function identity() {\r\n        var out = zero();\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = 1;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 0;\r\n        out[9] = 0;\r\n        out[10] = 1;\r\n        out[11] = 0;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = 0;\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.identity = identity;\r\n    function setIdentity(mat) {\r\n        mat[0] = 1;\r\n        mat[1] = 0;\r\n        mat[2] = 0;\r\n        mat[3] = 0;\r\n        mat[4] = 0;\r\n        mat[5] = 1;\r\n        mat[6] = 0;\r\n        mat[7] = 0;\r\n        mat[8] = 0;\r\n        mat[9] = 0;\r\n        mat[10] = 1;\r\n        mat[11] = 0;\r\n        mat[12] = 0;\r\n        mat[13] = 0;\r\n        mat[14] = 0;\r\n        mat[15] = 1;\r\n        return mat;\r\n    }\r\n    Mat4.setIdentity = setIdentity;\r\n    function setZero(mat) {\r\n        for (var i = 0; i < 16; i++)\r\n            mat[i] = 0;\r\n        return mat;\r\n    }\r\n    Mat4.setZero = setZero;\r\n    function ofRows(rows) {\r\n        var out = zero();\r\n        for (var i = 0; i < 4; i++) {\r\n            var r = rows[i];\r\n            for (var j = 0; j < 4; j++) {\r\n                out[4 * j + i] = r[j];\r\n            }\r\n        }\r\n        return out;\r\n    }\r\n    Mat4.ofRows = ofRows;\r\n    var _id = identity();\r\n    function isIdentity(m, eps) {\r\n        return areEqual(m, _id, typeof eps === 'undefined' ? 0.000001 /* Value */ : eps);\r\n    }\r\n    Mat4.isIdentity = isIdentity;\r\n    function areEqual(a, b, eps) {\r\n        for (var i = 0; i < 16; i++) {\r\n            if (Math.abs(a[i] - b[i]) > eps)\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n    Mat4.areEqual = areEqual;\r\n    function setValue(a, i, j, value) {\r\n        a[4 * j + i] = value;\r\n    }\r\n    Mat4.setValue = setValue;\r\n    function toArray(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n        out[offset + 2] = a[2];\r\n        out[offset + 3] = a[3];\r\n        out[offset + 4] = a[4];\r\n        out[offset + 5] = a[5];\r\n        out[offset + 6] = a[6];\r\n        out[offset + 7] = a[7];\r\n        out[offset + 8] = a[8];\r\n        out[offset + 9] = a[9];\r\n        out[offset + 10] = a[10];\r\n        out[offset + 11] = a[11];\r\n        out[offset + 12] = a[12];\r\n        out[offset + 13] = a[13];\r\n        out[offset + 14] = a[14];\r\n        out[offset + 15] = a[15];\r\n    }\r\n    Mat4.toArray = toArray;\r\n    function fromArray(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        a[2] = array[offset + 2];\r\n        a[3] = array[offset + 3];\r\n        a[4] = array[offset + 4];\r\n        a[5] = array[offset + 5];\r\n        a[6] = array[offset + 6];\r\n        a[7] = array[offset + 7];\r\n        a[8] = array[offset + 8];\r\n        a[9] = array[offset + 9];\r\n        a[10] = array[offset + 10];\r\n        a[11] = array[offset + 11];\r\n        a[12] = array[offset + 12];\r\n        a[13] = array[offset + 13];\r\n        a[14] = array[offset + 14];\r\n        a[15] = array[offset + 15];\r\n        return a;\r\n    }\r\n    Mat4.fromArray = fromArray;\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4];\r\n        out[5] = a[5];\r\n        out[6] = a[6];\r\n        out[7] = a[7];\r\n        out[8] = a[8];\r\n        out[9] = a[9];\r\n        out[10] = a[10];\r\n        out[11] = a[11];\r\n        out[12] = a[12];\r\n        out[13] = a[13];\r\n        out[14] = a[14];\r\n        out[15] = a[15];\r\n        return out;\r\n    }\r\n    Mat4.copy = copy;\r\n    function clone(a) {\r\n        return Mat4.copy(Mat4.zero(), a);\r\n    }\r\n    Mat4.clone = clone;\r\n    function transpose(out, a) {\r\n        // If we are transposing ourselves we can skip a few steps but have to cache some values\r\n        if (out === a) {\r\n            var a01 = a[1], a02 = a[2], a03 = a[3];\r\n            var a12 = a[6], a13 = a[7];\r\n            var a23 = a[11];\r\n            out[1] = a[4];\r\n            out[2] = a[8];\r\n            out[3] = a[12];\r\n            out[4] = a01;\r\n            out[6] = a[9];\r\n            out[7] = a[13];\r\n            out[8] = a02;\r\n            out[9] = a12;\r\n            out[11] = a[14];\r\n            out[12] = a03;\r\n            out[13] = a13;\r\n            out[14] = a23;\r\n        }\r\n        else {\r\n            out[0] = a[0];\r\n            out[1] = a[4];\r\n            out[2] = a[8];\r\n            out[3] = a[12];\r\n            out[4] = a[1];\r\n            out[5] = a[5];\r\n            out[6] = a[9];\r\n            out[7] = a[13];\r\n            out[8] = a[2];\r\n            out[9] = a[6];\r\n            out[10] = a[10];\r\n            out[11] = a[14];\r\n            out[12] = a[3];\r\n            out[13] = a[7];\r\n            out[14] = a[11];\r\n            out[15] = a[15];\r\n        }\r\n        return out;\r\n    }\r\n    Mat4.transpose = transpose;\r\n    function invert(out, a) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], b00 = a00 * a11 - a01 * a10, b01 = a00 * a12 - a02 * a10, b02 = a00 * a13 - a03 * a10, b03 = a01 * a12 - a02 * a11, b04 = a01 * a13 - a03 * a11, b05 = a02 * a13 - a03 * a12, b06 = a20 * a31 - a21 * a30, b07 = a20 * a32 - a22 * a30, b08 = a20 * a33 - a23 * a30, b09 = a21 * a32 - a22 * a31, b10 = a21 * a33 - a23 * a31, b11 = a22 * a33 - a23 * a32;\r\n        // Calculate the determinant\r\n        var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n        if (!det) {\r\n            console.warn('non-invertible matrix.', a);\r\n            return out;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\r\n        out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\r\n        out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\r\n        out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\r\n        out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\r\n        out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\r\n        out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\r\n        out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\r\n        out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\r\n        out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\r\n        out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\r\n        out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\r\n        out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\r\n        out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\r\n        out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\r\n        out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\r\n        return out;\r\n    }\r\n    Mat4.invert = invert;\r\n    function mul(out, a, b) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\r\n        // Cache only the current line of the second matrix\r\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\r\n        out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n        b0 = b[4];\r\n        b1 = b[5];\r\n        b2 = b[6];\r\n        b3 = b[7];\r\n        out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n        b0 = b[8];\r\n        b1 = b[9];\r\n        b2 = b[10];\r\n        b3 = b[11];\r\n        out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n        b0 = b[12];\r\n        b1 = b[13];\r\n        b2 = b[14];\r\n        b3 = b[15];\r\n        out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n        out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n        out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n        out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n        return out;\r\n    }\r\n    Mat4.mul = mul;\r\n    function mul3(out, a, b, c) {\r\n        return mul(out, mul(out, a, b), c);\r\n    }\r\n    Mat4.mul3 = mul3;\r\n    /** Translate a Mat4 by the given Vec3 */\r\n    function translate(out, a, v) {\r\n        var x = v[0], y = v[1], z = v[2];\r\n        var a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23;\r\n        if (a === out) {\r\n            out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\r\n            out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\r\n            out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\r\n            out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\r\n        }\r\n        else {\r\n            a00 = a[0];\r\n            a01 = a[1];\r\n            a02 = a[2];\r\n            a03 = a[3];\r\n            a10 = a[4];\r\n            a11 = a[5];\r\n            a12 = a[6];\r\n            a13 = a[7];\r\n            a20 = a[8];\r\n            a21 = a[9];\r\n            a22 = a[10];\r\n            a23 = a[11];\r\n            out[0] = a00;\r\n            out[1] = a01;\r\n            out[2] = a02;\r\n            out[3] = a03;\r\n            out[4] = a10;\r\n            out[5] = a11;\r\n            out[6] = a12;\r\n            out[7] = a13;\r\n            out[8] = a20;\r\n            out[9] = a21;\r\n            out[10] = a22;\r\n            out[11] = a23;\r\n            out[12] = a00 * x + a10 * y + a20 * z + a[12];\r\n            out[13] = a01 * x + a11 * y + a21 * z + a[13];\r\n            out[14] = a02 * x + a12 * y + a22 * z + a[14];\r\n            out[15] = a03 * x + a13 * y + a23 * z + a[15];\r\n        }\r\n        return out;\r\n    }\r\n    Mat4.translate = translate;\r\n    function fromTranslation(out, v) {\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = 1;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 0;\r\n        out[9] = 0;\r\n        out[10] = 1;\r\n        out[11] = 0;\r\n        out[12] = v[0];\r\n        out[13] = v[1];\r\n        out[14] = v[2];\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.fromTranslation = fromTranslation;\r\n    function setTranslation(out, v) {\r\n        out[12] = v[0];\r\n        out[13] = v[1];\r\n        out[14] = v[2];\r\n        return out;\r\n    }\r\n    Mat4.setTranslation = setTranslation;\r\n    function rotate(out, a, rad, axis) {\r\n        var x = axis[0], y = axis[1], z = axis[2], len = Math.sqrt(x * x + y * y + z * z), s, c, t, a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23, b00, b01, b02, b10, b11, b12, b20, b21, b22;\r\n        if (Math.abs(len) < 0.000001 /* Value */) {\r\n            return Mat4.identity();\r\n        }\r\n        len = 1 / len;\r\n        x *= len;\r\n        y *= len;\r\n        z *= len;\r\n        s = Math.sin(rad);\r\n        c = Math.cos(rad);\r\n        t = 1 - c;\r\n        a00 = a[0];\r\n        a01 = a[1];\r\n        a02 = a[2];\r\n        a03 = a[3];\r\n        a10 = a[4];\r\n        a11 = a[5];\r\n        a12 = a[6];\r\n        a13 = a[7];\r\n        a20 = a[8];\r\n        a21 = a[9];\r\n        a22 = a[10];\r\n        a23 = a[11];\r\n        // Construct the elements of the rotation matrix\r\n        b00 = x * x * t + c;\r\n        b01 = y * x * t + z * s;\r\n        b02 = z * x * t - y * s;\r\n        b10 = x * y * t - z * s;\r\n        b11 = y * y * t + c;\r\n        b12 = z * y * t + x * s;\r\n        b20 = x * z * t + y * s;\r\n        b21 = y * z * t - x * s;\r\n        b22 = z * z * t + c;\r\n        // Perform rotation-specific matrix multiplication\r\n        out[0] = a00 * b00 + a10 * b01 + a20 * b02;\r\n        out[1] = a01 * b00 + a11 * b01 + a21 * b02;\r\n        out[2] = a02 * b00 + a12 * b01 + a22 * b02;\r\n        out[3] = a03 * b00 + a13 * b01 + a23 * b02;\r\n        out[4] = a00 * b10 + a10 * b11 + a20 * b12;\r\n        out[5] = a01 * b10 + a11 * b11 + a21 * b12;\r\n        out[6] = a02 * b10 + a12 * b11 + a22 * b12;\r\n        out[7] = a03 * b10 + a13 * b11 + a23 * b12;\r\n        out[8] = a00 * b20 + a10 * b21 + a20 * b22;\r\n        out[9] = a01 * b20 + a11 * b21 + a21 * b22;\r\n        out[10] = a02 * b20 + a12 * b21 + a22 * b22;\r\n        out[11] = a03 * b20 + a13 * b21 + a23 * b22;\r\n        if (a !== out) { // If the source and destination differ, copy the unchanged last row\r\n            out[12] = a[12];\r\n            out[13] = a[13];\r\n            out[14] = a[14];\r\n            out[15] = a[15];\r\n        }\r\n        return out;\r\n    }\r\n    Mat4.rotate = rotate;\r\n    function fromRotation(out, rad, axis) {\r\n        var x = axis[0], y = axis[1], z = axis[2], len = Math.sqrt(x * x + y * y + z * z), s, c, t;\r\n        if (Math.abs(len) < 0.000001 /* Value */) {\r\n            return setIdentity(out);\r\n        }\r\n        len = 1 / len;\r\n        x *= len;\r\n        y *= len;\r\n        z *= len;\r\n        s = Math.sin(rad);\r\n        c = Math.cos(rad);\r\n        t = 1 - c;\r\n        // Perform rotation-specific matrix multiplication\r\n        out[0] = x * x * t + c;\r\n        out[1] = y * x * t + z * s;\r\n        out[2] = z * x * t - y * s;\r\n        out[3] = 0;\r\n        out[4] = x * y * t - z * s;\r\n        out[5] = y * y * t + c;\r\n        out[6] = z * y * t + x * s;\r\n        out[7] = 0;\r\n        out[8] = x * z * t + y * s;\r\n        out[9] = y * z * t - x * s;\r\n        out[10] = z * z * t + c;\r\n        out[11] = 0;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = 0;\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.fromRotation = fromRotation;\r\n    function scale(out, a, v) {\r\n        var x = v[0], y = v[1], z = v[2];\r\n        out[0] = a[0] * x;\r\n        out[1] = a[1] * x;\r\n        out[2] = a[2] * x;\r\n        out[3] = a[3] * x;\r\n        out[4] = a[4] * y;\r\n        out[5] = a[5] * y;\r\n        out[6] = a[6] * y;\r\n        out[7] = a[7] * y;\r\n        out[8] = a[8] * z;\r\n        out[9] = a[9] * z;\r\n        out[10] = a[10] * z;\r\n        out[11] = a[11] * z;\r\n        out[12] = a[12];\r\n        out[13] = a[13];\r\n        out[14] = a[14];\r\n        out[15] = a[15];\r\n        return out;\r\n    }\r\n    Mat4.scale = scale;\r\n    function fromScaling(out, v) {\r\n        out[0] = v[0];\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = v[1];\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 0;\r\n        out[9] = 0;\r\n        out[10] = v[2];\r\n        out[11] = 0;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = 0;\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.fromScaling = fromScaling;\r\n    function makeTable(m) {\r\n        var ret = '';\r\n        for (var i = 0; i < 4; i++) {\r\n            for (var j = 0; j < 4; j++) {\r\n                ret += m[4 * j + i].toString();\r\n                if (j < 3)\r\n                    ret += ' ';\r\n            }\r\n            if (i < 3)\r\n                ret += '\\n';\r\n        }\r\n        return ret;\r\n    }\r\n    Mat4.makeTable = makeTable;\r\n    function determinant(a) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], b00 = a00 * a11 - a01 * a10, b01 = a00 * a12 - a02 * a10, b02 = a00 * a13 - a03 * a10, b03 = a01 * a12 - a02 * a11, b04 = a01 * a13 - a03 * a11, b05 = a02 * a13 - a03 * a12, b06 = a20 * a31 - a21 * a30, b07 = a20 * a32 - a22 * a30, b08 = a20 * a33 - a23 * a30, b09 = a21 * a32 - a22 * a31, b10 = a21 * a33 - a23 * a31, b11 = a22 * a33 - a23 * a32;\r\n        // Calculate the determinant\r\n        return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\r\n    }\r\n    Mat4.determinant = determinant;\r\n    /**\r\n     * Check if the matrix has the form\r\n     * [ Rotation    Translation ]\r\n     * [ 0           1           ]\r\n     */\r\n    function isRotationAndTranslation(a, eps) {\r\n        return _isRotationAndTranslation(a, typeof eps !== 'undefined' ? eps : 0.000001 /* Value */);\r\n    }\r\n    Mat4.isRotationAndTranslation = isRotationAndTranslation;\r\n    function _isRotationAndTranslation(a, eps) {\r\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], \r\n        /* a30 = a[12], a31 = a[13], a32 = a[14],*/ a33 = a[15];\r\n        if (!common_1.equalEps(a33, 1, eps) || !common_1.equalEps(a03, 0, eps) || !common_1.equalEps(a13, 0, eps) || !common_1.equalEps(a23, 0, eps)) {\r\n            return false;\r\n        }\r\n        var det3x3 = a00 * (a11 * a22 - a12 * a21) - a01 * (a10 * a22 - a12 * a20) + a02 * (a10 * a21 - a11 * a20);\r\n        if (!common_1.equalEps(det3x3, 1, eps)) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function fromQuat(out, q) {\r\n        var x = q[0], y = q[1], z = q[2], w = q[3];\r\n        var x2 = x + x;\r\n        var y2 = y + y;\r\n        var z2 = z + z;\r\n        var xx = x * x2;\r\n        var yx = y * x2;\r\n        var yy = y * y2;\r\n        var zx = z * x2;\r\n        var zy = z * y2;\r\n        var zz = z * z2;\r\n        var wx = w * x2;\r\n        var wy = w * y2;\r\n        var wz = w * z2;\r\n        out[0] = 1 - yy - zz;\r\n        out[1] = yx + wz;\r\n        out[2] = zx - wy;\r\n        out[3] = 0;\r\n        out[4] = yx - wz;\r\n        out[5] = 1 - xx - zz;\r\n        out[6] = zy + wx;\r\n        out[7] = 0;\r\n        out[8] = zx + wy;\r\n        out[9] = zy - wx;\r\n        out[10] = 1 - xx - yy;\r\n        out[11] = 0;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = 0;\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.fromQuat = fromQuat;\r\n    /**\r\n     * Generates a frustum matrix with the given bounds\r\n     */\r\n    function frustum(out, left, right, bottom, top, near, far) {\r\n        var rl = 1 / (right - left);\r\n        var tb = 1 / (top - bottom);\r\n        var nf = 1 / (near - far);\r\n        out[0] = (near * 2) * rl;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = (near * 2) * tb;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = (right + left) * rl;\r\n        out[9] = (top + bottom) * tb;\r\n        out[10] = (far + near) * nf;\r\n        out[11] = -1;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = (far * near * 2) * nf;\r\n        out[15] = 0;\r\n        return out;\r\n    }\r\n    Mat4.frustum = frustum;\r\n    /**\r\n     * Generates a perspective projection matrix with the given bounds\r\n     */\r\n    function perspective(out, fovy, aspect, near, far) {\r\n        var f = 1.0 / Math.tan(fovy / 2);\r\n        var nf = 1 / (near - far);\r\n        out[0] = f / aspect;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = f;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 0;\r\n        out[9] = 0;\r\n        out[10] = (far + near) * nf;\r\n        out[11] = -1;\r\n        out[12] = 0;\r\n        out[13] = 0;\r\n        out[14] = (2 * far * near) * nf;\r\n        out[15] = 0;\r\n        return out;\r\n    }\r\n    Mat4.perspective = perspective;\r\n    /**\r\n     * Generates a orthogonal projection matrix with the given bounds\r\n     */\r\n    function ortho(out, left, right, bottom, top, near, far) {\r\n        var lr = 1 / (left - right);\r\n        var bt = 1 / (bottom - top);\r\n        var nf = 1 / (near - far);\r\n        out[0] = -2 * lr;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 0;\r\n        out[4] = 0;\r\n        out[5] = -2 * bt;\r\n        out[6] = 0;\r\n        out[7] = 0;\r\n        out[8] = 0;\r\n        out[9] = 0;\r\n        out[10] = 2 * nf;\r\n        out[11] = 0;\r\n        out[12] = (left + right) * lr;\r\n        out[13] = (top + bottom) * bt;\r\n        out[14] = (far + near) * nf;\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.ortho = ortho;\r\n    /**\r\n     * Generates a look-at matrix with the given eye position, focal point, and up axis\r\n     */\r\n    function lookAt(out, eye, center, up) {\r\n        var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\r\n        var eyex = eye[0];\r\n        var eyey = eye[1];\r\n        var eyez = eye[2];\r\n        var upx = up[0];\r\n        var upy = up[1];\r\n        var upz = up[2];\r\n        var centerx = center[0];\r\n        var centery = center[1];\r\n        var centerz = center[2];\r\n        if (Math.abs(eyex - centerx) < 0.000001 /* Value */ &&\r\n            Math.abs(eyey - centery) < 0.000001 /* Value */ &&\r\n            Math.abs(eyez - centerz) < 0.000001 /* Value */) {\r\n            return setIdentity(out);\r\n        }\r\n        z0 = eyex - centerx;\r\n        z1 = eyey - centery;\r\n        z2 = eyez - centerz;\r\n        len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\r\n        z0 *= len;\r\n        z1 *= len;\r\n        z2 *= len;\r\n        x0 = upy * z2 - upz * z1;\r\n        x1 = upz * z0 - upx * z2;\r\n        x2 = upx * z1 - upy * z0;\r\n        len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\r\n        if (!len) {\r\n            x0 = 0;\r\n            x1 = 0;\r\n            x2 = 0;\r\n        }\r\n        else {\r\n            len = 1 / len;\r\n            x0 *= len;\r\n            x1 *= len;\r\n            x2 *= len;\r\n        }\r\n        y0 = z1 * x2 - z2 * x1;\r\n        y1 = z2 * x0 - z0 * x2;\r\n        y2 = z0 * x1 - z1 * x0;\r\n        len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\r\n        if (!len) {\r\n            y0 = 0;\r\n            y1 = 0;\r\n            y2 = 0;\r\n        }\r\n        else {\r\n            len = 1 / len;\r\n            y0 *= len;\r\n            y1 *= len;\r\n            y2 *= len;\r\n        }\r\n        out[0] = x0;\r\n        out[1] = y0;\r\n        out[2] = z0;\r\n        out[3] = 0;\r\n        out[4] = x1;\r\n        out[5] = y1;\r\n        out[6] = z1;\r\n        out[7] = 0;\r\n        out[8] = x2;\r\n        out[9] = y2;\r\n        out[10] = z2;\r\n        out[11] = 0;\r\n        out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\r\n        out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\r\n        out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\r\n        out[15] = 1;\r\n        return out;\r\n    }\r\n    Mat4.lookAt = lookAt;\r\n    /**\r\n     * Perm is 0-indexed permutation\r\n     */\r\n    function fromPermutation(out, perm) {\r\n        setZero(out);\r\n        for (var i = 0; i < 4; i++) {\r\n            var p = perm[i];\r\n            setValue(out, i, p, 1);\r\n        }\r\n        return out;\r\n    }\r\n    Mat4.fromPermutation = fromPermutation;\r\n})(Mat4 || (Mat4 = {}));\r\nexports.default = Mat4;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/mat4.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/quat.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/quat.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/toji/gl-matrix/,\r\n * copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n */\r\n/*\r\n * Quat.fromUnitVec3 has been modified from https://github.com/Jam3/quat-from-unit-vec3,\r\n * copyright (c) 2015 Jam3. MIT License\r\n */\r\nvar mat3_1 = __webpack_require__(/*! ./mat3 */ \"./build/node_modules/mol-math/linear-algebra/3d/mat3.js\");\r\nvar vec3_1 = __webpack_require__(/*! ./vec3 */ \"./build/node_modules/mol-math/linear-algebra/3d/vec3.js\");\r\nfunction Quat() {\r\n    return Quat.zero();\r\n}\r\n(function (Quat) {\r\n    function zero() {\r\n        // force double backing array by 0.1.\r\n        var ret = [0.1, 0, 0, 0];\r\n        ret[0] = 0.0;\r\n        return ret;\r\n    }\r\n    Quat.zero = zero;\r\n    function identity() {\r\n        var out = zero();\r\n        out[3] = 1;\r\n        return out;\r\n    }\r\n    Quat.identity = identity;\r\n    function create(x, y, z, w) {\r\n        var out = identity();\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        out[3] = w;\r\n        return out;\r\n    }\r\n    Quat.create = create;\r\n    function setAxisAngle(out, axis, rad) {\r\n        rad = rad * 0.5;\r\n        var s = Math.sin(rad);\r\n        out[0] = s * axis[0];\r\n        out[1] = s * axis[1];\r\n        out[2] = s * axis[2];\r\n        out[3] = Math.cos(rad);\r\n        return out;\r\n    }\r\n    Quat.setAxisAngle = setAxisAngle;\r\n    /**\r\n     * Gets the rotation axis and angle for a given\r\n     *  quaternion. If a quaternion is created with\r\n     *  setAxisAngle, this method will return the same\r\n     *  values as providied in the original parameter list\r\n     *  OR functionally equivalent values.\r\n     * Example: The quaternion formed by axis [0, 0, 1] and\r\n     *  angle -90 is the same as the quaternion formed by\r\n     *  [0, 0, 1] and 270. This method favors the latter.\r\n     */\r\n    function getAxisAngle(out_axis, q) {\r\n        var rad = Math.acos(q[3]) * 2.0;\r\n        var s = Math.sin(rad / 2.0);\r\n        if (s !== 0.0) {\r\n            out_axis[0] = q[0] / s;\r\n            out_axis[1] = q[1] / s;\r\n            out_axis[2] = q[2] / s;\r\n        }\r\n        else {\r\n            // If s is zero, return any axis (no rotation - axis does not matter)\r\n            out_axis[0] = 1;\r\n            out_axis[1] = 0;\r\n            out_axis[2] = 0;\r\n        }\r\n        return rad;\r\n    }\r\n    Quat.getAxisAngle = getAxisAngle;\r\n    function multiply(out, a, b) {\r\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n        var bx = b[0], by = b[1], bz = b[2], bw = b[3];\r\n        out[0] = ax * bw + aw * bx + ay * bz - az * by;\r\n        out[1] = ay * bw + aw * by + az * bx - ax * bz;\r\n        out[2] = az * bw + aw * bz + ax * by - ay * bx;\r\n        out[3] = aw * bw - ax * bx - ay * by - az * bz;\r\n        return out;\r\n    }\r\n    Quat.multiply = multiply;\r\n    function rotateX(out, a, rad) {\r\n        rad *= 0.5;\r\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n        var bx = Math.sin(rad), bw = Math.cos(rad);\r\n        out[0] = ax * bw + aw * bx;\r\n        out[1] = ay * bw + az * bx;\r\n        out[2] = az * bw - ay * bx;\r\n        out[3] = aw * bw - ax * bx;\r\n        return out;\r\n    }\r\n    Quat.rotateX = rotateX;\r\n    function rotateY(out, a, rad) {\r\n        rad *= 0.5;\r\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n        var by = Math.sin(rad), bw = Math.cos(rad);\r\n        out[0] = ax * bw - az * by;\r\n        out[1] = ay * bw + aw * by;\r\n        out[2] = az * bw + ax * by;\r\n        out[3] = aw * bw - ay * by;\r\n        return out;\r\n    }\r\n    Quat.rotateY = rotateY;\r\n    function rotateZ(out, a, rad) {\r\n        rad *= 0.5;\r\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n        var bz = Math.sin(rad), bw = Math.cos(rad);\r\n        out[0] = ax * bw + ay * bz;\r\n        out[1] = ay * bw - ax * bz;\r\n        out[2] = az * bw + aw * bz;\r\n        out[3] = aw * bw - az * bz;\r\n        return out;\r\n    }\r\n    Quat.rotateZ = rotateZ;\r\n    /**\r\n     * Calculates the W component of a quat from the X, Y, and Z components.\r\n     * Assumes that quaternion is 1 unit in length.\r\n     * Any existing W component will be ignored.\r\n     */\r\n    function calculateW(out, a) {\r\n        var x = a[0], y = a[1], z = a[2];\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\r\n        return out;\r\n    }\r\n    Quat.calculateW = calculateW;\r\n    /**\r\n     * Performs a spherical linear interpolation between two quat\r\n     */\r\n    function slerp(out, a, b, t) {\r\n        // benchmarks:\r\n        //    http://jsperf.com/quaternion-slerp-implementations\r\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\r\n        var bx = b[0], by = b[1], bz = b[2], bw = b[3];\r\n        var omega, cosom, sinom, scale0, scale1;\r\n        // calc cosine\r\n        cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n        // adjust signs (if necessary)\r\n        if (cosom < 0.0) {\r\n            cosom = -cosom;\r\n            bx = -bx;\r\n            by = -by;\r\n            bz = -bz;\r\n            bw = -bw;\r\n        }\r\n        // calculate coefficients\r\n        if ((1.0 - cosom) > 0.000001) {\r\n            // standard case (slerp)\r\n            omega = Math.acos(cosom);\r\n            sinom = Math.sin(omega);\r\n            scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n            scale1 = Math.sin(t * omega) / sinom;\r\n        }\r\n        else {\r\n            // \"from\" and \"to\" quaternions are very close\r\n            //  ... so we can do a linear interpolation\r\n            scale0 = 1.0 - t;\r\n            scale1 = t;\r\n        }\r\n        // calculate final values\r\n        out[0] = scale0 * ax + scale1 * bx;\r\n        out[1] = scale0 * ay + scale1 * by;\r\n        out[2] = scale0 * az + scale1 * bz;\r\n        out[3] = scale0 * aw + scale1 * bw;\r\n        return out;\r\n    }\r\n    Quat.slerp = slerp;\r\n    function invert(out, a) {\r\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\r\n        var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\r\n        var invDot = dot ? 1.0 / dot : 0;\r\n        // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\r\n        out[0] = -a0 * invDot;\r\n        out[1] = -a1 * invDot;\r\n        out[2] = -a2 * invDot;\r\n        out[3] = a3 * invDot;\r\n        return out;\r\n    }\r\n    Quat.invert = invert;\r\n    /**\r\n     * Calculates the conjugate of a quat\r\n     * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\r\n     */\r\n    function conjugate(out, a) {\r\n        out[0] = -a[0];\r\n        out[1] = -a[1];\r\n        out[2] = -a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    Quat.conjugate = conjugate;\r\n    /**\r\n     * Creates a quaternion from the given 3x3 rotation matrix.\r\n     *\r\n     * NOTE: The resultant quaternion is not normalized, so you should be sure\r\n     * to renormalize the quaternion yourself where necessary.\r\n     */\r\n    function fromMat3(out, m) {\r\n        // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\r\n        // article \"Quaternion Calculus and Fast Animation\".\r\n        var fTrace = m[0] + m[4] + m[8];\r\n        var fRoot;\r\n        if (fTrace > 0.0) {\r\n            // |w| > 1/2, may as well choose w > 1/2\r\n            fRoot = Math.sqrt(fTrace + 1.0); // 2w\r\n            out[3] = 0.5 * fRoot;\r\n            fRoot = 0.5 / fRoot; // 1/(4w)\r\n            out[0] = (m[5] - m[7]) * fRoot;\r\n            out[1] = (m[6] - m[2]) * fRoot;\r\n            out[2] = (m[1] - m[3]) * fRoot;\r\n        }\r\n        else {\r\n            // |w| <= 1/2\r\n            var i = 0;\r\n            if (m[4] > m[0])\r\n                i = 1;\r\n            if (m[8] > m[i * 3 + i])\r\n                i = 2;\r\n            var j = (i + 1) % 3;\r\n            var k = (i + 2) % 3;\r\n            fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\r\n            out[i] = 0.5 * fRoot;\r\n            fRoot = 0.5 / fRoot;\r\n            out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\r\n            out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\r\n            out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\r\n        }\r\n        return out;\r\n    }\r\n    Quat.fromMat3 = fromMat3;\r\n    var fromUnitVec3Temp = vec3_1.default.zero();\r\n    /** Quaternion from two normalized unit vectors. */\r\n    function fromUnitVec3(out, a, b) {\r\n        // assumes a and b are normalized\r\n        var r = vec3_1.default.dot(a, b) + 1;\r\n        if (r < 0.000001 /* Value */) {\r\n            // If u and v are exactly opposite, rotate 180 degrees\r\n            // around an arbitrary orthogonal axis. Axis normalisation\r\n            // can happen later, when we normalise the quaternion.\r\n            r = 0;\r\n            if (Math.abs(a[0]) > Math.abs(a[2])) {\r\n                vec3_1.default.set(fromUnitVec3Temp, -a[1], a[0], 0);\r\n            }\r\n            else {\r\n                vec3_1.default.set(fromUnitVec3Temp, 0, -a[2], a[1]);\r\n            }\r\n        }\r\n        else {\r\n            // Otherwise, build quaternion the standard way.\r\n            vec3_1.default.cross(fromUnitVec3Temp, a, b);\r\n        }\r\n        out[0] = fromUnitVec3Temp[0];\r\n        out[1] = fromUnitVec3Temp[1];\r\n        out[2] = fromUnitVec3Temp[2];\r\n        out[3] = r;\r\n        normalize(out, out);\r\n        return out;\r\n    }\r\n    Quat.fromUnitVec3 = fromUnitVec3;\r\n    function clone(a) {\r\n        var out = zero();\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    Quat.clone = clone;\r\n    function toArray(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n        out[offset + 2] = a[2];\r\n        out[offset + 3] = a[3];\r\n    }\r\n    Quat.toArray = toArray;\r\n    function fromArray(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        a[2] = array[offset + 2];\r\n        a[3] = array[offset + 3];\r\n        return a;\r\n    }\r\n    Quat.fromArray = fromArray;\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    Quat.copy = copy;\r\n    function set(out, x, y, z, w) {\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        out[3] = w;\r\n        return out;\r\n    }\r\n    Quat.set = set;\r\n    function add(out, a, b) {\r\n        out[0] = a[0] + b[0];\r\n        out[1] = a[1] + b[1];\r\n        out[2] = a[2] + b[2];\r\n        out[3] = a[3] + b[3];\r\n        return out;\r\n    }\r\n    Quat.add = add;\r\n    function normalize(out, a) {\r\n        var x = a[0];\r\n        var y = a[1];\r\n        var z = a[2];\r\n        var w = a[3];\r\n        var len = x * x + y * y + z * z + w * w;\r\n        if (len > 0) {\r\n            len = 1 / Math.sqrt(len);\r\n            out[0] = x * len;\r\n            out[1] = y * len;\r\n            out[2] = z * len;\r\n            out[3] = w * len;\r\n        }\r\n        return out;\r\n    }\r\n    Quat.normalize = normalize;\r\n    /**\r\n     * Sets a quaternion to represent the shortest rotation from one\r\n     * vector to another.\r\n     *\r\n     * Both vectors are assumed to be unit length.\r\n     */\r\n    var rotTmpVec3 = vec3_1.default.zero();\r\n    var rotTmpVec3UnitX = vec3_1.default.create(1, 0, 0);\r\n    var rotTmpVec3UnitY = vec3_1.default.create(0, 1, 0);\r\n    function rotationTo(out, a, b) {\r\n        var dot = vec3_1.default.dot(a, b);\r\n        if (dot < -0.999999) {\r\n            vec3_1.default.cross(rotTmpVec3, rotTmpVec3UnitX, a);\r\n            if (vec3_1.default.magnitude(rotTmpVec3) < 0.000001)\r\n                vec3_1.default.cross(rotTmpVec3, rotTmpVec3UnitY, a);\r\n            vec3_1.default.normalize(rotTmpVec3, rotTmpVec3);\r\n            setAxisAngle(out, rotTmpVec3, Math.PI);\r\n            return out;\r\n        }\r\n        else if (dot > 0.999999) {\r\n            out[0] = 0;\r\n            out[1] = 0;\r\n            out[2] = 0;\r\n            out[3] = 1;\r\n            return out;\r\n        }\r\n        else {\r\n            vec3_1.default.cross(rotTmpVec3, a, b);\r\n            out[0] = rotTmpVec3[0];\r\n            out[1] = rotTmpVec3[1];\r\n            out[2] = rotTmpVec3[2];\r\n            out[3] = 1 + dot;\r\n            return normalize(out, out);\r\n        }\r\n    }\r\n    Quat.rotationTo = rotationTo;\r\n    /**\r\n     * Performs a spherical linear interpolation with two control points\r\n     */\r\n    var sqlerpTemp1 = Quat.zero();\r\n    var sqlerpTemp2 = Quat.zero();\r\n    function sqlerp(out, a, b, c, d, t) {\r\n        slerp(sqlerpTemp1, a, d, t);\r\n        slerp(sqlerpTemp2, b, c, t);\r\n        slerp(out, sqlerpTemp1, sqlerpTemp2, 2 * t * (1 - t));\r\n        return out;\r\n    }\r\n    Quat.sqlerp = sqlerp;\r\n    /**\r\n     * Sets the specified quaternion with values corresponding to the given\r\n     * axes. Each axis is a vec3 and is expected to be unit length and\r\n     * perpendicular to all other specified axes.\r\n     */\r\n    var axesTmpMat = mat3_1.default.zero();\r\n    function setAxes(out, view, right, up) {\r\n        axesTmpMat[0] = right[0];\r\n        axesTmpMat[3] = right[1];\r\n        axesTmpMat[6] = right[2];\r\n        axesTmpMat[1] = up[0];\r\n        axesTmpMat[4] = up[1];\r\n        axesTmpMat[7] = up[2];\r\n        axesTmpMat[2] = -view[0];\r\n        axesTmpMat[5] = -view[1];\r\n        axesTmpMat[8] = -view[2];\r\n        return normalize(out, Quat.fromMat3(out, axesTmpMat));\r\n    }\r\n    Quat.setAxes = setAxes;\r\n})(Quat || (Quat = {}));\r\nexports.default = Quat;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/quat.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/vec2.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/vec2.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Vec2;\r\n(function (Vec2) {\r\n    function zero() {\r\n        // force double backing array by 0.1.\r\n        var ret = [0.1, 0];\r\n        ret[0] = 0.0;\r\n        return ret;\r\n    }\r\n    Vec2.zero = zero;\r\n    function clone(a) {\r\n        var out = zero();\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        return out;\r\n    }\r\n    Vec2.clone = clone;\r\n    function create(x, y) {\r\n        var out = zero();\r\n        out[0] = x;\r\n        out[1] = y;\r\n        return out;\r\n    }\r\n    Vec2.create = create;\r\n    function toArray(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n    }\r\n    Vec2.toArray = toArray;\r\n    function fromArray(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        return a;\r\n    }\r\n    Vec2.fromArray = fromArray;\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        return out;\r\n    }\r\n    Vec2.copy = copy;\r\n    function set(out, x, y) {\r\n        out[0] = x;\r\n        out[1] = y;\r\n        return out;\r\n    }\r\n    Vec2.set = set;\r\n    function add(out, a, b) {\r\n        out[0] = a[0] + b[0];\r\n        out[1] = a[1] + b[1];\r\n        return out;\r\n    }\r\n    Vec2.add = add;\r\n    function sub(out, a, b) {\r\n        out[0] = a[0] - b[0];\r\n        out[1] = a[1] - b[1];\r\n        return out;\r\n    }\r\n    Vec2.sub = sub;\r\n    function mul(out, a, b) {\r\n        out[0] = a[0] * b[0];\r\n        out[1] = a[1] * b[1];\r\n        return out;\r\n    }\r\n    Vec2.mul = mul;\r\n    function div(out, a, b) {\r\n        out[0] = a[0] / b[0];\r\n        out[1] = a[1] / b[1];\r\n        return out;\r\n    }\r\n    Vec2.div = div;\r\n    function scale(out, a, b) {\r\n        out[0] = a[0] * b;\r\n        out[1] = a[1] * b;\r\n        return out;\r\n    }\r\n    Vec2.scale = scale;\r\n    function distance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1];\r\n        return Math.sqrt(x * x + y * y);\r\n    }\r\n    Vec2.distance = distance;\r\n    function squaredDistance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1];\r\n        return x * x + y * y;\r\n    }\r\n    Vec2.squaredDistance = squaredDistance;\r\n    function magnitude(a) {\r\n        var x = a[0], y = a[1];\r\n        return Math.sqrt(x * x + y * y);\r\n    }\r\n    Vec2.magnitude = magnitude;\r\n    function squaredMagnitude(a) {\r\n        var x = a[0], y = a[1];\r\n        return x * x + y * y;\r\n    }\r\n    Vec2.squaredMagnitude = squaredMagnitude;\r\n})(Vec2 || (Vec2 = {}));\r\nexports.default = Vec2;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/vec2.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/vec3.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/vec3.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/toji/gl-matrix/,\r\n * copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n */\r\nvar mat4_1 = __webpack_require__(/*! ./mat4 */ \"./build/node_modules/mol-math/linear-algebra/3d/mat4.js\");\r\nvar Vec3;\r\n(function (Vec3) {\r\n    function zero() {\r\n        var out = [0.1, 0.0, 0.0];\r\n        out[0] = 0;\r\n        return out;\r\n    }\r\n    Vec3.zero = zero;\r\n    function clone(a) {\r\n        var out = zero();\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        return out;\r\n    }\r\n    Vec3.clone = clone;\r\n    function fromObj(v) {\r\n        return create(v.x, v.y, v.z);\r\n    }\r\n    Vec3.fromObj = fromObj;\r\n    function toObj(v) {\r\n        return { x: v[0], y: v[1], z: v[2] };\r\n    }\r\n    Vec3.toObj = toObj;\r\n    function fromArray(v, array, offset) {\r\n        v[0] = array[offset + 0];\r\n        v[1] = array[offset + 1];\r\n        v[2] = array[offset + 2];\r\n    }\r\n    Vec3.fromArray = fromArray;\r\n    function toArray(v, out, offset) {\r\n        out[offset + 0] = v[0];\r\n        out[offset + 1] = v[1];\r\n        out[offset + 2] = v[2];\r\n        return v;\r\n    }\r\n    Vec3.toArray = toArray;\r\n    function create(x, y, z) {\r\n        var out = zero();\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        return out;\r\n    }\r\n    Vec3.create = create;\r\n    function ofArray(array) {\r\n        var out = zero();\r\n        out[0] = array[0];\r\n        out[1] = array[1];\r\n        out[2] = array[2];\r\n        return out;\r\n    }\r\n    Vec3.ofArray = ofArray;\r\n    function set(out, x, y, z) {\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        return out;\r\n    }\r\n    Vec3.set = set;\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        return out;\r\n    }\r\n    Vec3.copy = copy;\r\n    function add(out, a, b) {\r\n        out[0] = a[0] + b[0];\r\n        out[1] = a[1] + b[1];\r\n        out[2] = a[2] + b[2];\r\n        return out;\r\n    }\r\n    Vec3.add = add;\r\n    function sub(out, a, b) {\r\n        out[0] = a[0] - b[0];\r\n        out[1] = a[1] - b[1];\r\n        out[2] = a[2] - b[2];\r\n        return out;\r\n    }\r\n    Vec3.sub = sub;\r\n    function mul(out, a, b) {\r\n        out[0] = a[0] * b[0];\r\n        out[1] = a[1] * b[1];\r\n        out[2] = a[2] * b[2];\r\n        return out;\r\n    }\r\n    Vec3.mul = mul;\r\n    function div(out, a, b) {\r\n        out[0] = a[0] / b[0];\r\n        out[1] = a[1] / b[1];\r\n        out[2] = a[2] / b[2];\r\n        return out;\r\n    }\r\n    Vec3.div = div;\r\n    function scale(out, a, b) {\r\n        out[0] = a[0] * b;\r\n        out[1] = a[1] * b;\r\n        out[2] = a[2] * b;\r\n        return out;\r\n    }\r\n    Vec3.scale = scale;\r\n    function scaleAndAdd(out, a, b, scale) {\r\n        out[0] = a[0] + (b[0] * scale);\r\n        out[1] = a[1] + (b[1] * scale);\r\n        out[2] = a[2] + (b[2] * scale);\r\n        return out;\r\n    }\r\n    Vec3.scaleAndAdd = scaleAndAdd;\r\n    function distance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1], z = b[2] - a[2];\r\n        return Math.sqrt(x * x + y * y + z * z);\r\n    }\r\n    Vec3.distance = distance;\r\n    function squaredDistance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1], z = b[2] - a[2];\r\n        return x * x + y * y + z * z;\r\n    }\r\n    Vec3.squaredDistance = squaredDistance;\r\n    function magnitude(a) {\r\n        var x = a[0], y = a[1], z = a[2];\r\n        return Math.sqrt(x * x + y * y + z * z);\r\n    }\r\n    Vec3.magnitude = magnitude;\r\n    function squaredMagnitude(a) {\r\n        var x = a[0], y = a[1], z = a[2];\r\n        return x * x + y * y + z * z;\r\n    }\r\n    Vec3.squaredMagnitude = squaredMagnitude;\r\n    function setMagnitude(out, a, l) {\r\n        return Vec3.scale(out, Vec3.normalize(out, a), l);\r\n    }\r\n    Vec3.setMagnitude = setMagnitude;\r\n    function normalize(out, a) {\r\n        var x = a[0], y = a[1], z = a[2];\r\n        var len = x * x + y * y + z * z;\r\n        if (len > 0) {\r\n            len = 1 / Math.sqrt(len);\r\n            out[0] = a[0] * len;\r\n            out[1] = a[1] * len;\r\n            out[2] = a[2] * len;\r\n        }\r\n        return out;\r\n    }\r\n    Vec3.normalize = normalize;\r\n    function dot(a, b) {\r\n        return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\r\n    }\r\n    Vec3.dot = dot;\r\n    function cross(out, a, b) {\r\n        var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2];\r\n        out[0] = ay * bz - az * by;\r\n        out[1] = az * bx - ax * bz;\r\n        out[2] = ax * by - ay * bx;\r\n        return out;\r\n    }\r\n    Vec3.cross = cross;\r\n    /**\r\n     * Performs a linear interpolation between two Vec3's\r\n     */\r\n    function lerp(out, a, b, t) {\r\n        var ax = a[0], ay = a[1], az = a[2];\r\n        out[0] = ax + t * (b[0] - ax);\r\n        out[1] = ay + t * (b[1] - ay);\r\n        out[2] = az + t * (b[2] - az);\r\n        return out;\r\n    }\r\n    Vec3.lerp = lerp;\r\n    /**\r\n     * Performs a hermite interpolation with two control points\r\n     */\r\n    function hermite(out, a, b, c, d, t) {\r\n        var factorTimes2 = t * t;\r\n        var factor1 = factorTimes2 * (2 * t - 3) + 1;\r\n        var factor2 = factorTimes2 * (t - 2) + t;\r\n        var factor3 = factorTimes2 * (t - 1);\r\n        var factor4 = factorTimes2 * (3 - 2 * t);\r\n        out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\r\n        out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\r\n        out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\r\n        return out;\r\n    }\r\n    Vec3.hermite = hermite;\r\n    /**\r\n     * Performs a bezier interpolation with two control points\r\n     */\r\n    function bezier(out, a, b, c, d, t) {\r\n        var inverseFactor = 1 - t;\r\n        var inverseFactorTimesTwo = inverseFactor * inverseFactor;\r\n        var factorTimes2 = t * t;\r\n        var factor1 = inverseFactorTimesTwo * inverseFactor;\r\n        var factor2 = 3 * t * inverseFactorTimesTwo;\r\n        var factor3 = 3 * factorTimes2 * inverseFactor;\r\n        var factor4 = factorTimes2 * t;\r\n        out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\r\n        out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\r\n        out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\r\n        return out;\r\n    }\r\n    Vec3.bezier = bezier;\r\n    /**\r\n     * Generates a random vector with the given scale\r\n     */\r\n    function random(out, scale) {\r\n        var r = Math.random() * 2.0 * Math.PI;\r\n        var z = (Math.random() * 2.0) - 1.0;\r\n        var zScale = Math.sqrt(1.0 - z * z) * scale;\r\n        out[0] = Math.cos(r) * zScale;\r\n        out[1] = Math.sin(r) * zScale;\r\n        out[2] = z * scale;\r\n        return out;\r\n    }\r\n    Vec3.random = random;\r\n    /**\r\n     * Transforms the Vec3 with a Mat4. 4th vector component is implicitly '1'\r\n     */\r\n    function transformMat4(out, a, m) {\r\n        var x = a[0], y = a[1], z = a[2], w = 1 / ((m[3] * x + m[7] * y + m[11] * z + m[15]) || 1.0);\r\n        out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) * w;\r\n        out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) * w;\r\n        out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) * w;\r\n        return out;\r\n    }\r\n    Vec3.transformMat4 = transformMat4;\r\n    /**\r\n     * Transforms the Vec3 with a Mat3.\r\n     */\r\n    function transformMat3(out, a, m) {\r\n        var x = a[0], y = a[1], z = a[2];\r\n        out[0] = x * m[0] + y * m[3] + z * m[6];\r\n        out[1] = x * m[1] + y * m[4] + z * m[7];\r\n        out[2] = x * m[2] + y * m[5] + z * m[8];\r\n        return out;\r\n    }\r\n    Vec3.transformMat3 = transformMat3;\r\n    /** Transforms the Vec3 with a quat */\r\n    function transformQuat(out, a, q) {\r\n        // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations\r\n        var x = a[0], y = a[1], z = a[2];\r\n        var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\r\n        // calculate quat * vec\r\n        var ix = qw * x + qy * z - qz * y;\r\n        var iy = qw * y + qz * x - qx * z;\r\n        var iz = qw * z + qx * y - qy * x;\r\n        var iw = -qx * x - qy * y - qz * z;\r\n        // calculate result * inverse quat\r\n        out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\r\n        out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\r\n        out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\r\n        return out;\r\n    }\r\n    Vec3.transformQuat = transformQuat;\r\n    var angleTempA = zero(), angleTempB = zero();\r\n    function angle(a, b) {\r\n        copy(angleTempA, a);\r\n        copy(angleTempB, b);\r\n        normalize(angleTempA, angleTempA);\r\n        normalize(angleTempB, angleTempB);\r\n        var cosine = dot(angleTempA, angleTempB);\r\n        if (cosine > 1.0) {\r\n            return 0;\r\n        }\r\n        else if (cosine < -1.0) {\r\n            return Math.PI;\r\n        }\r\n        else {\r\n            return Math.acos(cosine);\r\n        }\r\n    }\r\n    Vec3.angle = angle;\r\n    var rotTemp = zero();\r\n    function makeRotation(mat, a, b) {\r\n        var by = angle(a, b);\r\n        if (Math.abs(by) < 0.0001)\r\n            return mat4_1.default.setIdentity(mat);\r\n        var axis = cross(rotTemp, a, b);\r\n        return mat4_1.default.fromRotation(mat, by, axis);\r\n    }\r\n    Vec3.makeRotation = makeRotation;\r\n    function isZero(v) {\r\n        return v[0] === 0 && v[1] === 0 && v[2] === 0;\r\n    }\r\n    Vec3.isZero = isZero;\r\n})(Vec3 || (Vec3 = {}));\r\nexports.default = Vec3;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/vec3.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/3d/vec4.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/3d/vec4.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Vec4;\r\n(function (Vec4) {\r\n    function zero() {\r\n        // force double backing array by 0.1.\r\n        var ret = [0.1, 0, 0, 0];\r\n        ret[0] = 0.0;\r\n        return ret;\r\n    }\r\n    Vec4.zero = zero;\r\n    function clone(a) {\r\n        var out = zero();\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    Vec4.clone = clone;\r\n    function create(x, y, z, w) {\r\n        var out = zero();\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        out[3] = w;\r\n        return out;\r\n    }\r\n    Vec4.create = create;\r\n    function toArray(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n        out[offset + 2] = a[2];\r\n        out[offset + 3] = a[3];\r\n    }\r\n    Vec4.toArray = toArray;\r\n    function fromArray(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        a[2] = array[offset + 2];\r\n        a[3] = array[offset + 3];\r\n        return a;\r\n    }\r\n    Vec4.fromArray = fromArray;\r\n    function toVec3Array(a, out, offset) {\r\n        out[offset + 0] = a[0];\r\n        out[offset + 1] = a[1];\r\n        out[offset + 2] = a[2];\r\n    }\r\n    Vec4.toVec3Array = toVec3Array;\r\n    function fromVec3Array(a, array, offset) {\r\n        a[0] = array[offset + 0];\r\n        a[1] = array[offset + 1];\r\n        a[2] = array[offset + 2];\r\n        a[3] = 0;\r\n        return a;\r\n    }\r\n    Vec4.fromVec3Array = fromVec3Array;\r\n    function copy(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    Vec4.copy = copy;\r\n    function set(out, x, y, z, w) {\r\n        out[0] = x;\r\n        out[1] = y;\r\n        out[2] = z;\r\n        out[3] = w;\r\n        return out;\r\n    }\r\n    Vec4.set = set;\r\n    function add(out, a, b) {\r\n        out[0] = a[0] + b[0];\r\n        out[1] = a[1] + b[1];\r\n        out[2] = a[2] + b[2];\r\n        out[3] = a[3] + b[3];\r\n        return out;\r\n    }\r\n    Vec4.add = add;\r\n    function distance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1], z = b[2] - a[2], w = b[3] - a[3];\r\n        return Math.sqrt(x * x + y * y + z * z + w * w);\r\n    }\r\n    Vec4.distance = distance;\r\n    function squaredDistance(a, b) {\r\n        var x = b[0] - a[0], y = b[1] - a[1], z = b[2] - a[2], w = b[3] - a[3];\r\n        return x * x + y * y + z * z + w * w;\r\n    }\r\n    Vec4.squaredDistance = squaredDistance;\r\n    function norm(a) {\r\n        var x = a[0], y = a[1], z = a[2], w = a[3];\r\n        return Math.sqrt(x * x + y * y + z * z + w * w);\r\n    }\r\n    Vec4.norm = norm;\r\n    function squaredNorm(a) {\r\n        var x = a[0], y = a[1], z = a[2], w = a[3];\r\n        return x * x + y * y + z * z + w * w;\r\n    }\r\n    Vec4.squaredNorm = squaredNorm;\r\n    function transformMat4(out, a, m) {\r\n        var x = a[0], y = a[1], z = a[2], w = a[3];\r\n        out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\r\n        out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\r\n        out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\r\n        out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\r\n        return out;\r\n    }\r\n    Vec4.transformMat4 = transformMat4;\r\n})(Vec4 || (Vec4 = {}));\r\nexports.default = Vec4;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/3d/vec4.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-math/linear-algebra/tensor.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-math/linear-algebra/tensor.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _3d_1 = __webpack_require__(/*! ./3d */ \"./build/node_modules/mol-math/linear-algebra/3d.js\");\r\nvar Tensor;\r\n(function (Tensor) {\r\n    function Layout(dimensions, axisOrderSlowToFast, ctor) {\r\n        // need to reverse the axis order for better access.\r\n        var axisOrderFastToSlow = [];\r\n        for (var i = 0; i < axisOrderSlowToFast.length; i++)\r\n            axisOrderFastToSlow[i] = axisOrderSlowToFast[axisOrderSlowToFast.length - i - 1];\r\n        var accessDimensions = [1];\r\n        for (var i = 1; i < dimensions.length; i++)\r\n            accessDimensions[i] = dimensions[axisOrderFastToSlow[i - 1]];\r\n        return { dimensions: dimensions, axisOrderFastToSlow: axisOrderFastToSlow, axisOrderSlowToFast: axisOrderSlowToFast, accessDimensions: accessDimensions, defaultCtor: ctor || Float64Array };\r\n    }\r\n    function create(space, data) { return { space: space, data: data }; }\r\n    Tensor.create = create;\r\n    function Space(dimensions, axisOrderSlowToFast, ctor) {\r\n        var layout = Layout(dimensions, axisOrderSlowToFast, ctor);\r\n        var _a = accessors(layout), get = _a.get, set = _a.set;\r\n        return { rank: dimensions.length, dimensions: dimensions, axisOrderSlowToFast: axisOrderSlowToFast, create: creator(layout), get: get, set: set };\r\n    }\r\n    Tensor.Space = Space;\r\n    function Data1(values) { return values; }\r\n    Tensor.Data1 = Data1;\r\n    function Vector(d, ctor) { return Space([d], [0], ctor); }\r\n    Tensor.Vector = Vector;\r\n    function ColumnMajorMatrix(rows, cols, ctor) { return Space([rows, cols], [1, 0], ctor); }\r\n    Tensor.ColumnMajorMatrix = ColumnMajorMatrix;\r\n    function RowMajorMatrix(rows, cols, ctor) { return Space([rows, cols], [0, 1], ctor); }\r\n    Tensor.RowMajorMatrix = RowMajorMatrix;\r\n    function toMat4(space, data) {\r\n        if (space.rank !== 2)\r\n            throw new Error('Invalid tensor rank');\r\n        var mat = _3d_1.Mat4.zero();\r\n        var d0 = Math.min(4, space.dimensions[0]), d1 = Math.min(4, space.dimensions[1]);\r\n        for (var i = 0; i < d0; i++) {\r\n            for (var j = 0; j < d1; j++)\r\n                _3d_1.Mat4.setValue(mat, i, j, space.get(data, i, j));\r\n        }\r\n        return mat;\r\n    }\r\n    Tensor.toMat4 = toMat4;\r\n    function toMat3(space, data) {\r\n        if (space.rank !== 2)\r\n            throw new Error('Invalid tensor rank');\r\n        var mat = _3d_1.Mat3.zero();\r\n        var d0 = Math.min(3, space.dimensions[0]), d1 = Math.min(3, space.dimensions[1]);\r\n        for (var i = 0; i < d0; i++) {\r\n            for (var j = 0; j < d1; j++)\r\n                _3d_1.Mat3.setValue(mat, i, j, space.get(data, i, j));\r\n        }\r\n        return mat;\r\n    }\r\n    Tensor.toMat3 = toMat3;\r\n    function toVec3(space, data) {\r\n        if (space.rank !== 1)\r\n            throw new Error('Invalid tensor rank');\r\n        var vec = _3d_1.Vec3.zero();\r\n        var d0 = Math.min(3, space.dimensions[0]);\r\n        for (var i = 0; i < d0; i++)\r\n            vec[i] = data[i];\r\n        return vec;\r\n    }\r\n    Tensor.toVec3 = toVec3;\r\n    function toVec4(space, data) {\r\n        if (space.rank !== 1)\r\n            throw new Error('Invalid tensor rank');\r\n        var vec = _3d_1.Vec4.zero();\r\n        var d0 = Math.min(4, space.dimensions[0]);\r\n        for (var i = 0; i < d0; i++)\r\n            vec[i] = data[i];\r\n        return vec;\r\n    }\r\n    Tensor.toVec4 = toVec4;\r\n    function areEqualExact(a, b) {\r\n        var len = a.length;\r\n        if (len !== b.length)\r\n            return false;\r\n        for (var i = 0; i < len; i++)\r\n            if (a[i] !== b[i])\r\n                return false;\r\n        return true;\r\n    }\r\n    Tensor.areEqualExact = areEqualExact;\r\n    function accessors(layout) {\r\n        var dimensions = layout.dimensions, ao = layout.axisOrderFastToSlow;\r\n        switch (dimensions.length) {\r\n            case 1: return { get: function (t, d) { return t[d]; }, set: function (t, d, x) { return t[d] = x; } };\r\n            case 2: {\r\n                // column major\r\n                if (ao[0] === 0 && ao[1] === 1) {\r\n                    var rows_1 = dimensions[0];\r\n                    return { get: function (t, i, j) { return t[j * rows_1 + i]; }, set: function (t, i, j, x) { return t[j * rows_1 + i] = x; } };\r\n                }\r\n                if (ao[0] === 1 && ao[1] === 0) {\r\n                    var cols_1 = dimensions[1];\r\n                    return { get: function (t, i, j) { return t[i * cols_1 + j]; }, set: function (t, i, j, x) { return t[i * cols_1 + j] = x; } };\r\n                }\r\n                throw new Error('bad axis order');\r\n            }\r\n            case 3: {\r\n                if (ao[0] === 0 && ao[1] === 1 && ao[2] === 2) { // 012 ijk\r\n                    var u_1 = dimensions[0], v = dimensions[1], uv_1 = u_1 * v;\r\n                    return { get: function (t, i, j, k) { return t[i + j * u_1 + k * uv_1]; }, set: function (t, i, j, k, x) { return t[i + j * u_1 + k * uv_1] = x; } };\r\n                }\r\n                if (ao[0] === 0 && ao[1] === 2 && ao[2] === 1) { // 021 ikj\r\n                    var u_2 = dimensions[0], v = dimensions[2], uv_2 = u_2 * v;\r\n                    return { get: function (t, i, j, k) { return t[i + k * u_2 + j * uv_2]; }, set: function (t, i, j, k, x) { return t[i + k * u_2 + j * uv_2] = x; } };\r\n                }\r\n                if (ao[0] === 1 && ao[1] === 0 && ao[2] === 2) { // 102 jik\r\n                    var u_3 = dimensions[1], v = dimensions[0], uv_3 = u_3 * v;\r\n                    return { get: function (t, i, j, k) { return t[j + i * u_3 + k * uv_3]; }, set: function (t, i, j, k, x) { return t[j + i * u_3 + k * uv_3] = x; } };\r\n                }\r\n                if (ao[0] === 1 && ao[1] === 2 && ao[2] === 0) { // 120 jki\r\n                    var u_4 = dimensions[1], v = dimensions[2], uv_4 = u_4 * v;\r\n                    return { get: function (t, i, j, k) { return t[j + k * u_4 + i * uv_4]; }, set: function (t, i, j, k, x) { return t[j + k * u_4 + i * uv_4] = x; } };\r\n                }\r\n                if (ao[0] === 2 && ao[1] === 0 && ao[2] === 1) { // 201 kij\r\n                    var u_5 = dimensions[2], v = dimensions[0], uv_5 = u_5 * v;\r\n                    return { get: function (t, i, j, k) { return t[k + i * u_5 + j * uv_5]; }, set: function (t, i, j, k, x) { return t[k + i * u_5 + j * uv_5] = x; } };\r\n                }\r\n                if (ao[0] === 2 && ao[1] === 1 && ao[2] === 0) { // 210 kji\r\n                    var u_6 = dimensions[2], v = dimensions[1], uv_6 = u_6 * v;\r\n                    return { get: function (t, i, j, k) { return t[k + j * u_6 + i * uv_6]; }, set: function (t, i, j, k, x) { return t[k + j * u_6 + i * uv_6] = x; } };\r\n                }\r\n                throw new Error('bad axis order');\r\n            }\r\n            default: return {\r\n                get: function (t) {\r\n                    var c = [];\r\n                    for (var _a = 1; _a < arguments.length; _a++) {\r\n                        c[_a - 1] = arguments[_a];\r\n                    }\r\n                    return t[dataOffset(layout, c)];\r\n                },\r\n                set: function (t) {\r\n                    var c = [];\r\n                    for (var _a = 1; _a < arguments.length; _a++) {\r\n                        c[_a - 1] = arguments[_a];\r\n                    }\r\n                    return t[dataOffset(layout, c)] = c[c.length - 1];\r\n                }\r\n            };\r\n        }\r\n    }\r\n    function creator(layout) {\r\n        var ds = layout.dimensions;\r\n        var size = 1;\r\n        for (var i = 0, _i = ds.length; i < _i; i++)\r\n            size *= ds[i];\r\n        return function (ctor) { return new (ctor || layout.defaultCtor)(size); };\r\n    }\r\n    function dataOffset(layout, coord) {\r\n        var acc = layout.accessDimensions, ao = layout.axisOrderFastToSlow;\r\n        var d = acc.length - 1;\r\n        var o = acc[d] * coord[ao[d]];\r\n        for (var i = d - 1; i >= 0; i--) {\r\n            o = (o + coord[ao[i]]) * acc[i];\r\n        }\r\n        return o;\r\n    }\r\n})(Tensor = exports.Tensor || (exports.Tensor = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-math/linear-algebra/tensor.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-model/structure.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./structure/model */ \"./build/node_modules/mol-model/structure/model.js\"));\r\n__export(__webpack_require__(/*! ./structure/structure */ \"./build/node_modules/mol-model/structure/structure.js\"));\r\n__export(__webpack_require__(/*! ./structure/query */ \"./build/node_modules/mol-model/structure/query.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar model_1 = __webpack_require__(/*! ./model/model */ \"./build/node_modules/mol-model/structure/model/model.js\");\r\nexports.Model = model_1.default;\r\nvar Types = __webpack_require__(/*! ./model/types */ \"./build/node_modules/mol-model/structure/model/types.js\");\r\nexports.Types = Types;\r\nvar symmetry_1 = __webpack_require__(/*! ./model/properties/symmetry */ \"./build/node_modules/mol-model/structure/model/properties/symmetry.js\");\r\nexports.ModelSymmetry = symmetry_1.ModelSymmetry;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar uuid_1 = __webpack_require__(/*! mol-util/uuid */ \"./build/node_modules/mol-util/uuid.js\");\r\nvar atomic_1 = __webpack_require__(/*! ../properties/atomic */ \"./build/node_modules/mol-model/structure/model/properties/atomic.js\");\r\nvar atomic_keys_1 = __webpack_require__(/*! ../properties/utils/atomic-keys */ \"./build/node_modules/mol-model/structure/model/properties/utils/atomic-keys.js\");\r\nvar types_1 = __webpack_require__(/*! ../types */ \"./build/node_modules/mol-model/structure/model/types.js\");\r\nvar assembly_1 = __webpack_require__(/*! ./mmcif/assembly */ \"./build/node_modules/mol-model/structure/model/formats/mmcif/assembly.js\");\r\nvar ihm_1 = __webpack_require__(/*! ./mmcif/ihm */ \"./build/node_modules/mol-model/structure/model/formats/mmcif/ihm.js\");\r\nvar sequence_1 = __webpack_require__(/*! ./mmcif/sequence */ \"./build/node_modules/mol-model/structure/model/formats/mmcif/sequence.js\");\r\nfunction findModelBounds(_a, startIndex) {\r\n    var data = _a.data;\r\n    var num = data.atom_site.pdbx_PDB_model_num;\r\n    var atomCount = num.rowCount;\r\n    if (!num.isDefined)\r\n        return int_1.Interval.ofBounds(startIndex, atomCount);\r\n    var endIndex = startIndex + 1;\r\n    while (endIndex < atomCount && num.areValuesEqual(startIndex, endIndex))\r\n        endIndex++;\r\n    return int_1.Interval.ofBounds(startIndex, endIndex);\r\n}\r\nfunction findHierarchyOffsets(_a, bounds) {\r\n    var data = _a.data;\r\n    if (int_1.Interval.size(bounds) === 0)\r\n        return { residues: [], chains: [] };\r\n    var start = int_1.Interval.start(bounds), end = int_1.Interval.end(bounds);\r\n    var residues = [start], chains = [start];\r\n    var _b = data.atom_site, label_entity_id = _b.label_entity_id, auth_asym_id = _b.auth_asym_id, auth_seq_id = _b.auth_seq_id, pdbx_PDB_ins_code = _b.pdbx_PDB_ins_code, label_comp_id = _b.label_comp_id;\r\n    for (var i = start + 1; i < end; i++) {\r\n        var newChain = !label_entity_id.areValuesEqual(i - 1, i) || !auth_asym_id.areValuesEqual(i - 1, i);\r\n        var newResidue = newChain\r\n            || !auth_seq_id.areValuesEqual(i - 1, i)\r\n            || !pdbx_PDB_ins_code.areValuesEqual(i - 1, i)\r\n            || !label_comp_id.areValuesEqual(i - 1, i);\r\n        if (newResidue)\r\n            residues[residues.length] = i;\r\n        if (newChain)\r\n            chains[chains.length] = i;\r\n    }\r\n    return { residues: residues, chains: chains };\r\n}\r\nfunction createHierarchyData(_a, bounds, offsets) {\r\n    var data = _a.data;\r\n    var atom_site = data.atom_site;\r\n    var start = int_1.Interval.start(bounds), end = int_1.Interval.end(bounds);\r\n    var atoms = db_1.Table.ofColumns(atomic_1.AtomsSchema, {\r\n        type_symbol: db_1.Column.ofArray({ array: db_1.Column.mapToArray(db_1.Column.window(atom_site.type_symbol, start, end), types_1.ElementSymbol), schema: db_1.Column.Schema.Aliased(db_1.Column.Schema.str) }),\r\n        label_atom_id: db_1.Column.window(atom_site.label_atom_id, start, end),\r\n        auth_atom_id: db_1.Column.window(atom_site.auth_atom_id, start, end),\r\n        label_alt_id: db_1.Column.window(atom_site.label_alt_id, start, end),\r\n        pdbx_formal_charge: db_1.Column.window(atom_site.pdbx_formal_charge, start, end)\r\n    });\r\n    var residues = db_1.Table.view(atom_site, atomic_1.ResiduesSchema, offsets.residues);\r\n    // Optimize the numeric columns\r\n    db_1.Table.columnToArray(residues, 'label_seq_id', Int32Array);\r\n    db_1.Table.columnToArray(residues, 'auth_seq_id', Int32Array);\r\n    var chains = db_1.Table.view(atom_site, atomic_1.ChainsSchema, offsets.chains);\r\n    return { atoms: atoms, residues: residues, chains: chains };\r\n}\r\nfunction getConformation(_a, bounds) {\r\n    var data = _a.data;\r\n    var start = int_1.Interval.start(bounds), end = int_1.Interval.end(bounds);\r\n    var atom_site = data.atom_site;\r\n    return {\r\n        id: uuid_1.default.create(),\r\n        atomId: db_1.Column.window(atom_site.id, start, end),\r\n        occupancy: db_1.Column.window(atom_site.occupancy, start, end),\r\n        B_iso_or_equiv: db_1.Column.window(atom_site.B_iso_or_equiv, start, end),\r\n        x: atom_site.Cartn_x.toArray({ array: Float32Array, start: start, end: end }),\r\n        y: atom_site.Cartn_y.toArray({ array: Float32Array, start: start, end: end }),\r\n        z: atom_site.Cartn_z.toArray({ array: Float32Array, start: start, end: end }),\r\n    };\r\n}\r\nfunction getSymmetry(format) {\r\n    var assemblies = assembly_1.createAssemblies(format);\r\n    var spacegroup = getSpacegroup(format);\r\n    var isNonStandardCrytalFrame = checkNonStandardCrystalFrame(format, spacegroup);\r\n    return { assemblies: assemblies, spacegroup: spacegroup, isNonStandardCrytalFrame: isNonStandardCrytalFrame };\r\n}\r\nfunction checkNonStandardCrystalFrame(format, spacegroup) {\r\n    var atom_sites = format.data.atom_sites;\r\n    if (atom_sites._rowCount === 0)\r\n        return false;\r\n    // TODO: parse atom_sites transform and check if it corresponds to the toFractional matrix\r\n    return false;\r\n}\r\nfunction getSpacegroup(format) {\r\n    var _a = format.data, symmetry = _a.symmetry, cell = _a.cell;\r\n    if (symmetry._rowCount === 0 || cell._rowCount === 0)\r\n        return geometry_1.Spacegroup.ZeroP1;\r\n    var groupName = symmetry['space_group_name_H-M'].value(0);\r\n    var spaceCell = geometry_1.SpacegroupCell.create(groupName, linear_algebra_1.Vec3.create(cell.length_a.value(0), cell.length_b.value(0), cell.length_c.value(0)), linear_algebra_1.Vec3.scale(linear_algebra_1.Vec3.zero(), linear_algebra_1.Vec3.create(cell.angle_alpha.value(0), cell.angle_beta.value(0), cell.angle_gamma.value(0)), Math.PI / 180));\r\n    return geometry_1.Spacegroup.create(spaceCell);\r\n}\r\nfunction isHierarchyDataEqual(a, b) {\r\n    // need to cast because of how TS handles type resolution for interfaces https://github.com/Microsoft/TypeScript/issues/15300\r\n    return db_1.Table.areEqual(a.chains, b.chains)\r\n        && db_1.Table.areEqual(a.residues, b.residues)\r\n        && db_1.Table.areEqual(a.atoms, b.atoms);\r\n}\r\nfunction createModel(format, bounds, previous) {\r\n    var hierarchyOffsets = findHierarchyOffsets(format, bounds);\r\n    var hierarchyData = createHierarchyData(format, bounds, hierarchyOffsets);\r\n    if (previous && isHierarchyDataEqual(previous.atomicHierarchy, hierarchyData)) {\r\n        return __assign({}, previous, { atomicConformation: getConformation(format, bounds) });\r\n    }\r\n    var hierarchySegments = {\r\n        residueSegments: int_1.Segmentation.ofOffsets(hierarchyOffsets.residues, bounds),\r\n        chainSegments: int_1.Segmentation.ofOffsets(hierarchyOffsets.chains, bounds),\r\n    };\r\n    var entities = { data: format.data.entity, getEntityIndex: db_1.Column.createIndexer(format.data.entity.id) };\r\n    var hierarchyKeys = atomic_keys_1.getAtomicKeys(hierarchyData, entities, hierarchySegments);\r\n    var atomicHierarchy = __assign({}, hierarchyData, hierarchyKeys, hierarchySegments);\r\n    var coarse = ihm_1.getIHMCoarse(format.data, entities);\r\n    return {\r\n        id: uuid_1.default.create(),\r\n        sourceData: format,\r\n        modelNum: format.data.atom_site.pdbx_PDB_model_num.value(int_1.Interval.start(bounds)),\r\n        entities: entities,\r\n        atomicHierarchy: atomicHierarchy,\r\n        sequence: sequence_1.getSequence(format.data, entities, atomicHierarchy),\r\n        atomicConformation: getConformation(format, bounds),\r\n        coarseHierarchy: coarse.hierarchy,\r\n        coarseConformation: coarse.conformation,\r\n        symmetry: getSymmetry(format)\r\n    };\r\n}\r\nfunction buildModels(format) {\r\n    var atomCount = format.data.atom_site._rowCount;\r\n    var isIHM = format.data.ihm_model_list._rowCount > 0;\r\n    if (atomCount === 0) {\r\n        return isIHM\r\n            ? [createModel(format, int_1.Interval.Empty, void 0)]\r\n            : [];\r\n    }\r\n    var models = [];\r\n    var modelStart = 0;\r\n    while (modelStart < atomCount) {\r\n        var bounds = findModelBounds(format, modelStart);\r\n        var model = createModel(format, bounds, models.length > 0 ? models[models.length - 1] : void 0);\r\n        models.push(model);\r\n        modelStart = int_1.Interval.end(bounds);\r\n    }\r\n    return models;\r\n}\r\nexports.default = buildModels;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif/assembly.js":
+/*!********************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif/assembly.js ***!
+  \********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar symmetry_operator_1 = __webpack_require__(/*! mol-math/geometry/symmetry-operator */ \"./build/node_modules/mol-math/geometry/symmetry-operator.js\");\r\nvar symmetry_1 = __webpack_require__(/*! ../../properties/symmetry */ \"./build/node_modules/mol-model/structure/model/properties/symmetry.js\");\r\nvar query_1 = __webpack_require__(/*! ../../../query */ \"./build/node_modules/mol-model/structure/query.js\");\r\nfunction createAssemblies(format) {\r\n    var pdbx_struct_assembly = format.data.pdbx_struct_assembly;\r\n    if (!pdbx_struct_assembly._rowCount)\r\n        return [];\r\n    var matrices = getMatrices(format);\r\n    var assemblies = [];\r\n    for (var i = 0; i < pdbx_struct_assembly._rowCount; i++) {\r\n        assemblies[assemblies.length] = createAssembly(format, i, matrices);\r\n    }\r\n    return assemblies;\r\n}\r\nexports.createAssemblies = createAssemblies;\r\nfunction createAssembly(format, index, matrices) {\r\n    var _a = format.data, pdbx_struct_assembly = _a.pdbx_struct_assembly, pdbx_struct_assembly_gen = _a.pdbx_struct_assembly_gen;\r\n    var id = pdbx_struct_assembly.id.value(index);\r\n    var details = pdbx_struct_assembly.details.value(index);\r\n    var generators = [];\r\n    var assembly_id = pdbx_struct_assembly_gen.assembly_id, oper_expression = pdbx_struct_assembly_gen.oper_expression, asym_id_list = pdbx_struct_assembly_gen.asym_id_list;\r\n    for (var i = 0, _i = pdbx_struct_assembly_gen._rowCount; i < _i; i++) {\r\n        if (assembly_id.value(i) !== id)\r\n            continue;\r\n        generators[generators.length] = {\r\n            expression: oper_expression.value(i),\r\n            asymIds: asym_id_list.value(i)\r\n        };\r\n    }\r\n    return symmetry_1.Assembly.create(id, details, operatorGroupsProvider(generators, matrices));\r\n}\r\nfunction operatorGroupsProvider(generators, matrices) {\r\n    return function () {\r\n        var groups = [];\r\n        var operatorOffset = 0;\r\n        for (var i = 0; i < generators.length; i++) {\r\n            var gen = generators[i];\r\n            var operatorList = parseOperatorList(gen.expression);\r\n            var operatorNames = expandOperators(operatorList);\r\n            var operators = getAssemblyOperators(matrices, operatorNames, operatorOffset);\r\n            var selector = query_1.Query(query_1.Queries.generators.atoms({ chainTest: query_1.Queries.pred.and(query_1.Queries.pred.eq(query_1.Queries.props.unit.operator_name, symmetry_operator_1.SymmetryOperator.DefaultName), query_1.Queries.pred.inSet(query_1.Queries.props.chain.label_asym_id, gen.asymIds)) }));\r\n            groups[groups.length] = { selector: selector, operators: operators };\r\n            operatorOffset += operators.length;\r\n        }\r\n        return groups;\r\n    };\r\n}\r\nfunction getMatrices(_a) {\r\n    var data = _a.data;\r\n    var pdbx_struct_oper_list = data.pdbx_struct_oper_list;\r\n    var id = pdbx_struct_oper_list.id, matrix = pdbx_struct_oper_list.matrix, vector = pdbx_struct_oper_list.vector, _schema = pdbx_struct_oper_list._schema;\r\n    var matrices = new Map();\r\n    for (var i = 0, _i = pdbx_struct_oper_list._rowCount; i < _i; i++) {\r\n        var m = linear_algebra_1.Tensor.toMat4(_schema.matrix.space, matrix.value(i));\r\n        var t = linear_algebra_1.Tensor.toVec3(_schema.vector.space, vector.value(i));\r\n        linear_algebra_1.Mat4.setTranslation(m, t);\r\n        linear_algebra_1.Mat4.setValue(m, 3, 3, 1);\r\n        matrices.set(id.value(i), m);\r\n    }\r\n    return matrices;\r\n}\r\nfunction expandOperators(operatorList) {\r\n    var ops = [];\r\n    var currentOp = [];\r\n    for (var i = 0; i < operatorList.length; i++)\r\n        currentOp[i] = '';\r\n    expandOperators1(operatorList, ops, operatorList.length - 1, currentOp);\r\n    return ops;\r\n}\r\nfunction expandOperators1(operatorNames, list, i, current) {\r\n    if (i < 0) {\r\n        list[list.length] = current.slice(0);\r\n        return;\r\n    }\r\n    var ops = operatorNames[i], len = ops.length;\r\n    for (var j = 0; j < len; j++) {\r\n        current[i] = ops[j];\r\n        expandOperators1(operatorNames, list, i - 1, current);\r\n    }\r\n}\r\nfunction getAssemblyOperators(matrices, operatorNames, startIndex) {\r\n    var operators = [];\r\n    var index = startIndex;\r\n    for (var _a = 0, operatorNames_1 = operatorNames; _a < operatorNames_1.length; _a++) {\r\n        var op = operatorNames_1[_a];\r\n        var m = linear_algebra_1.Mat4.identity();\r\n        for (var i = 0; i < op.length; i++) {\r\n            linear_algebra_1.Mat4.mul(m, m, matrices.get(op[i]));\r\n        }\r\n        index++;\r\n        operators[operators.length] = symmetry_operator_1.SymmetryOperator.create(\"A-\" + index, m);\r\n    }\r\n    return operators;\r\n}\r\nfunction parseOperatorList(value) {\r\n    // '(X0)(1-5)' becomes [['X0'], ['1', '2', '3', '4', '5']]\r\n    // kudos to Glen van Ginkel.\r\n    var oeRegex = /\\(?([^\\(\\)]+)\\)?]*/g, groups = [], ret = [];\r\n    var g;\r\n    while (g = oeRegex.exec(value))\r\n        groups[groups.length] = g[1];\r\n    groups.forEach(function (g) {\r\n        var group = [];\r\n        g.split(',').forEach(function (e) {\r\n            var dashIndex = e.indexOf('-');\r\n            if (dashIndex > 0) {\r\n                var from = parseInt(e.substring(0, dashIndex)), to = parseInt(e.substr(dashIndex + 1));\r\n                for (var i = from; i <= to; i++)\r\n                    group[group.length] = i.toString();\r\n            }\r\n            else {\r\n                group[group.length] = e.trim();\r\n            }\r\n        });\r\n        ret[ret.length] = group;\r\n    });\r\n    return ret;\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif/assembly.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif/bonds.js":
+/*!*****************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif/bonds.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 MolQL contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./build/node_modules/mol-model/structure/model/formats/mmcif/util.js\");\r\nvar StructConn = /** @class */ (function () {\r\n    function StructConn(entries) {\r\n        this.entries = entries;\r\n        this._residuePairIndex = void 0;\r\n        this._atomIndex = void 0;\r\n    }\r\n    StructConn._resKey = function (rA, rB) {\r\n        if (rA < rB)\r\n            return rA + \"-\" + rB;\r\n        return rB + \"-\" + rA;\r\n    };\r\n    StructConn.prototype.getResiduePairIndex = function () {\r\n        if (this._residuePairIndex)\r\n            return this._residuePairIndex;\r\n        this._residuePairIndex = new Map();\r\n        for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\r\n            var e = _a[_i];\r\n            var ps = e.partners;\r\n            var l = ps.length;\r\n            for (var i = 0; i < l - 1; i++) {\r\n                for (var j = i + i; j < l; j++) {\r\n                    var key = StructConn._resKey(ps[i].residueIndex, ps[j].residueIndex);\r\n                    if (this._residuePairIndex.has(key)) {\r\n                        this._residuePairIndex.get(key).push(e);\r\n                    }\r\n                    else {\r\n                        this._residuePairIndex.set(key, [e]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return this._residuePairIndex;\r\n    };\r\n    StructConn.prototype.getAtomIndex = function () {\r\n        if (this._atomIndex)\r\n            return this._atomIndex;\r\n        this._atomIndex = new Map();\r\n        for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\r\n            var e = _a[_i];\r\n            for (var _b = 0, _c = e.partners; _b < _c.length; _b++) {\r\n                var p = _c[_b];\r\n                var key = p.atomIndex;\r\n                if (this._atomIndex.has(key)) {\r\n                    this._atomIndex.get(key).push(e);\r\n                }\r\n                else {\r\n                    this._atomIndex.set(key, [e]);\r\n                }\r\n            }\r\n        }\r\n        return this._atomIndex;\r\n    };\r\n    StructConn.prototype.getResidueEntries = function (residueAIndex, residueBIndex) {\r\n        return this.getResiduePairIndex().get(StructConn._resKey(residueAIndex, residueBIndex)) || StructConn._emptyEntry;\r\n    };\r\n    StructConn.prototype.getAtomEntries = function (atomIndex) {\r\n        return this.getAtomIndex().get(atomIndex) || StructConn._emptyEntry;\r\n    };\r\n    StructConn._emptyEntry = [];\r\n    return StructConn;\r\n}());\r\nexports.StructConn = StructConn;\r\n(function (StructConn) {\r\n    function create(model) {\r\n        if (model.sourceData.kind !== 'mmCIF')\r\n            return;\r\n        var struct_conn = model.sourceData.data.struct_conn;\r\n        if (!struct_conn._rowCount)\r\n            return void 0;\r\n        var conn_type_id = struct_conn.conn_type_id, pdbx_dist_value = struct_conn.pdbx_dist_value, pdbx_value_order = struct_conn.pdbx_value_order;\r\n        var p1 = {\r\n            label_asym_id: struct_conn.ptnr1_label_asym_id,\r\n            label_comp_id: struct_conn.ptnr1_label_comp_id,\r\n            label_seq_id: struct_conn.ptnr1_label_seq_id,\r\n            label_atom_id: struct_conn.ptnr1_label_atom_id,\r\n            label_alt_id: struct_conn.pdbx_ptnr1_label_alt_id,\r\n            ins_code: struct_conn.pdbx_ptnr1_PDB_ins_code,\r\n            symmetry: struct_conn.ptnr1_symmetry\r\n        };\r\n        var p2 = {\r\n            label_asym_id: struct_conn.ptnr2_label_asym_id,\r\n            label_comp_id: struct_conn.ptnr2_label_comp_id,\r\n            label_seq_id: struct_conn.ptnr2_label_seq_id,\r\n            label_atom_id: struct_conn.ptnr2_label_atom_id,\r\n            label_alt_id: struct_conn.pdbx_ptnr2_label_alt_id,\r\n            ins_code: struct_conn.pdbx_ptnr2_PDB_ins_code,\r\n            symmetry: struct_conn.ptnr2_symmetry\r\n        };\r\n        var _p = function (row, ps) {\r\n            if (ps.label_asym_id.valueKind(row) !== 0 /* Present */)\r\n                return void 0;\r\n            var asymId = ps.label_asym_id.value(row);\r\n            var residueIndex = model.atomicHierarchy.findResidueKey(util_1.findEntityIdByAsymId(model, asymId), ps.label_comp_id.value(row), asymId, ps.label_seq_id.value(row), ps.ins_code.value(row));\r\n            if (residueIndex < 0)\r\n                return void 0;\r\n            var atomName = ps.label_atom_id.value(row);\r\n            // turns out \"mismat\" records might not have atom name value\r\n            if (!atomName)\r\n                return void 0;\r\n            var atomIndex = util_1.findAtomIndexByLabelName(model, residueIndex, atomName, ps.label_alt_id.value(row));\r\n            if (atomIndex < 0)\r\n                return void 0;\r\n            return { residueIndex: residueIndex, atomIndex: atomIndex, symmetry: ps.symmetry.value(row) || '1_555' };\r\n        };\r\n        var _ps = function (row) {\r\n            var ret = [];\r\n            var p = _p(row, p1);\r\n            if (p)\r\n                ret.push(p);\r\n            p = _p(row, p2);\r\n            if (p)\r\n                ret.push(p);\r\n            return ret;\r\n        };\r\n        var entries = [];\r\n        for (var i = 0; i < struct_conn._rowCount; i++) {\r\n            var partners = _ps(i);\r\n            if (partners.length < 2)\r\n                continue;\r\n            var type = conn_type_id.value(i);\r\n            var orderType = (pdbx_value_order.value(i) || '').toLowerCase();\r\n            var flags = 0 /* None */;\r\n            var order = 1;\r\n            switch (orderType) {\r\n                case 'sing':\r\n                    order = 1;\r\n                    break;\r\n                case 'doub':\r\n                    order = 2;\r\n                    break;\r\n                case 'trip':\r\n                    order = 3;\r\n                    break;\r\n                case 'quad':\r\n                    order = 4;\r\n                    break;\r\n            }\r\n            switch (type) {\r\n                case 'covale':\r\n                case 'covale_base':\r\n                case 'covale_phosphate':\r\n                case 'covale_sugar':\r\n                case 'modres':\r\n                    flags = 1 /* Covalent */;\r\n                    break;\r\n                case 'disulf':\r\n                    flags = 1 /* Covalent */ | 16 /* Sulfide */;\r\n                    break;\r\n                case 'hydrog':\r\n                    flags = 4 /* Hydrogen */;\r\n                    break;\r\n                case 'metalc':\r\n                    flags = 2 /* MetallicCoordination */;\r\n                    break;\r\n                case 'saltbr':\r\n                    flags = 8 /* Ion */;\r\n                    break;\r\n            }\r\n            entries.push({ flags: flags, order: order, distance: pdbx_dist_value.value(i), partners: partners });\r\n        }\r\n        return new StructConn(entries);\r\n    }\r\n    StructConn.create = create;\r\n})(StructConn = exports.StructConn || (exports.StructConn = {}));\r\nexports.StructConn = StructConn;\r\nvar ComponentBondInfo = /** @class */ (function () {\r\n    function ComponentBondInfo() {\r\n        this.entries = new Map();\r\n    }\r\n    ComponentBondInfo.prototype.newEntry = function (id) {\r\n        var e = new ComponentBondInfo.Entry(id);\r\n        this.entries.set(id, e);\r\n        return e;\r\n    };\r\n    return ComponentBondInfo;\r\n}());\r\nexports.ComponentBondInfo = ComponentBondInfo;\r\n(function (ComponentBondInfo) {\r\n    var Entry = /** @class */ (function () {\r\n        function Entry(id) {\r\n            this.id = id;\r\n            this.map = new Map();\r\n        }\r\n        Entry.prototype.add = function (a, b, order, flags, swap) {\r\n            if (swap === void 0) { swap = true; }\r\n            var e = this.map.get(a);\r\n            if (e !== void 0) {\r\n                var f = e.get(b);\r\n                if (f === void 0) {\r\n                    e.set(b, { order: order, flags: flags });\r\n                }\r\n            }\r\n            else {\r\n                var map = new Map();\r\n                map.set(b, { order: order, flags: flags });\r\n                this.map.set(a, map);\r\n            }\r\n            if (swap)\r\n                this.add(b, a, order, flags, false);\r\n        };\r\n        return Entry;\r\n    }());\r\n    ComponentBondInfo.Entry = Entry;\r\n    function create(model) {\r\n        if (model.sourceData.kind !== 'mmCIF')\r\n            return;\r\n        var chem_comp_bond = model.sourceData.data.chem_comp_bond;\r\n        if (!chem_comp_bond._rowCount)\r\n            return void 0;\r\n        var info = new ComponentBondInfo();\r\n        var comp_id = chem_comp_bond.comp_id, atom_id_1 = chem_comp_bond.atom_id_1, atom_id_2 = chem_comp_bond.atom_id_2, value_order = chem_comp_bond.value_order, pdbx_aromatic_flag = chem_comp_bond.pdbx_aromatic_flag, rowCount = chem_comp_bond._rowCount;\r\n        var entry = info.newEntry(comp_id.value(0));\r\n        for (var i = 0; i < rowCount; i++) {\r\n            var id = comp_id.value(i);\r\n            var nameA = atom_id_1.value(i);\r\n            var nameB = atom_id_2.value(i);\r\n            var order = value_order.value(i);\r\n            var aromatic = pdbx_aromatic_flag.value(i) === 'Y';\r\n            if (entry.id !== id) {\r\n                entry = info.newEntry(id);\r\n            }\r\n            var flags = 1 /* Covalent */;\r\n            var ord = 1;\r\n            if (aromatic)\r\n                flags |= 32 /* Aromatic */;\r\n            switch (order.toLowerCase()) {\r\n                case 'doub':\r\n                case 'delo':\r\n                    ord = 2;\r\n                    break;\r\n                case 'trip':\r\n                    ord = 3;\r\n                    break;\r\n                case 'quad':\r\n                    ord = 4;\r\n                    break;\r\n            }\r\n            entry.add(nameA, nameB, ord, flags);\r\n        }\r\n        return info;\r\n    }\r\n    ComponentBondInfo.create = create;\r\n})(ComponentBondInfo = exports.ComponentBondInfo || (exports.ComponentBondInfo = {}));\r\nexports.ComponentBondInfo = ComponentBondInfo;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif/bonds.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif/ihm.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif/ihm.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mmcif_1 = __webpack_require__(/*! mol-io/reader/cif/schema/mmcif */ \"./build/node_modules/mol-io/reader/cif/schema/mmcif.js\");\r\nvar coarse_1 = __webpack_require__(/*! ../../properties/coarse */ \"./build/node_modules/mol-model/structure/model/properties/coarse.js\");\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar coarse_keys_1 = __webpack_require__(/*! ../../properties/utils/coarse-keys */ \"./build/node_modules/mol-model/structure/model/properties/utils/coarse-keys.js\");\r\nvar mol_util_1 = __webpack_require__(/*! mol-util */ \"./build/node_modules/mol-util/index.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nfunction getIHMCoarse(data, entities) {\r\n    if (data.ihm_model_list._rowCount === 0)\r\n        return { hierarchy: coarse_1.CoarseHierarchy.Empty, conformation: void 0 };\r\n    var ihm_model_list = data.ihm_model_list, ihm_sphere_obj_site = data.ihm_sphere_obj_site, ihm_gaussian_obj_site = data.ihm_gaussian_obj_site;\r\n    var modelIndex = db_1.Column.createIndexer(ihm_model_list.model_id);\r\n    var sphereData = getData(ihm_sphere_obj_site);\r\n    var sphereConformation = getSphereConformation(ihm_sphere_obj_site);\r\n    var sphereKeys = coarse_keys_1.getCoarseKeys(sphereData, modelIndex, entities);\r\n    var gaussianData = getData(ihm_gaussian_obj_site);\r\n    var gaussianConformation = getGaussianConformation(ihm_gaussian_obj_site);\r\n    var gaussianKeys = coarse_keys_1.getCoarseKeys(gaussianData, modelIndex, entities);\r\n    return {\r\n        hierarchy: {\r\n            isDefined: true,\r\n            models: ihm_model_list,\r\n            spheres: __assign({}, sphereData, sphereKeys),\r\n            gaussians: __assign({}, gaussianData, gaussianKeys),\r\n        },\r\n        conformation: {\r\n            id: mol_util_1.UUID.create(),\r\n            spheres: sphereConformation,\r\n            gaussians: gaussianConformation\r\n        }\r\n    };\r\n}\r\nexports.getIHMCoarse = getIHMCoarse;\r\nfunction getSphereConformation(data) {\r\n    return {\r\n        x: data.Cartn_x.toArray({ array: Float32Array }),\r\n        y: data.Cartn_y.toArray({ array: Float32Array }),\r\n        z: data.Cartn_z.toArray({ array: Float32Array }),\r\n        radius: data.object_radius.toArray({ array: Float32Array }),\r\n        rmsf: data.rmsf.toArray({ array: Float32Array })\r\n    };\r\n}\r\nfunction getGaussianConformation(data) {\r\n    var matrix_space = mmcif_1.mmCIF_Schema.ihm_gaussian_obj_site.covariance_matrix.space;\r\n    var covariance_matrix = [];\r\n    var cm = data.covariance_matrix;\r\n    for (var i = 0, _i = cm.rowCount; i < _i; i++) {\r\n        covariance_matrix[i] = linear_algebra_1.Tensor.toMat3(matrix_space, cm.value(i));\r\n    }\r\n    return {\r\n        x: data.mean_Cartn_x.toArray({ array: Float32Array }),\r\n        y: data.mean_Cartn_y.toArray({ array: Float32Array }),\r\n        z: data.mean_Cartn_z.toArray({ array: Float32Array }),\r\n        weight: data.weight.toArray({ array: Float32Array }),\r\n        covariance_matrix: covariance_matrix\r\n    };\r\n}\r\nfunction getChainSegments(asym_id) {\r\n    var offsets = [0];\r\n    for (var i = 1, _i = asym_id.rowCount; i < _i; i++) {\r\n        if (!asym_id.areValuesEqual(i - 1, i))\r\n            offsets[offsets.length] = i;\r\n    }\r\n    return int_1.Segmentation.ofOffsets(offsets, int_1.Interval.ofBounds(0, asym_id.rowCount));\r\n}\r\nfunction getData(data) {\r\n    var model_id = data.model_id, entity_id = data.entity_id, seq_id_begin = data.seq_id_begin, seq_id_end = data.seq_id_end, asym_id = data.asym_id;\r\n    return { count: model_id.rowCount, entity_id: entity_id, model_id: model_id, asym_id: asym_id, seq_id_begin: seq_id_begin, seq_id_end: seq_id_end, chainSegments: getChainSegments(asym_id) };\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif/ihm.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif/sequence.js":
+/*!********************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif/sequence.js ***!
+  \********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar sequence_1 = __webpack_require__(/*! ../../properties/sequence */ \"./build/node_modules/mol-model/structure/model/properties/sequence.js\");\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nfunction getSequence(cif, entities, hierarchy) {\r\n    if (!cif.entity_poly_seq._rowCount)\r\n        return sequence_1.default.fromAtomicHierarchy(hierarchy);\r\n    var _a = cif.entity_poly_seq, entity_id = _a.entity_id, num = _a.num, mon_id = _a.mon_id;\r\n    var byEntityKey = {};\r\n    var count = entity_id.rowCount;\r\n    var i = 0;\r\n    while (i < count) {\r\n        var start = i;\r\n        while (i < count - 1 && entity_id.areValuesEqual(i, i + 1))\r\n            i++;\r\n        i++;\r\n        var id = entity_id.value(start);\r\n        byEntityKey[entities.getEntityIndex(id)] = { entityId: id, compId: db_1.Column.window(mon_id, start, i), num: db_1.Column.window(num, start, i) };\r\n    }\r\n    return { byEntityKey: byEntityKey };\r\n}\r\nexports.getSequence = getSequence;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif/sequence.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/formats/mmcif/util.js":
+/*!****************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/formats/mmcif/util.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction findEntityIdByAsymId(model, asymId) {\r\n    if (model.sourceData.kind !== 'mmCIF')\r\n        return '';\r\n    var struct_asym = model.sourceData.data.struct_asym;\r\n    for (var i = 0, n = struct_asym._rowCount; i < n; ++i) {\r\n        if (struct_asym.id.value(i) === asymId)\r\n            return struct_asym.entity_id.value(i);\r\n    }\r\n    return '';\r\n}\r\nexports.findEntityIdByAsymId = findEntityIdByAsymId;\r\nfunction findAtomIndexByLabelName(model, residueIndex, atomName, altLoc) {\r\n    var _a = model.atomicHierarchy.residueSegments, segmentMap = _a.segmentMap, segments = _a.segments;\r\n    var idx = segmentMap[residueIndex];\r\n    var _b = model.atomicHierarchy.atoms, label_atom_id = _b.label_atom_id, label_alt_id = _b.label_alt_id;\r\n    for (var i = segments[idx], n = segments[idx + 1]; i <= n; ++i) {\r\n        if (label_atom_id.value(i) === atomName && (!altLoc || label_alt_id.value(i) === altLoc))\r\n            return i;\r\n    }\r\n    return -1;\r\n}\r\nexports.findAtomIndexByLabelName = findAtomIndexByLabelName;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/formats/mmcif/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/model.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/model.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n//import from_gro from './formats/gro'\r\nvar mmcif_1 = __webpack_require__(/*! ./formats/mmcif */ \"./build/node_modules/mol-model/structure/model/formats/mmcif.js\");\r\n{ }\r\nvar Model;\r\n(function (Model) {\r\n    function create(format) {\r\n        switch (format.kind) {\r\n            //case 'gro': return from_gro(format);\r\n            case 'mmCIF': return mmcif_1.default(format);\r\n        }\r\n    }\r\n    Model.create = create;\r\n})(Model || (Model = {}));\r\nexports.default = Model;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/model.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/atomic.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/atomic.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./atomic/hierarchy */ \"./build/node_modules/mol-model/structure/model/properties/atomic/hierarchy.js\"));\r\n__export(__webpack_require__(/*! ./atomic/measures */ \"./build/node_modules/mol-model/structure/model/properties/atomic/measures.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/atomic.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/atomic/hierarchy.js":
+/*!*************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/atomic/hierarchy.js ***!
+  \*************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar db_1 = __webpack_require__(/*! mol-data/db */ \"./build/node_modules/mol-data/db.js\");\r\nvar mmcif_1 = __webpack_require__(/*! mol-io/reader/cif/schema/mmcif */ \"./build/node_modules/mol-io/reader/cif/schema/mmcif.js\");\r\nexports.AtomsSchema = {\r\n    type_symbol: db_1.Column.Schema.Aliased(mmcif_1.mmCIF_Schema.atom_site.type_symbol),\r\n    label_atom_id: mmcif_1.mmCIF_Schema.atom_site.label_atom_id,\r\n    auth_atom_id: mmcif_1.mmCIF_Schema.atom_site.auth_atom_id,\r\n    label_alt_id: mmcif_1.mmCIF_Schema.atom_site.label_alt_id,\r\n    pdbx_formal_charge: mmcif_1.mmCIF_Schema.atom_site.pdbx_formal_charge\r\n    // id, occupancy and B_iso_or_equiv are part of conformation\r\n};\r\nexports.ResiduesSchema = {\r\n    group_PDB: mmcif_1.mmCIF_Schema.atom_site.group_PDB,\r\n    label_comp_id: mmcif_1.mmCIF_Schema.atom_site.label_comp_id,\r\n    auth_comp_id: mmcif_1.mmCIF_Schema.atom_site.auth_comp_id,\r\n    label_seq_id: mmcif_1.mmCIF_Schema.atom_site.label_seq_id,\r\n    auth_seq_id: mmcif_1.mmCIF_Schema.atom_site.auth_seq_id,\r\n    pdbx_PDB_ins_code: mmcif_1.mmCIF_Schema.atom_site.pdbx_PDB_ins_code\r\n};\r\nexports.ChainsSchema = {\r\n    label_asym_id: mmcif_1.mmCIF_Schema.atom_site.label_asym_id,\r\n    auth_asym_id: mmcif_1.mmCIF_Schema.atom_site.auth_asym_id,\r\n    label_entity_id: mmcif_1.mmCIF_Schema.atom_site.label_entity_id\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/atomic/hierarchy.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/atomic/measures.js":
+/*!************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/atomic/measures.js ***!
+  \************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AtomicNumbers = { 'H': 1, 'D': 1, 'T': 1, 'HE': 2, 'LI': 3, 'BE': 4, 'B': 5, 'C': 6, 'N': 7, 'O': 8, 'F': 9, 'NE': 10, 'NA': 11, 'MG': 12, 'AL': 13, 'SI': 14, 'P': 15, 'S': 16, 'CL': 17, 'AR': 18, 'K': 19, 'CA': 20, 'SC': 21, 'TI': 22, 'V': 23, 'CR': 24, 'MN': 25, 'FE': 26, 'CO': 27, 'NI': 28, 'CU': 29, 'ZN': 30, 'GA': 31, 'GE': 32, 'AS': 33, 'SE': 34, 'BR': 35, 'KR': 36, 'RB': 37, 'SR': 38, 'Y': 39, 'ZR': 40, 'NB': 41, 'MO': 42, 'TC': 43, 'RU': 44, 'RH': 45, 'PD': 46, 'AG': 47, 'CD': 48, 'IN': 49, 'SN': 50, 'SB': 51, 'TE': 52, 'I': 53, 'XE': 54, 'CS': 55, 'BA': 56, 'LA': 57, 'CE': 58, 'PR': 59, 'ND': 60, 'PM': 61, 'SM': 62, 'EU': 63, 'GD': 64, 'TB': 65, 'DY': 66, 'HO': 67, 'ER': 68, 'TM': 69, 'YB': 70, 'LU': 71, 'HF': 72, 'TA': 73, 'W': 74, 'RE': 75, 'OS': 76, 'IR': 77, 'PT': 78, 'AU': 79, 'HG': 80, 'TL': 81, 'PB': 82, 'BI': 83, 'PO': 84, 'AT': 85, 'RN': 86, 'FR': 87, 'RA': 88, 'AC': 89, 'TH': 90, 'PA': 91, 'U': 92, 'NP': 93, 'PU': 94, 'AM': 95, 'CM': 96, 'BK': 97, 'CF': 98, 'ES': 99, 'FM': 100, 'MD': 101, 'NO': 102, 'LR': 103, 'RF': 104, 'DB': 105, 'SG': 106, 'BH': 107, 'HS': 108, 'MT': 109 };\r\n// http://dx.doi.org/10.1021/jp8111556 (or 2.0)\r\nexports.ElementVdwRadii = {\r\n    1: 1.1, 2: 1.4, 3: 1.81, 4: 1.53, 5: 1.92, 6: 1.7, 7: 1.55, 8: 1.52, 9: 1.47, 10: 1.54, 11: 2.27, 12: 1.73, 13: 1.84, 14: 2.1, 15: 1.8, 16: 1.8, 17: 1.75, 18: 1.88, 19: 2.75, 20: 2.31, 21: 2.3, 22: 2.15, 23: 2.05, 24: 2.05, 25: 2.05, 26: 2.05, 27: 2.0, 28: 2.0, 29: 2.0, 30: 2.1, 31: 1.87, 32: 2.11, 33: 1.85, 34: 1.9, 35: 1.83, 36: 2.02, 37: 3.03, 38: 2.49, 39: 2.4, 40: 2.3, 41: 2.15, 42: 2.1, 43: 2.05, 44: 2.05, 45: 2.0, 46: 2.05, 47: 2.1, 48: 2.2, 49: 2.2, 50: 1.93, 51: 2.17, 52: 2.06, 53: 1.98, 54: 2.16, 55: 3.43, 56: 2.68, 57: 2.5, 58: 2.48, 59: 2.47, 60: 2.45, 61: 2.43, 62: 2.42, 63: 2.4, 64: 2.38, 65: 2.37, 66: 2.35, 67: 2.33, 68: 2.32, 69: 2.3, 70: 2.28, 71: 2.27, 72: 2.25, 73: 2.2, 74: 2.1, 75: 2.05, 76: 2.0, 77: 2.0, 78: 2.05, 79: 2.1, 80: 2.05, 81: 1.96, 82: 2.02, 83: 2.07, 84: 1.97, 85: 2.02, 86: 2.2, 87: 3.48, 88: 2.83, 89: 2.0, 90: 2.4, 91: 2.0, 92: 2.3, 93: 2.0, 94: 2.0, 95: 2.0, 96: 2.0, 97: 2.0, 98: 2.0, 99: 2.0, 100: 2.0, 101: 2.0, 102: 2.0, 103: 2.0, 104: 2.0, 105: 2.0, 106: 2.0, 107: 2.0, 108: 2.0, 109: 2.0\r\n};\r\n// https://doi.org/10.1515/pac-2015-0305 (table 2, 3, and 4)\r\nexports.ElementAtomWeights = {\r\n    1: 1.008, 2: 4.0026, 3: 6.94, 4: 9.0122, 5: 10.81, 6: 10.81, 7: 14.007, 8: 15.999, 9: 18.998, 10: 20.180, 11: 22.990, 12: 24.305, 13: 26.982, 14: 28.085, 15: 30.974, 16: 32.06, 17: 35.45, 18: 39.948, 19: 39.098, 20: 40.078, 21: 44.956, 22: 47.867, 23: 50.942, 24: 51.996, 25: 54.938, 26: 55.845, 27: 58.933, 28: 58.693, 29: 63.546, 30: 65.38, 31: 69.723, 32: 72.630, 33: 74.922, 34: 78.971, 35: 79.904, 36: 83.798, 37: 85.468, 38: 87.62, 39: 88.906, 40: 91.224, 41: 92.906, 42: 95.95, 43: 96.906, 44: 101.07, 45: 102.91, 46: 106.42, 47: 107.87, 48: 112.41, 49: 114.82, 50: 118.71, 51: 121.76, 52: 127.60, 53: 127.60, 54: 131.29, 55: 132.91, 56: 137.33, 57: 138.91, 58: 140.12, 59: 140.91, 60: 144.24, 61: 144.912, 62: 150.36, 63: 151.96, 64: 157.25, 65: 158.93, 66: 162.50, 67: 164.93, 68: 167.26, 69: 168.93, 70: 173.05, 71: 174.97, 72: 178.49, 73: 180.95, 74: 183.84, 75: 186.21, 76: 190.23, 77: 192.22, 78: 195.08, 79: 196.97, 80: 200.59, 81: 204.38, 82: 207.2, 83: 208.98, 84: 1.97, 85: 2.02, 86: 2.2, 87: 3.48, 88: 2.83, 89: 2.0, 90: 232.04, 91: 231.04, 92: 238.03, 93: 237.048, 94: 244.064, 95: 243.061, 96: 247.070, 97: 247.070, 98: 251.079, 99: 252.083, 100: 257.095, 101: 258.098, 102: 259.101, 103: 262.110, 104: 267.122, 105: 270.131, 106: 271.134, 107: 270.133, 108: 270.134, 109: 278.156\r\n};\r\nexports.DefaultVdwRadius = 1.7; // C\r\nexports.DefaultAtomWeight = 10.81; // C\r\nexports.DefaultAtomNumber = 0;\r\nfunction VdwRadius(element) {\r\n    var i = exports.AtomicNumbers[element];\r\n    return i === void 0 ? exports.DefaultVdwRadius : exports.ElementVdwRadii[i];\r\n}\r\nexports.VdwRadius = VdwRadius;\r\nfunction AtomWeight(element) {\r\n    var i = exports.AtomicNumbers[element];\r\n    return i === void 0 ? exports.DefaultAtomWeight : exports.ElementAtomWeights[i];\r\n}\r\nexports.AtomWeight = AtomWeight;\r\nfunction AtomNumber(element) {\r\n    var i = exports.AtomicNumbers[element];\r\n    return i === void 0 ? exports.DefaultAtomNumber : i;\r\n}\r\nexports.AtomNumber = AtomNumber;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/atomic/measures.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/coarse.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/coarse.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./coarse/hierarchy */ \"./build/node_modules/mol-model/structure/model/properties/coarse/hierarchy.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/coarse.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/coarse/hierarchy.js":
+/*!*************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/coarse/hierarchy.js ***!
+  \*************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar CoarseHierarchy;\r\n(function (CoarseHierarchy) {\r\n    CoarseHierarchy.Empty = { isDefined: false };\r\n})(CoarseHierarchy = exports.CoarseHierarchy || (exports.CoarseHierarchy = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/coarse/hierarchy.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/sequence.js":
+/*!*****************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/sequence.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Sequence;\r\n(function (Sequence) {\r\n    function fromAtomicHierarchy(hierarchy) {\r\n        // const { label_comp_id } = hierarchy.residues;\r\n        throw 'not implemented';\r\n    }\r\n    Sequence.fromAtomicHierarchy = fromAtomicHierarchy;\r\n})(Sequence || (Sequence = {}));\r\nexports.default = Sequence;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/sequence.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/symmetry.js":
+/*!*****************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/symmetry.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar Assembly = /** @class */ (function () {\r\n    function Assembly(id, details, operatorsProvider) {\r\n        this.operatorsProvider = operatorsProvider;\r\n        this.id = id;\r\n        this.details = details;\r\n    }\r\n    Object.defineProperty(Assembly.prototype, \"operatorGroups\", {\r\n        get: function () {\r\n            if (this._operators)\r\n                return this._operators;\r\n            this._operators = this.operatorsProvider();\r\n            return this._operators;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return Assembly;\r\n}());\r\nexports.Assembly = Assembly;\r\n(function (Assembly) {\r\n    function create(id, details, operatorsProvider) {\r\n        return new Assembly(id, details, operatorsProvider);\r\n    }\r\n    Assembly.create = create;\r\n})(Assembly = exports.Assembly || (exports.Assembly = {}));\r\nexports.Assembly = Assembly;\r\nvar ModelSymmetry;\r\n(function (ModelSymmetry) {\r\n    ModelSymmetry.Default = { assemblies: [], spacegroup: geometry_1.Spacegroup.ZeroP1, isNonStandardCrytalFrame: false };\r\n    function findAssembly(model, id) {\r\n        var _id = id.toLocaleLowerCase();\r\n        return util_1.arrayFind(model.symmetry.assemblies, function (a) { return a.id.toLowerCase() === _id; });\r\n    }\r\n    ModelSymmetry.findAssembly = findAssembly;\r\n})(ModelSymmetry || (ModelSymmetry = {}));\r\nexports.ModelSymmetry = ModelSymmetry;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/symmetry.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/utils/atomic-keys.js":
+/*!**************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/utils/atomic-keys.js ***!
+  \**************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nfunction getResidueId(comp_id, seq_id, ins_code) {\r\n    return comp_id + \" \" + seq_id + \" \" + ins_code;\r\n}\r\nfunction getElementKey(map, key, counter) {\r\n    if (map.has(key))\r\n        return map.get(key);\r\n    var ret = counter.index++;\r\n    map.set(key, ret);\r\n    return ret;\r\n}\r\nfunction getElementSubstructureKeyMap(map, key) {\r\n    if (map.has(key))\r\n        return map.get(key);\r\n    var ret = new Map();\r\n    map.set(key, ret);\r\n    return ret;\r\n}\r\nfunction createLookUp(entities, chain, residue) {\r\n    var getEntKey = entities.getEntityIndex;\r\n    var findChainKey = function (e, c) {\r\n        var eKey = getEntKey(e);\r\n        if (eKey < 0)\r\n            return -1;\r\n        var cm = chain.get(eKey);\r\n        if (!cm.has(c))\r\n            return -1;\r\n        return cm.get(c);\r\n    };\r\n    var findResidueKey = function (e, c, name, seq, ins) {\r\n        var eKey = getEntKey(e);\r\n        if (eKey < 0)\r\n            return -1;\r\n        var cm = chain.get(eKey);\r\n        if (!cm.has(c))\r\n            return -1;\r\n        var rm = residue.get(cm.get(c));\r\n        var id = getResidueId(name, seq, ins);\r\n        if (!rm.has(id))\r\n            return -1;\r\n        return rm.get(id);\r\n    };\r\n    return { findChainKey: findChainKey, findResidueKey: findResidueKey };\r\n}\r\nfunction checkMonotonous(xs) {\r\n    for (var i = 1, _i = xs.length; i < _i; i++) {\r\n        if (xs[i] < xs[i - 1]) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nfunction missingEntity(k) {\r\n    throw new Error(\"Missing entity entry for entity id '\" + k + \"'.\");\r\n}\r\nfunction getAtomicKeys(data, entities, segments) {\r\n    var chains = data.chains, residues = data.residues;\r\n    var chainMaps = new Map(), chainCounter = { index: 0 };\r\n    var residueMaps = new Map(), residueCounter = { index: 0 };\r\n    var residueKey = new Int32Array(residues._rowCount);\r\n    var chainKey = new Int32Array(chains._rowCount);\r\n    var entityKey = new Int32Array(chains._rowCount);\r\n    var _a = data.residues, label_comp_id = _a.label_comp_id, auth_seq_id = _a.auth_seq_id, pdbx_PDB_ins_code = _a.pdbx_PDB_ins_code;\r\n    var _b = data.chains, label_entity_id = _b.label_entity_id, label_asym_id = _b.label_asym_id;\r\n    var atomSet = int_1.Interval.ofBounds(0, data.atoms._rowCount);\r\n    var isMonotonous = true;\r\n    var chainsIt = int_1.Segmentation.transientSegments(segments.chainSegments, atomSet);\r\n    while (chainsIt.hasNext) {\r\n        var chainSegment = chainsIt.move();\r\n        var cI = chainSegment.index;\r\n        var eKey = entities.getEntityIndex(label_entity_id.value(cI));\r\n        if (eKey < 0)\r\n            missingEntity(label_entity_id.value(cI));\r\n        var chainMap = getElementSubstructureKeyMap(chainMaps, eKey);\r\n        var cKey = getElementKey(chainMap, label_asym_id.value(cI), chainCounter);\r\n        chainKey[cI] = cKey;\r\n        entityKey[cI] = eKey;\r\n        var residueMap = getElementSubstructureKeyMap(residueMaps, cKey);\r\n        var residuesIt = int_1.Segmentation.transientSegments(segments.residueSegments, atomSet, chainSegment);\r\n        var last_seq_id = Number.NEGATIVE_INFINITY;\r\n        while (residuesIt.hasNext) {\r\n            var residueSegment = residuesIt.move();\r\n            var rI = residueSegment.index;\r\n            var seq_id = auth_seq_id.value(rI);\r\n            if (seq_id < last_seq_id)\r\n                isMonotonous = false;\r\n            last_seq_id = seq_id;\r\n            var residueId = getResidueId(label_comp_id.value(rI), auth_seq_id.value(rI), pdbx_PDB_ins_code.value(rI));\r\n            residueKey[rI] = getElementKey(residueMap, residueId, residueCounter);\r\n        }\r\n    }\r\n    var _c = createLookUp(entities, chainMaps, residueMaps), findChainKey = _c.findChainKey, findResidueKey = _c.findResidueKey;\r\n    return {\r\n        isMonotonous: isMonotonous && checkMonotonous(entityKey) && checkMonotonous(chainKey) && checkMonotonous(residueKey),\r\n        residueKey: residueKey,\r\n        chainKey: chainKey,\r\n        entityKey: entityKey,\r\n        findChainKey: findChainKey,\r\n        findResidueKey: findResidueKey\r\n    };\r\n}\r\nexports.getAtomicKeys = getAtomicKeys;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/utils/atomic-keys.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/properties/utils/coarse-keys.js":
+/*!**************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/properties/utils/coarse-keys.js ***!
+  \**************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction getElementKey(map, key, counter) {\r\n    if (map.has(key))\r\n        return map.get(key);\r\n    var ret = counter.index++;\r\n    map.set(key, ret);\r\n    return ret;\r\n}\r\nfunction getElementSubstructureKeyMap(map, key) {\r\n    if (map.has(key))\r\n        return map.get(key);\r\n    var ret = new Map();\r\n    map.set(key, ret);\r\n    return ret;\r\n}\r\nfunction createLookUp(entities, chain) {\r\n    var getEntKey = entities.getEntityIndex;\r\n    var findChainKey = function (e, c) {\r\n        var eKey = getEntKey(e);\r\n        if (eKey < 0)\r\n            return -1;\r\n        var cm = chain.get(eKey);\r\n        if (!cm.has(c))\r\n            return -1;\r\n        return cm.get(c);\r\n    };\r\n    return { findChainKey: findChainKey };\r\n}\r\nfunction checkMonotonous(xs) {\r\n    for (var i = 1, _i = xs.length; i < _i; i++) {\r\n        if (xs[i] < xs[i - 1]) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nfunction missingEntity(k) {\r\n    throw new Error(\"Missing entity entry for entity id '\" + k + \"'.\");\r\n}\r\nfunction missingModel(k) {\r\n    throw new Error(\"Missing entity entry for model id '\" + k + \"'.\");\r\n}\r\nfunction getCoarseKeys(data, modelIndex, entities) {\r\n    var model_id = data.model_id, entity_id = data.entity_id, asym_id = data.asym_id, count = data.count, chainSegments = data.chainSegments;\r\n    var chainMaps = new Map(), chainCounter = { index: 0 };\r\n    var chainKey = new Int32Array(count);\r\n    var entityKey = new Int32Array(count);\r\n    var modelKey = new Int32Array(count);\r\n    for (var i = 0; i < count; i++) {\r\n        entityKey[i] = entities.getEntityIndex(entity_id.value(i));\r\n        if (entityKey[i] < 0)\r\n            missingEntity(entity_id.value(i));\r\n        modelKey[i] = modelIndex(model_id.value(i));\r\n        if (modelKey[i] < 0)\r\n            missingModel('' + model_id.value(i));\r\n    }\r\n    for (var cI = 0; cI < chainSegments.count; cI++) {\r\n        var start = chainSegments.segments[cI], end = chainSegments.segments[cI + 1];\r\n        var map = getElementSubstructureKeyMap(chainMaps, entityKey[start]);\r\n        var key = getElementKey(map, asym_id.value(start), chainCounter);\r\n        for (var i = start; i < end; i++)\r\n            chainKey[i] = key;\r\n    }\r\n    var findChainKey = createLookUp(entities, chainMaps).findChainKey;\r\n    return {\r\n        isMonotonous: checkMonotonous(entityKey) && checkMonotonous(chainKey),\r\n        chainKey: chainKey,\r\n        entityKey: entityKey,\r\n        modelKey: modelKey,\r\n        findChainKey: findChainKey\r\n    };\r\n}\r\nexports.getCoarseKeys = getCoarseKeys;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/properties/utils/coarse-keys.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/model/types.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/model/types.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar bit_flags_1 = __webpack_require__(/*! mol-util/bit-flags */ \"./build/node_modules/mol-util/bit-flags.js\");\r\nvar _esCache = (function () {\r\n    var cache = Object.create(null);\r\n    var letters = [];\r\n    for (var i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++)\r\n        letters[letters.length] = String.fromCharCode(i);\r\n    for (var i = 'a'.charCodeAt(0); i <= 'z'.charCodeAt(0); i++)\r\n        letters[letters.length] = String.fromCharCode(i);\r\n    for (var i = '0'.charCodeAt(0); i <= '9'.charCodeAt(0); i++)\r\n        letters[letters.length] = String.fromCharCode(i);\r\n    for (var _i = 0, letters_1 = letters; _i < letters_1.length; _i++) {\r\n        var k = letters_1[_i];\r\n        cache[k] = k.toUpperCase();\r\n        for (var _a = 0, letters_2 = letters; _a < letters_2.length; _a++) {\r\n            var l = letters_2[_a];\r\n            cache[k + l] = (k + l).toUpperCase();\r\n            for (var _b = 0, letters_3 = letters; _b < letters_3.length; _b++) {\r\n                var m = letters_3[_b];\r\n                cache[k + l + m] = (k + l + m).toUpperCase();\r\n            }\r\n        }\r\n    }\r\n    return cache;\r\n}());\r\nfunction ElementSymbol(s) {\r\n    return _esCache[s] || s.toUpperCase();\r\n}\r\nexports.ElementSymbol = ElementSymbol;\r\nvar _chemCompNonPolymer = ['NON-POLYMER'];\r\nvar _chemCompOther = ['OTHER'];\r\nvar _chemCompSaccharide = [\r\n    'D-SACCHARIDE', 'D-SACCHARIDE 1,4 AND 1,4 LINKING', 'D-SACCHARIDE 1,4 AND 1,6 LINKING',\r\n    'L-SACCHARIDE', 'L-SACCHARIDE 1,4 AND 1,4 LINKING', 'L-SACCHARIDE 1,4 AND 1,6 LINKING',\r\n    'SACCHARIDE'\r\n];\r\nexports.ChemComp = {\r\n    Protein: [\r\n        'D-BETA-PEPTIDE, C-GAMMA LINKING', 'D-GAMMA-PEPTIDE, C-DELTA LINKING',\r\n        'D-PEPTIDE COOH CARBOXY TERMINUS', 'D-PEPTIDE NH3 AMINO TERMINUS', 'D-PEPTIDE LINKING',\r\n        'L-BETA-PEPTIDE, C-GAMMA LINKING', 'L-GAMMA-PEPTIDE, C-DELTA LINKING',\r\n        'L-PEPTIDE COOH CARBOXY TERMINUS', 'L-PEPTIDE NH3 AMINO TERMINUS', 'L-PEPTIDE LINKING',\r\n        'PEPTIDE LINKING', 'PEPTIDE-LIKE'\r\n    ],\r\n    RNA: [\r\n        'RNA OH 3 PRIME TERMINUS', 'RNA OH 5 PRIME TERMINUS', 'RNA LINKING'\r\n    ],\r\n    DNA: [\r\n        'DNA OH 3 PRIME TERMINUS', 'DNA OH 5 PRIME TERMINUS', 'DNA LINKING',\r\n        'L-DNA LINKING', 'L-RNA LINKING'\r\n    ],\r\n    Saccharide: _chemCompSaccharide,\r\n    Other: _chemCompOther,\r\n    NonPolymer: _chemCompNonPolymer,\r\n    Hetero: _chemCompNonPolymer.concat(_chemCompOther, _chemCompSaccharide)\r\n};\r\nvar SecondaryStructureType;\r\n(function (SecondaryStructureType) {\r\n    SecondaryStructureType.Helix = ['h', 'g', 'i'];\r\n    SecondaryStructureType.Sheet = ['e', 'b'];\r\n    SecondaryStructureType.Turn = ['s', 't', 'l', ''];\r\n    SecondaryStructureType.is = bit_flags_1.default.has;\r\n    SecondaryStructureType.SecondaryStructureMmcif = {\r\n        HELX_LH_27_P: 2 /* Helix */ | 16 /* LeftHanded */ | 512 /* Helix27 */,\r\n        HELX_LH_3T_P: 2 /* Helix */ | 16 /* LeftHanded */ | 1024 /* Helix3Ten */,\r\n        HELX_LH_AL_P: 2 /* Helix */ | 16 /* LeftHanded */ | 2048 /* HelixAlpha */,\r\n        HELX_LH_A_N: 1 /* DoubleHelix */ | 16 /* LeftHanded */ | 262144 /* DoubleHelixA */,\r\n        HELX_LH_B_N: 1 /* DoubleHelix */ | 16 /* LeftHanded */ | 524288 /* DoubleHelixB */,\r\n        HELX_LH_GA_P: 2 /* Helix */ | 16 /* LeftHanded */ | 4096 /* HelixGamma */,\r\n        HELX_LH_N: 1 /* DoubleHelix */ | 16 /* LeftHanded */,\r\n        HELX_LH_OM_P: 2 /* Helix */ | 16 /* LeftHanded */ | 8192 /* HelixOmega */,\r\n        HELX_LH_OT_N: 1 /* DoubleHelix */ | 16 /* LeftHanded */ | 65536 /* DoubleHelixOther */,\r\n        HELX_LH_OT_P: 2 /* Helix */ | 16 /* LeftHanded */ | 256 /* HelixOther */,\r\n        HELX_LH_P: 2 /* Helix */ | 16 /* LeftHanded */,\r\n        HELX_LH_PI_P: 2 /* Helix */ | 16 /* LeftHanded */ | 16384 /* HelixPi */,\r\n        HELX_LH_PP_P: 2 /* Helix */ | 16 /* LeftHanded */ | 32768 /* HelixPolyproline */,\r\n        HELX_LH_Z_N: 1 /* DoubleHelix */ | 16 /* LeftHanded */ | 131072 /* DoubleHelixZ */,\r\n        HELX_N: 1 /* DoubleHelix */,\r\n        HELX_OT_N: 1 /* DoubleHelix */,\r\n        HELX_OT_P: 2 /* Helix */,\r\n        HELX_P: 2 /* Helix */,\r\n        HELX_RH_27_P: 2 /* Helix */ | 32 /* RightHanded */ | 512 /* Helix27 */,\r\n        HELX_RH_3T_P: 2 /* Helix */ | 32 /* RightHanded */ | 1024 /* Helix3Ten */,\r\n        HELX_RH_AL_P: 2 /* Helix */ | 32 /* RightHanded */ | 2048 /* HelixAlpha */,\r\n        HELX_RH_A_N: 1 /* DoubleHelix */ | 32 /* RightHanded */ | 262144 /* DoubleHelixA */,\r\n        HELX_RH_B_N: 1 /* DoubleHelix */ | 32 /* RightHanded */ | 524288 /* DoubleHelixB */,\r\n        HELX_RH_GA_P: 2 /* Helix */ | 32 /* RightHanded */ | 4096 /* HelixGamma */,\r\n        HELX_RH_N: 1 /* DoubleHelix */ | 32 /* RightHanded */,\r\n        HELX_RH_OM_P: 2 /* Helix */ | 32 /* RightHanded */ | 8192 /* HelixOmega */,\r\n        HELX_RH_OT_N: 1 /* DoubleHelix */ | 32 /* RightHanded */ | 65536 /* DoubleHelixOther */,\r\n        HELX_RH_OT_P: 2 /* Helix */ | 32 /* RightHanded */ | 256 /* HelixOther */,\r\n        HELX_RH_P: 2 /* Helix */ | 32 /* RightHanded */,\r\n        HELX_RH_PI_P: 2 /* Helix */ | 32 /* RightHanded */ | 16384 /* HelixPi */,\r\n        HELX_RH_PP_P: 2 /* Helix */ | 32 /* RightHanded */ | 32768 /* HelixPolyproline */,\r\n        HELX_RH_Z_N: 1 /* DoubleHelix */ | 32 /* RightHanded */ | 131072 /* DoubleHelixZ */,\r\n        STRN: 4 /* Beta */ | 2097152 /* BetaStrand */,\r\n        TURN_OT_P: 8 /* Turn */ | 16777216 /* TurnOther */,\r\n        TURN_P: 8 /* Turn */,\r\n        TURN_TY1P_P: 8 /* Turn */ | 128 /* InverseTurn */ | 33554432 /* Turn1 */,\r\n        TURN_TY1_P: 8 /* Turn */ | 64 /* ClassicTurn */ | 33554432 /* Turn1 */,\r\n        TURN_TY2P_P: 8 /* Turn */ | 128 /* InverseTurn */ | 67108864 /* Turn2 */,\r\n        TURN_TY2_P: 8 /* Turn */ | 64 /* ClassicTurn */ | 67108864 /* Turn2 */,\r\n        TURN_TY3P_P: 8 /* Turn */ | 128 /* InverseTurn */ | 134217728 /* Turn3 */,\r\n        TURN_TY3_P: 8 /* Turn */ | 64 /* ClassicTurn */ | 134217728 /* Turn3 */,\r\n    };\r\n    SecondaryStructureType.SecondaryStructurePdb = {\r\n        1: 2 /* Helix */ | 32 /* RightHanded */ | 2048 /* HelixAlpha */,\r\n        2: 2 /* Helix */ | 32 /* RightHanded */ | 8192 /* HelixOmega */,\r\n        3: 2 /* Helix */ | 32 /* RightHanded */ | 16384 /* HelixPi */,\r\n        4: 2 /* Helix */ | 32 /* RightHanded */ | 4096 /* HelixGamma */,\r\n        5: 2 /* Helix */ | 32 /* RightHanded */ | 1024 /* Helix3Ten */,\r\n        6: 2 /* Helix */ | 16 /* LeftHanded */ | 2048 /* HelixAlpha */,\r\n        7: 2 /* Helix */ | 16 /* LeftHanded */ | 8192 /* HelixOmega */,\r\n        8: 2 /* Helix */ | 16 /* LeftHanded */ | 4096 /* HelixGamma */,\r\n        9: 2 /* Helix */ | 512 /* Helix27 */,\r\n        10: 2 /* Helix */ | 32768 /* HelixPolyproline */,\r\n    };\r\n    SecondaryStructureType.SecondaryStructureStride = {\r\n        H: 2 /* Helix */ | 2048 /* HelixAlpha */,\r\n        G: 2 /* Helix */ | 1024 /* Helix3Ten */,\r\n        I: 2 /* Helix */ | 16384 /* HelixPi */,\r\n        E: 4 /* Beta */ | 4194304 /* BetaSheet */,\r\n        B: 4 /* Beta */ | 2097152 /* BetaStrand */,\r\n        b: 4 /* Beta */ | 2097152 /* BetaStrand */,\r\n        T: 8 /* Turn */,\r\n        C: 268435456 /* NA */,\r\n    };\r\n    SecondaryStructureType.SecondaryStructureDssp = {\r\n        H: 2 /* Helix */ | 2048 /* HelixAlpha */,\r\n        B: 4 /* Beta */ | 2097152 /* BetaStrand */,\r\n        E: 4 /* Beta */ | 4194304 /* BetaSheet */,\r\n        G: 2 /* Helix */ | 1024 /* Helix3Ten */,\r\n        I: 2 /* Helix */ | 16384 /* HelixPi */,\r\n        T: 8 /* Turn */,\r\n        S: 8 /* Turn */,\r\n    };\r\n})(SecondaryStructureType = exports.SecondaryStructureType || (exports.SecondaryStructureType = {}));\r\nexports.VdwRadii = {\r\n    'H': 1.1,\r\n    'HE': 1.4,\r\n    'LI': 1.81,\r\n    'BE': 1.53,\r\n    'B': 1.92,\r\n    'C': 1.7,\r\n    'N': 1.55,\r\n    'O': 1.52,\r\n    'F': 1.47,\r\n    'NE': 1.54,\r\n    'NA': 2.27,\r\n    'MG': 1.73,\r\n    'AL': 1.84,\r\n    'SI': 2.1,\r\n    'P': 1.8,\r\n    'S': 1.8,\r\n    'CL': 1.75,\r\n    'AR': 1.88,\r\n    'K': 2.75,\r\n    'CA': 2.31,\r\n    'SC': 2.3,\r\n    'TI': 2.15,\r\n    'V': 2.05,\r\n    'CR': 2.05,\r\n    'MN': 2.05,\r\n    'FE': 2.05,\r\n    'CO': 2.0,\r\n    'NI': 2.0,\r\n    'CU': 2.0,\r\n    'ZN': 2.1,\r\n    'GA': 1.87,\r\n    'GE': 2.11,\r\n    'AS': 1.85,\r\n    'SE': 1.9,\r\n    'BR': 1.83,\r\n    'KR': 2.02,\r\n    'RB': 3.03,\r\n    'SR': 2.49,\r\n    'Y': 2.4,\r\n    'ZR': 2.3,\r\n    'NB': 2.15,\r\n    'MO': 2.1,\r\n    'TC': 2.05,\r\n    'RU': 2.05,\r\n    'RH': 2.0,\r\n    'PD': 2.05,\r\n    'AG': 2.1,\r\n    'CD': 2.2,\r\n    'IN': 2.2,\r\n    'SN': 1.93,\r\n    'SB': 2.17,\r\n    'TE': 2.06,\r\n    'I': 1.98,\r\n    'XE': 2.16,\r\n    'CS': 3.43,\r\n    'BA': 2.68,\r\n    'LA': 2.5,\r\n    'CE': 2.48,\r\n    'PR': 2.47,\r\n    'ND': 2.45,\r\n    'PM': 2.43,\r\n    'SM': 2.42,\r\n    'EU': 2.4,\r\n    'GD': 2.38,\r\n    'TB': 2.37,\r\n    'DY': 2.35,\r\n    'HO': 2.33,\r\n    'ER': 2.32,\r\n    'TM': 2.3,\r\n    'YB': 2.28,\r\n    'LU': 2.27,\r\n    'HF': 2.25,\r\n    'TA': 2.2,\r\n    'W': 2.1,\r\n    'RE': 2.05,\r\n    'OS': 2.0,\r\n    'IR': 2.0,\r\n    'PT': 2.05,\r\n    'AU': 2.1,\r\n    'HG': 2.05,\r\n    'TL': 1.96,\r\n    'PB': 2.02,\r\n    'BI': 2.07,\r\n    'PO': 1.97,\r\n    'AT': 2.02,\r\n    'RN': 2.2,\r\n    'FR': 3.48,\r\n    'RA': 2.83,\r\n    'AC': 2.0,\r\n    'TH': 2.4,\r\n    'PA': 2.0,\r\n    'U': 2.3,\r\n    'NP': 2.0,\r\n    'PU': 2.0,\r\n    'AM': 2.0,\r\n    'CM': 2.0,\r\n    'BK': 2.0,\r\n    'CF': 2.0,\r\n    'ES': 2.0,\r\n    'FM': 2.0,\r\n    'MD': 2.0,\r\n    'NO': 2.0,\r\n    'LR': 2.0,\r\n    'RF': 2.0,\r\n    'DB': 2.0,\r\n    'SG': 2.0,\r\n    'BH': 2.0,\r\n    'HS': 2.0,\r\n    'MT': 2.0,\r\n    'DS': 2.0,\r\n    'RG': 2.0,\r\n    'CN': 2.0,\r\n    'UUT': 2.0,\r\n    'FL': 2.0,\r\n    'UUP': 2.0,\r\n    'LV': 2.0,\r\n    'UUH': 2.0\r\n};\r\nexports.DefaultVdwRadius = 2.0;\r\nvar BondType;\r\n(function (BondType) {\r\n    BondType.is = bit_flags_1.default.has;\r\n})(BondType = exports.BondType || (exports.BondType = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/model/types.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query.js":
+/*!*********************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar selection_1 = __webpack_require__(/*! ./query/selection */ \"./build/node_modules/mol-model/structure/query/selection.js\");\r\nexports.Selection = selection_1.default;\r\nvar query_1 = __webpack_require__(/*! ./query/query */ \"./build/node_modules/mol-model/structure/query/query.js\");\r\nexports.Query = query_1.default;\r\nvar generators = __webpack_require__(/*! ./query/generators */ \"./build/node_modules/mol-model/structure/query/generators.js\");\r\nvar properties_1 = __webpack_require__(/*! ./query/properties */ \"./build/node_modules/mol-model/structure/query/properties.js\");\r\nvar predicates_1 = __webpack_require__(/*! ./query/predicates */ \"./build/node_modules/mol-model/structure/query/predicates.js\");\r\nexports.Queries = {\r\n    generators: generators,\r\n    props: properties_1.default,\r\n    pred: predicates_1.default\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/generators.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/generators.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nvar _this = this;\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar selection_1 = __webpack_require__(/*! ./selection */ \"./build/node_modules/mol-model/structure/query/selection.js\");\r\nvar properties_1 = __webpack_require__(/*! ./properties */ \"./build/node_modules/mol-model/structure/query/properties.js\");\r\nvar structure_1 = __webpack_require__(/*! ../structure */ \"./build/node_modules/mol-model/structure/structure.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nexports.all = function (s, ctx) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\r\n    return [2 /*return*/, selection_1.default.Singletons(s, s)];\r\n}); }); };\r\nfunction residues(params) { return atoms(__assign({}, params, { groupBy: properties_1.default.residue.key })); }\r\nexports.residues = residues;\r\nfunction chains(params) { return atoms(__assign({}, params, { groupBy: properties_1.default.chain.key })); }\r\nexports.chains = chains;\r\nfunction atoms(params) {\r\n    if (!params || (!params.atomTest && !params.residueTest && !params.chainTest && !params.entityTest && !params.groupBy))\r\n        return exports.all;\r\n    if (!!params.atomTest && !params.residueTest && !params.chainTest && !params.entityTest && !params.groupBy)\r\n        return atomGroupsLinear(params.atomTest);\r\n    var normalized = {\r\n        entityTest: params.entityTest || properties_1.default.constant.true,\r\n        chainTest: params.chainTest || properties_1.default.constant.true,\r\n        residueTest: params.residueTest || properties_1.default.constant.true,\r\n        atomTest: params.atomTest || properties_1.default.constant.true,\r\n        groupBy: params.groupBy || properties_1.default.constant.zero,\r\n    };\r\n    if (!params.groupBy)\r\n        return atomGroupsSegmented(normalized);\r\n    return atomGroupsGrouped(normalized);\r\n}\r\nexports.atoms = atoms;\r\nfunction atomGroupsLinear(atomTest) {\r\n    var _this = this;\r\n    return function (structure, ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var units, l, builder, _a, units_1, unit, elements, j, _j;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    units = structure.units;\r\n                    l = structure_1.Element.Location();\r\n                    builder = structure.subsetBuilder(true);\r\n                    _a = 0, units_1 = units;\r\n                    _b.label = 1;\r\n                case 1:\r\n                    if (!(_a < units_1.length)) return [3 /*break*/, 4];\r\n                    unit = units_1[_a];\r\n                    l.unit = unit;\r\n                    elements = unit.elements;\r\n                    builder.beginUnit(unit.id);\r\n                    for (j = 0, _j = elements.length; j < _j; j++) {\r\n                        l.element = elements[j];\r\n                        if (atomTest(l))\r\n                            builder.addElement(l.element);\r\n                    }\r\n                    builder.commitUnit();\r\n                    if (!ctx.shouldUpdate) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, ctx.update({ message: 'Atom Groups', current: 0, max: units.length })];\r\n                case 2:\r\n                    _b.sent();\r\n                    _b.label = 3;\r\n                case 3:\r\n                    _a++;\r\n                    return [3 /*break*/, 1];\r\n                case 4: return [2 /*return*/, selection_1.default.Singletons(structure, builder.getStructure())];\r\n            }\r\n        });\r\n    }); };\r\n}\r\nfunction atomGroupsSegmented(_a) {\r\n    var _this = this;\r\n    var entityTest = _a.entityTest, chainTest = _a.chainTest, residueTest = _a.residueTest, atomTest = _a.atomTest;\r\n    return function (structure, ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var units, l, builder, _a, units_2, unit, elements, chainsIt, residuesIt, chainSegment, residueSegment, j, _j;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    units = structure.units;\r\n                    l = structure_1.Element.Location();\r\n                    builder = structure.subsetBuilder(true);\r\n                    _a = 0, units_2 = units;\r\n                    _b.label = 1;\r\n                case 1:\r\n                    if (!(_a < units_2.length)) return [3 /*break*/, 4];\r\n                    unit = units_2[_a];\r\n                    if (unit.kind !== 0 /* Atomic */)\r\n                        return [3 /*break*/, 3];\r\n                    l.unit = unit;\r\n                    elements = unit.elements;\r\n                    builder.beginUnit(unit.id);\r\n                    chainsIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.chainSegments, elements);\r\n                    residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueSegments, elements);\r\n                    while (chainsIt.hasNext) {\r\n                        chainSegment = chainsIt.move();\r\n                        l.element = int_1.OrderedSet.getAt(elements, chainSegment.start);\r\n                        // test entity and chain\r\n                        if (!entityTest(l) || !chainTest(l))\r\n                            continue;\r\n                        residuesIt.setSegment(chainSegment);\r\n                        while (residuesIt.hasNext) {\r\n                            residueSegment = residuesIt.move();\r\n                            l.element = int_1.OrderedSet.getAt(elements, residueSegment.start);\r\n                            // test residue\r\n                            if (!residueTest(l))\r\n                                continue;\r\n                            for (j = residueSegment.start, _j = residueSegment.end; j < _j; j++) {\r\n                                l.element = int_1.OrderedSet.getAt(elements, j);\r\n                                if (atomTest(l)) {\r\n                                    builder.addElement(l.element);\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    builder.commitUnit();\r\n                    if (!ctx.shouldUpdate) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, ctx.update({ message: 'Atom Groups', current: 0, max: units.length })];\r\n                case 2:\r\n                    _b.sent();\r\n                    _b.label = 3;\r\n                case 3:\r\n                    _a++;\r\n                    return [3 /*break*/, 1];\r\n                case 4: return [2 /*return*/, selection_1.default.Singletons(structure, builder.getStructure())];\r\n            }\r\n        });\r\n    }); };\r\n}\r\nvar LinearGroupingBuilder = /** @class */ (function () {\r\n    function LinearGroupingBuilder(source) {\r\n        this.source = source;\r\n        this.builders = [];\r\n        this.builderMap = new Map();\r\n    }\r\n    LinearGroupingBuilder.prototype.add = function (key, unit, element) {\r\n        var b = this.builderMap.get(key);\r\n        if (!b) {\r\n            b = this.source.subsetBuilder(true);\r\n            this.builders[this.builders.length] = b;\r\n            this.builderMap.set(key, b);\r\n        }\r\n        b.addToUnit(unit, element);\r\n    };\r\n    LinearGroupingBuilder.prototype.allSingletons = function () {\r\n        for (var i = 0, _i = this.builders.length; i < _i; i++) {\r\n            if (this.builders[i].elementCount > 1)\r\n                return false;\r\n        }\r\n        return true;\r\n    };\r\n    LinearGroupingBuilder.prototype.singletonSelection = function () {\r\n        var builder = this.source.subsetBuilder(true);\r\n        var loc = structure_1.Element.Location();\r\n        for (var i = 0, _i = this.builders.length; i < _i; i++) {\r\n            this.builders[i].setSingletonLocation(loc);\r\n            builder.addToUnit(loc.unit.id, loc.element);\r\n        }\r\n        return selection_1.default.Singletons(this.source, builder.getStructure());\r\n    };\r\n    LinearGroupingBuilder.prototype.fullSelection = function () {\r\n        var structures = new Array(this.builders.length);\r\n        for (var i = 0, _i = this.builders.length; i < _i; i++) {\r\n            structures[i] = this.builders[i].getStructure();\r\n        }\r\n        return selection_1.default.Sequence(this.source, structures);\r\n    };\r\n    LinearGroupingBuilder.prototype.getSelection = function () {\r\n        var len = this.builders.length;\r\n        if (len === 0)\r\n            return selection_1.default.Empty(this.source);\r\n        if (this.allSingletons())\r\n            return this.singletonSelection();\r\n        return this.fullSelection();\r\n    };\r\n    return LinearGroupingBuilder;\r\n}());\r\nfunction atomGroupsGrouped(_a) {\r\n    var _this = this;\r\n    var entityTest = _a.entityTest, chainTest = _a.chainTest, residueTest = _a.residueTest, atomTest = _a.atomTest, groupBy = _a.groupBy;\r\n    return function (structure, ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var units, l, builder, _a, units_3, unit, elements, chainsIt, residuesIt, chainSegment, residueSegment, j, _j;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    units = structure.units;\r\n                    l = structure_1.Element.Location();\r\n                    builder = new LinearGroupingBuilder(structure);\r\n                    _a = 0, units_3 = units;\r\n                    _b.label = 1;\r\n                case 1:\r\n                    if (!(_a < units_3.length)) return [3 /*break*/, 4];\r\n                    unit = units_3[_a];\r\n                    if (unit.kind !== 0 /* Atomic */)\r\n                        return [3 /*break*/, 3];\r\n                    l.unit = unit;\r\n                    elements = unit.elements;\r\n                    chainsIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.chainSegments, elements);\r\n                    residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueSegments, elements);\r\n                    while (chainsIt.hasNext) {\r\n                        chainSegment = chainsIt.move();\r\n                        l.element = int_1.OrderedSet.getAt(elements, chainSegment.start);\r\n                        // test entity and chain\r\n                        if (!entityTest(l) || !chainTest(l))\r\n                            continue;\r\n                        residuesIt.setSegment(chainSegment);\r\n                        while (residuesIt.hasNext) {\r\n                            residueSegment = residuesIt.move();\r\n                            l.element = int_1.OrderedSet.getAt(elements, residueSegment.start);\r\n                            // test residue\r\n                            if (!residueTest(l))\r\n                                continue;\r\n                            for (j = residueSegment.start, _j = residueSegment.end; j < _j; j++) {\r\n                                l.element = int_1.OrderedSet.getAt(elements, j);\r\n                                if (atomTest(l))\r\n                                    builder.add(groupBy(l), unit.id, l.element);\r\n                            }\r\n                        }\r\n                    }\r\n                    if (!ctx.shouldUpdate) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, ctx.update({ message: 'Atom Groups', current: 0, max: units.length })];\r\n                case 2:\r\n                    _b.sent();\r\n                    _b.label = 3;\r\n                case 3:\r\n                    _a++;\r\n                    return [3 /*break*/, 1];\r\n                case 4: return [2 /*return*/, builder.getSelection()];\r\n            }\r\n        });\r\n    }); };\r\n}\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/generators.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/predicates.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/predicates.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar properties_1 = __webpack_require__(/*! ./properties */ \"./build/node_modules/mol-model/structure/query/properties.js\");\r\nvar Predicates;\r\n(function (Predicates) {\r\n    function isSetLike(x) { return !!x && !!x.has; }\r\n    function eq(p, value) { return function (l) { return p(l) === value; }; }\r\n    Predicates.eq = eq;\r\n    function lt(p, value) { return function (l) { return p(l) < value; }; }\r\n    Predicates.lt = lt;\r\n    function lte(p, value) { return function (l) { return p(l) <= value; }; }\r\n    Predicates.lte = lte;\r\n    function gt(p, value) { return function (l) { return p(l) > value; }; }\r\n    Predicates.gt = gt;\r\n    function gte(p, value) { return function (l) { return p(l) >= value; }; }\r\n    Predicates.gte = gte;\r\n    function inSet(p, values) {\r\n        if (isSetLike(values)) {\r\n            return function (l) { return values.has(p(l)); };\r\n        }\r\n        else {\r\n            if (values.length === 0)\r\n                return properties_1.default.constant.false;\r\n            var set_1 = new Set();\r\n            for (var i = 0; i < values.length; i++)\r\n                set_1.add(values[i]);\r\n            return function (l) { return set_1.has(p(l)); };\r\n        }\r\n    }\r\n    Predicates.inSet = inSet;\r\n    function and() {\r\n        var ps = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            ps[_i] = arguments[_i];\r\n        }\r\n        switch (ps.length) {\r\n            case 0: return properties_1.default.constant.true;\r\n            case 1: return ps[0];\r\n            case 2: {\r\n                var a_1 = ps[0], b_1 = ps[1];\r\n                return function (l) { return a_1(l) && b_1(l); };\r\n            }\r\n            case 3: {\r\n                var a_2 = ps[0], b_2 = ps[1], c_1 = ps[2];\r\n                return function (l) { return a_2(l) && b_2(l) && c_1(l); };\r\n            }\r\n            case 4: {\r\n                var a_3 = ps[0], b_3 = ps[1], c_2 = ps[2], d_1 = ps[3];\r\n                return function (l) { return a_3(l) && b_3(l) && c_2(l) && d_1(l); };\r\n            }\r\n            case 5: {\r\n                var a_4 = ps[0], b_4 = ps[1], c_3 = ps[2], d_2 = ps[3], e_1 = ps[4];\r\n                return function (l) { return a_4(l) && b_4(l) && c_3(l) && d_2(l) && e_1(l); };\r\n            }\r\n            case 6: {\r\n                var a_5 = ps[0], b_5 = ps[1], c_4 = ps[2], d_3 = ps[3], e_2 = ps[4], f_1 = ps[5];\r\n                return function (l) { return a_5(l) && b_5(l) && c_4(l) && d_3(l) && e_2(l) && f_1(l); };\r\n            }\r\n            default: {\r\n                var count_1 = ps.length;\r\n                return function (l) {\r\n                    for (var i = 0; i < count_1; i++)\r\n                        if (!ps[i])\r\n                            return false;\r\n                    return true;\r\n                };\r\n            }\r\n        }\r\n    }\r\n    Predicates.and = and;\r\n    function or() {\r\n        var ps = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            ps[_i] = arguments[_i];\r\n        }\r\n        switch (ps.length) {\r\n            case 0: return properties_1.default.constant.false;\r\n            case 1: return ps[0];\r\n            case 2: {\r\n                var a_6 = ps[0], b_6 = ps[1];\r\n                return function (l) { return a_6(l) || b_6(l); };\r\n            }\r\n            case 3: {\r\n                var a_7 = ps[0], b_7 = ps[1], c_5 = ps[2];\r\n                return function (l) { return a_7(l) || b_7(l) || c_5(l); };\r\n            }\r\n            case 4: {\r\n                var a_8 = ps[0], b_8 = ps[1], c_6 = ps[2], d_4 = ps[3];\r\n                return function (l) { return a_8(l) || b_8(l) || c_6(l) || d_4(l); };\r\n            }\r\n            case 5: {\r\n                var a_9 = ps[0], b_9 = ps[1], c_7 = ps[2], d_5 = ps[3], e_3 = ps[4];\r\n                return function (l) { return a_9(l) || b_9(l) || c_7(l) || d_5(l) || e_3(l); };\r\n            }\r\n            case 6: {\r\n                var a_10 = ps[0], b_10 = ps[1], c_8 = ps[2], d_6 = ps[3], e_4 = ps[4], f_2 = ps[5];\r\n                return function (l) { return a_10(l) || b_10(l) || c_8(l) || d_6(l) || e_4(l) || f_2(l); };\r\n            }\r\n            default: {\r\n                var count_2 = ps.length;\r\n                return function (l) {\r\n                    for (var i = 0; i < count_2; i++)\r\n                        if (ps[i])\r\n                            return true;\r\n                    return false;\r\n                };\r\n            }\r\n        }\r\n    }\r\n    Predicates.or = or;\r\n})(Predicates || (Predicates = {}));\r\nexports.default = Predicates;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/predicates.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/properties.js":
+/*!********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/properties.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! ../structure */ \"./build/node_modules/mol-model/structure/structure.js\");\r\nvar atomic_1 = __webpack_require__(/*! ../model/properties/atomic */ \"./build/node_modules/mol-model/structure/model/properties/atomic.js\");\r\nvar constant = {\r\n    true: structure_1.Element.property(function (l) { return true; }),\r\n    false: structure_1.Element.property(function (l) { return false; }),\r\n    zero: structure_1.Element.property(function (l) { return 0; })\r\n};\r\nfunction notAtomic() {\r\n    throw 'Property only available for atomic models.';\r\n}\r\nfunction notCoarse(kind) {\r\n    if (!!kind)\r\n        throw \"Property only available for coarse models (\" + kind + \").\";\r\n    throw \"Property only available for coarse models.\";\r\n}\r\nvar atom = {\r\n    key: structure_1.Element.property(function (l) { return l.element; }),\r\n    // Conformation\r\n    x: structure_1.Element.property(function (l) { return l.unit.conformation.x(l.element); }),\r\n    y: structure_1.Element.property(function (l) { return l.unit.conformation.y(l.element); }),\r\n    z: structure_1.Element.property(function (l) { return l.unit.conformation.z(l.element); }),\r\n    id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicConformation.atomId.value(l.element); }),\r\n    occupancy: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicConformation.occupancy.value(l.element); }),\r\n    B_iso_or_equiv: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicConformation.B_iso_or_equiv.value(l.element); }),\r\n    // Hierarchy\r\n    type_symbol: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element); }),\r\n    label_atom_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.atoms.label_atom_id.value(l.element); }),\r\n    auth_atom_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.atoms.auth_atom_id.value(l.element); }),\r\n    label_alt_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.atoms.label_alt_id.value(l.element); }),\r\n    pdbx_formal_charge: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.value(l.element); }),\r\n    // Derived\r\n    vdw_radius: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : atomic_1.VdwRadius(l.unit.model.atomicHierarchy.atoms.type_symbol.value(l.element)); }),\r\n};\r\nvar residue = {\r\n    key: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residueKey[l.unit.residueIndex[l.element]]; }),\r\n    group_PDB: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.group_PDB.value(l.unit.residueIndex[l.element]); }),\r\n    label_comp_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.label_comp_id.value(l.unit.residueIndex[l.element]); }),\r\n    auth_comp_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.auth_comp_id.value(l.unit.residueIndex[l.element]); }),\r\n    label_seq_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.label_seq_id.value(l.unit.residueIndex[l.element]); }),\r\n    auth_seq_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.auth_seq_id.value(l.unit.residueIndex[l.element]); }),\r\n    pdbx_PDB_ins_code: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.residues.pdbx_PDB_ins_code.value(l.unit.residueIndex[l.element]); })\r\n};\r\nvar chain = {\r\n    key: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.chainKey[l.unit.chainIndex[l.element]]; }),\r\n    label_asym_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.chains.label_asym_id.value(l.unit.chainIndex[l.element]); }),\r\n    auth_asym_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.chains.auth_asym_id.value(l.unit.chainIndex[l.element]); }),\r\n    label_entity_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.chains.label_entity_id.value(l.unit.chainIndex[l.element]); })\r\n};\r\nvar coarse = {\r\n    key: atom.key,\r\n    modelKey: structure_1.Element.property(function (l) { return !structure_1.Unit.isCoarse(l.unit) ? notCoarse() : l.unit.coarseElements.modelKey[l.element]; }),\r\n    entityKey: structure_1.Element.property(function (l) { return !structure_1.Unit.isCoarse(l.unit) ? notCoarse() : l.unit.coarseElements.entityKey[l.element]; }),\r\n    x: atom.x,\r\n    y: atom.y,\r\n    z: atom.z,\r\n    asym_id: structure_1.Element.property(function (l) { return !structure_1.Unit.isCoarse(l.unit) ? notCoarse() : l.unit.coarseElements.asym_id.value(l.element); }),\r\n    seq_id_begin: structure_1.Element.property(function (l) { return !structure_1.Unit.isCoarse(l.unit) ? notCoarse() : l.unit.coarseElements.seq_id_begin.value(l.element); }),\r\n    seq_id_end: structure_1.Element.property(function (l) { return !structure_1.Unit.isCoarse(l.unit) ? notCoarse() : l.unit.coarseElements.seq_id_end.value(l.element); }),\r\n    sphere_radius: structure_1.Element.property(function (l) { return !structure_1.Unit.isSpheres(l.unit) ? notCoarse('spheres') : l.unit.coarseConformation.radius[l.element]; }),\r\n    sphere_rmsf: structure_1.Element.property(function (l) { return !structure_1.Unit.isSpheres(l.unit) ? notCoarse('spheres') : l.unit.coarseConformation.rmsf[l.element]; }),\r\n    gaussian_weight: structure_1.Element.property(function (l) { return !structure_1.Unit.isGaussians(l.unit) ? notCoarse('gaussians') : l.unit.coarseConformation.weight[l.element]; }),\r\n    gaussian_covariance_matrix: structure_1.Element.property(function (l) { return !structure_1.Unit.isGaussians(l.unit) ? notCoarse('gaussians') : l.unit.coarseConformation.covariance_matrix[l.element]; })\r\n};\r\nfunction eK(l) { return !structure_1.Unit.isAtomic(l.unit) ? notAtomic() : l.unit.model.atomicHierarchy.entityKey[l.unit.chainIndex[l.element]]; }\r\nvar entity = {\r\n    key: eK,\r\n    id: structure_1.Element.property(function (l) { return l.unit.model.entities.data.id.value(eK(l)); }),\r\n    type: structure_1.Element.property(function (l) { return l.unit.model.entities.data.type.value(eK(l)); }),\r\n    src_method: structure_1.Element.property(function (l) { return l.unit.model.entities.data.src_method.value(eK(l)); }),\r\n    pdbx_description: structure_1.Element.property(function (l) { return l.unit.model.entities.data.pdbx_description.value(eK(l)); }),\r\n    formula_weight: structure_1.Element.property(function (l) { return l.unit.model.entities.data.formula_weight.value(eK(l)); }),\r\n    pdbx_number_of_molecules: structure_1.Element.property(function (l) { return l.unit.model.entities.data.pdbx_number_of_molecules.value(eK(l)); }),\r\n    details: structure_1.Element.property(function (l) { return l.unit.model.entities.data.details.value(eK(l)); }),\r\n    pdbx_mutation: structure_1.Element.property(function (l) { return l.unit.model.entities.data.pdbx_mutation.value(eK(l)); }),\r\n    pdbx_fragment: structure_1.Element.property(function (l) { return l.unit.model.entities.data.pdbx_fragment.value(eK(l)); }),\r\n    pdbx_ec: structure_1.Element.property(function (l) { return l.unit.model.entities.data.pdbx_ec.value(eK(l)); })\r\n};\r\nvar unit = {\r\n    operator_name: structure_1.Element.property(function (l) { return l.unit.conformation.operator.name; }),\r\n    model_num: structure_1.Element.property(function (l) { return l.unit.model.modelNum; })\r\n};\r\nvar Properties = {\r\n    constant: constant,\r\n    atom: atom,\r\n    residue: residue,\r\n    chain: chain,\r\n    entity: entity,\r\n    unit: unit,\r\n    coarse: coarse\r\n};\r\nexports.default = Properties;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/properties.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/query.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/query.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nfunction Query(q) {\r\n    var ret = (function (s) { return mol_task_1.Task.create('Query', function (ctx) { return q(s, ctx); }); });\r\n    ret.provider = q;\r\n    return ret;\r\n}\r\nexports.default = Query;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/query.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/selection.js":
+/*!*******************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/selection.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar generic_1 = __webpack_require__(/*! mol-data/generic */ \"./build/node_modules/mol-data/generic.js\");\r\nvar structure_1 = __webpack_require__(/*! ../structure */ \"./build/node_modules/mol-model/structure/structure.js\");\r\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./build/node_modules/mol-model/structure/query/utils.js\");\r\nvar Selection;\r\n(function (Selection) {\r\n    function Singletons(source, structure) { return { kind: 'singletons', source: source, structure: structure }; }\r\n    Selection.Singletons = Singletons;\r\n    function Sequence(source, structures) { return { kind: 'sequence', source: source, structures: structures }; }\r\n    Selection.Sequence = Sequence;\r\n    function Empty(source) { return Singletons(source, structure_1.Structure.Empty); }\r\n    Selection.Empty = Empty;\r\n    ;\r\n    function isSingleton(s) { return s.kind === 'singletons'; }\r\n    Selection.isSingleton = isSingleton;\r\n    function isEmpty(s) { return isSingleton(s) ? s.structure.units.length === 0 : s.structures.length === 0; }\r\n    Selection.isEmpty = isEmpty;\r\n    function structureCount(sel) {\r\n        if (isSingleton(sel))\r\n            return sel.structure.elementCount;\r\n        return sel.structures.length;\r\n    }\r\n    Selection.structureCount = structureCount;\r\n    function unionStructure(sel) {\r\n        if (isEmpty(sel))\r\n            return structure_1.Structure.Empty;\r\n        if (isSingleton(sel))\r\n            return sel.structure;\r\n        return utils_1.StructureUtils.union(sel.source, sel.structures);\r\n    }\r\n    Selection.unionStructure = unionStructure;\r\n    function getSelection(source, structures, allSingletons) {\r\n        var len = structures.length;\r\n        if (len === 0)\r\n            return Empty(source);\r\n        if (allSingletons)\r\n            return Singletons(source, utils_1.StructureUtils.union(source, structures));\r\n        return Sequence(source, structures);\r\n    }\r\n    var LinearBuilderImpl = /** @class */ (function () {\r\n        function LinearBuilderImpl(source) {\r\n            this.source = source;\r\n            this.structures = [];\r\n            this.allSingletons = true;\r\n        }\r\n        LinearBuilderImpl.prototype.add = function (structure) {\r\n            var elementCount = structure.elementCount;\r\n            if (elementCount === 0)\r\n                return;\r\n            this.structures[this.structures.length] = structure;\r\n            if (elementCount !== 1)\r\n                this.allSingletons = false;\r\n        };\r\n        LinearBuilderImpl.prototype.getSelection = function () { return getSelection(this.source, this.structures, this.allSingletons); };\r\n        return LinearBuilderImpl;\r\n    }());\r\n    var HashBuilderImpl = /** @class */ (function () {\r\n        function HashBuilderImpl(structure) {\r\n            this.structure = structure;\r\n            this.structures = [];\r\n            this.allSingletons = true;\r\n            this.uniqueSets = generic_1.HashSet(structure_1.Structure.hashCode, structure_1.Structure.areEqual);\r\n        }\r\n        HashBuilderImpl.prototype.add = function (structure) {\r\n            var atomCount = structure.elementCount;\r\n            if (atomCount === 0 || !this.uniqueSets.add(structure))\r\n                return;\r\n            this.structures[this.structures.length] = structure;\r\n            if (atomCount !== 1)\r\n                this.allSingletons = false;\r\n        };\r\n        HashBuilderImpl.prototype.getSelection = function () { return getSelection(this.structure, this.structures, this.allSingletons); };\r\n        return HashBuilderImpl;\r\n    }());\r\n    function LinearBuilder(structure) { return new LinearBuilderImpl(structure); }\r\n    Selection.LinearBuilder = LinearBuilder;\r\n    function UniqueBuilder(structure) { return new HashBuilderImpl(structure); }\r\n    Selection.UniqueBuilder = UniqueBuilder;\r\n    // TODO: spatial lookup\r\n})(Selection || (Selection = {}));\r\nexports.default = Selection;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/selection.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/query/utils.js":
+/*!***************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/query/utils.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! ../structure */ \"./build/node_modules/mol-model/structure/structure.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar StructureUtils;\r\n(function (StructureUtils) {\r\n    function union(source, structures) {\r\n        if (structures.length === 0)\r\n            return structure_1.Structure.Empty;\r\n        if (structures.length === 1)\r\n            return structures[0];\r\n        var unitMap = new Map();\r\n        var fullUnits = new Set();\r\n        for (var _a = 0, structures_1 = structures; _a < structures_1.length; _a++) {\r\n            var units = structures_1[_a].units;\r\n            for (var i = 0, _i = units.length; i < _i; i++) {\r\n                var u = units[i];\r\n                if (unitMap.has(u.id)) {\r\n                    // check if there is anything more to union in this particual unit.\r\n                    if (fullUnits.has(u.id))\r\n                        continue;\r\n                    var merged = int_1.SortedArray.union(unitMap.get(u.id), u.elements);\r\n                    unitMap.set(u.id, merged);\r\n                    if (merged.length === source.unitMap.get(u.id).elements.length)\r\n                        fullUnits.add(u.id);\r\n                }\r\n                else {\r\n                    unitMap.set(u.id, u.elements);\r\n                    if (u.elements.length === source.unitMap.get(u.id).elements.length)\r\n                        fullUnits.add(u.id);\r\n                }\r\n            }\r\n        }\r\n        var builder = source.subsetBuilder(true);\r\n        unitMap.forEach(buildUnion, builder);\r\n        return builder.getStructure();\r\n    }\r\n    StructureUtils.union = union;\r\n    function buildUnion(elements, id) {\r\n        this.setUnit(id, elements);\r\n    }\r\n    function areIntersecting(sA, sB) {\r\n        if (sA === sB)\r\n            return true;\r\n        var a, b;\r\n        if (sA.units.length < sB.units.length) {\r\n            a = sA;\r\n            b = sB;\r\n        }\r\n        else {\r\n            a = sB;\r\n            b = sA;\r\n        }\r\n        var aU = a.units, bU = b.unitMap;\r\n        for (var i = 0, _i = aU.length; i < _i; i++) {\r\n            var u = aU[i];\r\n            if (!bU.has(u.id))\r\n                continue;\r\n            var v = bU.get(u.id);\r\n            if (int_1.SortedArray.areIntersecting(u.elements, v.elements))\r\n                return true;\r\n        }\r\n        return false;\r\n    }\r\n    StructureUtils.areIntersecting = areIntersecting;\r\n    function intersect(sA, sB) {\r\n        if (sA === sB)\r\n            return sA;\r\n        if (!areIntersecting(sA, sB))\r\n            return structure_1.Structure.Empty;\r\n        var a, b;\r\n        if (sA.units.length < sB.units.length) {\r\n            a = sA;\r\n            b = sB;\r\n        }\r\n        else {\r\n            a = sB;\r\n            b = sA;\r\n        }\r\n        var aU = a.units, bU = b.unitMap;\r\n        var units = [];\r\n        for (var i = 0, _i = aU.length; i < _i; i++) {\r\n            var u = aU[i];\r\n            if (!bU.has(u.id))\r\n                continue;\r\n            var v = bU.get(u.id);\r\n            if (int_1.SortedArray.areIntersecting(u.elements, v.elements)) {\r\n                var int = int_1.SortedArray.intersect(u.elements, v.elements);\r\n                units[units.length] = u.getChild(int);\r\n            }\r\n        }\r\n        return structure_1.Structure.create(units);\r\n    }\r\n    StructureUtils.intersect = intersect;\r\n    function subtract(a, b) {\r\n        if (a === b)\r\n            return structure_1.Structure.Empty;\r\n        if (!areIntersecting(a, b))\r\n            return a;\r\n        var aU = a.units, bU = b.unitMap;\r\n        var units = [];\r\n        for (var i = 0, _i = aU.length; i < _i; i++) {\r\n            var u = aU[i];\r\n            if (!bU.has(u.id))\r\n                continue;\r\n            var v = bU.get(u.id);\r\n            var sub = int_1.SortedArray.intersect(u.elements, v.elements);\r\n            if (sub.length > 0) {\r\n                units[units.length] = u.getChild(sub);\r\n            }\r\n        }\r\n        return structure_1.Structure.create(units);\r\n    }\r\n    StructureUtils.subtract = subtract;\r\n})(StructureUtils || (StructureUtils = {}));\r\nexports.StructureUtils = StructureUtils;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/query/utils.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar element_1 = __webpack_require__(/*! ./structure/element */ \"./build/node_modules/mol-model/structure/structure/element.js\");\r\nexports.Element = element_1.default;\r\nvar structure_1 = __webpack_require__(/*! ./structure/structure */ \"./build/node_modules/mol-model/structure/structure/structure.js\");\r\nexports.Structure = structure_1.default;\r\nvar unit_1 = __webpack_require__(/*! ./structure/unit */ \"./build/node_modules/mol-model/structure/structure/unit.js\");\r\nexports.Unit = unit_1.default;\r\nvar symmetry_1 = __webpack_require__(/*! ./structure/symmetry */ \"./build/node_modules/mol-model/structure/structure/symmetry.js\");\r\nexports.StructureSymmetry = symmetry_1.default;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/element.js":
+/*!*********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/element.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar Element;\r\n(function (Element) {\r\n    Element.Zero = int_1.Tuple.Zero;\r\n    Element.create = int_1.Tuple.create;\r\n    Element.is = int_1.Tuple.is;\r\n    Element.unitId = int_1.Tuple.fst;\r\n    Element.elementIndex = int_1.Tuple.snd;\r\n    Element.areEqual = int_1.Tuple.areEqual;\r\n    Element.hashCode = int_1.Tuple.hashCode;\r\n    function createEmptyArray(n) { return new Float64Array(n); }\r\n    Element.createEmptyArray = createEmptyArray;\r\n    function Location() { return { unit: {}, element: 0 }; }\r\n    Element.Location = Location;\r\n    function updateLocation(structure, l, element) {\r\n        l.unit = structure.units[Element.unitId(element)];\r\n        l.element = Element.elementIndex(element);\r\n        return l;\r\n    }\r\n    Element.updateLocation = updateLocation;\r\n    function property(p) { return p; }\r\n    Element.property = property;\r\n})(Element || (Element = {}));\r\nexports.default = Element;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/element.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/structure.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/structure.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar generic_1 = __webpack_require__(/*! mol-data/generic */ \"./build/node_modules/mol-data/generic.js\");\r\nvar symmetry_operator_1 = __webpack_require__(/*! mol-math/geometry/symmetry-operator */ \"./build/node_modules/mol-math/geometry/symmetry-operator.js\");\r\nvar model_1 = __webpack_require__(/*! ../model */ \"./build/node_modules/mol-model/structure/model.js\");\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar element_1 = __webpack_require__(/*! ./element */ \"./build/node_modules/mol-model/structure/structure/element.js\");\r\nvar unit_1 = __webpack_require__(/*! ./unit */ \"./build/node_modules/mol-model/structure/structure/unit.js\");\r\nvar lookup3d_1 = __webpack_require__(/*! ./util/lookup3d */ \"./build/node_modules/mol-model/structure/structure/util/lookup3d.js\");\r\nvar symmetry_1 = __webpack_require__(/*! ./symmetry */ \"./build/node_modules/mol-model/structure/structure/symmetry.js\");\r\nvar Structure = /** @class */ (function () {\r\n    function Structure(units) {\r\n        this._hashCode = 0;\r\n        this._lookup3d = void 0;\r\n        var map = int_1.IntMap.Mutable();\r\n        var elementCount = 0;\r\n        var isSorted = true;\r\n        var lastId = units.length > 0 ? units[0].id : 0;\r\n        for (var i = 0, _i = units.length; i < _i; i++) {\r\n            var u = units[i];\r\n            map.set(u.id, u);\r\n            elementCount += u.elements.length;\r\n            if (u.id < lastId)\r\n                isSorted = false;\r\n            lastId = u.id;\r\n        }\r\n        if (!isSorted)\r\n            util_1.sort(units, 0, units.length, cmpUnits, util_1.arraySwap);\r\n        this.unitMap = map;\r\n        this.units = units;\r\n        this.elementCount = elementCount;\r\n    }\r\n    Structure.prototype.subsetBuilder = function (isSorted) {\r\n        return new Structure.SubsetBuilder(this, isSorted);\r\n    };\r\n    Object.defineProperty(Structure.prototype, \"hashCode\", {\r\n        get: function () {\r\n            if (this._hashCode !== 0)\r\n                return this._hashCode;\r\n            return this.computeHash();\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Structure.prototype.computeHash = function () {\r\n        var hash = 23;\r\n        for (var i = 0, _i = this.units.length; i < _i; i++) {\r\n            var u = this.units[i];\r\n            hash = (31 * hash + u.id) | 0;\r\n            hash = (31 * hash + int_1.SortedArray.hashCode(u.elements)) | 0;\r\n        }\r\n        hash = (31 * hash + this.elementCount) | 0;\r\n        hash = util_1.hash1(hash);\r\n        this._hashCode = hash;\r\n        return hash;\r\n    };\r\n    Structure.prototype.elementLocations = function () {\r\n        return new Structure.ElementLocationIterator(this);\r\n    };\r\n    Object.defineProperty(Structure.prototype, \"boundary\", {\r\n        get: function () {\r\n            return this.lookup3d.boundary;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    Object.defineProperty(Structure.prototype, \"lookup3d\", {\r\n        get: function () {\r\n            if (this._lookup3d)\r\n                return this._lookup3d;\r\n            this._lookup3d = lookup3d_1.StructureLookup3D.create(this);\r\n            return this._lookup3d;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return Structure;\r\n}());\r\nfunction cmpUnits(units, i, j) { return units[i].id - units[j].id; }\r\n(function (Structure) {\r\n    Structure.Empty = new Structure([]);\r\n    function create(units) { return new Structure(units); }\r\n    Structure.create = create;\r\n    function ofData(format) {\r\n        var models = model_1.Model.create(format);\r\n        return models.map(ofModel);\r\n    }\r\n    Structure.ofData = ofData;\r\n    function ofModel(model) {\r\n        var chains = model.atomicHierarchy.chainSegments;\r\n        var builder = new StructureBuilder();\r\n        for (var c = 0; c < chains.count; c++) {\r\n            var elements = int_1.SortedArray.ofBounds(chains.segments[c], chains.segments[c + 1]);\r\n            builder.addUnit(0 /* Atomic */, model, symmetry_operator_1.SymmetryOperator.Default, elements);\r\n        }\r\n        var cs = model.coarseHierarchy;\r\n        if (cs.isDefined) {\r\n            if (cs.spheres.count > 0) {\r\n                addCoarseUnits(builder, model, model.coarseHierarchy.spheres, 1 /* Spheres */);\r\n            }\r\n            if (cs.gaussians.count > 0) {\r\n                addCoarseUnits(builder, model, model.coarseHierarchy.gaussians, 2 /* Gaussians */);\r\n            }\r\n        }\r\n        return builder.getStructure();\r\n    }\r\n    Structure.ofModel = ofModel;\r\n    function addCoarseUnits(builder, model, elements, kind) {\r\n        var chainSegments = elements.chainSegments;\r\n        for (var cI = 0; cI < chainSegments.count; cI++) {\r\n            var elements_1 = int_1.SortedArray.ofBounds(chainSegments.segments[cI], chainSegments.segments[cI + 1]);\r\n            builder.addUnit(kind, model, symmetry_operator_1.SymmetryOperator.Default, elements_1);\r\n        }\r\n    }\r\n    var StructureBuilder = /** @class */ (function () {\r\n        function StructureBuilder() {\r\n            this.units = [];\r\n        }\r\n        StructureBuilder.prototype.addUnit = function (kind, model, operator, elements) {\r\n            var unit = unit_1.default.create(this.units.length, kind, model, operator, elements);\r\n            this.units.push(unit);\r\n            return unit;\r\n        };\r\n        StructureBuilder.prototype.addWithOperator = function (unit, operator) {\r\n            var newUnit = unit.applyOperator(this.units.length, operator);\r\n            this.units.push(newUnit);\r\n            return newUnit;\r\n        };\r\n        StructureBuilder.prototype.getStructure = function () {\r\n            return create(this.units);\r\n        };\r\n        Object.defineProperty(StructureBuilder.prototype, \"isEmpty\", {\r\n            get: function () {\r\n                return this.units.length === 0;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        return StructureBuilder;\r\n    }());\r\n    Structure.StructureBuilder = StructureBuilder;\r\n    function Builder() { return new StructureBuilder(); }\r\n    Structure.Builder = Builder;\r\n    var SubsetBuilder = /** @class */ (function () {\r\n        function SubsetBuilder(parent, isSorted) {\r\n            this.parent = parent;\r\n            this.isSorted = isSorted;\r\n            this.ids = [];\r\n            this.unitMap = int_1.IntMap.Mutable();\r\n            this.parentId = -1;\r\n            this.currentUnit = [];\r\n            this.elementCount = 0;\r\n        }\r\n        SubsetBuilder.prototype.addToUnit = function (parentId, e) {\r\n            var unit = this.unitMap.get(parentId);\r\n            if (!!unit) {\r\n                unit[unit.length] = e;\r\n            }\r\n            else {\r\n                this.unitMap.set(parentId, [e]);\r\n                this.ids[this.ids.length] = parentId;\r\n            }\r\n            this.elementCount++;\r\n        };\r\n        SubsetBuilder.prototype.beginUnit = function (parentId) {\r\n            this.parentId = parentId;\r\n            this.currentUnit = this.currentUnit.length > 0 ? [] : this.currentUnit;\r\n        };\r\n        SubsetBuilder.prototype.addElement = function (e) {\r\n            this.currentUnit[this.currentUnit.length] = e;\r\n            this.elementCount++;\r\n        };\r\n        SubsetBuilder.prototype.commitUnit = function () {\r\n            if (this.currentUnit.length === 0)\r\n                return;\r\n            this.ids[this.ids.length] = this.parentId;\r\n            this.unitMap.set(this.parentId, this.currentUnit);\r\n            this.parentId = -1;\r\n        };\r\n        SubsetBuilder.prototype.setUnit = function (parentId, elements) {\r\n            this.ids[this.ids.length] = parentId;\r\n            this.unitMap.set(parentId, elements);\r\n            this.elementCount += elements.length;\r\n        };\r\n        SubsetBuilder.prototype.getStructure = function () {\r\n            if (this.isEmpty)\r\n                return Structure.Empty;\r\n            var newUnits = [];\r\n            util_1.sortArray(this.ids);\r\n            var symmGroups = symmetry_1.default.UnitEquivalenceBuilder();\r\n            for (var i = 0, _i = this.ids.length; i < _i; i++) {\r\n                var id = this.ids[i];\r\n                var parent_1 = this.parent.unitMap.get(id);\r\n                var unit = this.unitMap.get(id);\r\n                var l = unit.length;\r\n                // if the length is the same, just copy the old unit.\r\n                if (unit.length === parent_1.elements.length) {\r\n                    newUnits[newUnits.length] = parent_1;\r\n                    symmGroups.add(parent_1.id, parent_1);\r\n                    continue;\r\n                }\r\n                if (!this.isSorted && l > 1)\r\n                    util_1.sortArray(unit);\r\n                var child = parent_1.getChild(int_1.SortedArray.ofSortedArray(unit));\r\n                var pivot = symmGroups.add(child.id, child);\r\n                if (child !== pivot)\r\n                    child = pivot.applyOperator(child.id, child.conformation.operator, true);\r\n                newUnits[newUnits.length] = child;\r\n            }\r\n            return create(newUnits);\r\n        };\r\n        SubsetBuilder.prototype.setSingletonLocation = function (location) {\r\n            var id = this.ids[0];\r\n            location.unit = this.parent.unitMap.get(id);\r\n            location.element = this.unitMap.get(id)[0];\r\n        };\r\n        Object.defineProperty(SubsetBuilder.prototype, \"isEmpty\", {\r\n            get: function () {\r\n                return this.elementCount === 0;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        return SubsetBuilder;\r\n    }());\r\n    Structure.SubsetBuilder = SubsetBuilder;\r\n    function getModels(s) {\r\n        var units = s.units;\r\n        var arr = generic_1.UniqueArray.create();\r\n        for (var _a = 0, units_1 = units; _a < units_1.length; _a++) {\r\n            var u = units_1[_a];\r\n            generic_1.UniqueArray.add(arr, u.model.id, u.model);\r\n        }\r\n        return arr.array;\r\n    }\r\n    Structure.getModels = getModels;\r\n    function getLookup3d(s) {\r\n        return 0;\r\n    }\r\n    Structure.getLookup3d = getLookup3d;\r\n    function getBoundary(s) {\r\n        return getLookup3d(s).boundary;\r\n    }\r\n    Structure.getBoundary = getBoundary;\r\n    function hashCode(s) {\r\n        return s.hashCode;\r\n    }\r\n    Structure.hashCode = hashCode;\r\n    function areEqual(a, b) {\r\n        if (a.elementCount !== b.elementCount)\r\n            return false;\r\n        var len = a.units.length;\r\n        if (len !== b.units.length)\r\n            return false;\r\n        for (var i = 0; i < len; i++) {\r\n            if (a.units[i].id !== b.units[i].id)\r\n                return false;\r\n        }\r\n        for (var i = 0; i < len; i++) {\r\n            if (!int_1.SortedArray.areEqual(a.units[i].elements, b.units[i].elements))\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n    Structure.areEqual = areEqual;\r\n    var ElementLocationIterator = /** @class */ (function () {\r\n        function ElementLocationIterator(structure) {\r\n            this.structure = structure;\r\n            this.current = element_1.default.Location();\r\n            this.unitIndex = 0;\r\n            this.len = 0;\r\n            this.idx = 0;\r\n            this.hasNext = structure.elementCount > 0;\r\n            if (this.hasNext) {\r\n                this.elements = structure.units[0].elements;\r\n                this.len = this.elements.length;\r\n                this.current.unit = structure.units[0];\r\n            }\r\n        }\r\n        ElementLocationIterator.prototype.move = function () {\r\n            this.current.element = this.elements[this.idx];\r\n            this.advance();\r\n            return this.current;\r\n        };\r\n        ElementLocationIterator.prototype.advance = function () {\r\n            if (this.idx < this.len - 1) {\r\n                this.idx++;\r\n                return;\r\n            }\r\n            this.idx = 0;\r\n            this.unitIndex++;\r\n            if (this.unitIndex >= this.structure.units.length) {\r\n                this.hasNext = false;\r\n                return;\r\n            }\r\n            this.current.unit = this.structure.units[this.unitIndex];\r\n            this.elements = this.current.unit.elements;\r\n            this.len = this.elements.length;\r\n        };\r\n        return ElementLocationIterator;\r\n    }());\r\n    Structure.ElementLocationIterator = ElementLocationIterator;\r\n})(Structure || (Structure = {}));\r\nexports.default = Structure;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/structure.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/symmetry.js":
+/*!**********************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/symmetry.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar structure_1 = __webpack_require__(/*! ./structure */ \"./build/node_modules/mol-model/structure/structure/structure.js\");\r\nvar query_1 = __webpack_require__(/*! ../query */ \"./build/node_modules/mol-model/structure/query.js\");\r\nvar model_1 = __webpack_require__(/*! ../model */ \"./build/node_modules/mol-model/structure/model.js\");\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar util_1 = __webpack_require__(/*! mol-data/util */ \"./build/node_modules/mol-data/util.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar StructureSymmetry;\r\n(function (StructureSymmetry) {\r\n    function buildAssembly(structure, asmName) {\r\n        var _this = this;\r\n        return mol_task_1.Task.create('Build Assembly', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n            var models, assembly, assembler, _i, _a, g, selection, units, _b, _c, oper, _d, units_1, unit;\r\n            return __generator(this, function (_e) {\r\n                switch (_e.label) {\r\n                    case 0:\r\n                        models = structure_1.default.getModels(structure);\r\n                        if (models.length !== 1)\r\n                            throw new Error('Can only build assemblies from structures based on 1 model.');\r\n                        assembly = model_1.ModelSymmetry.findAssembly(models[0], asmName);\r\n                        if (!assembly)\r\n                            throw new Error(\"Assembly '\" + asmName + \"' is not defined.\");\r\n                        assembler = structure_1.default.Builder();\r\n                        _i = 0, _a = assembly.operatorGroups;\r\n                        _e.label = 1;\r\n                    case 1:\r\n                        if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n                        g = _a[_i];\r\n                        return [4 /*yield*/, ctx.runChild(g.selector(structure))];\r\n                    case 2:\r\n                        selection = _e.sent();\r\n                        if (query_1.Selection.structureCount(selection) === 0) {\r\n                            return [3 /*break*/, 3];\r\n                        }\r\n                        units = query_1.Selection.unionStructure(selection).units;\r\n                        for (_b = 0, _c = g.operators; _b < _c.length; _b++) {\r\n                            oper = _c[_b];\r\n                            for (_d = 0, units_1 = units; _d < units_1.length; _d++) {\r\n                                unit = units_1[_d];\r\n                                assembler.addWithOperator(unit, oper);\r\n                            }\r\n                        }\r\n                        _e.label = 3;\r\n                    case 3:\r\n                        _i++;\r\n                        return [3 /*break*/, 1];\r\n                    case 4: return [2 /*return*/, assembler.getStructure()];\r\n                }\r\n            });\r\n        }); });\r\n    }\r\n    StructureSymmetry.buildAssembly = buildAssembly;\r\n    function buildSymmetryRange(structure, ijkMin, ijkMax) {\r\n        var _this = this;\r\n        return mol_task_1.Task.create('Build Assembly', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n            var models, spacegroup, operators, op, i, j, k, assembler, units, _i, operators_1, oper, _a, units_2, unit;\r\n            return __generator(this, function (_b) {\r\n                models = structure_1.default.getModels(structure);\r\n                if (models.length !== 1)\r\n                    throw new Error('Can only build symmetries from structures based on 1 model.');\r\n                spacegroup = models[0].symmetry.spacegroup;\r\n                if (geometry_1.SpacegroupCell.isZero(spacegroup.cell))\r\n                    return [2 /*return*/, structure];\r\n                operators = [];\r\n                for (op = 0; op < spacegroup.operators.length; op++) {\r\n                    for (i = ijkMin[0]; i < ijkMax[0]; i++) {\r\n                        for (j = ijkMin[1]; j < ijkMax[1]; j++) {\r\n                            for (k = ijkMin[2]; k < ijkMax[2]; k++) {\r\n                                operators[operators.length] = geometry_1.Spacegroup.getSymmetryOperator(spacegroup, op, i, j, k);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                assembler = structure_1.default.Builder();\r\n                units = structure.units;\r\n                for (_i = 0, operators_1 = operators; _i < operators_1.length; _i++) {\r\n                    oper = operators_1[_i];\r\n                    for (_a = 0, units_2 = units; _a < units_2.length; _a++) {\r\n                        unit = units_2[_a];\r\n                        assembler.addWithOperator(unit, oper);\r\n                    }\r\n                }\r\n                return [2 /*return*/, assembler.getStructure()];\r\n            });\r\n        }); });\r\n    }\r\n    StructureSymmetry.buildSymmetryRange = buildSymmetryRange;\r\n    function hashUnit(u) {\r\n        return util_1.hash2(u.invariantId, int_1.SortedArray.hashCode(u.elements));\r\n    }\r\n    function areUnitsEquivalent(a, b) {\r\n        return a.invariantId === b.invariantId && a.model.id === b.model.id && int_1.SortedArray.areEqual(a.elements, b.elements);\r\n    }\r\n    function UnitEquivalenceBuilder() {\r\n        return util_1.EquivalenceClasses(hashUnit, areUnitsEquivalent);\r\n    }\r\n    StructureSymmetry.UnitEquivalenceBuilder = UnitEquivalenceBuilder;\r\n    function getTransformGroups(s) {\r\n        var groups = UnitEquivalenceBuilder();\r\n        for (var _i = 0, _a = s.units; _i < _a.length; _i++) {\r\n            var u = _a[_i];\r\n            groups.add(u.id, u);\r\n        }\r\n        var ret = [];\r\n        for (var _b = 0, _c = groups.groups; _b < _c.length; _b++) {\r\n            var eqUnits = _c[_b];\r\n            var first = s.unitMap.get(eqUnits[0]);\r\n            ret.push({ elements: first.elements, units: eqUnits.map(function (id) { return s.unitMap.get(id); }) });\r\n        }\r\n        return ret;\r\n    }\r\n    StructureSymmetry.getTransformGroups = getTransformGroups;\r\n})(StructureSymmetry || (StructureSymmetry = {}));\r\nexports.default = StructureSymmetry;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/symmetry.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/unit.js":
+/*!******************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/unit.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return function (d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar symmetry_operator_1 = __webpack_require__(/*! mol-math/geometry/symmetry-operator */ \"./build/node_modules/mol-math/geometry/symmetry-operator.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar id_factory_1 = __webpack_require__(/*! mol-util/id-factory */ \"./build/node_modules/mol-util/id-factory.js\");\r\nvar bonds_1 = __webpack_require__(/*! ./unit/bonds */ \"./build/node_modules/mol-model/structure/structure/unit/bonds.js\");\r\nvar Unit;\r\n(function (Unit) {\r\n    function isAtomic(u) { return u.kind === 0 /* Atomic */; }\r\n    Unit.isAtomic = isAtomic;\r\n    function isCoarse(u) { return u.kind === 1 /* Spheres */ || u.kind === 2 /* Gaussians */; }\r\n    Unit.isCoarse = isCoarse;\r\n    function isSpheres(u) { return u.kind === 1 /* Spheres */; }\r\n    Unit.isSpheres = isSpheres;\r\n    function isGaussians(u) { return u.kind === 2 /* Gaussians */; }\r\n    Unit.isGaussians = isGaussians;\r\n    function create(id, kind, model, operator, elements) {\r\n        switch (kind) {\r\n            case 0 /* Atomic */: return new Atomic(id, unitIdFactory(), model, elements, symmetry_operator_1.SymmetryOperator.createMapping(operator, model.atomicConformation));\r\n            case 1 /* Spheres */: return createCoarse(id, unitIdFactory(), model, 1 /* Spheres */, elements, symmetry_operator_1.SymmetryOperator.createMapping(operator, model.coarseConformation.spheres));\r\n            case 2 /* Gaussians */: return createCoarse(id, unitIdFactory(), model, 2 /* Gaussians */, elements, symmetry_operator_1.SymmetryOperator.createMapping(operator, model.coarseConformation.gaussians));\r\n        }\r\n    }\r\n    Unit.create = create;\r\n    var unitIdFactory = id_factory_1.idFactory();\r\n    // A bulding block of a structure that corresponds\r\n    // to a \"natural group of atoms\" (most often a \"chain\")\r\n    // together with a tranformation (rotation and translation)\r\n    // that is dynamically applied to the underlying atom set.\r\n    //\r\n    // An atom set can be referenced by multiple diffrent units which\r\n    // makes construction of assemblies and spacegroups very efficient.\r\n    var Atomic = /** @class */ (function () {\r\n        function Atomic(id, invariantId, model, elements, conformation) {\r\n            this.kind = 0 /* Atomic */;\r\n            this._lookup3d = void 0;\r\n            this._bonds = void 0;\r\n            this.id = id;\r\n            this.invariantId = invariantId;\r\n            this.model = model;\r\n            this.elements = elements;\r\n            this.conformation = conformation;\r\n            this.residueIndex = model.atomicHierarchy.residueSegments.segmentMap;\r\n            this.chainIndex = model.atomicHierarchy.chainSegments.segmentMap;\r\n        }\r\n        Atomic.prototype.getChild = function (elements) {\r\n            if (elements.length === this.elements.length)\r\n                return this;\r\n            return new Atomic(this.id, this.invariantId, this.model, elements, this.conformation);\r\n        };\r\n        Atomic.prototype.applyOperator = function (id, operator, dontCompose) {\r\n            if (dontCompose === void 0) { dontCompose = false; }\r\n            var op = dontCompose ? operator : symmetry_operator_1.SymmetryOperator.compose(this.conformation.operator, operator);\r\n            return new Atomic(id, this.invariantId, this.model, this.elements, symmetry_operator_1.SymmetryOperator.createMapping(op, this.model.atomicConformation));\r\n        };\r\n        Object.defineProperty(Atomic.prototype, \"lookup3d\", {\r\n            get: function () {\r\n                if (this._lookup3d)\r\n                    return this._lookup3d;\r\n                var _a = this.model.atomicConformation, x = _a.x, y = _a.y, z = _a.z;\r\n                this._lookup3d = geometry_1.GridLookup3D({ x: x, y: y, z: z, indices: this.elements });\r\n                return this._lookup3d;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        Object.defineProperty(Atomic.prototype, \"bonds\", {\r\n            get: function () {\r\n                if (this._bonds)\r\n                    return this._bonds;\r\n                this._bonds = bonds_1.computeIntraUnitBonds(this);\r\n                return this._bonds;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        return Atomic;\r\n    }());\r\n    Unit.Atomic = Atomic;\r\n    var Coarse = /** @class */ (function () {\r\n        function Coarse(id, invariantId, model, kind, elements, conformation) {\r\n            this._lookup3d = void 0;\r\n            this.kind = kind;\r\n            this.id = id;\r\n            this.invariantId = invariantId;\r\n            this.model = model;\r\n            this.elements = elements;\r\n            this.conformation = conformation;\r\n            this.coarseElements = kind === 1 /* Spheres */ ? model.coarseHierarchy.spheres : model.coarseHierarchy.gaussians;\r\n            this.coarseConformation = (kind === 1 /* Spheres */ ? model.coarseConformation.spheres : model.coarseConformation.gaussians);\r\n        }\r\n        Coarse.prototype.getChild = function (elements) {\r\n            if (elements.length === this.elements.length)\r\n                return this /** lets call this an ugly temporary hack */;\r\n            return createCoarse(this.id, this.invariantId, this.model, this.kind, elements, this.conformation);\r\n        };\r\n        Coarse.prototype.applyOperator = function (id, operator, dontCompose) {\r\n            if (dontCompose === void 0) { dontCompose = false; }\r\n            var op = dontCompose ? operator : symmetry_operator_1.SymmetryOperator.compose(this.conformation.operator, operator);\r\n            return createCoarse(id, this.invariantId, this.model, this.kind, this.elements, symmetry_operator_1.SymmetryOperator.createMapping(op, this.getCoarseElements()));\r\n        };\r\n        Object.defineProperty(Coarse.prototype, \"lookup3d\", {\r\n            get: function () {\r\n                if (this._lookup3d)\r\n                    return this._lookup3d;\r\n                var _a = this.getCoarseElements(), x = _a.x, y = _a.y, z = _a.z;\r\n                // TODO: support sphere radius?\r\n                this._lookup3d = geometry_1.GridLookup3D({ x: x, y: y, z: z, indices: this.elements });\r\n                return this._lookup3d;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        Coarse.prototype.getCoarseElements = function () {\r\n            return this.kind === 1 /* Spheres */ ? this.model.coarseConformation.spheres : this.model.coarseConformation.gaussians;\r\n        };\r\n        return Coarse;\r\n    }());\r\n    function createCoarse(id, invariantId, model, kind, elements, conformation) {\r\n        return new Coarse(id, invariantId, model, kind, elements, conformation) /** lets call this an ugly temporary hack */;\r\n    }\r\n    var Spheres = /** @class */ (function (_super) {\r\n        __extends(Spheres, _super);\r\n        function Spheres() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return Spheres;\r\n    }(Coarse));\r\n    Unit.Spheres = Spheres;\r\n    var Gaussians = /** @class */ (function (_super) {\r\n        __extends(Gaussians, _super);\r\n        function Gaussians() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return Gaussians;\r\n    }(Coarse));\r\n    Unit.Gaussians = Gaussians;\r\n})(Unit || (Unit = {}));\r\nexports.default = Unit;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/unit.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/unit/bonds.js":
+/*!************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/unit/bonds.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./bonds/intra-data */ \"./build/node_modules/mol-model/structure/structure/unit/bonds/intra-data.js\"));\r\n__export(__webpack_require__(/*! ./bonds/intra-compute */ \"./build/node_modules/mol-model/structure/structure/unit/bonds/intra-compute.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/unit/bonds.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/unit/bonds/intra-compute.js":
+/*!**************************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/unit/bonds/intra-compute.js ***!
+  \**************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 MolQL contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar bonds_1 = __webpack_require__(/*! ../../../model/formats/mmcif/bonds */ \"./build/node_modules/mol-model/structure/model/formats/mmcif/bonds.js\");\r\n// H,D,T are all mapped to H\r\nvar __ElementIndex = { 'H': 0, 'h': 0, 'D': 0, 'd': 0, 'T': 0, 't': 0, 'He': 2, 'HE': 2, 'he': 2, 'Li': 3, 'LI': 3, 'li': 3, 'Be': 4, 'BE': 4, 'be': 4, 'B': 5, 'b': 5, 'C': 6, 'c': 6, 'N': 7, 'n': 7, 'O': 8, 'o': 8, 'F': 9, 'f': 9, 'Ne': 10, 'NE': 10, 'ne': 10, 'Na': 11, 'NA': 11, 'na': 11, 'Mg': 12, 'MG': 12, 'mg': 12, 'Al': 13, 'AL': 13, 'al': 13, 'Si': 14, 'SI': 14, 'si': 14, 'P': 15, 'p': 15, 'S': 16, 's': 16, 'Cl': 17, 'CL': 17, 'cl': 17, 'Ar': 18, 'AR': 18, 'ar': 18, 'K': 19, 'k': 19, 'Ca': 20, 'CA': 20, 'ca': 20, 'Sc': 21, 'SC': 21, 'sc': 21, 'Ti': 22, 'TI': 22, 'ti': 22, 'V': 23, 'v': 23, 'Cr': 24, 'CR': 24, 'cr': 24, 'Mn': 25, 'MN': 25, 'mn': 25, 'Fe': 26, 'FE': 26, 'fe': 26, 'Co': 27, 'CO': 27, 'co': 27, 'Ni': 28, 'NI': 28, 'ni': 28, 'Cu': 29, 'CU': 29, 'cu': 29, 'Zn': 30, 'ZN': 30, 'zn': 30, 'Ga': 31, 'GA': 31, 'ga': 31, 'Ge': 32, 'GE': 32, 'ge': 32, 'As': 33, 'AS': 33, 'as': 33, 'Se': 34, 'SE': 34, 'se': 34, 'Br': 35, 'BR': 35, 'br': 35, 'Kr': 36, 'KR': 36, 'kr': 36, 'Rb': 37, 'RB': 37, 'rb': 37, 'Sr': 38, 'SR': 38, 'sr': 38, 'Y': 39, 'y': 39, 'Zr': 40, 'ZR': 40, 'zr': 40, 'Nb': 41, 'NB': 41, 'nb': 41, 'Mo': 42, 'MO': 42, 'mo': 42, 'Tc': 43, 'TC': 43, 'tc': 43, 'Ru': 44, 'RU': 44, 'ru': 44, 'Rh': 45, 'RH': 45, 'rh': 45, 'Pd': 46, 'PD': 46, 'pd': 46, 'Ag': 47, 'AG': 47, 'ag': 47, 'Cd': 48, 'CD': 48, 'cd': 48, 'In': 49, 'IN': 49, 'in': 49, 'Sn': 50, 'SN': 50, 'sn': 50, 'Sb': 51, 'SB': 51, 'sb': 51, 'Te': 52, 'TE': 52, 'te': 52, 'I': 53, 'i': 53, 'Xe': 54, 'XE': 54, 'xe': 54, 'Cs': 55, 'CS': 55, 'cs': 55, 'Ba': 56, 'BA': 56, 'ba': 56, 'La': 57, 'LA': 57, 'la': 57, 'Ce': 58, 'CE': 58, 'ce': 58, 'Pr': 59, 'PR': 59, 'pr': 59, 'Nd': 60, 'ND': 60, 'nd': 60, 'Pm': 61, 'PM': 61, 'pm': 61, 'Sm': 62, 'SM': 62, 'sm': 62, 'Eu': 63, 'EU': 63, 'eu': 63, 'Gd': 64, 'GD': 64, 'gd': 64, 'Tb': 65, 'TB': 65, 'tb': 65, 'Dy': 66, 'DY': 66, 'dy': 66, 'Ho': 67, 'HO': 67, 'ho': 67, 'Er': 68, 'ER': 68, 'er': 68, 'Tm': 69, 'TM': 69, 'tm': 69, 'Yb': 70, 'YB': 70, 'yb': 70, 'Lu': 71, 'LU': 71, 'lu': 71, 'Hf': 72, 'HF': 72, 'hf': 72, 'Ta': 73, 'TA': 73, 'ta': 73, 'W': 74, 'w': 74, 'Re': 75, 'RE': 75, 're': 75, 'Os': 76, 'OS': 76, 'os': 76, 'Ir': 77, 'IR': 77, 'ir': 77, 'Pt': 78, 'PT': 78, 'pt': 78, 'Au': 79, 'AU': 79, 'au': 79, 'Hg': 80, 'HG': 80, 'hg': 80, 'Tl': 81, 'TL': 81, 'tl': 81, 'Pb': 82, 'PB': 82, 'pb': 82, 'Bi': 83, 'BI': 83, 'bi': 83, 'Po': 84, 'PO': 84, 'po': 84, 'At': 85, 'AT': 85, 'at': 85, 'Rn': 86, 'RN': 86, 'rn': 86, 'Fr': 87, 'FR': 87, 'fr': 87, 'Ra': 88, 'RA': 88, 'ra': 88, 'Ac': 89, 'AC': 89, 'ac': 89, 'Th': 90, 'TH': 90, 'th': 90, 'Pa': 91, 'PA': 91, 'pa': 91, 'U': 92, 'u': 92, 'Np': 93, 'NP': 93, 'np': 93, 'Pu': 94, 'PU': 94, 'pu': 94, 'Am': 95, 'AM': 95, 'am': 95, 'Cm': 96, 'CM': 96, 'cm': 96, 'Bk': 97, 'BK': 97, 'bk': 97, 'Cf': 98, 'CF': 98, 'cf': 98, 'Es': 99, 'ES': 99, 'es': 99, 'Fm': 100, 'FM': 100, 'fm': 100, 'Md': 101, 'MD': 101, 'md': 101, 'No': 102, 'NO': 102, 'no': 102, 'Lr': 103, 'LR': 103, 'lr': 103, 'Rf': 104, 'RF': 104, 'rf': 104, 'Db': 105, 'DB': 105, 'db': 105, 'Sg': 106, 'SG': 106, 'sg': 106, 'Bh': 107, 'BH': 107, 'bh': 107, 'Hs': 108, 'HS': 108, 'hs': 108, 'Mt': 109, 'MT': 109, 'mt': 109 };\r\nvar __ElementBondThresholds = { 0: 1.42, 1: 1.42, 3: 2.7, 4: 2.7, 6: 1.75, 7: 1.6, 8: 1.52, 11: 2.7, 12: 2.7, 13: 2.7, 14: 1.9, 15: 1.9, 16: 1.9, 17: 1.8, 19: 2.7, 20: 2.7, 21: 2.7, 22: 2.7, 23: 2.7, 24: 2.7, 25: 2.7, 26: 2.7, 27: 2.7, 28: 2.7, 29: 2.7, 30: 2.7, 31: 2.7, 33: 2.68, 37: 2.7, 38: 2.7, 39: 2.7, 40: 2.7, 41: 2.7, 42: 2.7, 43: 2.7, 44: 2.7, 45: 2.7, 46: 2.7, 47: 2.7, 48: 2.7, 49: 2.7, 50: 2.7, 55: 2.7, 56: 2.7, 57: 2.7, 58: 2.7, 59: 2.7, 60: 2.7, 61: 2.7, 62: 2.7, 63: 2.7, 64: 2.7, 65: 2.7, 66: 2.7, 67: 2.7, 68: 2.7, 69: 2.7, 70: 2.7, 71: 2.7, 72: 2.7, 73: 2.7, 74: 2.7, 75: 2.7, 76: 2.7, 77: 2.7, 78: 2.7, 79: 2.7, 80: 2.7, 81: 2.7, 82: 2.7, 83: 2.7, 87: 2.7, 88: 2.7, 89: 2.7, 90: 2.7, 91: 2.7, 92: 2.7, 93: 2.7, 94: 2.7, 95: 2.7, 96: 2.7, 97: 2.7, 98: 2.7, 99: 2.7, 100: 2.7, 101: 2.7, 102: 2.7, 103: 2.7, 104: 2.7, 105: 2.7, 106: 2.7, 107: 2.7, 108: 2.7, 109: 2.88 };\r\nvar __ElementPairThresholds = { 0: 0.8, 20: 1.31, 27: 1.3, 35: 1.3, 44: 1.05, 54: 1, 60: 1.84, 72: 1.88, 84: 1.75, 85: 1.56, 86: 1.76, 98: 1.6, 99: 1.68, 100: 1.63, 112: 1.55, 113: 1.59, 114: 1.36, 129: 1.45, 144: 1.6, 170: 1.4, 180: 1.55, 202: 2.4, 222: 2.24, 224: 1.91, 225: 1.98, 243: 2.02, 269: 2, 293: 1.9, 480: 2.3, 512: 2.3, 544: 2.3, 612: 2.1, 629: 1.54, 665: 1, 813: 2.6, 854: 2.27, 894: 1.93, 896: 2.1, 937: 2.05, 938: 2.06, 981: 1.62, 1258: 2.68, 1309: 2.33, 1484: 1, 1763: 2.14, 1823: 2.48, 1882: 2.1, 1944: 1.72, 2380: 2.34, 3367: 2.44, 3733: 2.11, 3819: 2.6, 3821: 2.36, 4736: 2.75, 5724: 2.73, 5959: 2.63, 6519: 2.84, 6750: 2.87, 8991: 2.81 };\r\nvar __DefaultBondingRadius = 2.001;\r\nvar MetalsSet = (function () {\r\n    var metals = ['LI', 'NA', 'K', 'RB', 'CS', 'FR', 'BE', 'MG', 'CA', 'SR', 'BA', 'RA', 'AL', 'GA', 'IN', 'SN', 'TL', 'PB', 'BI', 'SC', 'TI', 'V', 'CR', 'MN', 'FE', 'CO', 'NI', 'CU', 'ZN', 'Y', 'ZR', 'NB', 'MO', 'TC', 'RU', 'RH', 'PD', 'AG', 'CD', 'LA', 'HF', 'TA', 'W', 'RE', 'OS', 'IR', 'PT', 'AU', 'HG', 'AC', 'RF', 'DB', 'SG', 'BH', 'HS', 'MT', 'CE', 'PR', 'ND', 'PM', 'SM', 'EU', 'GD', 'TB', 'DY', 'HO', 'ER', 'TM', 'YB', 'LU', 'TH', 'PA', 'U', 'NP', 'PU', 'AM', 'CM', 'BK', 'CF', 'ES', 'FM', 'MD', 'NO', 'LR'];\r\n    var set = new Set();\r\n    for (var _a = 0, metals_1 = metals; _a < metals_1.length; _a++) {\r\n        var m = metals_1[_a];\r\n        set.add(__ElementIndex[m]);\r\n    }\r\n    return set;\r\n})();\r\nfunction pair(a, b) {\r\n    if (a < b)\r\n        return (a + b) * (a + b + 1) / 2 + b;\r\n    else\r\n        return (a + b) * (a + b + 1) / 2 + a;\r\n}\r\nfunction idx(e) {\r\n    var i = __ElementIndex[e];\r\n    if (i === void 0)\r\n        return -1;\r\n    return i;\r\n}\r\nfunction pairThreshold(i, j) {\r\n    if (i < 0 || j < 0)\r\n        return -1;\r\n    var r = __ElementPairThresholds[pair(i, j)];\r\n    if (r === void 0)\r\n        return -1;\r\n    return r;\r\n}\r\nfunction threshold(i) {\r\n    if (i < 0)\r\n        return __DefaultBondingRadius;\r\n    var r = __ElementBondThresholds[i];\r\n    if (r === void 0)\r\n        return __DefaultBondingRadius;\r\n    return r;\r\n}\r\nvar H_ID = __ElementIndex['H'];\r\nfunction isHydrogen(i) {\r\n    return i === H_ID;\r\n}\r\nfunction computePerAtomBonds(atomA, atomB, _order, _flags, atomCount) {\r\n    var bucketSizes = new Int32Array(atomCount);\r\n    var bucketOffsets = new Int32Array(atomCount + 1);\r\n    var bucketFill = new Int32Array(atomCount);\r\n    for (var _a = 0, atomA_1 = atomA; _a < atomA_1.length; _a++) {\r\n        var i = atomA_1[_a];\r\n        bucketSizes[i]++;\r\n    }\r\n    for (var _b = 0, atomB_1 = atomB; _b < atomB_1.length; _b++) {\r\n        var i = atomB_1[_b];\r\n        bucketSizes[i]++;\r\n    }\r\n    var offset = 0;\r\n    for (var i = 0; i < atomCount; i++) {\r\n        bucketOffsets[i] = offset;\r\n        offset += bucketSizes[i];\r\n    }\r\n    bucketOffsets[atomCount] = offset;\r\n    var neighbor = new Int32Array(offset);\r\n    var flags = new Uint16Array(offset);\r\n    var order = new Int8Array(offset);\r\n    for (var i = 0, _i = atomA.length; i < _i; i++) {\r\n        var a = atomA[i], b = atomB[i], f = _flags[i], o = _order[i];\r\n        var oa = bucketOffsets[a] + bucketFill[a];\r\n        var ob = bucketOffsets[b] + bucketFill[b];\r\n        neighbor[oa] = b;\r\n        flags[oa] = f;\r\n        order[oa] = o;\r\n        bucketFill[a]++;\r\n        neighbor[ob] = a;\r\n        flags[ob] = f;\r\n        order[ob] = o;\r\n        bucketFill[b]++;\r\n    }\r\n    return {\r\n        offsets: bucketOffsets,\r\n        neighbor: neighbor,\r\n        flags: flags,\r\n        order: order\r\n    };\r\n}\r\nfunction _computeBonds(unit, params) {\r\n    var MAX_RADIUS = 3;\r\n    var _a = unit.model.atomicConformation, x = _a.x, y = _a.y, z = _a.z;\r\n    var atomCount = unit.elements.length;\r\n    var atoms = unit.elements, residueIndex = unit.residueIndex;\r\n    var _b = unit.model.atomicHierarchy.atoms, type_symbol = _b.type_symbol, label_atom_id = _b.label_atom_id, label_alt_id = _b.label_alt_id;\r\n    var label_comp_id = unit.model.atomicHierarchy.residues.label_comp_id;\r\n    var query3d = unit.lookup3d;\r\n    var structConn = unit.model.sourceData.kind === 'mmCIF' ? bonds_1.StructConn.create(unit.model) : void 0;\r\n    var component = unit.model.sourceData.kind === 'mmCIF' ? bonds_1.ComponentBondInfo.create(unit.model) : void 0;\r\n    var atomA = [];\r\n    var atomB = [];\r\n    var flags = [];\r\n    var order = [];\r\n    var lastResidue = -1;\r\n    var componentMap = void 0;\r\n    for (var _aI = 0; _aI < atomCount; _aI++) {\r\n        var aI = atoms[_aI];\r\n        var raI = residueIndex[aI];\r\n        if (!params.forceCompute && raI !== lastResidue) {\r\n            var resn = label_comp_id.value(raI);\r\n            if (!!component && component.entries.has(resn)) {\r\n                componentMap = component.entries.get(resn).map;\r\n            }\r\n            else {\r\n                componentMap = void 0;\r\n            }\r\n        }\r\n        lastResidue = raI;\r\n        var componentPairs = componentMap ? componentMap.get(label_atom_id.value(aI)) : void 0;\r\n        var aeI = idx(type_symbol.value(aI));\r\n        var _c = query3d.find(x[aI], y[aI], z[aI], MAX_RADIUS), indices = _c.indices, count = _c.count, squaredDistances = _c.squaredDistances;\r\n        var isHa = isHydrogen(aeI);\r\n        var thresholdA = threshold(aeI);\r\n        var altA = label_alt_id.value(aI);\r\n        var metalA = MetalsSet.has(aeI);\r\n        var structConnEntries = params.forceCompute ? void 0 : structConn && structConn.getAtomEntries(aI);\r\n        for (var ni = 0; ni < count; ni++) {\r\n            var _bI = indices[ni];\r\n            var bI = atoms[_bI];\r\n            if (bI <= aI)\r\n                continue;\r\n            var altB = label_alt_id.value(bI);\r\n            if (altA && altB && altA !== altB)\r\n                continue;\r\n            var beI = idx(type_symbol.value(bI));\r\n            var isMetal = metalA || MetalsSet.has(beI);\r\n            var rbI = residueIndex[bI];\r\n            // handle \"component dictionary\" bonds.\r\n            if (raI === rbI && componentPairs) {\r\n                var e = componentPairs.get(label_atom_id.value(bI));\r\n                if (e) {\r\n                    atomA[atomA.length] = _aI;\r\n                    atomB[atomB.length] = _bI;\r\n                    order[order.length] = e.order;\r\n                    var flag = e.flags;\r\n                    if (isMetal) {\r\n                        if (flag | 1 /* Covalent */)\r\n                            flag ^= 1 /* Covalent */;\r\n                        flag |= 2 /* MetallicCoordination */;\r\n                    }\r\n                    flags[flags.length] = flag;\r\n                }\r\n                continue;\r\n            }\r\n            var isHb = isHydrogen(beI);\r\n            if (isHa && isHb)\r\n                continue;\r\n            var dist = Math.sqrt(squaredDistances[ni]);\r\n            if (dist === 0)\r\n                continue;\r\n            // handle \"struct conn\" bonds.\r\n            if (structConnEntries && structConnEntries.length) {\r\n                var added = false;\r\n                for (var _d = 0, structConnEntries_1 = structConnEntries; _d < structConnEntries_1.length; _d++) {\r\n                    var se = structConnEntries_1[_d];\r\n                    for (var _e = 0, _f = se.partners; _e < _f.length; _e++) {\r\n                        var p = _f[_e];\r\n                        if (p.atomIndex === bI) {\r\n                            atomA[atomA.length] = _aI;\r\n                            atomB[atomB.length] = _bI;\r\n                            flags[flags.length] = se.flags;\r\n                            order[order.length] = se.order;\r\n                            added = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    if (added)\r\n                        break;\r\n                }\r\n                if (added)\r\n                    continue;\r\n            }\r\n            if (isHa || isHb) {\r\n                if (dist < params.maxHbondLength) {\r\n                    atomA[atomA.length] = _aI;\r\n                    atomB[atomB.length] = _bI;\r\n                    order[order.length] = 1;\r\n                    flags[flags.length] = 1 /* Covalent */ | 64 /* Computed */; // TODO: check if correct\r\n                }\r\n                continue;\r\n            }\r\n            var thresholdAB = pairThreshold(aeI, beI);\r\n            var pairingThreshold = thresholdAB > 0\r\n                ? thresholdAB\r\n                : beI < 0 ? thresholdA : Math.max(thresholdA, threshold(beI));\r\n            if (dist <= pairingThreshold) {\r\n                atomA[atomA.length] = _aI;\r\n                atomB[atomB.length] = _bI;\r\n                order[order.length] = 1;\r\n                flags[flags.length] = (isMetal ? 2 /* MetallicCoordination */ : 1 /* Covalent */) | 64 /* Computed */;\r\n            }\r\n        }\r\n    }\r\n    var bonds = computePerAtomBonds(atomA, atomB, order, flags, atomCount);\r\n    return {\r\n        offset: bonds.offsets,\r\n        neighbor: bonds.neighbor,\r\n        flags: bonds.flags,\r\n        order: bonds.order,\r\n        count: atomA.length\r\n    };\r\n}\r\nfunction computeIntraUnitBonds(unit, params) {\r\n    return _computeBonds(unit, {\r\n        maxHbondLength: (params && params.maxHbondLength) || 1.15,\r\n        forceCompute: !!(params && params.forceCompute),\r\n    });\r\n}\r\nexports.computeIntraUnitBonds = computeIntraUnitBonds;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/unit/bonds/intra-compute.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/unit/bonds/intra-data.js":
+/*!***********************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/unit/bonds/intra-data.js ***!
+  \***********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar IntraUnitBonds;\r\n(function (IntraUnitBonds) {\r\n    function createEmpty() {\r\n        return { offset: [], neighbor: [], order: [], flags: [], count: 0 };\r\n    }\r\n    IntraUnitBonds.createEmpty = createEmpty;\r\n    function isCovalent(flags) {\r\n        return (flags & 1 /* Covalent */) !== 0;\r\n    }\r\n    IntraUnitBonds.isCovalent = isCovalent;\r\n})(IntraUnitBonds || (IntraUnitBonds = {}));\r\nexports.IntraUnitBonds = IntraUnitBonds;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/unit/bonds/intra-data.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/util/boundary.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/util/boundary.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nfunction computeStructureBoundary(s) {\r\n    var min = [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE];\r\n    var max = [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE];\r\n    var units = s.units;\r\n    var cx = 0, cy = 0, cz = 0;\r\n    var radiusSq = 0;\r\n    var size = 0;\r\n    for (var i = 0, _i = units.length; i < _i; i++) {\r\n        var _a = units[i].conformation, x = _a.x, y = _a.y, z = _a.z;\r\n        var elements = units[i].elements;\r\n        size += elements.length;\r\n        for (var j = 0, _j = elements.length; j < _j; j++) {\r\n            var e = elements[j];\r\n            var xx = x(e), yy = y(e), zz = z(e);\r\n            min[0] = Math.min(xx, min[0]);\r\n            min[1] = Math.min(yy, min[1]);\r\n            min[2] = Math.min(zz, min[2]);\r\n            max[0] = Math.max(xx, max[0]);\r\n            max[1] = Math.max(yy, max[1]);\r\n            max[2] = Math.max(zz, max[2]);\r\n            cx += xx;\r\n            cy += yy;\r\n            cz += zz;\r\n        }\r\n    }\r\n    if (size > 0) {\r\n        cx /= size;\r\n        cy /= size;\r\n        cz /= size;\r\n    }\r\n    for (var i = 0, _i = units.length; i < _i; i++) {\r\n        var _b = units[i].conformation, x = _b.x, y = _b.y, z = _b.z;\r\n        var elements = units[i].elements;\r\n        for (var j = 0, _j = elements.length; j < _j; j++) {\r\n            var e = elements[j];\r\n            var dx = x(e) - cx, dy = y(e) - cy, dz = z(e) - cz;\r\n            var d = dx * dx + dy * dy + dz * dz;\r\n            if (d > radiusSq)\r\n                radiusSq = d;\r\n        }\r\n    }\r\n    return {\r\n        box: { min: linear_algebra_1.Vec3.ofArray(min), max: linear_algebra_1.Vec3.ofArray(max) },\r\n        sphere: { center: linear_algebra_1.Vec3.create(cx, cy, cz), radius: Math.sqrt(radiusSq) }\r\n    };\r\n}\r\nexports.computeStructureBoundary = computeStructureBoundary;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/util/boundary.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/structure/structure/util/lookup3d.js":
+/*!***************************************************************************!*\
+  !*** ./build/node_modules/mol-model/structure/structure/util/lookup3d.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar element_1 = __webpack_require__(/*! ../element */ \"./build/node_modules/mol-model/structure/structure/element.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar boundary_1 = __webpack_require__(/*! ./boundary */ \"./build/node_modules/mol-model/structure/structure/util/boundary.js\");\r\nvar int_1 = __webpack_require__(/*! mol-data/int */ \"./build/node_modules/mol-data/int.js\");\r\nvar StructureLookup3D;\r\n(function (StructureLookup3D) {\r\n    var Impl = /** @class */ (function () {\r\n        function Impl(structure) {\r\n            this.structure = structure;\r\n            this.result = geometry_1.Result.create();\r\n            this.pivot = linear_algebra_1.Vec3.zero();\r\n            var units = structure.units;\r\n            var unitCount = units.length;\r\n            var xs = new Float32Array(unitCount);\r\n            var ys = new Float32Array(unitCount);\r\n            var zs = new Float32Array(unitCount);\r\n            var radius = new Float32Array(unitCount);\r\n            var center = linear_algebra_1.Vec3.zero();\r\n            for (var i = 0; i < unitCount; i++) {\r\n                var unit = units[i];\r\n                var lookup = unit.lookup3d;\r\n                var s = lookup.boundary.sphere;\r\n                linear_algebra_1.Vec3.transformMat4(center, s.center, unit.conformation.operator.matrix);\r\n                xs[i] = center[0];\r\n                ys[i] = center[1];\r\n                zs[i] = center[2];\r\n                radius[i] = s.radius;\r\n            }\r\n            this.unitLookup = geometry_1.GridLookup3D({ x: xs, y: ys, z: zs, radius: radius, indices: int_1.OrderedSet.ofBounds(0, unitCount) });\r\n            this.boundary = boundary_1.computeStructureBoundary(structure);\r\n        }\r\n        Impl.prototype.find = function (x, y, z, radius) {\r\n            geometry_1.Result.reset(this.result);\r\n            var units = this.structure.units;\r\n            var closeUnits = this.unitLookup.find(x, y, z, radius);\r\n            if (closeUnits.count === 0)\r\n                return this.result;\r\n            for (var t = 0, _t = closeUnits.count; t < _t; t++) {\r\n                var unit = units[closeUnits.indices[t]];\r\n                linear_algebra_1.Vec3.set(this.pivot, x, y, z);\r\n                if (!unit.conformation.operator.isIdentity) {\r\n                    linear_algebra_1.Vec3.transformMat4(this.pivot, this.pivot, unit.conformation.operator.inverse);\r\n                }\r\n                var unitLookup = unit.lookup3d;\r\n                var groupResult = unitLookup.find(this.pivot[0], this.pivot[1], this.pivot[2], radius);\r\n                for (var j = 0, _j = groupResult.count; j < _j; j++) {\r\n                    geometry_1.Result.add(this.result, element_1.default.create(unit.id, groupResult.indices[j]), groupResult.squaredDistances[j]);\r\n                }\r\n            }\r\n            return this.result;\r\n        };\r\n        Impl.prototype.check = function (x, y, z, radius) {\r\n            var units = this.structure.units;\r\n            var closeUnits = this.unitLookup.find(x, y, z, radius);\r\n            if (closeUnits.count === 0)\r\n                return false;\r\n            for (var t = 0, _t = closeUnits.count; t < _t; t++) {\r\n                var unit = units[closeUnits.indices[t]];\r\n                linear_algebra_1.Vec3.set(this.pivot, x, y, z);\r\n                if (!unit.conformation.operator.isIdentity) {\r\n                    linear_algebra_1.Vec3.transformMat4(this.pivot, this.pivot, unit.conformation.operator.inverse);\r\n                }\r\n                var groupLookup = unit.lookup3d;\r\n                if (groupLookup.check(this.pivot[0], this.pivot[1], this.pivot[2], radius))\r\n                    return true;\r\n            }\r\n            return false;\r\n        };\r\n        return Impl;\r\n    }());\r\n    function create(s) {\r\n        return new Impl(s);\r\n    }\r\n    StructureLookup3D.create = create;\r\n})(StructureLookup3D || (StructureLookup3D = {}));\r\nexports.StructureLookup3D = StructureLookup3D;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/structure/structure/util/lookup3d.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/volume.js":
+/*!************************************************!*\
+  !*** ./build/node_modules/mol-model/volume.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(/*! ./volume/data */ \"./build/node_modules/mol-model/volume/data.js\"));\r\n__export(__webpack_require__(/*! ./volume/formats/density-server */ \"./build/node_modules/mol-model/volume/formats/density-server.js\"));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/volume.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/volume/data.js":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-model/volume/data.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar VolumeData;\r\n(function (VolumeData) {\r\n    var _scale = linear_algebra_1.Mat4.zero(), _translate = linear_algebra_1.Mat4.zero();\r\n    function getGridToCartesianTransform(volume) {\r\n        var space = volume.data.space;\r\n        var scale = linear_algebra_1.Mat4.fromScaling(_scale, linear_algebra_1.Vec3.div(linear_algebra_1.Vec3.zero(), geometry_1.Box3D.size(volume.fractionalBox), linear_algebra_1.Vec3.ofArray(space.dimensions)));\r\n        var translate = linear_algebra_1.Mat4.fromTranslation(_translate, volume.fractionalBox.min);\r\n        return linear_algebra_1.Mat4.mul3(linear_algebra_1.Mat4.zero(), volume.cell.fromFractional, translate, scale);\r\n    }\r\n    VolumeData.getGridToCartesianTransform = getGridToCartesianTransform;\r\n})(VolumeData || (VolumeData = {}));\r\nexports.VolumeData = VolumeData;\r\nvar VolumeIsoValue;\r\n(function (VolumeIsoValue) {\r\n    function absolute(stats, value) { return { kind: 'absolute', stats: stats, absoluteValue: value }; }\r\n    VolumeIsoValue.absolute = absolute;\r\n    function relative(stats, value) { return { kind: 'relative', stats: stats, relativeValue: value }; }\r\n    VolumeIsoValue.relative = relative;\r\n    function toAbsolute(value) {\r\n        if (value.kind === 'absolute')\r\n            return value;\r\n        var _a = value.stats, mean = _a.mean, sigma = _a.sigma;\r\n        return {\r\n            kind: 'absolute',\r\n            stats: value.stats,\r\n            absoluteValue: value.relativeValue * sigma + mean\r\n        };\r\n    }\r\n    VolumeIsoValue.toAbsolute = toAbsolute;\r\n    function toRelative(value) {\r\n        if (value.kind === 'relative')\r\n            return value;\r\n        var _a = value.stats, mean = _a.mean, sigma = _a.sigma;\r\n        return {\r\n            kind: 'relative',\r\n            stats: value.stats,\r\n            relativeValue: (mean - value.absoluteValue) / sigma\r\n        };\r\n    }\r\n    VolumeIsoValue.toRelative = toRelative;\r\n})(VolumeIsoValue || (VolumeIsoValue = {}));\r\nexports.VolumeIsoValue = VolumeIsoValue;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/volume/data.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-model/volume/formats/density-server.js":
+/*!***********************************************************************!*\
+  !*** ./build/node_modules/mol-model/volume/formats/density-server.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar geometry_1 = __webpack_require__(/*! mol-math/geometry */ \"./build/node_modules/mol-math/geometry.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nfunction parseDensityServerData(source) {\r\n    var _this = this;\r\n    return mol_task_1.Task.create('Parse Volume Data', function (ctx) { return __awaiter(_this, void 0, void 0, function () {\r\n        var info, values, cell, tensorSpace, data, origin, dimensions;\r\n        return __generator(this, function (_a) {\r\n            info = source.volume_data_3d_info, values = source.volume_data_3d;\r\n            cell = geometry_1.SpacegroupCell.create(info.spacegroup_number.value(0), linear_algebra_1.Vec3.ofArray(info.spacegroup_cell_size.value(0)), linear_algebra_1.Vec3.scale(linear_algebra_1.Vec3.zero(), linear_algebra_1.Vec3.ofArray(info.spacegroup_cell_angles.value(0)), Math.PI / 180));\r\n            tensorSpace = linear_algebra_1.Tensor.Space(info.sample_count.value(0), info.axis_order.value(0), Float32Array);\r\n            data = linear_algebra_1.Tensor.create(tensorSpace, linear_algebra_1.Tensor.Data1(values.values.toArray()));\r\n            origin = linear_algebra_1.Vec3.ofArray(info.origin.value(0)), dimensions = linear_algebra_1.Vec3.ofArray(info.dimensions.value(0));\r\n            return [2 /*return*/, {\r\n                    cell: cell,\r\n                    fractionalBox: geometry_1.Box3D.create(origin, linear_algebra_1.Vec3.add(linear_algebra_1.Vec3.zero(), origin, dimensions)),\r\n                    data: data,\r\n                    dataStats: {\r\n                        min: info.min_sampled.value(0),\r\n                        max: info.max_sampled.value(0),\r\n                        mean: info.mean_sampled.value(0),\r\n                        sigma: info.sigma_sampled.value(0)\r\n                    }\r\n                }];\r\n        });\r\n    }); });\r\n}\r\nexports.parseDensityServerData = parseDensityServerData;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-model/volume/formats/density-server.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/execution/observable.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-task/execution/observable.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar task_1 = __webpack_require__(/*! ../task */ \"./build/node_modules/mol-task/task.js\");\r\nvar now_1 = __webpack_require__(/*! ../util/now */ \"./build/node_modules/mol-task/util/now.js\");\r\nvar scheduler_1 = __webpack_require__(/*! ../util/scheduler */ \"./build/node_modules/mol-task/util/scheduler.js\");\r\nfunction ExecuteObservable(task, observer, updateRateMs) {\r\n    if (updateRateMs === void 0) { updateRateMs = 250; }\r\n    var info = ProgressInfo(task, observer, updateRateMs);\r\n    var ctx = new ObservableRuntimeContext(info, info.root);\r\n    return execute(task, ctx);\r\n}\r\nexports.ExecuteObservable = ExecuteObservable;\r\n(function (ExecuteObservable) {\r\n    ExecuteObservable.PRINT_ERRORS_TO_STD_ERR = false;\r\n})(ExecuteObservable || (ExecuteObservable = {}));\r\nexports.ExecuteObservable = ExecuteObservable;\r\nfunction defaultProgress(task) {\r\n    return {\r\n        taskId: task.id,\r\n        taskName: task.name,\r\n        message: '',\r\n        startedTime: 0,\r\n        canAbort: true,\r\n        isIndeterminate: true,\r\n        current: 0,\r\n        max: 0\r\n    };\r\n}\r\nfunction ProgressInfo(task, observer, updateRateMs) {\r\n    var abortToken = { abortRequested: false, treeAborted: false, reason: '' };\r\n    return {\r\n        updateRateMs: updateRateMs,\r\n        lastNotified: now_1.now(),\r\n        observer: observer,\r\n        abortToken: abortToken,\r\n        taskId: task.id,\r\n        root: { progress: defaultProgress(task), children: [] },\r\n        tryAbort: createAbortFunction(abortToken)\r\n    };\r\n}\r\nfunction createAbortFunction(token) {\r\n    return function (reason) {\r\n        token.abortRequested = true;\r\n        token.reason = reason || token.reason;\r\n    };\r\n}\r\nfunction cloneTree(root) {\r\n    return { progress: __assign({}, root.progress), children: root.children.map(cloneTree) };\r\n}\r\nfunction canAbort(root) {\r\n    return root.progress.canAbort && root.children.every(canAbort);\r\n}\r\nfunction snapshotProgress(info) {\r\n    return { root: cloneTree(info.root), canAbort: canAbort(info.root), requestAbort: info.tryAbort };\r\n}\r\nfunction execute(task, ctx) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var ret, e_1;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    ctx.node.progress.startedTime = now_1.now();\r\n                    _a.label = 1;\r\n                case 1:\r\n                    _a.trys.push([1, 3, , 7]);\r\n                    return [4 /*yield*/, task.__f(ctx)];\r\n                case 2:\r\n                    ret = _a.sent();\r\n                    if (ctx.info.abortToken.abortRequested) {\r\n                        abort(ctx.info, ctx.node);\r\n                    }\r\n                    return [2 /*return*/, ret];\r\n                case 3:\r\n                    e_1 = _a.sent();\r\n                    if (!task_1.Task.isAbort(e_1)) return [3 /*break*/, 6];\r\n                    if (!(ctx.node.children.length > 0)) return [3 /*break*/, 5];\r\n                    return [4 /*yield*/, new Promise(function (res) { ctx.onChildrenFinished = res; })];\r\n                case 4:\r\n                    _a.sent();\r\n                    _a.label = 5;\r\n                case 5:\r\n                    if (task.__onAbort)\r\n                        task.__onAbort();\r\n                    _a.label = 6;\r\n                case 6:\r\n                    if (ExecuteObservable.PRINT_ERRORS_TO_STD_ERR)\r\n                        console.error(e_1);\r\n                    throw e_1;\r\n                case 7: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n}\r\nfunction abort(info, node) {\r\n    if (!info.abortToken.treeAborted) {\r\n        info.abortToken.treeAborted = true;\r\n        abortTree(info.root);\r\n        notifyObserver(info, now_1.now());\r\n    }\r\n    throw task_1.Task.Aborted(info.abortToken.reason);\r\n}\r\nfunction abortTree(root) {\r\n    var progress = root.progress;\r\n    progress.isIndeterminate = true;\r\n    progress.canAbort = false;\r\n    progress.message = 'Aborting...';\r\n    for (var _a = 0, _b = root.children; _a < _b.length; _a++) {\r\n        var c = _b[_a];\r\n        abortTree(c);\r\n    }\r\n}\r\nfunction shouldNotify(info, time) {\r\n    return time - info.lastNotified > info.updateRateMs;\r\n}\r\nfunction notifyObserver(info, time) {\r\n    info.lastNotified = time;\r\n    var snapshot = snapshotProgress(info);\r\n    info.observer(snapshot);\r\n}\r\nvar ObservableRuntimeContext = /** @class */ (function () {\r\n    function ObservableRuntimeContext(info, node) {\r\n        this.isSynchronous = false;\r\n        this.isExecuting = true;\r\n        this.lastUpdatedTime = 0;\r\n        // used for waiting for cancelled computation trees\r\n        this.onChildrenFinished = void 0;\r\n        this.node = node;\r\n        this.info = info;\r\n    }\r\n    ObservableRuntimeContext.prototype.checkAborted = function () {\r\n        if (this.info.abortToken.abortRequested) {\r\n            abort(this.info, this.node);\r\n        }\r\n    };\r\n    Object.defineProperty(ObservableRuntimeContext.prototype, \"shouldUpdate\", {\r\n        get: function () {\r\n            this.checkAborted();\r\n            return now_1.now() - this.lastUpdatedTime > this.info.updateRateMs;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    ObservableRuntimeContext.prototype.updateProgress = function (update) {\r\n        this.checkAborted();\r\n        if (!update)\r\n            return;\r\n        var progress = this.node.progress;\r\n        if (typeof update === 'string') {\r\n            progress.message = update;\r\n        }\r\n        else {\r\n            if (typeof update.canAbort !== 'undefined')\r\n                progress.canAbort = update.canAbort;\r\n            if (typeof update.message !== 'undefined')\r\n                progress.message = update.message;\r\n            if (typeof update.current !== 'undefined')\r\n                progress.current = update.current;\r\n            if (typeof update.max !== 'undefined')\r\n                progress.max = update.max;\r\n            progress.isIndeterminate = typeof progress.current === 'undefined' || typeof progress.max === 'undefined';\r\n            if (typeof update.isIndeterminate !== 'undefined')\r\n                progress.isIndeterminate = update.isIndeterminate;\r\n        }\r\n    };\r\n    ObservableRuntimeContext.prototype.update = function (progress, dontNotify) {\r\n        // The progress tracking and observer notification are separated\r\n        // because the computation can have a tree structure.\r\n        // All nodes of the tree should be regualarly updated at the specified frequency,\r\n        // however, the notification should only be invoked once per the whole tree.\r\n        this.lastUpdatedTime = now_1.now();\r\n        this.updateProgress(progress);\r\n        if (!!dontNotify || !shouldNotify(this.info, this.lastUpdatedTime))\r\n            return;\r\n        notifyObserver(this.info, this.lastUpdatedTime);\r\n        // The computation could have been aborted during the notifycation phase.\r\n        this.checkAborted();\r\n        return scheduler_1.Scheduler.immediatePromise();\r\n    };\r\n    ObservableRuntimeContext.prototype.runChild = function (task, progress) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var node, children, ctx, e_2, idx, i, _i;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        this.updateProgress(progress);\r\n                        node = { progress: defaultProgress(task), children: [] };\r\n                        children = this.node.children;\r\n                        children.push(node);\r\n                        ctx = new ObservableRuntimeContext(this.info, node);\r\n                        _a.label = 1;\r\n                    case 1:\r\n                        _a.trys.push([1, 3, 4, 5]);\r\n                        return [4 /*yield*/, execute(task, ctx)];\r\n                    case 2: return [2 /*return*/, _a.sent()];\r\n                    case 3:\r\n                        e_2 = _a.sent();\r\n                        if (task_1.Task.isAbort(e_2)) {\r\n                            // need to catch the error here because otherwise\r\n                            // promises for running child tasks in a tree-like computation\r\n                            // will get orphaned and cause \"uncaught error in Promise\".\r\n                            return [2 /*return*/, void 0];\r\n                        }\r\n                        throw e_2;\r\n                    case 4:\r\n                        idx = children.indexOf(node);\r\n                        if (idx >= 0) {\r\n                            for (i = idx, _i = children.length - 1; i < _i; i++) {\r\n                                children[i] = children[i + 1];\r\n                            }\r\n                            children.pop();\r\n                        }\r\n                        if (children.length === 0 && this.onChildrenFinished)\r\n                            this.onChildrenFinished();\r\n                        return [7 /*endfinally*/];\r\n                    case 5: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    return ObservableRuntimeContext;\r\n}());\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/execution/observable.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/execution/progress.js":
+/*!***********************************************************!*\
+  !*** ./build/node_modules/mol-task/execution/progress.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Progress;\r\n(function (Progress) {\r\n    function _format(root, prefix) {\r\n        if (prefix === void 0) { prefix = ''; }\r\n        var p = root.progress;\r\n        if (!root.children.length) {\r\n            if (p.isIndeterminate)\r\n                return \"\" + prefix + p.taskName + \": \" + p.message;\r\n            return \"\" + prefix + p.taskName + \": [\" + p.current + \"/\" + p.max + \"] \" + p.message;\r\n        }\r\n        var newPrefix = prefix + '  |_ ';\r\n        var subTree = root.children.map(function (c) { return _format(c, newPrefix); });\r\n        if (p.isIndeterminate)\r\n            return \"\" + prefix + p.taskName + \": \" + p.message + \"\\n\" + subTree.join('\\n');\r\n        return \"\" + prefix + p.taskName + \": [\" + p.current + \"/\" + p.max + \"] \" + p.message + \"\\n\" + subTree.join('\\n');\r\n    }\r\n    function format(p) { return _format(p.root); }\r\n    Progress.format = format;\r\n})(Progress || (Progress = {}));\r\nexports.Progress = Progress;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/execution/progress.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/execution/synchronous.js":
+/*!**************************************************************!*\
+  !*** ./build/node_modules/mol-task/execution/synchronous.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SynchronousRuntimeContext = /** @class */ (function () {\r\n    function SynchronousRuntimeContext() {\r\n        this.shouldUpdate = false;\r\n        this.isSynchronous = true;\r\n    }\r\n    SynchronousRuntimeContext.prototype.update = function (progress, dontNotify) { };\r\n    SynchronousRuntimeContext.prototype.runChild = function (task, progress) { return ExecuteSynchronous(task); };\r\n    return SynchronousRuntimeContext;\r\n}());\r\nvar SyncRuntimeInstance = new SynchronousRuntimeContext();\r\nfunction ExecuteSynchronous(task) {\r\n    return task.__f(SyncRuntimeInstance);\r\n}\r\nexports.ExecuteSynchronous = ExecuteSynchronous;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/execution/synchronous.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/index.js":
+/*!**********************************************!*\
+  !*** ./build/node_modules/mol-task/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar task_1 = __webpack_require__(/*! ./task */ \"./build/node_modules/mol-task/task.js\");\r\nexports.Task = task_1.Task;\r\nvar synchronous_1 = __webpack_require__(/*! ./execution/synchronous */ \"./build/node_modules/mol-task/execution/synchronous.js\");\r\nvar observable_1 = __webpack_require__(/*! ./execution/observable */ \"./build/node_modules/mol-task/execution/observable.js\");\r\nvar progress_1 = __webpack_require__(/*! ./execution/progress */ \"./build/node_modules/mol-task/execution/progress.js\");\r\nexports.Progress = progress_1.Progress;\r\nvar now_1 = __webpack_require__(/*! ./util/now */ \"./build/node_modules/mol-task/util/now.js\");\r\nexports.now = now_1.now;\r\nvar scheduler_1 = __webpack_require__(/*! ./util/scheduler */ \"./build/node_modules/mol-task/util/scheduler.js\");\r\nexports.Scheduler = scheduler_1.Scheduler;\r\nvar multistep_1 = __webpack_require__(/*! ./util/multistep */ \"./build/node_modules/mol-task/util/multistep.js\");\r\nexports.MultistepTask = multistep_1.MultistepTask;\r\nvar chunked_1 = __webpack_require__(/*! ./util/chunked */ \"./build/node_modules/mol-task/util/chunked.js\");\r\nexports.chunkedSubtask = chunked_1.chunkedSubtask;\r\nfunction Run(task, observer, updateRateMs) {\r\n    if (observer)\r\n        return observable_1.ExecuteObservable(task, observer, updateRateMs || 250);\r\n    return synchronous_1.ExecuteSynchronous(task);\r\n}\r\nexports.Run = Run;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/task.js":
+/*!*********************************************!*\
+  !*** ./build/node_modules/mol-task/task.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Task;\r\n(function (Task) {\r\n    function isAbort(e) { return !!e && !!e.isAborted; }\r\n    Task.isAbort = isAbort;\r\n    function Aborted(reason) { return { isAborted: true, reason: reason }; }\r\n    Task.Aborted = Aborted;\r\n    function create(name, f, onAbort) {\r\n        return { id: nextId(), name: name, __f: f, __onAbort: onAbort };\r\n    }\r\n    Task.create = create;\r\n    function constant(name, value) {\r\n        var _this = this;\r\n        return create(name, function (ctx) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\r\n            return [2 /*return*/, value];\r\n        }); }); });\r\n    }\r\n    Task.constant = constant;\r\n    function fail(name, reason) {\r\n        var _this = this;\r\n        return create(name, function (ctx) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\r\n            throw new Error(reason);\r\n        }); }); });\r\n    }\r\n    Task.fail = fail;\r\n    var _id = 0;\r\n    function nextId() {\r\n        var ret = _id;\r\n        _id = (_id + 1) % 0x3fffffff;\r\n        return ret;\r\n    }\r\n})(Task || (Task = {}));\r\nexports.Task = Task;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/task.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/util/chunked.js":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-task/util/chunked.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar now_1 = __webpack_require__(/*! ./now */ \"./build/node_modules/mol-task/util/now.js\");\r\nfunction chunkedSubtask(ctx, initialChunk, state, f, update) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var chunkSize, globalProcessed, globalTime, start, lastSize, currentTime, delta;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    chunkSize = Math.max(initialChunk, 0);\r\n                    globalProcessed = 0, globalTime = 0;\r\n                    if (ctx.isSynchronous) {\r\n                        f(Number.MAX_SAFE_INTEGER, state);\r\n                        return [2 /*return*/, state];\r\n                    }\r\n                    start = now_1.now();\r\n                    lastSize = 0, currentTime = 0;\r\n                    _a.label = 1;\r\n                case 1:\r\n                    if (!((lastSize = f(chunkSize, state)) > 0)) return [3 /*break*/, 4];\r\n                    globalProcessed += lastSize;\r\n                    delta = now_1.now() - start;\r\n                    currentTime += delta;\r\n                    globalTime += delta;\r\n                    if (!ctx.shouldUpdate) return [3 /*break*/, 3];\r\n                    return [4 /*yield*/, update(ctx, state, globalProcessed)];\r\n                case 2:\r\n                    _a.sent();\r\n                    chunkSize = Math.round(currentTime * globalProcessed / globalTime) + 1;\r\n                    start = now_1.now();\r\n                    currentTime = 0;\r\n                    _a.label = 3;\r\n                case 3: return [3 /*break*/, 1];\r\n                case 4:\r\n                    if (!ctx.shouldUpdate) return [3 /*break*/, 6];\r\n                    return [4 /*yield*/, update(ctx, state, globalProcessed)];\r\n                case 5:\r\n                    _a.sent();\r\n                    _a.label = 6;\r\n                case 6: return [2 /*return*/, state];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.chunkedSubtask = chunkedSubtask;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/util/chunked.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/util/multistep.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-task/util/multistep.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar task_1 = __webpack_require__(/*! ../task */ \"./build/node_modules/mol-task/task.js\");\r\nfunction MultistepTask(name, steps, f, onAbort) {\r\n    var _this = this;\r\n    return function (params) { return task_1.Task.create(name, function (ctx) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\r\n        return [2 /*return*/, f(params, function (n) { return ctx.update({ message: \"\" + steps[n], current: n + 1, max: steps.length }); }, ctx)];\r\n    }); }); }, onAbort); };\r\n}\r\nexports.MultistepTask = MultistepTask;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/util/multistep.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/util/now.js":
+/*!*************************************************!*\
+  !*** ./build/node_modules/mol-task/util/now.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/* WEBPACK VAR INJECTION */(function(process) {\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar now = (function () {\r\n    if (typeof window !== 'undefined' && window.performance) {\r\n        var perf_1 = window.performance;\r\n        return function () { return perf_1.now(); };\r\n    }\r\n    else if (typeof process !== 'undefined' && process.hrtime !== 'undefined') {\r\n        return function () {\r\n            var t = process.hrtime();\r\n            return t[0] * 1000 + t[1] / 1000000;\r\n        };\r\n    }\r\n    else if (Date.now) {\r\n        return function () { return Date.now(); };\r\n    }\r\n    else {\r\n        return function () { return +new Date(); };\r\n    }\r\n}());\r\nexports.now = now;\r\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/node-libs-browser/node_modules/process/browser.js */ \"./node_modules/node-libs-browser/node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/util/now.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-task/util/scheduler.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-task/util/scheduler.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/* WEBPACK VAR INJECTION */(function(process, setImmediate, clearImmediate) {\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction createImmediateActions() {\r\n    var global = (function () {\r\n        var _window = typeof window !== 'undefined' && window;\r\n        var _self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && self;\r\n        var _global = typeof global !== 'undefined' && global;\r\n        return _window || _global || _self;\r\n    })();\r\n    var tasksByHandle = {};\r\n    var doc = typeof document !== 'undefined' ? document : void 0;\r\n    var nextHandle = 1; // Spec says greater than zero\r\n    var registerImmediate;\r\n    function setImmediate(callback) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        // Callback can either be a function or a string\r\n        if (typeof callback !== 'function') {\r\n            callback = new Function('' + callback);\r\n        }\r\n        // Store and register the task\r\n        var task = { callback: callback, args: args };\r\n        tasksByHandle[nextHandle] = task;\r\n        registerImmediate(nextHandle);\r\n        return nextHandle++;\r\n    }\r\n    function clearImmediate(handle) {\r\n        delete tasksByHandle[handle];\r\n    }\r\n    function run(task) {\r\n        var callback = task.callback;\r\n        var args = task.args;\r\n        switch (args.length) {\r\n            case 0:\r\n                callback();\r\n                break;\r\n            case 1:\r\n                callback(args[0]);\r\n                break;\r\n            case 2:\r\n                callback(args[0], args[1]);\r\n                break;\r\n            case 3:\r\n                callback(args[0], args[1], args[2]);\r\n                break;\r\n            default:\r\n                callback.apply(undefined, args);\r\n                break;\r\n        }\r\n    }\r\n    function runIfPresent(handle) {\r\n        var task = tasksByHandle[handle];\r\n        clearImmediate(handle);\r\n        run(task);\r\n    }\r\n    function installNextTickImplementation() {\r\n        registerImmediate = function (handle) {\r\n            process.nextTick(function () { runIfPresent(handle); });\r\n        };\r\n    }\r\n    function canUsePostMessage() {\r\n        if (global && global.postMessage && !global.importScripts) {\r\n            var postMessageIsAsynchronous_1 = true;\r\n            var oldOnMessage = global.onmessage;\r\n            global.onmessage = function () {\r\n                postMessageIsAsynchronous_1 = false;\r\n            };\r\n            global.postMessage('', '*');\r\n            global.onmessage = oldOnMessage;\r\n            return postMessageIsAsynchronous_1;\r\n        }\r\n    }\r\n    function installPostMessageImplementation() {\r\n        // Installs an event handler on `global` for the `message` event: see\r\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\r\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\r\n        var messagePrefix = 'setImmediate$' + Math.random() + '$';\r\n        var onGlobalMessage = function (event) {\r\n            if (event.source === global &&\r\n                typeof event.data === 'string' &&\r\n                event.data.indexOf(messagePrefix) === 0) {\r\n                runIfPresent(+event.data.slice(messagePrefix.length));\r\n            }\r\n        };\r\n        if (window.addEventListener) {\r\n            window.addEventListener('message', onGlobalMessage, false);\r\n        }\r\n        else {\r\n            window.attachEvent('onmessage', onGlobalMessage);\r\n        }\r\n        registerImmediate = function (handle) {\r\n            window.postMessage(messagePrefix + handle, '*');\r\n        };\r\n    }\r\n    function installMessageChannelImplementation() {\r\n        var channel = new MessageChannel();\r\n        channel.port1.onmessage = function (event) {\r\n            var handle = event.data;\r\n            runIfPresent(handle);\r\n        };\r\n        registerImmediate = function (handle) {\r\n            channel.port2.postMessage(handle);\r\n        };\r\n    }\r\n    function installReadyStateChangeImplementation() {\r\n        var html = doc.documentElement;\r\n        registerImmediate = function (handle) {\r\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\r\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\r\n            var script = doc.createElement('script');\r\n            script.onreadystatechange = function () {\r\n                runIfPresent(handle);\r\n                script.onreadystatechange = null;\r\n                html.removeChild(script);\r\n                script = null;\r\n            };\r\n            html.appendChild(script);\r\n        };\r\n    }\r\n    function installSetTimeoutImplementation() {\r\n        registerImmediate = function (handle) {\r\n            setTimeout(runIfPresent, 0, handle);\r\n        };\r\n    }\r\n    // Don't get fooled by e.g. browserify environments.\r\n    if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {\r\n        // For Node.js before 0.9\r\n        installNextTickImplementation();\r\n    }\r\n    else if (canUsePostMessage()) {\r\n        // For non-IE10 modern browsers\r\n        installPostMessageImplementation();\r\n    }\r\n    else if (typeof MessageChannel !== 'undefined') {\r\n        // For web workers, where supported\r\n        installMessageChannelImplementation();\r\n    }\r\n    else if (doc && 'onreadystatechange' in doc.createElement('script')) {\r\n        // For IE 6–8\r\n        installReadyStateChangeImplementation();\r\n    }\r\n    else {\r\n        // For older browsers\r\n        installSetTimeoutImplementation();\r\n    }\r\n    return {\r\n        setImmediate: setImmediate,\r\n        clearImmediate: clearImmediate\r\n    };\r\n}\r\nvar immediateActions = (function () {\r\n    if (typeof setImmediate !== 'undefined') {\r\n        if (typeof window !== 'undefined') {\r\n            return {\r\n                setImmediate: function (handler) {\r\n                    var args = [];\r\n                    for (var _i = 1; _i < arguments.length; _i++) {\r\n                        args[_i - 1] = arguments[_i];\r\n                    }\r\n                    return window.setImmediate.apply(window, [handler].concat(args));\r\n                },\r\n                clearImmediate: function (handle) { return window.clearImmediate(handle); }\r\n            };\r\n        }\r\n        else {\r\n            return { setImmediate: setImmediate, clearImmediate: clearImmediate };\r\n        }\r\n    }\r\n    return createImmediateActions();\r\n}());\r\nfunction resolveImmediate(res) {\r\n    immediateActions.setImmediate(res);\r\n}\r\nvar Scheduler = {\r\n    setImmediate: immediateActions.setImmediate,\r\n    clearImmediate: immediateActions.clearImmediate,\r\n    immediatePromise: function () { return new Promise(resolveImmediate); },\r\n    delay: function (timeout, value) {\r\n        if (value === void 0) { value = void 0; }\r\n        return new Promise(function (r) { return setTimeout(r, timeout, value); });\r\n    }\r\n};\r\nexports.Scheduler = Scheduler;\r\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/node-libs-browser/node_modules/process/browser.js */ \"./node_modules/node-libs-browser/node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/timers-browserify/main.js */ \"./node_modules/timers-browserify/main.js\").setImmediate, __webpack_require__(/*! ./../../../../node_modules/timers-browserify/main.js */ \"./node_modules/timers-browserify/main.js\").clearImmediate))\n\n//# sourceURL=webpack:///./build/node_modules/mol-task/util/scheduler.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/bit-flags.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-util/bit-flags.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BitFlags;\r\n(function (BitFlags) {\r\n    function create(flags) { return flags; }\r\n    BitFlags.create = create;\r\n    function has(flags, flag) { return (flags & flag) !== 0; }\r\n    BitFlags.has = has;\r\n    // toCheck must be non-zero\r\n    function hasAll(flags, toCheck) { return !!toCheck && (flags & toCheck) === toCheck; }\r\n    BitFlags.hasAll = hasAll;\r\n})(BitFlags || (BitFlags = {}));\r\nexports.default = BitFlags;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/bit-flags.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/color/color.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-util/color/color.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Color;\r\n(function (Color) {\r\n    function toRgb(hexColor) {\r\n        return [hexColor >> 16 & 255, hexColor >> 8 & 255, hexColor & 255];\r\n    }\r\n    Color.toRgb = toRgb;\r\n    function toRgbNormalized(hexColor) {\r\n        return [(hexColor >> 16 & 255) / 255, (hexColor >> 8 & 255) / 255, (hexColor & 255) / 255];\r\n    }\r\n    Color.toRgbNormalized = toRgbNormalized;\r\n    function fromRgb(r, g, b) {\r\n        return (r << 16) | (g << 8) | b;\r\n    }\r\n    Color.fromRgb = fromRgb;\r\n    /** Copies hex color to rgb array */\r\n    function toArray(hexColor, array, offset) {\r\n        array[offset] = (hexColor >> 16 & 255);\r\n        array[offset + 1] = (hexColor >> 8 & 255);\r\n        array[offset + 2] = (hexColor & 255);\r\n    }\r\n    Color.toArray = toArray;\r\n    /** Copies normalized (0 to 1) hex color to rgb array */\r\n    function toArrayNormalized(hexColor, array, offset) {\r\n        array[offset] = (hexColor >> 16 & 255) / 255;\r\n        array[offset + 1] = (hexColor >> 8 & 255) / 255;\r\n        array[offset + 2] = (hexColor & 255) / 255;\r\n    }\r\n    Color.toArrayNormalized = toArrayNormalized;\r\n    /** Linear interpolation between two colors */\r\n    function interpolate(c1, c2, t) {\r\n        var r1 = c1 >> 16 & 255;\r\n        var g1 = c1 >> 8 & 255;\r\n        var b1 = c1 & 255;\r\n        var r2 = c2 >> 16 & 255;\r\n        var g2 = c2 >> 8 & 255;\r\n        var b2 = c2 & 255;\r\n        var r = r1 + (r2 - r1) * t;\r\n        var g = g1 + (g2 - g1) * t;\r\n        var b = b1 + (b2 - b1) * t;\r\n        return (r << 16) | (g << 8) | b;\r\n    }\r\n    Color.interpolate = interpolate;\r\n})(Color || (Color = {}));\r\nexports.default = Color;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/color/color.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/color/index.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-util/color/index.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar color_1 = __webpack_require__(/*! ./color */ \"./build/node_modules/mol-util/color/color.js\");\r\nexports.Color = color_1.default;\r\nvar scale_1 = __webpack_require__(/*! ./scale */ \"./build/node_modules/mol-util/color/scale.js\");\r\nexports.ColorScale = scale_1.ColorScale;\r\nvar tables_1 = __webpack_require__(/*! ./tables */ \"./build/node_modules/mol-util/color/tables.js\");\r\nexports.ColorBrewer = tables_1.ColorBrewer;\r\nexports.ColorNames = tables_1.ColorNames;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/color/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/color/scale.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-util/color/scale.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar color_1 = __webpack_require__(/*! ./color */ \"./build/node_modules/mol-util/color/color.js\");\r\nvar tables_1 = __webpack_require__(/*! ./tables */ \"./build/node_modules/mol-util/color/tables.js\");\r\nexports.DefaultColorScale = {\r\n    domain: [0, 1],\r\n    reverse: false,\r\n    colors: tables_1.ColorBrewer.RdYlBu\r\n};\r\nvar ColorScale;\r\n(function (ColorScale) {\r\n    function create(props) {\r\n        var _a = __assign({}, exports.DefaultColorScale, props), domain = _a.domain, reverse = _a.reverse, colors = _a.colors;\r\n        var _b = reverse ? domain.slice().reverse() : domain, min = _b[0], max = _b[1];\r\n        var count1 = colors.length - 1;\r\n        var diff = (max - min) || 1;\r\n        function color(value) {\r\n            var t = ((value - min) / diff) * count1;\r\n            var tf = Math.floor(t);\r\n            var c1 = colors[tf];\r\n            var c2 = colors[Math.ceil(t)];\r\n            return color_1.default.interpolate(c1, c2, t - tf);\r\n        }\r\n        return {\r\n            color: color,\r\n            colorToArray: function (value, array, offset) {\r\n                color_1.default.toArray(color(value), array, offset);\r\n            },\r\n            normalizedColorToArray: function (value, array, offset) {\r\n                color_1.default.toArrayNormalized(color(value), array, offset);\r\n            },\r\n        };\r\n    }\r\n    ColorScale.create = create;\r\n})(ColorScale = exports.ColorScale || (exports.ColorScale = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/color/scale.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/color/tables.js":
+/*!*****************************************************!*\
+  !*** ./build/node_modules/mol-util/color/tables.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Brewer Color Lists\r\n *\r\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University.\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n */\r\nexports.ColorBrewer = {\r\n    // sequential\r\n    OrRd: [0xfff7ec, 0xfee8c8, 0xfdd49e, 0xfdbb84, 0xfc8d59, 0xef6548, 0xd7301f, 0xb30000, 0x7f0000],\r\n    PuBu: [0xfff7fb, 0xece7f2, 0xd0d1e6, 0xa6bddb, 0x74a9cf, 0x3690c0, 0x0570b0, 0x045a8d, 0x023858],\r\n    BuPu: [0xf7fcfd, 0xe0ecf4, 0xbfd3e6, 0x9ebcda, 0x8c96c6, 0x8c6bb1, 0x88419d, 0x810f7c, 0x4d004b],\r\n    Oranges: [0xfff5eb, 0xfee6ce, 0xfdd0a2, 0xfdae6b, 0xfd8d3c, 0xf16913, 0xd94801, 0xa63603, 0x7f2704],\r\n    BuGn: [0xf7fcfd, 0xe5f5f9, 0xccece6, 0x99d8c9, 0x66c2a4, 0x41ae76, 0x238b45, 0x006d2c, 0x00441b],\r\n    YlOrBr: [0xffffe5, 0xfff7bc, 0xfee391, 0xfec44f, 0xfe9929, 0xec7014, 0xcc4c02, 0x993404, 0x662506],\r\n    YlGn: [0xffffe5, 0xf7fcb9, 0xd9f0a3, 0xaddd8e, 0x78c679, 0x41ab5d, 0x238443, 0x006837, 0x004529],\r\n    Reds: [0xfff5f0, 0xfee0d2, 0xfcbba1, 0xfc9272, 0xfb6a4a, 0xef3b2c, 0xcb181d, 0xa50f15, 0x67000d],\r\n    RdPu: [0xfff7f3, 0xfde0dd, 0xfcc5c0, 0xfa9fb5, 0xf768a1, 0xdd3497, 0xae017e, 0x7a0177, 0x49006a],\r\n    Greens: [0xf7fcf5, 0xe5f5e0, 0xc7e9c0, 0xa1d99b, 0x74c476, 0x41ab5d, 0x238b45, 0x006d2c, 0x00441b],\r\n    YlGnBu: [0xffffd9, 0xedf8b1, 0xc7e9b4, 0x7fcdbb, 0x41b6c4, 0x1d91c0, 0x225ea8, 0x253494, 0x081d58],\r\n    Purples: [0xfcfbfd, 0xefedf5, 0xdadaeb, 0xbcbddc, 0x9e9ac8, 0x807dba, 0x6a51a3, 0x54278f, 0x3f007d],\r\n    GnBu: [0xf7fcf0, 0xe0f3db, 0xccebc5, 0xa8ddb5, 0x7bccc4, 0x4eb3d3, 0x2b8cbe, 0x0868ac, 0x084081],\r\n    Greys: [0xffffff, 0xf0f0f0, 0xd9d9d9, 0xbdbdbd, 0x969696, 0x737373, 0x525252, 0x252525, 0x000000],\r\n    YlOrRd: [0xffffcc, 0xffeda0, 0xfed976, 0xfeb24c, 0xfd8d3c, 0xfc4e2a, 0xe31a1c, 0xbd0026, 0x800026],\r\n    PuRd: [0xf7f4f9, 0xe7e1ef, 0xd4b9da, 0xc994c7, 0xdf65b0, 0xe7298a, 0xce1256, 0x980043, 0x67001f],\r\n    Blues: [0xf7fbff, 0xdeebf7, 0xc6dbef, 0x9ecae1, 0x6baed6, 0x4292c6, 0x2171b5, 0x08519c, 0x08306b],\r\n    PuBuGn: [0xfff7fb, 0xece2f0, 0xd0d1e6, 0xa6bddb, 0x67a9cf, 0x3690c0, 0x02818a, 0x016c59, 0x014636],\r\n    Viridis: [0x440154, 0x482777, 0x3f4a8a, 0x31678e, 0x26838f, 0x1f9d8a, 0x6cce5a, 0xb6de2b, 0xfee825],\r\n    // diverging\r\n    Spectral: [0x9e0142, 0xd53e4f, 0xf46d43, 0xfdae61, 0xfee08b, 0xffffbf, 0xe6f598, 0xabdda4, 0x66c2a5, 0x3288bd, 0x5e4fa2],\r\n    RdYlGn: [0xa50026, 0xd73027, 0xf46d43, 0xfdae61, 0xfee08b, 0xffffbf, 0xd9ef8b, 0xa6d96a, 0x66bd63, 0x1a9850, 0x006837],\r\n    RdBu: [0x67001f, 0xb2182b, 0xd6604d, 0xf4a582, 0xfddbc7, 0xf7f7f7, 0xd1e5f0, 0x92c5de, 0x4393c3, 0x2166ac, 0x053061],\r\n    PiYG: [0x8e0152, 0xc51b7d, 0xde77ae, 0xf1b6da, 0xfde0ef, 0xf7f7f7, 0xe6f5d0, 0xb8e186, 0x7fbc41, 0x4d9221, 0x276419],\r\n    PRGn: [0x40004b, 0x762a83, 0x9970ab, 0xc2a5cf, 0xe7d4e8, 0xf7f7f7, 0xd9f0d3, 0xa6dba0, 0x5aae61, 0x1b7837, 0x00441b],\r\n    RdYlBu: [0xa50026, 0xd73027, 0xf46d43, 0xfdae61, 0xfee090, 0xffffbf, 0xe0f3f8, 0xabd9e9, 0x74add1, 0x4575b4, 0x313695],\r\n    BrBG: [0x543005, 0x8c510a, 0xbf812d, 0xdfc27d, 0xf6e8c3, 0xf5f5f5, 0xc7eae5, 0x80cdc1, 0x35978f, 0x01665e, 0x003c30],\r\n    RdGy: [0x67001f, 0xb2182b, 0xd6604d, 0xf4a582, 0xfddbc7, 0xffffff, 0xe0e0e0, 0xbababa, 0x878787, 0x4d4d4d, 0x1a1a1a],\r\n    PuOr: [0x7f3b08, 0xb35806, 0xe08214, 0xfdb863, 0xfee0b6, 0xf7f7f7, 0xd8daeb, 0xb2abd2, 0x8073ac, 0x542788, 0x2d004b],\r\n    // qualitative\r\n    Set2: [0x66c2a5, 0xfc8d62, 0x8da0cb, 0xe78ac3, 0xa6d854, 0xffd92f, 0xe5c494, 0xb3b3b3],\r\n    Accent: [0x7fc97f, 0xbeaed4, 0xfdc086, 0xffff99, 0x386cb0, 0xf0027f, 0xbf5b17, 0x666666],\r\n    Set1: [0xe41a1c, 0x377eb8, 0x4daf4a, 0x984ea3, 0xff7f00, 0xffff33, 0xa65628, 0xf781bf, 0x999999],\r\n    Set3: [0x8dd3c7, 0xffffb3, 0xbebada, 0xfb8072, 0x80b1d3, 0xfdb462, 0xb3de69, 0xfccde5, 0xd9d9d9, 0xbc80bd, 0xccebc5, 0xffed6f],\r\n    Dark2: [0x1b9e77, 0xd95f02, 0x7570b3, 0xe7298a, 0x66a61e, 0xe6ab02, 0xa6761d, 0x666666],\r\n    Paired: [0xa6cee3, 0x1f78b4, 0xb2df8a, 0x33a02c, 0xfb9a99, 0xe31a1c, 0xfdbf6f, 0xff7f00, 0xcab2d6, 0x6a3d9a, 0xffff99, 0xb15928],\r\n    Pastel2: [0xb3e2cd, 0xfdcdac, 0xcbd5e8, 0xf4cae4, 0xe6f5c9, 0xfff2ae, 0xf1e2cc, 0xcccccc],\r\n    Pastel1: [0xfbb4ae, 0xb3cde3, 0xccebc5, 0xdecbe4, 0xfed9a6, 0xffffcc, 0xe5d8bd, 0xfddaec, 0xf2f2f2]\r\n};\r\n/** X11 color names http://www.w3.org/TR/css3-color/#svg-color */\r\nexports.ColorNames = {\r\n    aliceblue: 0xf0f8ff,\r\n    antiquewhite: 0xfaebd7,\r\n    aqua: 0x00ffff,\r\n    aquamarine: 0x7fffd4,\r\n    azure: 0xf0ffff,\r\n    beige: 0xf5f5dc,\r\n    bisque: 0xffe4c4,\r\n    black: 0x000000,\r\n    blanchedalmond: 0xffebcd,\r\n    blue: 0x0000ff,\r\n    blueviolet: 0x8a2be2,\r\n    brown: 0xa52a2a,\r\n    burlywood: 0xdeb887,\r\n    cadetblue: 0x5f9ea0,\r\n    chartreuse: 0x7fff00,\r\n    chocolate: 0xd2691e,\r\n    coral: 0xff7f50,\r\n    cornflower: 0x6495ed,\r\n    cornflowerblue: 0x6495ed,\r\n    cornsilk: 0xfff8dc,\r\n    crimson: 0xdc143c,\r\n    cyan: 0x00ffff,\r\n    darkblue: 0x00008b,\r\n    darkcyan: 0x008b8b,\r\n    darkgoldenrod: 0xb8860b,\r\n    darkgray: 0xa9a9a9,\r\n    darkgreen: 0x006400,\r\n    darkgrey: 0xa9a9a9,\r\n    darkkhaki: 0xbdb76b,\r\n    darkmagenta: 0x8b008b,\r\n    darkolivegreen: 0x556b2f,\r\n    darkorange: 0xff8c00,\r\n    darkorchid: 0x9932cc,\r\n    darkred: 0x8b0000,\r\n    darksalmon: 0xe9967a,\r\n    darkseagreen: 0x8fbc8f,\r\n    darkslateblue: 0x483d8b,\r\n    darkslategray: 0x2f4f4f,\r\n    darkslategrey: 0x2f4f4f,\r\n    darkturquoise: 0x00ced1,\r\n    darkviolet: 0x9400d3,\r\n    deeppink: 0xff1493,\r\n    deepskyblue: 0x00bfff,\r\n    dimgray: 0x696969,\r\n    dimgrey: 0x696969,\r\n    dodgerblue: 0x1e90ff,\r\n    firebrick: 0xb22222,\r\n    floralwhite: 0xfffaf0,\r\n    forestgreen: 0x228b22,\r\n    fuchsia: 0xff00ff,\r\n    gainsboro: 0xdcdcdc,\r\n    ghostwhite: 0xf8f8ff,\r\n    gold: 0xffd700,\r\n    goldenrod: 0xdaa520,\r\n    gray: 0x808080,\r\n    green: 0x008000,\r\n    greenyellow: 0xadff2f,\r\n    grey: 0x808080,\r\n    honeydew: 0xf0fff0,\r\n    hotpink: 0xff69b4,\r\n    indianred: 0xcd5c5c,\r\n    indigo: 0x4b0082,\r\n    ivory: 0xfffff0,\r\n    khaki: 0xf0e68c,\r\n    laserlemon: 0xffff54,\r\n    lavender: 0xe6e6fa,\r\n    lavenderblush: 0xfff0f5,\r\n    lawngreen: 0x7cfc00,\r\n    lemonchiffon: 0xfffacd,\r\n    lightblue: 0xadd8e6,\r\n    lightcoral: 0xf08080,\r\n    lightcyan: 0xe0ffff,\r\n    lightgoldenrod: 0xfafad2,\r\n    lightgoldenrodyellow: 0xfafad2,\r\n    lightgray: 0xd3d3d3,\r\n    lightgreen: 0x90ee90,\r\n    lightgrey: 0xd3d3d3,\r\n    lightpink: 0xffb6c1,\r\n    lightsalmon: 0xffa07a,\r\n    lightseagreen: 0x20b2aa,\r\n    lightskyblue: 0x87cefa,\r\n    lightslategray: 0x778899,\r\n    lightslategrey: 0x778899,\r\n    lightsteelblue: 0xb0c4de,\r\n    lightyellow: 0xffffe0,\r\n    lime: 0x00ff00,\r\n    limegreen: 0x32cd32,\r\n    linen: 0xfaf0e6,\r\n    magenta: 0xff00ff,\r\n    maroon: 0x800000,\r\n    maroon2: 0x7f0000,\r\n    maroon3: 0xb03060,\r\n    mediumaquamarine: 0x66cdaa,\r\n    mediumblue: 0x0000cd,\r\n    mediumorchid: 0xba55d3,\r\n    mediumpurple: 0x9370db,\r\n    mediumseagreen: 0x3cb371,\r\n    mediumslateblue: 0x7b68ee,\r\n    mediumspringgreen: 0x00fa9a,\r\n    mediumturquoise: 0x48d1cc,\r\n    mediumvioletred: 0xc71585,\r\n    midnightblue: 0x191970,\r\n    mintcream: 0xf5fffa,\r\n    mistyrose: 0xffe4e1,\r\n    moccasin: 0xffe4b5,\r\n    navajowhite: 0xffdead,\r\n    navy: 0x000080,\r\n    oldlace: 0xfdf5e6,\r\n    olive: 0x808000,\r\n    olivedrab: 0x6b8e23,\r\n    orange: 0xffa500,\r\n    orangered: 0xff4500,\r\n    orchid: 0xda70d6,\r\n    palegoldenrod: 0xeee8aa,\r\n    palegreen: 0x98fb98,\r\n    paleturquoise: 0xafeeee,\r\n    palevioletred: 0xdb7093,\r\n    papayawhip: 0xffefd5,\r\n    peachpuff: 0xffdab9,\r\n    peru: 0xcd853f,\r\n    pink: 0xffc0cb,\r\n    plum: 0xdda0dd,\r\n    powderblue: 0xb0e0e6,\r\n    purple: 0x800080,\r\n    purple2: 0x7f007f,\r\n    purple3: 0xa020f0,\r\n    rebeccapurple: 0x663399,\r\n    red: 0xff0000,\r\n    rosybrown: 0xbc8f8f,\r\n    royalblue: 0x4169e1,\r\n    saddlebrown: 0x8b4513,\r\n    salmon: 0xfa8072,\r\n    sandybrown: 0xf4a460,\r\n    seagreen: 0x2e8b57,\r\n    seashell: 0xfff5ee,\r\n    sienna: 0xa0522d,\r\n    silver: 0xc0c0c0,\r\n    skyblue: 0x87ceeb,\r\n    slateblue: 0x6a5acd,\r\n    slategray: 0x708090,\r\n    slategrey: 0x708090,\r\n    snow: 0xfffafa,\r\n    springgreen: 0x00ff7f,\r\n    steelblue: 0x4682b4,\r\n    tan: 0xd2b48c,\r\n    teal: 0x008080,\r\n    thistle: 0xd8bfd8,\r\n    tomato: 0xff6347,\r\n    turquoise: 0x40e0d0,\r\n    violet: 0xee82ee,\r\n    wheat: 0xf5deb3,\r\n    white: 0xffffff,\r\n    whitesmoke: 0xf5f5f5,\r\n    yellow: 0xffff00,\r\n    yellowgreen: 0x9acd32\r\n};\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/color/tables.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/id-factory.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-util/id-factory.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction idFactory() {\r\n    var _nextId = 0;\r\n    return function () { return _nextId++; };\r\n}\r\nexports.idFactory = idFactory;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/id-factory.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/index.js":
+/*!**********************************************!*\
+  !*** ./build/node_modules/mol-util/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nfunction __export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar bit_flags_1 = __webpack_require__(/*! ./bit-flags */ \"./build/node_modules/mol-util/bit-flags.js\");\r\nexports.BitFlags = bit_flags_1.default;\r\nvar string_builder_1 = __webpack_require__(/*! ./string-builder */ \"./build/node_modules/mol-util/string-builder.js\");\r\nexports.StringBuilder = string_builder_1.default;\r\nvar uuid_1 = __webpack_require__(/*! ./uuid */ \"./build/node_modules/mol-util/uuid.js\");\r\nexports.UUID = uuid_1.default;\r\nvar mask_1 = __webpack_require__(/*! ./mask */ \"./build/node_modules/mol-util/mask.js\");\r\nexports.Mask = mask_1.default;\r\n__export(__webpack_require__(/*! ./value-cell */ \"./build/node_modules/mol-util/value-cell.js\"));\r\nfunction arrayEqual(arr1, arr2) {\r\n    var length = arr1.length;\r\n    if (length !== arr2.length)\r\n        return false;\r\n    for (var i = 0; i < length; i++) {\r\n        if (arr1[i] !== arr2[i]) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nexports.arrayEqual = arrayEqual;\r\nfunction deepEqual(a, b) {\r\n    // from https://github.com/epoberezkin/fast-deep-equal MIT\r\n    if (a === b)\r\n        return true;\r\n    var arrA = Array.isArray(a);\r\n    var arrB = Array.isArray(b);\r\n    if (arrA && arrB) {\r\n        if (a.length !== b.length)\r\n            return false;\r\n        for (var i = 0; i < a.length; i++) {\r\n            if (!deepEqual(a[i], b[i]))\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n    if (arrA !== arrB)\r\n        return false;\r\n    if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n        var keys = Object.keys(a);\r\n        if (keys.length !== Object.keys(b).length)\r\n            return false;\r\n        var dateA = a instanceof Date;\r\n        var dateB = b instanceof Date;\r\n        if (dateA && dateB)\r\n            return a.getTime() === b.getTime();\r\n        if (dateA !== dateB)\r\n            return false;\r\n        var regexpA = a instanceof RegExp;\r\n        var regexpB = b instanceof RegExp;\r\n        if (regexpA && regexpB)\r\n            return a.toString() === b.toString();\r\n        if (regexpA !== regexpB)\r\n            return false;\r\n        for (var i = 0; i < keys.length; i++) {\r\n            if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\r\n                return false;\r\n        }\r\n        for (var i = 0; i < keys.length; i++) {\r\n            if (!deepEqual(a[keys[i]], b[keys[i]]))\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\nexports.deepEqual = deepEqual;\r\nfunction defaults(value, defaultValue) {\r\n    return value !== undefined ? value : defaultValue;\r\n}\r\nexports.defaults = defaults;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/index.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/input/input-observer.js":
+/*!*************************************************************!*\
+  !*** ./build/node_modules/mol-util/input/input-observer.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rxjs_1 = __webpack_require__(/*! rxjs */ \"./node_modules/rxjs/_esm5/index.js\");\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar to_pixels_1 = __webpack_require__(/*! ../to-pixels */ \"./build/node_modules/mol-util/to-pixels.js\");\r\nfunction getButtons(event) {\r\n    if (typeof event === 'object') {\r\n        if ('buttons' in event) {\r\n            return event.buttons;\r\n        }\r\n        else if ('which' in event) {\r\n            var b = event.which; // 'any' to support older browsers\r\n            if (b === 2) {\r\n                return 4;\r\n            }\r\n            else if (b === 3) {\r\n                return 2;\r\n            }\r\n            else if (b > 0) {\r\n                return 1 << (b - 1);\r\n            }\r\n        }\r\n        else if ('button' in event) {\r\n            var b = event.button; // 'any' to support older browsers\r\n            if (b === 1) {\r\n                return 4;\r\n            }\r\n            else if (b === 2) {\r\n                return 2;\r\n            }\r\n            else if (b >= 0) {\r\n                return 1 << b;\r\n            }\r\n        }\r\n    }\r\n    return 0;\r\n}\r\nexports.DefaultInputObserverProps = {\r\n    noScroll: true,\r\n    noContextMenu: true\r\n};\r\nvar InputObserver;\r\n(function (InputObserver) {\r\n    function create(element, props) {\r\n        if (props === void 0) { props = {}; }\r\n        var _a = __assign({}, exports.DefaultInputObserverProps, props), noScroll = _a.noScroll, noContextMenu = _a.noContextMenu;\r\n        var lineHeight = to_pixels_1.default('ex', element);\r\n        var lastTouchDistance = 0;\r\n        var pointerStart = linear_algebra_1.Vec2.zero();\r\n        var pointerEnd = linear_algebra_1.Vec2.zero();\r\n        var pointerDelta = linear_algebra_1.Vec2.zero();\r\n        var rectSize = linear_algebra_1.Vec2.zero();\r\n        var modifiers = {\r\n            shift: false,\r\n            alt: false,\r\n            control: false,\r\n            meta: false\r\n        };\r\n        var dragging = 0 /* Stopped */;\r\n        var disposed = false;\r\n        var buttons = 0;\r\n        var drag = new rxjs_1.Subject();\r\n        var click = new rxjs_1.Subject();\r\n        var wheel = new rxjs_1.Subject();\r\n        var pinch = new rxjs_1.Subject();\r\n        var resize = new rxjs_1.Subject();\r\n        attach();\r\n        return {\r\n            get noScroll() { return noScroll; },\r\n            set noScroll(value) { noScroll = value; },\r\n            get noContextMenu() { return noContextMenu; },\r\n            set noContextMenu(value) { noContextMenu = value; },\r\n            drag: drag,\r\n            wheel: wheel,\r\n            pinch: pinch,\r\n            click: click,\r\n            resize: resize,\r\n            dispose: dispose\r\n        };\r\n        function attach() {\r\n            element.addEventListener('contextmenu', onContextMenu, false);\r\n            element.addEventListener('wheel', onMouseWheel, false);\r\n            element.addEventListener('mousedown', onPointerDown, false);\r\n            // for dragging to work outside canvas bounds,\r\n            // mouse move/up events have to be added to a parent, i.e. window\r\n            window.addEventListener('mousemove', onMouseMove, false);\r\n            window.addEventListener('mouseup', onPointerUp, false);\r\n            element.addEventListener('touchstart', onTouchStart, false);\r\n            element.addEventListener('touchmove', onTouchMove, false);\r\n            element.addEventListener('touchend', onTouchEnd, false);\r\n            element.addEventListener('blur', handleBlur);\r\n            element.addEventListener('keyup', handleMods);\r\n            element.addEventListener('keydown', handleMods);\r\n            element.addEventListener('keypress', handleMods);\r\n            window.addEventListener('resize', onResize, false);\r\n        }\r\n        function dispose() {\r\n            if (disposed)\r\n                return;\r\n            disposed = true;\r\n            element.removeEventListener('contextmenu', onContextMenu, false);\r\n            element.removeEventListener('wheel', onMouseWheel, false);\r\n            element.removeEventListener('mousedown', onMouseDown, false);\r\n            window.removeEventListener('mousemove', onMouseMove, false);\r\n            window.removeEventListener('mouseup', onMouseUp, false);\r\n            element.removeEventListener('touchstart', onTouchStart, false);\r\n            element.removeEventListener('touchmove', onTouchMove, false);\r\n            element.removeEventListener('touchend', onTouchEnd, false);\r\n            element.removeEventListener('blur', handleBlur);\r\n            element.removeEventListener('keyup', handleMods);\r\n            element.removeEventListener('keydown', handleMods);\r\n            element.removeEventListener('keypress', handleMods);\r\n            window.removeEventListener('resize', onResize, false);\r\n        }\r\n        function preventDefault(ev) {\r\n            if ('preventDefault' in ev)\r\n                ev.preventDefault();\r\n        }\r\n        function onContextMenu(event) {\r\n            if (noContextMenu) {\r\n                event.preventDefault();\r\n            }\r\n        }\r\n        function handleBlur() {\r\n            if (buttons || modifiers.shift || modifiers.alt || modifiers.meta || modifiers.control) {\r\n                buttons = 0;\r\n                modifiers.shift = modifiers.alt = modifiers.control = modifiers.meta = false;\r\n            }\r\n        }\r\n        function handleMods(event) {\r\n            if ('altKey' in event)\r\n                modifiers.alt = !!event.altKey;\r\n            if ('shiftKey' in event)\r\n                modifiers.shift = !!event.shiftKey;\r\n            if ('ctrlKey' in event)\r\n                modifiers.control = !!event.ctrlKey;\r\n            if ('metaKey' in event)\r\n                modifiers.meta = !!event.metaKey;\r\n        }\r\n        function getCenterTouch(ev) {\r\n            var t0 = ev.touches[0];\r\n            var t1 = ev.touches[1];\r\n            return {\r\n                clientX: (t0.clientX + t1.clientX) / 2,\r\n                clientY: (t0.clientY + t1.clientY) / 2,\r\n                pageX: (t0.pageX + t1.pageX) / 2,\r\n                pageY: (t0.pageY + t1.pageY) / 2\r\n            };\r\n        }\r\n        function getTouchDistance(ev) {\r\n            var dx = ev.touches[0].pageX - ev.touches[1].pageX;\r\n            var dy = ev.touches[0].pageY - ev.touches[1].pageY;\r\n            return Math.sqrt(dx * dx + dy * dy);\r\n        }\r\n        function onTouchStart(ev) {\r\n            preventDefault(ev);\r\n            if (ev.touches.length === 1) {\r\n                buttons = 1 /* Primary */;\r\n                onPointerDown(ev.touches[0]);\r\n            }\r\n            else if (ev.touches.length >= 2) {\r\n                buttons = 2 /* Secondary */;\r\n                onPointerDown(getCenterTouch(ev));\r\n                pinch.next({ distance: lastTouchDistance, delta: 0, isStart: true });\r\n            }\r\n        }\r\n        function onTouchEnd(ev) {\r\n            preventDefault(ev);\r\n        }\r\n        function onTouchMove(ev) {\r\n            preventDefault(ev);\r\n            if (ev.touches.length === 1) {\r\n                buttons = 1 /* Primary */;\r\n                onPointerMove(ev.touches[0]);\r\n            }\r\n            else if (ev.touches.length >= 2) {\r\n                var touchDistance = getTouchDistance(ev);\r\n                if (lastTouchDistance - touchDistance < 4) {\r\n                    buttons = 2 /* Secondary */;\r\n                    onPointerMove(getCenterTouch(ev));\r\n                }\r\n                else {\r\n                    pinch.next({\r\n                        delta: lastTouchDistance - touchDistance,\r\n                        distance: touchDistance,\r\n                        isStart: false\r\n                    });\r\n                }\r\n                lastTouchDistance = touchDistance;\r\n            }\r\n        }\r\n        function onMouseDown(ev) {\r\n            preventDefault(ev);\r\n            buttons = getButtons(ev);\r\n            onPointerDown(ev);\r\n        }\r\n        function onMouseMove(ev) {\r\n            preventDefault(ev);\r\n            buttons = getButtons(ev);\r\n            onPointerMove(ev);\r\n        }\r\n        function onMouseUp(ev) {\r\n            preventDefault(ev);\r\n            buttons = getButtons(ev);\r\n            onPointerUp(ev);\r\n        }\r\n        function onPointerDown(ev) {\r\n            eventOffset(pointerStart, ev);\r\n            if (insideBounds(pointerStart)) {\r\n                dragging = 1 /* Started */;\r\n            }\r\n        }\r\n        function onPointerUp(ev) {\r\n            dragging = 0 /* Stopped */;\r\n            if (linear_algebra_1.Vec2.distance(pointerEnd, pointerStart) < 4) {\r\n                eventOffset(pointerEnd, ev);\r\n                var pageX = ev.pageX, pageY = ev.pageY;\r\n                var x = pointerEnd[0], y = pointerEnd[1];\r\n                click.next({ x: x, y: y, pageX: pageX, pageY: pageY, buttons: buttons, modifiers: modifiers });\r\n            }\r\n        }\r\n        function onPointerMove(ev) {\r\n            eventOffset(pointerEnd, ev);\r\n            if (dragging === 0 /* Stopped */)\r\n                return;\r\n            linear_algebra_1.Vec2.div(pointerDelta, linear_algebra_1.Vec2.sub(pointerDelta, pointerEnd, pointerStart), getClientSize(rectSize));\r\n            var isStart = dragging === 1 /* Started */;\r\n            var pageX = ev.pageX, pageY = ev.pageY;\r\n            var x = pointerEnd[0], y = pointerEnd[1];\r\n            var dx = pointerDelta[0], dy = pointerDelta[1];\r\n            drag.next({ x: x, y: y, dx: dx, dy: dy, pageX: pageX, pageY: pageY, buttons: buttons, modifiers: modifiers, isStart: isStart });\r\n            linear_algebra_1.Vec2.copy(pointerStart, pointerEnd);\r\n            dragging = 2 /* Moving */;\r\n        }\r\n        function onMouseWheel(ev) {\r\n            if (noScroll) {\r\n                ev.preventDefault();\r\n            }\r\n            var mode = ev.deltaMode;\r\n            var dx = ev.deltaX || 0;\r\n            var dy = ev.deltaY || 0;\r\n            var dz = ev.deltaZ || 0;\r\n            var scale = 1;\r\n            switch (mode) {\r\n                case 1:\r\n                    scale = lineHeight;\r\n                    break;\r\n                case 2:\r\n                    scale = window.innerHeight;\r\n                    break;\r\n            }\r\n            scale *= 0.0001;\r\n            dx *= scale;\r\n            dy *= scale;\r\n            dz *= scale;\r\n            if (dx || dy || dz) {\r\n                wheel.next({ dx: dx, dy: dy, dz: dz, buttons: buttons, modifiers: modifiers });\r\n            }\r\n        }\r\n        function onResize(ev) {\r\n            resize.next();\r\n        }\r\n        function insideBounds(pos) {\r\n            if (element instanceof Window || element instanceof Document || element === document.body) {\r\n                return true;\r\n            }\r\n            else {\r\n                var rect = element.getBoundingClientRect();\r\n                return pos[0] >= 0 && pos[1] >= 0 && pos[0] < rect.width && pos[1] < rect.height;\r\n            }\r\n        }\r\n        function getClientSize(out) {\r\n            out[0] = element.clientWidth;\r\n            out[1] = element.clientHeight;\r\n            return out;\r\n        }\r\n        function eventOffset(out, ev) {\r\n            var cx = ev.clientX || 0;\r\n            var cy = ev.clientY || 0;\r\n            var rect = element.getBoundingClientRect();\r\n            out[0] = cx - rect.left;\r\n            out[1] = cy - rect.top;\r\n            return out;\r\n        }\r\n    }\r\n    InputObserver.create = create;\r\n})(InputObserver || (InputObserver = {}));\r\nexports.default = InputObserver;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/input/input-observer.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/mask.js":
+/*!*********************************************!*\
+  !*** ./build/node_modules/mol-util/mask.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/*\r\n * Copyright (c) 2017 MolQL contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// TODO check if the removal of FastSet and the removal of the context object for forEach\r\n// have any performance implications\r\nfunction _ascSort(a, b) {\r\n    return a - b;\r\n}\r\nfunction sortAsc(array) {\r\n    Array.prototype.sort.call(array, _ascSort);\r\n    return array;\r\n}\r\nexports.sortAsc = sortAsc;\r\nvar Mask;\r\n(function (Mask) {\r\n    var EmptyMask = /** @class */ (function () {\r\n        function EmptyMask() {\r\n            this.size = 0;\r\n        }\r\n        EmptyMask.prototype.has = function (i) { return false; };\r\n        EmptyMask.prototype.forEach = function (f, ctx) { return ctx; };\r\n        return EmptyMask;\r\n    }());\r\n    var SingletonMask = /** @class */ (function () {\r\n        function SingletonMask(idx) {\r\n            this.idx = idx;\r\n            this.size = 1;\r\n        }\r\n        SingletonMask.prototype.has = function (i) { return i === this.idx; };\r\n        SingletonMask.prototype.forEach = function (f, ctx) { f(this.idx, ctx); return ctx; };\r\n        return SingletonMask;\r\n    }());\r\n    var BitMask = /** @class */ (function () {\r\n        function BitMask(mask, size) {\r\n            this.mask = mask;\r\n            this.size = size;\r\n            this.length = mask.length;\r\n        }\r\n        BitMask.prototype.has = function (i) { return i < this.length && !!this.mask[i]; };\r\n        BitMask.prototype._forEach = function (f, ctx) {\r\n            for (var i = 0; i < this.length; i++) {\r\n                if (this.mask[i])\r\n                    f(i, ctx);\r\n            }\r\n        };\r\n        BitMask.prototype.forEach = function (f, ctx) {\r\n            this._forEach(f, ctx);\r\n            return ctx;\r\n        };\r\n        return BitMask;\r\n    }());\r\n    var AllMask = /** @class */ (function () {\r\n        function AllMask(size) {\r\n            this.size = size;\r\n        }\r\n        AllMask.prototype.has = function (i) { return true; };\r\n        AllMask.prototype._forEach = function (f, ctx) {\r\n            for (var i = 0; i < this.size; i++) {\r\n                f(i, ctx);\r\n            }\r\n        };\r\n        AllMask.prototype.forEach = function (f, ctx) {\r\n            this._forEach(f, ctx);\r\n            return ctx;\r\n        };\r\n        return AllMask;\r\n    }());\r\n    var SetMask = /** @class */ (function () {\r\n        function SetMask(set) {\r\n            this.set = set;\r\n            this._flat = void 0;\r\n            this.size = set.size;\r\n        }\r\n        SetMask.prototype.has = function (i) { return this.set.has(i); };\r\n        SetMask.prototype._forEach = function (f, ctx) {\r\n            for (var _i = 0, _a = this.flatten(); _i < _a.length; _i++) {\r\n                var idx = _a[_i];\r\n                f(idx, ctx);\r\n            }\r\n        };\r\n        SetMask.prototype.flatten = function () {\r\n            if (this._flat)\r\n                return this._flat;\r\n            var indices = new Int32Array(this.size);\r\n            var offset = 0;\r\n            this.set.forEach(function (i) { return indices[offset++] = i; });\r\n            sortAsc(indices);\r\n            this._flat = indices;\r\n            return this._flat;\r\n        };\r\n        SetMask.prototype.forEach = function (f, ctx) {\r\n            this._forEach(f, ctx);\r\n            return ctx;\r\n        };\r\n        return SetMask;\r\n    }());\r\n    function always(size) { return new AllMask(size); }\r\n    Mask.always = always;\r\n    Mask.never = new EmptyMask();\r\n    function ofSet(set) {\r\n        return new SetMask(set);\r\n    }\r\n    Mask.ofSet = ofSet;\r\n    function singleton(i) {\r\n        return new SingletonMask(i);\r\n    }\r\n    Mask.singleton = singleton;\r\n    function ofUniqueIndices(indices) {\r\n        var len = indices.length;\r\n        if (len === 0)\r\n            return new EmptyMask();\r\n        if (len === 1)\r\n            return new SingletonMask(indices[0]);\r\n        var max = 0;\r\n        for (var _i = 0, _a = indices; _i < _a.length; _i++) {\r\n            var i = _a[_i];\r\n            if (i > max)\r\n                max = i;\r\n        }\r\n        if (len === max)\r\n            return new AllMask(len);\r\n        var f = len / max;\r\n        if (f < 1 / 12) {\r\n            var set = new Set();\r\n            for (var _b = 0, _c = indices; _b < _c.length; _b++) {\r\n                var i = _c[_b];\r\n                set.add(i);\r\n            }\r\n            return new SetMask(set);\r\n        }\r\n        var mask = new Int8Array(max + 1);\r\n        for (var _d = 0, _e = indices; _d < _e.length; _d++) {\r\n            var i = _e[_d];\r\n            mask[i] = 1;\r\n        }\r\n        return new BitMask(mask, indices.length);\r\n    }\r\n    Mask.ofUniqueIndices = ofUniqueIndices;\r\n    function ofMask(mask, size) {\r\n        return new BitMask(mask, size);\r\n    }\r\n    Mask.ofMask = ofMask;\r\n    function hasAny(mask, xs) {\r\n        for (var _i = 0, xs_1 = xs; _i < xs_1.length; _i++) {\r\n            var x = xs_1[_i];\r\n            if (mask.has(x))\r\n                return true;\r\n        }\r\n        return false;\r\n    }\r\n    Mask.hasAny = hasAny;\r\n    function complement(mask, against) {\r\n        var count = 0;\r\n        var max = 0;\r\n        against.forEach(function (i) {\r\n            if (!mask.has(i)) {\r\n                count++;\r\n                if (i > max)\r\n                    max = i;\r\n            }\r\n        });\r\n        if (count / max < 1 / 12) {\r\n            // set based\r\n            var set_1 = new Set();\r\n            against.forEach(function (i) {\r\n                if (!mask.has(i)) {\r\n                    set_1.add(i);\r\n                }\r\n            });\r\n            return ofSet(set_1);\r\n        }\r\n        else {\r\n            // mask based\r\n            var target_1 = new Uint8Array(max + 1);\r\n            against.forEach(function (i) {\r\n                if (!mask.has(i)) {\r\n                    target_1[i] = 1;\r\n                }\r\n            });\r\n            return ofMask(target_1, count);\r\n        }\r\n    }\r\n    Mask.complement = complement;\r\n})(Mask || (Mask = {}));\r\nexports.default = Mask;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/mask.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/parse-unit.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-util/parse-unit.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/mattdesl/parse-unit,\r\n * copyright (c) 2014 Matt DesLauriers. MIT License\r\n */\r\nvar reUnit = /[\\d.\\-\\+]*\\s*(.*)/;\r\nfunction parseUnit(str, out) {\r\n    if (out === void 0) { out = [0, '']; }\r\n    str = String(str);\r\n    var num = parseFloat(str);\r\n    out[0] = num;\r\n    var m = str.match(reUnit);\r\n    if (m)\r\n        out[1] = m[1] || '';\r\n    return out;\r\n}\r\nexports.default = parseUnit;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/parse-unit.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/reference-cache.js":
+/*!********************************************************!*\
+  !*** ./build/node_modules/mol-util/reference-cache.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction createReference(value, usageCount) {\r\n    if (usageCount === void 0) { usageCount = 0; }\r\n    return { value: value, usageCount: usageCount };\r\n}\r\nexports.createReference = createReference;\r\nfunction createReferenceItem(ref) {\r\n    return {\r\n        free: function () {\r\n            ref.usageCount -= 1;\r\n        },\r\n        value: ref.value\r\n    };\r\n}\r\nexports.createReferenceItem = createReferenceItem;\r\nfunction createReferenceCache(hashFn, ctor, deleteFn) {\r\n    var map = new Map();\r\n    return {\r\n        get: function (ctx, props) {\r\n            var id = hashFn(props);\r\n            var ref = map.get(id);\r\n            if (!ref) {\r\n                ref = createReference(ctor(ctx, props));\r\n                map.set(id, ref);\r\n            }\r\n            ref.usageCount += 1;\r\n            return createReferenceItem(ref);\r\n        },\r\n        clear: function () {\r\n            map.forEach(function (ref, id) {\r\n                if (ref.usageCount <= 0) {\r\n                    if (ref.usageCount < 0) {\r\n                        console.warn('Reference usageCount below zero.');\r\n                    }\r\n                    deleteFn(ref.value);\r\n                }\r\n            });\r\n        },\r\n        get count() {\r\n            return map.size;\r\n        },\r\n        dispose: function () {\r\n            map.forEach(function (ref) { return deleteFn(ref.value); });\r\n        },\r\n    };\r\n}\r\nexports.createReferenceCache = createReferenceCache;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/reference-cache.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/set.js":
+/*!********************************************!*\
+  !*** ./build/node_modules/mol-util/set.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// TODO remove Array.from workaround when targeting ES6\r\n/** Test if set a contains all elements of set b. */\r\nfunction isSuperset(setA, setB) {\r\n    for (var _i = 0, _a = Array.from(setB); _i < _a.length; _i++) {\r\n        var elm = _a[_i];\r\n        if (!setA.has(elm))\r\n            return false;\r\n    }\r\n    return true;\r\n}\r\nexports.isSuperset = isSuperset;\r\n/** Create set containing elements of both set a and set b. */\r\nfunction union(setA, setB) {\r\n    var union = new Set(setA);\r\n    for (var _i = 0, _a = Array.from(setB); _i < _a.length; _i++) {\r\n        var elem = _a[_i];\r\n        union.add(elem);\r\n    }\r\n    return union;\r\n}\r\nexports.union = union;\r\n/** Create set containing elements of set a that are also in set b. */\r\nfunction intersection(setA, setB) {\r\n    var intersection = new Set();\r\n    for (var _i = 0, _a = Array.from(setB); _i < _a.length; _i++) {\r\n        var elem = _a[_i];\r\n        if (setA.has(elem))\r\n            intersection.add(elem);\r\n    }\r\n    return intersection;\r\n}\r\nexports.intersection = intersection;\r\n/** Create set containing elements of set a that are not in set b. */\r\nfunction difference(setA, setB) {\r\n    var difference = new Set(setA);\r\n    for (var _i = 0, _a = Array.from(setB); _i < _a.length; _i++) {\r\n        var elem = _a[_i];\r\n        difference.delete(elem);\r\n    }\r\n    return difference;\r\n}\r\nexports.difference = difference;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/set.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/string-builder.js":
+/*!*******************************************************!*\
+  !*** ./build/node_modules/mol-util/string-builder.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * Adapted from CIFTools.js (https://github.com/dsehnal/CIFTools.js)\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar StringBuilder;\r\n(function (StringBuilder) {\r\n    function create(chunkCapacity) {\r\n        if (chunkCapacity === void 0) { chunkCapacity = 512; }\r\n        return {\r\n            current: [],\r\n            offset: 0,\r\n            capacity: chunkCapacity,\r\n            chunks: []\r\n        };\r\n    }\r\n    StringBuilder.create = create;\r\n    function getString(builder) {\r\n        if (!builder.chunks.length) {\r\n            if (builder.current.length === builder.offset)\r\n                return builder.current.join('');\r\n            return builder.current.splice(0, builder.offset).join('');\r\n        }\r\n        if (builder.offset > 0) {\r\n            builder.chunks[builder.chunks.length] = builder.current.length === builder.offset\r\n                ? builder.current.join('')\r\n                : builder.current.slice(0, builder.offset).join('');\r\n        }\r\n        return builder.chunks.join('');\r\n    }\r\n    StringBuilder.getString = getString;\r\n    function getChunks(builder) {\r\n        if (builder.offset > 0) {\r\n            if (builder.current.length === builder.offset)\r\n                builder.chunks[builder.chunks.length] = builder.current.join('');\r\n            else\r\n                builder.chunks[builder.chunks.length] = builder.current.slice(0, builder.offset).join('');\r\n            builder.offset = 0;\r\n        }\r\n        return builder.chunks;\r\n    }\r\n    StringBuilder.getChunks = getChunks;\r\n    var __paddingSpaces = [];\r\n    (function () {\r\n        var s = '';\r\n        for (var i = 0; i < 512 /* Count */; i++) {\r\n            __paddingSpaces[i] = s;\r\n            s = s + ' ';\r\n        }\r\n    })();\r\n    function newline(builder) {\r\n        writeSafe(builder, '\\n');\r\n    }\r\n    StringBuilder.newline = newline;\r\n    function whitespace(builder, len) {\r\n        if (len > 0)\r\n            writeSafe(builder, __paddingSpaces[len]);\r\n    }\r\n    StringBuilder.whitespace = whitespace;\r\n    function whitespace1(builder) {\r\n        writeSafe(builder, ' ');\r\n    }\r\n    StringBuilder.whitespace1 = whitespace1;\r\n    function write(builder, val) {\r\n        if (!val)\r\n            return;\r\n        if (builder.offset === builder.capacity) {\r\n            builder.chunks[builder.chunks.length] = builder.current.join('');\r\n            builder.offset = 0;\r\n        }\r\n        builder.current[builder.offset++] = val;\r\n    }\r\n    StringBuilder.write = write;\r\n    /** Write without check. */\r\n    function writeSafe(builder, val) {\r\n        if (builder.offset === builder.capacity) {\r\n            builder.chunks[builder.chunks.length] = builder.current.join('');\r\n            builder.offset = 0;\r\n        }\r\n        builder.current[builder.offset++] = val;\r\n    }\r\n    StringBuilder.writeSafe = writeSafe;\r\n    function writePadLeft(builder, val, totalWidth) {\r\n        if (!val) {\r\n            whitespace(builder, totalWidth);\r\n            return;\r\n        }\r\n        var padding = totalWidth - val.length;\r\n        whitespace(builder, padding);\r\n        writeSafe(builder, val);\r\n    }\r\n    StringBuilder.writePadLeft = writePadLeft;\r\n    function writePadRight(builder, val, totalWidth) {\r\n        if (!val) {\r\n            whitespace(builder, totalWidth);\r\n            return;\r\n        }\r\n        var padding = totalWidth - val.length;\r\n        writeSafe(builder, val);\r\n        whitespace(builder, padding);\r\n    }\r\n    StringBuilder.writePadRight = writePadRight;\r\n    function writeInteger(builder, val) {\r\n        writeSafe(builder, '' + val);\r\n    }\r\n    StringBuilder.writeInteger = writeInteger;\r\n    function writeIntegerAndSpace(builder, val) {\r\n        writeSafe(builder, '' + val + ' ');\r\n    }\r\n    StringBuilder.writeIntegerAndSpace = writeIntegerAndSpace;\r\n    function writeIntegerPadLeft(builder, val, totalWidth) {\r\n        var s = '' + val;\r\n        var padding = totalWidth - s.length;\r\n        whitespace(builder, padding);\r\n        writeSafe(builder, s);\r\n    }\r\n    StringBuilder.writeIntegerPadLeft = writeIntegerPadLeft;\r\n    function writeIntegerPadRight(builder, val, totalWidth) {\r\n        var s = '' + val;\r\n        var padding = totalWidth - s.length;\r\n        writeSafe(builder, s);\r\n        whitespace(builder, padding);\r\n    }\r\n    StringBuilder.writeIntegerPadRight = writeIntegerPadRight;\r\n    /**\r\n     * @example writeFloat(123.2123, 100) -- 2 decim\r\n     */\r\n    function writeFloat(builder, val, precisionMultiplier) {\r\n        writeSafe(builder, '' + Math.round(precisionMultiplier * val) / precisionMultiplier);\r\n    }\r\n    StringBuilder.writeFloat = writeFloat;\r\n    function writeFloatPadLeft(builder, val, precisionMultiplier, totalWidth) {\r\n        var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier;\r\n        var padding = totalWidth - s.length;\r\n        whitespace(builder, padding);\r\n        writeSafe(builder, s);\r\n    }\r\n    StringBuilder.writeFloatPadLeft = writeFloatPadLeft;\r\n    function writeFloatPadRight(builder, val, precisionMultiplier, totalWidth) {\r\n        var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier;\r\n        var padding = totalWidth - s.length;\r\n        writeSafe(builder, s);\r\n        whitespace(builder, padding);\r\n    }\r\n    StringBuilder.writeFloatPadRight = writeFloatPadRight;\r\n})(StringBuilder || (StringBuilder = {}));\r\nexports.default = StringBuilder;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/string-builder.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/to-pixels.js":
+/*!**************************************************!*\
+  !*** ./build/node_modules/mol-util/to-pixels.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/mikolalysenko/to-px,\r\n * copyright (c) 2015 Mikola Lysenko. MIT License\r\n */\r\nvar parse_unit_1 = __webpack_require__(/*! ./parse-unit */ \"./build/node_modules/mol-util/parse-unit.js\");\r\nvar PIXELS_PER_INCH = 96;\r\nfunction getPropertyInPX(element, prop) {\r\n    var parts = parse_unit_1.default(getComputedStyle(element).getPropertyValue(prop));\r\n    return parts[0] * toPixels(parts[1], element);\r\n}\r\n// This brutal hack is needed\r\nfunction getSizeBrutal(unit, element) {\r\n    var testDIV = document.createElement('div');\r\n    testDIV.style.setProperty('font-size', '128' + unit);\r\n    element.appendChild(testDIV);\r\n    var size = getPropertyInPX(testDIV, 'font-size') / 128;\r\n    element.removeChild(testDIV);\r\n    return size;\r\n}\r\nfunction toPixels(str, element) {\r\n    if (element === void 0) { element = document.body; }\r\n    str = (str || 'px').trim().toLowerCase();\r\n    switch (str) {\r\n        case '%': // Ambiguous, not sure if we should use width or height\r\n            return element.clientHeight / 100.0;\r\n        case 'ch':\r\n        case 'ex':\r\n            return getSizeBrutal(str, element);\r\n        case 'em':\r\n            return getPropertyInPX(element, 'font-size');\r\n        case 'rem':\r\n            return getPropertyInPX(document.body, 'font-size');\r\n        case 'vw':\r\n            return window.innerWidth / 100;\r\n        case 'vh':\r\n            return window.innerHeight / 100;\r\n        case 'vmin':\r\n            return Math.min(window.innerWidth, window.innerHeight) / 100;\r\n        case 'vmax':\r\n            return Math.max(window.innerWidth, window.innerHeight) / 100;\r\n        case 'in':\r\n            return PIXELS_PER_INCH;\r\n        case 'cm':\r\n            return PIXELS_PER_INCH / 2.54;\r\n        case 'mm':\r\n            return PIXELS_PER_INCH / 25.4;\r\n        case 'pt':\r\n            return PIXELS_PER_INCH / 72;\r\n        case 'pc':\r\n            return PIXELS_PER_INCH / 6;\r\n    }\r\n    return 1;\r\n}\r\nexports.default = toPixels;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/to-pixels.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/uuid.js":
+/*!*********************************************!*\
+  !*** ./build/node_modules/mol-util/uuid.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar mol_task_1 = __webpack_require__(/*! mol-task */ \"./build/node_modules/mol-task/index.js\");\r\nvar UUID;\r\n(function (UUID) {\r\n    function create() {\r\n        var d = (+new Date()) + mol_task_1.now();\r\n        var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n            var r = (d + Math.random() * 16) % 16 | 0;\r\n            d = Math.floor(d / 16);\r\n            return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n        });\r\n        return uuid;\r\n    }\r\n    UUID.create = create;\r\n})(UUID || (UUID = {}));\r\nexports.default = UUID;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/uuid.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-util/value-cell.js":
+/*!***************************************************!*\
+  !*** ./build/node_modules/mol-util/value-cell.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author David Sehnal <david.sehnal@gmail.com>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ValueRef;\r\n(function (ValueRef) {\r\n    function create(ref) { return { ref: ref }; }\r\n    ValueRef.create = create;\r\n    function set(ref, value) { ref.ref = value; return ref; }\r\n    ValueRef.set = set;\r\n})(ValueRef || (ValueRef = {}));\r\nexports.ValueRef = ValueRef;\r\nvar _valueBoxId = 0;\r\nfunction getNextId() {\r\n    return _valueBoxId++ % 0x7FFFFFFF;\r\n}\r\nvar ValueBox;\r\n(function (ValueBox) {\r\n    function create(value, metadata) {\r\n        return { id: getNextId(), version: 0, value: value, metadata: metadata };\r\n    }\r\n    ValueBox.create = create;\r\n    /** The box.metadata is carried over from the old box */\r\n    function withValue(box, value) {\r\n        return { id: box.id, version: box.version + 1, value: value, metadata: box.metadata };\r\n    }\r\n    ValueBox.withValue = withValue;\r\n})(ValueBox || (ValueBox = {}));\r\nexports.ValueBox = ValueBox;\r\nvar ValueCell;\r\n(function (ValueCell) {\r\n    function create(value, metadata) {\r\n        return ValueRef.create(ValueBox.create(value, metadata));\r\n    }\r\n    ValueCell.create = create;\r\n    /** The box.metadata is carried over from the old box */\r\n    function update(cell, value) {\r\n        return ValueRef.set(cell, ValueBox.withValue(cell.ref, value));\r\n    }\r\n    ValueCell.update = update;\r\n    function set(cell, box) {\r\n        return ValueRef.set(cell, box);\r\n    }\r\n    ValueCell.set = set;\r\n})(ValueCell || (ValueCell = {}));\r\nexports.ValueCell = ValueCell;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-util/value-cell.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/camera/base.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-view/camera/base.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar util_1 = __webpack_require__(/*! ./util */ \"./build/node_modules/mol-view/camera/util.js\");\r\nexports.DefaultCameraProps = {\r\n    position: linear_algebra_1.Vec3.zero(),\r\n    direction: linear_algebra_1.Vec3.create(0, 0, -1),\r\n    up: linear_algebra_1.Vec3.create(0, 1, 0),\r\n    viewport: util_1.Viewport.create(-1, -1, 1, 1)\r\n};\r\nvar Camera;\r\n(function (Camera) {\r\n    function create(props) {\r\n        var p = __assign({}, exports.DefaultCameraProps, props);\r\n        var projection = linear_algebra_1.Mat4.identity();\r\n        var view = linear_algebra_1.Mat4.identity();\r\n        var position = linear_algebra_1.Vec3.clone(p.position);\r\n        var direction = linear_algebra_1.Vec3.clone(p.direction);\r\n        var up = linear_algebra_1.Vec3.clone(p.up);\r\n        var viewport = util_1.Viewport.clone(p.viewport);\r\n        var projectionView = linear_algebra_1.Mat4.identity();\r\n        var inverseProjectionView = linear_algebra_1.Mat4.identity();\r\n        function update() {\r\n            linear_algebra_1.Mat4.mul(projectionView, projection, view);\r\n            linear_algebra_1.Mat4.invert(inverseProjectionView, projectionView);\r\n        }\r\n        function lookAt(target) {\r\n            util_1.cameraLookAt(direction, up, position, target);\r\n        }\r\n        function reset() {\r\n            linear_algebra_1.Vec3.copy(position, p.position);\r\n            linear_algebra_1.Vec3.copy(direction, p.direction);\r\n            linear_algebra_1.Vec3.copy(up, p.up);\r\n            linear_algebra_1.Mat4.setIdentity(view);\r\n            linear_algebra_1.Mat4.setIdentity(projection);\r\n            linear_algebra_1.Mat4.setIdentity(projectionView);\r\n            linear_algebra_1.Mat4.setIdentity(inverseProjectionView);\r\n        }\r\n        function translate(v) {\r\n            linear_algebra_1.Vec3.add(position, position, v);\r\n        }\r\n        function project(out, point) {\r\n            return util_1.cameraProject(out, point, viewport, projectionView);\r\n        }\r\n        function unproject(out, point) {\r\n            return util_1.cameraUnproject(out, point, viewport, inverseProjectionView);\r\n        }\r\n        return {\r\n            view: view,\r\n            projection: projection,\r\n            projectionView: projectionView,\r\n            inverseProjectionView: inverseProjectionView,\r\n            viewport: viewport,\r\n            position: position,\r\n            direction: direction,\r\n            up: up,\r\n            translate: translate,\r\n            reset: reset,\r\n            lookAt: lookAt,\r\n            update: update,\r\n            project: project,\r\n            unproject: unproject\r\n        };\r\n    }\r\n    Camera.create = create;\r\n})(Camera = exports.Camera || (exports.Camera = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/camera/base.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/camera/perspective.js":
+/*!***********************************************************!*\
+  !*** ./build/node_modules/mol-view/camera/perspective.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar base_1 = __webpack_require__(/*! ./base */ \"./build/node_modules/mol-view/camera/base.js\");\r\nexports.DefaultPerspectiveCameraProps = __assign({ fov: Math.PI / 4, near: 0.1, far: 10000 }, base_1.DefaultCameraProps);\r\nvar PerspectiveCamera;\r\n(function (PerspectiveCamera) {\r\n    function create(props) {\r\n        if (props === void 0) { props = {}; }\r\n        var _a = __assign({}, exports.DefaultPerspectiveCameraProps, props), fov = _a.fov, near = _a.near, far = _a.far;\r\n        var camera = base_1.Camera.create(props);\r\n        var center = linear_algebra_1.Vec3.zero();\r\n        function update() {\r\n            var aspect = camera.viewport.width / camera.viewport.height;\r\n            // build projection matrix\r\n            linear_algebra_1.Mat4.perspective(camera.projection, fov, aspect, Math.abs(near), Math.abs(far));\r\n            // build view matrix\r\n            linear_algebra_1.Vec3.add(center, camera.position, camera.direction);\r\n            linear_algebra_1.Mat4.lookAt(camera.view, camera.position, center, camera.up);\r\n            // update projection * view and invert\r\n            camera.update();\r\n        }\r\n        update();\r\n        return __assign({}, camera, { update: update,\r\n            get far() { return far; },\r\n            set far(value) { far = value; },\r\n            get near() { return near; },\r\n            set near(value) { near = value; },\r\n            get fov() { return fov; },\r\n            set fov(value) { fov = value; } });\r\n    }\r\n    PerspectiveCamera.create = create;\r\n})(PerspectiveCamera = exports.PerspectiveCamera || (exports.PerspectiveCamera = {}));\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/camera/perspective.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/camera/util.js":
+/*!****************************************************!*\
+  !*** ./build/node_modules/mol-view/camera/util.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar Viewport;\r\n(function (Viewport) {\r\n    function create(x, y, width, height) {\r\n        return { x: x, y: y, width: width, height: height };\r\n    }\r\n    Viewport.create = create;\r\n    function clone(viewport) {\r\n        return __assign({}, viewport);\r\n    }\r\n    Viewport.clone = clone;\r\n    function copy(target, source) {\r\n        return Object.assign(target, source);\r\n    }\r\n    Viewport.copy = copy;\r\n})(Viewport = exports.Viewport || (exports.Viewport = {}));\r\nvar tmpVec3 = linear_algebra_1.Vec3.zero();\r\n/** Modifies the direction & up vectors in place */\r\nfunction cameraLookAt(position, up, direction, target) {\r\n    linear_algebra_1.Vec3.sub(tmpVec3, target, position);\r\n    linear_algebra_1.Vec3.normalize(tmpVec3, tmpVec3);\r\n    if (!linear_algebra_1.Vec3.isZero(tmpVec3)) {\r\n        // change direction vector to look at target\r\n        var d = linear_algebra_1.Vec3.dot(tmpVec3, up);\r\n        if (Math.abs(d - 1) < 0.000001 /* Value */) { // parallel\r\n            linear_algebra_1.Vec3.scale(up, direction, -1);\r\n        }\r\n        else if (Math.abs(d + 1) < 0.000001 /* Value */) { // anti parallel\r\n            linear_algebra_1.Vec3.copy(up, direction);\r\n        }\r\n        linear_algebra_1.Vec3.copy(direction, tmpVec3);\r\n        // normalize up vector\r\n        linear_algebra_1.Vec3.cross(tmpVec3, direction, up);\r\n        linear_algebra_1.Vec3.normalize(tmpVec3, tmpVec3);\r\n        linear_algebra_1.Vec3.cross(up, tmpVec3, direction);\r\n        linear_algebra_1.Vec3.normalize(up, up);\r\n    }\r\n}\r\nexports.cameraLookAt = cameraLookAt;\r\nvar NEAR_RANGE = 0;\r\nvar FAR_RANGE = 1;\r\nvar tmpVec4 = linear_algebra_1.Vec4.zero();\r\n/** Transform point into 2D window coordinates. */\r\nfunction cameraProject(out, point, viewport, projectionView) {\r\n    var vX = viewport.x, vY = viewport.y, vWidth = viewport.width, vHeight = viewport.height;\r\n    // clip space -> NDC -> window coordinates, implicit 1.0 for w component\r\n    linear_algebra_1.Vec4.set(tmpVec4, point[0], point[1], point[2], 1.0);\r\n    // transform into clip space\r\n    linear_algebra_1.Vec4.transformMat4(tmpVec4, tmpVec4, projectionView);\r\n    // transform into NDC\r\n    var w = tmpVec4[3];\r\n    if (w !== 0) {\r\n        tmpVec4[0] /= w;\r\n        tmpVec4[1] /= w;\r\n        tmpVec4[2] /= w;\r\n    }\r\n    // transform into window coordinates, set fourth component is (1/clip.w) as in gl_FragCoord.w\r\n    out[0] = vX + vWidth / 2 * tmpVec4[0] + (0 + vWidth / 2);\r\n    out[1] = vY + vHeight / 2 * tmpVec4[1] + (0 + vHeight / 2);\r\n    out[2] = (FAR_RANGE - NEAR_RANGE) / 2 * tmpVec4[2] + (FAR_RANGE + NEAR_RANGE) / 2;\r\n    out[3] = w === 0 ? 0 : 1 / w;\r\n    return out;\r\n}\r\nexports.cameraProject = cameraProject;\r\n/**\r\n * Transform point from screen space to 3D coordinates.\r\n * The point must have x and y set to 2D window coordinates and z between 0 (near) and 1 (far).\r\n */\r\nfunction cameraUnproject(out, point, viewport, inverseProjectionView) {\r\n    var vX = viewport.x, vY = viewport.y, vWidth = viewport.width, vHeight = viewport.height;\r\n    var x = point[0] - vX;\r\n    var y = (vHeight - point[1] - 1) - vY;\r\n    var z = point[2];\r\n    out[0] = (2 * x) / vWidth - 1;\r\n    out[1] = (2 * y) / vHeight - 1;\r\n    out[2] = 2 * z - 1;\r\n    return linear_algebra_1.Vec3.transformMat4(out, out, inverseProjectionView);\r\n}\r\nexports.cameraUnproject = cameraUnproject;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/camera/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/controls/trackball.js":
+/*!***********************************************************!*\
+  !*** ./build/node_modules/mol-view/controls/trackball.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n            t[p] = s[p];\r\n    }\r\n    return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * This code has been modified from https://github.com/mrdoob/three.js/,\r\n * copyright (c) 2010-2018 three.js authors. MIT License\r\n */\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar util_1 = __webpack_require__(/*! ../camera/util */ \"./build/node_modules/mol-view/camera/util.js\");\r\nexports.DefaultTrackballControlsProps = {\r\n    noScroll: true,\r\n    rotateSpeed: 3.0,\r\n    zoomSpeed: 4.0,\r\n    panSpeed: 0.8,\r\n    staticMoving: true,\r\n    dynamicDampingFactor: 0.2,\r\n    minDistance: 0,\r\n    maxDistance: Infinity\r\n};\r\nvar TrackballControls;\r\n(function (TrackballControls) {\r\n    function create(input, object, props) {\r\n        if (props === void 0) { props = {}; }\r\n        var p = __assign({}, exports.DefaultTrackballControlsProps, props);\r\n        var viewport = { x: 0, y: 0, width: 0, height: 0 };\r\n        var rotateSpeed = p.rotateSpeed, zoomSpeed = p.zoomSpeed, panSpeed = p.panSpeed;\r\n        var staticMoving = p.staticMoving, dynamicDampingFactor = p.dynamicDampingFactor;\r\n        var minDistance = p.minDistance, maxDistance = p.maxDistance;\r\n        var disposed = false;\r\n        var dragSub = input.drag.subscribe(onDrag);\r\n        var wheelSub = input.wheel.subscribe(onWheel);\r\n        var pinchSub = input.pinch.subscribe(onPinch);\r\n        // For internal use\r\n        var target = linear_algebra_1.Vec3.zero();\r\n        var lastPosition = linear_algebra_1.Vec3.zero();\r\n        var _eye = linear_algebra_1.Vec3.zero();\r\n        var _movePrev = linear_algebra_1.Vec2.zero();\r\n        var _moveCurr = linear_algebra_1.Vec2.zero();\r\n        var _lastAxis = linear_algebra_1.Vec3.zero();\r\n        var _lastAngle = 0;\r\n        var _zoomStart = linear_algebra_1.Vec2.zero();\r\n        var _zoomEnd = linear_algebra_1.Vec2.zero();\r\n        var _touchZoomDistanceStart = 0;\r\n        var _touchZoomDistanceEnd = 0;\r\n        var _panStart = linear_algebra_1.Vec2.zero();\r\n        var _panEnd = linear_algebra_1.Vec2.zero();\r\n        // Initial values for reseting\r\n        var target0 = linear_algebra_1.Vec3.clone(target);\r\n        var position0 = linear_algebra_1.Vec3.clone(object.position);\r\n        var up0 = linear_algebra_1.Vec3.clone(object.up);\r\n        var mouseOnScreenVec2 = linear_algebra_1.Vec2.zero();\r\n        function getMouseOnScreen(pageX, pageY) {\r\n            linear_algebra_1.Vec2.set(mouseOnScreenVec2, (pageX - viewport.x) / viewport.width, (pageY - viewport.y) / viewport.height);\r\n            return mouseOnScreenVec2;\r\n        }\r\n        var mouseOnCircleVec2 = linear_algebra_1.Vec2.zero();\r\n        function getMouseOnCircle(pageX, pageY) {\r\n            linear_algebra_1.Vec2.set(mouseOnCircleVec2, ((pageX - viewport.width * 0.5 - viewport.x) / (viewport.width * 0.5)), ((viewport.height + 2 * (viewport.y - pageY)) / viewport.width) // screen.width intentional\r\n            );\r\n            return mouseOnCircleVec2;\r\n        }\r\n        var rotAxis = linear_algebra_1.Vec3.zero();\r\n        var rotQuat = linear_algebra_1.Quat.zero();\r\n        var rotEyeDir = linear_algebra_1.Vec3.zero();\r\n        var rotObjUpDir = linear_algebra_1.Vec3.zero();\r\n        var rotObjSideDir = linear_algebra_1.Vec3.zero();\r\n        var rotMoveDir = linear_algebra_1.Vec3.zero();\r\n        function rotateCamera() {\r\n            linear_algebra_1.Vec3.set(rotMoveDir, _moveCurr[0] - _movePrev[0], _moveCurr[1] - _movePrev[1], 0);\r\n            var angle = linear_algebra_1.Vec3.magnitude(rotMoveDir);\r\n            if (angle) {\r\n                linear_algebra_1.Vec3.copy(_eye, object.position);\r\n                linear_algebra_1.Vec3.sub(_eye, _eye, target);\r\n                linear_algebra_1.Vec3.normalize(rotEyeDir, linear_algebra_1.Vec3.copy(rotEyeDir, _eye));\r\n                linear_algebra_1.Vec3.normalize(rotObjUpDir, linear_algebra_1.Vec3.copy(rotObjUpDir, object.up));\r\n                linear_algebra_1.Vec3.normalize(rotObjSideDir, linear_algebra_1.Vec3.cross(rotObjSideDir, rotObjUpDir, rotEyeDir));\r\n                linear_algebra_1.Vec3.setMagnitude(rotObjUpDir, rotObjUpDir, _moveCurr[1] - _movePrev[1]);\r\n                linear_algebra_1.Vec3.setMagnitude(rotObjSideDir, rotObjSideDir, _moveCurr[0] - _movePrev[0]);\r\n                linear_algebra_1.Vec3.add(rotMoveDir, linear_algebra_1.Vec3.copy(rotMoveDir, rotObjUpDir), rotObjSideDir);\r\n                linear_algebra_1.Vec3.normalize(rotAxis, linear_algebra_1.Vec3.cross(rotAxis, rotMoveDir, _eye));\r\n                angle *= rotateSpeed;\r\n                linear_algebra_1.Quat.setAxisAngle(rotQuat, rotAxis, angle);\r\n                linear_algebra_1.Vec3.transformQuat(_eye, _eye, rotQuat);\r\n                linear_algebra_1.Vec3.transformQuat(object.up, object.up, rotQuat);\r\n                linear_algebra_1.Vec3.copy(_lastAxis, rotAxis);\r\n                _lastAngle = angle;\r\n            }\r\n            else if (!staticMoving && _lastAngle) {\r\n                _lastAngle *= Math.sqrt(1.0 - dynamicDampingFactor);\r\n                linear_algebra_1.Vec3.sub(_eye, linear_algebra_1.Vec3.copy(_eye, object.position), target);\r\n                linear_algebra_1.Quat.setAxisAngle(rotQuat, _lastAxis, _lastAngle);\r\n                linear_algebra_1.Vec3.transformQuat(_eye, _eye, rotQuat);\r\n                linear_algebra_1.Vec3.transformQuat(object.up, object.up, rotQuat);\r\n            }\r\n            linear_algebra_1.Vec2.copy(_movePrev, _moveCurr);\r\n        }\r\n        function zoomCamera() {\r\n            var factor = 1.0 + (_zoomEnd[1] - _zoomStart[1]) * zoomSpeed;\r\n            if (factor !== 1.0 && factor > 0.0) {\r\n                linear_algebra_1.Vec3.scale(_eye, _eye, factor);\r\n            }\r\n            if (staticMoving) {\r\n                linear_algebra_1.Vec2.copy(_zoomStart, _zoomEnd);\r\n            }\r\n            else {\r\n                _zoomStart[1] += (_zoomEnd[1] - _zoomStart[1]) * dynamicDampingFactor;\r\n            }\r\n        }\r\n        var panMouseChange = linear_algebra_1.Vec2.zero();\r\n        var panObjUp = linear_algebra_1.Vec3.zero();\r\n        var panOffset = linear_algebra_1.Vec3.zero();\r\n        function panCamera() {\r\n            linear_algebra_1.Vec2.sub(panMouseChange, linear_algebra_1.Vec2.copy(panMouseChange, _panEnd), _panStart);\r\n            if (linear_algebra_1.Vec2.squaredMagnitude(panMouseChange)) {\r\n                linear_algebra_1.Vec2.scale(panMouseChange, panMouseChange, linear_algebra_1.Vec3.magnitude(_eye) * panSpeed);\r\n                linear_algebra_1.Vec3.cross(panOffset, linear_algebra_1.Vec3.copy(panOffset, _eye), object.up);\r\n                linear_algebra_1.Vec3.setMagnitude(panOffset, panOffset, panMouseChange[0]);\r\n                linear_algebra_1.Vec3.setMagnitude(panObjUp, object.up, panMouseChange[1]);\r\n                linear_algebra_1.Vec3.add(panOffset, panOffset, panObjUp);\r\n                linear_algebra_1.Vec3.add(object.position, object.position, panOffset);\r\n                linear_algebra_1.Vec3.add(target, target, panOffset);\r\n                if (staticMoving) {\r\n                    linear_algebra_1.Vec2.copy(_panStart, _panEnd);\r\n                }\r\n                else {\r\n                    linear_algebra_1.Vec2.sub(panMouseChange, _panEnd, _panStart);\r\n                    linear_algebra_1.Vec2.scale(panMouseChange, panMouseChange, dynamicDampingFactor);\r\n                    linear_algebra_1.Vec2.add(_panStart, _panStart, panMouseChange);\r\n                }\r\n            }\r\n        }\r\n        /** Ensure the distance between object and target is within the min/max distance */\r\n        function checkDistances() {\r\n            if (linear_algebra_1.Vec3.squaredMagnitude(_eye) > maxDistance * maxDistance) {\r\n                linear_algebra_1.Vec3.setMagnitude(_eye, _eye, maxDistance);\r\n                linear_algebra_1.Vec3.add(object.position, target, _eye);\r\n                linear_algebra_1.Vec2.copy(_zoomStart, _zoomEnd);\r\n            }\r\n            if (linear_algebra_1.Vec3.squaredMagnitude(_eye) < minDistance * minDistance) {\r\n                linear_algebra_1.Vec3.setMagnitude(_eye, _eye, minDistance);\r\n                linear_algebra_1.Vec3.add(object.position, target, _eye);\r\n                linear_algebra_1.Vec2.copy(_zoomStart, _zoomEnd);\r\n            }\r\n        }\r\n        /** Update the object's position, direction and up vectors */\r\n        function update() {\r\n            linear_algebra_1.Vec3.sub(_eye, object.position, target);\r\n            rotateCamera();\r\n            zoomCamera();\r\n            panCamera();\r\n            linear_algebra_1.Vec3.add(object.position, target, _eye);\r\n            checkDistances();\r\n            util_1.cameraLookAt(object.position, object.up, object.direction, target);\r\n            if (linear_algebra_1.Vec3.squaredDistance(lastPosition, object.position) > 0.000001 /* Value */) {\r\n                linear_algebra_1.Vec3.copy(lastPosition, object.position);\r\n            }\r\n        }\r\n        /** Reset object's vectors and the target vector to their initial values */\r\n        function reset() {\r\n            linear_algebra_1.Vec3.copy(target, target0);\r\n            linear_algebra_1.Vec3.copy(object.position, position0);\r\n            linear_algebra_1.Vec3.copy(object.up, up0);\r\n            linear_algebra_1.Vec3.sub(_eye, object.position, target);\r\n            util_1.cameraLookAt(object.position, object.up, object.direction, target);\r\n            linear_algebra_1.Vec3.copy(lastPosition, object.position);\r\n        }\r\n        // listeners\r\n        function onDrag(_a) {\r\n            var pageX = _a.pageX, pageY = _a.pageY, buttons = _a.buttons, modifiers = _a.modifiers, isStart = _a.isStart;\r\n            if (isStart) {\r\n                if (buttons === 1 /* Primary */) {\r\n                    linear_algebra_1.Vec2.copy(_moveCurr, getMouseOnCircle(pageX, pageY));\r\n                    linear_algebra_1.Vec2.copy(_movePrev, _moveCurr);\r\n                }\r\n                else if (buttons === 4 /* Auxilary */) {\r\n                    linear_algebra_1.Vec2.copy(_zoomStart, getMouseOnScreen(pageX, pageY));\r\n                    linear_algebra_1.Vec2.copy(_zoomEnd, _zoomStart);\r\n                }\r\n                else if (buttons === 2 /* Secondary */) {\r\n                    linear_algebra_1.Vec2.copy(_panStart, getMouseOnScreen(pageX, pageY));\r\n                    linear_algebra_1.Vec2.copy(_panEnd, _panStart);\r\n                }\r\n            }\r\n            if (buttons === 1 /* Primary */) {\r\n                linear_algebra_1.Vec2.copy(_movePrev, _moveCurr);\r\n                linear_algebra_1.Vec2.copy(_moveCurr, getMouseOnCircle(pageX, pageY));\r\n            }\r\n            else if (buttons === 4 /* Auxilary */) {\r\n                linear_algebra_1.Vec2.copy(_zoomEnd, getMouseOnScreen(pageX, pageY));\r\n            }\r\n            else if (buttons === 2 /* Secondary */) {\r\n                linear_algebra_1.Vec2.copy(_panEnd, getMouseOnScreen(pageX, pageY));\r\n            }\r\n        }\r\n        function onWheel(_a) {\r\n            var dy = _a.dy;\r\n            _zoomStart[1] -= dy;\r\n        }\r\n        function onPinch(_a) {\r\n            var distance = _a.distance, isStart = _a.isStart;\r\n            if (isStart) {\r\n                _touchZoomDistanceStart = distance;\r\n            }\r\n            _touchZoomDistanceEnd = distance;\r\n            var factor = (_touchZoomDistanceStart / _touchZoomDistanceEnd) * zoomSpeed;\r\n            _touchZoomDistanceStart = _touchZoomDistanceEnd;\r\n            linear_algebra_1.Vec3.scale(_eye, _eye, factor);\r\n        }\r\n        function dispose() {\r\n            if (disposed)\r\n                return;\r\n            disposed = true;\r\n            dragSub.unsubscribe();\r\n            wheelSub.unsubscribe();\r\n            pinchSub.unsubscribe();\r\n        }\r\n        // force an update at start\r\n        update();\r\n        return {\r\n            viewport: viewport,\r\n            get dynamicDampingFactor() { return dynamicDampingFactor; },\r\n            set dynamicDampingFactor(value) { dynamicDampingFactor = value; },\r\n            get rotateSpeed() { return rotateSpeed; },\r\n            set rotateSpeed(value) { rotateSpeed = value; },\r\n            get zoomSpeed() { return zoomSpeed; },\r\n            set zoomSpeed(value) { zoomSpeed = value; },\r\n            get panSpeed() { return panSpeed; },\r\n            set panSpeed(value) { panSpeed = value; },\r\n            update: update,\r\n            reset: reset,\r\n            dispose: dispose\r\n        };\r\n    }\r\n    TrackballControls.create = create;\r\n})(TrackballControls || (TrackballControls = {}));\r\nexports.default = TrackballControls;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/controls/trackball.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/util.js":
+/*!*********************************************!*\
+  !*** ./build/node_modules/mol-view/util.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction resizeCanvas(canvas, container) {\r\n    var w = window.innerWidth;\r\n    var h = window.innerHeight;\r\n    if (container !== document.body) {\r\n        var bounds = container.getBoundingClientRect();\r\n        w = bounds.right - bounds.left;\r\n        h = bounds.bottom - bounds.top;\r\n    }\r\n    canvas.width = window.devicePixelRatio * w;\r\n    canvas.height = window.devicePixelRatio * h;\r\n    Object.assign(canvas.style, { width: w + \"px\", height: h + \"px\" });\r\n}\r\nexports.resizeCanvas = resizeCanvas;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/util.js?");
+
+/***/ }),
+
+/***/ "./build/node_modules/mol-view/viewer.js":
+/*!***********************************************!*\
+  !*** ./build/node_modules/mol-view/viewer.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\r\n/**\r\n * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.\r\n *\r\n * @author Alexander Rose <alexander.rose@weirdbyte.de>\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar linear_algebra_1 = __webpack_require__(/*! mol-math/linear-algebra */ \"./build/node_modules/mol-math/linear-algebra.js\");\r\nvar input_observer_1 = __webpack_require__(/*! mol-util/input/input-observer */ \"./build/node_modules/mol-util/input/input-observer.js\");\r\nvar SetUtils = __webpack_require__(/*! mol-util/set */ \"./build/node_modules/mol-util/set.js\");\r\nvar renderer_1 = __webpack_require__(/*! mol-gl/renderer */ \"./build/node_modules/mol-gl/renderer.js\");\r\nvar trackball_1 = __webpack_require__(/*! ./controls/trackball */ \"./build/node_modules/mol-view/controls/trackball.js\");\r\nvar util_1 = __webpack_require__(/*! ./camera/util */ \"./build/node_modules/mol-view/camera/util.js\");\r\nvar perspective_1 = __webpack_require__(/*! ./camera/perspective */ \"./build/node_modules/mol-view/camera/perspective.js\");\r\nvar util_2 = __webpack_require__(/*! ./util */ \"./build/node_modules/mol-view/util.js\");\r\nvar context_1 = __webpack_require__(/*! mol-gl/webgl/context */ \"./build/node_modules/mol-gl/webgl/context.js\");\r\nfunction getWebGLContext(canvas, contextAttributes) {\r\n    function getContext(contextId) {\r\n        try {\r\n            return canvas.getContext(contextId, contextAttributes);\r\n        }\r\n        catch (e) {\r\n            return null;\r\n        }\r\n    }\r\n    return getContext('webgl') || getContext('experimental-webgl');\r\n}\r\nvar Viewer;\r\n(function (Viewer) {\r\n    function create(canvas, container) {\r\n        var reprMap = new Map();\r\n        var input = input_observer_1.default.create(canvas);\r\n        input.resize.subscribe(handleResize);\r\n        var camera = perspective_1.PerspectiveCamera.create({\r\n            near: 0.1,\r\n            far: 10000,\r\n            position: linear_algebra_1.Vec3.create(0, 0, 50)\r\n        });\r\n        var controls = trackball_1.default.create(input, camera, {});\r\n        var gl = getWebGLContext(canvas, {\r\n            alpha: false,\r\n            antialias: true,\r\n            depth: true,\r\n            preserveDrawingBuffer: true\r\n        });\r\n        if (gl === null) {\r\n            throw new Error('Could not create a WebGL rendering context');\r\n        }\r\n        var ctx = context_1.createContext(gl);\r\n        var renderer = renderer_1.default.create(ctx, camera);\r\n        var drawPending = false;\r\n        var prevProjectionView = linear_algebra_1.Mat4.zero();\r\n        function draw(force) {\r\n            controls.update();\r\n            camera.update();\r\n            if (force || !linear_algebra_1.Mat4.areEqual(camera.projectionView, prevProjectionView, 0.000001 /* Value */)) {\r\n                linear_algebra_1.Mat4.copy(prevProjectionView, camera.projectionView);\r\n                renderer.draw();\r\n            }\r\n            drawPending = false;\r\n        }\r\n        function requestDraw() {\r\n            if (drawPending)\r\n                return;\r\n            drawPending = true;\r\n            window.requestAnimationFrame(function () { return draw(true); });\r\n        }\r\n        function animate() {\r\n            draw();\r\n            window.requestAnimationFrame(function () { return animate(); });\r\n        }\r\n        handleResize();\r\n        return {\r\n            hide: function (repr) {\r\n                var renderObjectSet = reprMap.get(repr);\r\n                if (renderObjectSet)\r\n                    renderObjectSet.forEach(function (o) { return o.props.visible = false; });\r\n            },\r\n            show: function (repr) {\r\n                var renderObjectSet = reprMap.get(repr);\r\n                if (renderObjectSet)\r\n                    renderObjectSet.forEach(function (o) { return o.props.visible = true; });\r\n            },\r\n            add: function (repr) {\r\n                var oldRO = reprMap.get(repr);\r\n                var newRO = new Set();\r\n                repr.renderObjects.forEach(function (o) { return newRO.add(o); });\r\n                if (oldRO) {\r\n                    SetUtils.difference(newRO, oldRO).forEach(function (o) { return renderer.add(o); });\r\n                    SetUtils.difference(oldRO, newRO).forEach(function (o) { return renderer.remove(o); });\r\n                }\r\n                else {\r\n                    repr.renderObjects.forEach(function (o) { return renderer.add(o); });\r\n                }\r\n                reprMap.set(repr, newRO);\r\n            },\r\n            remove: function (repr) {\r\n                var renderObjectSet = reprMap.get(repr);\r\n                if (renderObjectSet)\r\n                    renderObjectSet.forEach(function (o) { return renderer.remove(o); });\r\n            },\r\n            update: function () { return renderer.update(); },\r\n            clear: function () {\r\n                reprMap.clear();\r\n                renderer.clear();\r\n            },\r\n            draw: draw,\r\n            requestDraw: requestDraw,\r\n            animate: animate,\r\n            handleResize: handleResize,\r\n            get stats() {\r\n                return renderer.stats;\r\n            },\r\n            dispose: function () {\r\n                input.dispose();\r\n                controls.dispose();\r\n                renderer.dispose();\r\n            }\r\n        };\r\n        function handleResize() {\r\n            util_2.resizeCanvas(canvas, container);\r\n            var viewport = { x: 0, y: 0, width: canvas.width, height: canvas.height };\r\n            renderer.setViewport(viewport);\r\n            util_1.Viewport.copy(camera.viewport, viewport);\r\n            util_1.Viewport.copy(controls.viewport, viewport);\r\n        }\r\n    }\r\n    Viewer.create = create;\r\n})(Viewer || (Viewer = {}));\r\nexports.default = Viewer;\r\n\n\n//# sourceURL=webpack:///./build/node_modules/mol-view/viewer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/array/from.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/array/from.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ \"./node_modules/core-js/library/fn/array/from.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/array/from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/is-iterable.js":
+/*!************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/is-iterable.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/is-iterable */ \"./node_modules/core-js/library/fn/is-iterable.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/is-iterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/map.js":
+/*!****************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/map.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/map */ \"./node_modules/core-js/library/fn/map.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/map.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/number/is-nan.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/number/is-nan.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/number/is-nan */ \"./node_modules/core-js/library/fn/number/is-nan.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/number/is-nan.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/number/min-safe-integer.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/number/min-safe-integer.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/number/min-safe-integer */ \"./node_modules/core-js/library/fn/number/min-safe-integer.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/number/min-safe-integer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/assign.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/assign.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/assign.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/define-property.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/define-property.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/core-js/library/fn/object/define-property.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/define-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js":
+/*!***********************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js ***!
+  \***********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ \"./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js":
+/*!********************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js ***!
+  \********************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-symbols */ \"./node_modules/core-js/library/fn/object/get-own-property-symbols.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/get-prototype-of.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/get-prototype-of.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ \"./node_modules/core-js/library/fn/object/get-prototype-of.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/keys.js":
+/*!************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/keys.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ \"./node_modules/core-js/library/fn/object/keys.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/object/set-prototype-of.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/object/set-prototype-of.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ \"./node_modules/core-js/library/fn/object/set-prototype-of.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/object/set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/symbol.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/symbol.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/core-js/library/fn/symbol/index.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/core-js/symbol/iterator.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/@babel/runtime/core-js/symbol/iterator.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/core-js/library/fn/symbol/iterator.js\");\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/core-js/symbol/iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/createClass.js":
+/*!************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/@babel/runtime/core-js/object/define-property.js\");\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n\n    _Object$defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/createClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/@babel/runtime/core-js/object/define-property.js\");\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/extends.js":
+/*!********************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/extends.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/@babel/runtime/core-js/object/assign.js\");\n\nfunction _extends() {\n  module.exports = _extends = _Object$assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/extends.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/inherits.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf */ \"./node_modules/@babel/runtime/helpers/setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  setPrototypeOf(subClass.prototype, superClass && superClass.prototype);\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/inherits.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/interopRequireWildcard.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/interopRequireWildcard.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! ../core-js/object/get-own-property-descriptor */ \"./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js\");\n\nvar _Object$defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/@babel/runtime/core-js/object/define-property.js\");\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = _Object$defineProperty && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            _Object$defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nmodule.exports = _interopRequireWildcard;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/interopRequireWildcard.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Array$from = __webpack_require__(/*! ../core-js/array/from */ \"./node_modules/@babel/runtime/core-js/array/from.js\");\n\nvar _isIterable = __webpack_require__(/*! ../core-js/is-iterable */ \"./node_modules/@babel/runtime/core-js/is-iterable.js\");\n\nfunction _iterableToArray(iter) {\n  if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/objectSpread.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/objectSpread.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! ../core-js/object/get-own-property-descriptor */ \"./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js\");\n\nvar _Object$getOwnPropertySymbols = __webpack_require__(/*! ../core-js/object/get-own-property-symbols */ \"./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js\");\n\nvar _Object$keys = __webpack_require__(/*! ../core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\");\n\nvar defineProperty = __webpack_require__(/*! ./defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    var ownKeys = _Object$keys(source);\n\n    if (typeof _Object$getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(_Object$getOwnPropertySymbols(source).filter(function (sym) {\n        return _Object$getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nmodule.exports = _objectSpread;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectSpread.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$getOwnPropertySymbols = __webpack_require__(/*! ../core-js/object/get-own-property-symbols */ \"./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js\");\n\nvar _Object$keys = __webpack_require__(/*! ../core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n\n  var sourceKeys = _Object$keys(source);\n\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  if (_Object$getOwnPropertySymbols) {\n    var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
+  \**************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _typeof = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Object$setPrototypeOf = __webpack_require__(/*! ../core-js/object/set-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/set-prototype-of.js\");\n\nfunction _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles */ \"./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray */ \"./node_modules/@babel/runtime/helpers/iterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread */ \"./node_modules/@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var _Symbol$iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/@babel/runtime/core-js/symbol/iterator.js\");\n\nvar _Symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/@babel/runtime/core-js/symbol.js\");\n\nfunction _typeof2(obj) { if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n  if (typeof _Symbol === \"function\" && _typeof2(_Symbol$iterator) === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return _typeof2(obj);\n    };\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : _typeof2(obj);\n    };\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/typeof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/assign.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/assign.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/assign.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/create.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/create.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/create */ \"./node_modules/core-js/library/fn/object/create.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/define-property.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/define-property.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/core-js/library/fn/object/define-property.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/define-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/get-prototype-of.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/get-prototype-of.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ \"./node_modules/core-js/library/fn/object/get-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/keys.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/keys.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/keys */ \"./node_modules/core-js/library/fn/object/keys.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/object/set-prototype-of.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/object/set-prototype-of.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ \"./node_modules/core-js/library/fn/object/set-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/symbol.js":
+/*!******************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/symbol.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/core-js/library/fn/symbol/index.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/core-js/symbol/iterator.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/core-js/library/fn/symbol/iterator.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/classCallCheck.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/classCallCheck.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/createClass.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/createClass.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/createClass.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/inherits.js":
+/*!********************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/inherits.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(/*! ../core-js/object/set-prototype-of */ \"./node_modules/babel-runtime/core-js/object/set-prototype-of.js\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(/*! ../core-js/object/create */ \"./node_modules/babel-runtime/core-js/object/create.js\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/inherits.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/objectWithoutProperties.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/objectWithoutProperties.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/objectWithoutProperties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js ***!
+  \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js?");
+
+/***/ }),
+
+/***/ "./node_modules/babel-runtime/helpers/typeof.js":
+/*!******************************************************!*\
+  !*** ./node_modules/babel-runtime/helpers/typeof.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/babel-runtime/core-js/symbol/iterator.js\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/babel-runtime/core-js/symbol.js\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/typeof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/brcast/dist/brcast.es.js":
+/*!***********************************************!*\
+  !*** ./node_modules/brcast/dist/brcast.es.js ***!
+  \***********************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nfunction createBroadcast (initialState) {\n  var listeners = {};\n  var id = 1;\n  var _state = initialState;\n\n  function getState () {\n    return _state\n  }\n\n  function setState (state) {\n    _state = state;\n    var keys = Object.keys(listeners);\n    var i = 0;\n    var len = keys.length;\n    for (; i < len; i++) {\n      // if a listener gets unsubscribed during setState we just skip it\n      if (listeners[keys[i]]) { listeners[keys[i]](state); }\n    }\n  }\n\n  // subscribe to changes and return the subscriptionId\n  function subscribe (listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('listener must be a function.')\n    }\n    var currentId = id;\n    listeners[currentId] = listener;\n    id += 1;\n    return currentId\n  }\n\n  // remove subscription by removing the listener function\n  function unsubscribe (id) {\n    listeners[id] = undefined;\n  }\n\n  return { getState: getState, setState: setState, subscribe: subscribe, unsubscribe: unsubscribe }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createBroadcast);\n\n\n//# sourceURL=webpack:///./node_modules/brcast/dist/brcast.es.js?");
+
+/***/ }),
+
+/***/ "./node_modules/classnames/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/classnames/index.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2016 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n//# sourceURL=webpack:///./node_modules/classnames/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/array/from.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js/library/fn/array/from.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es6.array.from */ \"./node_modules/core-js/library/modules/es6.array.from.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Array.from;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/array/from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/is-iterable.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/is-iterable.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\nmodule.exports = __webpack_require__(/*! ../modules/core.is-iterable */ \"./node_modules/core-js/library/modules/core.is-iterable.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/is-iterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/map.js":
+/*!************************************************!*\
+  !*** ./node_modules/core-js/library/fn/map.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.map */ \"./node_modules/core-js/library/modules/es6.map.js\");\n__webpack_require__(/*! ../modules/es7.map.to-json */ \"./node_modules/core-js/library/modules/es7.map.to-json.js\");\n__webpack_require__(/*! ../modules/es7.map.of */ \"./node_modules/core-js/library/modules/es7.map.of.js\");\n__webpack_require__(/*! ../modules/es7.map.from */ \"./node_modules/core-js/library/modules/es7.map.from.js\");\nmodule.exports = __webpack_require__(/*! ../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Map;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/map.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/number/is-nan.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/number/is-nan.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.number.is-nan */ \"./node_modules/core-js/library/modules/es6.number.is-nan.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Number.isNaN;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/number/is-nan.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/number/min-safe-integer.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/number/min-safe-integer.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.number.min-safe-integer */ \"./node_modules/core-js/library/modules/es6.number.min-safe-integer.js\");\nmodule.exports = -0x1fffffffffffff;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/number/min-safe-integer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/assign.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/assign.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/assign.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/create.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/create.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.create */ \"./node_modules/core-js/library/modules/es6.object.create.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/define-property.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/define-property.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.define-property */ \"./node_modules/core-js/library/modules/es6.object.define-property.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/define-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
+/*!*******************************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
+  \*******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ \"./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n  return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/get-own-property-symbols.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/get-own-property-symbols.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/core-js/library/modules/es6.symbol.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-own-property-symbols.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/get-prototype-of.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/get-prototype-of.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.getPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/keys.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/keys.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.keys */ \"./node_modules/core-js/library/modules/es6.object.keys.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.keys;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/object/set-prototype-of.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/object/set-prototype-of.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.setPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/symbol/index.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/fn/symbol/index.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/core-js/library/modules/es6.symbol.js\");\n__webpack_require__(/*! ../../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ \"./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.observable */ \"./node_modules/core-js/library/modules/es7.symbol.observable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Symbol;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/fn/symbol/iterator.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/fn/symbol/iterator.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\").f('iterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_a-function.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_a-function.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_a-function.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_add-to-unscopables.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_add-to-unscopables.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_an-instance.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_an-instance.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_an-instance.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_an-object.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_an-object.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_an-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_array-from-iterable.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_array-from-iterable.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/core-js/library/modules/_for-of.js\");\n\nmodule.exports = function (iter, ITERATOR) {\n  var result = [];\n  forOf(iter, false, result.push, result, ITERATOR);\n  return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-from-iterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_array-includes.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_array-includes.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-includes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_array-methods.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_array-methods.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar asc = __webpack_require__(/*! ./_array-species-create */ \"./node_modules/core-js/library/modules/_array-species-create.js\");\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-methods.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_array-species-constructor.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_array-species-constructor.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/library/modules/_is-array.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-species-constructor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_array-species-create.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_array-species-create.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ \"./node_modules/core-js/library/modules/_array-species-constructor.js\");\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-species-create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_classof.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_classof.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_classof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_cof.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_cof.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_cof.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_collection-strong.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_collection-strong.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar redefineAll = __webpack_require__(/*! ./_redefine-all */ \"./node_modules/core-js/library/modules/_redefine-all.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar anInstance = __webpack_require__(/*! ./_an-instance */ \"./node_modules/core-js/library/modules/_an-instance.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/core-js/library/modules/_for-of.js\");\nvar $iterDefine = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/library/modules/_iter-step.js\");\nvar setSpecies = __webpack_require__(/*! ./_set-species */ \"./node_modules/core-js/library/modules/_set-species.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar fastKey = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\").fastKey;\nvar validate = __webpack_require__(/*! ./_validate-collection */ \"./node_modules/core-js/library/modules/_validate-collection.js\");\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_collection-strong.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_collection-to-json.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_collection-to-json.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar from = __webpack_require__(/*! ./_array-from-iterable */ \"./node_modules/core-js/library/modules/_array-from-iterable.js\");\nmodule.exports = function (NAME) {\n  return function toJSON() {\n    if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n    return from(this);\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_collection-to-json.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_collection.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_collection.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar meta = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar redefineAll = __webpack_require__(/*! ./_redefine-all */ \"./node_modules/core-js/library/modules/_redefine-all.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/core-js/library/modules/_for-of.js\");\nvar anInstance = __webpack_require__(/*! ./_an-instance */ \"./node_modules/core-js/library/modules/_an-instance.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar each = __webpack_require__(/*! ./_array-methods */ \"./node_modules/core-js/library/modules/_array-methods.js\")(0);\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    C = wrapper(function (target, iterable) {\n      anInstance(target, C, NAME, '_c');\n      target._c = new Base();\n      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n    });\n    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n      var IS_ADDER = KEY == 'add' || KEY == 'set';\n      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n        anInstance(this, C, KEY);\n        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n        var result = this._c[KEY](a === 0 ? 0 : a, b);\n        return IS_ADDER ? this : result;\n      });\n    });\n    IS_WEAK || dP(C.prototype, 'size', {\n      get: function () {\n        return this._c.size;\n      }\n    });\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F, O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_collection.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_core.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_core.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var core = module.exports = { version: '2.5.6' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_core.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_create-property.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_create-property.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_create-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_ctx.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_ctx.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ctx.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_defined.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_defined.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_defined.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_descriptors.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_descriptors.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_descriptors.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_dom-create.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_dom-create.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_dom-create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_enum-bug-keys.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_enum-keys.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_enum-keys.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_export.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_export.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_export.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_fails.js":
+/*!********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_fails.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_fails.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_for-of.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_for-of.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/core-js/library/modules/_is-array-iter.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_for-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_global.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_global.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_global.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_has.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_has.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_has.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_hide.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_hide.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_hide.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_html.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_html.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_html.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_ie8-dom-define.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iobject.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iobject.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iobject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_is-array-iter.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_is-array-iter.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array-iter.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_is-array.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_is-array.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_is-object.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_is-object.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iter-call.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iter-call.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-call.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iter-create.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iter-create.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iter-define.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iter-define.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-define.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iter-detect.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iter-detect.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-detect.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iter-step.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iter-step.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-step.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_iterators.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_iterators.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = {};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iterators.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_library.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_library.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = true;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_library.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_meta.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_meta.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var META = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\")('meta');\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar setDesc = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_meta.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-assign.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-assign.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-assign.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-create.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-create.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(/*! ./_html */ \"./node_modules/core-js/library/modules/_html.js\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-dp.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-dp.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dp.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-dps.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-dps.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dps.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-gopd.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-gopd.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopd.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-gopn-ext.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-gopn-ext.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-gopn.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-gopn.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-gops.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-gops.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("exports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gops.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-gpo.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-gpo.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gpo.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-keys-internal.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-keys-internal.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-keys.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-keys.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-pie.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-pie.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("exports.f = {}.propertyIsEnumerable;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-pie.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_object-sap.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_object-sap.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-sap.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_property-desc.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_property-desc.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_property-desc.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_redefine-all.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_redefine-all.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    if (safe && target[key]) target[key] = src[key];\n    else hide(target, key, src[key]);\n  } return target;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_redefine-all.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_redefine.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_redefine.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_redefine.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_set-collection-from.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_set-collection-from.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/core-js/library/modules/_for-of.js\");\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n    var mapFn = arguments[1];\n    var mapping, A, n, cb;\n    aFunction(this);\n    mapping = mapFn !== undefined;\n    if (mapping) aFunction(mapFn);\n    if (source == undefined) return new this();\n    A = [];\n    if (mapping) {\n      n = 0;\n      cb = ctx(mapFn, arguments[2], 2);\n      forOf(source, false, function (nextItem) {\n        A.push(cb(nextItem, n++));\n      });\n    } else {\n      forOf(source, false, A.push, A);\n    }\n    return new this(A);\n  } });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-collection-from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_set-collection-of.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_set-collection-of.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { of: function of() {\n    var length = arguments.length;\n    var A = new Array(length);\n    while (length--) A[length] = arguments[length];\n    return new this(A);\n  } });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-collection-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_set-proto.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_set-proto.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\")(Function.call, __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-proto.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_set-species.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_set-species.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('species');\n\nmodule.exports = function (KEY) {\n  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-species.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_set-to-string-tag.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_set-to-string-tag.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_shared-key.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_shared-key.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared-key.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_shared.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_shared.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_string-at.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_string-at.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_string-at.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-absolute-index.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-absolute-index.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-integer.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-integer.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-integer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-iobject.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-iobject.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-iobject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-length.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-length.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-length.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-object.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-object.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-object.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_to-primitive.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_to-primitive.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-primitive.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_uid.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_uid.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_uid.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_validate-collection.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_validate-collection.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_validate-collection.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_wks-define.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_wks-define.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-define.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_wks-ext.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_wks-ext.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("exports.f = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-ext.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/_wks.js":
+/*!******************************************************!*\
+  !*** ./node_modules/core-js/library/modules/_wks.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/core.get-iterator-method.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/core.get-iterator-method.js ***!
+  \**************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/core.is-iterable.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/core.is-iterable.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").isIterable = function (it) {\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    // eslint-disable-next-line no-prototype-builtins\n    || Iterators.hasOwnProperty(classof(O));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.is-iterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.array.from.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.array.from.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/core-js/library/modules/_is-array-iter.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar createProperty = __webpack_require__(/*! ./_create-property */ \"./node_modules/core-js/library/modules/_create-property.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\n\n$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ \"./node_modules/core-js/library/modules/_iter-detect.js\")(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.array.from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.array.iterator.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.array.iterator.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.map.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.map.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar strong = __webpack_require__(/*! ./_collection-strong */ \"./node_modules/core-js/library/modules/_collection-strong.js\");\nvar validate = __webpack_require__(/*! ./_validate-collection */ \"./node_modules/core-js/library/modules/_validate-collection.js\");\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = __webpack_require__(/*! ./_collection */ \"./node_modules/core-js/library/modules/_collection.js\")(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.map.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.number.is-nan.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.number.is-nan.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 20.1.2.4 Number.isNaN(number)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.number.is-nan.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.number.min-safe-integer.js":
+/*!*****************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.number.min-safe-integer.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.number.min-safe-integer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.assign.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.assign.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/core-js/library/modules/_object-assign.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.assign.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.create.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.create.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.create.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.define-property.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.define-property.js ***!
+  \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
+/*!****************************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
+  \****************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f;\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
+/*!*****************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getPrototypeOf', function () {\n  return function getPrototypeOf(it) {\n    return $getPrototypeOf(toObject(it));\n  };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.get-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.keys.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.keys.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.keys.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
+/*!*****************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ \"./node_modules/core-js/library/modules/_set-proto.js\").set });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.object.to-string.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.object.to-string.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.to-string.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.string.iterator.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.string.iterator.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es6.symbol.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es6.symbol.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\").KEY;\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\");\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/core-js/library/modules/_enum-keys.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/library/modules/_is-array.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/core-js/library/modules/_object-gopn-ext.js\");\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\");\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n  __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n  __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\").f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\")) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es7.map.from.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es7.map.from.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n__webpack_require__(/*! ./_set-collection-from */ \"./node_modules/core-js/library/modules/_set-collection-from.js\")('Map');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.map.from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es7.map.of.js":
+/*!************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es7.map.of.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n__webpack_require__(/*! ./_set-collection-of */ \"./node_modules/core-js/library/modules/_set-collection-of.js\")('Map');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.map.of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es7.map.to-json.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es7.map.to-json.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(/*! ./_collection-to-json */ \"./node_modules/core-js/library/modules/_collection-to-json.js\")('Map') });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.map.to-json.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
+/*!***************************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
+  \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('asyncIterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/es7.symbol.observable.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/es7.symbol.observable.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('observable');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/core-js/library/modules/web.dom.iterable.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/core-js/library/modules/web.dom.iterable.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/css-vendor/lib/camelize.js":
+/*!*************************************************!*\
+  !*** ./node_modules/css-vendor/lib/camelize.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = camelize;\nvar regExp = /[-\\s]+(.)?/g;\n\n/**\n * Convert dash separated strings to camel cased.\n *\n * @param {String} str\n * @return {String}\n */\nfunction camelize(str) {\n  return str.replace(regExp, toUpper);\n}\n\nfunction toUpper(match, c) {\n  return c ? c.toUpperCase() : '';\n}\n\n//# sourceURL=webpack:///./node_modules/css-vendor/lib/camelize.js?");
+
+/***/ }),
+
+/***/ "./node_modules/css-vendor/lib/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/css-vendor/lib/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.supportedValue = exports.supportedProperty = exports.prefix = undefined;\n\nvar _prefix = __webpack_require__(/*! ./prefix */ \"./node_modules/css-vendor/lib/prefix.js\");\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _supportedProperty = __webpack_require__(/*! ./supported-property */ \"./node_modules/css-vendor/lib/supported-property.js\");\n\nvar _supportedProperty2 = _interopRequireDefault(_supportedProperty);\n\nvar _supportedValue = __webpack_require__(/*! ./supported-value */ \"./node_modules/css-vendor/lib/supported-value.js\");\n\nvar _supportedValue2 = _interopRequireDefault(_supportedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  prefix: _prefix2['default'],\n  supportedProperty: _supportedProperty2['default'],\n  supportedValue: _supportedValue2['default']\n}; /**\n    * CSS Vendor prefix detection and property feature testing.\n    *\n    * @copyright Oleg Slobodskoi 2015\n    * @website https://github.com/jsstyles/css-vendor\n    * @license MIT\n    */\n\nexports.prefix = _prefix2['default'];\nexports.supportedProperty = _supportedProperty2['default'];\nexports.supportedValue = _supportedValue2['default'];\n\n//# sourceURL=webpack:///./node_modules/css-vendor/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/css-vendor/lib/prefix.js":
+/*!***********************************************!*\
+  !*** ./node_modules/css-vendor/lib/prefix.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _isInBrowser = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar js = ''; /**\n              * Export javascript style and css style vendor prefixes.\n              * Based on \"transform\" support test.\n              */\n\nvar css = '';\n\n// We should not do anything if required serverside.\nif (_isInBrowser2['default']) {\n  // Order matters. We need to check Webkit the last one because\n  // other vendors use to add Webkit prefixes to some properties\n  var jsCssMap = {\n    Moz: '-moz-',\n    // IE did it wrong again ...\n    ms: '-ms-',\n    O: '-o-',\n    Webkit: '-webkit-'\n  };\n  var style = document.createElement('p').style;\n  var testProp = 'Transform';\n\n  for (var key in jsCssMap) {\n    if (key + testProp in style) {\n      js = key;\n      css = jsCssMap[key];\n      break;\n    }\n  }\n}\n\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String}}\n * @api public\n */\nexports['default'] = { js: js, css: css };\n\n//# sourceURL=webpack:///./node_modules/css-vendor/lib/prefix.js?");
+
+/***/ }),
+
+/***/ "./node_modules/css-vendor/lib/supported-property.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/css-vendor/lib/supported-property.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedProperty;\n\nvar _isInBrowser = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = __webpack_require__(/*! ./prefix */ \"./node_modules/css-vendor/lib/prefix.js\");\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _camelize = __webpack_require__(/*! ./camelize */ \"./node_modules/css-vendor/lib/camelize.js\");\n\nvar _camelize2 = _interopRequireDefault(_camelize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar el = void 0;\nvar cache = {};\n\nif (_isInBrowser2['default']) {\n  el = document.createElement('p');\n\n  /**\n   * We test every property on vendor prefix requirement.\n   * Once tested, result is cached. It gives us up to 70% perf boost.\n   * http://jsperf.com/element-style-object-access-vs-plain-object\n   *\n   * Prefill cache with known css properties to reduce amount of\n   * properties we need to feature test at runtime.\n   * http://davidwalsh.name/vendor-prefix\n   */\n  var computed = window.getComputedStyle(document.documentElement, '');\n  for (var key in computed) {\n    if (!isNaN(key)) cache[computed[key]] = computed[key];\n  }\n}\n\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedProperty(prop) {\n  // For server-side rendering.\n  if (!el) return prop;\n\n  // We have not tested this prop yet, lets do the test.\n  if (cache[prop] != null) return cache[prop];\n\n  // Camelization is required because we can't test using\n  // css syntax for e.g. in FF.\n  // Test if property is supported as it is.\n  if ((0, _camelize2['default'])(prop) in el.style) {\n    cache[prop] = prop;\n  }\n  // Test if property is supported with vendor prefix.\n  else if (_prefix2['default'].js + (0, _camelize2['default'])('-' + prop) in el.style) {\n      cache[prop] = _prefix2['default'].css + prop;\n    } else {\n      cache[prop] = false;\n    }\n\n  return cache[prop];\n}\n\n//# sourceURL=webpack:///./node_modules/css-vendor/lib/supported-property.js?");
+
+/***/ }),
+
+/***/ "./node_modules/css-vendor/lib/supported-value.js":
+/*!********************************************************!*\
+  !*** ./node_modules/css-vendor/lib/supported-value.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedValue;\n\nvar _isInBrowser = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = __webpack_require__(/*! ./prefix */ \"./node_modules/css-vendor/lib/prefix.js\");\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar cache = {};\nvar el = void 0;\n\nif (_isInBrowser2['default']) el = document.createElement('p');\n\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedValue(property, value) {\n  // For server-side rendering.\n  if (!el) return value;\n\n  // It is a string or a number as a string like '1'.\n  // We want only prefixable values here.\n  if (typeof value !== 'string' || !isNaN(parseInt(value, 10))) return value;\n\n  var cacheKey = property + value;\n\n  if (cache[cacheKey] != null) return cache[cacheKey];\n\n  // IE can even throw an error in some cases, for e.g. style.content = 'bar'\n  try {\n    // Test value as it is.\n    el.style[property] = value;\n  } catch (err) {\n    cache[cacheKey] = false;\n    return false;\n  }\n\n  // Value is supported as it is.\n  if (el.style[property] !== '') {\n    cache[cacheKey] = value;\n  } else {\n    // Test value with vendor prefix.\n    value = _prefix2['default'].css + value;\n\n    // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n    if (value === '-ms-flex') value = '-ms-flexbox';\n\n    el.style[property] = value;\n\n    // Value is supported with vendor prefix.\n    if (el.style[property] !== '') cache[cacheKey] = value;\n  }\n\n  if (!cache[cacheKey]) cache[cacheKey] = false;\n\n  // Reset style value.\n  el.style[property] = '';\n\n  return cache[cacheKey];\n}\n\n//# sourceURL=webpack:///./node_modules/css-vendor/lib/supported-value.js?");
+
+/***/ }),
+
+/***/ "./node_modules/deepmerge/dist/es.js":
+/*!*******************************************!*\
+  !*** ./node_modules/deepmerge/dist/es.js ***!
+  \*******************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (deepmerge_1);\n\n\n//# sourceURL=webpack:///./node_modules/deepmerge/dist/es.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/activeElement.js":
+/*!***************************************************!*\
+  !*** ./node_modules/dom-helpers/activeElement.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = activeElement;\n\nvar _ownerDocument = __webpack_require__(/*! ./ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\");\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction activeElement() {\n  var doc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _ownerDocument2.default)();\n\n  try {\n    return doc.activeElement;\n  } catch (e) {/* ie throws if no active element */}\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/activeElement.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/ownerDocument.js":
+/*!***************************************************!*\
+  !*** ./node_modules/dom-helpers/ownerDocument.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = ownerDocument;\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/ownerDocument.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/query/contains.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dom-helpers/query/contains.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inDOM = __webpack_require__(/*! ../util/inDOM */ \"./node_modules/dom-helpers/util/inDOM.js\");\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  return _inDOM2.default ? function (context, node) {\n    if (context.contains) {\n      return context.contains(node);\n    } else if (context.compareDocumentPosition) {\n      return context === node || !!(context.compareDocumentPosition(node) & 16);\n    } else {\n      return fallback(context, node);\n    }\n  } : fallback;\n}();\n\nfunction fallback(context, node) {\n  if (node) do {\n    if (node === context) return true;\n  } while (node = node.parentNode);\n\n  return false;\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/query/contains.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/query/isWindow.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dom-helpers/query/isWindow.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = getWindow;\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/query/isWindow.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/style/getComputedStyle.js":
+/*!************************************************************!*\
+  !*** ./node_modules/dom-helpers/style/getComputedStyle.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = __webpack_require__(/*! ../util/camelizeStyle */ \"./node_modules/dom-helpers/util/camelizeStyle.js\");\n\nvar _camelizeStyle2 = _interopRequireDefault(_camelizeStyle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n  if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n  var doc = node.ownerDocument;\n\n  return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n    //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n    getPropertyValue: function getPropertyValue(prop) {\n      var style = node.style;\n\n      prop = (0, _camelizeStyle2.default)(prop);\n\n      if (prop == 'float') prop = 'styleFloat';\n\n      var current = node.currentStyle[prop] || null;\n\n      if (current == null && style && style[prop]) current = style[prop];\n\n      if (rnumnonpx.test(current) && !rposition.test(prop)) {\n        // Remember the original values\n        var left = style.left;\n        var runStyle = node.runtimeStyle;\n        var rsLeft = runStyle && runStyle.left;\n\n        // Put in the new values to get a computed value out\n        if (rsLeft) runStyle.left = node.currentStyle.left;\n\n        style.left = prop === 'fontSize' ? '1em' : current;\n        current = style.pixelLeft + 'px';\n\n        // Revert the changed values\n        style.left = left;\n        if (rsLeft) runStyle.left = rsLeft;\n      }\n\n      return current;\n    }\n  };\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/style/getComputedStyle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/style/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/dom-helpers/style/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = style;\n\nvar _camelizeStyle = __webpack_require__(/*! ../util/camelizeStyle */ \"./node_modules/dom-helpers/util/camelizeStyle.js\");\n\nvar _camelizeStyle2 = _interopRequireDefault(_camelizeStyle);\n\nvar _hyphenateStyle = __webpack_require__(/*! ../util/hyphenateStyle */ \"./node_modules/dom-helpers/util/hyphenateStyle.js\");\n\nvar _hyphenateStyle2 = _interopRequireDefault(_hyphenateStyle);\n\nvar _getComputedStyle2 = __webpack_require__(/*! ./getComputedStyle */ \"./node_modules/dom-helpers/style/getComputedStyle.js\");\n\nvar _getComputedStyle3 = _interopRequireDefault(_getComputedStyle2);\n\nvar _removeStyle = __webpack_require__(/*! ./removeStyle */ \"./node_modules/dom-helpers/style/removeStyle.js\");\n\nvar _removeStyle2 = _interopRequireDefault(_removeStyle);\n\nvar _properties = __webpack_require__(/*! ../transition/properties */ \"./node_modules/dom-helpers/transition/properties.js\");\n\nvar _isTransform = __webpack_require__(/*! ../transition/isTransform */ \"./node_modules/dom-helpers/transition/isTransform.js\");\n\nvar _isTransform2 = _interopRequireDefault(_isTransform);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction style(node, property, value) {\n  var css = '';\n  var transforms = '';\n  var props = property;\n\n  if (typeof property === 'string') {\n    if (value === undefined) {\n      return node.style[(0, _camelizeStyle2.default)(property)] || (0, _getComputedStyle3.default)(node).getPropertyValue((0, _hyphenateStyle2.default)(property));\n    } else {\n      (props = {})[property] = value;\n    }\n  }\n\n  Object.keys(props).forEach(function (key) {\n    var value = props[key];\n    if (!value && value !== 0) {\n      (0, _removeStyle2.default)(node, (0, _hyphenateStyle2.default)(key));\n    } else if ((0, _isTransform2.default)(key)) {\n      transforms += key + '(' + value + ') ';\n    } else {\n      css += (0, _hyphenateStyle2.default)(key) + ': ' + value + ';';\n    }\n  });\n\n  if (transforms) {\n    css += _properties.transform + ': ' + transforms + ';';\n  }\n\n  node.style.cssText += ';' + css;\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/style/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/style/removeStyle.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/dom-helpers/style/removeStyle.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = removeStyle;\nfunction removeStyle(node, key) {\n  return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/style/removeStyle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/transition/isTransform.js":
+/*!************************************************************!*\
+  !*** ./node_modules/dom-helpers/transition/isTransform.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n  return !!(property && supportedTransforms.test(property));\n}\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/transition/isTransform.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/transition/properties.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/dom-helpers/transition/properties.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = undefined;\n\nvar _inDOM = __webpack_require__(/*! ../util/inDOM */ \"./node_modules/dom-helpers/util/inDOM.js\");\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transform = 'transform';\nvar prefix = void 0,\n    transitionEnd = void 0,\n    animationEnd = void 0;\nvar transitionProperty = void 0,\n    transitionDuration = void 0,\n    transitionTiming = void 0,\n    transitionDelay = void 0;\nvar animationName = void 0,\n    animationDuration = void 0,\n    animationTiming = void 0,\n    animationDelay = void 0;\n\nif (_inDOM2.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n\n\n  exports.transform = transform = prefix + '-' + transform;\n  exports.transitionProperty = transitionProperty = prefix + '-transition-property';\n  exports.transitionDuration = transitionDuration = prefix + '-transition-duration';\n  exports.transitionDelay = transitionDelay = prefix + '-transition-delay';\n  exports.transitionTiming = transitionTiming = prefix + '-transition-timing-function';\n\n  exports.animationName = animationName = prefix + '-animation-name';\n  exports.animationDuration = animationDuration = prefix + '-animation-duration';\n  exports.animationTiming = animationTiming = prefix + '-animation-delay';\n  exports.animationDelay = animationDelay = prefix + '-animation-timing-function';\n}\n\nexports.transform = transform;\nexports.transitionProperty = transitionProperty;\nexports.transitionTiming = transitionTiming;\nexports.transitionDelay = transitionDelay;\nexports.transitionDuration = transitionDuration;\nexports.transitionEnd = transitionEnd;\nexports.animationName = animationName;\nexports.animationDuration = animationDuration;\nexports.animationTiming = animationTiming;\nexports.animationDelay = animationDelay;\nexports.animationEnd = animationEnd;\nexports.default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\n\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n\n  var vendorMap = {\n    O: function O(e) {\n      return 'o' + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return 'webkit' + e;\n    },\n    ms: function ms(e) {\n      return 'MS' + e;\n    }\n  };\n\n  var vendors = Object.keys(vendorMap);\n\n  var transitionEnd = void 0,\n      animationEnd = void 0;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + 'TransitionProperty' in style) {\n      prefix = '-' + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n\n  style = null;\n\n  return { animationEnd: animationEnd, transitionEnd: transitionEnd, prefix: prefix };\n}\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/transition/properties.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/camelize.js":
+/*!***************************************************!*\
+  !*** ./node_modules/dom-helpers/util/camelize.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}\nmodule.exports = exports[\"default\"];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/camelize.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/camelizeStyle.js":
+/*!********************************************************!*\
+  !*** ./node_modules/dom-helpers/util/camelizeStyle.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = camelizeStyleName;\n\nvar _camelize = __webpack_require__(/*! ./camelize */ \"./node_modules/dom-helpers/util/camelize.js\");\n\nvar _camelize2 = _interopRequireDefault(_camelize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar msPattern = /^-ms-/; /**\n                          * Copyright 2014-2015, Facebook, Inc.\n                          * All rights reserved.\n                          * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n                          */\nfunction camelizeStyleName(string) {\n  return (0, _camelize2.default)(string.replace(msPattern, 'ms-'));\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/camelizeStyle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/hyphenate.js":
+/*!****************************************************!*\
+  !*** ./node_modules/dom-helpers/util/hyphenate.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hyphenate;\n\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/hyphenate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/hyphenateStyle.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/dom-helpers/util/hyphenateStyle.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = __webpack_require__(/*! ./hyphenate */ \"./node_modules/dom-helpers/util/hyphenate.js\");\n\nvar _hyphenate2 = _interopRequireDefault(_hyphenate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar msPattern = /^ms-/; /**\n                         * Copyright 2013-2014, Facebook, Inc.\n                         * All rights reserved.\n                         * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n                         */\n\nfunction hyphenateStyleName(string) {\n  return (0, _hyphenate2.default)(string).replace(msPattern, '-ms-');\n}\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/inDOM.js":
+/*!************************************************!*\
+  !*** ./node_modules/dom-helpers/util/inDOM.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/inDOM.js?");
+
+/***/ }),
+
+/***/ "./node_modules/dom-helpers/util/scrollbarSize.js":
+/*!********************************************************!*\
+  !*** ./node_modules/dom-helpers/util/scrollbarSize.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (_inDOM2.default) {\n      var scrollDiv = document.createElement('div');\n\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n};\n\nvar _inDOM = __webpack_require__(/*! ./inDOM */ \"./node_modules/dom-helpers/util/inDOM.js\");\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar size = void 0;\n\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/dom-helpers/util/scrollbarSize.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/ExecutionEnvironment.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/fbjs/lib/ExecutionEnvironment.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n  canUseDOM: canUseDOM,\n\n  canUseWorkers: typeof Worker !== 'undefined',\n\n  canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n  canUseViewport: canUseDOM && !!window.screen,\n\n  isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/ExecutionEnvironment.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/camelize.js":
+/*!*******************************************!*\
+  !*** ./node_modules/fbjs/lib/camelize.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n *   > camelize('background-color')\n *   < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n  return string.replace(_hyphenPattern, function (_, character) {\n    return character.toUpperCase();\n  });\n}\n\nmodule.exports = camelize;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/camelize.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/camelizeStyleName.js":
+/*!****************************************************!*\
+  !*** ./node_modules/fbjs/lib/camelizeStyleName.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(/*! ./camelize */ \"./node_modules/fbjs/lib/camelize.js\");\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n *   > camelizeStyleName('background-color')\n *   < \"backgroundColor\"\n *   > camelizeStyleName('-moz-transition')\n *   < \"MozTransition\"\n *   > camelizeStyleName('-ms-transition')\n *   < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n  return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/camelizeStyleName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/containsNode.js":
+/*!***********************************************!*\
+  !*** ./node_modules/fbjs/lib/containsNode.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = __webpack_require__(/*! ./isTextNode */ \"./node_modules/fbjs/lib/isTextNode.js\");\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = containsNode;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/containsNode.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/emptyFunction.js":
+/*!************************************************!*\
+  !*** ./node_modules/fbjs/lib/emptyFunction.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/emptyFunction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/emptyObject.js":
+/*!**********************************************!*\
+  !*** ./node_modules/fbjs/lib/emptyObject.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (true) {\n  Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/emptyObject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/getActiveElement.js":
+/*!***************************************************!*\
+  !*** ./node_modules/fbjs/lib/getActiveElement.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nmodule.exports = getActiveElement;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/getActiveElement.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/hyphenate.js":
+/*!********************************************!*\
+  !*** ./node_modules/fbjs/lib/hyphenate.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   > hyphenate('backgroundColor')\n *   < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n  return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/hyphenate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/hyphenateStyleName.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/fbjs/lib/hyphenateStyleName.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\nvar hyphenate = __webpack_require__(/*! ./hyphenate */ \"./node_modules/fbjs/lib/hyphenate.js\");\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/hyphenateStyleName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/invariant.js":
+/*!********************************************!*\
+  !*** ./node_modules/fbjs/lib/invariant.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (true) {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nmodule.exports = invariant;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/invariant.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/isNode.js":
+/*!*****************************************!*\
+  !*** ./node_modules/fbjs/lib/isNode.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n  var doc = object ? object.ownerDocument || object : document;\n  var defaultView = doc.defaultView || window;\n  return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/isNode.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/isTextNode.js":
+/*!*********************************************!*\
+  !*** ./node_modules/fbjs/lib/isTextNode.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = __webpack_require__(/*! ./isNode */ \"./node_modules/fbjs/lib/isNode.js\");\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n  return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/isTextNode.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/shallowEqual.js":
+/*!***********************************************!*\
+  !*** ./node_modules/fbjs/lib/shallowEqual.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    // Added the nonzero y check to make Flow happy, but it is redundant\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    // Step 6.a: NaN == NaN\n    return x !== x && y !== y;\n  }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqual;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/shallowEqual.js?");
+
+/***/ }),
+
+/***/ "./node_modules/fbjs/lib/warning.js":
+/*!******************************************!*\
+  !*** ./node_modules/fbjs/lib/warning.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(/*! ./emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (true) {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/warning.js?");
+
+/***/ }),
+
+/***/ "./node_modules/hoist-non-react-statics/index.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/hoist-non-react-statics/index.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n(function (global, factory) {\n     true ? module.exports = factory() :\n    undefined;\n}(this, (function () {\n    'use strict';\n    \n    var REACT_STATICS = {\n        childContextTypes: true,\n        contextTypes: true,\n        defaultProps: true,\n        displayName: true,\n        getDefaultProps: true,\n        getDerivedStateFromProps: true,\n        mixins: true,\n        propTypes: true,\n        type: true\n    };\n    \n    var KNOWN_STATICS = {\n        name: true,\n        length: true,\n        prototype: true,\n        caller: true,\n        callee: true,\n        arguments: true,\n        arity: true\n    };\n    \n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n    \n    return function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n        if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n            \n            if (objectPrototype) {\n                var inheritedComponent = getPrototypeOf(sourceComponent);\n                if (inheritedComponent && inheritedComponent !== objectPrototype) {\n                    hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n                }\n            }\n            \n            var keys = getOwnPropertyNames(sourceComponent);\n            \n            if (getOwnPropertySymbols) {\n                keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n            }\n            \n            for (var i = 0; i < keys.length; ++i) {\n                var key = keys[i];\n                if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n                    var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n                    try { // Avoid failures from read-only properties\n                        defineProperty(targetComponent, key, descriptor);\n                    } catch (e) {}\n                }\n            }\n            \n            return targetComponent;\n        }\n        \n        return targetComponent;\n    };\n})));\n\n\n//# sourceURL=webpack:///./node_modules/hoist-non-react-statics/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/hyphenate-style-name/index.js":
+/*!****************************************************!*\
+  !*** ./node_modules/hyphenate-style-name/index.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction hyphenateStyleName(string) {\n    return string in cache\n    ? cache[string]\n    : cache[string] = string\n      .replace(uppercasePattern, '-$&')\n      .toLowerCase()\n      .replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//# sourceURL=webpack:///./node_modules/hyphenate-style-name/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/is-in-browser/dist/module.js":
+/*!***************************************************!*\
+  !*** ./node_modules/is-in-browser/dist/module.js ***!
+  \***************************************************/
+/*! exports provided: isBrowser, default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowser\", function() { return isBrowser; });\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isBrowser);\n\n\n//# sourceURL=webpack:///./node_modules/is-in-browser/dist/module.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-camel-case/lib/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss-camel-case/lib/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = camelCase;\n\nvar _hyphenateStyleName = __webpack_require__(/*! hyphenate-style-name */ \"./node_modules/hyphenate-style-name/index.js\");\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Convert camel cased property names to dash separated.\n *\n * @param {Object} style\n * @return {Object}\n */\nfunction convertCase(style) {\n  var converted = {};\n\n  for (var prop in style) {\n    converted[(0, _hyphenateStyleName2['default'])(prop)] = style[prop];\n  }\n\n  if (style.fallbacks) {\n    if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n  }\n\n  return converted;\n}\n\n/**\n * Allow camel cased property names by converting them back to dasherized.\n *\n * @param {Rule} rule\n */\nfunction camelCase() {\n  function onProcessStyle(style) {\n    if (Array.isArray(style)) {\n      // Handle rules like @font-face, which can have multiple styles in an array\n      for (var index = 0; index < style.length; index++) {\n        style[index] = convertCase(style[index]);\n      }\n      return style;\n    }\n\n    return convertCase(style);\n  }\n\n  function onChangeValue(value, prop, rule) {\n    var hyphenatedProp = (0, _hyphenateStyleName2['default'])(prop);\n\n    // There was no camel case in place\n    if (prop === hyphenatedProp) return value;\n\n    rule.prop(hyphenatedProp, value);\n\n    // Core will ignore that property value we set the proper one above.\n    return null;\n  }\n\n  return { onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-camel-case/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-default-unit/lib/defaultUnits.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/jss-default-unit/lib/defaultUnits.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * Generated jss-default-unit CSS property units\n *\n * @type object\n */\nexports['default'] = {\n  'animation-delay': 'ms',\n  'animation-duration': 'ms',\n  'background-position': 'px',\n  'background-position-x': 'px',\n  'background-position-y': 'px',\n  'background-size': 'px',\n  border: 'px',\n  'border-bottom': 'px',\n  'border-bottom-left-radius': 'px',\n  'border-bottom-right-radius': 'px',\n  'border-bottom-width': 'px',\n  'border-left': 'px',\n  'border-left-width': 'px',\n  'border-radius': 'px',\n  'border-right': 'px',\n  'border-right-width': 'px',\n  'border-spacing': 'px',\n  'border-top': 'px',\n  'border-top-left-radius': 'px',\n  'border-top-right-radius': 'px',\n  'border-top-width': 'px',\n  'border-width': 'px',\n  'border-after-width': 'px',\n  'border-before-width': 'px',\n  'border-end-width': 'px',\n  'border-horizontal-spacing': 'px',\n  'border-start-width': 'px',\n  'border-vertical-spacing': 'px',\n  bottom: 'px',\n  'box-shadow': 'px',\n  'column-gap': 'px',\n  'column-rule': 'px',\n  'column-rule-width': 'px',\n  'column-width': 'px',\n  'flex-basis': 'px',\n  'font-size': 'px',\n  'font-size-delta': 'px',\n  height: 'px',\n  left: 'px',\n  'letter-spacing': 'px',\n  'logical-height': 'px',\n  'logical-width': 'px',\n  margin: 'px',\n  'margin-after': 'px',\n  'margin-before': 'px',\n  'margin-bottom': 'px',\n  'margin-left': 'px',\n  'margin-right': 'px',\n  'margin-top': 'px',\n  'max-height': 'px',\n  'max-width': 'px',\n  'margin-end': 'px',\n  'margin-start': 'px',\n  'mask-position-x': 'px',\n  'mask-position-y': 'px',\n  'mask-size': 'px',\n  'max-logical-height': 'px',\n  'max-logical-width': 'px',\n  'min-height': 'px',\n  'min-width': 'px',\n  'min-logical-height': 'px',\n  'min-logical-width': 'px',\n  motion: 'px',\n  'motion-offset': 'px',\n  outline: 'px',\n  'outline-offset': 'px',\n  'outline-width': 'px',\n  padding: 'px',\n  'padding-bottom': 'px',\n  'padding-left': 'px',\n  'padding-right': 'px',\n  'padding-top': 'px',\n  'padding-after': 'px',\n  'padding-before': 'px',\n  'padding-end': 'px',\n  'padding-start': 'px',\n  'perspective-origin-x': '%',\n  'perspective-origin-y': '%',\n  perspective: 'px',\n  right: 'px',\n  'shape-margin': 'px',\n  size: 'px',\n  'text-indent': 'px',\n  'text-stroke': 'px',\n  'text-stroke-width': 'px',\n  top: 'px',\n  'transform-origin': '%',\n  'transform-origin-x': '%',\n  'transform-origin-y': '%',\n  'transform-origin-z': '%',\n  'transition-delay': 'ms',\n  'transition-duration': 'ms',\n  'vertical-align': 'px',\n  width: 'px',\n  'word-spacing': 'px',\n  // Not existing properties.\n  // Used to avoid issues with jss-expand intergration.\n  'box-shadow-x': 'px',\n  'box-shadow-y': 'px',\n  'box-shadow-blur': 'px',\n  'box-shadow-spread': 'px',\n  'font-line-height': 'px',\n  'text-shadow-x': 'px',\n  'text-shadow-y': 'px',\n  'text-shadow-blur': 'px'\n};\n\n//# sourceURL=webpack:///./node_modules/jss-default-unit/lib/defaultUnits.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-default-unit/lib/index.js":
+/*!****************************************************!*\
+  !*** ./node_modules/jss-default-unit/lib/index.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports['default'] = defaultUnit;\n\nvar _defaultUnits = __webpack_require__(/*! ./defaultUnits */ \"./node_modules/jss-default-unit/lib/defaultUnits.js\");\n\nvar _defaultUnits2 = _interopRequireDefault(_defaultUnits);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n  var regExp = /(-[a-z])/g;\n  var replace = function replace(str) {\n    return str[1].toUpperCase();\n  };\n  var newObj = {};\n  for (var key in obj) {\n    newObj[key] = obj[key];\n    newObj[key.replace(regExp, replace)] = obj[key];\n  }\n  return newObj;\n}\n\nvar units = addCamelCasedVersion(_defaultUnits2['default']);\n\n/**\n * Recursive deep style passing function\n *\n * @param {String} current property\n * @param {(Object|Array|Number|String)} property value\n * @param {Object} options\n * @return {(Object|Array|Number|String)} resulting value\n */\nfunction iterate(prop, value, options) {\n  if (!value) return value;\n\n  var convertedValue = value;\n\n  var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n  if (type === 'object' && Array.isArray(value)) type = 'array';\n\n  switch (type) {\n    case 'object':\n      if (prop === 'fallbacks') {\n        for (var innerProp in value) {\n          value[innerProp] = iterate(innerProp, value[innerProp], options);\n        }\n        break;\n      }\n      for (var _innerProp in value) {\n        value[_innerProp] = iterate(prop + '-' + _innerProp, value[_innerProp], options);\n      }\n      break;\n    case 'array':\n      for (var i = 0; i < value.length; i++) {\n        value[i] = iterate(prop, value[i], options);\n      }\n      break;\n    case 'number':\n      if (value !== 0) {\n        convertedValue = value + (options[prop] || units[prop] || '');\n      }\n      break;\n    default:\n      break;\n  }\n\n  return convertedValue;\n}\n\n/**\n * Add unit to numeric values.\n */\nfunction defaultUnit() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  var camelCasedOptions = addCamelCasedVersion(options);\n\n  function onProcessStyle(style, rule) {\n    if (rule.type !== 'style') return style;\n\n    for (var prop in style) {\n      style[prop] = iterate(prop, style[prop], camelCasedOptions);\n    }\n\n    return style;\n  }\n\n  function onChangeValue(value, prop) {\n    return iterate(prop, value, camelCasedOptions);\n  }\n\n  return { onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-default-unit/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-global/lib/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/jss-global/lib/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports['default'] = jssGlobal;\n\nvar _jss = __webpack_require__(/*! jss */ \"./node_modules/jss/lib/index.js\");\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar propKey = '@global';\nvar prefixKey = '@global ';\n\nvar GlobalContainerRule = function () {\n  function GlobalContainerRule(key, styles, options) {\n    _classCallCheck(this, GlobalContainerRule);\n\n    this.type = 'global';\n\n    this.key = key;\n    this.options = options;\n    this.rules = new _jss.RuleList(_extends({}, options, {\n      parent: this\n    }));\n\n    for (var selector in styles) {\n      this.rules.add(selector, styles[selector], { selector: selector });\n    }\n\n    this.rules.process();\n  }\n\n  /**\n   * Get a rule.\n   */\n\n\n  _createClass(GlobalContainerRule, [{\n    key: 'getRule',\n    value: function getRule(name) {\n      return this.rules.get(name);\n    }\n\n    /**\n     * Create and register rule, run plugins.\n     */\n\n  }, {\n    key: 'addRule',\n    value: function addRule(name, style, options) {\n      var rule = this.rules.add(name, style, options);\n      this.options.jss.plugins.onProcessRule(rule);\n      return rule;\n    }\n\n    /**\n     * Get index of a rule.\n     */\n\n  }, {\n    key: 'indexOf',\n    value: function indexOf(rule) {\n      return this.rules.indexOf(rule);\n    }\n\n    /**\n     * Generates a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString() {\n      return this.rules.toString();\n    }\n  }]);\n\n  return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule = function () {\n  function GlobalPrefixedRule(name, style, options) {\n    _classCallCheck(this, GlobalPrefixedRule);\n\n    this.name = name;\n    this.options = options;\n    var selector = name.substr(prefixKey.length);\n    this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n      parent: this,\n      selector: selector\n    }));\n  }\n\n  _createClass(GlobalPrefixedRule, [{\n    key: 'toString',\n    value: function toString(options) {\n      return this.rule.toString(options);\n    }\n  }]);\n\n  return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n  var parts = selector.split(separatorRegExp);\n  var scoped = '';\n  for (var i = 0; i < parts.length; i++) {\n    scoped += scope + ' ' + parts[i].trim();\n    if (parts[i + 1]) scoped += ', ';\n  }\n  return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule) {\n  var options = rule.options,\n      style = rule.style;\n\n  var rules = style[propKey];\n\n  if (!rules) return;\n\n  for (var name in rules) {\n    options.sheet.addRule(name, rules[name], _extends({}, options, {\n      selector: addScope(name, rule.selector)\n    }));\n  }\n\n  delete style[propKey];\n}\n\nfunction handlePrefixedGlobalRule(rule) {\n  var options = rule.options,\n      style = rule.style;\n\n  for (var prop in style) {\n    if (prop.substr(0, propKey.length) !== propKey) continue;\n\n    var selector = addScope(prop.substr(propKey.length), rule.selector);\n    options.sheet.addRule(selector, style[prop], _extends({}, options, {\n      selector: selector\n    }));\n    delete style[prop];\n  }\n}\n\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\nfunction jssGlobal() {\n  function onCreateRule(name, styles, options) {\n    if (name === propKey) {\n      return new GlobalContainerRule(name, styles, options);\n    }\n\n    if (name[0] === '@' && name.substr(0, prefixKey.length) === prefixKey) {\n      return new GlobalPrefixedRule(name, styles, options);\n    }\n\n    var parent = options.parent;\n\n\n    if (parent) {\n      if (parent.type === 'global' || parent.options.parent.type === 'global') {\n        options.global = true;\n      }\n    }\n\n    if (options.global) options.selector = name;\n\n    return null;\n  }\n\n  function onProcessRule(rule) {\n    if (rule.type !== 'style') return;\n\n    handleNestedGlobalContainerRule(rule);\n    handlePrefixedGlobalRule(rule);\n  }\n\n  return { onCreateRule: onCreateRule, onProcessRule: onProcessRule };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-global/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-nested/lib/index.js":
+/*!**********************************************!*\
+  !*** ./node_modules/jss-nested/lib/index.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = jssNested;\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n\n/**\n * Convert nested rules to separate, remove them from original styles.\n *\n * @param {Rule} rule\n * @api public\n */\nfunction jssNested() {\n  // Get a function to be used for $ref replacement.\n  function getReplaceRef(container) {\n    return function (match, key) {\n      var rule = container.getRule(key);\n      if (rule) return rule.selector;\n      (0, _warning2.default)(false, '[JSS] Could not find the referenced rule %s in %s.', key, container.options.meta || container);\n      return key;\n    };\n  }\n\n  var hasAnd = function hasAnd(str) {\n    return str.indexOf('&') !== -1;\n  };\n\n  function replaceParentRefs(nestedProp, parentProp) {\n    var parentSelectors = parentProp.split(separatorRegExp);\n    var nestedSelectors = nestedProp.split(separatorRegExp);\n\n    var result = '';\n\n    for (var i = 0; i < parentSelectors.length; i++) {\n      var parent = parentSelectors[i];\n\n      for (var j = 0; j < nestedSelectors.length; j++) {\n        var nested = nestedSelectors[j];\n        if (result) result += ', ';\n        // Replace all & by the parent or prefix & with the parent.\n        result += hasAnd(nested) ? nested.replace(parentRegExp, parent) : parent + ' ' + nested;\n      }\n    }\n\n    return result;\n  }\n\n  function getOptions(rule, container, options) {\n    // Options has been already created, now we only increase index.\n    if (options) return _extends({}, options, { index: options.index + 1 });\n\n    var nestingLevel = rule.options.nestingLevel;\n\n    nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n    return _extends({}, rule.options, {\n      nestingLevel: nestingLevel,\n      index: container.indexOf(rule) + 1\n    });\n  }\n\n  function onProcessStyle(style, rule) {\n    if (rule.type !== 'style') return style;\n    var container = rule.options.parent;\n    var options = void 0;\n    var replaceRef = void 0;\n    for (var prop in style) {\n      var isNested = hasAnd(prop);\n      var isNestedConditional = prop[0] === '@';\n\n      if (!isNested && !isNestedConditional) continue;\n\n      options = getOptions(rule, container, options);\n\n      if (isNested) {\n        var selector = replaceParentRefs(prop, rule.selector\n        // Lazily create the ref replacer function just once for\n        // all nested rules within the sheet.\n        );if (!replaceRef) replaceRef = getReplaceRef(container\n        // Replace all $refs.\n        );selector = selector.replace(refRegExp, replaceRef);\n\n        container.addRule(selector, style[prop], _extends({}, options, { selector: selector }));\n      } else if (isNestedConditional) {\n        container\n        // Place conditional right after the parent rule to ensure right ordering.\n        .addRule(prop, null, options).addRule(rule.key, style[prop], { selector: rule.selector });\n      }\n\n      delete style[prop];\n    }\n\n    return style;\n  }\n\n  return { onProcessStyle: onProcessStyle };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-nested/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-props-sort/lib/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss-props-sort/lib/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = jssPropsSort;\n/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n  function sort(prop0, prop1) {\n    return prop0.length - prop1.length;\n  }\n\n  function onProcessStyle(style, rule) {\n    if (rule.type !== 'style') return style;\n\n    var newStyle = {};\n    var props = Object.keys(style).sort(sort);\n    for (var prop in props) {\n      newStyle[props[prop]] = style[props[prop]];\n    }\n    return newStyle;\n  }\n\n  return { onProcessStyle: onProcessStyle };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-props-sort/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss-vendor-prefixer/lib/index.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/jss-vendor-prefixer/lib/index.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = jssVendorPrefixer;\n\nvar _cssVendor = __webpack_require__(/*! css-vendor */ \"./node_modules/css-vendor/lib/index.js\");\n\nvar vendor = _interopRequireWildcard(_cssVendor);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/**\n * Add vendor prefix to a property name when needed.\n *\n * @param {Rule} rule\n * @api public\n */\nfunction jssVendorPrefixer() {\n  function onProcessRule(rule) {\n    if (rule.type === 'keyframes') {\n      rule.key = '@' + vendor.prefix.css + rule.key.substr(1);\n    }\n  }\n\n  function onProcessStyle(style, rule) {\n    if (rule.type !== 'style') return style;\n\n    for (var prop in style) {\n      var value = style[prop];\n\n      var changeProp = false;\n      var supportedProp = vendor.supportedProperty(prop);\n      if (supportedProp && supportedProp !== prop) changeProp = true;\n\n      var changeValue = false;\n      var supportedValue = vendor.supportedValue(supportedProp, value);\n      if (supportedValue && supportedValue !== value) changeValue = true;\n\n      if (changeProp || changeValue) {\n        if (changeProp) delete style[prop];\n        style[supportedProp || prop] = supportedValue || value;\n      }\n    }\n\n    return style;\n  }\n\n  function onChangeValue(value, prop) {\n    return vendor.supportedValue(prop, value);\n  }\n\n  return { onProcessRule: onProcessRule, onProcessStyle: onProcessStyle, onChangeValue: onChangeValue };\n}\n\n//# sourceURL=webpack:///./node_modules/jss-vendor-prefixer/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/Jss.js":
+/*!*************************************!*\
+  !*** ./node_modules/jss/lib/Jss.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _isInBrowser = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _StyleSheet = __webpack_require__(/*! ./StyleSheet */ \"./node_modules/jss/lib/StyleSheet.js\");\n\nvar _StyleSheet2 = _interopRequireDefault(_StyleSheet);\n\nvar _PluginsRegistry = __webpack_require__(/*! ./PluginsRegistry */ \"./node_modules/jss/lib/PluginsRegistry.js\");\n\nvar _PluginsRegistry2 = _interopRequireDefault(_PluginsRegistry);\n\nvar _rules = __webpack_require__(/*! ./plugins/rules */ \"./node_modules/jss/lib/plugins/rules.js\");\n\nvar _rules2 = _interopRequireDefault(_rules);\n\nvar _observables = __webpack_require__(/*! ./plugins/observables */ \"./node_modules/jss/lib/plugins/observables.js\");\n\nvar _observables2 = _interopRequireDefault(_observables);\n\nvar _functions = __webpack_require__(/*! ./plugins/functions */ \"./node_modules/jss/lib/plugins/functions.js\");\n\nvar _functions2 = _interopRequireDefault(_functions);\n\nvar _sheets = __webpack_require__(/*! ./sheets */ \"./node_modules/jss/lib/sheets.js\");\n\nvar _sheets2 = _interopRequireDefault(_sheets);\n\nvar _StyleRule = __webpack_require__(/*! ./rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _createGenerateClassName = __webpack_require__(/*! ./utils/createGenerateClassName */ \"./node_modules/jss/lib/utils/createGenerateClassName.js\");\n\nvar _createGenerateClassName2 = _interopRequireDefault(_createGenerateClassName);\n\nvar _createRule2 = __webpack_require__(/*! ./utils/createRule */ \"./node_modules/jss/lib/utils/createRule.js\");\n\nvar _createRule3 = _interopRequireDefault(_createRule2);\n\nvar _DomRenderer = __webpack_require__(/*! ./renderers/DomRenderer */ \"./node_modules/jss/lib/renderers/DomRenderer.js\");\n\nvar _DomRenderer2 = _interopRequireDefault(_DomRenderer);\n\nvar _VirtualRenderer = __webpack_require__(/*! ./renderers/VirtualRenderer */ \"./node_modules/jss/lib/renderers/VirtualRenderer.js\");\n\nvar _VirtualRenderer2 = _interopRequireDefault(_VirtualRenderer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultPlugins = _rules2['default'].concat([_observables2['default'], _functions2['default']]);\n\nvar instanceCounter = 0;\n\nvar Jss = function () {\n  function Jss(options) {\n    _classCallCheck(this, Jss);\n\n    this.id = instanceCounter++;\n    this.version = \"9.8.1\";\n    this.plugins = new _PluginsRegistry2['default']();\n    this.options = {\n      createGenerateClassName: _createGenerateClassName2['default'],\n      Renderer: _isInBrowser2['default'] ? _DomRenderer2['default'] : _VirtualRenderer2['default'],\n      plugins: []\n    };\n    this.generateClassName = (0, _createGenerateClassName2['default'])();\n\n    // eslint-disable-next-line prefer-spread\n    this.use.apply(this, defaultPlugins);\n    this.setup(options);\n  }\n\n  _createClass(Jss, [{\n    key: 'setup',\n    value: function setup() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (options.createGenerateClassName) {\n        this.options.createGenerateClassName = options.createGenerateClassName;\n        // $FlowFixMe\n        this.generateClassName = options.createGenerateClassName();\n      }\n\n      if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n      if (options.virtual || options.Renderer) {\n        this.options.Renderer = options.Renderer || (options.virtual ? _VirtualRenderer2['default'] : _DomRenderer2['default']);\n      }\n\n      // eslint-disable-next-line prefer-spread\n      if (options.plugins) this.use.apply(this, options.plugins);\n\n      return this;\n    }\n\n    /**\n     * Create a Style Sheet.\n     */\n\n  }, {\n    key: 'createStyleSheet',\n    value: function createStyleSheet(styles) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      var index = options.index;\n      if (typeof index !== 'number') {\n        index = _sheets2['default'].index === 0 ? 0 : _sheets2['default'].index + 1;\n      }\n      var sheet = new _StyleSheet2['default'](styles, _extends({}, options, {\n        jss: this,\n        generateClassName: options.generateClassName || this.generateClassName,\n        insertionPoint: this.options.insertionPoint,\n        Renderer: this.options.Renderer,\n        index: index\n      }));\n      this.plugins.onProcessSheet(sheet);\n\n      return sheet;\n    }\n\n    /**\n     * Detach the Style Sheet and remove it from the registry.\n     */\n\n  }, {\n    key: 'removeStyleSheet',\n    value: function removeStyleSheet(sheet) {\n      sheet.detach();\n      _sheets2['default'].remove(sheet);\n      return this;\n    }\n\n    /**\n     * Create a rule without a Style Sheet.\n     */\n\n  }, {\n    key: 'createRule',\n    value: function createRule(name) {\n      var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      // Enable rule without name for inline styles.\n      if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n        options = style;\n        style = name;\n        name = undefined;\n      }\n\n      // Cast from RuleFactoryOptions to RuleOptions\n      // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n      var ruleOptions = options;\n\n      ruleOptions.jss = this;\n      ruleOptions.Renderer = this.options.Renderer;\n      if (!ruleOptions.generateClassName) ruleOptions.generateClassName = this.generateClassName;\n      if (!ruleOptions.classes) ruleOptions.classes = {};\n      var rule = (0, _createRule3['default'])(name, style, ruleOptions);\n\n      if (!ruleOptions.selector && rule instanceof _StyleRule2['default']) {\n        rule.selector = '.' + ruleOptions.generateClassName(rule);\n      }\n\n      this.plugins.onProcessRule(rule);\n\n      return rule;\n    }\n\n    /**\n     * Register plugin. Passed function will be invoked with a rule instance.\n     */\n\n  }, {\n    key: 'use',\n    value: function use() {\n      var _this = this;\n\n      for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {\n        plugins[_key] = arguments[_key];\n      }\n\n      plugins.forEach(function (plugin) {\n        // Avoids applying same plugin twice, at least based on ref.\n        if (_this.options.plugins.indexOf(plugin) === -1) {\n          _this.options.plugins.push(plugin);\n          _this.plugins.use(plugin);\n        }\n      });\n\n      return this;\n    }\n  }]);\n\n  return Jss;\n}();\n\nexports['default'] = Jss;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/Jss.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/PluginsRegistry.js":
+/*!*************************************************!*\
+  !*** ./node_modules/jss/lib/PluginsRegistry.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PluginsRegistry = function () {\n  function PluginsRegistry() {\n    _classCallCheck(this, PluginsRegistry);\n\n    this.hooks = {\n      onCreateRule: [],\n      onProcessRule: [],\n      onProcessStyle: [],\n      onProcessSheet: [],\n      onChangeValue: [],\n      onUpdate: []\n\n      /**\n       * Call `onCreateRule` hooks and return an object if returned by a hook.\n       */\n    };\n  }\n\n  _createClass(PluginsRegistry, [{\n    key: 'onCreateRule',\n    value: function onCreateRule(name, decl, options) {\n      for (var i = 0; i < this.hooks.onCreateRule.length; i++) {\n        var rule = this.hooks.onCreateRule[i](name, decl, options);\n        if (rule) return rule;\n      }\n      return null;\n    }\n\n    /**\n     * Call `onProcessRule` hooks.\n     */\n\n  }, {\n    key: 'onProcessRule',\n    value: function onProcessRule(rule) {\n      if (rule.isProcessed) return;\n      var sheet = rule.options.sheet;\n\n      for (var i = 0; i < this.hooks.onProcessRule.length; i++) {\n        this.hooks.onProcessRule[i](rule, sheet);\n      }\n\n      // $FlowFixMe\n      if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n\n      rule.isProcessed = true;\n    }\n\n    /**\n     * Call `onProcessStyle` hooks.\n     */\n\n  }, {\n    key: 'onProcessStyle',\n    value: function onProcessStyle(style, rule, sheet) {\n      var nextStyle = style;\n\n      for (var i = 0; i < this.hooks.onProcessStyle.length; i++) {\n        nextStyle = this.hooks.onProcessStyle[i](nextStyle, rule, sheet);\n        // $FlowFixMe\n        rule.style = nextStyle;\n      }\n    }\n\n    /**\n     * Call `onProcessSheet` hooks.\n     */\n\n  }, {\n    key: 'onProcessSheet',\n    value: function onProcessSheet(sheet) {\n      for (var i = 0; i < this.hooks.onProcessSheet.length; i++) {\n        this.hooks.onProcessSheet[i](sheet);\n      }\n    }\n\n    /**\n     * Call `onUpdate` hooks.\n     */\n\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(data, rule, sheet) {\n      for (var i = 0; i < this.hooks.onUpdate.length; i++) {\n        this.hooks.onUpdate[i](data, rule, sheet);\n      }\n    }\n\n    /**\n     * Call `onChangeValue` hooks.\n     */\n\n  }, {\n    key: 'onChangeValue',\n    value: function onChangeValue(value, prop, rule) {\n      var processedValue = value;\n      for (var i = 0; i < this.hooks.onChangeValue.length; i++) {\n        processedValue = this.hooks.onChangeValue[i](processedValue, prop, rule);\n      }\n      return processedValue;\n    }\n\n    /**\n     * Register a plugin.\n     * If function is passed, it is a shortcut for `{onProcessRule}`.\n     */\n\n  }, {\n    key: 'use',\n    value: function use(plugin) {\n      for (var name in plugin) {\n        if (this.hooks[name]) this.hooks[name].push(plugin[name]);else (0, _warning2['default'])(false, '[JSS] Unknown hook \"%s\".', name);\n      }\n    }\n  }]);\n\n  return PluginsRegistry;\n}();\n\nexports['default'] = PluginsRegistry;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/PluginsRegistry.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/RuleList.js":
+/*!******************************************!*\
+  !*** ./node_modules/jss/lib/RuleList.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _createRule = __webpack_require__(/*! ./utils/createRule */ \"./node_modules/jss/lib/utils/createRule.js\");\n\nvar _createRule2 = _interopRequireDefault(_createRule);\n\nvar _linkRule = __webpack_require__(/*! ./utils/linkRule */ \"./node_modules/jss/lib/utils/linkRule.js\");\n\nvar _linkRule2 = _interopRequireDefault(_linkRule);\n\nvar _StyleRule = __webpack_require__(/*! ./rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _escape = __webpack_require__(/*! ./utils/escape */ \"./node_modules/jss/lib/utils/escape.js\");\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\nvar RuleList = function () {\n\n  // Original styles object.\n  function RuleList(options) {\n    _classCallCheck(this, RuleList);\n\n    this.map = {};\n    this.raw = {};\n    this.index = [];\n\n    this.options = options;\n    this.classes = options.classes;\n  }\n\n  /**\n   * Create and register rule.\n   *\n   * Will not render after Style Sheet was rendered the first time.\n   */\n\n\n  // Used to ensure correct rules order.\n\n  // Rules registry for access by .get() method.\n  // It contains the same rule registered by name and by selector.\n\n\n  _createClass(RuleList, [{\n    key: 'add',\n    value: function add(name, decl, options) {\n      var _options = this.options,\n          parent = _options.parent,\n          sheet = _options.sheet,\n          jss = _options.jss,\n          Renderer = _options.Renderer,\n          generateClassName = _options.generateClassName;\n\n\n      options = _extends({\n        classes: this.classes,\n        parent: parent,\n        sheet: sheet,\n        jss: jss,\n        Renderer: Renderer,\n        generateClassName: generateClassName\n      }, options);\n\n      if (!options.selector && this.classes[name]) {\n        options.selector = '.' + (0, _escape2['default'])(this.classes[name]);\n      }\n\n      this.raw[name] = decl;\n\n      var rule = (0, _createRule2['default'])(name, decl, options);\n\n      var className = void 0;\n\n      if (!options.selector && rule instanceof _StyleRule2['default']) {\n        className = generateClassName(rule, sheet);\n        rule.selector = '.' + (0, _escape2['default'])(className);\n      }\n\n      this.register(rule, className);\n\n      var index = options.index === undefined ? this.index.length : options.index;\n      this.index.splice(index, 0, rule);\n\n      return rule;\n    }\n\n    /**\n     * Get a rule.\n     */\n\n  }, {\n    key: 'get',\n    value: function get(name) {\n      return this.map[name];\n    }\n\n    /**\n     * Delete a rule.\n     */\n\n  }, {\n    key: 'remove',\n    value: function remove(rule) {\n      this.unregister(rule);\n      this.index.splice(this.indexOf(rule), 1);\n    }\n\n    /**\n     * Get index of a rule.\n     */\n\n  }, {\n    key: 'indexOf',\n    value: function indexOf(rule) {\n      return this.index.indexOf(rule);\n    }\n\n    /**\n     * Run `onProcessRule()` plugins on every rule.\n     */\n\n  }, {\n    key: 'process',\n    value: function process() {\n      var plugins = this.options.jss.plugins;\n      // We need to clone array because if we modify the index somewhere else during a loop\n      // we end up with very hard-to-track-down side effects.\n\n      this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n    }\n\n    /**\n     * Register a rule in `.map` and `.classes` maps.\n     */\n\n  }, {\n    key: 'register',\n    value: function register(rule, className) {\n      this.map[rule.key] = rule;\n      if (rule instanceof _StyleRule2['default']) {\n        this.map[rule.selector] = rule;\n        if (className) this.classes[rule.key] = className;\n      }\n    }\n\n    /**\n     * Unregister a rule.\n     */\n\n  }, {\n    key: 'unregister',\n    value: function unregister(rule) {\n      delete this.map[rule.key];\n      if (rule instanceof _StyleRule2['default']) {\n        delete this.map[rule.selector];\n        delete this.classes[rule.key];\n      }\n    }\n\n    /**\n     * Update the function values with a new data.\n     */\n\n  }, {\n    key: 'update',\n    value: function update(name, data) {\n      var _options2 = this.options,\n          plugins = _options2.jss.plugins,\n          sheet = _options2.sheet;\n\n      if (typeof name === 'string') {\n        plugins.onUpdate(data, this.get(name), sheet);\n        return;\n      }\n\n      for (var index = 0; index < this.index.length; index++) {\n        plugins.onUpdate(name, this.index[index], sheet);\n      }\n    }\n\n    /**\n     * Link renderable rules with CSSRuleList.\n     */\n\n  }, {\n    key: 'link',\n    value: function link(cssRules) {\n      var map = this.options.sheet.renderer.getUnescapedKeysMap(this.index);\n\n      for (var i = 0; i < cssRules.length; i++) {\n        var cssRule = cssRules[i];\n        var _key = this.options.sheet.renderer.getKey(cssRule);\n        if (map[_key]) _key = map[_key];\n        var rule = this.map[_key];\n        if (rule) (0, _linkRule2['default'])(rule, cssRule);\n      }\n    }\n\n    /**\n     * Convert rules to a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString(options) {\n      var str = '';\n      var sheet = this.options.sheet;\n\n      var link = sheet ? sheet.options.link : false;\n\n      for (var index = 0; index < this.index.length; index++) {\n        var rule = this.index[index];\n        var css = rule.toString(options);\n\n        // No need to render an empty rule.\n        if (!css && !link) continue;\n\n        if (str) str += '\\n';\n        str += css;\n      }\n\n      return str;\n    }\n  }]);\n\n  return RuleList;\n}();\n\nexports['default'] = RuleList;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/RuleList.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/SheetsManager.js":
+/*!***********************************************!*\
+  !*** ./node_modules/jss/lib/SheetsManager.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager = function () {\n  function SheetsManager() {\n    _classCallCheck(this, SheetsManager);\n\n    this.sheets = [];\n    this.refs = [];\n    this.keys = [];\n  }\n\n  _createClass(SheetsManager, [{\n    key: 'get',\n    value: function get(key) {\n      var index = this.keys.indexOf(key);\n      return this.sheets[index];\n    }\n  }, {\n    key: 'add',\n    value: function add(key, sheet) {\n      var sheets = this.sheets,\n          refs = this.refs,\n          keys = this.keys;\n\n      var index = sheets.indexOf(sheet);\n\n      if (index !== -1) return index;\n\n      sheets.push(sheet);\n      refs.push(0);\n      keys.push(key);\n\n      return sheets.length - 1;\n    }\n  }, {\n    key: 'manage',\n    value: function manage(key) {\n      var index = this.keys.indexOf(key);\n      var sheet = this.sheets[index];\n      if (this.refs[index] === 0) sheet.attach();\n      this.refs[index]++;\n      if (!this.keys[index]) this.keys.splice(index, 0, key);\n      return sheet;\n    }\n  }, {\n    key: 'unmanage',\n    value: function unmanage(key) {\n      var index = this.keys.indexOf(key);\n      if (index === -1) {\n        // eslint-ignore-next-line no-console\n        (0, _warning2['default'])(false, \"SheetsManager: can't find sheet to unmanage\");\n        return;\n      }\n      if (this.refs[index] > 0) {\n        this.refs[index]--;\n        if (this.refs[index] === 0) this.sheets[index].detach();\n      }\n    }\n  }, {\n    key: 'size',\n    get: function get() {\n      return this.keys.length;\n    }\n  }]);\n\n  return SheetsManager;\n}();\n\nexports['default'] = SheetsManager;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/SheetsManager.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/SheetsRegistry.js":
+/*!************************************************!*\
+  !*** ./node_modules/jss/lib/SheetsRegistry.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry = function () {\n  function SheetsRegistry() {\n    _classCallCheck(this, SheetsRegistry);\n\n    this.registry = [];\n  }\n\n  _createClass(SheetsRegistry, [{\n    key: 'add',\n\n\n    /**\n     * Register a Style Sheet.\n     */\n    value: function add(sheet) {\n      var registry = this.registry;\n      var index = sheet.options.index;\n\n\n      if (registry.indexOf(sheet) !== -1) return;\n\n      if (registry.length === 0 || index >= this.index) {\n        registry.push(sheet);\n        return;\n      }\n\n      // Find a position.\n      for (var i = 0; i < registry.length; i++) {\n        if (registry[i].options.index > index) {\n          registry.splice(i, 0, sheet);\n          return;\n        }\n      }\n    }\n\n    /**\n     * Reset the registry.\n     */\n\n  }, {\n    key: 'reset',\n    value: function reset() {\n      this.registry = [];\n    }\n\n    /**\n     * Remove a Style Sheet.\n     */\n\n  }, {\n    key: 'remove',\n    value: function remove(sheet) {\n      var index = this.registry.indexOf(sheet);\n      this.registry.splice(index, 1);\n    }\n\n    /**\n     * Convert all attached sheets to a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString(options) {\n      return this.registry.filter(function (sheet) {\n        return sheet.attached;\n      }).map(function (sheet) {\n        return sheet.toString(options);\n      }).join('\\n');\n    }\n  }, {\n    key: 'index',\n\n\n    /**\n     * Current highest index number.\n     */\n    get: function get() {\n      return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n    }\n  }]);\n\n  return SheetsRegistry;\n}();\n\nexports['default'] = SheetsRegistry;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/SheetsRegistry.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/StyleSheet.js":
+/*!********************************************!*\
+  !*** ./node_modules/jss/lib/StyleSheet.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _linkRule = __webpack_require__(/*! ./utils/linkRule */ \"./node_modules/jss/lib/utils/linkRule.js\");\n\nvar _linkRule2 = _interopRequireDefault(_linkRule);\n\nvar _RuleList = __webpack_require__(/*! ./RuleList */ \"./node_modules/jss/lib/RuleList.js\");\n\nvar _RuleList2 = _interopRequireDefault(_RuleList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StyleSheet = function () {\n  function StyleSheet(styles, options) {\n    _classCallCheck(this, StyleSheet);\n\n    this.attached = false;\n    this.deployed = false;\n    this.linked = false;\n    this.classes = {};\n    this.options = _extends({}, options, {\n      sheet: this,\n      parent: this,\n      classes: this.classes\n    });\n    this.renderer = new options.Renderer(this);\n    this.rules = new _RuleList2['default'](this.options);\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n\n  /**\n   * Attach renderable to the render tree.\n   */\n\n\n  _createClass(StyleSheet, [{\n    key: 'attach',\n    value: function attach() {\n      if (this.attached) return this;\n      if (!this.deployed) this.deploy();\n      this.renderer.attach();\n      if (!this.linked && this.options.link) this.link();\n      this.attached = true;\n      return this;\n    }\n\n    /**\n     * Remove renderable from render tree.\n     */\n\n  }, {\n    key: 'detach',\n    value: function detach() {\n      if (!this.attached) return this;\n      this.renderer.detach();\n      this.attached = false;\n      return this;\n    }\n\n    /**\n     * Add a rule to the current stylesheet.\n     * Will insert a rule also after the stylesheet has been rendered first time.\n     */\n\n  }, {\n    key: 'addRule',\n    value: function addRule(name, decl, options) {\n      var queue = this.queue;\n\n      // Plugins can create rules.\n      // In order to preserve the right order, we need to queue all `.addRule` calls,\n      // which happen after the first `rules.add()` call.\n\n      if (this.attached && !queue) this.queue = [];\n\n      var rule = this.rules.add(name, decl, options);\n      this.options.jss.plugins.onProcessRule(rule);\n\n      if (this.attached) {\n        if (!this.deployed) return rule;\n        // Don't insert rule directly if there is no stringified version yet.\n        // It will be inserted all together when .attach is called.\n        if (queue) queue.push(rule);else {\n          this.insertRule(rule);\n          if (this.queue) {\n            this.queue.forEach(this.insertRule, this);\n            this.queue = undefined;\n          }\n        }\n        return rule;\n      }\n\n      // We can't add rules to a detached style node.\n      // We will redeploy the sheet once user will attach it.\n      this.deployed = false;\n\n      return rule;\n    }\n\n    /**\n     * Insert rule into the StyleSheet\n     */\n\n  }, {\n    key: 'insertRule',\n    value: function insertRule(rule) {\n      var renderable = this.renderer.insertRule(rule);\n      if (renderable && this.options.link) (0, _linkRule2['default'])(rule, renderable);\n    }\n\n    /**\n     * Create and add rules.\n     * Will render also after Style Sheet was rendered the first time.\n     */\n\n  }, {\n    key: 'addRules',\n    value: function addRules(styles, options) {\n      var added = [];\n      for (var name in styles) {\n        added.push(this.addRule(name, styles[name], options));\n      }\n      return added;\n    }\n\n    /**\n     * Get a rule by name.\n     */\n\n  }, {\n    key: 'getRule',\n    value: function getRule(name) {\n      return this.rules.get(name);\n    }\n\n    /**\n     * Delete a rule by name.\n     * Returns `true`: if rule has been deleted from the DOM.\n     */\n\n  }, {\n    key: 'deleteRule',\n    value: function deleteRule(name) {\n      var rule = this.rules.get(name);\n\n      if (!rule) return false;\n\n      this.rules.remove(rule);\n\n      if (this.attached && rule.renderable) {\n        return this.renderer.deleteRule(rule.renderable);\n      }\n\n      return true;\n    }\n\n    /**\n     * Get index of a rule.\n     */\n\n  }, {\n    key: 'indexOf',\n    value: function indexOf(rule) {\n      return this.rules.indexOf(rule);\n    }\n\n    /**\n     * Deploy pure CSS string to a renderable.\n     */\n\n  }, {\n    key: 'deploy',\n    value: function deploy() {\n      this.renderer.deploy();\n      this.deployed = true;\n      return this;\n    }\n\n    /**\n     * Link renderable CSS rules from sheet with their corresponding models.\n     */\n\n  }, {\n    key: 'link',\n    value: function link() {\n      var cssRules = this.renderer.getRules();\n\n      // Is undefined when VirtualRenderer is used.\n      if (cssRules) this.rules.link(cssRules);\n      this.linked = true;\n      return this;\n    }\n\n    /**\n     * Update the function values with a new data.\n     */\n\n  }, {\n    key: 'update',\n    value: function update(name, data) {\n      this.rules.update(name, data);\n      return this;\n    }\n\n    /**\n     * Convert rules to a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString(options) {\n      return this.rules.toString(options);\n    }\n  }]);\n\n  return StyleSheet;\n}();\n\nexports['default'] = StyleSheet;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/StyleSheet.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/index.js":
+/*!***************************************!*\
+  !*** ./node_modules/jss/lib/index.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.create = exports.createGenerateClassName = exports.sheets = exports.RuleList = exports.SheetsManager = exports.SheetsRegistry = exports.toCssValue = exports.getDynamicStyles = undefined;\n\nvar _getDynamicStyles = __webpack_require__(/*! ./utils/getDynamicStyles */ \"./node_modules/jss/lib/utils/getDynamicStyles.js\");\n\nObject.defineProperty(exports, 'getDynamicStyles', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_getDynamicStyles)['default'];\n  }\n});\n\nvar _toCssValue = __webpack_require__(/*! ./utils/toCssValue */ \"./node_modules/jss/lib/utils/toCssValue.js\");\n\nObject.defineProperty(exports, 'toCssValue', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_toCssValue)['default'];\n  }\n});\n\nvar _SheetsRegistry = __webpack_require__(/*! ./SheetsRegistry */ \"./node_modules/jss/lib/SheetsRegistry.js\");\n\nObject.defineProperty(exports, 'SheetsRegistry', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_SheetsRegistry)['default'];\n  }\n});\n\nvar _SheetsManager = __webpack_require__(/*! ./SheetsManager */ \"./node_modules/jss/lib/SheetsManager.js\");\n\nObject.defineProperty(exports, 'SheetsManager', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_SheetsManager)['default'];\n  }\n});\n\nvar _RuleList = __webpack_require__(/*! ./RuleList */ \"./node_modules/jss/lib/RuleList.js\");\n\nObject.defineProperty(exports, 'RuleList', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_RuleList)['default'];\n  }\n});\n\nvar _sheets = __webpack_require__(/*! ./sheets */ \"./node_modules/jss/lib/sheets.js\");\n\nObject.defineProperty(exports, 'sheets', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_sheets)['default'];\n  }\n});\n\nvar _createGenerateClassName = __webpack_require__(/*! ./utils/createGenerateClassName */ \"./node_modules/jss/lib/utils/createGenerateClassName.js\");\n\nObject.defineProperty(exports, 'createGenerateClassName', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_createGenerateClassName)['default'];\n  }\n});\n\nvar _Jss = __webpack_require__(/*! ./Jss */ \"./node_modules/jss/lib/Jss.js\");\n\nvar _Jss2 = _interopRequireDefault(_Jss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Creates a new instance of Jss.\n */\nvar create = exports.create = function create(options) {\n  return new _Jss2['default'](options);\n};\n\n/**\n * A global Jss instance.\n */\nexports['default'] = create();\n\n//# sourceURL=webpack:///./node_modules/jss/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/plugins/functions.js":
+/*!***************************************************!*\
+  !*** ./node_modules/jss/lib/plugins/functions.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _RuleList = __webpack_require__(/*! ../RuleList */ \"./node_modules/jss/lib/RuleList.js\");\n\nvar _RuleList2 = _interopRequireDefault(_RuleList);\n\nvar _StyleRule = __webpack_require__(/*! ../rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _createRule = __webpack_require__(/*! ../utils/createRule */ \"./node_modules/jss/lib/utils/createRule.js\");\n\nvar _createRule2 = _interopRequireDefault(_createRule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// A symbol replacement.\nvar now = Date.now();\n\nvar fnValuesNs = 'fnValues' + now;\nvar fnStyleNs = 'fnStyle' + ++now;\n\nexports['default'] = {\n  onCreateRule: function onCreateRule(name, decl, options) {\n    if (typeof decl !== 'function') return null;\n    var rule = (0, _createRule2['default'])(name, {}, options);\n    rule[fnStyleNs] = decl;\n    return rule;\n  },\n  onProcessStyle: function onProcessStyle(style, rule) {\n    var fn = {};\n    for (var prop in style) {\n      var value = style[prop];\n      if (typeof value !== 'function') continue;\n      delete style[prop];\n      fn[prop] = value;\n    }\n    rule = rule;\n    rule[fnValuesNs] = fn;\n    return style;\n  },\n  onUpdate: function onUpdate(data, rule) {\n    // It is a rules container like for e.g. ConditionalRule.\n    if (rule.rules instanceof _RuleList2['default']) {\n      rule.rules.update(data);\n      return;\n    }\n    if (!(rule instanceof _StyleRule2['default'])) return;\n\n    rule = rule;\n\n    // If we have a fn values map, it is a rule with function values.\n    if (rule[fnValuesNs]) {\n      for (var prop in rule[fnValuesNs]) {\n        rule.prop(prop, rule[fnValuesNs][prop](data));\n      }\n    }\n\n    rule = rule;\n\n    var fnStyle = rule[fnStyleNs];\n\n    // If we have a style function, the entire rule is dynamic and style object\n    // will be returned from that function.\n    if (fnStyle) {\n      var style = fnStyle(data);\n      for (var _prop in style) {\n        rule.prop(_prop, style[_prop]);\n      }\n    }\n  }\n};\n\n//# sourceURL=webpack:///./node_modules/jss/lib/plugins/functions.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/plugins/observables.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/jss/lib/plugins/observables.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _StyleRule = __webpack_require__(/*! ../rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _createRule = __webpack_require__(/*! ../utils/createRule */ \"./node_modules/jss/lib/utils/createRule.js\");\n\nvar _createRule2 = _interopRequireDefault(_createRule);\n\nvar _isObservable = __webpack_require__(/*! ../utils/isObservable */ \"./node_modules/jss/lib/utils/isObservable.js\");\n\nvar _isObservable2 = _interopRequireDefault(_isObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  onCreateRule: function onCreateRule(name, decl, options) {\n    if (!(0, _isObservable2['default'])(decl)) return null;\n\n    // Cast `decl` to `Observable`, since it passed the type guard.\n    var style$ = decl;\n\n    var rule = (0, _createRule2['default'])(name, {}, options);\n\n    // TODO\n    // Call `stream.subscribe()` returns a subscription, which should be explicitly\n    // unsubscribed from when we know this sheet is no longer needed.\n    style$.subscribe(function (style) {\n      for (var prop in style) {\n        rule.prop(prop, style[prop]);\n      }\n    });\n\n    return rule;\n  },\n  onProcessRule: function onProcessRule(rule) {\n    if (!(rule instanceof _StyleRule2['default'])) return;\n    var styleRule = rule;\n    var style = styleRule.style;\n\n    var _loop = function _loop(prop) {\n      var value = style[prop];\n      if (!(0, _isObservable2['default'])(value)) return 'continue';\n      delete style[prop];\n      value.subscribe({\n        next: function next(nextValue) {\n          styleRule.prop(prop, nextValue);\n        }\n      });\n    };\n\n    for (var prop in style) {\n      var _ret = _loop(prop);\n\n      if (_ret === 'continue') continue;\n    }\n  }\n};\n\n//# sourceURL=webpack:///./node_modules/jss/lib/plugins/observables.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/plugins/rules.js":
+/*!***********************************************!*\
+  !*** ./node_modules/jss/lib/plugins/rules.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _SimpleRule = __webpack_require__(/*! ../rules/SimpleRule */ \"./node_modules/jss/lib/rules/SimpleRule.js\");\n\nvar _SimpleRule2 = _interopRequireDefault(_SimpleRule);\n\nvar _KeyframesRule = __webpack_require__(/*! ../rules/KeyframesRule */ \"./node_modules/jss/lib/rules/KeyframesRule.js\");\n\nvar _KeyframesRule2 = _interopRequireDefault(_KeyframesRule);\n\nvar _ConditionalRule = __webpack_require__(/*! ../rules/ConditionalRule */ \"./node_modules/jss/lib/rules/ConditionalRule.js\");\n\nvar _ConditionalRule2 = _interopRequireDefault(_ConditionalRule);\n\nvar _FontFaceRule = __webpack_require__(/*! ../rules/FontFaceRule */ \"./node_modules/jss/lib/rules/FontFaceRule.js\");\n\nvar _FontFaceRule2 = _interopRequireDefault(_FontFaceRule);\n\nvar _ViewportRule = __webpack_require__(/*! ../rules/ViewportRule */ \"./node_modules/jss/lib/rules/ViewportRule.js\");\n\nvar _ViewportRule2 = _interopRequireDefault(_ViewportRule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar classes = {\n  '@charset': _SimpleRule2['default'],\n  '@import': _SimpleRule2['default'],\n  '@namespace': _SimpleRule2['default'],\n  '@keyframes': _KeyframesRule2['default'],\n  '@media': _ConditionalRule2['default'],\n  '@supports': _ConditionalRule2['default'],\n  '@font-face': _FontFaceRule2['default'],\n  '@viewport': _ViewportRule2['default'],\n  '@-ms-viewport': _ViewportRule2['default']\n\n  /**\n   * Generate plugins which will register all rules.\n   */\n};\nexports['default'] = Object.keys(classes).map(function (key) {\n  // https://jsperf.com/indexof-vs-substr-vs-regex-at-the-beginning-3\n  var re = new RegExp('^' + key);\n  var onCreateRule = function onCreateRule(name, decl, options) {\n    return re.test(name) ? new classes[key](name, decl, options) : null;\n  };\n  return { onCreateRule: onCreateRule };\n});\n\n//# sourceURL=webpack:///./node_modules/jss/lib/plugins/rules.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/renderers/DomRenderer.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/jss/lib/renderers/DomRenderer.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _sheets = __webpack_require__(/*! ../sheets */ \"./node_modules/jss/lib/sheets.js\");\n\nvar _sheets2 = _interopRequireDefault(_sheets);\n\nvar _StyleRule = __webpack_require__(/*! ../rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _toCssValue = __webpack_require__(/*! ../utils/toCssValue */ \"./node_modules/jss/lib/utils/toCssValue.js\");\n\nvar _toCssValue2 = _interopRequireDefault(_toCssValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n  var value = void 0;\n  return function () {\n    if (!value) value = fn();\n    return value;\n  };\n};\n\n/**\n * Get a style property value.\n */\nfunction getPropertyValue(cssRule, prop) {\n  try {\n    return cssRule.style.getPropertyValue(prop);\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return '';\n  }\n}\n\n/**\n * Set a style property.\n */\nfunction setProperty(cssRule, prop, value) {\n  try {\n    var cssValue = value;\n\n    if (Array.isArray(value)) {\n      cssValue = (0, _toCssValue2['default'])(value, true);\n\n      if (value[value.length - 1] === '!important') {\n        cssRule.style.setProperty(prop, cssValue, 'important');\n        return true;\n      }\n    }\n\n    cssRule.style.setProperty(prop, cssValue);\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return false;\n  }\n  return true;\n}\n\n/**\n * Remove a style property.\n */\nfunction removeProperty(cssRule, prop) {\n  try {\n    cssRule.style.removeProperty(prop);\n  } catch (err) {\n    (0, _warning2['default'])(false, '[JSS] DOMException \"%s\" was thrown. Tried to remove property \"%s\".', err.message, prop);\n  }\n}\n\nvar CSSRuleTypes = {\n  STYLE_RULE: 1,\n  KEYFRAMES_RULE: 7\n\n  /**\n   * Get the CSS Rule key.\n   */\n\n};var getKey = function () {\n  var extractKey = function extractKey(cssText) {\n    var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    return cssText.substr(from, cssText.indexOf('{') - 1);\n  };\n\n  return function (cssRule) {\n    if (cssRule.type === CSSRuleTypes.STYLE_RULE) return cssRule.selectorText;\n    if (cssRule.type === CSSRuleTypes.KEYFRAMES_RULE) {\n      var name = cssRule.name;\n\n      if (name) return '@keyframes ' + name;\n\n      // There is no rule.name in the following browsers:\n      // - IE 9\n      // - Safari 7.1.8\n      // - Mobile Safari 9.0.0\n      var cssText = cssRule.cssText;\n\n      return '@' + extractKey(cssText, cssText.indexOf('keyframes'));\n    }\n\n    // Conditionals.\n    return extractKey(cssRule.cssText);\n  };\n}();\n\n/**\n * Set the selector.\n */\nfunction setSelector(cssRule, selectorText) {\n  cssRule.selectorText = selectorText;\n\n  // Return false if setter was not successful.\n  // Currently works in chrome only.\n  return cssRule.selectorText === selectorText;\n}\n\n/**\n * Gets the `head` element upon the first call and caches it.\n */\nvar getHead = memoize(function () {\n  return document.head || document.getElementsByTagName('head')[0];\n});\n\n/**\n * Gets a map of rule keys, where the property is an unescaped key and value\n * is a potentially escaped one.\n * It is used to identify CSS rules and the corresponding JSS rules. As an identifier\n * for CSSStyleRule we normally use `selectorText`. Though if original selector text\n * contains escaped code points e.g. `:not(#\\\\20)`, CSSOM will compile it to `:not(# )`\n * and so CSS rule's `selectorText` won't match JSS rule selector.\n *\n * https://www.w3.org/International/questions/qa-escapes#cssescapes\n */\nvar getUnescapedKeysMap = function () {\n  var style = void 0;\n  var isAttached = false;\n\n  return function (rules) {\n    var map = {};\n    // https://github.com/facebook/flow/issues/2696\n    if (!style) style = document.createElement('style');\n    for (var i = 0; i < rules.length; i++) {\n      var rule = rules[i];\n      if (!(rule instanceof _StyleRule2['default'])) continue;\n      var selector = rule.selector;\n      // Only unescape selector over CSSOM if it contains a back slash.\n\n      if (selector && selector.indexOf('\\\\') !== -1) {\n        // Lazilly attach when needed.\n        if (!isAttached) {\n          getHead().appendChild(style);\n          isAttached = true;\n        }\n        style.textContent = selector + ' {}';\n        var _style = style,\n            sheet = _style.sheet;\n\n        if (sheet) {\n          var cssRules = sheet.cssRules;\n\n          if (cssRules) map[cssRules[0].selectorText] = rule.key;\n        }\n      }\n    }\n    if (isAttached) {\n      getHead().removeChild(style);\n      isAttached = false;\n    }\n    return map;\n  };\n}();\n\n/**\n * Find attached sheet with an index higher than the passed one.\n */\nfunction findHigherSheet(registry, options) {\n  for (var i = 0; i < registry.length; i++) {\n    var sheet = registry[i];\n    if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n  return null;\n}\n\n/**\n * Find attached sheet with the highest index.\n */\nfunction findHighestSheet(registry, options) {\n  for (var i = registry.length - 1; i >= 0; i--) {\n    var sheet = registry[i];\n    if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n  return null;\n}\n\n/**\n * Find a comment with \"jss\" inside.\n */\nfunction findCommentNode(text) {\n  var head = getHead();\n  for (var i = 0; i < head.childNodes.length; i++) {\n    var node = head.childNodes[i];\n    if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n      return node;\n    }\n  }\n  return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n  var registry = _sheets2['default'].registry;\n\n\n  if (registry.length > 0) {\n    // Try to insert before the next higher sheet.\n    var sheet = findHigherSheet(registry, options);\n    if (sheet) return sheet.renderer.element;\n\n    // Otherwise insert after the last attached.\n    sheet = findHighestSheet(registry, options);\n    if (sheet) return sheet.renderer.element.nextElementSibling;\n  }\n\n  // Try to find a comment placeholder if registry is empty.\n  var insertionPoint = options.insertionPoint;\n\n  if (insertionPoint && typeof insertionPoint === 'string') {\n    var comment = findCommentNode(insertionPoint);\n    if (comment) return comment.nextSibling;\n    // If user specifies an insertion point and it can't be found in the document -\n    // bad specificity issues may appear.\n    (0, _warning2['default'])(insertionPoint === 'jss', '[JSS] Insertion point \"%s\" not found.', insertionPoint);\n  }\n\n  return null;\n}\n\n/**\n * Insert style element into the DOM.\n */\nfunction insertStyle(style, options) {\n  var insertionPoint = options.insertionPoint;\n\n  var prevNode = findPrevNode(options);\n\n  if (prevNode) {\n    var parentNode = prevNode.parentNode;\n\n    if (parentNode) parentNode.insertBefore(style, prevNode);\n    return;\n  }\n\n  // Works with iframes and any node types.\n  if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n    // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n    var insertionPointElement = insertionPoint;\n    var _parentNode = insertionPointElement.parentNode;\n\n    if (_parentNode) _parentNode.insertBefore(style, insertionPointElement.nextSibling);else (0, _warning2['default'])(false, '[JSS] Insertion point is not in the DOM.');\n    return;\n  }\n\n  getHead().insertBefore(style, prevNode);\n}\n\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\nvar getNonce = memoize(function () {\n  var node = document.querySelector('meta[property=\"csp-nonce\"]');\n  return node ? node.getAttribute('content') : null;\n});\n\nvar DomRenderer = function () {\n  function DomRenderer(sheet) {\n    _classCallCheck(this, DomRenderer);\n\n    this.getPropertyValue = getPropertyValue;\n    this.setProperty = setProperty;\n    this.removeProperty = removeProperty;\n    this.setSelector = setSelector;\n    this.getKey = getKey;\n    this.getUnescapedKeysMap = getUnescapedKeysMap;\n    this.hasInsertedRules = false;\n\n    // There is no sheet when the renderer is used from a standalone StyleRule.\n    if (sheet) _sheets2['default'].add(sheet);\n\n    this.sheet = sheet;\n\n    var _ref = this.sheet ? this.sheet.options : {},\n        media = _ref.media,\n        meta = _ref.meta,\n        element = _ref.element;\n\n    this.element = element || document.createElement('style');\n    this.element.type = 'text/css';\n    this.element.setAttribute('data-jss', '');\n    if (media) this.element.setAttribute('media', media);\n    if (meta) this.element.setAttribute('data-meta', meta);\n    var nonce = getNonce();\n    if (nonce) this.element.setAttribute('nonce', nonce);\n  }\n\n  /**\n   * Insert style element into render tree.\n   */\n\n\n  // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n\n\n  _createClass(DomRenderer, [{\n    key: 'attach',\n    value: function attach() {\n      // In the case the element node is external and it is already in the DOM.\n      if (this.element.parentNode || !this.sheet) return;\n\n      // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n      // browsers remove those rules.\n      // TODO figure out if its a bug and if it is known.\n      // Workaround is to redeploy the sheet before attaching as a string.\n      if (this.hasInsertedRules) {\n        this.deploy();\n        this.hasInsertedRules = false;\n      }\n\n      insertStyle(this.element, this.sheet.options);\n    }\n\n    /**\n     * Remove style element from render tree.\n     */\n\n  }, {\n    key: 'detach',\n    value: function detach() {\n      this.element.parentNode.removeChild(this.element);\n    }\n\n    /**\n     * Inject CSS string into element.\n     */\n\n  }, {\n    key: 'deploy',\n    value: function deploy() {\n      if (!this.sheet) return;\n      this.element.textContent = '\\n' + this.sheet.toString() + '\\n';\n    }\n\n    /**\n     * Insert a rule into element.\n     */\n\n  }, {\n    key: 'insertRule',\n    value: function insertRule(rule, index) {\n      var sheet = this.element.sheet;\n      var cssRules = sheet.cssRules;\n\n      var str = rule.toString();\n      if (!index) index = cssRules.length;\n\n      if (!str) return false;\n\n      try {\n        sheet.insertRule(str, index);\n      } catch (err) {\n        (0, _warning2['default'])(false, '[JSS] Can not insert an unsupported rule \\n\\r%s', rule);\n        return false;\n      }\n      this.hasInsertedRules = true;\n\n      return cssRules[index];\n    }\n\n    /**\n     * Delete a rule.\n     */\n\n  }, {\n    key: 'deleteRule',\n    value: function deleteRule(cssRule) {\n      var sheet = this.element.sheet;\n\n      var index = this.indexOf(cssRule);\n      if (index === -1) return false;\n      sheet.deleteRule(index);\n      return true;\n    }\n\n    /**\n     * Get index of a CSS Rule.\n     */\n\n  }, {\n    key: 'indexOf',\n    value: function indexOf(cssRule) {\n      var cssRules = this.element.sheet.cssRules;\n\n      for (var _index = 0; _index < cssRules.length; _index++) {\n        if (cssRule === cssRules[_index]) return _index;\n      }\n      return -1;\n    }\n\n    /**\n     * Generate a new CSS rule and replace the existing one.\n     */\n\n  }, {\n    key: 'replaceRule',\n    value: function replaceRule(cssRule, rule) {\n      var index = this.indexOf(cssRule);\n      var newCssRule = this.insertRule(rule, index);\n      this.element.sheet.deleteRule(index);\n      return newCssRule;\n    }\n\n    /**\n     * Get all rules elements.\n     */\n\n  }, {\n    key: 'getRules',\n    value: function getRules() {\n      return this.element.sheet.cssRules;\n    }\n  }]);\n\n  return DomRenderer;\n}();\n\nexports['default'] = DomRenderer;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/renderers/DomRenderer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/renderers/VirtualRenderer.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/jss/lib/renderers/VirtualRenderer.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* eslint-disable class-methods-use-this */\n\n/**\n * Rendering backend to do nothing in nodejs.\n */\nvar VirtualRenderer = function () {\n  function VirtualRenderer() {\n    _classCallCheck(this, VirtualRenderer);\n  }\n\n  _createClass(VirtualRenderer, [{\n    key: 'setProperty',\n    value: function setProperty() {\n      return true;\n    }\n  }, {\n    key: 'getPropertyValue',\n    value: function getPropertyValue() {\n      return '';\n    }\n  }, {\n    key: 'removeProperty',\n    value: function removeProperty() {}\n  }, {\n    key: 'setSelector',\n    value: function setSelector() {\n      return true;\n    }\n  }, {\n    key: 'getKey',\n    value: function getKey() {\n      return '';\n    }\n  }, {\n    key: 'attach',\n    value: function attach() {}\n  }, {\n    key: 'detach',\n    value: function detach() {}\n  }, {\n    key: 'deploy',\n    value: function deploy() {}\n  }, {\n    key: 'insertRule',\n    value: function insertRule() {\n      return false;\n    }\n  }, {\n    key: 'deleteRule',\n    value: function deleteRule() {\n      return true;\n    }\n  }, {\n    key: 'replaceRule',\n    value: function replaceRule() {\n      return false;\n    }\n  }, {\n    key: 'getRules',\n    value: function getRules() {}\n  }, {\n    key: 'indexOf',\n    value: function indexOf() {\n      return -1;\n    }\n  }]);\n\n  return VirtualRenderer;\n}();\n\nexports['default'] = VirtualRenderer;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/renderers/VirtualRenderer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/ConditionalRule.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/jss/lib/rules/ConditionalRule.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _RuleList = __webpack_require__(/*! ../RuleList */ \"./node_modules/jss/lib/RuleList.js\");\n\nvar _RuleList2 = _interopRequireDefault(_RuleList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Conditional rule for @media, @supports\n */\nvar ConditionalRule = function () {\n  function ConditionalRule(key, styles, options) {\n    _classCallCheck(this, ConditionalRule);\n\n    this.type = 'conditional';\n    this.isProcessed = false;\n\n    this.key = key;\n    this.options = options;\n    this.rules = new _RuleList2['default'](_extends({}, options, { parent: this }));\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n\n  /**\n   * Get a rule.\n   */\n\n\n  _createClass(ConditionalRule, [{\n    key: 'getRule',\n    value: function getRule(name) {\n      return this.rules.get(name);\n    }\n\n    /**\n     * Get index of a rule.\n     */\n\n  }, {\n    key: 'indexOf',\n    value: function indexOf(rule) {\n      return this.rules.indexOf(rule);\n    }\n\n    /**\n     * Create and register rule, run plugins.\n     */\n\n  }, {\n    key: 'addRule',\n    value: function addRule(name, style, options) {\n      var rule = this.rules.add(name, style, options);\n      this.options.jss.plugins.onProcessRule(rule);\n      return rule;\n    }\n\n    /**\n     * Generates a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { indent: 1 };\n\n      var inner = this.rules.toString(options);\n      return inner ? this.key + ' {\\n' + inner + '\\n}' : '';\n    }\n  }]);\n\n  return ConditionalRule;\n}();\n\nexports['default'] = ConditionalRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/ConditionalRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/FontFaceRule.js":
+/*!****************************************************!*\
+  !*** ./node_modules/jss/lib/rules/FontFaceRule.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _toCss = __webpack_require__(/*! ../utils/toCss */ \"./node_modules/jss/lib/utils/toCss.js\");\n\nvar _toCss2 = _interopRequireDefault(_toCss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FontFaceRule = function () {\n  function FontFaceRule(key, style, options) {\n    _classCallCheck(this, FontFaceRule);\n\n    this.type = 'font-face';\n    this.isProcessed = false;\n\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n\n  /**\n   * Generates a CSS string.\n   */\n\n\n  _createClass(FontFaceRule, [{\n    key: 'toString',\n    value: function toString(options) {\n      if (Array.isArray(this.style)) {\n        var str = '';\n        for (var index = 0; index < this.style.length; index++) {\n          str += (0, _toCss2['default'])(this.key, this.style[index]);\n          if (this.style[index + 1]) str += '\\n';\n        }\n        return str;\n      }\n\n      return (0, _toCss2['default'])(this.key, this.style, options);\n    }\n  }]);\n\n  return FontFaceRule;\n}();\n\nexports['default'] = FontFaceRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/FontFaceRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/KeyframesRule.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/jss/lib/rules/KeyframesRule.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _RuleList = __webpack_require__(/*! ../RuleList */ \"./node_modules/jss/lib/RuleList.js\");\n\nvar _RuleList2 = _interopRequireDefault(_RuleList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Rule for @keyframes\n */\nvar KeyframesRule = function () {\n  function KeyframesRule(key, frames, options) {\n    _classCallCheck(this, KeyframesRule);\n\n    this.type = 'keyframes';\n    this.isProcessed = false;\n\n    this.key = key;\n    this.options = options;\n    this.rules = new _RuleList2['default'](_extends({}, options, { parent: this }));\n\n    for (var name in frames) {\n      this.rules.add(name, frames[name], _extends({}, this.options, {\n        parent: this,\n        selector: name\n      }));\n    }\n\n    this.rules.process();\n  }\n\n  /**\n   * Generates a CSS string.\n   */\n\n\n  _createClass(KeyframesRule, [{\n    key: 'toString',\n    value: function toString() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { indent: 1 };\n\n      var inner = this.rules.toString(options);\n      if (inner) inner += '\\n';\n      return this.key + ' {\\n' + inner + '}';\n    }\n  }]);\n\n  return KeyframesRule;\n}();\n\nexports['default'] = KeyframesRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/KeyframesRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/SimpleRule.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss/lib/rules/SimpleRule.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SimpleRule = function () {\n  function SimpleRule(key, value, options) {\n    _classCallCheck(this, SimpleRule);\n\n    this.type = 'simple';\n    this.isProcessed = false;\n\n    this.key = key;\n    this.value = value;\n    this.options = options;\n  }\n\n  /**\n   * Generates a CSS string.\n   */\n  // eslint-disable-next-line no-unused-vars\n\n\n  _createClass(SimpleRule, [{\n    key: 'toString',\n    value: function toString(options) {\n      if (Array.isArray(this.value)) {\n        var str = '';\n        for (var index = 0; index < this.value.length; index++) {\n          str += this.key + ' ' + this.value[index] + ';';\n          if (this.value[index + 1]) str += '\\n';\n        }\n        return str;\n      }\n\n      return this.key + ' ' + this.value + ';';\n    }\n  }]);\n\n  return SimpleRule;\n}();\n\nexports['default'] = SimpleRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/SimpleRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/StyleRule.js":
+/*!*************************************************!*\
+  !*** ./node_modules/jss/lib/rules/StyleRule.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _toCss = __webpack_require__(/*! ../utils/toCss */ \"./node_modules/jss/lib/utils/toCss.js\");\n\nvar _toCss2 = _interopRequireDefault(_toCss);\n\nvar _toCssValue = __webpack_require__(/*! ../utils/toCssValue */ \"./node_modules/jss/lib/utils/toCssValue.js\");\n\nvar _toCssValue2 = _interopRequireDefault(_toCssValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StyleRule = function () {\n  function StyleRule(key, style, options) {\n    _classCallCheck(this, StyleRule);\n\n    this.type = 'style';\n    this.isProcessed = false;\n    var sheet = options.sheet,\n        Renderer = options.Renderer,\n        selector = options.selector;\n\n    this.key = key;\n    this.options = options;\n    this.style = style;\n    if (selector) this.selectorText = selector;\n    this.renderer = sheet ? sheet.renderer : new Renderer();\n  }\n\n  /**\n   * Set selector string.\n   * Attention: use this with caution. Most browsers didn't implement\n   * selectorText setter, so this may result in rerendering of entire Style Sheet.\n   */\n\n\n  _createClass(StyleRule, [{\n    key: 'prop',\n\n\n    /**\n     * Get or set a style property.\n     */\n    value: function prop(name, value) {\n      // It's a getter.\n      if (value === undefined) return this.style[name];\n\n      // Don't do anything if the value has not changed.\n      if (this.style[name] === value) return this;\n\n      value = this.options.jss.plugins.onChangeValue(value, name, this);\n\n      var isEmpty = value == null || value === false;\n      var isDefined = name in this.style;\n\n      // Value is empty and wasn't defined before.\n      if (isEmpty && !isDefined) return this;\n\n      // We are going to remove this value.\n      var remove = isEmpty && isDefined;\n\n      if (remove) delete this.style[name];else this.style[name] = value;\n\n      // Renderable is defined if StyleSheet option `link` is true.\n      if (this.renderable) {\n        if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, value);\n        return this;\n      }\n\n      var sheet = this.options.sheet;\n\n      if (sheet && sheet.attached) {\n        (0, _warning2['default'])(false, 'Rule is not linked. Missing sheet option \"link: true\".');\n      }\n      return this;\n    }\n\n    /**\n     * Apply rule to an element inline.\n     */\n\n  }, {\n    key: 'applyTo',\n    value: function applyTo(renderable) {\n      var json = this.toJSON();\n      for (var prop in json) {\n        this.renderer.setProperty(renderable, prop, json[prop]);\n      }return this;\n    }\n\n    /**\n     * Returns JSON representation of the rule.\n     * Fallbacks are not supported.\n     * Useful for inline styles.\n     */\n\n  }, {\n    key: 'toJSON',\n    value: function toJSON() {\n      var json = {};\n      for (var prop in this.style) {\n        var value = this.style[prop];\n        if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = (0, _toCssValue2['default'])(value);\n      }\n      return json;\n    }\n\n    /**\n     * Generates a CSS string.\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString(options) {\n      var sheet = this.options.sheet;\n\n      var link = sheet ? sheet.options.link : false;\n      var opts = link ? _extends({}, options, { allowEmpty: true }) : options;\n      return (0, _toCss2['default'])(this.selector, this.style, opts);\n    }\n  }, {\n    key: 'selector',\n    set: function set(selector) {\n      if (selector === this.selectorText) return;\n\n      this.selectorText = selector;\n\n      if (!this.renderable) return;\n\n      var hasChanged = this.renderer.setSelector(this.renderable, selector);\n\n      // If selector setter is not implemented, rerender the rule.\n      if (!hasChanged && this.renderable) {\n        var renderable = this.renderer.replaceRule(this.renderable, this);\n        if (renderable) this.renderable = renderable;\n      }\n    }\n\n    /**\n     * Get selector string.\n     */\n    ,\n    get: function get() {\n      return this.selectorText;\n    }\n  }]);\n\n  return StyleRule;\n}();\n\nexports['default'] = StyleRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/StyleRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/rules/ViewportRule.js":
+/*!****************************************************!*\
+  !*** ./node_modules/jss/lib/rules/ViewportRule.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _toCss = __webpack_require__(/*! ../utils/toCss */ \"./node_modules/jss/lib/utils/toCss.js\");\n\nvar _toCss2 = _interopRequireDefault(_toCss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ViewportRule = function () {\n  function ViewportRule(key, style, options) {\n    _classCallCheck(this, ViewportRule);\n\n    this.type = 'viewport';\n    this.isProcessed = false;\n\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n\n  /**\n   * Generates a CSS string.\n   */\n\n\n  _createClass(ViewportRule, [{\n    key: 'toString',\n    value: function toString(options) {\n      return (0, _toCss2['default'])(this.key, this.style, options);\n    }\n  }]);\n\n  return ViewportRule;\n}();\n\nexports['default'] = ViewportRule;\n\n//# sourceURL=webpack:///./node_modules/jss/lib/rules/ViewportRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/sheets.js":
+/*!****************************************!*\
+  !*** ./node_modules/jss/lib/sheets.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _SheetsRegistry = __webpack_require__(/*! ./SheetsRegistry */ \"./node_modules/jss/lib/SheetsRegistry.js\");\n\nvar _SheetsRegistry2 = _interopRequireDefault(_SheetsRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\nexports['default'] = new _SheetsRegistry2['default']();\n\n//# sourceURL=webpack:///./node_modules/jss/lib/sheets.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/cloneStyle.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss/lib/utils/cloneStyle.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports['default'] = cloneStyle;\n\nvar _isObservable = __webpack_require__(/*! ./isObservable */ \"./node_modules/jss/lib/utils/isObservable.js\");\n\nvar _isObservable2 = _interopRequireDefault(_isObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar isArray = Array.isArray;\nfunction cloneStyle(style) {\n  // Support empty values in case user ends up with them by accident.\n  if (style == null) return style;\n\n  // Support string value for SimpleRule.\n  var typeOfStyle = typeof style === 'undefined' ? 'undefined' : _typeof(style);\n\n  if (typeOfStyle === 'string' || typeOfStyle === 'number' || typeOfStyle === 'function') {\n    return style;\n  }\n\n  // Support array for FontFaceRule.\n  if (isArray(style)) return style.map(cloneStyle);\n\n  // Support Observable styles.  Observables are immutable, so we don't need to\n  // copy them.\n  if ((0, _isObservable2['default'])(style)) return style;\n\n  var newStyle = {};\n  for (var name in style) {\n    var value = style[name];\n    if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n      newStyle[name] = cloneStyle(value);\n      continue;\n    }\n    newStyle[name] = value;\n  }\n\n  return newStyle;\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/cloneStyle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/createGenerateClassName.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/jss/lib/utils/createGenerateClassName.js ***!
+  \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _StyleSheet = __webpack_require__(/*! ../StyleSheet */ \"./node_modules/jss/lib/StyleSheet.js\");\n\nvar _StyleSheet2 = _interopRequireDefault(_StyleSheet);\n\nvar _moduleId = __webpack_require__(/*! ./moduleId */ \"./node_modules/jss/lib/utils/moduleId.js\");\n\nvar _moduleId2 = _interopRequireDefault(_moduleId);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar maxRules = 1e10;\n\n\nvar env = \"development\";\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nexports['default'] = function () {\n  var ruleCounter = 0;\n  var defaultPrefix = env === 'production' ? 'c' : '';\n\n  return function (rule, sheet) {\n    ruleCounter += 1;\n\n    if (ruleCounter > maxRules) {\n      (0, _warning2['default'])(false, '[JSS] You might have a memory leak. Rule counter is at %s.', ruleCounter);\n    }\n\n    var prefix = defaultPrefix;\n    var jssId = '';\n\n    if (sheet) {\n      prefix = sheet.options.classNamePrefix || defaultPrefix;\n      if (sheet.options.jss.id != null) jssId += sheet.options.jss.id;\n    }\n\n    if (env === 'production') {\n      return '' + prefix + _moduleId2['default'] + jssId + ruleCounter;\n    }\n\n    return prefix + rule.key + '-' + _moduleId2['default'] + (jssId && '-' + jssId) + '-' + ruleCounter;\n  };\n};\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/createGenerateClassName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/createRule.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss/lib/utils/createRule.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = createRule;\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _StyleRule = __webpack_require__(/*! ../rules/StyleRule */ \"./node_modules/jss/lib/rules/StyleRule.js\");\n\nvar _StyleRule2 = _interopRequireDefault(_StyleRule);\n\nvar _cloneStyle = __webpack_require__(/*! ../utils/cloneStyle */ \"./node_modules/jss/lib/utils/cloneStyle.js\");\n\nvar _cloneStyle2 = _interopRequireDefault(_cloneStyle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Create a rule instance.\n */\nfunction createRule() {\n  var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unnamed';\n  var decl = arguments[1];\n  var options = arguments[2];\n  var jss = options.jss;\n\n  var declCopy = (0, _cloneStyle2['default'])(decl);\n\n  var rule = jss.plugins.onCreateRule(name, declCopy, options);\n  if (rule) return rule;\n\n  // It is an at-rule and it has no instance.\n  if (name[0] === '@') {\n    (0, _warning2['default'])(false, '[JSS] Unknown at-rule %s', name);\n  }\n\n  return new _StyleRule2['default'](name, declCopy, options);\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/createRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/escape.js":
+/*!**********************************************!*\
+  !*** ./node_modules/jss/lib/utils/escape.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar CSS = global.CSS;\n\nvar env = \"development\";\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`])/g;\n\nexports['default'] = function (str) {\n  // We don't need to escape it in production, because we are not using user's\n  // input for selectors, we are generating a valid selector.\n  if (env === 'production') return str;\n\n  if (!CSS || !CSS.escape) {\n    return str.replace(escapeRegex, '\\\\$1');\n  }\n\n  return CSS.escape(str);\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/escape.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/getDynamicStyles.js":
+/*!********************************************************!*\
+  !*** ./node_modules/jss/lib/utils/getDynamicStyles.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports['default'] = getDynamicStyles;\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n  var to = null;\n\n  for (var key in styles) {\n    var value = styles[key];\n    var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n    if (type === 'function') {\n      if (!to) to = {};\n      to[key] = value;\n    } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n      var extracted = getDynamicStyles(value);\n      if (extracted) {\n        if (!to) to = {};\n        to[key] = extracted;\n      }\n    }\n  }\n\n  return to;\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/getDynamicStyles.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/isObservable.js":
+/*!****************************************************!*\
+  !*** ./node_modules/jss/lib/utils/isObservable.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _symbolObservable = __webpack_require__(/*! symbol-observable */ \"./node_modules/jss/node_modules/symbol-observable/es/index.js\");\n\nvar _symbolObservable2 = _interopRequireDefault(_symbolObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = function (value) {\n  return value && value[_symbolObservable2['default']] && value === value[_symbolObservable2['default']]();\n};\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/isObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/linkRule.js":
+/*!************************************************!*\
+  !*** ./node_modules/jss/lib/utils/linkRule.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = linkRule;\n/**\n * Link rule with CSSStyleRule and nested rules with corresponding nested cssRules if both exists.\n */\nfunction linkRule(rule, cssRule) {\n  rule.renderable = cssRule;\n  if (rule.rules && cssRule.cssRules) rule.rules.link(cssRule.cssRules);\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/linkRule.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/moduleId.js":
+/*!************************************************!*\
+  !*** ./node_modules/jss/lib/utils/moduleId.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (global[ns] == null) global[ns] = 0;\n\n// Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\nexports['default'] = global[ns]++;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/moduleId.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/toCss.js":
+/*!*********************************************!*\
+  !*** ./node_modules/jss/lib/utils/toCss.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = toCss;\n\nvar _toCssValue = __webpack_require__(/*! ./toCssValue */ \"./node_modules/jss/lib/utils/toCssValue.js\");\n\nvar _toCssValue2 = _interopRequireDefault(_toCssValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n  var result = '';\n  for (var index = 0; index < indent; index++) {\n    result += '  ';\n  }return result + str;\n}\n\n/**\n * Converts a Rule to CSS string.\n */\n\nfunction toCss(selector, style) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  var result = '';\n\n  if (!style) return result;\n\n  var _options$indent = options.indent,\n      indent = _options$indent === undefined ? 0 : _options$indent;\n  var fallbacks = style.fallbacks;\n\n\n  indent++;\n\n  // Apply fallbacks first.\n  if (fallbacks) {\n    // Array syntax {fallbacks: [{prop: value}]}\n    if (Array.isArray(fallbacks)) {\n      for (var index = 0; index < fallbacks.length; index++) {\n        var fallback = fallbacks[index];\n        for (var prop in fallback) {\n          var value = fallback[prop];\n          if (value != null) {\n            result += '\\n' + indentStr(prop + ': ' + (0, _toCssValue2['default'])(value) + ';', indent);\n          }\n        }\n      }\n    } else {\n      // Object syntax {fallbacks: {prop: value}}\n      for (var _prop in fallbacks) {\n        var _value = fallbacks[_prop];\n        if (_value != null) {\n          result += '\\n' + indentStr(_prop + ': ' + (0, _toCssValue2['default'])(_value) + ';', indent);\n        }\n      }\n    }\n  }\n\n  for (var _prop2 in style) {\n    var _value2 = style[_prop2];\n    if (_value2 != null && _prop2 !== 'fallbacks') {\n      result += '\\n' + indentStr(_prop2 + ': ' + (0, _toCssValue2['default'])(_value2) + ';', indent);\n    }\n  }\n\n  // Allow empty style in this case, because properties will be added dynamically.\n  if (!result && !options.allowEmpty) return result;\n\n  indent--;\n  result = indentStr(selector + ' {' + result + '\\n', indent) + indentStr('}', indent);\n\n  return result;\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/toCss.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/lib/utils/toCssValue.js":
+/*!**************************************************!*\
+  !*** ./node_modules/jss/lib/utils/toCssValue.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = toCssValue;\nvar join = function join(value, by) {\n  var result = '';\n  for (var i = 0; i < value.length; i++) {\n    // Remove !important from the value, it will be readded later.\n    if (value[i] === '!important') break;\n    if (result) result += by;\n    result += value[i];\n  }\n  return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nfunction toCssValue(value) {\n  var ignoreImportant = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  if (!Array.isArray(value)) return value;\n\n  var cssValue = '';\n\n  // Support space separated values via `[['5px', '10px']]`.\n  if (Array.isArray(value[0])) {\n    for (var i = 0; i < value.length; i++) {\n      if (value[i] === '!important') break;\n      if (cssValue) cssValue += ', ';\n      cssValue += join(value[i], ' ');\n    }\n  } else cssValue = join(value, ', ');\n\n  // Add !important, because it was ignored.\n  if (!ignoreImportant && value[value.length - 1] === '!important') {\n    cssValue += ' !important';\n  }\n\n  return cssValue;\n}\n\n//# sourceURL=webpack:///./node_modules/jss/lib/utils/toCssValue.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/node_modules/symbol-observable/es/index.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/jss/node_modules/symbol-observable/es/index.js ***!
+  \*********************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ponyfill.js */ \"./node_modules/jss/node_modules/symbol-observable/es/ponyfill.js\");\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (true) {\n  root = module;\n} else {}\n\nvar result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(root);\n/* harmony default export */ __webpack_exports__[\"default\"] = (result);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../../../../webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/jss/node_modules/symbol-observable/es/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/jss/node_modules/symbol-observable/es/ponyfill.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/jss/node_modules/symbol-observable/es/ponyfill.js ***!
+  \************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return symbolObservablePonyfill; });\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/jss/node_modules/symbol-observable/es/ponyfill.js?");
+
+/***/ }),
+
+/***/ "./node_modules/keycode/index.js":
+/*!***************************************!*\
+  !*** ./node_modules/keycode/index.js ***!
+  \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n  // Keyboard Events\n  if (searchInput && 'object' === typeof searchInput) {\n    var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n    if (hasKeyCode) searchInput = hasKeyCode\n  }\n\n  // Numbers\n  if ('number' === typeof searchInput) return names[searchInput]\n\n  // Everything else (cast to string)\n  var search = String(searchInput)\n\n  // check codes\n  var foundNamedKey = codes[search.toLowerCase()]\n  if (foundNamedKey) return foundNamedKey\n\n  // check aliases\n  var foundNamedKey = aliases[search.toLowerCase()]\n  if (foundNamedKey) return foundNamedKey\n\n  // weird character?\n  if (search.length === 1) return search.charCodeAt(0)\n\n  return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n  if (event && 'object' === typeof event) {\n    var keyCode = event.which || event.keyCode || event.charCode\n    if (keyCode === null || keyCode === undefined) { return false; }\n    if (typeof nameOrCode === 'string') {\n      // check codes\n      var foundNamedKey = codes[nameOrCode.toLowerCase()]\n      if (foundNamedKey) { return foundNamedKey === keyCode; }\n    \n      // check aliases\n      var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n      if (foundNamedKey) { return foundNamedKey === keyCode; }\n    } else if (typeof nameOrCode === 'number') {\n      return nameOrCode === keyCode;\n    }\n    return false;\n  }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n *   exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n  'backspace': 8,\n  'tab': 9,\n  'enter': 13,\n  'shift': 16,\n  'ctrl': 17,\n  'alt': 18,\n  'pause/break': 19,\n  'caps lock': 20,\n  'esc': 27,\n  'space': 32,\n  'page up': 33,\n  'page down': 34,\n  'end': 35,\n  'home': 36,\n  'left': 37,\n  'up': 38,\n  'right': 39,\n  'down': 40,\n  'insert': 45,\n  'delete': 46,\n  'command': 91,\n  'left command': 91,\n  'right command': 93,\n  'numpad *': 106,\n  'numpad +': 107,\n  'numpad -': 109,\n  'numpad .': 110,\n  'numpad /': 111,\n  'num lock': 144,\n  'scroll lock': 145,\n  'my computer': 182,\n  'my calculator': 183,\n  ';': 186,\n  '=': 187,\n  ',': 188,\n  '-': 189,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '[': 219,\n  '\\\\': 220,\n  ']': 221,\n  \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n  'windows': 91,\n  '⇧': 16,\n  '⌥': 18,\n  '⌃': 17,\n  '⌘': 91,\n  'ctl': 17,\n  'control': 17,\n  'option': 18,\n  'pause': 19,\n  'break': 19,\n  'caps': 20,\n  'return': 13,\n  'escape': 27,\n  'spc': 32,\n  'spacebar': 32,\n  'pgup': 33,\n  'pgdn': 34,\n  'ins': 45,\n  'del': 46,\n  'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n *   exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n  codes[alias] = aliases[alias]\n}\n\n\n//# sourceURL=webpack:///./node_modules/keycode/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_Symbol.js":
+/*!****************************************!*\
+  !*** ./node_modules/lodash/_Symbol.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/_Symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_baseGetTag.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_baseGetTag.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n    getRawTag = __webpack_require__(/*! ./_getRawTag */ \"./node_modules/lodash/_getRawTag.js\"),\n    objectToString = __webpack_require__(/*! ./_objectToString */ \"./node_modules/lodash/_objectToString.js\");\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/_baseGetTag.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_freeGlobal.js":
+/*!********************************************!*\
+  !*** ./node_modules/lodash/_freeGlobal.js ***!
+  \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/lodash/_freeGlobal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_getRawTag.js":
+/*!*******************************************!*\
+  !*** ./node_modules/lodash/_getRawTag.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/_getRawTag.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_objectToString.js":
+/*!************************************************!*\
+  !*** ./node_modules/lodash/_objectToString.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/_objectToString.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/_root.js":
+/*!**************************************!*\
+  !*** ./node_modules/lodash/_root.js ***!
+  \**************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/lodash/_freeGlobal.js\");\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/_root.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/debounce.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/debounce.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n    now = __webpack_require__(/*! ./now */ \"./node_modules/lodash/now.js\"),\n    toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/lodash/toNumber.js\");\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/debounce.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isObject.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isObject.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/isObject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isObjectLike.js":
+/*!*********************************************!*\
+  !*** ./node_modules/lodash/isObjectLike.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/isObjectLike.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/isSymbol.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/isSymbol.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n    isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/isSymbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/now.js":
+/*!************************************!*\
+  !*** ./node_modules/lodash/now.js ***!
+  \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/now.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash/toNumber.js":
+/*!*****************************************!*\
+  !*** ./node_modules/lodash/toNumber.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n    isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n//# sourceURL=webpack:///./node_modules/lodash/toNumber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/AppBar/AppBar.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/AppBar/AppBar.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar _Paper = _interopRequireDefault(__webpack_require__(/*! ../Paper */ \"./node_modules/material-ui/Paper/index.js\"));\n\n// @inheritedComponent Paper\nvar styles = function styles(theme) {\n  var backgroundColorDefault = theme.palette.type === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n  return {\n    root: {\n      display: 'flex',\n      flexDirection: 'column',\n      width: '100%',\n      boxSizing: 'border-box',\n      // Prevent padding issue with the Modal and fixed positioned AppBar.\n      zIndex: theme.zIndex.appBar,\n      flexShrink: 0\n    },\n    positionFixed: {\n      position: 'fixed',\n      top: 0,\n      left: 'auto',\n      right: 0\n    },\n    positionAbsolute: {\n      position: 'absolute',\n      top: 0,\n      left: 'auto',\n      right: 0\n    },\n    positionSticky: {\n      position: 'sticky',\n      top: 0,\n      left: 'auto',\n      right: 0\n    },\n    positionStatic: {\n      position: 'static'\n    },\n    colorDefault: {\n      backgroundColor: backgroundColorDefault,\n      color: theme.palette.getContrastText(backgroundColorDefault)\n    },\n    colorPrimary: {\n      backgroundColor: theme.palette.primary.main,\n      color: theme.palette.primary.contrastText\n    },\n    colorSecondary: {\n      backgroundColor: theme.palette.secondary.main,\n      color: theme.palette.secondary.contrastText\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction AppBar(props) {\n  var _classNames;\n\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      color = props.color,\n      position = props.position,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"color\", \"position\"]);\n  var className = (0, _classnames.default)(classes.root, classes[\"position\".concat((0, _helpers.capitalize)(position))], (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes[\"color\".concat((0, _helpers.capitalize)(color))], color !== 'inherit'), (0, _defineProperty2.default)(_classNames, 'mui-fixed', position === 'fixed'), _classNames), classNameProp);\n  return _react.default.createElement(_Paper.default, (0, _extends2.default)({\n    square: true,\n    component: \"header\",\n    elevation: 4,\n    className: className\n  }, other), children);\n}\n\nAppBar.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['inherit', 'primary', 'secondary', 'default']),\n\n  /**\n   * The positioning type. The behavior of the different options is described\n   * [here](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n   * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n   */\n  position: _propTypes.default.oneOf(['fixed', 'absolute', 'sticky', 'static'])\n} : undefined;\nAppBar.defaultProps = {\n  color: 'primary',\n  position: 'fixed'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiAppBar'\n})(AppBar);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/AppBar/AppBar.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/AppBar/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/AppBar/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _AppBar.default;\n  }\n});\n\nvar _AppBar = _interopRequireDefault(__webpack_require__(/*! ./AppBar */ \"./node_modules/material-ui/AppBar/AppBar.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/AppBar/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Button/Button.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Button/Button.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _colorManipulator = __webpack_require__(/*! ../styles/colorManipulator */ \"./node_modules/material-ui/styles/colorManipulator.js\");\n\nvar _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ../ButtonBase */ \"./node_modules/material-ui/ButtonBase/index.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\n// @inheritedComponent ButtonBase\nvar styles = function styles(theme) {\n  return {\n    root: (0, _objectSpread2.default)({}, theme.typography.button, {\n      lineHeight: '1.4em',\n      // Improve readability for multiline button.\n      boxSizing: 'border-box',\n      minWidth: theme.spacing.unit * 11,\n      minHeight: 36,\n      padding: \"\".concat(theme.spacing.unit, \"px \").concat(theme.spacing.unit * 2, \"px\"),\n      borderRadius: 2,\n      color: theme.palette.text.primary,\n      transition: theme.transitions.create(['background-color', 'box-shadow'], {\n        duration: theme.transitions.duration.short\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        },\n        '&$disabled': {\n          backgroundColor: 'transparent'\n        }\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled\n      }\n    }),\n    label: {\n      width: '100%',\n      display: 'inherit',\n      alignItems: 'inherit',\n      justifyContent: 'inherit'\n    },\n    flatPrimary: {\n      color: theme.palette.primary.main,\n      '&:hover': {\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    flatSecondary: {\n      color: theme.palette.secondary.main,\n      '&:hover': {\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    colorInherit: {\n      color: 'inherit'\n    },\n    raised: {\n      color: theme.palette.getContrastText(theme.palette.grey[300]),\n      backgroundColor: theme.palette.grey[300],\n      boxShadow: theme.shadows[2],\n      '&$focusVisible': {\n        boxShadow: theme.shadows[6]\n      },\n      '&:active': {\n        boxShadow: theme.shadows[8]\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled,\n        boxShadow: theme.shadows[0],\n        backgroundColor: theme.palette.action.disabledBackground\n      },\n      '&:hover': {\n        backgroundColor: theme.palette.grey.A100,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.grey[300]\n        },\n        '&$disabled': {\n          backgroundColor: theme.palette.action.disabledBackground\n        }\n      }\n    },\n    raisedPrimary: {\n      color: theme.palette.primary.contrastText,\n      backgroundColor: theme.palette.primary.main,\n      '&:hover': {\n        backgroundColor: theme.palette.primary.dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.primary.main\n        }\n      }\n    },\n    raisedSecondary: {\n      color: theme.palette.secondary.contrastText,\n      backgroundColor: theme.palette.secondary.main,\n      '&:hover': {\n        backgroundColor: theme.palette.secondary.dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.secondary.main\n        }\n      }\n    },\n    focusVisible: {},\n    disabled: {},\n    fab: {\n      borderRadius: '50%',\n      padding: 0,\n      minWidth: 0,\n      width: 56,\n      fontSize: 24,\n      height: 56,\n      boxShadow: theme.shadows[6],\n      '&:active': {\n        boxShadow: theme.shadows[12]\n      }\n    },\n    mini: {\n      width: 40,\n      height: 40\n    },\n    sizeSmall: {\n      padding: \"\".concat(theme.spacing.unit - 1, \"px \").concat(theme.spacing.unit, \"px\"),\n      minWidth: theme.spacing.unit * 8,\n      minHeight: 32,\n      fontSize: theme.typography.pxToRem(13)\n    },\n    sizeLarge: {\n      padding: \"\".concat(theme.spacing.unit, \"px \").concat(theme.spacing.unit * 3, \"px\"),\n      minWidth: theme.spacing.unit * 14,\n      minHeight: 40,\n      fontSize: theme.typography.pxToRem(15)\n    },\n    fullWidth: {\n      width: '100%'\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction Button(props) {\n  var _classNames;\n\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      color = props.color,\n      disabled = props.disabled,\n      disableFocusRipple = props.disableFocusRipple,\n      fullWidth = props.fullWidth,\n      focusVisibleClassName = props.focusVisibleClassName,\n      mini = props.mini,\n      size = props.size,\n      variant = props.variant,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"focusVisibleClassName\", \"mini\", \"size\", \"variant\"]);\n  var fab = variant === 'fab';\n  var raised = variant === 'raised';\n  var flat = !raised && !fab;\n  var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.raised, raised || fab), (0, _defineProperty2.default)(_classNames, classes.fab, fab), (0, _defineProperty2.default)(_classNames, classes.mini, fab && mini), (0, _defineProperty2.default)(_classNames, classes.colorInherit, color === 'inherit'), (0, _defineProperty2.default)(_classNames, classes.flatPrimary, flat && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.flatSecondary, flat && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes.raisedPrimary, !flat && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.raisedSecondary, !flat && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes[\"size\".concat((0, _helpers.capitalize)(size))], size !== 'medium'), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), _classNames), classNameProp);\n  return _react.default.createElement(_ButtonBase.default, (0, _extends2.default)({\n    className: className,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: (0, _classnames.default)(classes.focusVisible, focusVisibleClassName)\n  }, other), _react.default.createElement(\"span\", {\n    className: classes.label\n  }, children));\n}\n\nButton.propTypes =  true ? {\n  /**\n   * The content of the button.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   * The default value is a `button`.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the button will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the  keyboard focus ripple will be disabled.\n   * `disableRipple` must also be true.\n   */\n  disableFocusRipple: _propTypes.default.bool,\n\n  /**\n   * If `true`, the ripple effect will be disabled.\n   */\n  disableRipple: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: _propTypes.default.string,\n\n  /**\n   * If `true`, the button will take up the full width of its container.\n   */\n  fullWidth: _propTypes.default.bool,\n\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: _propTypes.default.string,\n\n  /**\n   * If `true`, and `variant` is `'fab'`, will use mini floating action button styling.\n   */\n  mini: _propTypes.default.bool,\n\n  /**\n   * The size of the button.\n   * `small` is equivalent to the dense button styling.\n   */\n  size: _propTypes.default.oneOf(['small', 'medium', 'large']),\n\n  /**\n   * @ignore\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The type of button.\n   */\n  variant: _propTypes.default.oneOf(['flat', 'raised', 'fab'])\n} : undefined;\nButton.defaultProps = {\n  color: 'default',\n  disabled: false,\n  disableFocusRipple: false,\n  fullWidth: false,\n  mini: false,\n  size: 'medium',\n  type: 'button',\n  variant: 'flat'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiButton'\n})(Button);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Button/Button.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Button/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/Button/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Button.default;\n  }\n});\n\nvar _Button = _interopRequireDefault(__webpack_require__(/*! ./Button */ \"./node_modules/material-ui/Button/Button.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Button/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/ButtonBase/ButtonBase.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/material-ui/ButtonBase/ButtonBase.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _keycode = _interopRequireDefault(__webpack_require__(/*! keycode */ \"./node_modules/keycode/index.js\"));\n\nvar _reactLifecyclesCompat = __webpack_require__(/*! react-lifecycles-compat */ \"./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\");\n\nvar _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/material-ui/utils/ownerWindow.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _focusVisible = __webpack_require__(/*! ../utils/focusVisible */ \"./node_modules/material-ui/utils/focusVisible.js\");\n\nvar _TouchRipple = _interopRequireDefault(__webpack_require__(/*! ./TouchRipple */ \"./node_modules/material-ui/ButtonBase/TouchRipple.js\"));\n\nvar _createRippleHandler = _interopRequireDefault(__webpack_require__(/*! ./createRippleHandler */ \"./node_modules/material-ui/ButtonBase/createRippleHandler.js\"));\n\nvar styles = {\n  root: {\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    position: 'relative',\n    // Remove grey highlight\n    WebkitTapHighlightColor: 'transparent',\n    backgroundColor: 'transparent',\n    // Reset default value\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 'none',\n    border: 0,\n    margin: 0,\n    // Remove the margin in Safari\n    borderRadius: 0,\n    padding: 0,\n    // Remove the padding in Firefox\n    cursor: 'pointer',\n    userSelect: 'none',\n    verticalAlign: 'middle',\n    '-moz-appearance': 'none',\n    // Reset\n    '-webkit-appearance': 'none',\n    // Reset\n    textDecoration: 'none',\n    // So we take precedent over the style of a native <a /> element.\n    color: 'inherit',\n    '&::-moz-focus-inner': {\n      borderStyle: 'none' // Remove Firefox dotted outline.\n\n    },\n    '&$disabled': {\n      pointerEvents: 'none',\n      // Disable link interactions\n      cursor: 'default'\n    }\n  },\n  disabled: {},\n  focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nexports.styles = styles;\n\nvar ButtonBase =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(ButtonBase, _React$Component);\n\n  function ButtonBase() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, ButtonBase);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = ButtonBase.__proto__ || (0, _getPrototypeOf.default)(ButtonBase)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {}\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"onFocusVisibleHandler\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        _this.keyDown = false;\n\n        _this.setState({\n          focusVisible: true\n        });\n\n        if (_this.props.onFocusVisible) {\n          _this.props.onFocusVisible(event);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"onRippleRef\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.ripple = node;\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"ripple\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"keyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"button\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"focusVisibleTimeout\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"focusVisibleCheckTime\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: 50\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"focusVisibleMaxCheckTimes\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: 5\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleKeyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        var _this$props = _this.props,\n            component = _this$props.component,\n            focusRipple = _this$props.focusRipple,\n            onKeyDown = _this$props.onKeyDown,\n            onClick = _this$props.onClick;\n        var key = (0, _keycode.default)(event); // Check if key is already down to avoid repeats being counted as multiple activations\n\n        if (focusRipple && !_this.keyDown && _this.state.focusVisible && _this.ripple && key === 'space') {\n          _this.keyDown = true;\n          event.persist();\n\n          _this.ripple.stop(event, function () {\n            _this.ripple.start(event);\n          });\n        }\n\n        if (onKeyDown) {\n          onKeyDown(event);\n        } // Keyboard accessibility for non interactive elements\n\n\n        if (event.target === event.currentTarget && component && component !== 'button' && (key === 'space' || key === 'enter')) {\n          event.preventDefault();\n\n          if (onClick) {\n            onClick(event);\n          }\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleKeyUp\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (_this.props.focusRipple && (0, _keycode.default)(event) === 'space' && _this.ripple && _this.state.focusVisible) {\n          _this.keyDown = false;\n          event.persist();\n\n          _this.ripple.stop(event, function () {\n            return _this.ripple.pulsate(event);\n          });\n        }\n\n        if (_this.props.onKeyUp) {\n          _this.props.onKeyUp(event);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleMouseDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'MouseDown', 'start', function () {\n        clearTimeout(_this.focusVisibleTimeout);\n\n        if (_this.state.focusVisible) {\n          _this.setState({\n            focusVisible: false\n          });\n        }\n      })\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleMouseUp\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'MouseUp', 'stop')\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleMouseLeave\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'MouseLeave', 'stop', function (event) {\n        if (_this.state.focusVisible) {\n          event.preventDefault();\n        }\n      })\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleTouchStart\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'TouchStart', 'start')\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleTouchEnd\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'TouchEnd', 'stop')\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleTouchMove\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'TouchMove', 'stop')\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)(_this), 'Blur', 'stop', function () {\n        clearTimeout(_this.focusVisibleTimeout);\n\n        if (_this.state.focusVisible) {\n          _this.setState({\n            focusVisible: false\n          });\n        }\n      })\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (_this.props.disabled) {\n          return;\n        } // Fix for https://github.com/facebook/react/issues/7769\n\n\n        if (!_this.button) {\n          _this.button = event.currentTarget;\n        }\n\n        event.persist();\n        (0, _focusVisible.detectFocusVisible)((0, _assertThisInitialized2.default)(_this), _this.button, function () {\n          _this.onFocusVisibleHandler(event);\n        });\n\n        if (_this.props.onFocus) {\n          _this.props.onFocus(event);\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(ButtonBase, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.button = _reactDom.default.findDOMNode(this);\n      (0, _focusVisible.listenForFocusKeys)((0, _ownerWindow.default)(this.button));\n\n      if (this.props.action) {\n        this.props.action({\n          focusVisible: function focusVisible() {\n            _this2.setState({\n              focusVisible: true\n            });\n\n            _this2.button.focus();\n          }\n        });\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (this.props.focusRipple && !this.props.disableRipple && !prevState.focusVisible && this.state.focusVisible) {\n        this.ripple.pulsate();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.button = null;\n      clearTimeout(this.focusVisibleTimeout);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          action = _props.action,\n          buttonRef = _props.buttonRef,\n          centerRipple = _props.centerRipple,\n          children = _props.children,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          component = _props.component,\n          disabled = _props.disabled,\n          disableRipple = _props.disableRipple,\n          focusRipple = _props.focusRipple,\n          focusVisibleClassName = _props.focusVisibleClassName,\n          onBlur = _props.onBlur,\n          onFocus = _props.onFocus,\n          onFocusVisible = _props.onFocusVisible,\n          onKeyDown = _props.onKeyDown,\n          onKeyUp = _props.onKeyUp,\n          onMouseDown = _props.onMouseDown,\n          onMouseLeave = _props.onMouseLeave,\n          onMouseUp = _props.onMouseUp,\n          onTouchEnd = _props.onTouchEnd,\n          onTouchMove = _props.onTouchMove,\n          onTouchStart = _props.onTouchStart,\n          tabIndex = _props.tabIndex,\n          TouchRippleProps = _props.TouchRippleProps,\n          type = _props.type,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n      var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focusVisible, this.state.focusVisible), (0, _defineProperty2.default)(_classNames, focusVisibleClassName, this.state.focusVisible), _classNames), classNameProp);\n      var buttonProps = {};\n      var ComponentProp = component;\n\n      if (!ComponentProp) {\n        if (other.href) {\n          ComponentProp = 'a';\n        } else {\n          ComponentProp = 'button';\n        }\n      }\n\n      if (ComponentProp === 'button') {\n        buttonProps.type = type || 'button';\n        buttonProps.disabled = disabled;\n      } else {\n        buttonProps.role = 'button';\n      }\n\n      return _react.default.createElement(ComponentProp, (0, _extends2.default)({\n        onBlur: this.handleBlur,\n        onFocus: this.handleFocus,\n        onKeyDown: this.handleKeyDown,\n        onKeyUp: this.handleKeyUp,\n        onMouseDown: this.handleMouseDown,\n        onMouseLeave: this.handleMouseLeave,\n        onMouseUp: this.handleMouseUp,\n        onTouchEnd: this.handleTouchEnd,\n        onTouchMove: this.handleTouchMove,\n        onTouchStart: this.handleTouchStart,\n        tabIndex: disabled ? '-1' : tabIndex,\n        className: className,\n        ref: buttonRef\n      }, buttonProps, other), children, !disableRipple && !disabled ? _react.default.createElement(_TouchRipple.default, (0, _extends2.default)({\n        innerRef: this.onRippleRef,\n        center: centerRipple\n      }, TouchRippleProps)) : null);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (typeof prevState.focusVisible === 'undefined') {\n        return {\n          focusVisible: false,\n          lastDisabled: nextProps.disabled\n        };\n      } // The blur won't fire when the disabled state is set on a focused input.\n      // We need to book keep the focused state manually.\n\n\n      if (!prevState.prevState && nextProps.disabled && prevState.focusVisible) {\n        return {\n          focusVisible: false,\n          lastDisabled: nextProps.disabled\n        };\n      }\n\n      return {\n        lastDisabled: nextProps.disabled\n      };\n    }\n  }]);\n  return ButtonBase;\n}(_react.default.Component);\n\nButtonBase.propTypes =  true ? {\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It currently only supports `focusVisible()` action.\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: _propTypes.default.func,\n\n  /**\n   * Use that property to pass a ref callback to the native button component.\n   */\n  buttonRef: _propTypes.default.func,\n\n  /**\n   * If `true`, the ripples will be centered.\n   * They won't start at the cursor interaction position.\n   */\n  centerRipple: _propTypes.default.bool,\n\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   * The default value is a `button`.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the base button will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the ripple effect will be disabled.\n   */\n  disableRipple: _propTypes.default.bool,\n\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * `disableRipple` must also be `false`.\n   */\n  focusRipple: _propTypes.default.bool,\n\n  /**\n   * This property can help a person know which element has the keyboard focus.\n   * The class name will be applied when the element gain the focus throught a keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible feature](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rational for using this feature [is explain here](https://github.com/WICG/focus-visible/blob/master/explainer.md).\n   */\n  focusVisibleClassName: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onClick: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onKeyDown: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onKeyUp: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onMouseDown: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onMouseLeave: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onMouseUp: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onTouchEnd: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onTouchMove: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onTouchStart: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  role: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  tabIndex: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n\n  /**\n   * Properties applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  type: _propTypes.default.string\n} : undefined;\nButtonBase.defaultProps = {\n  centerRipple: false,\n  disableRipple: false,\n  focusRipple: false,\n  tabIndex: '0',\n  type: 'button'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiButtonBase'\n})((0, _reactLifecyclesCompat.polyfill)(ButtonBase));\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/ButtonBase/ButtonBase.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/ButtonBase/Ripple.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/ButtonBase/Ripple.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\n/**\n * @ignore - internal component.\n */\nvar Ripple =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Ripple, _React$Component);\n\n  function Ripple() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Ripple);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Ripple.__proto__ || (0, _getPrototypeOf.default)(Ripple)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        visible: false,\n        leaving: false\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.setState({\n          visible: true\n        });\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.setState({\n          leaving: true\n        });\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Ripple, [{\n    key: \"render\",\n    value: function render() {\n      var _classNames, _classNames2;\n\n      var _props = this.props,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          pulsate = _props.pulsate,\n          rippleX = _props.rippleX,\n          rippleY = _props.rippleY,\n          rippleSize = _props.rippleSize,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"classes\", \"className\", \"pulsate\", \"rippleX\", \"rippleY\", \"rippleSize\"]);\n      var _state = this.state,\n          visible = _state.visible,\n          leaving = _state.leaving;\n      var rippleClassName = (0, _classnames.default)(classes.ripple, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.rippleVisible, visible), (0, _defineProperty2.default)(_classNames, classes.ripplePulsate, pulsate), _classNames), classNameProp);\n      var rippleStyles = {\n        width: rippleSize,\n        height: rippleSize,\n        top: -(rippleSize / 2) + rippleY,\n        left: -(rippleSize / 2) + rippleX\n      };\n      var childClassName = (0, _classnames.default)(classes.child, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.childLeaving, leaving), (0, _defineProperty2.default)(_classNames2, classes.childPulsate, pulsate), _classNames2));\n      return _react.default.createElement(_Transition.default, (0, _extends2.default)({\n        onEnter: this.handleEnter,\n        onExit: this.handleExit\n      }, other), _react.default.createElement(\"span\", {\n        className: rippleClassName,\n        style: rippleStyles\n      }, _react.default.createElement(\"span\", {\n        className: childClassName\n      })));\n    }\n  }]);\n  return Ripple;\n}(_react.default.Component);\n\nRipple.propTypes =  true ? {\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: _propTypes.default.bool,\n\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: _propTypes.default.number,\n\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: _propTypes.default.number,\n\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: _propTypes.default.number\n} : undefined;\nRipple.defaultProps = {\n  pulsate: false\n};\nvar _default = Ripple;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/ButtonBase/Ripple.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/ButtonBase/TouchRipple.js":
+/*!************************************************************!*\
+  !*** ./node_modules/material-ui/ButtonBase/TouchRipple.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = exports.DELAY_RIPPLE = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _TransitionGroup = _interopRequireDefault(__webpack_require__(/*! react-transition-group/TransitionGroup */ \"./node_modules/react-transition-group/TransitionGroup.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Ripple = _interopRequireDefault(__webpack_require__(/*! ./Ripple */ \"./node_modules/material-ui/ButtonBase/Ripple.js\"));\n\nvar DURATION = 550;\nvar DELAY_RIPPLE = 80;\nexports.DELAY_RIPPLE = DELAY_RIPPLE;\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'block',\n      position: 'absolute',\n      overflow: 'hidden',\n      borderRadius: 'inherit',\n      width: '100%',\n      height: '100%',\n      left: 0,\n      top: 0,\n      pointerEvents: 'none',\n      zIndex: 0\n    },\n    ripple: {\n      width: 50,\n      height: 50,\n      left: 0,\n      top: 0,\n      opacity: 0,\n      position: 'absolute'\n    },\n    rippleVisible: {\n      opacity: 0.3,\n      transform: 'scale(1)',\n      animation: \"mui-ripple-enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n    },\n    ripplePulsate: {\n      animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n    },\n    child: {\n      opacity: 1,\n      display: 'block',\n      width: '100%',\n      height: '100%',\n      borderRadius: '50%',\n      backgroundColor: 'currentColor'\n    },\n    childLeaving: {\n      opacity: 0,\n      animation: \"mui-ripple-exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n    },\n    childPulsate: {\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      animation: \"mui-ripple-pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n    },\n    '@keyframes mui-ripple-enter': {\n      '0%': {\n        transform: 'scale(0)',\n        opacity: 0.1\n      },\n      '100%': {\n        transform: 'scale(1)',\n        opacity: 0.3\n      }\n    },\n    '@keyframes mui-ripple-exit': {\n      '0%': {\n        opacity: 1\n      },\n      '100%': {\n        opacity: 0\n      }\n    },\n    '@keyframes mui-ripple-pulsate': {\n      '0%': {\n        transform: 'scale(1)'\n      },\n      '50%': {\n        transform: 'scale(0.92)'\n      },\n      '100%': {\n        transform: 'scale(1)'\n      }\n    }\n  };\n};\n\nexports.styles = styles;\n\nvar TouchRipple =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  (0, _inherits2.default)(TouchRipple, _React$PureComponent);\n\n  function TouchRipple() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, TouchRipple);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = TouchRipple.__proto__ || (0, _getPrototypeOf.default)(TouchRipple)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        nextKey: 0,\n        ripples: []\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"ignoringMouseDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"startTimer\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"startTimerCommit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"pulsate\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.start({}, {\n          pulsate: true\n        });\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"start\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var cb = arguments.length > 2 ? arguments[2] : undefined;\n        var _options$pulsate = options.pulsate,\n            pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n            _options$center = options.center,\n            center = _options$center === void 0 ? _this.props.center || options.pulsate : _options$center,\n            _options$fakeElement = options.fakeElement,\n            fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n        if (event.type === 'mousedown' && _this.ignoringMouseDown) {\n          _this.ignoringMouseDown = false;\n          return;\n        }\n\n        if (event.type === 'touchstart') {\n          _this.ignoringMouseDown = true;\n        }\n\n        var element = fakeElement ? null : _reactDom.default.findDOMNode((0, _assertThisInitialized2.default)(_this));\n        var rect = element ? element.getBoundingClientRect() : {\n          width: 0,\n          height: 0,\n          left: 0,\n          top: 0\n        }; // Get the size of the ripple\n\n        var rippleX;\n        var rippleY;\n        var rippleSize;\n\n        if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n          rippleX = Math.round(rect.width / 2);\n          rippleY = Math.round(rect.height / 2);\n        } else {\n          var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n          var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n          rippleX = Math.round(clientX - rect.left);\n          rippleY = Math.round(clientY - rect.top);\n        }\n\n        if (center) {\n          rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n          if (rippleSize % 2 === 0) {\n            rippleSize += 1;\n          }\n        } else {\n          var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n          var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n          rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n        } // Touche devices\n\n\n        if (event.touches) {\n          // Prepare the ripple effect.\n          _this.startTimerCommit = function () {\n            _this.startCommit({\n              pulsate: pulsate,\n              rippleX: rippleX,\n              rippleY: rippleY,\n              rippleSize: rippleSize,\n              cb: cb\n            });\n          }; // Deplay the execution of the ripple effect.\n\n\n          _this.startTimer = setTimeout(function () {\n            _this.startTimerCommit();\n\n            _this.startTimerCommit = null;\n          }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n        } else {\n          _this.startCommit({\n            pulsate: pulsate,\n            rippleX: rippleX,\n            rippleY: rippleY,\n            rippleSize: rippleSize,\n            cb: cb\n          });\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"startCommit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(params) {\n        var pulsate = params.pulsate,\n            rippleX = params.rippleX,\n            rippleY = params.rippleY,\n            rippleSize = params.rippleSize,\n            cb = params.cb;\n        var ripples = _this.state.ripples; // Add a ripple to the ripples array.\n\n        ripples = (0, _toConsumableArray2.default)(ripples).concat([_react.default.createElement(_Ripple.default, {\n          key: _this.state.nextKey,\n          classes: _this.props.classes,\n          timeout: {\n            exit: DURATION,\n            enter: DURATION\n          },\n          pulsate: pulsate,\n          rippleX: rippleX,\n          rippleY: rippleY,\n          rippleSize: rippleSize\n        })]);\n\n        _this.setState({\n          nextKey: _this.state.nextKey + 1,\n          ripples: ripples\n        }, cb);\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"stop\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event, cb) {\n        clearTimeout(_this.startTimer);\n        var ripples = _this.state.ripples; // The touch interaction occures to quickly.\n        // We still want to show ripple effect.\n\n        if (event.type === 'touchend' && _this.startTimerCommit) {\n          event.persist();\n\n          _this.startTimerCommit();\n\n          _this.startTimerCommit = null;\n          _this.startTimer = setTimeout(function () {\n            _this.stop(event, cb);\n          }, 0);\n          return;\n        }\n\n        _this.startTimerCommit = null;\n\n        if (ripples && ripples.length) {\n          _this.setState({\n            ripples: ripples.slice(1)\n          }, cb);\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(TouchRipple, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      clearTimeout(this.startTimer);\n    } // Used to filter out mouse emulated events on mobile.\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          center = _props.center,\n          classes = _props.classes,\n          className = _props.className,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"center\", \"classes\", \"className\"]);\n      return _react.default.createElement(_TransitionGroup.default, (0, _extends2.default)({\n        component: \"span\",\n        enter: true,\n        exit: true,\n        className: (0, _classnames.default)(classes.root, className)\n      }, other), this.state.ripples);\n    }\n  }]);\n  return TouchRipple;\n}(_react.default.PureComponent);\n\nTouchRipple.propTypes =  true ? {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: _propTypes.default.bool,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string\n} : undefined;\nTouchRipple.defaultProps = {\n  center: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  flip: false,\n  name: 'MuiTouchRipple'\n})(TouchRipple);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/ButtonBase/TouchRipple.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/ButtonBase/createRippleHandler.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/material-ui/ButtonBase/createRippleHandler.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction createRippleHandler(instance, eventName, action, cb) {\n  return function handleEvent(event) {\n    if (cb) {\n      cb.call(instance, event);\n    }\n\n    if (event.defaultPrevented) {\n      return false;\n    }\n\n    if (instance.ripple) {\n      instance.ripple[action](event);\n    }\n\n    if (instance.props && typeof instance.props[\"on\".concat(eventName)] === 'function') {\n      instance.props[\"on\".concat(eventName)](event);\n    }\n\n    return true;\n  };\n}\n\nvar _default = createRippleHandler;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/ButtonBase/createRippleHandler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/ButtonBase/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/ButtonBase/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _ButtonBase.default;\n  }\n});\n\nvar _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ./ButtonBase */ \"./node_modules/material-ui/ButtonBase/ButtonBase.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/ButtonBase/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Checkbox/Checkbox.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/Checkbox/Checkbox.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _SwitchBase = _interopRequireDefault(__webpack_require__(/*! ../internal/SwitchBase */ \"./node_modules/material-ui/internal/SwitchBase.js\"));\n\nvar _CheckBoxOutlineBlank = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/CheckBoxOutlineBlank */ \"./node_modules/material-ui/internal/svg-icons/CheckBoxOutlineBlank.js\"));\n\nvar _CheckBox = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/CheckBox */ \"./node_modules/material-ui/internal/svg-icons/CheckBox.js\"));\n\nvar _IndeterminateCheckBox = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/IndeterminateCheckBox */ \"./node_modules/material-ui/internal/svg-icons/IndeterminateCheckBox.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      color: theme.palette.text.secondary\n    },\n    checked: {},\n    disabled: {},\n    colorPrimary: {\n      '&$checked': {\n        color: theme.palette.primary.main\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled\n      }\n    },\n    colorSecondary: {\n      '&$checked': {\n        color: theme.palette.secondary.main\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled\n      }\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction Checkbox(props) {\n  var checkedIcon = props.checkedIcon,\n      classes = props.classes,\n      color = props.color,\n      icon = props.icon,\n      indeterminate = props.indeterminate,\n      indeterminateIcon = props.indeterminateIcon,\n      other = (0, _objectWithoutProperties2.default)(props, [\"checkedIcon\", \"classes\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\"]);\n  return _react.default.createElement(_SwitchBase.default, (0, _extends2.default)({\n    checkedIcon: indeterminate ? indeterminateIcon : checkedIcon,\n    classes: {\n      root: (0, _classnames.default)(classes.root, classes[\"color\".concat((0, _helpers.capitalize)(color))]),\n      checked: classes.checked,\n      disabled: classes.disabled\n    },\n    icon: indeterminate ? indeterminateIcon : icon\n  }, other));\n}\n\nCheckbox.propTypes =  true ? {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]),\n\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['primary', 'secondary', 'default']),\n\n  /**\n   * If `true`, the switch will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the ripple effect will be disabled.\n   */\n  disableRipple: _propTypes.default.bool,\n\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: _propTypes.default.node,\n\n  /**\n   * The id of the `input` element.\n   */\n  id: _propTypes.default.string,\n\n  /**\n   * If `true`, the component appears indeterminate.\n   */\n  indeterminate: _propTypes.default.bool,\n\n  /**\n   * The icon to display when the component is indeterminate.\n   */\n  indeterminateIcon: _propTypes.default.node,\n\n  /**\n   * Properties applied to the `input` element.\n   */\n  inputProps: _propTypes.default.object,\n\n  /**\n   * Use that property to pass a ref callback to the native input component.\n   */\n  inputRef: _propTypes.default.func,\n\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.checked`.\n   * @param {boolean} checked The `checked` value of the switch\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * The input component property `type`.\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The value of the component.\n   */\n  value: _propTypes.default.string\n} : undefined;\nCheckbox.defaultProps = {\n  checkedIcon: _react.default.createElement(_CheckBox.default, null),\n  color: 'secondary',\n  icon: _react.default.createElement(_CheckBoxOutlineBlank.default, null),\n  indeterminate: false,\n  indeterminateIcon: _react.default.createElement(_IndeterminateCheckBox.default, null)\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiCheckbox'\n})(Checkbox);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Checkbox/Checkbox.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Checkbox/index.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/Checkbox/index.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Checkbox.default;\n  }\n});\n\nvar _Checkbox = _interopRequireDefault(__webpack_require__(/*! ./Checkbox */ \"./node_modules/material-ui/Checkbox/Checkbox.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Checkbox/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Drawer/Drawer.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Drawer/Drawer.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isHorizontal = isHorizontal;\nexports.getAnchor = getAnchor;\nexports.default = exports.styles = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _Modal = _interopRequireDefault(__webpack_require__(/*! ../Modal */ \"./node_modules/material-ui/Modal/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Slide = _interopRequireDefault(__webpack_require__(/*! ../transitions/Slide */ \"./node_modules/material-ui/transitions/Slide.js\"));\n\nvar _Paper = _interopRequireDefault(__webpack_require__(/*! ../Paper */ \"./node_modules/material-ui/Paper/index.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar _transitions = __webpack_require__(/*! ../styles/transitions */ \"./node_modules/material-ui/styles/transitions.js\");\n\nvar oppositeDirection = {\n  left: 'right',\n  right: 'left',\n  top: 'down',\n  bottom: 'up'\n};\n\nfunction isHorizontal(props) {\n  return ['left', 'right'].indexOf(props.anchor) !== -1;\n}\n\nfunction getAnchor(props) {\n  return props.theme.direction === 'rtl' && isHorizontal(props) ? oppositeDirection[props.anchor] : props.anchor;\n}\n\nvar styles = function styles(theme) {\n  return {\n    docked: {\n      flex: '0 0 auto'\n    },\n    paper: {\n      overflowY: 'auto',\n      display: 'flex',\n      flexDirection: 'column',\n      height: '100vh',\n      flex: '1 0 auto',\n      zIndex: theme.zIndex.drawer,\n      WebkitOverflowScrolling: 'touch',\n      // Add iOS momentum scrolling.\n      // temporary style\n      position: 'fixed',\n      top: 0,\n      // We disable the focus ring for mouse, touch and keyboard users.\n      // At some point, it would be better to keep it for keyboard users.\n      // :focus-ring CSS pseudo-class will help.\n      outline: 'none'\n    },\n    paperAnchorLeft: {\n      left: 0,\n      right: 'auto'\n    },\n    paperAnchorRight: {\n      left: 'auto',\n      right: 0\n    },\n    paperAnchorTop: {\n      top: 0,\n      left: 0,\n      bottom: 'auto',\n      right: 0,\n      height: 'auto',\n      maxHeight: '100vh'\n    },\n    paperAnchorBottom: {\n      top: 'auto',\n      left: 0,\n      bottom: 0,\n      right: 0,\n      height: 'auto',\n      maxHeight: '100vh'\n    },\n    paperAnchorDockedLeft: {\n      borderRight: \"1px solid \".concat(theme.palette.divider)\n    },\n    paperAnchorDockedTop: {\n      borderBottom: \"1px solid \".concat(theme.palette.divider)\n    },\n    paperAnchorDockedRight: {\n      borderLeft: \"1px solid \".concat(theme.palette.divider)\n    },\n    paperAnchorDockedBottom: {\n      borderTop: \"1px solid \".concat(theme.palette.divider)\n    },\n    modal: {} // Just here so people can override the style.\n\n  };\n};\n/**\n * The properties of the [Modal](/api/modal) component are available\n * when `variant=\"temporary\"` is set.\n */\n\n\nexports.styles = styles;\n\nvar Drawer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Drawer, _React$Component);\n\n  function Drawer() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Drawer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Drawer.__proto__ || (0, _getPrototypeOf.default)(Drawer)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"mounted\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Drawer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true;\n    } // Let's assume that the Drawer will always be rendered on user space.\n    // We use that state is order to skip the appear transition during the\n    // initial mount of the component.\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          anchorProp = _props.anchor,\n          children = _props.children,\n          classes = _props.classes,\n          className = _props.className,\n          elevation = _props.elevation,\n          _props$ModalProps = _props.ModalProps;\n      _props$ModalProps = _props$ModalProps === void 0 ? {} : _props$ModalProps;\n      var BackdropPropsProp = _props$ModalProps.BackdropProps,\n          ModalProps = (0, _objectWithoutProperties2.default)(_props$ModalProps, [\"BackdropProps\"]),\n          onClose = _props.onClose,\n          open = _props.open,\n          PaperProps = _props.PaperProps,\n          SlideProps = _props.SlideProps,\n          theme = _props.theme,\n          transitionDuration = _props.transitionDuration,\n          variant = _props.variant,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"anchor\", \"children\", \"classes\", \"className\", \"elevation\", \"ModalProps\", \"onClose\", \"open\", \"PaperProps\", \"SlideProps\", \"theme\", \"transitionDuration\", \"variant\"]);\n      var anchor = getAnchor(this.props);\n\n      var drawer = _react.default.createElement(_Paper.default, (0, _extends2.default)({\n        elevation: variant === 'temporary' ? elevation : 0,\n        square: true,\n        className: (0, _classnames.default)(classes.paper, classes[\"paperAnchor\".concat((0, _helpers.capitalize)(anchor))], (0, _defineProperty2.default)({}, classes[\"paperAnchorDocked\".concat((0, _helpers.capitalize)(anchor))], variant !== 'temporary'))\n      }, PaperProps), children);\n\n      if (variant === 'permanent') {\n        return _react.default.createElement(\"div\", (0, _extends2.default)({\n          className: (0, _classnames.default)(classes.docked, className)\n        }, other), drawer);\n      }\n\n      var slidingDrawer = _react.default.createElement(_Slide.default, (0, _extends2.default)({\n        \"in\": open,\n        direction: oppositeDirection[anchor],\n        timeout: transitionDuration,\n        appear: this.mounted\n      }, SlideProps), drawer);\n\n      if (variant === 'persistent') {\n        return _react.default.createElement(\"div\", (0, _extends2.default)({\n          className: (0, _classnames.default)(classes.docked, className)\n        }, other), slidingDrawer);\n      } // variant === temporary\n\n\n      return _react.default.createElement(_Modal.default, (0, _extends2.default)({\n        BackdropProps: (0, _objectSpread2.default)({}, BackdropPropsProp, {\n          transitionDuration: transitionDuration\n        }),\n        className: (0, _classnames.default)(classes.modal, className),\n        open: open,\n        onClose: onClose\n      }, other, ModalProps), slidingDrawer);\n    }\n  }]);\n  return Drawer;\n}(_react.default.Component);\n\nDrawer.propTypes =  true ? {\n  /**\n   * Side from which the drawer will appear.\n   */\n  anchor: _propTypes.default.oneOf(['left', 'top', 'right', 'bottom']),\n\n  /**\n   * The contents of the drawer.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The elevation of the drawer.\n   */\n  elevation: _propTypes.default.number,\n\n  /**\n   * Properties applied to the `Modal` element.\n   */\n  ModalProps: _propTypes.default.object,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * If `true`, the drawer is open.\n   */\n  open: _propTypes.default.bool,\n\n  /**\n   * Properties applied to the `Paper` element.\n   */\n  PaperProps: _propTypes.default.object,\n\n  /**\n   * Properties applied to the `Slide` element.\n   */\n  SlideProps: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  theme: _propTypes.default.object.isRequired,\n\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  })]),\n\n  /**\n   * The variant of drawer.\n   */\n  variant: _propTypes.default.oneOf(['permanent', 'persistent', 'temporary'])\n} : undefined;\nDrawer.defaultProps = {\n  anchor: 'left',\n  elevation: 16,\n  open: false,\n  transitionDuration: {\n    enter: _transitions.duration.enteringScreen,\n    exit: _transitions.duration.leavingScreen\n  },\n  variant: 'temporary' // Mobile first.\n\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiDrawer',\n  flip: false,\n  withTheme: true\n})(Drawer);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Drawer/Drawer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Drawer/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/Drawer/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Drawer.default;\n  }\n});\n\nvar _Drawer = _interopRequireDefault(__webpack_require__(/*! ./Drawer */ \"./node_modules/material-ui/Drawer/Drawer.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Drawer/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/FormControl.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/Form/FormControl.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Input = __webpack_require__(/*! ../Input/Input */ \"./node_modules/material-ui/Input/Input.js\");\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ \"./node_modules/material-ui/utils/reactHelpers.js\");\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'inline-flex',\n      flexDirection: 'column',\n      position: 'relative',\n      // Reset fieldset default style\n      minWidth: 0,\n      padding: 0,\n      margin: 0,\n      border: 0\n    },\n    marginNormal: {\n      marginTop: theme.spacing.unit * 2,\n      marginBottom: theme.spacing.unit\n    },\n    marginDense: {\n      marginTop: theme.spacing.unit,\n      marginBottom: theme.spacing.unit / 2\n    },\n    fullWidth: {\n      width: '100%'\n    }\n  };\n};\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibilty and ensures that the state always stay\n * consitent across the children of the `FormControl`.\n * This context is used by the following components:\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n */\n\n\nexports.styles = styles;\n\nvar FormControl =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(FormControl, _React$Component);\n\n  function FormControl(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, FormControl);\n    _this = (0, _possibleConstructorReturn2.default)(this, (FormControl.__proto__ || (0, _getPrototypeOf.default)(FormControl)).call(this, props, context)); // We need to iterate through the children and find the Input in order\n    // to fully support server side rendering.\n\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        adornedStart: false,\n        filled: false,\n        focused: false\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (_this.props.onFocus) {\n          _this.props.onFocus(event);\n        }\n\n        _this.setState(function (state) {\n          return !state.focused ? {\n            focused: true\n          } : null;\n        });\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        // The event might be undefined.\n        // For instance, a child component might call this hook\n        // when an input is disabled but still having the focus.\n        if (_this.props.onBlur && event) {\n          _this.props.onBlur(event);\n        }\n\n        _this.setState(function (state) {\n          return state.focused ? {\n            focused: false\n          } : null;\n        });\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleDirty\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (!_this.state.filled) {\n          _this.setState({\n            filled: true\n          });\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleClean\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_this.state.filled) {\n          _this.setState({\n            filled: false\n          });\n        }\n      }\n    });\n    var children = _this.props.children;\n\n    if (children) {\n      _react.default.Children.forEach(children, function (child) {\n        if (!(0, _reactHelpers.isMuiElement)(child, ['Input', 'Select'])) {\n          return;\n        }\n\n        if ((0, _Input.isFilled)(child.props, true)) {\n          _this.state.filled = true;\n        }\n\n        var input = (0, _reactHelpers.isMuiElement)(child, ['Select']) ? child.props.input : child;\n\n        if (input && (0, _Input.isAdornedStart)(input.props)) {\n          _this.state.adornedStart = true;\n        }\n      });\n    }\n\n    return _this;\n  }\n\n  (0, _createClass2.default)(FormControl, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      var _props = this.props,\n          disabled = _props.disabled,\n          error = _props.error,\n          required = _props.required,\n          margin = _props.margin;\n      var _state = this.state,\n          adornedStart = _state.adornedStart,\n          filled = _state.filled,\n          focused = _state.focused;\n      return {\n        muiFormControl: {\n          adornedStart: adornedStart,\n          disabled: disabled,\n          error: error,\n          filled: filled,\n          focused: focused,\n          margin: margin,\n          onBlur: this.handleBlur,\n          onEmpty: this.handleClean,\n          onFilled: this.handleDirty,\n          onFocus: this.handleFocus,\n          required: required\n        }\n      };\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _props2 = this.props,\n          classes = _props2.classes,\n          className = _props2.className,\n          Component = _props2.component,\n          disabled = _props2.disabled,\n          error = _props2.error,\n          fullWidth = _props2.fullWidth,\n          margin = _props2.margin,\n          required = _props2.required,\n          other = (0, _objectWithoutProperties2.default)(_props2, [\"classes\", \"className\", \"component\", \"disabled\", \"error\", \"fullWidth\", \"margin\", \"required\"]);\n      return _react.default.createElement(Component, (0, _extends2.default)({\n        className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes[\"margin\".concat((0, _helpers.capitalize)(margin))], margin !== 'none'), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), _classNames), className)\n      }, other, {\n        onFocus: this.handleFocus,\n        onBlur: this.handleBlur\n      }));\n    }\n  }]);\n  return FormControl;\n}(_react.default.Component);\n\nFormControl.propTypes =  true ? {\n  /**\n   * The contents of the form control.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label should be displayed in an error state.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * If `true`, the component will take up the full width of its container.\n   */\n  fullWidth: _propTypes.default.bool,\n\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   */\n  margin: _propTypes.default.oneOf(['none', 'dense', 'normal']),\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: _propTypes.default.func,\n\n  /**\n   * If `true`, the label will indicate that the input is required.\n   */\n  required: _propTypes.default.bool\n} : undefined;\nFormControl.defaultProps = {\n  component: 'div',\n  disabled: false,\n  error: false,\n  fullWidth: false,\n  margin: 'none',\n  required: false\n};\nFormControl.childContextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiFormControl'\n})(FormControl);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/FormControl.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/FormControlLabel.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/material-ui/Form/FormControlLabel.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Typography = _interopRequireDefault(__webpack_require__(/*! ../Typography */ \"./node_modules/material-ui/Typography/index.js\"));\n\n/* eslint-disable jsx-a11y/label-has-for */\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'inline-flex',\n      alignItems: 'center',\n      cursor: 'pointer',\n      // For correct alignment with the text.\n      verticalAlign: 'middle',\n      // Remove grey highlight\n      WebkitTapHighlightColor: 'transparent',\n      marginLeft: -14,\n      marginRight: theme.spacing.unit * 2,\n      // used for row presentation of radio/checkbox\n      '&$disabled': {\n        cursor: 'default'\n      }\n    },\n    disabled: {},\n    label: {\n      '&$disabled': {\n        color: theme.palette.text.disabled\n      }\n    }\n  };\n};\n/**\n * Drop in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\n\n\nexports.styles = styles;\n\nfunction FormControlLabel(props, context) {\n  var checked = props.checked,\n      classes = props.classes,\n      classNameProp = props.className,\n      control = props.control,\n      disabledProp = props.disabled,\n      inputRef = props.inputRef,\n      label = props.label,\n      name = props.name,\n      onChange = props.onChange,\n      value = props.value,\n      other = (0, _objectWithoutProperties2.default)(props, [\"checked\", \"classes\", \"className\", \"control\", \"disabled\", \"inputRef\", \"label\", \"name\", \"onChange\", \"value\"]);\n  var muiFormControl = context.muiFormControl;\n  var disabled = disabledProp;\n\n  if (typeof control.props.disabled !== 'undefined') {\n    if (typeof disabled === 'undefined') {\n      disabled = control.props.disabled;\n    }\n  }\n\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n\n  var className = (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.disabled, disabled), classNameProp);\n  return _react.default.createElement(\"label\", (0, _extends2.default)({\n    className: className\n  }, other), _react.default.cloneElement(control, {\n    disabled: disabled,\n    checked: typeof control.props.checked === 'undefined' ? checked : control.props.checked,\n    name: control.props.name || name,\n    onChange: control.props.onChange || onChange,\n    value: control.props.value || value,\n    inputRef: control.props.inputRef || inputRef\n  }), _react.default.createElement(_Typography.default, {\n    component: \"span\",\n    className: (0, _classnames.default)(classes.label, (0, _defineProperty2.default)({}, classes.disabled, disabled))\n  }, label));\n}\n\nFormControlLabel.propTypes =  true ? {\n  /**\n   * If `true`, the component appears selected.\n   */\n  checked: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]),\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * A control element. For instance, it can be be a `Radio`, a `Switch` or a `Checkbox`.\n   */\n  control: _propTypes.default.element,\n\n  /**\n   * If `true`, the control will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * Use that property to pass a ref callback to the native input component.\n   */\n  inputRef: _propTypes.default.func,\n\n  /**\n   * The text to be used in an enclosing label element.\n   */\n  label: _propTypes.default.node,\n\n  /*\n   * @ignore\n   */\n  name: _propTypes.default.string,\n\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.checked`.\n   * @param {boolean} checked The `checked` value of the switch\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * The value of the component.\n   */\n  value: _propTypes.default.string\n} : undefined;\nFormControlLabel.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiFormControlLabel'\n})(FormControlLabel);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/FormControlLabel.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/FormGroup.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/Form/FormGroup.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = {\n  root: {\n    display: 'flex',\n    flexDirection: 'column',\n    flexWrap: 'wrap'\n  },\n  row: {\n    flexDirection: 'row'\n  }\n};\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\n\nexports.styles = styles;\n\nfunction FormGroup(props) {\n  var classes = props.classes,\n      className = props.className,\n      children = props.children,\n      row = props.row,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"children\", \"row\"]);\n  return _react.default.createElement(\"div\", (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.row, row), className)\n  }, other), children);\n}\n\nFormGroup.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * Display group of elements in a compact row.\n   */\n  row: _propTypes.default.bool\n} : undefined;\nFormGroup.defaultProps = {\n  row: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiFormGroup'\n})(FormGroup);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/FormGroup.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/FormHelperText.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/Form/FormHelperText.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      color: theme.palette.text.secondary,\n      fontFamily: theme.typography.fontFamily,\n      fontSize: theme.typography.pxToRem(12),\n      textAlign: 'left',\n      marginTop: theme.spacing.unit,\n      lineHeight: '1em',\n      minHeight: '1em',\n      margin: 0,\n      '&$error': {\n        color: theme.palette.error.main\n      },\n      '&$disabled': {\n        color: theme.palette.text.disabled\n      }\n    },\n    error: {},\n    disabled: {},\n    marginDense: {\n      marginTop: theme.spacing.unit / 2\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction FormHelperText(props, context) {\n  var _classNames;\n\n  var classes = props.classes,\n      classNameProp = props.className,\n      disabledProp = props.disabled,\n      errorProp = props.error,\n      marginProp = props.margin,\n      Component = props.component,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"disabled\", \"error\", \"margin\", \"component\"]);\n  var muiFormControl = context.muiFormControl;\n  var disabled = disabledProp;\n  var error = errorProp;\n  var margin = marginProp;\n\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n\n    if (typeof error === 'undefined') {\n      error = muiFormControl.error;\n    }\n\n    if (typeof margin === 'undefined') {\n      margin = muiFormControl.margin;\n    }\n  }\n\n  var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.error, error), (0, _defineProperty2.default)(_classNames, classes.marginDense, margin === 'dense'), _classNames), classNameProp);\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: className\n  }, other));\n}\n\nFormHelperText.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the helper text should be displayed in a disabled state.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, helper text should be displayed in an error state.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: _propTypes.default.oneOf(['dense'])\n} : undefined;\nFormHelperText.defaultProps = {\n  component: 'p'\n};\nFormHelperText.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiFormHelperText'\n})(FormHelperText);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/FormHelperText.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/FormLabel.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/Form/FormLabel.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      fontFamily: theme.typography.fontFamily,\n      color: theme.palette.text.secondary,\n      fontSize: theme.typography.pxToRem(16),\n      lineHeight: 1,\n      padding: 0,\n      '&$focused': {\n        color: theme.palette.primary[theme.palette.type === 'light' ? 'dark' : 'light']\n      },\n      '&$disabled': {\n        color: theme.palette.text.disabled\n      },\n      '&$error': {\n        color: theme.palette.error.main\n      }\n    },\n    focused: {},\n    disabled: {},\n    error: {},\n    asterisk: {\n      '&$error': {\n        color: theme.palette.error.main\n      }\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction FormLabel(props, context) {\n  var _classNames;\n\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      Component = props.component,\n      disabledProp = props.disabled,\n      errorProp = props.error,\n      focusedProp = props.focused,\n      requiredProp = props.required,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"component\", \"disabled\", \"error\", \"focused\", \"required\"]);\n  var muiFormControl = context.muiFormControl;\n  var required = requiredProp;\n  var focused = focusedProp;\n  var disabled = disabledProp;\n  var error = errorProp;\n\n  if (muiFormControl) {\n    if (typeof required === 'undefined') {\n      required = muiFormControl.required;\n    }\n\n    if (typeof focused === 'undefined') {\n      focused = muiFormControl.focused;\n    }\n\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n\n    if (typeof error === 'undefined') {\n      error = muiFormControl.error;\n    }\n  }\n\n  var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.error, error), _classNames), classNameProp);\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: className\n  }, other), children, required && _react.default.createElement(\"span\", {\n    className: (0, _classnames.default)(classes.asterisk, (0, _defineProperty2.default)({}, classes.error, error))\n  }, \"\\u2009*\"));\n}\n\nFormLabel.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the label should be displayed in a disabled state.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label should be displayed in an error state.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * If `true`, the input of this label is focused (used by `FormGroup` components).\n   */\n  focused: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label will indicate that the input is required.\n   */\n  required: _propTypes.default.bool\n} : undefined;\nFormLabel.defaultProps = {\n  component: 'label'\n};\nFormLabel.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiFormLabel'\n})(FormLabel);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/FormLabel.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Form/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/material-ui/Form/index.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"FormGroup\", {\n  enumerable: true,\n  get: function get() {\n    return _FormGroup.default;\n  }\n});\nObject.defineProperty(exports, \"FormLabel\", {\n  enumerable: true,\n  get: function get() {\n    return _FormLabel.default;\n  }\n});\nObject.defineProperty(exports, \"FormControl\", {\n  enumerable: true,\n  get: function get() {\n    return _FormControl.default;\n  }\n});\nObject.defineProperty(exports, \"FormHelperText\", {\n  enumerable: true,\n  get: function get() {\n    return _FormHelperText.default;\n  }\n});\nObject.defineProperty(exports, \"FormControlLabel\", {\n  enumerable: true,\n  get: function get() {\n    return _FormControlLabel.default;\n  }\n});\n\nvar _FormGroup = _interopRequireDefault(__webpack_require__(/*! ./FormGroup */ \"./node_modules/material-ui/Form/FormGroup.js\"));\n\nvar _FormLabel = _interopRequireDefault(__webpack_require__(/*! ./FormLabel */ \"./node_modules/material-ui/Form/FormLabel.js\"));\n\nvar _FormControl = _interopRequireDefault(__webpack_require__(/*! ./FormControl */ \"./node_modules/material-ui/Form/FormControl.js\"));\n\nvar _FormHelperText = _interopRequireDefault(__webpack_require__(/*! ./FormHelperText */ \"./node_modules/material-ui/Form/FormHelperText.js\"));\n\nvar _FormControlLabel = _interopRequireDefault(__webpack_require__(/*! ./FormControlLabel */ \"./node_modules/material-ui/Form/FormControlLabel.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Form/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/IconButton/IconButton.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/material-ui/IconButton/IconButton.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _colorManipulator = __webpack_require__(/*! ../styles/colorManipulator */ \"./node_modules/material-ui/styles/colorManipulator.js\");\n\nvar _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ../ButtonBase */ \"./node_modules/material-ui/ButtonBase/index.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\n// @inheritedComponent ButtonBase\nvar styles = function styles(theme) {\n  return {\n    root: {\n      textAlign: 'center',\n      flex: '0 0 auto',\n      fontSize: theme.typography.pxToRem(24),\n      width: 48,\n      height: 48,\n      padding: 0,\n      borderRadius: '50%',\n      color: theme.palette.action.active,\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.action.active, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        },\n        '&$disabled': {\n          backgroundColor: 'transparent'\n        }\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled\n      }\n    },\n    colorInherit: {\n      color: 'inherit'\n    },\n    colorPrimary: {\n      color: theme.palette.primary.main,\n      '&:hover': {\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    colorSecondary: {\n      color: theme.palette.secondary.main,\n      '&:hover': {\n        backgroundColor: (0, _colorManipulator.fade)(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    disabled: {},\n    label: {\n      width: '100%',\n      display: 'flex',\n      alignItems: 'inherit',\n      justifyContent: 'inherit'\n    }\n  };\n};\n/**\n * Refer to the [Icons](/style/icons) section of the documentation\n * regarding the available icon options.\n */\n\n\nexports.styles = styles;\n\nfunction IconButton(props) {\n  var _classNames;\n\n  var children = props.children,\n      classes = props.classes,\n      className = props.className,\n      color = props.color,\n      disabled = props.disabled,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"color\", \"disabled\"]);\n  return _react.default.createElement(_ButtonBase.default, (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes[\"color\".concat((0, _helpers.capitalize)(color))], color !== 'default'), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), _classNames), className),\n    centerRipple: true,\n    focusRipple: true,\n    disabled: disabled\n  }, other), _react.default.createElement(\"span\", {\n    className: classes.label\n  }, children));\n}\n\nIconButton.propTypes =  true ? {\n  /**\n   * The icon element.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n  /**\n   * If `true`, the button will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the ripple will be disabled.\n   */\n  disableRipple: _propTypes.default.bool\n} : undefined;\nIconButton.defaultProps = {\n  color: 'default',\n  disabled: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiIconButton'\n})(IconButton);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/IconButton/IconButton.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/IconButton/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/IconButton/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _IconButton.default;\n  }\n});\n\nvar _IconButton = _interopRequireDefault(__webpack_require__(/*! ./IconButton */ \"./node_modules/material-ui/IconButton/IconButton.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/IconButton/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Input/Input.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Input/Input.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hasValue = hasValue;\nexports.isFilled = isFilled;\nexports.isAdornedStart = isAdornedStart;\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Textarea = _interopRequireDefault(__webpack_require__(/*! ./Textarea */ \"./node_modules/material-ui/Input/Textarea.js\"));\n\n// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nfunction hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n} // Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\n\n\nfunction isFilled(obj) {\n  var SSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n} // Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\n\n\nfunction isAdornedStart(obj) {\n  return obj.startAdornment;\n}\n\nvar styles = function styles(theme) {\n  var light = theme.palette.type === 'light';\n  var placeholder = {\n    color: 'currentColor',\n    opacity: light ? 0.42 : 0.5,\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  };\n  var placeholderHidden = {\n    opacity: 0\n  };\n  var placeholderVisible = {\n    opacity: light ? 0.42 : 0.5\n  };\n  var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  return {\n    root: {\n      // Mimics the default input display property used by browsers for an input.\n      display: 'inline-flex',\n      position: 'relative',\n      fontFamily: theme.typography.fontFamily,\n      color: light ? 'rgba(0, 0, 0, 0.87)' : theme.palette.common.white,\n      fontSize: theme.typography.pxToRem(16),\n      lineHeight: '1.1875em',\n      // Reset (19px), match the native input line-height\n      '&$disabled': {\n        color: theme.palette.text.disabled\n      }\n    },\n    formControl: {\n      'label + &': {\n        marginTop: theme.spacing.unit * 2\n      }\n    },\n    focused: {},\n    disabled: {},\n    underline: {\n      '&:after': {\n        backgroundColor: theme.palette.primary[light ? 'dark' : 'light'],\n        left: 0,\n        bottom: 0,\n        // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n        content: '\"\"',\n        height: 2,\n        position: 'absolute',\n        right: 0,\n        transform: 'scaleX(0)',\n        transition: theme.transitions.create('transform', {\n          duration: theme.transitions.duration.shorter,\n          easing: theme.transitions.easing.easeOut\n        }),\n        pointerEvents: 'none' // Transparent to the hover style.\n\n      },\n      '&$focused:after': {\n        transform: 'scaleX(1)'\n      },\n      '&$error:after': {\n        backgroundColor: theme.palette.error.main,\n        transform: 'scaleX(1)' // error is always underlined in red\n\n      },\n      '&:before': {\n        backgroundColor: bottomLineColor,\n        left: 0,\n        bottom: 0,\n        // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n        content: '\"\"',\n        height: 1,\n        position: 'absolute',\n        right: 0,\n        transition: theme.transitions.create('background-color', {\n          duration: theme.transitions.duration.shorter\n        }),\n        pointerEvents: 'none' // Transparent to the hover style.\n\n      },\n      '&:hover:not($disabled):before': {\n        backgroundColor: theme.palette.text.primary,\n        height: 2\n      },\n      '&$disabled:before': {\n        background: 'transparent',\n        backgroundImage: \"linear-gradient(to right, \".concat(bottomLineColor, \" 33%, transparent 0%)\"),\n        backgroundPosition: 'left top',\n        backgroundRepeat: 'repeat-x',\n        backgroundSize: '5px 1px'\n      }\n    },\n    error: {},\n    multiline: {\n      padding: \"\".concat(theme.spacing.unit - 2, \"px 0 \").concat(theme.spacing.unit - 1, \"px\")\n    },\n    fullWidth: {\n      width: '100%'\n    },\n    input: {\n      font: 'inherit',\n      color: 'currentColor',\n      padding: \"\".concat(theme.spacing.unit - 2, \"px 0 \").concat(theme.spacing.unit - 1, \"px\"),\n      border: 0,\n      boxSizing: 'content-box',\n      verticalAlign: 'middle',\n      background: 'none',\n      margin: 0,\n      // Reset for Safari\n      // Remove grey highlight\n      WebkitTapHighlightColor: 'transparent',\n      display: 'block',\n      // Make the flex item shrink with Firefox\n      minWidth: 0,\n      flexGrow: 1,\n      '&::-webkit-input-placeholder': placeholder,\n      '&::-moz-placeholder': placeholder,\n      // Firefox 19+\n      '&:-ms-input-placeholder': placeholder,\n      // IE 11\n      '&::-ms-input-placeholder': placeholder,\n      // Edge\n      '&:focus': {\n        outline: 0\n      },\n      // Reset Firefox invalid required input style\n      '&:invalid': {\n        boxShadow: 'none'\n      },\n      '&::-webkit-search-decoration': {\n        // Remove the padding when type=search.\n        '-webkit-appearance': 'none'\n      },\n      // Show and hide the placeholder logic\n      'label[data-shrink=false] + $formControl &': {\n        '&::-webkit-input-placeholder': placeholderHidden,\n        '&::-moz-placeholder': placeholderHidden,\n        // Firefox 19+\n        '&:-ms-input-placeholder': placeholderHidden,\n        // IE 11\n        '&::-ms-input-placeholder': placeholderHidden,\n        // Edge\n        '&:focus::-webkit-input-placeholder': placeholderVisible,\n        '&:focus::-moz-placeholder': placeholderVisible,\n        // Firefox 19+\n        '&:focus:-ms-input-placeholder': placeholderVisible,\n        // IE 11\n        '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n\n      },\n      '&$disabled': {\n        opacity: 1 // Reset iOS opacity\n\n      }\n    },\n    inputMarginDense: {\n      paddingTop: theme.spacing.unit / 2 - 1\n    },\n    inputMultiline: {\n      resize: 'none',\n      padding: 0\n    },\n    inputType: {\n      // type=\"date\" or type=\"time\", etc. have specific styles we need to reset.\n      height: '1.1875em' // Reset (19px), match the native input line-height\n\n    },\n    inputTypeSearch: {\n      // Improve type search style.\n      '-moz-appearance': 'textfield',\n      '-webkit-appearance': 'textfield'\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction formControlState(props, context) {\n  var disabled = props.disabled;\n  var error = props.error;\n  var margin = props.margin;\n\n  if (context && context.muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = context.muiFormControl.disabled;\n    }\n\n    if (typeof error === 'undefined') {\n      error = context.muiFormControl.error;\n    }\n\n    if (typeof margin === 'undefined') {\n      margin = context.muiFormControl.margin;\n    }\n  }\n\n  return {\n    disabled: disabled,\n    error: error,\n    margin: margin\n  };\n}\n\nvar Input =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Input, _React$Component);\n\n  function Input(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, Input);\n    _this = (0, _possibleConstructorReturn2.default)(this, (Input.__proto__ || (0, _getPrototypeOf.default)(Input)).call(this, props, context));\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        focused: false\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"isControlled\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: _this.props.value != null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"input\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        // Fix an bug with IE11 where the focus/blur events are triggered\n        // while the input is disabled.\n        if (formControlState(_this.props, _this.context).disabled) {\n          event.stopPropagation();\n          return;\n        }\n\n        _this.setState({\n          focused: true\n        });\n\n        if (_this.props.onFocus) {\n          _this.props.onFocus(event);\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        _this.setState({\n          focused: false\n        });\n\n        if (_this.props.onBlur) {\n          _this.props.onBlur(event);\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleChange\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (!_this.isControlled) {\n          _this.checkDirty(_this.input);\n        } // Perform in the willUpdate\n\n\n        if (_this.props.onChange) {\n          _this.props.onChange(event);\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleRefInput\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.input = node;\n\n        if (_this.props.inputRef) {\n          _this.props.inputRef(node);\n        } else if (_this.props.inputProps && _this.props.inputProps.ref) {\n          _this.props.inputProps.ref(node);\n        }\n      }\n    });\n\n    if (_this.isControlled) {\n      _this.checkDirty(props);\n    }\n\n    var componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n      // The blur won't fire when the disabled state is set on a focused input.\n      // We need to book keep the focused state manually.\n      if (!formControlState(_this.props, _this.context).disabled && formControlState(nextProps, nextContext).disabled) {\n        _this.setState({\n          focused: false\n        });\n      }\n    };\n\n    var componentWillUpdate = function componentWillUpdate(nextProps, nextState, nextContext) {\n      // Book keep the focused state.\n      if (!formControlState(_this.props, _this.context).disabled && formControlState(nextProps, nextContext).disabled) {\n        var muiFormControl = _this.context.muiFormControl;\n\n        if (muiFormControl && muiFormControl.onBlur) {\n          muiFormControl.onBlur();\n        }\n      }\n    }; // Support for react >= 16.3.0 && < 17.0.0\n\n    /* istanbul ignore else */\n\n\n    if (_react.default.createContext) {\n      _this.UNSAFE_componentWillReceiveProps = componentWillReceiveProps;\n      _this.UNSAFE_componentWillUpdate = componentWillUpdate;\n    } else {\n      _this.componentWillReceiveProps = componentWillReceiveProps;\n      _this.componentWillUpdate = componentWillUpdate;\n    }\n\n    return _this;\n  }\n\n  (0, _createClass2.default)(Input, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      // We are consuming the parent muiFormControl context.\n      // We don't want a child to consume it a second time.\n      return {\n        muiFormControl: null\n      };\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!this.isControlled) {\n        this.checkDirty(this.input);\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.isControlled) {\n        this.checkDirty(this.props);\n      } // else performed in the onChange\n\n    }\n  }, {\n    key: \"checkDirty\",\n    value: function checkDirty(obj) {\n      var muiFormControl = this.context.muiFormControl;\n\n      if (isFilled(obj)) {\n        if (muiFormControl && muiFormControl.onFilled) {\n          muiFormControl.onFilled();\n        }\n\n        if (this.props.onFilled) {\n          this.props.onFilled();\n        }\n\n        return;\n      }\n\n      if (muiFormControl && muiFormControl.onEmpty) {\n        muiFormControl.onEmpty();\n      }\n\n      if (this.props.onEmpty) {\n        this.props.onEmpty();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames, _classNames2;\n\n      var _props = this.props,\n          autoComplete = _props.autoComplete,\n          autoFocus = _props.autoFocus,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          defaultValue = _props.defaultValue,\n          disabledProp = _props.disabled,\n          disableUnderline = _props.disableUnderline,\n          endAdornment = _props.endAdornment,\n          errorProp = _props.error,\n          fullWidth = _props.fullWidth,\n          id = _props.id,\n          inputComponent = _props.inputComponent,\n          _props$inputProps = _props.inputProps;\n      _props$inputProps = _props$inputProps === void 0 ? {} : _props$inputProps;\n      var inputPropsClassName = _props$inputProps.className,\n          inputPropsProp = (0, _objectWithoutProperties2.default)(_props$inputProps, [\"className\"]),\n          inputRef = _props.inputRef,\n          marginProp = _props.margin,\n          multiline = _props.multiline,\n          name = _props.name,\n          onBlur = _props.onBlur,\n          onChange = _props.onChange,\n          onEmpty = _props.onEmpty,\n          onFilled = _props.onFilled,\n          onFocus = _props.onFocus,\n          onKeyDown = _props.onKeyDown,\n          onKeyUp = _props.onKeyUp,\n          placeholder = _props.placeholder,\n          readOnly = _props.readOnly,\n          rows = _props.rows,\n          rowsMax = _props.rowsMax,\n          startAdornment = _props.startAdornment,\n          type = _props.type,\n          value = _props.value,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"autoComplete\", \"autoFocus\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"disableUnderline\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onEmpty\", \"onFilled\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"rows\", \"rowsMax\", \"startAdornment\", \"type\", \"value\"]);\n      var muiFormControl = this.context.muiFormControl;\n\n      var _formControlState = formControlState(this.props, this.context),\n          disabled = _formControlState.disabled,\n          error = _formControlState.error,\n          margin = _formControlState.margin;\n\n      var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.error, error), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), (0, _defineProperty2.default)(_classNames, classes.focused, this.state.focused), (0, _defineProperty2.default)(_classNames, classes.formControl, muiFormControl), (0, _defineProperty2.default)(_classNames, classes.multiline, multiline), (0, _defineProperty2.default)(_classNames, classes.underline, !disableUnderline), _classNames), classNameProp);\n      var inputClassName = (0, _classnames.default)(classes.input, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames2, classes.inputType, type !== 'text'), (0, _defineProperty2.default)(_classNames2, classes.inputTypeSearch, type === 'search'), (0, _defineProperty2.default)(_classNames2, classes.inputMultiline, multiline), (0, _defineProperty2.default)(_classNames2, classes.inputMarginDense, margin === 'dense'), _classNames2), inputPropsClassName);\n      var required = muiFormControl && muiFormControl.required === true;\n      var InputComponent = 'input';\n      var inputProps = (0, _objectSpread2.default)({}, inputPropsProp, {\n        ref: this.handleRefInput\n      });\n\n      if (inputComponent) {\n        InputComponent = inputComponent;\n        inputProps = (0, _objectSpread2.default)({\n          // Rename ref to inputRef as we don't know the\n          // provided `inputComponent` structure.\n          inputRef: this.handleRefInput\n        }, inputProps, {\n          ref: null\n        });\n      } else if (multiline) {\n        if (rows && !rowsMax) {\n          InputComponent = 'textarea';\n        } else {\n          inputProps = (0, _objectSpread2.default)({\n            rowsMax: rowsMax,\n            textareaRef: this.handleRefInput\n          }, inputProps, {\n            ref: null\n          });\n          InputComponent = _Textarea.default;\n        }\n      }\n\n      return _react.default.createElement(\"div\", (0, _extends2.default)({\n        className: className\n      }, other), startAdornment, _react.default.createElement(InputComponent, (0, _extends2.default)({\n        \"aria-invalid\": error,\n        \"aria-required\": required,\n        autoComplete: autoComplete,\n        autoFocus: autoFocus,\n        className: inputClassName,\n        defaultValue: defaultValue,\n        disabled: disabled,\n        id: id,\n        name: name,\n        onBlur: this.handleBlur,\n        onChange: this.handleChange,\n        onFocus: this.handleFocus,\n        onKeyDown: onKeyDown,\n        onKeyUp: onKeyUp,\n        placeholder: placeholder,\n        readOnly: readOnly,\n        required: required ? true : undefined,\n        rows: rows,\n        type: type,\n        value: value\n      }, inputProps)), endAdornment);\n    }\n  }]);\n  return Input;\n}(_react.default.Component);\n\nInput.propTypes =  true ? {\n  /**\n   * This property helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it here:\n   * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill\n   */\n  autoComplete: _propTypes.default.string,\n\n  /**\n   * If `true`, the input will be focused during the first mount.\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * The CSS class name of the wrapper element.\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The default input value, useful when not controlling the component.\n   */\n  defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * If `true`, the input will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the input will not have an underline.\n   */\n  disableUnderline: _propTypes.default.bool,\n\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: _propTypes.default.node,\n\n  /**\n   * If `true`, the input will indicate an error. This is normally obtained via context from\n   * FormControl.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * If `true`, the input will take up the full width of its container.\n   */\n  fullWidth: _propTypes.default.bool,\n\n  /**\n   * The id of the `input` element.\n   */\n  id: _propTypes.default.string,\n\n  /**\n   * The component used for the native input.\n   * Either a string to use a DOM element or a component.\n   */\n  inputComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Properties applied to the `input` element.\n   */\n  inputProps: _propTypes.default.object,\n\n  /**\n   * Use that property to pass a ref callback to the native input component.\n   */\n  inputRef: _propTypes.default.func,\n\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: _propTypes.default.oneOf(['dense', 'none']),\n\n  /**\n   * If `true`, a textarea element will be rendered.\n   */\n  multiline: _propTypes.default.bool,\n\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value`.\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onEmpty: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFilled: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onKeyDown: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onKeyUp: _propTypes.default.func,\n\n  /**\n   * The short hint displayed in the input before the user enters a value.\n   */\n  placeholder: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  readOnly: _propTypes.default.bool,\n\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: _propTypes.default.node,\n\n  /**\n   * Type of the input element. It should be a valid HTML5 input type.\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The input value, required for a controlled component.\n   */\n  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]))])\n} : undefined;\nInput.muiName = 'Input';\nInput.defaultProps = {\n  disableUnderline: false,\n  fullWidth: false,\n  multiline: false,\n  type: 'text'\n};\nInput.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\nInput.childContextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiInput'\n})(Input);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Input/Input.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Input/InputAdornment.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/material-ui/Input/InputAdornment.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _Typography = _interopRequireDefault(__webpack_require__(/*! ../Typography */ \"./node_modules/material-ui/Typography/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'flex',\n      maxHeight: '2em',\n      alignItems: 'center'\n    },\n    positionStart: {\n      marginRight: theme.spacing.unit\n    },\n    positionEnd: {\n      marginLeft: theme.spacing.unit\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction InputAdornment(props) {\n  var _classNames;\n\n  var children = props.children,\n      Component = props.component,\n      classes = props.classes,\n      className = props.className,\n      disableTypography = props.disableTypography,\n      position = props.position,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"component\", \"classes\", \"className\", \"disableTypography\", \"position\"]);\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.positionStart, position === 'start'), (0, _defineProperty2.default)(_classNames, classes.positionEnd, position === 'end'), _classNames), className)\n  }, other), typeof children === 'string' && !disableTypography ? _react.default.createElement(_Typography.default, {\n    color: \"textSecondary\"\n  }, children) : children);\n}\n\nInputAdornment.propTypes =  true ? {\n  /**\n   * The content of the component, normally an `IconButton` or string.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If children is a string then disable wrapping in a Typography component.\n   */\n  disableTypography: _propTypes.default.bool,\n\n  /**\n   * The position this adornment should appear relative to the `Input`.\n   */\n  position: _propTypes.default.oneOf(['start', 'end'])\n} : undefined;\nInputAdornment.defaultProps = {\n  component: 'div',\n  disableTypography: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiInputAdornment'\n})(InputAdornment);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Input/InputAdornment.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Input/InputLabel.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/Input/InputLabel.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Form = __webpack_require__(/*! ../Form */ \"./node_modules/material-ui/Form/index.js\");\n\n// @inheritedComponent FormLabel\nvar styles = function styles(theme) {\n  return {\n    root: {\n      transformOrigin: 'top left'\n    },\n    formControl: {\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      // slight alteration to spec spacing to match visual spec result\n      transform: \"translate(0, \".concat(theme.spacing.unit * 3, \"px) scale(1)\")\n    },\n    marginDense: {\n      // Compensation for the `Input.inputDense` style.\n      transform: \"translate(0, \".concat(theme.spacing.unit * 2.5 + 1, \"px) scale(1)\")\n    },\n    shrink: {\n      transform: 'translate(0, 1.5px) scale(0.75)',\n      transformOrigin: 'top left'\n    },\n    animated: {\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      })\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction InputLabel(props, context) {\n  var _classNames;\n\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      disableAnimation = props.disableAnimation,\n      FormLabelClasses = props.FormLabelClasses,\n      marginProp = props.margin,\n      shrinkProp = props.shrink,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"disableAnimation\", \"FormLabelClasses\", \"margin\", \"shrink\"]);\n  var muiFormControl = context.muiFormControl;\n  var shrink = shrinkProp;\n\n  if (typeof shrink === 'undefined' && muiFormControl) {\n    shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n  }\n\n  var margin = marginProp;\n\n  if (typeof margin === 'undefined' && muiFormControl) {\n    margin = muiFormControl.margin;\n  }\n\n  var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.formControl, muiFormControl), (0, _defineProperty2.default)(_classNames, classes.animated, !disableAnimation), (0, _defineProperty2.default)(_classNames, classes.shrink, shrink), (0, _defineProperty2.default)(_classNames, classes.marginDense, margin === 'dense'), _classNames), classNameProp);\n  return _react.default.createElement(_Form.FormLabel, (0, _extends2.default)({\n    \"data-shrink\": shrink,\n    className: className,\n    classes: FormLabelClasses\n  }, other), children);\n}\n\nInputLabel.propTypes =  true ? {\n  /**\n   * The contents of the `InputLabel`.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, the transition animation is disabled.\n   */\n  disableAnimation: _propTypes.default.bool,\n\n  /**\n   * If `true`, apply disabled class.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label will be displayed in an error state.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * If `true`, the input of this label is focused.\n   */\n  focused: _propTypes.default.bool,\n\n  /**\n   * `classes` property applied to the `FormLabel` element.\n   */\n  FormLabelClasses: _propTypes.default.object,\n\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: _propTypes.default.oneOf(['dense']),\n\n  /**\n   * if `true`, the label will indicate that the input is required.\n   */\n  required: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label is shrunk.\n   */\n  shrink: _propTypes.default.bool\n} : undefined;\nInputLabel.defaultProps = {\n  disableAnimation: false\n};\nInputLabel.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiInputLabel'\n})(InputLabel);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Input/InputLabel.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Input/Textarea.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/Input/Textarea.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _debounce = _interopRequireDefault(__webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\"));\n\nvar _reactEventListener = _interopRequireDefault(__webpack_require__(/*! react-event-listener */ \"./node_modules/react-event-listener/lib/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar ROWS_HEIGHT = 19;\nvar styles = {\n  root: {\n    position: 'relative',\n    // because the shadow has position: 'absolute',\n    width: '100%'\n  },\n  textarea: {\n    width: '100%',\n    height: '100%',\n    resize: 'none',\n    font: 'inherit',\n    padding: 0,\n    cursor: 'inherit',\n    boxSizing: 'border-box',\n    lineHeight: 'inherit',\n    border: 'none',\n    outline: 'none',\n    background: 'transparent'\n  },\n  shadow: {\n    resize: 'none',\n    // Overflow also needed to here to remove the extra row\n    // added to textareas in Firefox.\n    overflow: 'hidden',\n    // Visibility needed to hide the extra text area on ipads\n    visibility: 'hidden',\n    position: 'absolute',\n    height: 'auto',\n    whiteSpace: 'pre-wrap'\n  }\n};\n/**\n * @ignore - internal component.\n */\n\nexports.styles = styles;\n\nvar Textarea =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Textarea, _React$Component);\n\n  function Textarea(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, Textarea);\n    _this = (0, _possibleConstructorReturn2.default)(this, (Textarea.__proto__ || (0, _getPrototypeOf.default)(Textarea)).call(this, props, context)); // <Input> expects the components it renders to respond to 'value'\n    // so that it can check whether they are filled.\n\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        height: null\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"shadow\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"singlelineShadow\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"input\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"value\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleResize\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _debounce.default)(function () {\n        _this.syncHeightWithShadow();\n      }, 166)\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleRefInput\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.input = node;\n\n        if (_this.props.textareaRef) {\n          _this.props.textareaRef(node);\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleRefSinglelineShadow\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.singlelineShadow = node;\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleRefShadow\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.shadow = node;\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleChange\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        _this.value = event.target.value;\n\n        if (typeof _this.props.value === 'undefined' && _this.shadow) {\n          // The component is not controlled, we need to update the shallow value.\n          _this.shadow.value = _this.value;\n\n          _this.syncHeightWithShadow();\n        }\n\n        if (_this.props.onChange) {\n          _this.props.onChange(event);\n        }\n      }\n    });\n    _this.value = props.value || props.defaultValue || '';\n    _this.state = {\n      height: Number(props.rows) * ROWS_HEIGHT\n    };\n    return _this;\n  }\n\n  (0, _createClass2.default)(Textarea, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.syncHeightWithShadow();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.syncHeightWithShadow();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.handleResize.cancel();\n    }\n  }, {\n    key: \"syncHeightWithShadow\",\n    // Corresponds to 10 frames at 60 Hz.\n    value: function syncHeightWithShadow() {\n      var props = this.props;\n\n      if (!this.shadow || !this.singlelineShadow) {\n        return;\n      } // The component is controlled, we need to update the shallow value.\n\n\n      if (typeof props.value !== 'undefined') {\n        this.shadow.value = props.value == null ? '' : String(props.value);\n      }\n\n      var lineHeight = this.singlelineShadow.scrollHeight;\n      var newHeight = this.shadow.scrollHeight; // Guarding for jsdom, where scrollHeight isn't present.\n      // See https://github.com/tmpvar/jsdom/issues/1013\n\n      if (newHeight === undefined) {\n        return;\n      }\n\n      if (Number(props.rowsMax) >= Number(props.rows)) {\n        newHeight = Math.min(Number(props.rowsMax) * lineHeight, newHeight);\n      }\n\n      newHeight = Math.max(newHeight, lineHeight); // Need a large enough different to update the height.\n      // This prevents infinite rendering loop.\n\n      if (Math.abs(this.state.height - newHeight) > 1) {\n        this.setState({\n          height: newHeight\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          classes = _props.classes,\n          className = _props.className,\n          defaultValue = _props.defaultValue,\n          onChange = _props.onChange,\n          rows = _props.rows,\n          rowsMax = _props.rowsMax,\n          textareaRef = _props.textareaRef,\n          value = _props.value,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"classes\", \"className\", \"defaultValue\", \"onChange\", \"rows\", \"rowsMax\", \"textareaRef\", \"value\"]);\n      return _react.default.createElement(\"div\", {\n        className: classes.root,\n        style: {\n          height: this.state.height\n        }\n      }, _react.default.createElement(_reactEventListener.default, {\n        target: \"window\",\n        onResize: this.handleResize\n      }), _react.default.createElement(\"textarea\", {\n        ref: this.handleRefSinglelineShadow,\n        className: (0, _classnames.default)(classes.shadow, classes.textarea),\n        tabIndex: -1,\n        rows: \"1\",\n        readOnly: true,\n        \"aria-hidden\": \"true\",\n        value: \"\"\n      }), _react.default.createElement(\"textarea\", {\n        ref: this.handleRefShadow,\n        className: (0, _classnames.default)(classes.shadow, classes.textarea),\n        tabIndex: -1,\n        rows: rows,\n        \"aria-hidden\": \"true\",\n        readOnly: true,\n        defaultValue: defaultValue,\n        value: value\n      }), _react.default.createElement(\"textarea\", (0, _extends2.default)({\n        rows: rows,\n        className: (0, _classnames.default)(classes.textarea, className),\n        defaultValue: defaultValue,\n        value: value,\n        onChange: this.handleChange,\n        ref: this.handleRefInput\n      }, other)));\n    }\n  }]);\n  return Textarea;\n}(_react.default.Component);\n\nTextarea.propTypes =  true ? {\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * @ignore\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Use that property to pass a ref callback to the native textarea element.\n   */\n  textareaRef: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])\n} : undefined;\nTextarea.defaultProps = {\n  rows: 1\n};\n\nvar _default = (0, _withStyles.default)(styles)(Textarea);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Input/Textarea.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Input/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Input/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Input.default;\n  }\n});\nObject.defineProperty(exports, \"InputAdornment\", {\n  enumerable: true,\n  get: function get() {\n    return _InputAdornment.default;\n  }\n});\nObject.defineProperty(exports, \"InputLabel\", {\n  enumerable: true,\n  get: function get() {\n    return _InputLabel.default;\n  }\n});\n\nvar _Input = _interopRequireDefault(__webpack_require__(/*! ./Input */ \"./node_modules/material-ui/Input/Input.js\"));\n\nvar _InputAdornment = _interopRequireDefault(__webpack_require__(/*! ./InputAdornment */ \"./node_modules/material-ui/Input/InputAdornment.js\"));\n\nvar _InputLabel = _interopRequireDefault(__webpack_require__(/*! ./InputLabel */ \"./node_modules/material-ui/Input/InputLabel.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Input/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/List.js":
+/*!***********************************************!*\
+  !*** ./node_modules/material-ui/List/List.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      listStyle: 'none',\n      margin: 0,\n      padding: 0,\n      position: 'relative'\n    },\n    padding: {\n      paddingTop: theme.spacing.unit,\n      paddingBottom: theme.spacing.unit\n    },\n    dense: {\n      paddingTop: theme.spacing.unit / 2,\n      paddingBottom: theme.spacing.unit / 2\n    },\n    subheader: {\n      paddingTop: 0\n    }\n  };\n};\n\nexports.styles = styles;\n\nvar List =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(List, _React$Component);\n\n  function List() {\n    (0, _classCallCheck2.default)(this, List);\n    return (0, _possibleConstructorReturn2.default)(this, (List.__proto__ || (0, _getPrototypeOf.default)(List)).apply(this, arguments));\n  }\n\n  (0, _createClass2.default)(List, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        dense: this.props.dense\n      };\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          children = _props.children,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          Component = _props.component,\n          dense = _props.dense,\n          disablePadding = _props.disablePadding,\n          subheader = _props.subheader,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n      var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.dense, dense && !disablePadding), (0, _defineProperty2.default)(_classNames, classes.padding, !disablePadding), (0, _defineProperty2.default)(_classNames, classes.subheader, subheader), _classNames), classNameProp);\n      return _react.default.createElement(Component, (0, _extends2.default)({\n        className: className\n      }, other), subheader, children);\n    }\n  }]);\n  return List;\n}(_react.default.Component);\n\nList.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input will be used for\n   * the list and list items. The property is available to descendant components as the\n   * `dense` context.\n   */\n  dense: _propTypes.default.bool,\n\n  /**\n   * If `true`, vertical padding will be removed from the list.\n   */\n  disablePadding: _propTypes.default.bool,\n\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: _propTypes.default.node\n} : undefined;\nList.defaultProps = {\n  component: 'ul',\n  dense: false,\n  disablePadding: false\n};\nList.childContextTypes = {\n  dense: _propTypes.default.bool\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiList'\n})(List);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/List.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListItem.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/List/ListItem.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ../ButtonBase */ \"./node_modules/material-ui/ButtonBase/index.js\"));\n\nvar _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ \"./node_modules/material-ui/utils/reactHelpers.js\");\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'flex',\n      justifyContent: 'flex-start',\n      alignItems: 'center',\n      position: 'relative',\n      textDecoration: 'none',\n      width: '100%',\n      boxSizing: 'border-box',\n      textAlign: 'left'\n    },\n    container: {\n      position: 'relative'\n    },\n    focusVisible: {\n      backgroundColor: theme.palette.action.hover\n    },\n    default: {\n      paddingTop: 12,\n      paddingBottom: 12\n    },\n    dense: {\n      paddingTop: theme.spacing.unit,\n      paddingBottom: theme.spacing.unit\n    },\n    disabled: {\n      opacity: 0.5\n    },\n    divider: {\n      borderBottom: \"1px solid \".concat(theme.palette.divider),\n      backgroundClip: 'padding-box'\n    },\n    gutters: theme.mixins.gutters(),\n    button: {\n      transition: theme.transitions.create('background-color', {\n        duration: theme.transitions.duration.shortest\n      }),\n      '&:hover': {\n        textDecoration: 'none',\n        backgroundColor: theme.palette.action.hover,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    },\n    secondaryAction: {\n      // Add some space to avoid collision as `ListItemSecondaryAction`\n      // is absolutely positionned.\n      paddingRight: theme.spacing.unit * 4\n    }\n  };\n};\n\nexports.styles = styles;\n\nvar ListItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(ListItem, _React$Component);\n\n  function ListItem() {\n    (0, _classCallCheck2.default)(this, ListItem);\n    return (0, _possibleConstructorReturn2.default)(this, (ListItem.__proto__ || (0, _getPrototypeOf.default)(ListItem)).apply(this, arguments));\n  }\n\n  (0, _createClass2.default)(ListItem, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        dense: this.props.dense || this.context.dense || false\n      };\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          button = _props.button,\n          childrenProp = _props.children,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          componentProp = _props.component,\n          ContainerComponent = _props.ContainerComponent,\n          _props$ContainerProps = _props.ContainerProps;\n      _props$ContainerProps = _props$ContainerProps === void 0 ? {} : _props$ContainerProps;\n      var ContainerClassName = _props$ContainerProps.className,\n          ContainerProps = (0, _objectWithoutProperties2.default)(_props$ContainerProps, [\"className\"]),\n          dense = _props.dense,\n          disabled = _props.disabled,\n          disableGutters = _props.disableGutters,\n          divider = _props.divider,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"button\", \"children\", \"classes\", \"className\", \"component\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"divider\"]);\n      var isDense = dense || this.context.dense || false;\n\n      var children = _react.default.Children.toArray(childrenProp);\n\n      var hasAvatar = children.some(function (value) {\n        return (0, _reactHelpers.isMuiElement)(value, ['ListItemAvatar']);\n      });\n      var hasSecondaryAction = children.length && (0, _reactHelpers.isMuiElement)(children[children.length - 1], ['ListItemSecondaryAction']);\n      var className = (0, _classnames.default)(classes.root, isDense || hasAvatar ? classes.dense : classes.default, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.gutters, !disableGutters), (0, _defineProperty2.default)(_classNames, classes.divider, divider), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.button, button), (0, _defineProperty2.default)(_classNames, classes.secondaryAction, hasSecondaryAction), _classNames), classNameProp);\n      var componentProps = (0, _objectSpread2.default)({\n        className: className,\n        disabled: disabled\n      }, other);\n      var Component = componentProp || 'li';\n\n      if (button) {\n        componentProps.component = componentProp || 'div';\n        componentProps.focusVisibleClassName = classes.focusVisible;\n        Component = _ButtonBase.default;\n      }\n\n      if (hasSecondaryAction) {\n        // Use div by default.\n        Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li.\n\n        if (ContainerComponent === 'li') {\n          if (Component === 'li') {\n            Component = 'div';\n          } else if (componentProps.component === 'li') {\n            componentProps.component = 'div';\n          }\n        }\n\n        return _react.default.createElement(ContainerComponent, (0, _extends2.default)({\n          className: (0, _classnames.default)(classes.container, ContainerClassName)\n        }, ContainerProps), _react.default.createElement(Component, componentProps, children), children.pop());\n      }\n\n      return _react.default.createElement(Component, componentProps, children);\n    }\n  }]);\n  return ListItem;\n}(_react.default.Component);\n\nListItem.propTypes =  true ? {\n  /**\n   * If `true`, the list item will be a button (using `ButtonBase`).\n   */\n  button: _propTypes.default.bool,\n\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   * By default, it's a `li` when `button` is `false` and a `div` when `button` is `true`.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * The container component. Useful when a `ListItemSecondaryAction` is rendered.\n   */\n  ContainerComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Properties applied to the container element when the component\n   * is used to display a `ListItemSecondaryAction`.\n   */\n  ContainerProps: _propTypes.default.object,\n\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n   */\n  dense: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the left and right padding is removed.\n   */\n  disableGutters: _propTypes.default.bool,\n\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   */\n  divider: _propTypes.default.bool\n} : undefined;\nListItem.defaultProps = {\n  button: false,\n  ContainerComponent: 'li',\n  dense: false,\n  disabled: false,\n  disableGutters: false,\n  divider: false\n};\nListItem.contextTypes = {\n  dense: _propTypes.default.bool\n};\nListItem.childContextTypes = {\n  dense: _propTypes.default.bool\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListItem'\n})(ListItem);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListItem.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListItemAvatar.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/List/ListItemAvatar.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      width: 36,\n      height: 36,\n      fontSize: theme.typography.pxToRem(18),\n      marginRight: 4\n    },\n    icon: {\n      width: 20,\n      height: 20,\n      fontSize: theme.typography.pxToRem(20)\n    }\n  };\n};\n/**\n * It's a simple wrapper to apply the `dense` mode styles to `Avatar`.\n */\n\n\nexports.styles = styles;\n\nfunction ListItemAvatar(props, context) {\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\"]);\n\n  if (context.dense === undefined) {\n     true ? (0, _warning.default)(false, \"Material-UI: <ListItemAvatar> is a simple wrapper to apply the dense styles\\n      to <Avatar>. You do not need it unless you are controlling the <List> dense property.\") : undefined;\n    return props.children;\n  }\n\n  return _react.default.cloneElement(children, (0, _objectSpread2.default)({\n    className: (0, _classnames.default)((0, _defineProperty2.default)({}, classes.root, context.dense), classNameProp, children.props.className),\n    childrenClassName: (0, _classnames.default)((0, _defineProperty2.default)({}, classes.icon, context.dense), children.props.childrenClassName)\n  }, other));\n}\n\nListItemAvatar.propTypes =  true ? {\n  /**\n   * The content of the component, normally `Avatar`.\n   */\n  children: _propTypes.default.element.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string\n} : undefined;\nListItemAvatar.contextTypes = {\n  dense: _propTypes.default.bool\n};\nListItemAvatar.muiName = 'ListItemAvatar';\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListItemAvatar'\n})(ListItemAvatar);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListItemAvatar.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListItemIcon.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/List/ListItemIcon.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      marginRight: theme.spacing.unit * 2,\n      color: theme.palette.action.active,\n      flexShrink: 0\n    }\n  };\n};\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\n\n\nexports.styles = styles;\n\nfunction ListItemIcon(props) {\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\"]);\n  return _react.default.cloneElement(children, (0, _objectSpread2.default)({\n    className: (0, _classnames.default)(classes.root, classNameProp, children.props.className)\n  }, other));\n}\n\nListItemIcon.propTypes =  true ? {\n  /**\n   * The content of the component, normally `Icon`, `SvgIcon`,\n   * or a `@material-ui/icons` SVG icon element.\n   */\n  children: _propTypes.default.element.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string\n} : undefined;\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListItemIcon'\n})(ListItemIcon);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListItemIcon.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListItemSecondaryAction.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/material-ui/List/ListItemSecondaryAction.js ***!
+  \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = {\n  root: {\n    position: 'absolute',\n    right: 4,\n    top: '50%',\n    transform: 'translateY(-50%)'\n  }\n};\nexports.styles = styles;\n\nfunction ListItemSecondaryAction(props) {\n  var children = props.children,\n      classes = props.classes,\n      className = props.className,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\"]);\n  return _react.default.createElement(\"div\", (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, className)\n  }, other), children);\n}\n\nListItemSecondaryAction.propTypes =  true ? {\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string\n} : undefined;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListItemSecondaryAction'\n})(ListItemSecondaryAction);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListItemSecondaryAction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListItemText.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/List/ListItemText.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Typography = _interopRequireDefault(__webpack_require__(/*! ../Typography */ \"./node_modules/material-ui/Typography/index.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      flex: '1 1 auto',\n      minWidth: 0,\n      padding: \"0 \".concat(theme.spacing.unit * 2, \"px\"),\n      '&:first-child': {\n        paddingLeft: 0\n      }\n    },\n    inset: {\n      '&:first-child': {\n        paddingLeft: theme.spacing.unit * 7\n      }\n    },\n    dense: {\n      fontSize: theme.typography.pxToRem(13)\n    },\n    primary: {\n      '&$textDense': {\n        fontSize: 'inherit'\n      }\n    },\n    secondary: {\n      '&$textDense': {\n        fontSize: 'inherit'\n      }\n    },\n    textDense: {}\n  };\n};\n\nexports.styles = styles;\n\nfunction ListItemText(props, context) {\n  var _classNames3;\n\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      disableTypography = props.disableTypography,\n      inset = props.inset,\n      primaryProp = props.primary,\n      secondaryProp = props.secondary,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"secondary\"]);\n  var dense = context.dense;\n  var primary = primaryProp || children;\n\n  if (primary && !disableTypography) {\n    primary = _react.default.createElement(_Typography.default, {\n      variant: \"subheading\",\n      className: (0, _classnames.default)(classes.primary, (0, _defineProperty2.default)({}, classes.textDense, dense))\n    }, primary);\n  }\n\n  var secondary = secondaryProp;\n\n  if (secondary && !disableTypography) {\n    secondary = _react.default.createElement(_Typography.default, {\n      variant: \"body1\",\n      className: (0, _classnames.default)(classes.secondary, (0, _defineProperty2.default)({}, classes.textDense, dense)),\n      color: \"textSecondary\"\n    }, secondary);\n  }\n\n  return _react.default.createElement(\"div\", (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, classes.dense, dense), (0, _defineProperty2.default)(_classNames3, classes.inset, inset), _classNames3), classNameProp)\n  }, other), primary, secondary);\n}\n\nListItemText.propTypes =  true ? {\n  /**\n   * Alias for the `primary` property.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, the children won't be wrapped by a typography component.\n   * For instance, that can be useful to can render an h4 instead of a\n   */\n  disableTypography: _propTypes.default.bool,\n\n  /**\n   * If `true`, the children will be indented.\n   * This should be used if there is no left avatar or left icon.\n   */\n  inset: _propTypes.default.bool,\n  primary: _propTypes.default.node,\n  secondary: _propTypes.default.node\n} : undefined;\nListItemText.defaultProps = {\n  disableTypography: false,\n  inset: false\n};\nListItemText.contextTypes = {\n  dense: _propTypes.default.bool\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListItemText'\n})(ListItemText);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListItemText.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/ListSubheader.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/List/ListSubheader.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar styles = function styles(theme) {\n  return {\n    root: theme.mixins.gutters({\n      boxSizing: 'border-box',\n      lineHeight: '48px',\n      listStyle: 'none',\n      color: theme.palette.text.secondary,\n      fontFamily: theme.typography.fontFamily,\n      fontWeight: theme.typography.fontWeightMedium,\n      fontSize: theme.typography.pxToRem(14)\n    }),\n    colorPrimary: {\n      color: theme.palette.primary.main\n    },\n    colorInherit: {\n      color: 'inherit'\n    },\n    inset: {\n      paddingLeft: theme.spacing.unit * 9\n    },\n    sticky: {\n      position: 'sticky',\n      top: 0,\n      zIndex: 1,\n      backgroundColor: 'inherit'\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction ListSubheader(props) {\n  var _classNames;\n\n  var classes = props.classes,\n      className = props.className,\n      color = props.color,\n      Component = props.component,\n      disableSticky = props.disableSticky,\n      inset = props.inset,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"color\", \"component\", \"disableSticky\", \"inset\"]);\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes[\"color\".concat((0, _helpers.capitalize)(color))], color !== 'default'), (0, _defineProperty2.default)(_classNames, classes.inset, inset), (0, _defineProperty2.default)(_classNames, classes.sticky, !disableSticky), _classNames), className)\n  }, other));\n}\n\nListSubheader.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['default', 'primary', 'inherit']),\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   */\n  disableSticky: _propTypes.default.bool,\n\n  /**\n   * If `true`, the List Subheader will be indented.\n   */\n  inset: _propTypes.default.bool\n} : undefined;\nListSubheader.defaultProps = {\n  color: 'default',\n  component: 'li',\n  disableSticky: false,\n  inset: false\n};\nListSubheader.muiName = 'ListSubheader';\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiListSubheader'\n})(ListSubheader);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/ListSubheader.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/List/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/material-ui/List/index.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _List.default;\n  }\n});\nObject.defineProperty(exports, \"ListItem\", {\n  enumerable: true,\n  get: function get() {\n    return _ListItem.default;\n  }\n});\nObject.defineProperty(exports, \"ListItemAvatar\", {\n  enumerable: true,\n  get: function get() {\n    return _ListItemAvatar.default;\n  }\n});\nObject.defineProperty(exports, \"ListItemText\", {\n  enumerable: true,\n  get: function get() {\n    return _ListItemText.default;\n  }\n});\nObject.defineProperty(exports, \"ListItemIcon\", {\n  enumerable: true,\n  get: function get() {\n    return _ListItemIcon.default;\n  }\n});\nObject.defineProperty(exports, \"ListItemSecondaryAction\", {\n  enumerable: true,\n  get: function get() {\n    return _ListItemSecondaryAction.default;\n  }\n});\nObject.defineProperty(exports, \"ListSubheader\", {\n  enumerable: true,\n  get: function get() {\n    return _ListSubheader.default;\n  }\n});\n\nvar _List = _interopRequireDefault(__webpack_require__(/*! ./List */ \"./node_modules/material-ui/List/List.js\"));\n\nvar _ListItem = _interopRequireDefault(__webpack_require__(/*! ./ListItem */ \"./node_modules/material-ui/List/ListItem.js\"));\n\nvar _ListItemAvatar = _interopRequireDefault(__webpack_require__(/*! ./ListItemAvatar */ \"./node_modules/material-ui/List/ListItemAvatar.js\"));\n\nvar _ListItemText = _interopRequireDefault(__webpack_require__(/*! ./ListItemText */ \"./node_modules/material-ui/List/ListItemText.js\"));\n\nvar _ListItemIcon = _interopRequireDefault(__webpack_require__(/*! ./ListItemIcon */ \"./node_modules/material-ui/List/ListItemIcon.js\"));\n\nvar _ListItemSecondaryAction = _interopRequireDefault(__webpack_require__(/*! ./ListItemSecondaryAction */ \"./node_modules/material-ui/List/ListItemSecondaryAction.js\"));\n\nvar _ListSubheader = _interopRequireDefault(__webpack_require__(/*! ./ListSubheader */ \"./node_modules/material-ui/List/ListSubheader.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/List/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Menu/Menu.js":
+/*!***********************************************!*\
+  !*** ./node_modules/material-ui/Menu/Menu.js ***!
+  \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _scrollbarSize = _interopRequireDefault(__webpack_require__(/*! dom-helpers/util/scrollbarSize */ \"./node_modules/dom-helpers/util/scrollbarSize.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Popover = _interopRequireDefault(__webpack_require__(/*! ../Popover */ \"./node_modules/material-ui/Popover/index.js\"));\n\nvar _MenuList = _interopRequireDefault(__webpack_require__(/*! ./MenuList */ \"./node_modules/material-ui/Menu/MenuList.js\"));\n\n// @inheritedComponent Popover\nvar RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nvar LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nvar styles = {\n  paper: {\n    // specZ: The maximum height of a simple menu should be one or more rows less than the view\n    // height. This ensures a tappable area outside of the simple menu with which to dismiss\n    // the menu.\n    maxHeight: 'calc(100vh - 96px)',\n    // Add iOS momentum scrolling.\n    WebkitOverflowScrolling: 'touch'\n  }\n};\nexports.styles = styles;\n\nvar Menu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Menu, _React$Component);\n\n  function Menu() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Menu);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Menu.__proto__ || (0, _getPrototypeOf.default)(Menu)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"getContentAnchorEl\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (!_this.menuList || !_this.menuList.selectedItem) {\n          return _reactDom.default.findDOMNode(_this.menuList).firstChild;\n        }\n\n        return _reactDom.default.findDOMNode(_this.menuList.selectedItem);\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"menuList\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"focus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_this.menuList && _this.menuList.selectedItem) {\n          _reactDom.default.findDOMNode(_this.menuList.selectedItem).focus();\n\n          return;\n        }\n\n        var menuList = _reactDom.default.findDOMNode(_this.menuList);\n\n        if (menuList && menuList.firstChild) {\n          menuList.firstChild.focus();\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(element) {\n        var theme = _this.props.theme;\n\n        var menuList = _reactDom.default.findDOMNode(_this.menuList); // Focus so the scroll computation of the Popover works as expected.\n\n\n        _this.focus(); // Let's ignore that piece of logic if users are already overriding the width\n        // of the menu.\n\n\n        if (menuList && element.clientHeight < menuList.clientHeight && !menuList.style.width) {\n          var size = \"\".concat((0, _scrollbarSize.default)(), \"px\");\n          menuList.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = size;\n          menuList.style.width = \"calc(100% + \".concat(size, \")\");\n        }\n\n        if (_this.props.onEnter) {\n          _this.props.onEnter(element);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleListKeyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event, key) {\n        if (key === 'tab') {\n          event.preventDefault();\n\n          if (_this.props.onClose) {\n            _this.props.onClose(event);\n          }\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Menu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.open) {\n        this.focus();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          children = _props.children,\n          classes = _props.classes,\n          MenuListProps = _props.MenuListProps,\n          onEnter = _props.onEnter,\n          _props$PaperProps = _props.PaperProps,\n          PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n          PopoverClasses = _props.PopoverClasses,\n          theme = _props.theme,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"classes\", \"MenuListProps\", \"onEnter\", \"PaperProps\", \"PopoverClasses\", \"theme\"]);\n      return _react.default.createElement(_Popover.default, (0, _extends2.default)({\n        getContentAnchorEl: this.getContentAnchorEl,\n        classes: PopoverClasses,\n        onEnter: this.handleEnter,\n        anchorOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n        transformOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n        PaperProps: (0, _objectSpread2.default)({}, PaperProps, {\n          classes: (0, _objectSpread2.default)({}, PaperProps.classes, {\n            root: classes.paper\n          })\n        })\n      }, other), _react.default.createElement(_MenuList.default, (0, _extends2.default)({\n        role: \"menu\",\n        onKeyDown: this.handleListKeyDown\n      }, MenuListProps, {\n        ref: function ref(node) {\n          _this2.menuList = node;\n        }\n      }), children));\n    }\n  }]);\n  return Menu;\n}(_react.default.Component);\n\nMenu.propTypes =  true ? {\n  /**\n   * The DOM element used to set the position of the menu.\n   */\n  anchorEl: _propTypes.default.object,\n\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * Properties applied to the `MenuList` element.\n   */\n  MenuListProps: _propTypes.default.object,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * Callback fired before the Menu enters.\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired when the Menu has entered.\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired when the Menu is entering.\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired before the Menu exits.\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired when the Menu has exited.\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * Callback fired when the Menu is exiting.\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * If `true`, the menu is visible.\n   */\n  open: _propTypes.default.bool.isRequired,\n\n  /**\n   * @ignore\n   */\n  PaperProps: _propTypes.default.object,\n\n  /**\n   * `classes` property applied to the `Popover` element.\n   */\n  PopoverClasses: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  theme: _propTypes.default.object.isRequired,\n\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   */\n  transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  }), _propTypes.default.oneOf(['auto'])])\n} : undefined;\nMenu.defaultProps = {\n  transitionDuration: 'auto'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiMenu',\n  withTheme: true\n})(Menu);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Menu/Menu.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Menu/MenuItem.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Menu/MenuItem.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _ListItem = _interopRequireDefault(__webpack_require__(/*! ../List/ListItem */ \"./node_modules/material-ui/List/ListItem.js\"));\n\n// @inheritedComponent ListItem\nvar styles = function styles(theme) {\n  return {\n    root: (0, _objectSpread2.default)({}, theme.typography.subheading, {\n      height: theme.spacing.unit * 3,\n      boxSizing: 'content-box',\n      width: 'auto',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      paddingLeft: theme.spacing.unit * 2,\n      paddingRight: theme.spacing.unit * 2,\n      '&$selected': {\n        backgroundColor: theme.palette.action.selected\n      }\n    }),\n    selected: {}\n  };\n};\n\nexports.styles = styles;\n\nfunction MenuItem(props) {\n  var classes = props.classes,\n      className = props.className,\n      component = props.component,\n      selected = props.selected,\n      role = props.role,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"component\", \"selected\", \"role\"]);\n  return _react.default.createElement(_ListItem.default, (0, _extends2.default)({\n    button: true,\n    role: role,\n    tabIndex: -1,\n    className: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.selected, selected), className),\n    component: component\n  }, other));\n}\n\nMenuItem.propTypes =  true ? {\n  /**\n   * Menu item contents.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * @ignore\n   */\n  role: _propTypes.default.string,\n\n  /**\n   * Use to apply selected styling.\n   */\n  selected: _propTypes.default.bool\n} : undefined;\nMenuItem.defaultProps = {\n  component: 'li',\n  role: 'menuitem',\n  selected: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiMenuItem'\n})(MenuItem);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Menu/MenuItem.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Menu/MenuList.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Menu/MenuList.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _keycode = _interopRequireDefault(__webpack_require__(/*! keycode */ \"./node_modules/keycode/index.js\"));\n\nvar _contains = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/contains */ \"./node_modules/dom-helpers/query/contains.js\"));\n\nvar _activeElement = _interopRequireDefault(__webpack_require__(/*! dom-helpers/activeElement */ \"./node_modules/dom-helpers/activeElement.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _List = _interopRequireDefault(__webpack_require__(/*! ../List */ \"./node_modules/material-ui/List/index.js\"));\n\n// @inheritedComponent List\nvar MenuList =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(MenuList, _React$Component);\n\n  function MenuList() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, MenuList);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = MenuList.__proto__ || (0, _getPrototypeOf.default)(MenuList)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        currentTabIndex: undefined\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"list\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"selectedItem\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"blurTimer\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        _this.blurTimer = setTimeout(function () {\n          if (_this.list) {\n            var list = _reactDom.default.findDOMNode(_this.list);\n\n            var currentFocus = (0, _activeElement.default)((0, _ownerDocument.default)(list));\n\n            if (!(0, _contains.default)(list, currentFocus)) {\n              _this.resetTabIndex();\n            }\n          }\n        }, 30);\n\n        if (_this.props.onBlur) {\n          _this.props.onBlur(event);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleKeyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        var list = _reactDom.default.findDOMNode(_this.list);\n\n        var key = (0, _keycode.default)(event);\n        var currentFocus = (0, _activeElement.default)((0, _ownerDocument.default)(list));\n\n        if ((key === 'up' || key === 'down') && (!currentFocus || currentFocus && !(0, _contains.default)(list, currentFocus))) {\n          if (_this.selectedItem) {\n            _reactDom.default.findDOMNode(_this.selectedItem).focus();\n          } else {\n            list.firstChild.focus();\n          }\n        } else if (key === 'down') {\n          event.preventDefault();\n\n          if (currentFocus.nextElementSibling) {\n            currentFocus.nextElementSibling.focus();\n          }\n        } else if (key === 'up') {\n          event.preventDefault();\n\n          if (currentFocus.previousElementSibling) {\n            currentFocus.previousElementSibling.focus();\n          }\n        }\n\n        if (_this.props.onKeyDown) {\n          _this.props.onKeyDown(event, key);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleItemFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        var list = _reactDom.default.findDOMNode(_this.list);\n\n        if (list) {\n          for (var i = 0; i < list.children.length; i += 1) {\n            if (list.children[i] === event.currentTarget) {\n              _this.setTabIndex(i);\n\n              break;\n            }\n          }\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(MenuList, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.resetTabIndex();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      clearTimeout(this.blurTimer);\n    }\n  }, {\n    key: \"setTabIndex\",\n    value: function setTabIndex(index) {\n      this.setState({\n        currentTabIndex: index\n      });\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      var currentTabIndex = this.state.currentTabIndex;\n\n      var list = _reactDom.default.findDOMNode(this.list);\n\n      if (!list || !list.children || !list.firstChild) {\n        return;\n      }\n\n      if (currentTabIndex && currentTabIndex >= 0) {\n        list.children[currentTabIndex].focus();\n      } else {\n        list.firstChild.focus();\n      }\n    }\n  }, {\n    key: \"resetTabIndex\",\n    value: function resetTabIndex() {\n      var list = _reactDom.default.findDOMNode(this.list);\n\n      var currentFocus = (0, _activeElement.default)((0, _ownerDocument.default)(list));\n      var items = (0, _toConsumableArray2.default)(list.children);\n      var currentFocusIndex = items.indexOf(currentFocus);\n\n      if (currentFocusIndex !== -1) {\n        return this.setTabIndex(currentFocusIndex);\n      }\n\n      if (this.selectedItem) {\n        return this.setTabIndex(items.indexOf(_reactDom.default.findDOMNode(this.selectedItem)));\n      }\n\n      return this.setTabIndex(0);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          children = _props.children,\n          className = _props.className,\n          onBlur = _props.onBlur,\n          onKeyDown = _props.onKeyDown,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"className\", \"onBlur\", \"onKeyDown\"]);\n      return _react.default.createElement(_List.default, (0, _extends2.default)({\n        role: \"menu\",\n        ref: function ref(node) {\n          _this2.list = node;\n        },\n        className: className,\n        onKeyDown: this.handleKeyDown,\n        onBlur: this.handleBlur\n      }, other), _react.default.Children.map(children, function (child, index) {\n        if (!_react.default.isValidElement(child)) {\n          return null;\n        }\n\n        return _react.default.cloneElement(child, {\n          tabIndex: index === _this2.state.currentTabIndex ? 0 : -1,\n          ref: child.props.selected ? function (node) {\n            _this2.selectedItem = node;\n          } : undefined,\n          onFocus: _this2.handleItemFocus\n        });\n      }));\n    }\n  }]);\n  return MenuList;\n}(_react.default.Component);\n\nMenuList.propTypes =  true ? {\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onKeyDown: _propTypes.default.func\n} : undefined;\nvar _default = MenuList;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Menu/MenuList.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Menu/index.js":
+/*!************************************************!*\
+  !*** ./node_modules/material-ui/Menu/index.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Menu.default;\n  }\n});\nObject.defineProperty(exports, \"MenuList\", {\n  enumerable: true,\n  get: function get() {\n    return _MenuList.default;\n  }\n});\nObject.defineProperty(exports, \"MenuItem\", {\n  enumerable: true,\n  get: function get() {\n    return _MenuItem.default;\n  }\n});\n\nvar _Menu = _interopRequireDefault(__webpack_require__(/*! ./Menu */ \"./node_modules/material-ui/Menu/Menu.js\"));\n\nvar _MenuList = _interopRequireDefault(__webpack_require__(/*! ./MenuList */ \"./node_modules/material-ui/Menu/MenuList.js\"));\n\nvar _MenuItem = _interopRequireDefault(__webpack_require__(/*! ./MenuItem */ \"./node_modules/material-ui/Menu/MenuItem.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Menu/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/Backdrop.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/Modal/Backdrop.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Fade = _interopRequireDefault(__webpack_require__(/*! ../transitions/Fade */ \"./node_modules/material-ui/transitions/Fade.js\"));\n\nvar styles = {\n  root: {\n    zIndex: -1,\n    width: '100%',\n    height: '100%',\n    position: 'fixed',\n    top: 0,\n    left: 0,\n    // Remove grey highlight\n    WebkitTapHighlightColor: 'transparent',\n    backgroundColor: 'rgba(0, 0, 0, 0.5)'\n  },\n  invisible: {\n    backgroundColor: 'transparent'\n  }\n};\nexports.styles = styles;\n\nfunction Backdrop(props) {\n  var classes = props.classes,\n      className = props.className,\n      invisible = props.invisible,\n      open = props.open,\n      transitionDuration = props.transitionDuration,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"invisible\", \"open\", \"transitionDuration\"]);\n  return _react.default.createElement(_Fade.default, (0, _extends2.default)({\n    appear: true,\n    \"in\": open,\n    timeout: transitionDuration\n  }, other), _react.default.createElement(\"div\", {\n    className: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.invisible, invisible), className),\n    \"aria-hidden\": \"true\"\n  }));\n}\n\nBackdrop.propTypes =  true ? {\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   */\n  invisible: _propTypes.default.bool,\n\n  /**\n   * If `true`, the backdrop is open.\n   */\n  open: _propTypes.default.bool.isRequired,\n\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  })])\n} : undefined;\nBackdrop.defaultProps = {\n  invisible: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiBackdrop'\n})(Backdrop);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/Backdrop.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/Modal.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Modal/Modal.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _reactLifecyclesCompat = __webpack_require__(/*! react-lifecycles-compat */ \"./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\");\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _keycode = _interopRequireDefault(__webpack_require__(/*! keycode */ \"./node_modules/keycode/index.js\"));\n\nvar _activeElement = _interopRequireDefault(__webpack_require__(/*! dom-helpers/activeElement */ \"./node_modules/dom-helpers/activeElement.js\"));\n\nvar _contains = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/contains */ \"./node_modules/dom-helpers/query/contains.js\"));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(/*! dom-helpers/util/inDOM */ \"./node_modules/dom-helpers/util/inDOM.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _RootRef = _interopRequireDefault(__webpack_require__(/*! ../internal/RootRef */ \"./node_modules/material-ui/internal/RootRef.js\"));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(/*! ../Portal */ \"./node_modules/material-ui/Portal/index.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _ModalManager = _interopRequireDefault(__webpack_require__(/*! ./ModalManager */ \"./node_modules/material-ui/Modal/ModalManager.js\"));\n\nvar _Backdrop = _interopRequireDefault(__webpack_require__(/*! ./Backdrop */ \"./node_modules/material-ui/Modal/Backdrop.js\"));\n\n// @inheritedComponent Portal\nfunction getContainer(container, defaultContainer) {\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || defaultContainer;\n}\n\nfunction getHasTransition(props) {\n  return props.children ? props.children.props.hasOwnProperty('in') : false;\n}\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'flex',\n      width: '100%',\n      height: '100%',\n      position: 'fixed',\n      zIndex: theme.zIndex.modal,\n      top: 0,\n      left: 0\n    },\n    hidden: {\n      visibility: 'hidden'\n    }\n  };\n};\n\nexports.styles = styles;\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Modal, _React$Component);\n  (0, _createClass2.default)(Modal, null, [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if (nextProps.open) {\n        return {\n          exited: false\n        };\n      } else if (!getHasTransition(nextProps)) {\n        // Otherwise let handleExited take care of marking exited.\n        return {\n          exited: true\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  function Modal(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, Modal);\n    _this = (0, _possibleConstructorReturn2.default)(this, (Modal.__proto__ || (0, _getPrototypeOf.default)(Modal)).call(this, props, context));\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"dialogElement\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"mounted\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"mountNode\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleRendered\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.autoFocus();\n\n        if (_this.props.onRendered) {\n          _this.props.onRendered();\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleOpen\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        var doc = (0, _ownerDocument.default)(_this.mountNode);\n        var container = getContainer(_this.props.container, doc.body);\n\n        _this.props.manager.add((0, _assertThisInitialized2.default)(_this), container);\n\n        doc.addEventListener('keydown', _this.handleDocumentKeyDown);\n        doc.addEventListener('focus', _this.enforceFocus, true);\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleClose\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.props.manager.remove((0, _assertThisInitialized2.default)(_this));\n\n        var doc = (0, _ownerDocument.default)(_this.mountNode);\n        doc.removeEventListener('keydown', _this.handleDocumentKeyDown);\n        doc.removeEventListener('focus', _this.enforceFocus);\n\n        _this.restoreLastFocus();\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExited\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.setState({\n          exited: true\n        });\n\n        _this.handleClose();\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBackdropClick\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (event.target !== event.currentTarget) {\n          return;\n        }\n\n        if (_this.props.onBackdropClick) {\n          _this.props.onBackdropClick(event);\n        }\n\n        if (!_this.props.disableBackdropClick && _this.props.onClose) {\n          _this.props.onClose(event, 'backdropClick');\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleDocumentKeyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (!_this.isTopModal() || (0, _keycode.default)(event) !== 'esc') {\n          return;\n        }\n\n        if (_this.props.onEscapeKeyDown) {\n          _this.props.onEscapeKeyDown(event);\n        }\n\n        if (!_this.props.disableEscapeKeyDown && _this.props.onClose) {\n          _this.props.onClose(event, 'escapeKeyDown');\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"checkForFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_inDOM.default) {\n          _this.lastFocus = (0, _activeElement.default)();\n        }\n      }\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"enforceFocus\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_this.props.disableEnforceFocus || !_this.mounted || !_this.isTopModal()) {\n          return;\n        }\n\n        var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_this.mountNode));\n\n        if (_this.dialogElement && !(0, _contains.default)(_this.dialogElement, currentActiveElement)) {\n          _this.dialogElement.focus();\n        }\n      }\n    });\n    _this.state = {\n      exited: !_this.props.open\n    };\n    return _this;\n  }\n\n  (0, _createClass2.default)(Modal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true;\n\n      if (this.props.open) {\n        this.handleOpen();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (!prevProps.open && this.props.open) {\n        this.checkForFocus();\n      }\n\n      if (prevProps.open && !this.props.open && !getHasTransition(this.props)) {\n        // Otherwise handleExited will call this.\n        this.handleClose();\n      } else if (!prevProps.open && this.props.open) {\n        this.handleOpen();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false;\n\n      if (this.props.open || getHasTransition(this.props) && !this.state.exited) {\n        this.handleClose();\n      }\n    }\n  }, {\n    key: \"autoFocus\",\n    value: function autoFocus() {\n      if (this.props.disableAutoFocus) {\n        return;\n      }\n\n      var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this.mountNode));\n\n      if (this.dialogElement && !(0, _contains.default)(this.dialogElement, currentActiveElement)) {\n        this.lastFocus = currentActiveElement;\n\n        if (!this.dialogElement.hasAttribute('tabIndex')) {\n           true ? (0, _warning.default)(false, ['Material-UI: the modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n')) : undefined;\n          this.dialogElement.setAttribute('tabIndex', -1);\n        }\n\n        this.dialogElement.focus();\n      }\n    }\n  }, {\n    key: \"restoreLastFocus\",\n    value: function restoreLastFocus() {\n      if (this.props.disableRestoreFocus) {\n        return;\n      }\n\n      if (this.lastFocus) {\n        // Not all elements in IE11 have a focus method.\n        // Because IE11 market share is low, we accept the restore focus being broken\n        // and we silent the issue.\n        if (this.lastFocus.focus) {\n          this.lastFocus.focus();\n        }\n\n        this.lastFocus = null;\n      }\n    }\n  }, {\n    key: \"isTopModal\",\n    value: function isTopModal() {\n      return this.props.manager.isTopModal(this);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          BackdropComponent = _props.BackdropComponent,\n          BackdropProps = _props.BackdropProps,\n          children = _props.children,\n          classes = _props.classes,\n          className = _props.className,\n          container = _props.container,\n          disableAutoFocus = _props.disableAutoFocus,\n          disableBackdropClick = _props.disableBackdropClick,\n          disableEnforceFocus = _props.disableEnforceFocus,\n          disableEscapeKeyDown = _props.disableEscapeKeyDown,\n          disableRestoreFocus = _props.disableRestoreFocus,\n          hideBackdrop = _props.hideBackdrop,\n          keepMounted = _props.keepMounted,\n          onBackdropClick = _props.onBackdropClick,\n          onClose = _props.onClose,\n          onEscapeKeyDown = _props.onEscapeKeyDown,\n          onRendered = _props.onRendered,\n          open = _props.open,\n          manager = _props.manager,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"BackdropComponent\", \"BackdropProps\", \"children\", \"classes\", \"className\", \"container\", \"disableAutoFocus\", \"disableBackdropClick\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disableRestoreFocus\", \"hideBackdrop\", \"keepMounted\", \"onBackdropClick\", \"onClose\", \"onEscapeKeyDown\", \"onRendered\", \"open\", \"manager\"]);\n      var exited = this.state.exited;\n      var hasTransition = getHasTransition(this.props);\n      var childProps = {};\n\n      if (!keepMounted && !open && (!hasTransition || exited)) {\n        return null;\n      } // It's a Transition like component\n\n\n      if (hasTransition) {\n        childProps.onExited = (0, _helpers.createChainedFunction)(this.handleExited, children.props.onExited);\n      }\n\n      if (children.props.role === undefined) {\n        childProps.role = children.props.role || 'document';\n      }\n\n      if (children.props.tabIndex === undefined) {\n        childProps.tabIndex = children.props.tabIndex || '-1';\n      }\n\n      return _react.default.createElement(_Portal.default, {\n        ref: function ref(node) {\n          _this2.mountNode = node ? node.getMountNode() : node;\n        },\n        container: container,\n        onRendered: this.handleRendered\n      }, _react.default.createElement(\"div\", (0, _extends2.default)({\n        className: (0, _classnames.default)(classes.root, className, (0, _defineProperty2.default)({}, classes.hidden, exited))\n      }, other), hideBackdrop ? null : _react.default.createElement(BackdropComponent, (0, _extends2.default)({\n        open: open,\n        onClick: this.handleBackdropClick\n      }, BackdropProps)), _react.default.createElement(_RootRef.default, {\n        rootRef: function rootRef(node) {\n          _this2.dialogElement = node;\n        }\n      }, _react.default.cloneElement(children, childProps))));\n    }\n  }]);\n  return Modal;\n}(_react.default.Component);\n\nModal.propTypes =  true ? {\n  /**\n   * A backdrop component. Useful for custom backdrop rendering.\n   */\n  BackdropComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Properties applied to the `Backdrop` element.\n   */\n  BackdropProps: _propTypes.default.object,\n\n  /**\n   * A single child content element.\n   */\n  children: _propTypes.default.element,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * A node, component instance, or function that returns either.\n   * The `container` will have the portal children appended to it.\n   */\n  container: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),\n\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  disableAutoFocus: _propTypes.default.bool,\n\n  /**\n   * If `true`, clicking the backdrop will not fire any callback.\n   */\n  disableBackdropClick: _propTypes.default.bool,\n\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  disableEnforceFocus: _propTypes.default.bool,\n\n  /**\n   * If `true`, hitting escape will not fire any callback.\n   */\n  disableEscapeKeyDown: _propTypes.default.bool,\n\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden.\n   */\n  disableRestoreFocus: _propTypes.default.bool,\n\n  /**\n   * If `true`, the backdrop is not rendered.\n   */\n  hideBackdrop: _propTypes.default.bool,\n\n  /**\n   * Always keep the children in the DOM.\n   * This property can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   */\n  keepMounted: _propTypes.default.bool,\n\n  /**\n   * A modal manager used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container.\n   */\n  manager: _propTypes.default.object,\n\n  /**\n   * Callback fired when the backdrop is clicked.\n   */\n  onBackdropClick: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback\n   * @param {string} reason Can be:`\"escapeKeyDown\"`, `\"backdropClick\"`\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * Callback fired when the escape key is pressed,\n   * `disableEscapeKeyDown` is false and the modal is in focus.\n   */\n  onEscapeKeyDown: _propTypes.default.func,\n\n  /**\n   * Callback fired once the children has been mounted into the `container`.\n   * It signals that the `open={true}` property took effect.\n   */\n  onRendered: _propTypes.default.func,\n\n  /**\n   * If `true`, the modal is open.\n   */\n  open: _propTypes.default.bool.isRequired\n} : undefined;\nModal.defaultProps = {\n  disableAutoFocus: false,\n  disableBackdropClick: false,\n  disableEnforceFocus: false,\n  disableEscapeKeyDown: false,\n  disableRestoreFocus: false,\n  hideBackdrop: false,\n  keepMounted: false,\n  // Modals don't open on the server so this won't conflict with concurrent requests.\n  manager: new _ModalManager.default(),\n  BackdropComponent: _Backdrop.default\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  flip: false,\n  name: 'MuiModal'\n})((0, _reactLifecyclesCompat.polyfill)(Modal));\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/Modal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/ModalManager.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/Modal/ModalManager.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _style = _interopRequireDefault(__webpack_require__(/*! dom-helpers/style */ \"./node_modules/dom-helpers/style/index.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _scrollbarSize = _interopRequireDefault(__webpack_require__(/*! dom-helpers/util/scrollbarSize */ \"./node_modules/dom-helpers/util/scrollbarSize.js\"));\n\nvar _isOverflowing = _interopRequireDefault(__webpack_require__(/*! ./isOverflowing */ \"./node_modules/material-ui/Modal/isOverflowing.js\"));\n\nvar _manageAriaHidden = __webpack_require__(/*! ./manageAriaHidden */ \"./node_modules/material-ui/Modal/manageAriaHidden.js\");\n\nfunction findIndexOf(data, callback) {\n  var idx = -1;\n  data.some(function (item, index) {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n\n    return false;\n  });\n  return idx;\n}\n\nfunction getPaddingRight(node) {\n  return parseInt((0, _style.default)(node, 'paddingRight') || 0, 10);\n}\n\nfunction setContainerStyle(data, container) {\n  var style = {\n    overflow: 'hidden'\n  }; // We are only interested in the actual `style` here because we will override it.\n\n  data.style = {\n    overflow: container.style.overflow,\n    paddingRight: container.style.paddingRight\n  };\n\n  if (data.overflowing) {\n    var scrollbarSize = (0, _scrollbarSize.default)(); // Use computed style, here to get the real padding to add our scrollbar width.\n\n    style.paddingRight = \"\".concat(getPaddingRight(container) + scrollbarSize, \"px\"); // .mui-fixed is a global helper.\n\n    var fixedNodes = (0, _ownerDocument.default)(container).querySelectorAll('.mui-fixed');\n\n    for (var i = 0; i < fixedNodes.length; i += 1) {\n      var paddingRight = getPaddingRight(fixedNodes[i]);\n      data.prevPaddings.push(paddingRight);\n      fixedNodes[i].style.paddingRight = \"\".concat(paddingRight + scrollbarSize, \"px\");\n    }\n  }\n\n  (0, _keys.default)(style).forEach(function (key) {\n    container.style[key] = style[key];\n  });\n}\n\nfunction removeContainerStyle(data, container) {\n  (0, _keys.default)(data.style).forEach(function (key) {\n    container.style[key] = data.style[key];\n  });\n  var fixedNodes = (0, _ownerDocument.default)(container).querySelectorAll('.mui-fixed');\n\n  for (var i = 0; i < fixedNodes.length; i += 1) {\n    fixedNodes[i].style.paddingRight = \"\".concat(data.prevPaddings[i], \"px\");\n  }\n}\n/**\n * @ignore - do not document.\n *\n * Proper state managment for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class\n * Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n  function ModalManager() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    (0, _classCallCheck2.default)(this, ModalManager);\n    var _options$hideSiblingN = options.hideSiblingNodes,\n        hideSiblingNodes = _options$hideSiblingN === void 0 ? true : _options$hideSiblingN,\n        _options$handleContai = options.handleContainerOverflow,\n        handleContainerOverflow = _options$handleContai === void 0 ? true : _options$handleContai;\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow; // this.modals[modalIdx] = modal\n\n    this.modals = []; // this.containers[containerIdx] = container\n\n    this.containers = []; // this.data[containerIdx] = {\n    //   modals: [],\n    // }\n\n    this.data = [];\n  }\n\n  (0, _createClass2.default)(ModalManager, [{\n    key: \"add\",\n    value: function add(modal, container) {\n      var modalIdx = this.modals.indexOf(modal);\n\n      if (modalIdx !== -1) {\n        return modalIdx;\n      }\n\n      modalIdx = this.modals.length;\n      this.modals.push(modal);\n\n      if (this.hideSiblingNodes) {\n        (0, _manageAriaHidden.hideSiblings)(container, modal.mountNode);\n      }\n\n      var containerIdx = this.containers.indexOf(container);\n\n      if (containerIdx !== -1) {\n        this.data[containerIdx].modals.push(modal);\n        return modalIdx;\n      }\n\n      var data = {\n        modals: [modal],\n        overflowing: (0, _isOverflowing.default)(container),\n        prevPaddings: []\n      };\n\n      if (this.handleContainerOverflow) {\n        setContainerStyle(data, container);\n      }\n\n      this.containers.push(container);\n      this.data.push(data);\n      return modalIdx;\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(modal) {\n      var modalIdx = this.modals.indexOf(modal);\n\n      if (modalIdx === -1) {\n        return modalIdx;\n      }\n\n      var containerIdx = findIndexOf(this.data, function (item) {\n        return item.modals.indexOf(modal) !== -1;\n      });\n      var data = this.data[containerIdx];\n      var container = this.containers[containerIdx];\n      data.modals.splice(data.modals.indexOf(modal), 1);\n      this.modals.splice(modalIdx, 1); // If that was the last modal in a container, clean up the container.\n\n      if (data.modals.length === 0) {\n        if (this.handleContainerOverflow) {\n          removeContainerStyle(data, container);\n        }\n\n        if (this.hideSiblingNodes) {\n          (0, _manageAriaHidden.showSiblings)(container, modal.mountNode);\n        }\n\n        this.containers.splice(containerIdx, 1);\n        this.data.splice(containerIdx, 1);\n      } else if (this.hideSiblingNodes) {\n        // Otherwise make sure the next top modal is visible to a screan reader.\n        (0, _manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n      }\n\n      return modalIdx;\n    }\n  }, {\n    key: \"isTopModal\",\n    value: function isTopModal(modal) {\n      return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n    }\n  }]);\n  return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/ModalManager.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Modal/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Modal.default;\n  }\n});\nObject.defineProperty(exports, \"Backdrop\", {\n  enumerable: true,\n  get: function get() {\n    return _Backdrop.default;\n  }\n});\nObject.defineProperty(exports, \"ModalManager\", {\n  enumerable: true,\n  get: function get() {\n    return _ModalManager.default;\n  }\n});\n\nvar _Modal = _interopRequireDefault(__webpack_require__(/*! ./Modal */ \"./node_modules/material-ui/Modal/Modal.js\"));\n\nvar _Backdrop = _interopRequireDefault(__webpack_require__(/*! ./Backdrop */ \"./node_modules/material-ui/Modal/Backdrop.js\"));\n\nvar _ModalManager = _interopRequireDefault(__webpack_require__(/*! ./ModalManager */ \"./node_modules/material-ui/Modal/ModalManager.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/isOverflowing.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/Modal/isOverflowing.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isBody = isBody;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/isWindow */ \"./node_modules/dom-helpers/query/isWindow.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/material-ui/utils/ownerWindow.js\"));\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n} // Do we have a scroll bar?\n\n\nfunction isOverflowing(container) {\n  var doc = (0, _ownerDocument.default)(container);\n  var win = (0, _ownerWindow.default)(doc);\n  /* istanbul ignore next */\n\n  if (!(0, _isWindow.default)(doc) && !isBody(container)) {\n    return container.scrollHeight > container.clientHeight;\n  } // Takes in account potential non zero margin on the body.\n\n\n  var style = win.getComputedStyle(doc.body);\n  var marginLeft = parseInt(style.getPropertyValue('margin-left'), 10);\n  var marginRight = parseInt(style.getPropertyValue('margin-right'), 10);\n  return marginLeft + doc.body.clientWidth + marginRight < win.innerWidth;\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/isOverflowing.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Modal/manageAriaHidden.js":
+/*!************************************************************!*\
+  !*** ./node_modules/material-ui/Modal/manageAriaHidden.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nfunction isHidable(node) {\n  return node.nodeType === 1 && BLACKLIST.indexOf(node.tagName.toLowerCase()) === -1;\n}\n\nfunction siblings(container, mount, callback) {\n  mount = [].concat(mount); // eslint-disable-line no-param-reassign\n\n  [].forEach.call(container.children, function (node) {\n    if (mount.indexOf(node) === -1 && isHidable(node)) {\n      callback(node);\n    }\n  });\n}\n\nfunction ariaHidden(show, node) {\n  if (!node) {\n    return;\n  }\n\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\n\nfunction hideSiblings(container, mountNode) {\n  siblings(container, mountNode, function (node) {\n    return ariaHidden(true, node);\n  });\n}\n\nfunction showSiblings(container, mountNode) {\n  siblings(container, mountNode, function (node) {\n    return ariaHidden(false, node);\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/Modal/manageAriaHidden.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Paper/Paper.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Paper/Paper.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  var elevations = {};\n  theme.shadows.forEach(function (shadow, index) {\n    elevations[\"elevation\".concat(index)] = {\n      boxShadow: shadow\n    };\n  });\n  return (0, _objectSpread2.default)({\n    root: {\n      backgroundColor: theme.palette.background.paper\n    },\n    rounded: {\n      borderRadius: 2\n    }\n  }, elevations);\n};\n\nexports.styles = styles;\n\nfunction Paper(props) {\n  var classes = props.classes,\n      classNameProp = props.className,\n      Component = props.component,\n      square = props.square,\n      elevation = props.elevation,\n      other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"component\", \"square\", \"elevation\"]);\n   true ? (0, _warning.default)(elevation >= 0 && elevation < 25, \"Material-UI: this elevation `\".concat(elevation, \"` is not implemented.\")) : undefined;\n  var className = (0, _classnames.default)(classes.root, classes[\"elevation\".concat(elevation)], (0, _defineProperty2.default)({}, classes.rounded, !square), classNameProp);\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: className\n  }, other));\n}\n\nPaper.propTypes =  true ? {\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It's accepting values between 0 and 24 inclusive.\n   */\n  elevation: _propTypes.default.number,\n\n  /**\n   * If `true`, rounded corners are disabled.\n   */\n  square: _propTypes.default.bool\n} : undefined;\nPaper.defaultProps = {\n  component: 'div',\n  elevation: 2,\n  square: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiPaper'\n})(Paper);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Paper/Paper.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Paper/index.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/Paper/index.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Paper.default;\n  }\n});\n\nvar _Paper = _interopRequireDefault(__webpack_require__(/*! ./Paper */ \"./node_modules/material-ui/Paper/Paper.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Paper/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Popover/Popover.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/material-ui/Popover/Popover.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _contains = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/contains */ \"./node_modules/dom-helpers/query/contains.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _debounce = _interopRequireDefault(__webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\"));\n\nvar _reactEventListener = _interopRequireDefault(__webpack_require__(/*! react-event-listener */ \"./node_modules/react-event-listener/lib/index.js\"));\n\nvar _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/material-ui/utils/ownerWindow.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _Modal = _interopRequireDefault(__webpack_require__(/*! ../Modal */ \"./node_modules/material-ui/Modal/index.js\"));\n\nvar _Grow = _interopRequireDefault(__webpack_require__(/*! ../transitions/Grow */ \"./node_modules/material-ui/transitions/Grow.js\"));\n\nvar _Paper = _interopRequireDefault(__webpack_require__(/*! ../Paper */ \"./node_modules/material-ui/Paper/index.js\"));\n\n// @inheritedComponent Modal\nfunction getOffsetTop(rect, vertical) {\n  var offset = 0;\n\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n\n  return offset;\n}\n\nfunction getOffsetLeft(rect, horizontal) {\n  var offset = 0;\n\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n\n  return offset;\n}\n\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(function (n) {\n    return typeof n === 'number' ? \"\".concat(n, \"px\") : n;\n  }).join(' ');\n} // Sum the scrollTop between two elements.\n\n\nfunction getScrollParent(parent, child) {\n  var element = child;\n  var scrollTop = 0;\n\n  while (element && element !== parent) {\n    element = element.parentNode;\n    scrollTop += element.scrollTop;\n  }\n\n  return scrollTop;\n}\n\nfunction getAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\n\nvar styles = {\n  paper: {\n    position: 'absolute',\n    overflowY: 'auto',\n    overflowX: 'hidden',\n    // So we see the popover when it's empty.\n    // It's most likely on issue on userland.\n    minWidth: 16,\n    minHeight: 16,\n    maxWidth: 'calc(100vw - 32px)',\n    maxHeight: 'calc(100vh - 32px)',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 'none'\n  }\n};\nexports.styles = styles;\n\nvar Popover =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Popover, _React$Component);\n\n  function Popover() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Popover);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Popover.__proto__ || (0, _getPrototypeOf.default)(Popover)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"componentWillUnmount\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        _this.handleResize.cancel();\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"setPositioningStyles\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(element) {\n        if (element && element.style) {\n          var positioning = _this.getPositioningStyle(element);\n\n          if (positioning.top !== null) {\n            element.style.top = positioning.top;\n          }\n\n          if (positioning.left !== null) {\n            element.style.left = positioning.left;\n          }\n\n          element.style.transformOrigin = positioning.transformOrigin;\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"getPositioningStyle\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(element) {\n        var _this$props = _this.props,\n            anchorEl = _this$props.anchorEl,\n            anchorReference = _this$props.anchorReference,\n            marginThreshold = _this$props.marginThreshold; // Check if the parent has requested anchoring on an inner content node\n\n        var contentAnchorOffset = _this.getContentAnchorOffset(element);\n\n        var elemRect = {\n          width: element.clientWidth,\n          height: element.clientHeight\n        }; // Get the transform origin point on the element itself\n\n        var transformOrigin = _this.getTransformOrigin(elemRect, contentAnchorOffset);\n\n        if (anchorReference === 'none') {\n          return {\n            top: null,\n            left: null,\n            transformOrigin: getTransformOriginValue(transformOrigin)\n          };\n        } // Get the offset of of the anchoring element\n\n\n        var anchorOffset = _this.getAnchorOffset(contentAnchorOffset); // Calculate element positioning\n\n\n        var top = anchorOffset.top - transformOrigin.vertical;\n        var left = anchorOffset.left - transformOrigin.horizontal;\n        var bottom = top + elemRect.height;\n        var right = left + elemRect.width; // Use the parent window of the anchorEl if provided\n\n        var containerWindow = (0, _ownerWindow.default)(getAnchorEl(anchorEl)); // Window thresholds taking required margin into account\n\n        var heightThreshold = containerWindow.innerHeight - marginThreshold;\n        var widthThreshold = containerWindow.innerWidth - marginThreshold; // Check if the vertical axis needs shifting\n\n        if (top < marginThreshold) {\n          var diff = top - marginThreshold;\n          top -= diff;\n          transformOrigin.vertical += diff;\n        } else if (bottom > heightThreshold) {\n          var _diff = bottom - heightThreshold;\n\n          top -= _diff;\n          transformOrigin.vertical += _diff;\n        }\n\n         true ? (0, _warning.default)(elemRect.height < heightThreshold || !elemRect.height || !heightThreshold, ['Material-UI: the popover component is too tall.', \"Some part of it can not be seen on the screen (\".concat(elemRect.height - heightThreshold, \"px).\"), 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n')) : undefined; // Check if the horizontal axis needs shifting\n\n        if (left < marginThreshold) {\n          var _diff2 = left - marginThreshold;\n\n          left -= _diff2;\n          transformOrigin.horizontal += _diff2;\n        } else if (right > widthThreshold) {\n          var _diff3 = right - widthThreshold;\n\n          left -= _diff3;\n          transformOrigin.horizontal += _diff3;\n        }\n\n        return {\n          top: \"\".concat(top, \"px\"),\n          left: \"\".concat(left, \"px\"),\n          transformOrigin: getTransformOriginValue(transformOrigin)\n        };\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"transitionEl\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleGetOffsetTop\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: getOffsetTop\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleGetOffsetLeft\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: getOffsetLeft\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(element) {\n        if (_this.props.onEnter) {\n          _this.props.onEnter(element);\n        }\n\n        _this.setPositioningStyles(element);\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleResize\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _debounce.default)(function () {\n        var element = _reactDom.default.findDOMNode(_this.transitionEl);\n\n        _this.setPositioningStyles(element);\n      }, 166)\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Popover, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.action) {\n        this.props.action({\n          updatePosition: this.handleResize\n        });\n      }\n    }\n  }, {\n    key: \"getAnchorOffset\",\n    // Returns the top/left offset of the position\n    // to attach to on the anchor element (or body if none is provided)\n    value: function getAnchorOffset(contentAnchorOffset) {\n      var _props = this.props,\n          anchorEl = _props.anchorEl,\n          anchorOrigin = _props.anchorOrigin,\n          anchorReference = _props.anchorReference,\n          anchorPosition = _props.anchorPosition;\n\n      if (anchorReference === 'anchorPosition') {\n         true ? (0, _warning.default)(anchorPosition, 'Material-UI: you need to provide a `anchorPosition` property when using ' + '<Popover anchorReference=\"anchorPosition\" />.') : undefined;\n        return anchorPosition;\n      } // If an anchor element wasn't provided, just use the parent body element of this Popover\n\n\n      var anchorElement = getAnchorEl(anchorEl) || (0, _ownerDocument.default)(_reactDom.default.findDOMNode(this.transitionEl)).body;\n      var anchorRect = anchorElement.getBoundingClientRect();\n      var anchorVertical = contentAnchorOffset === 0 ? anchorOrigin.vertical : 'center';\n      return {\n        top: anchorRect.top + this.handleGetOffsetTop(anchorRect, anchorVertical),\n        left: anchorRect.left + this.handleGetOffsetLeft(anchorRect, anchorOrigin.horizontal)\n      };\n    } // Returns the vertical offset of inner content to anchor the transform on if provided\n\n  }, {\n    key: \"getContentAnchorOffset\",\n    value: function getContentAnchorOffset(element) {\n      var _props2 = this.props,\n          getContentAnchorEl = _props2.getContentAnchorEl,\n          anchorReference = _props2.anchorReference;\n      var contentAnchorOffset = 0;\n\n      if (getContentAnchorEl && anchorReference === 'anchorEl') {\n        var contentAnchorEl = getContentAnchorEl(element);\n\n        if (contentAnchorEl && (0, _contains.default)(element, contentAnchorEl)) {\n          var scrollTop = getScrollParent(element, contentAnchorEl);\n          contentAnchorOffset = contentAnchorEl.offsetTop + contentAnchorEl.clientHeight / 2 - scrollTop || 0;\n        } // != the default value\n\n\n         true ? (0, _warning.default)(this.props.anchorOrigin.vertical === 'top', ['Material-UI: you can not change the default `anchorOrigin.vertical` value ', 'when also providing the `getContentAnchorEl` property to the popover component.', 'Only use one of the two properties.', 'Set `getContentAnchorEl` to null or left `anchorOrigin.vertical` unchanged.'].join('\\n')) : undefined;\n      }\n\n      return contentAnchorOffset;\n    } // Return the base transform origin using the element\n    // and taking the content anchor offset into account if in use\n\n  }, {\n    key: \"getTransformOrigin\",\n    value: function getTransformOrigin(elemRect) {\n      var contentAnchorOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var transformOrigin = this.props.transformOrigin;\n      return {\n        vertical: this.handleGetOffsetTop(elemRect, transformOrigin.vertical) + contentAnchorOffset,\n        horizontal: this.handleGetOffsetLeft(elemRect, transformOrigin.horizontal)\n      };\n    }\n  }, {\n    key: \"render\",\n    // Corresponds to 10 frames at 60 Hz.\n    value: function render() {\n      var _this2 = this;\n\n      var _props3 = this.props,\n          action = _props3.action,\n          anchorEl = _props3.anchorEl,\n          anchorOrigin = _props3.anchorOrigin,\n          anchorPosition = _props3.anchorPosition,\n          anchorReference = _props3.anchorReference,\n          children = _props3.children,\n          classes = _props3.classes,\n          containerProp = _props3.container,\n          elevation = _props3.elevation,\n          getContentAnchorEl = _props3.getContentAnchorEl,\n          marginThreshold = _props3.marginThreshold,\n          onEnter = _props3.onEnter,\n          onEntered = _props3.onEntered,\n          onEntering = _props3.onEntering,\n          onExit = _props3.onExit,\n          onExited = _props3.onExited,\n          onExiting = _props3.onExiting,\n          open = _props3.open,\n          PaperProps = _props3.PaperProps,\n          role = _props3.role,\n          transformOrigin = _props3.transformOrigin,\n          TransitionComponent = _props3.TransitionComponent,\n          transitionDuration = _props3.transitionDuration,\n          TransitionProps = _props3.TransitionProps,\n          other = (0, _objectWithoutProperties2.default)(_props3, [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"classes\", \"container\", \"elevation\", \"getContentAnchorEl\", \"marginThreshold\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"open\", \"PaperProps\", \"role\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"]); // If the container prop is provided, use that\n      // If the anchorEl prop is provided, use its parent body element as the container\n      // If neither are provided let the Modal take care of choosing the container\n\n      var container = containerProp || (anchorEl ? (0, _ownerDocument.default)(getAnchorEl(anchorEl)).body : undefined);\n      return _react.default.createElement(_Modal.default, (0, _extends2.default)({\n        container: container,\n        open: open,\n        BackdropProps: {\n          invisible: true\n        }\n      }, other), _react.default.createElement(TransitionComponent, (0, _extends2.default)({\n        appear: true,\n        \"in\": open,\n        onEnter: this.handleEnter,\n        onEntered: onEntered,\n        onEntering: onEntering,\n        onExit: onExit,\n        onExited: onExited,\n        onExiting: onExiting,\n        role: role,\n        ref: function ref(node) {\n          _this2.transitionEl = node;\n        }\n      }, TransitionProps), _react.default.createElement(_Paper.default, (0, _extends2.default)({\n        className: classes.paper,\n        elevation: elevation\n      }, PaperProps), _react.default.createElement(_reactEventListener.default, {\n        target: \"window\",\n        onResize: this.handleResize\n      }), children)));\n    }\n  }]);\n  return Popover;\n}(_react.default.Component);\n\nPopover.propTypes =  true ? {\n  /**\n   * This is callback property. It's called by the component on mount.\n   * This is useful when you want to trigger an action programmatically.\n   * It currently only supports updatePosition() action.\n   *\n   * @param {object} actions This object contains all posible actions\n   * that can be triggered programmatically.\n   */\n  action: _propTypes.default.func,\n\n  /**\n   * This is the DOM element, or a function that returns the DOM element,\n   * that may be used to set the position of the popover.\n   */\n  anchorEl: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),\n\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   */\n  anchorOrigin: _propTypes.default.shape({\n    horizontal: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['left', 'center', 'right'])]),\n    vertical: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['top', 'center', 'bottom'])])\n  }),\n\n  /**\n   * This is the position that may be used\n   * to set the position of the popover.\n   * The coordinates are relative to\n   * the application's client area.\n   */\n  anchorPosition: _propTypes.default.shape({\n    top: _propTypes.default.number,\n    left: _propTypes.default.number\n  }),\n\n  /*\n   * This determines which anchor prop to refer to to set\n   * the position of the popover.\n   */\n  anchorReference: _propTypes.default.oneOf(['anchorEl', 'anchorPosition', 'none']),\n\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * A node, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   * By default, it's using the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),\n\n  /**\n   * The elevation of the popover.\n   */\n  elevation: _propTypes.default.number,\n\n  /**\n   * This function is called in order to retrieve the content anchor element.\n   * It's the opposite of the `anchorEl` property.\n   * The content anchor element should be an element inside the popover.\n   * It's used to correctly scroll and set the position of the popover.\n   * The positioning strategy tries to make the content anchor element just above the\n   * anchor element.\n   */\n  getContentAnchorEl: _propTypes.default.func,\n\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   */\n  marginThreshold: _propTypes.default.number,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * Callback fired before the component is entering.\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component has entered.\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component is entering.\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired before the component is exiting.\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component has exited.\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component is exiting.\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * If `true`, the popover is visible.\n   */\n  open: _propTypes.default.bool.isRequired,\n\n  /**\n   * Properties applied to the `Paper` element.\n   */\n  PaperProps: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  role: _propTypes.default.string,\n\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   */\n  transformOrigin: _propTypes.default.shape({\n    horizontal: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['left', 'center', 'right'])]),\n    vertical: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf(['top', 'center', 'bottom'])])\n  }),\n\n  /**\n   * Transition component.\n   */\n  TransitionComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   */\n  transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  }), _propTypes.default.oneOf(['auto'])]),\n\n  /**\n   * Properties applied to the `Transition` element.\n   */\n  TransitionProps: _propTypes.default.object\n} : undefined;\nPopover.defaultProps = {\n  anchorReference: 'anchorEl',\n  anchorOrigin: {\n    vertical: 'top',\n    horizontal: 'left'\n  },\n  elevation: 8,\n  marginThreshold: 16,\n  transformOrigin: {\n    vertical: 'top',\n    horizontal: 'left'\n  },\n  TransitionComponent: _Grow.default,\n  transitionDuration: 'auto'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiPopover'\n})(Popover);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Popover/Popover.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Popover/index.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Popover/index.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Popover.default;\n  }\n});\n\nvar _Popover = _interopRequireDefault(__webpack_require__(/*! ./Popover */ \"./node_modules/material-ui/Popover/Popover.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Popover/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Portal/LegacyPortal.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/Portal/LegacyPortal.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _exactProp = _interopRequireDefault(__webpack_require__(/*! ../utils/exactProp */ \"./node_modules/material-ui/utils/exactProp.js\"));\n\nfunction getContainer(container, defaultContainer) {\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || defaultContainer;\n}\n\nfunction getOwnerDocument(element) {\n  return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(element));\n}\n/**\n * @ignore - internal component.\n *\n * This module will soon be gone. We should drop it as soon as react@15.x support stop.\n */\n\n\nvar LegacyPortal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(LegacyPortal, _React$Component);\n\n  function LegacyPortal() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, LegacyPortal);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = LegacyPortal.__proto__ || (0, _getPrototypeOf.default)(LegacyPortal)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"getMountNode\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        return _this.mountNode;\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"mountOverlayTarget\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (!_this.overlayTarget) {\n          _this.overlayTarget = document.createElement('div');\n          _this.mountNode = getContainer(_this.props.container, getOwnerDocument((0, _assertThisInitialized2.default)(_this)).body);\n\n          _this.mountNode.appendChild(_this.overlayTarget);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"unmountOverlayTarget\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_this.overlayTarget) {\n          _this.mountNode.removeChild(_this.overlayTarget);\n\n          _this.overlayTarget = null;\n        }\n\n        _this.mountNode = null;\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"unrenderOverlay\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        if (_this.overlayTarget) {\n          _reactDom.default.unmountComponentAtNode(_this.overlayTarget);\n\n          _this.overlayInstance = null;\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"renderOverlay\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        var overlay = _this.props.children;\n\n        _this.mountOverlayTarget();\n\n        var initialRender = !_this.overlayInstance;\n        _this.overlayInstance = _reactDom.default.unstable_renderSubtreeIntoContainer((0, _assertThisInitialized2.default)(_this), overlay, _this.overlayTarget, function () {\n          if (initialRender && _this.props.onRendered) {\n            _this.props.onRendered();\n          }\n        });\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(LegacyPortal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true;\n      this.renderOverlay();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (this.overlayTarget && prevProps.container !== this.props.container) {\n        this.mountNode.removeChild(this.overlayTarget);\n        this.mountNode = getContainer(this.props.container, getOwnerDocument(this).body);\n        this.mountNode.appendChild(this.overlayTarget);\n      }\n\n      this.renderOverlay();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false;\n      this.unrenderOverlay();\n      this.unmountOverlayTarget();\n    }\n    /**\n     * @public\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      return null;\n    }\n  }]);\n  return LegacyPortal;\n}(_react.default.Component);\n\nLegacyPortal.propTypes =  true ? {\n  children: _propTypes.default.element.isRequired,\n  container: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),\n  onRendered: _propTypes.default.func\n} : undefined;\nLegacyPortal.propTypes =  true ? (0, _exactProp.default)(LegacyPortal.propTypes, 'LegacyPortal') : undefined;\nvar _default = LegacyPortal;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Portal/LegacyPortal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Portal/Portal.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Portal/Portal.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar _exactProp = _interopRequireDefault(__webpack_require__(/*! ../utils/exactProp */ \"./node_modules/material-ui/utils/exactProp.js\"));\n\nfunction getContainer(container, defaultContainer) {\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || defaultContainer;\n}\n\nfunction getOwnerDocument(element) {\n  return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(element));\n}\n/**\n * This component shares many concepts with\n * [react-overlays](https://react-bootstrap.github.io/react-overlays/#portals)\n * But has been forked in order to fix some bugs, reduce the number of dependencies\n * and take the control of our destiny.\n */\n\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Portal, _React$Component);\n\n  function Portal() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Portal);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Portal.__proto__ || (0, _getPrototypeOf.default)(Portal)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"getMountNode\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        return _this.mountNode;\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Portal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.setContainer(this.props.container);\n      this.forceUpdate(this.props.onRendered);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.container !== this.props.container) {\n        this.setContainer(this.props.container);\n        this.forceUpdate();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mountNode = null;\n    }\n  }, {\n    key: \"setContainer\",\n    value: function setContainer(container) {\n      this.mountNode = getContainer(container, getOwnerDocument(this).body);\n    }\n    /**\n     * @public\n     */\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return this.mountNode ? _reactDom.default.createPortal(children, this.mountNode) : null;\n    }\n  }]);\n  return Portal;\n}(_react.default.Component);\n\nPortal.propTypes =  true ? {\n  /**\n   * The children to render into the `container`.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * A node, component instance, or function that returns either.\n   * The `container` will have the portal children appended to it.\n   * By default, it's using the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]),\n\n  /**\n   * Callback fired once the children has been mounted into the `container`.\n   */\n  onRendered: _propTypes.default.func\n} : undefined;\nPortal.propTypes =  true ? (0, _exactProp.default)(Portal.propTypes, 'Portal') : undefined;\nvar _default = Portal;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Portal/Portal.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Portal/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/Portal/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(/*! ./Portal */ \"./node_modules/material-ui/Portal/Portal.js\"));\n\nvar _LegacyPortal = _interopRequireDefault(__webpack_require__(/*! ./LegacyPortal */ \"./node_modules/material-ui/Portal/LegacyPortal.js\"));\n\nvar _default = _reactDom.default.createPortal ? _Portal.default : _LegacyPortal.default;\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Portal/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Select/Select.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Select/Select.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _SelectInput = _interopRequireDefault(__webpack_require__(/*! ./SelectInput */ \"./node_modules/material-ui/Select/SelectInput.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _ArrowDropDown = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ \"./node_modules/material-ui/internal/svg-icons/ArrowDropDown.js\"));\n\nvar _Input = _interopRequireDefault(__webpack_require__(/*! ../Input */ \"./node_modules/material-ui/Input/index.js\"));\n\n// @inheritedComponent Input\n// Import to enforce the CSS injection order\nvar styles = function styles(theme) {\n  return {\n    root: {\n      position: 'relative',\n      width: '100%'\n    },\n    select: {\n      '-moz-appearance': 'none',\n      // Reset\n      '-webkit-appearance': 'none',\n      // Reset\n      // When interacting quickly, the text can end up selected.\n      // Native select can't be selected either.\n      userSelect: 'none',\n      paddingRight: theme.spacing.unit * 4,\n      width: \"calc(100% - \".concat(theme.spacing.unit * 4, \"px)\"),\n      minWidth: theme.spacing.unit * 2,\n      // So it doesn't collapse.\n      cursor: 'pointer',\n      '&:focus': {\n        // Show that it's not an text input\n        background: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)',\n        borderRadius: 0 // Reset Chrome style\n\n      },\n      // Remove Firefox focus border\n      '&:-moz-focusring': {\n        color: 'transparent',\n        textShadow: '0 0 0 #000'\n      },\n      // Remove IE11 arrow\n      '&::-ms-expand': {\n        display: 'none'\n      },\n      '&$disabled': {\n        cursor: 'default'\n      }\n    },\n    selectMenu: {\n      width: 'auto',\n      // Fix Safari textOverflow\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      minHeight: '1.1875em' // Reset (19px), match the native input line-height\n\n    },\n    disabled: {},\n    icon: {\n      // We use a position absolute over a flexbox in order to forward the pointer events\n      // to the input.\n      position: 'absolute',\n      right: 0,\n      top: 'calc(50% - 12px)',\n      // Center vertically\n      color: theme.palette.action.active,\n      'pointer-events': 'none' // Don't block pointer events on the select under the icon.\n\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction Select(props) {\n  var autoWidth = props.autoWidth,\n      children = props.children,\n      classes = props.classes,\n      displayEmpty = props.displayEmpty,\n      IconComponent = props.IconComponent,\n      input = props.input,\n      inputProps = props.inputProps,\n      MenuProps = props.MenuProps,\n      multiple = props.multiple,\n      native = props.native,\n      onClose = props.onClose,\n      onOpen = props.onOpen,\n      open = props.open,\n      renderValue = props.renderValue,\n      SelectDisplayProps = props.SelectDisplayProps,\n      other = (0, _objectWithoutProperties2.default)(props, [\"autoWidth\", \"children\", \"classes\", \"displayEmpty\", \"IconComponent\", \"input\", \"inputProps\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\"]);\n  return _react.default.cloneElement(input, (0, _objectSpread2.default)({\n    // Most of the logic is implemented in `SelectInput`.\n    // The `Select` component is a simple API wrapper to expose something better to play with.\n    inputComponent: _SelectInput.default,\n    inputProps: (0, _objectSpread2.default)({\n      autoWidth: autoWidth,\n      children: children,\n      classes: classes,\n      displayEmpty: displayEmpty,\n      IconComponent: IconComponent,\n      MenuProps: MenuProps,\n      multiple: multiple,\n      native: native,\n      onClose: onClose,\n      onOpen: onOpen,\n      open: open,\n      renderValue: renderValue,\n      SelectDisplayProps: SelectDisplayProps,\n      type: undefined\n    }, inputProps, input ? input.props.inputProps : {})\n  }, other));\n}\n\nSelect.propTypes =  true ? {\n  /**\n   * If true, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: _propTypes.default.bool,\n\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  displayEmpty: _propTypes.default.bool,\n\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: _propTypes.default.element,\n\n  /**\n   * Properties applied to the `input` element.\n   * When `native` is `true`, the properties are applied on the `select` element.\n   */\n  inputProps: _propTypes.default.object,\n\n  /**\n   * Properties applied to the `Menu` element.\n   */\n  MenuProps: _propTypes.default.object,\n\n  /**\n   * If true, `value` must be an array and the menu will support multiple selections.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  multiple: _propTypes.default.bool,\n\n  /**\n   * If `true`, the component will be using a native `select` element.\n   */\n  native: _propTypes.default.bool,\n\n  /**\n   * Callback function fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value`.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   * Useful in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component requests to be opened.\n   * Useful in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback\n   */\n  onOpen: _propTypes.default.func,\n\n  /**\n   * Control `select` open state.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  open: _propTypes.default.bool,\n\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` property is `false` (default).\n   *\n   * @param {*} value The `value` provided to the component.\n   * @returns {ReactElement}\n   */\n  renderValue: _propTypes.default.func,\n\n  /**\n   * Properties applied to the clickable div element.\n   */\n  SelectDisplayProps: _propTypes.default.object,\n\n  /**\n   * The input value.\n   * This property is required when the `native` property is `false` (default).\n   */\n  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]))])\n} : undefined;\nSelect.defaultProps = {\n  autoWidth: false,\n  displayEmpty: false,\n  IconComponent: _ArrowDropDown.default,\n  input: _react.default.createElement(_Input.default, null),\n  multiple: false,\n  native: false\n};\nSelect.muiName = 'Select';\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiSelect'\n})(Select);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Select/Select.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Select/SelectInput.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/Select/SelectInput.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _keycode = _interopRequireDefault(__webpack_require__(/*! keycode */ \"./node_modules/keycode/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _Menu = _interopRequireDefault(__webpack_require__(/*! ../Menu/Menu */ \"./node_modules/material-ui/Menu/Menu.js\"));\n\nvar _Input = __webpack_require__(/*! ../Input/Input */ \"./node_modules/material-ui/Input/Input.js\");\n\n/**\n * @ignore - internal component.\n */\nvar SelectInput =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(SelectInput, _React$Component);\n\n  function SelectInput() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, SelectInput);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = SelectInput.__proto__ || (0, _getPrototypeOf.default)(SelectInput)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {\n        open: false\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"ignoreNextBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"displayNode\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"displayWidth\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"isOpenControlled\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: _this.props.open !== undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"isControlled\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: _this.props.value != null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"updateDisplayWidth\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value() {\n        // Perfom the layout computation outside of the render method.\n        if (_this.displayNode) {\n          _this.displayWidth = _this.displayNode.clientWidth;\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"update\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: _this.isOpenControlled ? function (_ref2) {\n        var event = _ref2.event,\n            open = _ref2.open;\n\n        if (open) {\n          _this.props.onOpen(event);\n        } else {\n          _this.props.onClose(event);\n        }\n      } : function (_ref3) {\n        var open = _ref3.open;\n        return _this.setState({\n          open: open\n        });\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleClick\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        // Opening the menu is going to blur the. It will be focused back when closed.\n        _this.ignoreNextBlur = true;\n\n        _this.update({\n          open: true,\n          event: event\n        });\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleClose\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        _this.update({\n          open: false,\n          event: event\n        });\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleItemClick\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(child) {\n        return function (event) {\n          if (!_this.props.multiple) {\n            _this.update({\n              open: false,\n              event: event\n            });\n          }\n\n          var _this$props = _this.props,\n              onChange = _this$props.onChange,\n              name = _this$props.name;\n\n          if (onChange) {\n            var value;\n            var target;\n\n            if (event.target) {\n              target = event.target;\n            }\n\n            if (_this.props.multiple) {\n              value = Array.isArray(_this.props.value) ? (0, _toConsumableArray2.default)(_this.props.value) : [];\n              var itemIndex = value.indexOf(child.props.value);\n\n              if (itemIndex === -1) {\n                value.push(child.props.value);\n              } else {\n                value.splice(itemIndex, 1);\n              }\n            } else {\n              value = child.props.value;\n            }\n\n            event.persist();\n            event.target = (0, _objectSpread2.default)({}, target, {\n              value: value,\n              name: name\n            });\n            onChange(event, child);\n          }\n        };\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleBlur\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (_this.ignoreNextBlur === true) {\n          // The parent components are relying on the bubbling of the event.\n          event.stopPropagation();\n          _this.ignoreNextBlur = false;\n          return;\n        }\n\n        if (_this.props.onBlur) {\n          _this.props.onBlur(event);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleKeyDown\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        if (_this.props.readOnly) {\n          return;\n        }\n\n        if (['space', 'up', 'down'].indexOf((0, _keycode.default)(event)) !== -1) {\n          event.preventDefault(); // Opening the menu is going to blur the. It will be focused back when closed.\n\n          _this.ignoreNextBlur = true;\n\n          _this.update({\n            open: true,\n            event: event\n          });\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleDisplayRef\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        _this.displayNode = node;\n\n        _this.updateDisplayWidth();\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleSelectRef\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        if (!_this.props.inputRef) {\n          return;\n        }\n\n        _this.props.inputRef({\n          node: node,\n          // By pass the native input as we expose a rich object (array).\n          value: _this.props.value\n        });\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(SelectInput, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.isOpenControlled && this.props.open) {\n        // Focus the display node so the focus is restored on this element once\n        // the menu is closed.\n        this.displayNode.focus(); // Rerender with the resolve `displayNode` reference.\n\n        this.forceUpdate();\n      }\n\n      if (this.props.autoFocus && !this.props.native) {\n        this.displayNode.focus();\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate() {\n      this.updateDisplayWidth();\n      return true;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          autoWidth = _props.autoWidth,\n          children = _props.children,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          disabled = _props.disabled,\n          displayEmpty = _props.displayEmpty,\n          IconComponent = _props.IconComponent,\n          inputRef = _props.inputRef,\n          _props$MenuProps = _props.MenuProps,\n          MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n          multiple = _props.multiple,\n          name = _props.name,\n          native = _props.native,\n          onBlur = _props.onBlur,\n          onChange = _props.onChange,\n          onClose = _props.onClose,\n          onFocus = _props.onFocus,\n          onOpen = _props.onOpen,\n          openProp = _props.open,\n          readOnly = _props.readOnly,\n          renderValue = _props.renderValue,\n          SelectDisplayProps = _props.SelectDisplayProps,\n          tabIndexProp = _props.tabIndex,\n          _props$type = _props.type,\n          type = _props$type === void 0 ? 'hidden' : _props$type,\n          value = _props.value,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"autoWidth\", \"children\", \"classes\", \"className\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"MenuProps\", \"multiple\", \"name\", \"native\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\"]);\n      var open = this.isOpenControlled && this.displayNode ? openProp : this.state.open;\n\n      if (native) {\n         true ? (0, _warning.default)(multiple === false, 'Material-UI: you can not use the `native={true}` and `multiple={true}` properties ' + 'at the same time on a `Select` component.') : undefined;\n         true ? (0, _warning.default)(!renderValue, 'Material-UI: the `renderValue` property is not used by the native implementation.') : undefined;\n         true ? (0, _warning.default)(!displayEmpty, 'Material-UI: the `displayEmpty` property is not used by the native implementation.') : undefined;\n        return _react.default.createElement(\"div\", {\n          className: classes.root\n        }, _react.default.createElement(\"select\", (0, _extends2.default)({\n          className: (0, _classnames.default)(classes.select, (0, _defineProperty2.default)({}, classes.disabled, disabled), classNameProp),\n          name: name,\n          disabled: disabled,\n          onBlur: onBlur,\n          onChange: onChange,\n          onFocus: onFocus,\n          value: value,\n          readOnly: readOnly,\n          ref: inputRef\n        }, other), children), _react.default.createElement(IconComponent, {\n          className: classes.icon\n        }));\n      }\n\n      if (!this.isControlled) {\n        throw new Error('Material-UI: the `value` property is required ' + 'when using the `Select` component with `native=false` (default).');\n      }\n\n      var display;\n      var displaySingle = '';\n      var displayMultiple = [];\n      var computeDisplay = false; // No need to display any value if the field is empty.\n\n      if ((0, _Input.isFilled)(this.props) || displayEmpty) {\n        if (renderValue) {\n          display = renderValue(value);\n        } else {\n          computeDisplay = true;\n        }\n      }\n\n      var items = _react.default.Children.map(children, function (child) {\n        if (!_react.default.isValidElement(child)) {\n          return null;\n        }\n\n        var selected;\n\n        if (multiple) {\n          if (!Array.isArray(value)) {\n            throw new Error('Material-UI: the `value` property must be an array ' + 'when using the `Select` component with `multiple`.');\n          }\n\n          selected = value.indexOf(child.props.value) !== -1;\n\n          if (selected && computeDisplay) {\n            displayMultiple.push(child.props.children);\n          }\n        } else {\n          selected = value === child.props.value;\n\n          if (selected && computeDisplay) {\n            displaySingle = child.props.children;\n          }\n        }\n\n        return _react.default.cloneElement(child, {\n          onClick: _this2.handleItemClick(child),\n          role: 'option',\n          selected: selected,\n          value: undefined,\n          // The value is most likely not a valid HTML attribute.\n          'data-value': child.props.value // Instead, we provide it as a data attribute.\n\n        });\n      });\n\n      if (computeDisplay) {\n        display = multiple ? displayMultiple.join(', ') : displaySingle;\n      }\n\n      var MenuMinWidth = this.displayNode && !autoWidth ? this.displayWidth : undefined;\n      var tabIndex;\n\n      if (typeof tabIndexProp !== 'undefined') {\n        tabIndex = tabIndexProp;\n      } else {\n        tabIndex = disabled ? null : 0;\n      }\n\n      return _react.default.createElement(\"div\", {\n        className: classes.root\n      }, _react.default.createElement(\"div\", (0, _extends2.default)({\n        className: (0, _classnames.default)(classes.select, classes.selectMenu, (0, _defineProperty2.default)({}, classes.disabled, disabled), classNameProp),\n        ref: this.handleDisplayRef,\n        \"aria-pressed\": open ? 'true' : 'false',\n        tabIndex: tabIndex,\n        role: \"button\",\n        \"aria-owns\": open ? \"menu-\".concat(name || '') : null,\n        \"aria-haspopup\": \"true\",\n        onKeyDown: this.handleKeyDown,\n        onBlur: this.handleBlur,\n        onClick: disabled || readOnly ? null : this.handleClick,\n        onFocus: onFocus\n      }, SelectDisplayProps), display || _react.default.createElement(\"span\", {\n        dangerouslySetInnerHTML: {\n          __html: '&#8203'\n        }\n      })), _react.default.createElement(\"input\", (0, _extends2.default)({\n        value: Array.isArray(value) ? value.join(',') : value,\n        name: name,\n        readOnly: readOnly,\n        ref: this.handleSelectRef,\n        type: type\n      }, other)), _react.default.createElement(IconComponent, {\n        className: classes.icon\n      }), _react.default.createElement(_Menu.default, (0, _extends2.default)({\n        id: \"menu-\".concat(name || ''),\n        anchorEl: this.displayNode,\n        open: open,\n        onClose: this.handleClose\n      }, MenuProps, {\n        MenuListProps: (0, _objectSpread2.default)({\n          role: 'listbox'\n        }, MenuProps.MenuListProps),\n        PaperProps: (0, _objectSpread2.default)({}, MenuProps.PaperProps, {\n          style: (0, _objectSpread2.default)({\n            minWidth: MenuMinWidth\n          }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n        })\n      }), items));\n    }\n  }]);\n  return SelectInput;\n}(_react.default.Component);\n\nSelectInput.propTypes =  true ? {\n  /**\n   * @ignore\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * If true, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: _propTypes.default.bool,\n\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * The CSS class name of the select element.\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, the select will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  displayEmpty: _propTypes.default.bool,\n\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * Use that property to pass a ref callback to the native select element.\n   */\n  inputRef: _propTypes.default.func,\n\n  /**\n   * Properties applied to the `Menu` element.\n   */\n  MenuProps: _propTypes.default.object,\n\n  /**\n   * If true, `value` must be an array and the menu will support multiple selections.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  multiple: _propTypes.default.bool,\n\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: _propTypes.default.string,\n\n  /**\n   * If `true`, the component will be using a native `select` element.\n   */\n  native: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * Callback function fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value`.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component requests to be closed.\n   * Useful in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback\n   */\n  onClose: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: _propTypes.default.func,\n\n  /**\n   * Callback fired when the component requests to be opened.\n   * Useful in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback\n   */\n  onOpen: _propTypes.default.func,\n\n  /**\n   * Control `select` open state.\n   * You can only use it when the `native` property is `false` (default).\n   */\n  open: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  readOnly: _propTypes.default.bool,\n\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` property is `false` (default).\n   *\n   * @param {*} value The `value` provided to the component.\n   * @returns {ReactElement}\n   */\n  renderValue: _propTypes.default.func,\n\n  /**\n   * Properties applied to the clickable div element.\n   */\n  SelectDisplayProps: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  tabIndex: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n\n  /**\n   * @ignore\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The input value.\n   * This property is required when the `native` property is `false` (default).\n   */\n  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]))])\n} : undefined;\nvar _default = SelectInput;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Select/SelectInput.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Select/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/Select/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Select.default;\n  }\n});\n\nvar _Select = _interopRequireDefault(__webpack_require__(/*! ./Select */ \"./node_modules/material-ui/Select/Select.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Select/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/SvgIcon/SvgIcon.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/material-ui/SvgIcon/SvgIcon.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      userSelect: 'none',\n      fontSize: 24,\n      width: '1em',\n      height: '1em',\n      display: 'inline-block',\n      fill: 'currentColor',\n      flexShrink: 0,\n      transition: theme.transitions.create('fill', {\n        duration: theme.transitions.duration.shorter\n      })\n    },\n    colorPrimary: {\n      color: theme.palette.primary.main\n    },\n    colorSecondary: {\n      color: theme.palette.secondary.main\n    },\n    colorAction: {\n      color: theme.palette.action.active\n    },\n    colorError: {\n      color: theme.palette.error.main\n    },\n    colorDisabled: {\n      color: theme.palette.action.disabled\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction SvgIcon(props) {\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      color = props.color,\n      nativeColor = props.nativeColor,\n      titleAccess = props.titleAccess,\n      viewBox = props.viewBox,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"color\", \"nativeColor\", \"titleAccess\", \"viewBox\"]);\n  var className = (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes[\"color\".concat((0, _helpers.capitalize)(color))], color !== 'inherit'), classNameProp);\n  return _react.default.createElement(\"svg\", (0, _extends2.default)({\n    className: className,\n    focusable: \"false\",\n    viewBox: viewBox,\n    color: nativeColor,\n    \"aria-hidden\": titleAccess ? 'false' : 'true'\n  }, other), titleAccess ? _react.default.createElement(\"title\", null, titleAccess) : null, children);\n}\n\nSvgIcon.propTypes =  true ? {\n  /**\n   * Node passed into the SVG element.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * You can use the `nativeColor` property to apply a color attribute to the SVG element.\n   */\n  color: _propTypes.default.oneOf(['inherit', 'primary', 'secondary', 'action', 'error', 'disabled']),\n\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  nativeColor: _propTypes.default.string,\n\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: _propTypes.default.string,\n\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   */\n  viewBox: _propTypes.default.string\n} : undefined;\nSvgIcon.defaultProps = {\n  color: 'inherit',\n  viewBox: '0 0 24 24'\n};\nSvgIcon.muiName = 'SvgIcon';\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiSvgIcon'\n})(SvgIcon);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/SvgIcon/SvgIcon.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/SvgIcon/index.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/SvgIcon/index.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _SvgIcon.default;\n  }\n});\n\nvar _SvgIcon = _interopRequireDefault(__webpack_require__(/*! ./SvgIcon */ \"./node_modules/material-ui/SvgIcon/SvgIcon.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/SvgIcon/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/TextField/TextField.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/TextField/TextField.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _Input = _interopRequireWildcard(__webpack_require__(/*! ../Input */ \"./node_modules/material-ui/Input/index.js\"));\n\nvar _FormControl = _interopRequireDefault(__webpack_require__(/*! ../Form/FormControl */ \"./node_modules/material-ui/Form/FormControl.js\"));\n\nvar _FormHelperText = _interopRequireDefault(__webpack_require__(/*! ../Form/FormHelperText */ \"./node_modules/material-ui/Form/FormHelperText.js\"));\n\nvar _Select = _interopRequireDefault(__webpack_require__(/*! ../Select/Select */ \"./node_modules/material-ui/Select/Select.js\"));\n\n// @inheritedComponent FormControl\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n * - [FormControl](/api/form-control)\n * - [InputLabel](/api/input-label)\n * - [Input](/api/input)\n * - [FormHelperText](/api/form-helper-text)\n *\n * If you wish to alter the properties applied to the native input, you can do as follow:\n *\n * ```jsx\n * const inputProps = {\n *   step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n * - using the upper case props for passing values direct to the components.\n * - using the underlying components directly as shown in the demos.\n */\nfunction TextField(props) {\n  var autoComplete = props.autoComplete,\n      autoFocus = props.autoFocus,\n      children = props.children,\n      className = props.className,\n      defaultValue = props.defaultValue,\n      disabled = props.disabled,\n      error = props.error,\n      FormHelperTextProps = props.FormHelperTextProps,\n      fullWidth = props.fullWidth,\n      helperText = props.helperText,\n      id = props.id,\n      InputLabelProps = props.InputLabelProps,\n      inputProps = props.inputProps,\n      InputProps = props.InputProps,\n      inputRef = props.inputRef,\n      label = props.label,\n      multiline = props.multiline,\n      name = props.name,\n      onBlur = props.onBlur,\n      onChange = props.onChange,\n      onFocus = props.onFocus,\n      placeholder = props.placeholder,\n      required = props.required,\n      rows = props.rows,\n      rowsMax = props.rowsMax,\n      select = props.select,\n      SelectProps = props.SelectProps,\n      type = props.type,\n      value = props.value,\n      other = (0, _objectWithoutProperties2.default)(props, [\"autoComplete\", \"autoFocus\", \"children\", \"className\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"rowsMax\", \"select\", \"SelectProps\", \"type\", \"value\"]);\n   true ? (0, _warning.default)(!select || Boolean(children), 'Material-UI: `children` must be passed when using the `TextField` component with `select`.') : undefined;\n  var helperTextId = helperText && id ? \"\".concat(id, \"-helper-text\") : undefined;\n\n  var InputElement = _react.default.createElement(_Input.default, (0, _extends2.default)({\n    autoComplete: autoComplete,\n    autoFocus: autoFocus,\n    defaultValue: defaultValue,\n    disabled: disabled,\n    fullWidth: fullWidth,\n    multiline: multiline,\n    name: name,\n    rows: rows,\n    rowsMax: rowsMax,\n    type: type,\n    value: value,\n    id: id,\n    inputRef: inputRef,\n    onBlur: onBlur,\n    onChange: onChange,\n    onFocus: onFocus,\n    placeholder: placeholder,\n    inputProps: inputProps\n  }, InputProps));\n\n  return _react.default.createElement(_FormControl.default, (0, _extends2.default)({\n    \"aria-describedby\": helperTextId,\n    className: className,\n    error: error,\n    fullWidth: fullWidth,\n    required: required\n  }, other), label && _react.default.createElement(_Input.InputLabel, (0, _extends2.default)({\n    htmlFor: id\n  }, InputLabelProps), label), select ? _react.default.createElement(_Select.default, (0, _extends2.default)({\n    value: value,\n    input: InputElement\n  }, SelectProps), children) : InputElement, helperText && _react.default.createElement(_FormHelperText.default, (0, _extends2.default)({\n    id: helperTextId\n  }, FormHelperTextProps), helperText));\n}\n\nTextField.propTypes =  true ? {\n  /**\n   * This property helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it here:\n   * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill\n   */\n  autoComplete: _propTypes.default.string,\n\n  /**\n   * If `true`, the input will be focused during the first mount.\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The default value of the `Input` element.\n   */\n  defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * If `true`, the input will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the label will be displayed in an error state.\n   */\n  error: _propTypes.default.bool,\n\n  /**\n   * Properties applied to the `FormHelperText` element.\n   */\n  FormHelperTextProps: _propTypes.default.object,\n\n  /**\n   * If `true`, the input will take up the full width of its container.\n   */\n  fullWidth: _propTypes.default.bool,\n\n  /**\n   * The helper text content.\n   */\n  helperText: _propTypes.default.node,\n\n  /**\n   * The id of the `input` element.\n   * Use that property to make `label` and `helperText` accessible for screen readers.\n   */\n  id: _propTypes.default.string,\n\n  /**\n   * Properties applied to the `InputLabel` element.\n   */\n  InputLabelProps: _propTypes.default.object,\n\n  /**\n   * Properties applied to the `Input` element.\n   */\n  InputProps: _propTypes.default.object,\n\n  /**\n   * Properties applied to the native `input` element.\n   */\n  inputProps: _propTypes.default.object,\n\n  /**\n   * Use that property to pass a ref callback to the native input component.\n   */\n  inputRef: _propTypes.default.func,\n\n  /**\n   * The label content.\n   */\n  label: _propTypes.default.node,\n\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   */\n  margin: _propTypes.default.oneOf(['none', 'dense', 'normal']),\n\n  /**\n   * If `true`, a textarea element will be rendered instead of an input.\n   */\n  multiline: _propTypes.default.bool,\n\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  onBlur: _propTypes.default.func,\n\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value`.\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: _propTypes.default.func,\n\n  /**\n   * The short hint displayed in the input before the user enters a value.\n   */\n  placeholder: _propTypes.default.string,\n\n  /**\n   * If `true`, the label is displayed as required.\n   */\n  required: _propTypes.default.bool,\n\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n  /**\n   * Render a `Select` element while passing the `Input` element to `Select` as `input` parameter.\n   * If this option is set you must pass the options of the select as children.\n   */\n  select: _propTypes.default.bool,\n\n  /**\n   * Properties applied to the `Select` element.\n   */\n  SelectProps: _propTypes.default.object,\n\n  /**\n   * Type attribute of the `Input` element. It should be a valid HTML5 input type.\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The value of the `Input` element, required for a controlled component.\n   */\n  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]))])\n} : undefined;\nTextField.defaultProps = {\n  required: false,\n  select: false\n};\nvar _default = TextField;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/TextField/TextField.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/TextField/index.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/material-ui/TextField/index.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _TextField.default;\n  }\n});\n\nvar _TextField = _interopRequireDefault(__webpack_require__(/*! ./TextField */ \"./node_modules/material-ui/TextField/TextField.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/TextField/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Toolbar/Toolbar.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/material-ui/Toolbar/Toolbar.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar styles = function styles(theme) {\n  return {\n    root: (0, _objectSpread2.default)({}, theme.mixins.toolbar, {\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center'\n    }),\n    gutters: theme.mixins.gutters()\n  };\n};\n\nexports.styles = styles;\n\nfunction Toolbar(props) {\n  var children = props.children,\n      classes = props.classes,\n      classNameProp = props.className,\n      disableGutters = props.disableGutters,\n      other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"disableGutters\"]);\n  var className = (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.gutters, !disableGutters), classNameProp);\n  return _react.default.createElement(\"div\", (0, _extends2.default)({\n    className: className\n  }, other), children);\n}\n\nToolbar.propTypes =  true ? {\n  /**\n   * Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * If `true`, disables gutter padding.\n   */\n  disableGutters: _propTypes.default.bool\n} : undefined;\nToolbar.defaultProps = {\n  disableGutters: false\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiToolbar'\n})(Toolbar);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Toolbar/Toolbar.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Toolbar/index.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/Toolbar/index.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Toolbar.default;\n  }\n});\n\nvar _Toolbar = _interopRequireDefault(__webpack_require__(/*! ./Toolbar */ \"./node_modules/material-ui/Toolbar/Toolbar.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Toolbar/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Typography/Typography.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/material-ui/Typography/Typography.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _helpers = __webpack_require__(/*! ../utils/helpers */ \"./node_modules/material-ui/utils/helpers.js\");\n\nvar styles = function styles(theme) {\n  return {\n    root: {\n      display: 'block',\n      margin: 0\n    },\n    display4: theme.typography.display4,\n    display3: theme.typography.display3,\n    display2: theme.typography.display2,\n    display1: theme.typography.display1,\n    headline: theme.typography.headline,\n    title: theme.typography.title,\n    subheading: theme.typography.subheading,\n    body2: theme.typography.body2,\n    body1: theme.typography.body1,\n    caption: theme.typography.caption,\n    button: theme.typography.button,\n    alignLeft: {\n      textAlign: 'left'\n    },\n    alignCenter: {\n      textAlign: 'center'\n    },\n    alignRight: {\n      textAlign: 'right'\n    },\n    alignJustify: {\n      textAlign: 'justify'\n    },\n    noWrap: {\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap'\n    },\n    gutterBottom: {\n      marginBottom: '0.35em'\n    },\n    paragraph: {\n      marginBottom: theme.spacing.unit * 2\n    },\n    colorInherit: {\n      color: 'inherit'\n    },\n    colorPrimary: {\n      color: theme.palette.primary.main\n    },\n    colorSecondary: {\n      color: theme.palette.secondary.main\n    },\n    colorTextSecondary: {\n      color: theme.palette.text.secondary\n    },\n    colorError: {\n      color: theme.palette.error.main\n    }\n  };\n};\n\nexports.styles = styles;\n\nfunction Typography(props) {\n  var _classNames;\n\n  var align = props.align,\n      classes = props.classes,\n      classNameProp = props.className,\n      componentProp = props.component,\n      color = props.color,\n      gutterBottom = props.gutterBottom,\n      headlineMapping = props.headlineMapping,\n      noWrap = props.noWrap,\n      paragraph = props.paragraph,\n      variant = props.variant,\n      other = (0, _objectWithoutProperties2.default)(props, [\"align\", \"classes\", \"className\", \"component\", \"color\", \"gutterBottom\", \"headlineMapping\", \"noWrap\", \"paragraph\", \"variant\"]);\n  var className = (0, _classnames.default)(classes.root, classes[variant], (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes[\"color\".concat((0, _helpers.capitalize)(color))], color !== 'default'), (0, _defineProperty2.default)(_classNames, classes.noWrap, noWrap), (0, _defineProperty2.default)(_classNames, classes.gutterBottom, gutterBottom), (0, _defineProperty2.default)(_classNames, classes.paragraph, paragraph), (0, _defineProperty2.default)(_classNames, classes[\"align\".concat((0, _helpers.capitalize)(align))], align !== 'inherit'), _classNames), classNameProp);\n  var Component = componentProp || (paragraph ? 'p' : headlineMapping[variant]) || 'span';\n  return _react.default.createElement(Component, (0, _extends2.default)({\n    className: className\n  }, other));\n}\n\nTypography.propTypes =  true ? {\n  /**\n   * Set the text-align on the component.\n   */\n  align: _propTypes.default.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n\n  /**\n   * The content of the component.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: _propTypes.default.oneOf(['inherit', 'primary', 'textSecondary', 'secondary', 'error', 'default']),\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a DOM element or a component.\n   * By default, it maps the variant to a good default headline component.\n   */\n  component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),\n\n  /**\n   * If `true`, the text will have a bottom margin.\n   */\n  gutterBottom: _propTypes.default.bool,\n\n  /**\n   * We are empirically mapping the variant property to a range of different DOM element types.\n   * For instance, h1 to h6. If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` property.\n   */\n  headlineMapping: _propTypes.default.object,\n\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with an ellipsis.\n   */\n  noWrap: _propTypes.default.bool,\n\n  /**\n   * If `true`, the text will have a bottom margin.\n   */\n  paragraph: _propTypes.default.bool,\n\n  /**\n   * Applies the theme typography styles.\n   */\n  variant: _propTypes.default.oneOf(['display4', 'display3', 'display2', 'display1', 'headline', 'title', 'subheading', 'body2', 'body1', 'caption', 'button'])\n} : undefined;\nTypography.defaultProps = {\n  align: 'inherit',\n  color: 'default',\n  gutterBottom: false,\n  headlineMapping: {\n    display4: 'h1',\n    display3: 'h1',\n    display2: 'h1',\n    display1: 'h1',\n    headline: 'h1',\n    title: 'h2',\n    subheading: 'h3',\n    body2: 'aside',\n    body1: 'p'\n  },\n  noWrap: false,\n  paragraph: false,\n  variant: 'body1'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiTypography'\n})(Typography);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/Typography/Typography.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/Typography/index.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/Typography/index.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"default\", {\n  enumerable: true,\n  get: function get() {\n    return _Typography.default;\n  }\n});\n\nvar _Typography = _interopRequireDefault(__webpack_require__(/*! ./Typography */ \"./node_modules/material-ui/Typography/Typography.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/Typography/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/colors/common.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/colors/common.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar common = {\n  black: '#000',\n  white: '#fff'\n};\nvar _default = common;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/colors/common.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/colors/grey.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/colors/grey.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#d5d5d5',\n  A200: '#aaaaaa',\n  A400: '#303030',\n  A700: '#616161'\n};\nvar _default = grey;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/colors/grey.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/colors/indigo.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/colors/indigo.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar indigo = {\n  50: '#e8eaf6',\n  100: '#c5cae9',\n  200: '#9fa8da',\n  300: '#7986cb',\n  400: '#5c6bc0',\n  500: '#3f51b5',\n  600: '#3949ab',\n  700: '#303f9f',\n  800: '#283593',\n  900: '#1a237e',\n  A100: '#8c9eff',\n  A200: '#536dfe',\n  A400: '#3d5afe',\n  A700: '#304ffe'\n};\nvar _default = indigo;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/colors/indigo.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/colors/pink.js":
+/*!*************************************************!*\
+  !*** ./node_modules/material-ui/colors/pink.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar pink = {\n  50: '#fce4ec',\n  100: '#f8bbd0',\n  200: '#f48fb1',\n  300: '#f06292',\n  400: '#ec407a',\n  500: '#e91e63',\n  600: '#d81b60',\n  700: '#c2185b',\n  800: '#ad1457',\n  900: '#880e4f',\n  A100: '#ff80ab',\n  A200: '#ff4081',\n  A400: '#f50057',\n  A700: '#c51162'\n};\nvar _default = pink;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/colors/pink.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/colors/red.js":
+/*!************************************************!*\
+  !*** ./node_modules/material-ui/colors/red.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nvar _default = red;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/colors/red.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/RootRef.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/internal/RootRef.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\n/**\n * @ignore - internal component.\n *\n * Internal helper component to allow attaching a ref to a\n * child element that may not accept refs (functional component).\n * It's higly inspired by https://github.com/facebook/react/issues/11401#issuecomment-340543801\n */\nvar RootRef =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(RootRef, _React$Component);\n\n  function RootRef() {\n    (0, _classCallCheck2.default)(this, RootRef);\n    return (0, _possibleConstructorReturn2.default)(this, (RootRef.__proto__ || (0, _getPrototypeOf.default)(RootRef)).apply(this, arguments));\n  }\n\n  (0, _createClass2.default)(RootRef, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.rootRef(_reactDom.default.findDOMNode(this));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.props.rootRef(null);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return RootRef;\n}(_react.default.Component);\n\nRootRef.propTypes =  true ? {\n  children: _propTypes.default.element.isRequired,\n  rootRef: _propTypes.default.func.isRequired\n} : undefined;\nvar _default = RootRef;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/RootRef.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/SwitchBase.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/internal/SwitchBase.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _IconButton = _interopRequireDefault(__webpack_require__(/*! ../IconButton */ \"./node_modules/material-ui/IconButton/index.js\"));\n\n// @inheritedComponent IconButton\nvar styles = {\n  root: {\n    display: 'inline-flex',\n    alignItems: 'center',\n    transition: 'none',\n    '&:hover': {\n      // Disable the hover effect for the IconButton.\n      backgroundColor: 'transparent'\n    }\n  },\n  checked: {},\n  disabled: {},\n  input: {\n    cursor: 'inherit',\n    position: 'absolute',\n    opacity: 0,\n    width: '100%',\n    height: '100%',\n    top: 0,\n    left: 0,\n    margin: 0,\n    padding: 0\n  }\n};\nexports.styles = styles;\n\nvar SwitchBase =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(SwitchBase, _React$Component);\n\n  function SwitchBase(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, SwitchBase);\n    _this = (0, _possibleConstructorReturn2.default)(this, (SwitchBase.__proto__ || (0, _getPrototypeOf.default)(SwitchBase)).call(this, props, context));\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: {}\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"input\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"isControlled\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleInputChange\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(event) {\n        var checked = event.target.checked;\n\n        if (!_this.isControlled) {\n          _this.setState({\n            checked: checked\n          });\n        }\n\n        if (_this.props.onChange) {\n          _this.props.onChange(event, checked);\n        }\n      }\n    });\n    _this.isControlled = props.checked != null;\n\n    if (!_this.isControlled) {\n      // not controlled, use internal state\n      _this.state.checked = props.defaultChecked !== undefined ? props.defaultChecked : false;\n    }\n\n    return _this;\n  }\n\n  (0, _createClass2.default)(SwitchBase, [{\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          checkedProp = _props.checked,\n          checkedIcon = _props.checkedIcon,\n          classes = _props.classes,\n          classNameProp = _props.className,\n          disabledProp = _props.disabled,\n          icon = _props.icon,\n          id = _props.id,\n          inputProps = _props.inputProps,\n          inputRef = _props.inputRef,\n          name = _props.name,\n          onChange = _props.onChange,\n          tabIndex = _props.tabIndex,\n          type = _props.type,\n          value = _props.value,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"checked\", \"checkedIcon\", \"classes\", \"className\", \"disabled\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onChange\", \"tabIndex\", \"type\", \"value\"]);\n      var muiFormControl = this.context.muiFormControl;\n      var disabled = disabledProp;\n\n      if (muiFormControl) {\n        if (typeof disabled === 'undefined') {\n          disabled = muiFormControl.disabled;\n        }\n      }\n\n      var checked = this.isControlled ? checkedProp : this.state.checked;\n      var hasLabelFor = type === 'checkbox' || type === 'radio';\n      return _react.default.createElement(_IconButton.default, (0, _extends2.default)({\n        component: \"span\",\n        className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.checked, checked), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), _classNames), classNameProp),\n        disabled: disabled,\n        tabIndex: null,\n        role: undefined\n      }, other), checked ? checkedIcon : icon, _react.default.createElement(\"input\", (0, _extends2.default)({\n        id: hasLabelFor && id,\n        type: type,\n        name: name,\n        checked: checked,\n        onChange: this.handleInputChange,\n        className: classes.input,\n        disabled: disabled,\n        tabIndex: tabIndex,\n        value: value,\n        ref: inputRef\n      }, inputProps)));\n    }\n  }]);\n  return SwitchBase;\n}(_react.default.Component); // NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n\n\nSwitchBase.propTypes =  true ? {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]),\n\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: _propTypes.default.node.isRequired,\n\n  /**\n   * Useful to extend the style applied to components.\n   */\n  classes: _propTypes.default.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: _propTypes.default.string,\n\n  /**\n   * @ignore\n   */\n  defaultChecked: _propTypes.default.bool,\n\n  /**\n   * If `true`, the switch will be disabled.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * If `true`, the ripple effect will be disabled.\n   */\n  disableRipple: _propTypes.default.bool,\n\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: _propTypes.default.node.isRequired,\n\n  /**\n   * The id of the `input` element.\n   */\n  id: _propTypes.default.string,\n\n  /**\n   * If `true`, the component appears indeterminate.\n   */\n  indeterminate: _propTypes.default.bool,\n\n  /**\n   * The icon to display when the component is indeterminate.\n   */\n  indeterminateIcon: _propTypes.default.node,\n\n  /**\n   * Properties applied to the `input` element.\n   */\n  inputProps: _propTypes.default.object,\n\n  /**\n   * Use that property to pass a ref callback to the native input component.\n   */\n  inputRef: _propTypes.default.func,\n\n  /*\n   * @ignore\n   */\n  name: _propTypes.default.string,\n\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.checked`.\n   * @param {boolean} checked The `checked` value of the switch\n   */\n  onChange: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  tabIndex: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n\n  /**\n   * The input component property `type`.\n   */\n  type: _propTypes.default.string,\n\n  /**\n   * The value of the component.\n   */\n  value: _propTypes.default.string\n} : undefined;\nSwitchBase.defaultProps = {\n  type: 'checkbox'\n};\nSwitchBase.contextTypes = {\n  muiFormControl: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n  name: 'MuiSwitchBase'\n})(SwitchBase);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/SwitchBase.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/svg-icons/ArrowDropDown.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/material-ui/internal/svg-icons/ArrowDropDown.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _pure = _interopRequireDefault(__webpack_require__(/*! recompose/pure */ \"./node_modules/recompose/pure.js\"));\n\nvar _SvgIcon = _interopRequireDefault(__webpack_require__(/*! ../../SvgIcon */ \"./node_modules/material-ui/SvgIcon/index.js\"));\n\nvar _ref = _react.default.createElement(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n});\n\n/**\n * @ignore - internal component.\n */\nvar ArrowDropDown = function ArrowDropDown(props) {\n  return _react.default.createElement(_SvgIcon.default, props, _ref);\n};\n\nArrowDropDown = (0, _pure.default)(ArrowDropDown);\nArrowDropDown.muiName = 'SvgIcon';\nvar _default = ArrowDropDown;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/svg-icons/ArrowDropDown.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/svg-icons/CheckBox.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/material-ui/internal/svg-icons/CheckBox.js ***!
+  \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _pure = _interopRequireDefault(__webpack_require__(/*! recompose/pure */ \"./node_modules/recompose/pure.js\"));\n\nvar _SvgIcon = _interopRequireDefault(__webpack_require__(/*! ../../SvgIcon */ \"./node_modules/material-ui/SvgIcon/index.js\"));\n\nvar _ref = _react.default.createElement(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n});\n\n/**\n * @ignore - internal component.\n */\nvar CheckBox = function CheckBox(props) {\n  return _react.default.createElement(_SvgIcon.default, props, _ref);\n};\n\nCheckBox = (0, _pure.default)(CheckBox);\nCheckBox.muiName = 'SvgIcon';\nvar _default = CheckBox;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/svg-icons/CheckBox.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/svg-icons/CheckBoxOutlineBlank.js":
+/*!*****************************************************************************!*\
+  !*** ./node_modules/material-ui/internal/svg-icons/CheckBoxOutlineBlank.js ***!
+  \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _pure = _interopRequireDefault(__webpack_require__(/*! recompose/pure */ \"./node_modules/recompose/pure.js\"));\n\nvar _SvgIcon = _interopRequireDefault(__webpack_require__(/*! ../../SvgIcon */ \"./node_modules/material-ui/SvgIcon/index.js\"));\n\nvar _ref = _react.default.createElement(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n});\n\n/**\n * @ignore - internal component.\n */\nvar CheckBoxOutlineBlank = function CheckBoxOutlineBlank(props) {\n  return _react.default.createElement(_SvgIcon.default, props, _ref);\n};\n\nCheckBoxOutlineBlank = (0, _pure.default)(CheckBoxOutlineBlank);\nCheckBoxOutlineBlank.muiName = 'SvgIcon';\nvar _default = CheckBoxOutlineBlank;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/svg-icons/CheckBoxOutlineBlank.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/internal/svg-icons/IndeterminateCheckBox.js":
+/*!******************************************************************************!*\
+  !*** ./node_modules/material-ui/internal/svg-icons/IndeterminateCheckBox.js ***!
+  \******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _pure = _interopRequireDefault(__webpack_require__(/*! recompose/pure */ \"./node_modules/recompose/pure.js\"));\n\nvar _SvgIcon = _interopRequireDefault(__webpack_require__(/*! ../../SvgIcon */ \"./node_modules/material-ui/SvgIcon/index.js\"));\n\nvar _ref = _react.default.createElement(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n});\n\n/**\n * @ignore - internal component.\n */\nvar IndeterminateCheckBox = function IndeterminateCheckBox(props) {\n  return _react.default.createElement(_SvgIcon.default, props, _ref);\n};\n\nIndeterminateCheckBox = (0, _pure.default)(IndeterminateCheckBox);\nIndeterminateCheckBox.muiName = 'SvgIcon';\nvar _default = IndeterminateCheckBox;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/internal/svg-icons/IndeterminateCheckBox.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/MuiThemeProvider.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/material-ui/styles/MuiThemeProvider.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _brcast = _interopRequireDefault(__webpack_require__(/*! brcast */ \"./node_modules/brcast/dist/brcast.es.js\"));\n\nvar _themeListener = _interopRequireWildcard(__webpack_require__(/*! ./themeListener */ \"./node_modules/material-ui/styles/themeListener.js\"));\n\nvar _exactProp = _interopRequireDefault(__webpack_require__(/*! ../utils/exactProp */ \"./node_modules/material-ui/utils/exactProp.js\"));\n\n/**\n * This component takes a `theme` property.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nvar MuiThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(MuiThemeProvider, _React$Component);\n\n  function MuiThemeProvider(props, context) {\n    var _this;\n\n    (0, _classCallCheck2.default)(this, MuiThemeProvider);\n    _this = (0, _possibleConstructorReturn2.default)(this, (MuiThemeProvider.__proto__ || (0, _getPrototypeOf.default)(MuiThemeProvider)).call(this, props, context)); // Get the outer theme from the context, can be null\n\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"broadcast\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _brcast.default)()\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"unsubscribeId\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"outerTheme\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    });\n    _this.outerTheme = _themeListener.default.initial(context); // Propagate the theme so it can be accessed by the children\n\n    _this.broadcast.setState(_this.mergeOuterLocalTheme(_this.props.theme));\n\n    return _this;\n  }\n\n  (0, _createClass2.default)(MuiThemeProvider, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      var _ref;\n\n      var _props = this.props,\n          sheetsManager = _props.sheetsManager,\n          disableStylesGeneration = _props.disableStylesGeneration;\n      var muiThemeProviderOptions = this.context.muiThemeProviderOptions || {};\n\n      if (sheetsManager !== undefined) {\n        muiThemeProviderOptions.sheetsManager = sheetsManager;\n      }\n\n      if (disableStylesGeneration !== undefined) {\n        muiThemeProviderOptions.disableStylesGeneration = disableStylesGeneration;\n      }\n\n      return _ref = {}, (0, _defineProperty2.default)(_ref, _themeListener.CHANNEL, this.broadcast), (0, _defineProperty2.default)(_ref, \"muiThemeProviderOptions\", muiThemeProviderOptions), _ref;\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      // Subscribe on the outer theme, if present\n      this.unsubscribeId = _themeListener.default.subscribe(this.context, function (outerTheme) {\n        _this2.outerTheme = outerTheme; // Forward the parent theme update to the children\n\n        _this2.broadcast.setState(_this2.mergeOuterLocalTheme(_this2.props.theme));\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      // Propagate a local theme update\n      if (this.props.theme !== prevProps.theme) {\n        this.broadcast.setState(this.mergeOuterLocalTheme(this.props.theme));\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.unsubscribeId !== null) {\n        _themeListener.default.unsubscribe(this.context, this.unsubscribeId);\n      }\n    }\n  }, {\n    key: \"mergeOuterLocalTheme\",\n    // Simple merge between the outer theme and the local theme\n    value: function mergeOuterLocalTheme(localTheme) {\n      // To support composition of theme.\n      if (typeof localTheme === 'function') {\n         true ? (0, _warning.default)(this.outerTheme, ['Material-UI: you are providing a theme function property ' + 'to the MuiThemeProvider component:', '<MuiThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n')) : undefined;\n        return localTheme(this.outerTheme);\n      }\n\n      if (!this.outerTheme) {\n        return localTheme;\n      }\n\n      return (0, _objectSpread2.default)({}, this.outerTheme, localTheme);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      // TODO move the sheetsManager property to a different component.\n      // warning(\n      //   typeof window !== 'undefined' || this.props.sheetsManager,\n      //   [\n      //     'Material-UI: you need to provide a sheetsManager to the MuiThemeProvider ' +\n      //       'when rendering on the server.',\n      //     'If you do not, you might experience a memory leak',\n      //   ].join('\\n'),\n      // );\n      return this.props.children;\n    }\n  }]);\n  return MuiThemeProvider;\n}(_react.default.Component);\n\nMuiThemeProvider.propTypes =  true ? {\n  /**\n   * You can only provide a single element with react@15, a node with react@16.\n   */\n  children: _propTypes.default.node.isRequired,\n\n  /**\n   * You can disable the generation of the styles with this option.\n   * It can be useful when traversing the React tree outside of the HTML\n   * rendering step on the server.\n   * Let's say you are using react-apollo to extract all\n   * the queries made by the interface server side.\n   * You can significantly speed up the traversal with this property.\n   */\n  disableStylesGeneration: _propTypes.default.bool,\n\n  /**\n   * The sheetsManager is used to deduplicate style sheet injection in the page.\n   * It's deduplicating using the (theme, styles) couple.\n   * On the server, you should provide a new instance for each request.\n   */\n  sheetsManager: _propTypes.default.object,\n\n  /**\n   * A theme object.\n   */\n  theme: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]).isRequired\n} : undefined;\nMuiThemeProvider.propTypes =  true ? (0, _exactProp.default)(MuiThemeProvider.propTypes, 'MuiThemeProvider') : undefined;\nMuiThemeProvider.childContextTypes = (0, _objectSpread2.default)({}, _themeListener.default.contextTypes, {\n  muiThemeProviderOptions: _propTypes.default.object\n});\nMuiThemeProvider.contextTypes = (0, _objectSpread2.default)({}, _themeListener.default.contextTypes, {\n  muiThemeProviderOptions: _propTypes.default.object\n});\nvar _default = MuiThemeProvider;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/MuiThemeProvider.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/colorManipulator.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/material-ui/styles/colorManipulator.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.convertHexToRGB = convertHexToRGB;\nexports.decomposeColor = decomposeColor;\nexports.recomposeColor = recomposeColor;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.emphasize = emphasize;\nexports.fade = fade;\nexports.darken = darken;\nexports.lighten = lighten;\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\n//  weak\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n  var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n   true ? (0, _warning.default)(value >= min && value <= max, \"Material-UI: the value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\")) : undefined;\n\n  if (value < min) {\n    return min;\n  }\n\n  if (value > max) {\n    return max;\n  }\n\n  return value;\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nfunction convertHexToRGB(color) {\n  color = color.substr(1);\n  var re = new RegExp(\".{1,\".concat(color.length / 3, \"}\"), 'g');\n  var colors = color.match(re);\n\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(function (n) {\n      return n + n;\n    });\n  }\n\n  return colors ? \"rgb(\".concat(colors.map(function (n) {\n    return parseInt(n, 16);\n  }).join(', '), \")\") : '';\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\n\nfunction decomposeColor(color) {\n  if (color.charAt(0) === '#') {\n    return decomposeColor(convertHexToRGB(color));\n  }\n\n  var marker = color.indexOf('(');\n  var type = color.substring(0, marker);\n  var values = color.substring(marker + 1, color.length - 1).split(',');\n  values = values.map(function (value) {\n    return parseFloat(value);\n  });\n\n  if (true) {\n    if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n      throw new Error([\"Material-UI: unsupported `\".concat(color, \"` color.\"), 'We support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().'].join('\\n'));\n    }\n  }\n\n  return {\n    type: type,\n    values: values\n  };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\n\nfunction recomposeColor(color) {\n  var type = color.type;\n  var values = color.values;\n\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map(function (n, i) {\n      return i < 3 ? parseInt(n, 10) : n;\n    });\n  }\n\n  if (type.indexOf('hsl') !== -1) {\n    values[1] = \"\".concat(values[1], \"%\");\n    values[2] = \"\".concat(values[2], \"%\");\n  }\n\n  return \"\".concat(color.type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\n\nfunction getContrastRatio(foreground, background) {\n  var lumA = getLuminance(foreground);\n  var lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\n\nfunction getLuminance(color) {\n  var decomposedColor = decomposeColor(color);\n\n  if (decomposedColor.type.indexOf('rgb') !== -1) {\n    var rgb = decomposedColor.values.map(function (val) {\n      val /= 255; // normalized\n\n      return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n    }); // Truncate at 3 digits\n\n    return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n  } // else if (decomposedColor.type.indexOf('hsl') !== -1)\n\n\n  return decomposedColor.values[2] / 100;\n}\n/**\n * Darken or lighten a colour, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction emphasize(color) {\n  var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction fade(color, value) {\n   true ? (0, _warning.default)(color, \"Material-UI: missing color argument in fade(\".concat(color, \", \").concat(value, \").\")) : undefined;\n  if (!color) return color;\n  color = decomposeColor(color);\n  value = clamp(value);\n\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n\n  color.values[3] = value;\n  return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction darken(color, coefficient) {\n   true ? (0, _warning.default)(color, \"Material-UI: missing color argument in darken(\".concat(color, \", \").concat(coefficient, \").\")) : undefined;\n  if (!color) return color;\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (var i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n\n  return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction lighten(color, coefficient) {\n   true ? (0, _warning.default)(color, \"Material-UI: missing color argument in lighten(\".concat(color, \", \").concat(coefficient, \").\")) : undefined;\n  if (!color) return color;\n  color = decomposeColor(color);\n  coefficient = clamp(coefficient);\n\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (var i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  }\n\n  return recomposeColor(color);\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/colorManipulator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createBreakpoints.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/material-ui/styles/createBreakpoints.js ***!
+  \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createBreakpoints;\nexports.keys = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nvar keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexports.keys = keys;\n\nfunction createBreakpoints(breakpoints) {\n  var _breakpoints$values = breakpoints.values,\n      values = _breakpoints$values === void 0 ? {\n    xs: 0,\n    sm: 600,\n    md: 960,\n    lg: 1280,\n    xl: 1920\n  } : _breakpoints$values,\n      _breakpoints$unit = breakpoints.unit,\n      unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n      _breakpoints$step = breakpoints.step,\n      step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n      other = (0, _objectWithoutProperties2.default)(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n  function up(key) {\n    var value = typeof values[key] === 'number' ? values[key] : key;\n    return \"@media (min-width:\".concat(value).concat(unit, \")\");\n  }\n\n  function down(key) {\n    var endIndex = keys.indexOf(key) + 1;\n    var upperbound = values[keys[endIndex]];\n\n    if (endIndex === keys.length) {\n      // xl down applies to all sizes\n      return up('xs');\n    }\n\n    var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n    return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n  }\n\n  function between(start, end) {\n    var endIndex = keys.indexOf(end) + 1;\n\n    if (endIndex === keys.length) {\n      return up(start);\n    }\n\n    return \"@media (min-width:\".concat(values[start]).concat(unit, \") and \") + \"(max-width:\".concat(values[keys[endIndex]] - step / 100).concat(unit, \")\");\n  }\n\n  function only(key) {\n    return between(key, key);\n  }\n\n  function width(key) {\n    return values[key];\n  }\n\n  return (0, _objectSpread2.default)({\n    keys: keys,\n    values: values,\n    up: up,\n    down: down,\n    between: between,\n    only: only,\n    width: width\n  }, other);\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createBreakpoints.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createGenerateClassName.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/material-ui/styles/createGenerateClassName.js ***!
+  \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createGenerateClassName;\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar generatorCounter = 0; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nfunction createGenerateClassName() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _options$dangerouslyU = options.dangerouslyUseGlobalCSS,\n      dangerouslyUseGlobalCSS = _options$dangerouslyU === void 0 ? false : _options$dangerouslyU,\n      _options$productionPr = options.productionPrefix,\n      productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr;\n  var escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\n  var ruleCounter = 0; // - HMR can lead to many class name generators being instantiated,\n  // so the warning is only triggered in production.\n  // - We expect a class name generator to be instantiated per new request on the server,\n  // so the warning is only triggered client side.\n  // - You can get away with having multiple class name generators\n  // by modifying the `productionPrefix`.\n\n  if (false) {}\n\n  return function (rule, styleSheet) {\n    ruleCounter += 1;\n     true ? (0, _warning.default)(ruleCounter < 1e10, ['Material-UI: you might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join('')) : undefined; // Code branch the whole block at the expense of more code.\n\n    if (dangerouslyUseGlobalCSS) {\n      if (styleSheet && styleSheet.options.classNamePrefix) {\n        var prefix = styleSheet.options.classNamePrefix; // Sanitize the string as will be used to prefix the generated class name.\n\n        prefix = prefix.replace(escapeRegex, '-');\n\n        if (prefix.match(/^Mui/)) {\n          return \"\".concat(prefix, \"-\").concat(rule.key);\n        }\n\n        if (true) {\n          return \"\".concat(prefix, \"-\").concat(rule.key, \"-\").concat(ruleCounter);\n        }\n      }\n\n      if (false) {}\n\n      return \"\".concat(rule.key, \"-\").concat(ruleCounter);\n    }\n\n    if (false) {}\n\n    if (styleSheet && styleSheet.options.classNamePrefix) {\n      var _prefix = styleSheet.options.classNamePrefix; // Sanitize the string as will be used to prefix the generated class name.\n\n      _prefix = _prefix.replace(escapeRegex, '-');\n      return \"\".concat(_prefix, \"-\").concat(rule.key, \"-\").concat(ruleCounter);\n    }\n\n    return \"\".concat(rule.key, \"-\").concat(ruleCounter);\n  };\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createGenerateClassName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createMixins.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/material-ui/styles/createMixins.js ***!
+  \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createMixins;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nfunction createMixins(breakpoints, spacing, mixins) {\n  var _toolbar;\n\n  return (0, _objectSpread3.default)({\n    gutters: function gutters() {\n      var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return (0, _objectSpread3.default)({\n        paddingLeft: spacing.unit * 2,\n        paddingRight: spacing.unit * 2\n      }, styles, (0, _defineProperty2.default)({}, breakpoints.up('sm'), (0, _objectSpread3.default)({\n        paddingLeft: spacing.unit * 3,\n        paddingRight: spacing.unit * 3\n      }, styles[breakpoints.up('sm')])));\n    },\n    toolbar: (_toolbar = {\n      minHeight: 56\n    }, (0, _defineProperty2.default)(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n      minHeight: 48\n    }), (0, _defineProperty2.default)(_toolbar, breakpoints.up('sm'), {\n      minHeight: 64\n    }), _toolbar)\n  }, mixins);\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createMixins.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createMuiTheme.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/material-ui/styles/createMuiTheme.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _deepmerge = _interopRequireDefault(__webpack_require__(/*! deepmerge */ \"./node_modules/deepmerge/dist/es.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _createTypography = _interopRequireDefault(__webpack_require__(/*! ./createTypography */ \"./node_modules/material-ui/styles/createTypography.js\"));\n\nvar _createBreakpoints = _interopRequireDefault(__webpack_require__(/*! ./createBreakpoints */ \"./node_modules/material-ui/styles/createBreakpoints.js\"));\n\nvar _createPalette = _interopRequireDefault(__webpack_require__(/*! ./createPalette */ \"./node_modules/material-ui/styles/createPalette.js\"));\n\nvar _createMixins = _interopRequireDefault(__webpack_require__(/*! ./createMixins */ \"./node_modules/material-ui/styles/createMixins.js\"));\n\nvar _shadows = _interopRequireDefault(__webpack_require__(/*! ./shadows */ \"./node_modules/material-ui/styles/shadows.js\"));\n\nvar _transitions = _interopRequireDefault(__webpack_require__(/*! ./transitions */ \"./node_modules/material-ui/styles/transitions.js\"));\n\nvar _zIndex = _interopRequireDefault(__webpack_require__(/*! ./zIndex */ \"./node_modules/material-ui/styles/zIndex.js\"));\n\nvar _spacing = _interopRequireDefault(__webpack_require__(/*! ./spacing */ \"./node_modules/material-ui/styles/spacing.js\"));\n\n// < 1kb payload overhead when lodash/merge is > 3kb.\nfunction createMuiTheme() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _options$palette = options.palette,\n      paletteInput = _options$palette === void 0 ? {} : _options$palette,\n      _options$breakpoints = options.breakpoints,\n      breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n      _options$mixins = options.mixins,\n      mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n      _options$typography = options.typography,\n      typographyInput = _options$typography === void 0 ? {} : _options$typography,\n      shadowsInput = options.shadows,\n      other = (0, _objectWithoutProperties2.default)(options, [\"palette\", \"breakpoints\", \"mixins\", \"typography\", \"shadows\"]);\n  var palette = (0, _createPalette.default)(paletteInput);\n  var breakpoints = (0, _createBreakpoints.default)(breakpointsInput);\n  var muiTheme = (0, _objectSpread2.default)({\n    breakpoints: breakpoints,\n    direction: 'ltr',\n    mixins: (0, _createMixins.default)(breakpoints, _spacing.default, mixinsInput),\n    overrides: {},\n    // Inject custom styles\n    palette: palette,\n    props: {},\n    // Inject custom properties\n    shadows: shadowsInput || _shadows.default,\n    typography: (0, _createTypography.default)(palette, typographyInput)\n  }, (0, _deepmerge.default)({\n    transitions: _transitions.default,\n    spacing: _spacing.default,\n    zIndex: _zIndex.default\n  }, other));\n   true ? (0, _warning.default)(muiTheme.shadows.length === 25, 'Material-UI: the shadows array provided to createMuiTheme should support 25 elevations.') : undefined;\n  return muiTheme;\n}\n\nvar _default = createMuiTheme;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createMuiTheme.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createPalette.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/material-ui/styles/createPalette.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createPalette;\nexports.dark = exports.light = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _deepmerge = _interopRequireDefault(__webpack_require__(/*! deepmerge */ \"./node_modules/deepmerge/dist/es.js\"));\n\nvar _indigo = _interopRequireDefault(__webpack_require__(/*! ../colors/indigo */ \"./node_modules/material-ui/colors/indigo.js\"));\n\nvar _pink = _interopRequireDefault(__webpack_require__(/*! ../colors/pink */ \"./node_modules/material-ui/colors/pink.js\"));\n\nvar _grey = _interopRequireDefault(__webpack_require__(/*! ../colors/grey */ \"./node_modules/material-ui/colors/grey.js\"));\n\nvar _red = _interopRequireDefault(__webpack_require__(/*! ../colors/red */ \"./node_modules/material-ui/colors/red.js\"));\n\nvar _common = _interopRequireDefault(__webpack_require__(/*! ../colors/common */ \"./node_modules/material-ui/colors/common.js\"));\n\nvar _colorManipulator = __webpack_require__(/*! ./colorManipulator */ \"./node_modules/material-ui/styles/colorManipulator.js\");\n\n// < 1kb payload overhead when lodash/merge is > 3kb.\nvar light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.54)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)',\n    // Text hints.\n    hint: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: _common.default.white,\n    default: _grey.default[50]\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.08)',\n    hoverOpacity: 0.08,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.14)',\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)'\n  }\n};\nexports.light = light;\nvar dark = {\n  text: {\n    primary: _common.default.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    hint: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: _grey.default[800],\n    default: '#303030'\n  },\n  action: {\n    active: _common.default.white,\n    hover: 'rgba(255, 255, 255, 0.1)',\n    hoverOpacity: 0.1,\n    selected: 'rgba(255, 255, 255, 0.2)',\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)'\n  }\n};\nexports.dark = dark;\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = (0, _colorManipulator.lighten)(intent.main, tonalOffset);\n    } else if (direction === 'dark') {\n      intent.dark = (0, _colorManipulator.darken)(intent.main, tonalOffset * 1.5);\n    }\n  }\n}\n\nfunction createPalette(palette) {\n  var _palette$primary = palette.primary,\n      primary = _palette$primary === void 0 ? {\n    light: _indigo.default[300],\n    main: _indigo.default[500],\n    dark: _indigo.default[700]\n  } : _palette$primary,\n      _palette$secondary = palette.secondary,\n      secondary = _palette$secondary === void 0 ? {\n    light: _pink.default.A200,\n    main: _pink.default.A400,\n    dark: _pink.default.A700\n  } : _palette$secondary,\n      _palette$error = palette.error,\n      error = _palette$error === void 0 ? {\n    light: _red.default[300],\n    main: _red.default[500],\n    dark: _red.default[700]\n  } : _palette$error,\n      _palette$type = palette.type,\n      type = _palette$type === void 0 ? 'light' : _palette$type,\n      _palette$contrastThre = palette.contrastThreshold,\n      contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n      _palette$tonalOffset = palette.tonalOffset,\n      tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n      other = (0, _objectWithoutProperties2.default)(palette, [\"primary\", \"secondary\", \"error\", \"type\", \"contrastThreshold\", \"tonalOffset\"]);\n\n  function getContrastText(background) {\n    // Use the same logic as\n    // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n    // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n    var contrastText = (0, _colorManipulator.getContrastRatio)(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n    if (true) {\n      var contrast = (0, _colorManipulator.getContrastRatio)(background, contrastText);\n       true ? (0, _warning.default)(contrast >= 3, [\"Material-UI: the contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WACG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n')) : undefined;\n    }\n\n    return contrastText;\n  }\n\n  function augmentColor(color, mainShade, lightShade, darkShade) {\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n  }\n\n  augmentColor(primary, 500, 300, 700);\n  augmentColor(secondary, 'A400', 'A200', 'A700');\n  augmentColor(error, 500, 300, 700);\n  var types = {\n    dark: dark,\n    light: light\n  };\n   true ? (0, _warning.default)(types[type], \"Material-UI: the palette type `\".concat(type, \"` is not supported.\")) : undefined;\n  var paletteOutput = (0, _deepmerge.default)((0, _objectSpread2.default)({\n    // A collection of common colors.\n    common: _common.default,\n    // The palette type, can be light or dark.\n    type: type,\n    // The colors used to represent primary interface elements for a user.\n    primary: primary,\n    // The colors used to represent secondary interface elements for a user.\n    secondary: secondary,\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: error,\n    // The grey colors.\n    grey: _grey.default,\n    // Used by `getContrastText()` to maximize the contrast between the background and\n    // the text.\n    contrastThreshold: contrastThreshold,\n    // Take a background color and return the color of the text to maximize the contrast.\n    getContrastText: getContrastText,\n    // Generate a rich color object.\n    augmentColor: augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset: tonalOffset\n  }, types[type]), other, {\n    clone: false // No need to clone deep\n\n  });\n  return paletteOutput;\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createPalette.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/createTypography.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/material-ui/styles/createTypography.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createTypography;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _deepmerge = _interopRequireDefault(__webpack_require__(/*! deepmerge */ \"./node_modules/deepmerge/dist/es.js\"));\n\n// < 1kb payload overhead when lodash/merge is > 3kb.\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\n\nfunction createTypography(palette, typography) {\n  var _ref = typeof typography === 'function' ? typography(palette) : typography,\n      _ref$fontFamily = _ref.fontFamily,\n      fontFamily = _ref$fontFamily === void 0 ? '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif' : _ref$fontFamily,\n      _ref$fontSize = _ref.fontSize,\n      fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n      _ref$fontWeightLight = _ref.fontWeightLight,\n      fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n      _ref$fontWeightRegula = _ref.fontWeightRegular,\n      fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n      _ref$fontWeightMedium = _ref.fontWeightMedium,\n      fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n      _ref$htmlFontSize = _ref.htmlFontSize,\n      htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n      other = (0, _objectWithoutProperties2.default)(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"htmlFontSize\"]);\n\n  var coef = fontSize / 14;\n\n  function pxToRem(value) {\n    return \"\".concat(value / htmlFontSize * coef, \"rem\");\n  }\n\n  return (0, _deepmerge.default)({\n    pxToRem: pxToRem,\n    round: round,\n    fontFamily: fontFamily,\n    fontSize: fontSize,\n    fontWeightLight: fontWeightLight,\n    fontWeightRegular: fontWeightRegular,\n    fontWeightMedium: fontWeightMedium,\n    display4: {\n      fontSize: pxToRem(112),\n      fontWeight: fontWeightLight,\n      fontFamily: fontFamily,\n      letterSpacing: '-.04em',\n      lineHeight: \"\".concat(round(128 / 112), \"em\"),\n      marginLeft: '-.04em',\n      color: palette.text.secondary\n    },\n    display3: {\n      fontSize: pxToRem(56),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      letterSpacing: '-.02em',\n      lineHeight: \"\".concat(round(73 / 56), \"em\"),\n      marginLeft: '-.02em',\n      color: palette.text.secondary\n    },\n    display2: {\n      fontSize: pxToRem(45),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(48 / 45), \"em\"),\n      marginLeft: '-.02em',\n      color: palette.text.secondary\n    },\n    display1: {\n      fontSize: pxToRem(34),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(41 / 34), \"em\"),\n      color: palette.text.secondary\n    },\n    headline: {\n      fontSize: pxToRem(24),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(32.5 / 24), \"em\"),\n      color: palette.text.primary\n    },\n    title: {\n      fontSize: pxToRem(21),\n      fontWeight: fontWeightMedium,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(24.5 / 21), \"em\"),\n      color: palette.text.primary\n    },\n    subheading: {\n      fontSize: pxToRem(16),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(24 / 16), \"em\"),\n      color: palette.text.primary\n    },\n    body2: {\n      fontSize: pxToRem(14),\n      fontWeight: fontWeightMedium,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(24 / 14), \"em\"),\n      color: palette.text.primary\n    },\n    body1: {\n      fontSize: pxToRem(14),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(20.5 / 14), \"em\"),\n      color: palette.text.primary\n    },\n    caption: {\n      fontSize: pxToRem(12),\n      fontWeight: fontWeightRegular,\n      fontFamily: fontFamily,\n      lineHeight: \"\".concat(round(16.5 / 12), \"em\"),\n      color: palette.text.secondary\n    },\n    button: {\n      fontSize: pxToRem(14),\n      textTransform: 'uppercase',\n      fontWeight: fontWeightMedium,\n      fontFamily: fontFamily\n    }\n  }, other, {\n    clone: false // No need to clone deep\n\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/createTypography.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/getStylesCreator.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/material-ui/styles/getStylesCreator.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _deepmerge = _interopRequireDefault(__webpack_require__(/*! deepmerge */ \"./node_modules/deepmerge/dist/es.js\"));\n\n// < 1kb payload overhead when lodash/merge is > 3kb.\n// Support for the jss-expand plugin.\nfunction arrayMerge(destination, source) {\n  return source;\n}\n\nfunction getStylesCreator(stylesOrCreator) {\n  var themingEnabled = typeof stylesOrCreator === 'function';\n\n  function create(theme, name) {\n    var styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n\n    if (!name || !theme.overrides || !theme.overrides[name]) {\n      return styles;\n    }\n\n    var overrides = theme.overrides[name];\n    var stylesWithOverrides = (0, _objectSpread2.default)({}, styles);\n    (0, _keys.default)(overrides).forEach(function (key) {\n       true ? (0, _warning.default)(stylesWithOverrides[key], ['Material-UI: you are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n')) : undefined;\n      stylesWithOverrides[key] = (0, _deepmerge.default)(stylesWithOverrides[key], overrides[key], {\n        arrayMerge: arrayMerge\n      });\n    });\n    return stylesWithOverrides;\n  }\n\n  return {\n    create: create,\n    options: {},\n    themingEnabled: themingEnabled\n  };\n}\n\nvar _default = getStylesCreator;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/getStylesCreator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/getThemeProps.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/material-ui/styles/getThemeProps.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction getThemeProps(params) {\n  var theme = params.theme,\n      name = params.name;\n\n  if (!name || !theme.props || !theme.props[name]) {\n    return {};\n  }\n\n  return theme.props[name];\n}\n\nvar _default = getThemeProps;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/getThemeProps.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/index.js":
+/*!**************************************************!*\
+  !*** ./node_modules/material-ui/styles/index.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"createGenerateClassName\", {\n  enumerable: true,\n  get: function get() {\n    return _createGenerateClassName.default;\n  }\n});\nObject.defineProperty(exports, \"createMuiTheme\", {\n  enumerable: true,\n  get: function get() {\n    return _createMuiTheme.default;\n  }\n});\nObject.defineProperty(exports, \"jssPreset\", {\n  enumerable: true,\n  get: function get() {\n    return _jssPreset.default;\n  }\n});\nObject.defineProperty(exports, \"MuiThemeProvider\", {\n  enumerable: true,\n  get: function get() {\n    return _MuiThemeProvider.default;\n  }\n});\nObject.defineProperty(exports, \"withStyles\", {\n  enumerable: true,\n  get: function get() {\n    return _withStyles.default;\n  }\n});\nObject.defineProperty(exports, \"withTheme\", {\n  enumerable: true,\n  get: function get() {\n    return _withTheme.default;\n  }\n});\n\nvar _createGenerateClassName = _interopRequireDefault(__webpack_require__(/*! ./createGenerateClassName */ \"./node_modules/material-ui/styles/createGenerateClassName.js\"));\n\nvar _createMuiTheme = _interopRequireDefault(__webpack_require__(/*! ./createMuiTheme */ \"./node_modules/material-ui/styles/createMuiTheme.js\"));\n\nvar _jssPreset = _interopRequireDefault(__webpack_require__(/*! ./jssPreset */ \"./node_modules/material-ui/styles/jssPreset.js\"));\n\nvar _MuiThemeProvider = _interopRequireDefault(__webpack_require__(/*! ./MuiThemeProvider */ \"./node_modules/material-ui/styles/MuiThemeProvider.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ./withStyles */ \"./node_modules/material-ui/styles/withStyles.js\"));\n\nvar _withTheme = _interopRequireDefault(__webpack_require__(/*! ./withTheme */ \"./node_modules/material-ui/styles/withTheme.js\"));\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/jssPreset.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/styles/jssPreset.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _jssGlobal = _interopRequireDefault(__webpack_require__(/*! jss-global */ \"./node_modules/jss-global/lib/index.js\"));\n\nvar _jssNested = _interopRequireDefault(__webpack_require__(/*! jss-nested */ \"./node_modules/jss-nested/lib/index.js\"));\n\nvar _jssCamelCase = _interopRequireDefault(__webpack_require__(/*! jss-camel-case */ \"./node_modules/jss-camel-case/lib/index.js\"));\n\nvar _jssDefaultUnit = _interopRequireDefault(__webpack_require__(/*! jss-default-unit */ \"./node_modules/jss-default-unit/lib/index.js\"));\n\nvar _jssVendorPrefixer = _interopRequireDefault(__webpack_require__(/*! jss-vendor-prefixer */ \"./node_modules/jss-vendor-prefixer/lib/index.js\"));\n\nvar _jssPropsSort = _interopRequireDefault(__webpack_require__(/*! jss-props-sort */ \"./node_modules/jss-props-sort/lib/index.js\"));\n\n// Subset of jss-preset-default with only the plugins the Material-UI\n// components are using.\nfunction jssPreset() {\n  return {\n    plugins: [(0, _jssGlobal.default)(), (0, _jssNested.default)(), (0, _jssCamelCase.default)(), (0, _jssDefaultUnit.default)(), (0, _jssVendorPrefixer.default)(), (0, _jssPropsSort.default)()]\n  };\n}\n\nvar _default = jssPreset;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/jssPreset.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/shadows.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/styles/shadows.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n  return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0, 0, 0, \").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0, 0, 0, \").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0, 0, 0, \").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n}\n\nvar shadows = ['none', createShadow(0, 1, 3, 0, 0, 1, 1, 0, 0, 2, 1, -1), createShadow(0, 1, 5, 0, 0, 2, 2, 0, 0, 3, 1, -2), createShadow(0, 1, 8, 0, 0, 3, 4, 0, 0, 3, 3, -2), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nvar _default = shadows;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/shadows.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/spacing.js":
+/*!****************************************************!*\
+  !*** ./node_modules/material-ui/styles/spacing.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  // All components align to an 8dp square baseline grid for mobile, tablet, and desktop.\n  // https://material.io/guidelines/layout/metrics-keylines.html#metrics-keylines-baseline-grids\n  unit: 8\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/spacing.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/themeListener.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/material-ui/styles/themeListener.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.CHANNEL = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\n// Same value used by react-jss\nvar CHANNEL = '__THEMING__';\nexports.CHANNEL = CHANNEL;\nvar themeListener = {\n  contextTypes: (0, _defineProperty2.default)({}, CHANNEL, _propTypes.default.object),\n  initial: function initial(context) {\n    if (!context[CHANNEL]) {\n      return null;\n    }\n\n    return context[CHANNEL].getState();\n  },\n  subscribe: function subscribe(context, cb) {\n    if (!context[CHANNEL]) {\n      return null;\n    }\n\n    return context[CHANNEL].subscribe(cb);\n  },\n  unsubscribe: function unsubscribe(context, subscriptionId) {\n    if (context[CHANNEL]) {\n      context[CHANNEL].unsubscribe(subscriptionId);\n    }\n  }\n};\nvar _default = themeListener;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/themeListener.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/transitions.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/styles/transitions.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.isNumber = exports.isString = exports.formatMs = exports.duration = exports.easing = void 0;\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _isNan = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/number/is-nan */ \"./node_modules/@babel/runtime/core-js/number/is-nan.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\n/* eslint-disable no-param-reassign */\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nvar easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexports.easing = easing;\nvar duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nexports.duration = duration;\n\nvar formatMs = function formatMs(milliseconds) {\n  return \"\".concat(Math.round(milliseconds), \"ms\");\n};\n\nexports.formatMs = formatMs;\n\nvar isString = function isString(value) {\n  return typeof value === 'string';\n};\n\nexports.isString = isString;\n\nvar isNumber = function isNumber(value) {\n  return !(0, _isNan.default)(parseFloat(value));\n};\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexports.isNumber = isNumber;\nvar _default = {\n  easing: easing,\n  duration: duration,\n  create: function create() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    return function () {\n      var _options$duration = options.duration,\n          durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n          _options$easing = options.easing,\n          easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n          _options$delay = options.delay,\n          delay = _options$delay === void 0 ? 0 : _options$delay,\n          other = (0, _objectWithoutProperties2.default)(options, [\"duration\", \"easing\", \"delay\"]);\n       true ? (0, _warning.default)(isString(props) || Array.isArray(props), 'Material-UI: argument \"props\" must be a string or Array.') : undefined;\n       true ? (0, _warning.default)(isNumber(durationOption) || isString(durationOption), \"Material-UI: argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\")) : undefined;\n       true ? (0, _warning.default)(isString(easingOption), 'Material-UI: argument \"easing\" must be a string.') : undefined;\n       true ? (0, _warning.default)(isNumber(delay) || isString(delay), 'Material-UI: argument \"delay\" must be a number or a string.') : undefined;\n       true ? (0, _warning.default)((0, _keys.default)(other).length === 0, \"Material-UI: unrecognized argument(s) [\".concat((0, _keys.default)(other).join(','), \"]\")) : undefined;\n      return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n        return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n      }).join(',');\n    }();\n  },\n  getAutoHeightDuration: function getAutoHeightDuration(height) {\n    if (!height) {\n      return 0;\n    }\n\n    var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n    return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/transitions.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/withStyles.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/styles/withStyles.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireWildcard = __webpack_require__(/*! @babel/runtime/helpers/interopRequireWildcard */ \"./node_modules/@babel/runtime/helpers/interopRequireWildcard.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.sheetsManager = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _map = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/map */ \"./node_modules/@babel/runtime/core-js/map.js\"));\n\nvar _minSafeInteger = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/number/min-safe-integer */ \"./node_modules/@babel/runtime/core-js/number/min-safe-integer.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _hoistNonReactStatics = _interopRequireDefault(__webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/index.js\"));\n\nvar _getDisplayName = _interopRequireDefault(__webpack_require__(/*! recompose/getDisplayName */ \"./node_modules/recompose/getDisplayName.js\"));\n\nvar _wrapDisplayName = _interopRequireDefault(__webpack_require__(/*! recompose/wrapDisplayName */ \"./node_modules/recompose/wrapDisplayName.js\"));\n\nvar _contextTypes = _interopRequireDefault(__webpack_require__(/*! react-jss/lib/contextTypes */ \"./node_modules/react-jss/lib/contextTypes.js\"));\n\nvar _jss = __webpack_require__(/*! jss */ \"./node_modules/jss/lib/index.js\");\n\nvar ns = _interopRequireWildcard(__webpack_require__(/*! react-jss/lib/ns */ \"./node_modules/react-jss/lib/ns.js\"));\n\nvar _jssPreset = _interopRequireDefault(__webpack_require__(/*! ./jssPreset */ \"./node_modules/material-ui/styles/jssPreset.js\"));\n\nvar _createMuiTheme = _interopRequireDefault(__webpack_require__(/*! ./createMuiTheme */ \"./node_modules/material-ui/styles/createMuiTheme.js\"));\n\nvar _themeListener = _interopRequireDefault(__webpack_require__(/*! ./themeListener */ \"./node_modules/material-ui/styles/themeListener.js\"));\n\nvar _createGenerateClassName = _interopRequireDefault(__webpack_require__(/*! ./createGenerateClassName */ \"./node_modules/material-ui/styles/createGenerateClassName.js\"));\n\nvar _getStylesCreator = _interopRequireDefault(__webpack_require__(/*! ./getStylesCreator */ \"./node_modules/material-ui/styles/getStylesCreator.js\"));\n\nvar _getThemeProps = _interopRequireDefault(__webpack_require__(/*! ./getThemeProps */ \"./node_modules/material-ui/styles/getThemeProps.js\"));\n\n// Default JSS instance.\nvar jss = (0, _jss.create)((0, _jssPreset.default)()); // Use a singleton or the provided one by the context.\n\nvar generateClassName = (0, _createGenerateClassName.default)(); // Global index counter to preserve source order.\n// We create the style sheet during at the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any childs styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\n\nvar indexCounter = _minSafeInteger.default;\nvar sheetsManager = new _map.default(); // We use the same empty object to ref count the styles that don't need a theme object.\n\nexports.sheetsManager = sheetsManager;\nvar noopTheme = {}; // In order to have self-supporting components, we rely on default theme when not provided.\n\nvar defaultTheme;\n\nfunction getDefaultTheme() {\n  if (defaultTheme) {\n    return defaultTheme;\n  }\n\n  defaultTheme = (0, _createMuiTheme.default)();\n  return defaultTheme;\n} // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\n\nvar withStyles = function withStyles(stylesOrCreator) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return function (Component) {\n    var _options$withTheme = options.withTheme,\n        withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n        _options$flip = options.flip,\n        flip = _options$flip === void 0 ? null : _options$flip,\n        name = options.name,\n        styleSheetOptions = (0, _objectWithoutProperties2.default)(options, [\"withTheme\", \"flip\", \"name\"]);\n    var stylesCreator = (0, _getStylesCreator.default)(stylesOrCreator);\n    var listenToTheme = stylesCreator.themingEnabled || withTheme || typeof name === 'string';\n    indexCounter += 1;\n    stylesCreator.options.index = indexCounter;\n     true ? (0, _warning.default)(indexCounter < 0, ['Material-UI: you might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join(' ')) : undefined;\n\n    var WithStyles =\n    /*#__PURE__*/\n    function (_React$Component) {\n      (0, _inherits2.default)(WithStyles, _React$Component);\n\n      function WithStyles(props, context) {\n        var _this;\n\n        (0, _classCallCheck2.default)(this, WithStyles);\n        _this = (0, _possibleConstructorReturn2.default)(this, (WithStyles.__proto__ || (0, _getPrototypeOf.default)(WithStyles)).call(this, props, context));\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: {}\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"disableStylesGeneration\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: false\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"jss\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"sheetOptions\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"sheetsManager\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: sheetsManager\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"stylesCreatorSaved\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"theme\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"unsubscribeId\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        _this.jss = _this.context[ns.jss] || jss;\n        var muiThemeProviderOptions = _this.context.muiThemeProviderOptions;\n\n        if (muiThemeProviderOptions) {\n          if (muiThemeProviderOptions.sheetsManager) {\n            _this.sheetsManager = muiThemeProviderOptions.sheetsManager;\n          }\n\n          _this.disableStylesGeneration = muiThemeProviderOptions.disableStylesGeneration;\n        } // Attach the stylesCreator to the instance of the component as in the context\n        // of react-hot-loader the hooks can be executed in a different closure context:\n        // https://github.com/gaearon/react-hot-loader/blob/master/src/patch.dev.js#L107\n\n\n        _this.stylesCreatorSaved = stylesCreator;\n        _this.sheetOptions = (0, _objectSpread2.default)({\n          generateClassName: generateClassName\n        }, _this.context[ns.sheetOptions]); // We use || as the function call is lazy evaluated.\n\n        _this.theme = listenToTheme ? _themeListener.default.initial(context) || getDefaultTheme() : noopTheme;\n\n        _this.attach(_this.theme);\n\n        _this.cacheClasses = {\n          // Cache for the finalized classes value.\n          value: null,\n          // Cache for the last used classes prop pointer.\n          lastProp: null,\n          // Cache for the last used rendered classes pointer.\n          lastJSS: {}\n        };\n        return _this;\n      }\n\n      (0, _createClass2.default)(WithStyles, [{\n        key: \"componentDidMount\",\n        value: function componentDidMount() {\n          var _this2 = this;\n\n          if (!listenToTheme) {\n            return;\n          }\n\n          this.unsubscribeId = _themeListener.default.subscribe(this.context, function (theme) {\n            var oldTheme = _this2.theme;\n            _this2.theme = theme;\n\n            _this2.attach(_this2.theme); // Rerender the component so the underlying component gets the theme update.\n            // By theme update we mean receiving and applying the new class names.\n\n\n            _this2.setState({}, function () {\n              _this2.detach(oldTheme);\n            });\n          });\n        }\n      }, {\n        key: \"componentDidUpdate\",\n        value: function componentDidUpdate() {\n          // react-hot-loader specific logic\n          if (this.stylesCreatorSaved === stylesCreator || \"development\" === 'production') {\n            return;\n          }\n\n          this.detach(this.theme);\n          this.stylesCreatorSaved = stylesCreator;\n          this.attach(this.theme);\n          this.forceUpdate();\n        }\n      }, {\n        key: \"componentWillUnmount\",\n        value: function componentWillUnmount() {\n          this.detach(this.theme);\n\n          if (this.unsubscribeId !== null) {\n            _themeListener.default.unsubscribe(this.context, this.unsubscribeId);\n          }\n        }\n      }, {\n        key: \"getClasses\",\n        value: function getClasses() {\n          var _this3 = this;\n\n          // Tracks if either the rendered classes or classes prop has changed,\n          // requiring the generation of a new finalized classes object.\n          var generate = false;\n\n          if (!this.disableStylesGeneration) {\n            var sheetManager = this.sheetsManager.get(this.stylesCreatorSaved);\n            var sheetsManagerTheme = sheetManager.get(this.theme);\n\n            if (sheetsManagerTheme.sheet.classes !== this.cacheClasses.lastJSS) {\n              this.cacheClasses.lastJSS = sheetsManagerTheme.sheet.classes;\n              generate = true;\n            }\n          }\n\n          if (this.props.classes !== this.cacheClasses.lastProp) {\n            this.cacheClasses.lastProp = this.props.classes;\n            generate = true;\n          }\n\n          if (generate) {\n            if (this.props.classes) {\n              this.cacheClasses.value = (0, _objectSpread2.default)({}, this.cacheClasses.lastJSS, (0, _keys.default)(this.props.classes).reduce(function (accumulator, key) {\n                 true ? (0, _warning.default)(_this3.cacheClasses.lastJSS[key] || _this3.disableStylesGeneration, [\"Material-UI: the key `\".concat(key, \"` \") + \"provided to the classes property is not implemented in \".concat((0, _getDisplayName.default)(Component), \".\"), \"You can only override one of the following: \".concat((0, _keys.default)(_this3.cacheClasses.lastJSS).join(','))].join('\\n')) : undefined;\n                 true ? (0, _warning.default)(!_this3.props.classes[key] || typeof _this3.props.classes[key] === 'string', [\"Material-UI: the key `\".concat(key, \"` \") + \"provided to the classes property is not valid for \".concat((0, _getDisplayName.default)(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(_this3.props.classes[key], \".\")].join('\\n')) : undefined;\n\n                if (_this3.props.classes[key]) {\n                  accumulator[key] = \"\".concat(_this3.cacheClasses.lastJSS[key], \" \").concat(_this3.props.classes[key]);\n                }\n\n                return accumulator;\n              }, {}));\n            } else {\n              this.cacheClasses.value = this.cacheClasses.lastJSS;\n            }\n          }\n\n          return this.cacheClasses.value;\n        }\n      }, {\n        key: \"attach\",\n        value: function attach(theme) {\n          if (this.disableStylesGeneration) {\n            return;\n          }\n\n          var stylesCreatorSaved = this.stylesCreatorSaved;\n          var sheetManager = this.sheetsManager.get(stylesCreatorSaved);\n\n          if (!sheetManager) {\n            sheetManager = new _map.default();\n            this.sheetsManager.set(stylesCreatorSaved, sheetManager);\n          }\n\n          var sheetManagerTheme = sheetManager.get(theme);\n\n          if (!sheetManagerTheme) {\n            sheetManagerTheme = {\n              refs: 0,\n              sheet: null\n            };\n            sheetManager.set(theme, sheetManagerTheme);\n          }\n\n          if (sheetManagerTheme.refs === 0) {\n            var styles = stylesCreatorSaved.create(theme, name);\n            var meta = name;\n\n            if (\"development\" !== 'production' && !meta) {\n              meta = (0, _getDisplayName.default)(Component);\n            }\n\n            var sheet = this.jss.createStyleSheet(styles, (0, _objectSpread2.default)({\n              meta: meta,\n              classNamePrefix: meta,\n              flip: typeof flip === 'boolean' ? flip : theme.direction === 'rtl',\n              link: false\n            }, this.sheetOptions, stylesCreatorSaved.options, {\n              name: name\n            }, styleSheetOptions));\n            sheetManagerTheme.sheet = sheet;\n            sheet.attach();\n            var sheetsRegistry = this.context[ns.sheetsRegistry];\n\n            if (sheetsRegistry) {\n              sheetsRegistry.add(sheet);\n            }\n          }\n\n          sheetManagerTheme.refs += 1;\n        }\n      }, {\n        key: \"detach\",\n        value: function detach(theme) {\n          if (this.disableStylesGeneration) {\n            return;\n          }\n\n          var stylesCreatorSaved = this.stylesCreatorSaved;\n          var sheetManager = this.sheetsManager.get(stylesCreatorSaved);\n          var sheetManagerTheme = sheetManager.get(theme);\n          sheetManagerTheme.refs -= 1;\n\n          if (sheetManagerTheme.refs === 0) {\n            sheetManager.delete(theme);\n            this.jss.removeStyleSheet(sheetManagerTheme.sheet);\n            var sheetsRegistry = this.context[ns.sheetsRegistry];\n\n            if (sheetsRegistry) {\n              sheetsRegistry.remove(sheetManagerTheme.sheet);\n            }\n          }\n        }\n      }, {\n        key: \"render\",\n        value: function render() {\n          var _props = this.props,\n              classes = _props.classes,\n              innerRef = _props.innerRef,\n              other = (0, _objectWithoutProperties2.default)(_props, [\"classes\", \"innerRef\"]);\n          var more = (0, _getThemeProps.default)({\n            theme: this.theme,\n            name: name\n          }); // Provide the theme to the wrapped component.\n          // So we don't have to use the `withTheme()` Higher-order Component.\n\n          if (withTheme) {\n            more.theme = this.theme;\n          }\n\n          return _react.default.createElement(Component, (0, _extends2.default)({}, more, {\n            classes: this.getClasses(),\n            ref: innerRef\n          }, other));\n        }\n      }]);\n      return WithStyles;\n    }(_react.default.Component);\n\n    WithStyles.propTypes =  true ? {\n      /**\n       * Useful to extend the style applied to components.\n       */\n      classes: _propTypes.default.object,\n\n      /**\n       * Use that property to pass a ref callback to the decorated component.\n       */\n      innerRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])\n    } : undefined;\n    WithStyles.contextTypes = (0, _objectSpread2.default)({\n      muiThemeProviderOptions: _propTypes.default.object\n    }, _contextTypes.default, listenToTheme ? _themeListener.default.contextTypes : {});\n\n    if (true) {\n      WithStyles.displayName = (0, _wrapDisplayName.default)(Component, 'WithStyles');\n    }\n\n    (0, _hoistNonReactStatics.default)(WithStyles, Component);\n\n    if (true) {\n      // Exposed for test purposes.\n      WithStyles.Naked = Component;\n      WithStyles.options = options;\n    }\n\n    return WithStyles;\n  };\n};\n\nvar _default = withStyles;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/withStyles.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/withTheme.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/styles/withTheme.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _hoistNonReactStatics = _interopRequireDefault(__webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/index.js\"));\n\nvar _wrapDisplayName = _interopRequireDefault(__webpack_require__(/*! recompose/wrapDisplayName */ \"./node_modules/recompose/wrapDisplayName.js\"));\n\nvar _createMuiTheme = _interopRequireDefault(__webpack_require__(/*! ./createMuiTheme */ \"./node_modules/material-ui/styles/createMuiTheme.js\"));\n\nvar _themeListener = _interopRequireDefault(__webpack_require__(/*! ./themeListener */ \"./node_modules/material-ui/styles/themeListener.js\"));\n\nvar defaultTheme;\n\nfunction getDefaultTheme() {\n  if (defaultTheme) {\n    return defaultTheme;\n  }\n\n  defaultTheme = (0, _createMuiTheme.default)();\n  return defaultTheme;\n} // Provide the theme object as a property to the input component.\n\n\nvar withTheme = function withTheme() {\n  return function (Component) {\n    var WithTheme =\n    /*#__PURE__*/\n    function (_React$Component) {\n      (0, _inherits2.default)(WithTheme, _React$Component);\n\n      function WithTheme(props, context) {\n        var _this;\n\n        (0, _classCallCheck2.default)(this, WithTheme);\n        _this = (0, _possibleConstructorReturn2.default)(this, (WithTheme.__proto__ || (0, _getPrototypeOf.default)(WithTheme)).call(this, props, context));\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"state\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: {}\n        });\n        Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"unsubscribeId\", {\n          configurable: true,\n          enumerable: true,\n          writable: true,\n          value: null\n        });\n        _this.state = {\n          // We use || as the function call is lazy evaluated.\n          theme: _themeListener.default.initial(context) || getDefaultTheme()\n        };\n        return _this;\n      }\n\n      (0, _createClass2.default)(WithTheme, [{\n        key: \"componentDidMount\",\n        value: function componentDidMount() {\n          var _this2 = this;\n\n          this.unsubscribeId = _themeListener.default.subscribe(this.context, function (theme) {\n            _this2.setState({\n              theme: theme\n            });\n          });\n        }\n      }, {\n        key: \"componentWillUnmount\",\n        value: function componentWillUnmount() {\n          if (this.unsubscribeId !== null) {\n            _themeListener.default.unsubscribe(this.context, this.unsubscribeId);\n          }\n        }\n      }, {\n        key: \"render\",\n        value: function render() {\n          return _react.default.createElement(Component, (0, _extends2.default)({\n            theme: this.state.theme\n          }, this.props));\n        }\n      }]);\n      return WithTheme;\n    }(_react.default.Component);\n\n    WithTheme.contextTypes = _themeListener.default.contextTypes;\n\n    if (true) {\n      WithTheme.displayName = (0, _wrapDisplayName.default)(Component, 'WithTheme');\n    }\n\n    (0, _hoistNonReactStatics.default)(WithTheme, Component);\n\n    if (true) {\n      // Exposed for test purposes.\n      WithTheme.Naked = Component;\n    }\n\n    return WithTheme;\n  };\n};\n\nvar _default = withTheme;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/withTheme.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/styles/zIndex.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/styles/zIndex.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n  mobileStepper: 1000,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nvar _default = zIndex;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/styles/zIndex.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/transitions/Fade.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/transitions/Fade.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\nvar _transitions = __webpack_require__(/*! ../styles/transitions */ \"./node_modules/material-ui/styles/transitions.js\");\n\nvar _withTheme = _interopRequireDefault(__webpack_require__(/*! ../styles/withTheme */ \"./node_modules/material-ui/styles/withTheme.js\"));\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/material-ui/transitions/utils.js\");\n\n// @inheritedComponent Transition\nvar styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n/**\n * The Fade transition is used by the [Modal](/utils/modals) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Fade, _React$Component);\n\n  function Fade() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Fade);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Fade.__proto__ || (0, _getPrototypeOf.default)(Fade)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var theme = _this.props.theme;\n        (0, _utils.reflow)(node); // So the animation always start from the start.\n\n        var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'enter'\n        });\n        node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n        node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n        if (_this.props.onEnter) {\n          _this.props.onEnter(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var theme = _this.props.theme;\n        var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'exit'\n        });\n        node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n        node.style.transition = theme.transitions.create('opacity', transitionProps);\n\n        if (_this.props.onExit) {\n          _this.props.onExit(node);\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Fade, [{\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          children = _props.children,\n          onEnter = _props.onEnter,\n          onExit = _props.onExit,\n          styleProp = _props.style,\n          theme = _props.theme,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"onEnter\", \"onExit\", \"style\", \"theme\"]);\n      var style = (0, _objectSpread2.default)({}, styleProp, _react.default.isValidElement(children) ? children.props.style : {});\n      return _react.default.createElement(_Transition.default, (0, _extends2.default)({\n        appear: true,\n        onEnter: this.handleEnter,\n        onExit: this.handleExit\n      }, other), function (state, childProps) {\n        return _react.default.cloneElement(children, (0, _objectSpread2.default)({\n          style: (0, _objectSpread2.default)({\n            opacity: 0,\n            willChange: 'opacity'\n          }, styles[state], style)\n        }, childProps));\n      });\n    }\n  }]);\n  return Fade;\n}(_react.default.Component);\n\nFade.propTypes =  true ? {\n  /**\n   * A single child content element.\n   */\n  children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),\n\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  style: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  theme: _propTypes.default.object.isRequired,\n\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  })])\n} : undefined;\nFade.defaultProps = {\n  timeout: {\n    enter: _transitions.duration.enteringScreen,\n    exit: _transitions.duration.leavingScreen\n  }\n};\n\nvar _default = (0, _withTheme.default)()(Fade);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/transitions/Fade.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/transitions/Grow.js":
+/*!******************************************************!*\
+  !*** ./node_modules/material-ui/transitions/Grow.js ***!
+  \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\nvar _withTheme = _interopRequireDefault(__webpack_require__(/*! ../styles/withTheme */ \"./node_modules/material-ui/styles/withTheme.js\"));\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/material-ui/transitions/utils.js\");\n\n// @inheritedComponent Transition\nfunction getScale(value) {\n  return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\n\nvar styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: getScale(1)\n  }\n};\n/**\n * The Grow transition is used by the [Popover](/utils/popovers) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Grow, _React$Component);\n\n  function Grow() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Grow);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Grow.__proto__ || (0, _getPrototypeOf.default)(Grow)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"autoTimeout\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: undefined\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"timer\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var _this$props = _this.props,\n            theme = _this$props.theme,\n            timeout = _this$props.timeout;\n        (0, _utils.reflow)(node); // So the animation always start from the start.\n\n        var _getTransitionProps = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'enter'\n        }),\n            transitionDuration = _getTransitionProps.duration,\n            delay = _getTransitionProps.delay;\n\n        var duration = 0;\n\n        if (timeout === 'auto') {\n          duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n          _this.autoTimeout = duration;\n        } else {\n          duration = transitionDuration;\n        }\n\n        node.style.transition = [theme.transitions.create('opacity', {\n          duration: duration,\n          delay: delay\n        }), theme.transitions.create('transform', {\n          duration: duration * 0.666,\n          delay: delay\n        })].join(',');\n\n        if (_this.props.onEnter) {\n          _this.props.onEnter(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var _this$props2 = _this.props,\n            theme = _this$props2.theme,\n            timeout = _this$props2.timeout;\n        var duration = 0;\n\n        var _getTransitionProps2 = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'exit'\n        }),\n            transitionDuration = _getTransitionProps2.duration,\n            delay = _getTransitionProps2.delay;\n\n        if (timeout === 'auto') {\n          duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n          _this.autoTimeout = duration;\n        } else {\n          duration = transitionDuration;\n        }\n\n        node.style.transition = [theme.transitions.create('opacity', {\n          duration: duration,\n          delay: delay\n        }), theme.transitions.create('transform', {\n          duration: duration * 0.666,\n          delay: delay || duration * 0.333\n        })].join(',');\n        node.style.opacity = '0';\n        node.style.transform = getScale(0.75);\n\n        if (_this.props.onExit) {\n          _this.props.onExit(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"addEndListener\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(_, next) {\n        if (_this.props.timeout === 'auto') {\n          _this.timer = setTimeout(next, _this.autoTimeout || 0);\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Grow, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      clearTimeout(this.timer);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          children = _props.children,\n          onEnter = _props.onEnter,\n          onExit = _props.onExit,\n          styleProp = _props.style,\n          theme = _props.theme,\n          timeout = _props.timeout,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"onEnter\", \"onExit\", \"style\", \"theme\", \"timeout\"]);\n      var style = (0, _objectSpread2.default)({}, styleProp, _react.default.isValidElement(children) ? children.props.style : {});\n      return _react.default.createElement(_Transition.default, (0, _extends2.default)({\n        appear: true,\n        onEnter: this.handleEnter,\n        onExit: this.handleExit,\n        addEndListener: this.addEndListener,\n        timeout: timeout === 'auto' ? null : timeout\n      }, other), function (state, childProps) {\n        return _react.default.cloneElement(children, (0, _objectSpread2.default)({\n          style: (0, _objectSpread2.default)({\n            opacity: 0,\n            transform: getScale(0.75)\n          }, styles[state], style)\n        }, childProps));\n      });\n    }\n  }]);\n  return Grow;\n}(_react.default.Component);\n\nGrow.propTypes =  true ? {\n  /**\n   * A single child content element.\n   */\n  children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),\n\n  /**\n   * If `true`, show the component; triggers the enter or exit animation.\n   */\n  in: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  style: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  theme: _propTypes.default.object.isRequired,\n\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   */\n  timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  }), _propTypes.default.oneOf(['auto'])])\n} : undefined;\nGrow.defaultProps = {\n  timeout: 'auto'\n};\n\nvar _default = (0, _withTheme.default)()(Grow);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/transitions/Grow.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/transitions/Slide.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/transitions/Slide.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setTranslateValue = setTranslateValue;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/get-prototype-of */ \"./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/@babel/runtime/helpers/assertThisInitialized.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\n\nvar _reactEventListener = _interopRequireDefault(__webpack_require__(/*! react-event-listener */ \"./node_modules/react-event-listener/lib/index.js\"));\n\nvar _debounce = _interopRequireDefault(__webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\"));\n\nvar _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ \"./node_modules/react-transition-group/Transition.js\"));\n\nvar _reactLifecyclesCompat = __webpack_require__(/*! react-lifecycles-compat */ \"./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\");\n\nvar _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ \"./node_modules/material-ui/utils/ownerWindow.js\"));\n\nvar _withTheme = _interopRequireDefault(__webpack_require__(/*! ../styles/withTheme */ \"./node_modules/material-ui/styles/withTheme.js\"));\n\nvar _transitions = __webpack_require__(/*! ../styles/transitions */ \"./node_modules/material-ui/styles/transitions.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/material-ui/transitions/utils.js\");\n\n// @inheritedComponent Transition\nvar GUTTER = 24; // Translate the node so he can't be seen on the screen.\n// Later, we gonna translate back the node to his original location\n// with `translate3d(0, 0, 0)`.`\n\nfunction getTranslateValue(props, node) {\n  var direction = props.direction;\n  var rect = node.getBoundingClientRect();\n  var transform;\n\n  if (node.fakeTransform) {\n    transform = node.fakeTransform;\n  } else {\n    var computedStyle = (0, _ownerWindow.default)(node).getComputedStyle(node);\n    transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n  }\n\n  var offsetX = 0;\n  var offsetY = 0;\n\n  if (transform && transform !== 'none' && typeof transform === 'string') {\n    var transformValues = transform.split('(')[1].split(')')[0].split(',');\n    offsetX = parseInt(transformValues[4], 10);\n    offsetY = parseInt(transformValues[5], 10);\n  }\n\n  if (direction === 'left') {\n    return \"translateX(100vw) translateX(-\".concat(rect.left - offsetX, \"px)\");\n  } else if (direction === 'right') {\n    return \"translateX(-\".concat(rect.left + rect.width + GUTTER - offsetX, \"px)\");\n  } else if (direction === 'up') {\n    return \"translateY(100vh) translateY(-\".concat(rect.top - offsetY, \"px)\");\n  } // direction === 'down'\n\n\n  return \"translateY(-\".concat(rect.top + rect.height + GUTTER - offsetY, \"px)\");\n}\n\nfunction setTranslateValue(props, node) {\n  var transform = getTranslateValue(props, node);\n\n  if (transform) {\n    node.style.webkitTransform = transform;\n    node.style.transform = transform;\n  }\n}\n/**\n * The Slide transition is used by the [Snackbar](/demos/snackbars) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\n\nvar Slide =\n/*#__PURE__*/\nfunction (_React$Component) {\n  (0, _inherits2.default)(Slide, _React$Component);\n\n  function Slide() {\n    var _ref;\n\n    var _temp, _this;\n\n    (0, _classCallCheck2.default)(this, Slide);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return (0, _possibleConstructorReturn2.default)(_this, (_temp = _this = (0, _possibleConstructorReturn2.default)(this, (_ref = Slide.__proto__ || (0, _getPrototypeOf.default)(Slide)).call.apply(_ref, [this].concat(args))), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"mounted\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: false\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"transition\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: null\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleResize\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: (0, _debounce.default)(function () {\n        // Skip configuration where the position is screen size invariant.\n        if (_this.props.in || _this.props.direction === 'down' || _this.props.direction === 'right') {\n          return;\n        }\n\n        var node = _reactDom.default.findDOMNode(_this.transition);\n\n        if (node) {\n          setTranslateValue(_this.props, node);\n        }\n      }, 166)\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEnter\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        setTranslateValue(_this.props, node);\n        (0, _utils.reflow)(node);\n\n        if (_this.props.onEnter) {\n          _this.props.onEnter(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleEntering\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var theme = _this.props.theme;\n        var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'enter'\n        });\n        node.style.webkitTransition = theme.transitions.create('-webkit-transform', (0, _objectSpread2.default)({}, transitionProps, {\n          easing: theme.transitions.easing.easeOut\n        }));\n        node.style.transition = theme.transitions.create('transform', (0, _objectSpread2.default)({}, transitionProps, {\n          easing: theme.transitions.easing.easeOut\n        }));\n        node.style.webkitTransform = 'translate(0, 0)';\n        node.style.transform = 'translate(0, 0)';\n\n        if (_this.props.onEntering) {\n          _this.props.onEntering(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExit\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        var theme = _this.props.theme;\n        var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n          mode: 'exit'\n        });\n        node.style.webkitTransition = theme.transitions.create('-webkit-transform', (0, _objectSpread2.default)({}, transitionProps, {\n          easing: theme.transitions.easing.sharp\n        }));\n        node.style.transition = theme.transitions.create('transform', (0, _objectSpread2.default)({}, transitionProps, {\n          easing: theme.transitions.easing.sharp\n        }));\n        setTranslateValue(_this.props, node);\n\n        if (_this.props.onExit) {\n          _this.props.onExit(node);\n        }\n      }\n    }), Object.defineProperty((0, _assertThisInitialized2.default)(_this), \"handleExited\", {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: function value(node) {\n        // No need for transitions when the component is hidden\n        node.style.webkitTransition = '';\n        node.style.transition = '';\n\n        if (_this.props.onExited) {\n          _this.props.onExited(node);\n        }\n      }\n    }), _temp));\n  }\n\n  (0, _createClass2.default)(Slide, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // state.mounted handle SSR, once the component is mounted, we need\n      // to properly hide it.\n      if (!this.props.in) {\n        // We need to set initial translate values of transition element\n        // otherwise component will be shown when in=false.\n        this.updatePosition();\n      }\n\n      this.mounted = true;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.direction !== this.props.direction && !this.props.in) {\n        // We need to update the position of the drawer when the direction change and\n        // when it's hidden.\n        this.updatePosition();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.handleResize.cancel();\n    }\n  }, {\n    key: \"updatePosition\",\n    value: function updatePosition() {\n      var node = _reactDom.default.findDOMNode(this.transition);\n\n      if (node) {\n        node.style.visibility = 'inherit';\n        setTranslateValue(this.props, node);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          children = _props.children,\n          onEnter = _props.onEnter,\n          onEntering = _props.onEntering,\n          onExit = _props.onExit,\n          onExited = _props.onExited,\n          styleProp = _props.style,\n          theme = _props.theme,\n          other = (0, _objectWithoutProperties2.default)(_props, [\"children\", \"onEnter\", \"onEntering\", \"onExit\", \"onExited\", \"style\", \"theme\"]);\n      var style = {}; // We use this state to handle the server-side rendering.\n      // We don't know the width of the children ahead of time.\n      // We need to render it.\n\n      if (!this.props.in && !this.mounted) {\n        style.visibility = 'hidden';\n      }\n\n      style = (0, _objectSpread2.default)({}, style, styleProp, _react.default.isValidElement(children) ? children.props.style : {});\n      return _react.default.createElement(_reactEventListener.default, {\n        target: \"window\",\n        onResize: this.handleResize\n      }, _react.default.createElement(_Transition.default, (0, _extends2.default)({\n        onEnter: this.handleEnter,\n        onEntering: this.handleEntering,\n        onExit: this.handleExit,\n        onExited: this.handleExited,\n        appear: true,\n        style: style,\n        ref: function ref(node) {\n          _this2.transition = node;\n        }\n      }, other), children));\n    }\n  }]);\n  return Slide;\n}(_react.default.Component);\n\nSlide.propTypes =  true ? {\n  /**\n   * A single child content element.\n   */\n  children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),\n\n  /**\n   * Direction the child node will enter from.\n   */\n  direction: _propTypes.default.oneOf(['left', 'right', 'up', 'down']),\n\n  /**\n   * If `true`, show the component; triggers the enter or exit animation.\n   */\n  in: _propTypes.default.bool,\n\n  /**\n   * @ignore\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * @ignore\n   */\n  style: _propTypes.default.object,\n\n  /**\n   * @ignore\n   */\n  theme: _propTypes.default.object.isRequired,\n\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n    enter: _propTypes.default.number,\n    exit: _propTypes.default.number\n  })])\n} : undefined;\nSlide.defaultProps = {\n  direction: 'down',\n  timeout: {\n    enter: _transitions.duration.enteringScreen,\n    exit: _transitions.duration.leavingScreen\n  }\n};\n\nvar _default = (0, _withTheme.default)()((0, _reactLifecyclesCompat.polyfill)(Slide));\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/transitions/Slide.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/transitions/utils.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/transitions/utils.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getTransitionProps = getTransitionProps;\nexports.reflow = void 0;\n\nvar reflow = function reflow(node) {\n  return node.scrollTop;\n};\n\nexports.reflow = reflow;\n\nfunction getTransitionProps(props, options) {\n  var timeout = props.timeout,\n      _props$style = props.style,\n      style = _props$style === void 0 ? {} : _props$style;\n  return {\n    duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode],\n    delay: style.transitionDelay\n  };\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/transitions/utils.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/utils/exactProp.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/material-ui/utils/exactProp.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exactProp;\nexports.specialProperty = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectSpread */ \"./node_modules/@babel/runtime/helpers/objectSpread.js\"));\n\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\nvar specialProperty = \"exact-prop: \\u200B\";\nexports.specialProperty = specialProperty;\n\nfunction exactProp(propTypes, componentNameInError) {\n  return (0, _objectSpread3.default)({}, propTypes, (0, _defineProperty2.default)({}, specialProperty, function (props) {\n    var unknownProps = (0, _keys.default)(props).filter(function (prop) {\n      return !propTypes.hasOwnProperty(prop);\n    });\n\n    if (unknownProps.length > 0) {\n      return new TypeError(\"\".concat(componentNameInError, \": unknown props found: \").concat(unknownProps.join(', '), \". Please remove the unknown properties.\"));\n    }\n\n    return null;\n  }));\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/utils/exactProp.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/utils/focusVisible.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/utils/focusVisible.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.detectFocusVisible = detectFocusVisible;\nexports.listenForFocusKeys = listenForFocusKeys;\n\nvar _keycode = _interopRequireDefault(__webpack_require__(/*! keycode */ \"./node_modules/keycode/index.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\nvar _contains = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/contains */ \"./node_modules/dom-helpers/query/contains.js\"));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\n//  weak\nvar internal = {\n  focusKeyPressed: false,\n  keyUpEventTimeout: -1\n};\n\nfunction detectFocusVisible(instance, element, callback) {\n  var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n   true ? (0, _warning.default)(instance.focusVisibleCheckTime, 'Material-UI: missing instance.focusVisibleCheckTime') : undefined;\n   true ? (0, _warning.default)(instance.focusVisibleMaxCheckTimes, 'Material-UI: missing instance.focusVisibleMaxCheckTimes') : undefined;\n  instance.focusVisibleTimeout = setTimeout(function () {\n    var doc = (0, _ownerDocument.default)(element);\n\n    if (internal.focusKeyPressed && (doc.activeElement === element || (0, _contains.default)(element, doc.activeElement))) {\n      callback();\n    } else if (attempt < instance.focusVisibleMaxCheckTimes) {\n      detectFocusVisible(instance, element, callback, attempt + 1);\n    }\n  }, instance.focusVisibleCheckTime);\n}\n\nvar FOCUS_KEYS = ['tab', 'enter', 'space', 'esc', 'up', 'down', 'left', 'right'];\n\nfunction isFocusKey(event) {\n  return FOCUS_KEYS.indexOf((0, _keycode.default)(event)) !== -1;\n}\n\nvar handleKeyUpEvent = function handleKeyUpEvent(event) {\n  if (isFocusKey(event)) {\n    internal.focusKeyPressed = true; // Let's consider that the user is using a keyboard during a window frame of 1s.\n\n    clearTimeout(internal.keyUpEventTimeout);\n    internal.keyUpEventTimeout = setTimeout(function () {\n      internal.focusKeyPressed = false;\n    }, 1e3);\n  }\n};\n\nfunction listenForFocusKeys(win) {\n  // The event listener will only be added once per window.\n  // Duplicate event listeners will be ignored by addEventListener.\n  // Also, this logic is client side only, we don't need a teardown.\n  win.addEventListener('keyup', handleKeyUpEvent);\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/utils/focusVisible.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/utils/helpers.js":
+/*!***************************************************!*\
+  !*** ./node_modules/material-ui/utils/helpers.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.capitalize = capitalize;\nexports.contains = contains;\nexports.findIndex = findIndex;\nexports.find = find;\nexports.createChainedFunction = createChainedFunction;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/core-js/object/keys */ \"./node_modules/@babel/runtime/core-js/object/keys.js\"));\n\nvar _warning = _interopRequireDefault(__webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\"));\n\n//  weak\nfunction capitalize(string) {\n  if (\"development\" !== 'production' && typeof string !== 'string') {\n    throw new Error('Material-UI: capitalize(string) expects a string argument.');\n  }\n\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nfunction contains(obj, pred) {\n  return (0, _keys.default)(pred).every(function (key) {\n    return obj.hasOwnProperty(key) && obj[key] === pred[key];\n  });\n}\n\nfunction findIndex(arr, pred) {\n  var predType = (0, _typeof2.default)(pred);\n\n  for (var i = 0; i < arr.length; i += 1) {\n    if (predType === 'function' && !!pred(arr[i], i, arr) === true) {\n      return i;\n    }\n\n    if (predType === 'object' && contains(arr[i], pred)) {\n      return i;\n    }\n\n    if (['string', 'number', 'boolean'].indexOf(predType) !== -1) {\n      return arr.indexOf(pred);\n    }\n  }\n\n  return -1;\n}\n\nfunction find(arr, pred) {\n  var index = findIndex(arr, pred);\n  return index > -1 ? arr[index] : undefined;\n}\n/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\n\n\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (func) {\n    return func != null;\n  }).reduce(function (acc, func) {\n     true ? (0, _warning.default)(typeof func === 'function', 'Material-UI: invalid Argument Type, must only provide functions, undefined, or null.') : undefined;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, function () {});\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/utils/helpers.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/utils/ownerWindow.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/material-ui/utils/ownerWindow.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(/*! dom-helpers/ownerDocument */ \"./node_modules/dom-helpers/ownerDocument.js\"));\n\nvar ownerWindow = function ownerWindow(node) {\n  var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n  var doc = (0, _ownerDocument.default)(node);\n  return doc.defaultView || doc.parentView || fallback;\n};\n\nvar _default = ownerWindow;\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/material-ui/utils/ownerWindow.js?");
+
+/***/ }),
+
+/***/ "./node_modules/material-ui/utils/reactHelpers.js":
+/*!********************************************************!*\
+  !*** ./node_modules/material-ui/utils/reactHelpers.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.cloneElementWithClassName = cloneElementWithClassName;\nexports.cloneChildrenWithClassName = cloneChildrenWithClassName;\nexports.isMuiElement = isMuiElement;\nexports.isMuiComponent = isMuiComponent;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\"));\n\n/* eslint-disable import/prefer-default-export */\nfunction cloneElementWithClassName(child, className) {\n  return _react.default.cloneElement(child, {\n    className: (0, _classnames.default)(child.props.className, className)\n  });\n}\n\nfunction cloneChildrenWithClassName(children, className) {\n  return _react.default.Children.map(children, function (child) {\n    return _react.default.isValidElement(child) && cloneElementWithClassName(child, className);\n  });\n}\n\nfunction isMuiElement(element, muiNames) {\n  return _react.default.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}\n\nfunction isMuiComponent(element, muiNames) {\n  return muiNames.indexOf(element.muiName) !== -1;\n}\n\n//# sourceURL=webpack:///./node_modules/material-ui/utils/reactHelpers.js?");
+
+/***/ }),
+
+/***/ "./node_modules/node-libs-browser/node_modules/process/browser.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/node-libs-browser/node_modules/process/browser.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack:///./node_modules/node-libs-browser/node_modules/process/browser.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object-assign/index.js":
+/*!*********************************************!*\
+  !*** ./node_modules/object-assign/index.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack:///./node_modules/object-assign/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/checkPropTypes.js":
+/*!***************************************************!*\
+  !*** ./node_modules/prop-types/checkPropTypes.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  var invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\n  var warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\n  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n  var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (true) {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/checkPropTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
+/*!************************************************************!*\
+  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
+  \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (true) {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          invariant(\n            false,\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n        } else if (\"development\" !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            warning(\n              false,\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `%s` prop on `%s`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n              propFullName,\n              componentName\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n       true ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : undefined;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n       true ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : undefined;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        warning(\n          false,\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received %s at index %s.',\n          getPostfixForTypeWarning(checker),\n          i\n        );\n        return emptyFunction.thatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/prop-types/index.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(isValidElement, throwOnDirectAccess);\n} else {}\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-dom/cjs/react-dom.development.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/react-dom/cjs/react-dom.development.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/** @license React v16.3.2\n * react-dom.development.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\nvar ExecutionEnvironment = __webpack_require__(/*! fbjs/lib/ExecutionEnvironment */ \"./node_modules/fbjs/lib/ExecutionEnvironment.js\");\nvar _assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\nvar checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\nvar getActiveElement = __webpack_require__(/*! fbjs/lib/getActiveElement */ \"./node_modules/fbjs/lib/getActiveElement.js\");\nvar shallowEqual = __webpack_require__(/*! fbjs/lib/shallowEqual */ \"./node_modules/fbjs/lib/shallowEqual.js\");\nvar containsNode = __webpack_require__(/*! fbjs/lib/containsNode */ \"./node_modules/fbjs/lib/containsNode.js\");\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ \"./node_modules/fbjs/lib/emptyObject.js\");\nvar hyphenateStyleName = __webpack_require__(/*! fbjs/lib/hyphenateStyleName */ \"./node_modules/fbjs/lib/hyphenateStyleName.js\");\nvar camelizeStyleName = __webpack_require__(/*! fbjs/lib/camelizeStyleName */ \"./node_modules/fbjs/lib/camelizeStyleName.js\");\n\n// Relying on the `invariant()` implementation lets us\n// have preserve the format and params in the www builds.\n\n!React ? invariant(false, 'ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.') : void 0;\n\nvar invokeGuardedCallback = function (name, func, context, a, b, c, d, e, f) {\n  this._hasCaughtError = false;\n  this._caughtError = null;\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this._caughtError = error;\n    this._hasCaughtError = true;\n  }\n};\n\n{\n  // In DEV mode, we swap out invokeGuardedCallback for a special version\n  // that plays more nicely with the browser's DevTools. The idea is to preserve\n  // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n  // functions in invokeGuardedCallback, and the production version of\n  // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n  // like caught exceptions, and the DevTools won't pause unless the developer\n  // takes the extra step of enabling pause on caught exceptions. This is\n  // untintuitive, though, because even though React has caught the error, from\n  // the developer's perspective, the error is uncaught.\n  //\n  // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n  // DOM node, and call the user-provided callback from inside an event handler\n  // for that fake event. If the callback throws, the error is \"captured\" using\n  // a global event handler. But because the error happens in a different\n  // event loop context, it does not interrupt the normal program flow.\n  // Effectively, this gives us try-catch behavior without actually using\n  // try-catch. Neat!\n\n  // Check that the browser supports the APIs we need to implement our special\n  // DEV version of invokeGuardedCallback\n  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n    var fakeNode = document.createElement('react');\n\n    var invokeGuardedCallbackDev = function (name, func, context, a, b, c, d, e, f) {\n      // If document doesn't exist we know for sure we will crash in this method\n      // when we call document.createEvent(). However this can cause confusing\n      // errors: https://github.com/facebookincubator/create-react-app/issues/3482\n      // So we preemptively throw with a better message instead.\n      !(typeof document !== 'undefined') ? invariant(false, 'The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.') : void 0;\n      var evt = document.createEvent('Event');\n\n      // Keeps track of whether the user-provided callback threw an error. We\n      // set this to true at the beginning, then set it to false right after\n      // calling the function. If the function errors, `didError` will never be\n      // set to false. This strategy works even if the browser is flaky and\n      // fails to call our global error handler, because it doesn't rely on\n      // the error event at all.\n      var didError = true;\n\n      // Create an event handler for our fake event. We will synchronously\n      // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n      // call the user-provided callback.\n      var funcArgs = Array.prototype.slice.call(arguments, 3);\n      function callCallback() {\n        // We immediately remove the callback from event listeners so that\n        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n        // nested call would trigger the fake event handlers of any call higher\n        // in the stack.\n        fakeNode.removeEventListener(evtType, callCallback, false);\n        func.apply(context, funcArgs);\n        didError = false;\n      }\n\n      // Create a global error event handler. We use this to capture the value\n      // that was thrown. It's possible that this error handler will fire more\n      // than once; for example, if non-React code also calls `dispatchEvent`\n      // and a handler for that event throws. We should be resilient to most of\n      // those cases. Even if our error event handler fires more than once, the\n      // last error event is always used. If the callback actually does error,\n      // we know that the last error event is the correct one, because it's not\n      // possible for anything else to have happened in between our callback\n      // erroring and the code that follows the `dispatchEvent` call below. If\n      // the callback doesn't error, but the error event was fired, we know to\n      // ignore it because `didError` will be false, as described above.\n      var error = void 0;\n      // Use this to track whether the error event is ever called.\n      var didSetError = false;\n      var isCrossOriginError = false;\n\n      function onError(event) {\n        error = event.error;\n        didSetError = true;\n        if (error === null && event.colno === 0 && event.lineno === 0) {\n          isCrossOriginError = true;\n        }\n      }\n\n      // Create a fake event type.\n      var evtType = 'react-' + (name ? name : 'invokeguardedcallback');\n\n      // Attach our event handlers\n      window.addEventListener('error', onError);\n      fakeNode.addEventListener(evtType, callCallback, false);\n\n      // Synchronously dispatch our fake event. If the user-provided function\n      // errors, it will trigger our global error handler.\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n\n      if (didError) {\n        if (!didSetError) {\n          // The callback errored, but the error event never fired.\n          error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n        } else if (isCrossOriginError) {\n          error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://fb.me/react-crossorigin-error for more information.');\n        }\n        this._hasCaughtError = true;\n        this._caughtError = error;\n      } else {\n        this._hasCaughtError = false;\n        this._caughtError = null;\n      }\n\n      // Remove our event listeners\n      window.removeEventListener('error', onError);\n    };\n\n    invokeGuardedCallback = invokeGuardedCallbackDev;\n  }\n}\n\nvar invokeGuardedCallback$1 = invokeGuardedCallback;\n\nvar ReactErrorUtils = {\n  // Used by Fiber to simulate a try-catch.\n  _caughtError: null,\n  _hasCaughtError: false,\n\n  // Used by event system to capture/rethrow the first error.\n  _rethrowError: null,\n  _hasRethrowError: false,\n\n  /**\n   * Call a function while guarding against errors that happens within it.\n   * Returns an error if it throws, otherwise null.\n   *\n   * In production, this is implemented using a try-catch. The reason we don't\n   * use a try-catch directly is so that we can swap out a different\n   * implementation in DEV mode.\n   *\n   * @param {String} name of the guard to use for logging or debugging\n   * @param {Function} func The function to invoke\n   * @param {*} context The context to use when calling the function\n   * @param {...*} args Arguments for function\n   */\n  invokeGuardedCallback: function (name, func, context, a, b, c, d, e, f) {\n    invokeGuardedCallback$1.apply(ReactErrorUtils, arguments);\n  },\n\n  /**\n   * Same as invokeGuardedCallback, but instead of returning an error, it stores\n   * it in a global so it can be rethrown by `rethrowCaughtError` later.\n   * TODO: See if _caughtError and _rethrowError can be unified.\n   *\n   * @param {String} name of the guard to use for logging or debugging\n   * @param {Function} func The function to invoke\n   * @param {*} context The context to use when calling the function\n   * @param {...*} args Arguments for function\n   */\n  invokeGuardedCallbackAndCatchFirstError: function (name, func, context, a, b, c, d, e, f) {\n    ReactErrorUtils.invokeGuardedCallback.apply(this, arguments);\n    if (ReactErrorUtils.hasCaughtError()) {\n      var error = ReactErrorUtils.clearCaughtError();\n      if (!ReactErrorUtils._hasRethrowError) {\n        ReactErrorUtils._hasRethrowError = true;\n        ReactErrorUtils._rethrowError = error;\n      }\n    }\n  },\n\n  /**\n   * During execution of guarded functions we will capture the first error which\n   * we will rethrow to be handled by the top level error handler.\n   */\n  rethrowCaughtError: function () {\n    return rethrowCaughtError.apply(ReactErrorUtils, arguments);\n  },\n\n  hasCaughtError: function () {\n    return ReactErrorUtils._hasCaughtError;\n  },\n\n  clearCaughtError: function () {\n    if (ReactErrorUtils._hasCaughtError) {\n      var error = ReactErrorUtils._caughtError;\n      ReactErrorUtils._caughtError = null;\n      ReactErrorUtils._hasCaughtError = false;\n      return error;\n    } else {\n      invariant(false, 'clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n};\n\nvar rethrowCaughtError = function () {\n  if (ReactErrorUtils._hasRethrowError) {\n    var error = ReactErrorUtils._rethrowError;\n    ReactErrorUtils._rethrowError = null;\n    ReactErrorUtils._hasRethrowError = false;\n    throw error;\n  }\n};\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n  if (!eventPluginOrder) {\n    // Wait until an `eventPluginOrder` is injected.\n    return;\n  }\n  for (var pluginName in namesToPlugins) {\n    var pluginModule = namesToPlugins[pluginName];\n    var pluginIndex = eventPluginOrder.indexOf(pluginName);\n    !(pluginIndex > -1) ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : void 0;\n    if (plugins[pluginIndex]) {\n      continue;\n    }\n    !pluginModule.extractEvents ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : void 0;\n    plugins[pluginIndex] = pluginModule;\n    var publishedEvents = pluginModule.eventTypes;\n    for (var eventName in publishedEvents) {\n      !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : void 0;\n    }\n  }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n  !!eventNameDispatchConfigs.hasOwnProperty(eventName) ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : void 0;\n  eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n  if (phasedRegistrationNames) {\n    for (var phaseName in phasedRegistrationNames) {\n      if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n        var phasedRegistrationName = phasedRegistrationNames[phaseName];\n        publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n      }\n    }\n    return true;\n  } else if (dispatchConfig.registrationName) {\n    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n  !!registrationNameModules[registrationName] ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : void 0;\n  registrationNameModules[registrationName] = pluginModule;\n  registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n  {\n    var lowerCasedName = registrationName.toLowerCase();\n    possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === 'onDoubleClick') {\n      possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\n\n/**\n * Ordered list of injected plugins.\n */\nvar plugins = [];\n\n/**\n * Mapping from event name to dispatch config\n */\nvar eventNameDispatchConfigs = {};\n\n/**\n * Mapping from registration name to plugin module\n */\nvar registrationNameModules = {};\n\n/**\n * Mapping from registration name to event name\n */\nvar registrationNameDependencies = {};\n\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\nvar possibleRegistrationNames = {};\n// Trust the developer to only use possibleRegistrationNames in true\n\n/**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\nfunction injectEventPluginOrder(injectedEventPluginOrder) {\n  !!eventPluginOrder ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : void 0;\n  // Clone the ordering so it cannot be dynamically mutated.\n  eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n  recomputePluginOrdering();\n}\n\n/**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\nfunction injectEventPluginsByName(injectedNamesToPlugins) {\n  var isOrderingDirty = false;\n  for (var pluginName in injectedNamesToPlugins) {\n    if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n      continue;\n    }\n    var pluginModule = injectedNamesToPlugins[pluginName];\n    if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n      !!namesToPlugins[pluginName] ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : void 0;\n      namesToPlugins[pluginName] = pluginModule;\n      isOrderingDirty = true;\n    }\n  }\n  if (isOrderingDirty) {\n    recomputePluginOrdering();\n  }\n}\n\nvar EventPluginRegistry = Object.freeze({\n\tplugins: plugins,\n\teventNameDispatchConfigs: eventNameDispatchConfigs,\n\tregistrationNameModules: registrationNameModules,\n\tregistrationNameDependencies: registrationNameDependencies,\n\tpossibleRegistrationNames: possibleRegistrationNames,\n\tinjectEventPluginOrder: injectEventPluginOrder,\n\tinjectEventPluginsByName: injectEventPluginsByName\n});\n\nvar getFiberCurrentPropsFromNode = null;\nvar getInstanceFromNode = null;\nvar getNodeFromInstance = null;\n\nvar injection$1 = {\n  injectComponentTree: function (Injected) {\n    getFiberCurrentPropsFromNode = Injected.getFiberCurrentPropsFromNode;\n    getInstanceFromNode = Injected.getInstanceFromNode;\n    getNodeFromInstance = Injected.getNodeFromInstance;\n\n    {\n      !(getNodeFromInstance && getInstanceFromNode) ? warning(false, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n    }\n  }\n};\n\n\n\n\n\n\nvar validateEventDispatches = void 0;\n{\n  validateEventDispatches = function (event) {\n    var dispatchListeners = event._dispatchListeners;\n    var dispatchInstances = event._dispatchInstances;\n\n    var listenersIsArr = Array.isArray(dispatchListeners);\n    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n    var instancesIsArr = Array.isArray(dispatchInstances);\n    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n    !(instancesIsArr === listenersIsArr && instancesLen === listenersLen) ? warning(false, 'EventPluginUtils: Invalid `event`.') : void 0;\n  };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n  var type = event.type || 'unknown-event';\n  event.currentTarget = getNodeFromInstance(inst);\n  ReactErrorUtils.invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n  event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n  var dispatchListeners = event._dispatchListeners;\n  var dispatchInstances = event._dispatchInstances;\n  {\n    validateEventDispatches(event);\n  }\n  if (Array.isArray(dispatchListeners)) {\n    for (var i = 0; i < dispatchListeners.length; i++) {\n      if (event.isPropagationStopped()) {\n        break;\n      }\n      // Listeners and Instances are two parallel arrays that are always in sync.\n      executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n    }\n  } else if (dispatchListeners) {\n    executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n  }\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\n\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\n\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n  !(next != null) ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : void 0;\n\n  if (current == null) {\n    return next;\n  }\n\n  // Both are not empty. Warning: Never call x.concat(y) when you are not\n  // certain that x is an Array (x could be a string with concat method).\n  if (Array.isArray(current)) {\n    if (Array.isArray(next)) {\n      current.push.apply(current, next);\n      return current;\n    }\n    current.push(next);\n    return current;\n  }\n\n  if (Array.isArray(next)) {\n    // A bit too dangerous to mutate `next`.\n    return [current].concat(next);\n  }\n\n  return [current, next];\n}\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n * @param {function} cb Callback invoked with each element or a collection.\n * @param {?} [scope] Scope used as `this` in a callback.\n */\nfunction forEachAccumulated(arr, cb, scope) {\n  if (Array.isArray(arr)) {\n    arr.forEach(cb, scope);\n  } else if (arr) {\n    cb.call(scope, arr);\n  }\n}\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n  if (event) {\n    executeDispatchesInOrder(event, simulated);\n\n    if (!event.isPersistent()) {\n      event.constructor.release(event);\n    }\n  }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n  return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n  return executeDispatchesAndRelease(e, false);\n};\n\nfunction isInteractive(tag) {\n  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case 'onClick':\n    case 'onClickCapture':\n    case 'onDoubleClick':\n    case 'onDoubleClickCapture':\n    case 'onMouseDown':\n    case 'onMouseDownCapture':\n    case 'onMouseMove':\n    case 'onMouseMoveCapture':\n    case 'onMouseUp':\n    case 'onMouseUpCapture':\n      return !!(props.disabled && isInteractive(type));\n    default:\n      return false;\n  }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n *   `extractEvents` {function(string, DOMEventTarget, string, object): *}\n *     Required. When a top-level event is fired, this method is expected to\n *     extract synthetic events that will in turn be queued and dispatched.\n *\n *   `eventTypes` {object}\n *     Optional, plugins that fire events must publish a mapping of registration\n *     names that are used to register listeners. Values of this mapping must\n *     be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n *   `executeDispatch` {function(object, function, string)}\n *     Optional, allows plugins to override how an event gets dispatched. By\n *     default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\n\n/**\n * Methods for injecting dependencies.\n */\nvar injection = {\n  /**\n   * @param {array} InjectedEventPluginOrder\n   * @public\n   */\n  injectEventPluginOrder: injectEventPluginOrder,\n\n  /**\n   * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n   */\n  injectEventPluginsByName: injectEventPluginsByName\n};\n\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\nfunction getListener(inst, registrationName) {\n  var listener = void 0;\n\n  // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n  // live here; needs to be moved to a better place soon\n  var stateNode = inst.stateNode;\n  if (!stateNode) {\n    // Work in progress (ex: onload events in incremental mode).\n    return null;\n  }\n  var props = getFiberCurrentPropsFromNode(stateNode);\n  if (!props) {\n    // Work in progress.\n    return null;\n  }\n  listener = props[registrationName];\n  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n    return null;\n  }\n  !(!listener || typeof listener === 'function') ? invariant(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener) : void 0;\n  return listener;\n}\n\n/**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\nfunction extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var events = null;\n  for (var i = 0; i < plugins.length; i++) {\n    // Not every plugin in the ordering may be loaded at runtime.\n    var possiblePlugin = plugins[i];\n    if (possiblePlugin) {\n      var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n      if (extractedEvents) {\n        events = accumulateInto(events, extractedEvents);\n      }\n    }\n  }\n  return events;\n}\n\nfunction runEventsInBatch(events, simulated) {\n  if (events !== null) {\n    eventQueue = accumulateInto(eventQueue, events);\n  }\n\n  // Set `eventQueue` to null before processing it so that we can tell if more\n  // events get enqueued while processing.\n  var processingEventQueue = eventQueue;\n  eventQueue = null;\n\n  if (!processingEventQueue) {\n    return;\n  }\n\n  if (simulated) {\n    forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n  } else {\n    forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n  }\n  !!eventQueue ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : void 0;\n  // This would be a good time to rethrow if any of the event handlers threw.\n  ReactErrorUtils.rethrowCaughtError();\n}\n\nfunction runExtractedEventsInBatch(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var events = extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n  runEventsInBatch(events, false);\n}\n\nvar EventPluginHub = Object.freeze({\n\tinjection: injection,\n\tgetListener: getListener,\n\trunEventsInBatch: runEventsInBatch,\n\trunExtractedEventsInBatch: runExtractedEventsInBatch\n});\n\nvar IndeterminateComponent = 0; // Before we know whether it is functional or class\nvar FunctionalComponent = 1;\nvar ClassComponent = 2;\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\nvar HostComponent = 5;\nvar HostText = 6;\nvar CallComponent = 7;\nvar CallHandlerPhase = 8;\nvar ReturnComponent = 9;\nvar Fragment = 10;\nvar Mode = 11;\nvar ContextConsumer = 12;\nvar ContextProvider = 13;\nvar ForwardRef = 14;\n\nvar randomKey = Math.random().toString(36).slice(2);\nvar internalInstanceKey = '__reactInternalInstance$' + randomKey;\nvar internalEventHandlersKey = '__reactEventHandlers$' + randomKey;\n\nfunction precacheFiberNode$1(hostInst, node) {\n  node[internalInstanceKey] = hostInst;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n  if (node[internalInstanceKey]) {\n    return node[internalInstanceKey];\n  }\n\n  while (!node[internalInstanceKey]) {\n    if (node.parentNode) {\n      node = node.parentNode;\n    } else {\n      // Top of the tree. This node must not be part of a React tree (or is\n      // unmounted, potentially).\n      return null;\n    }\n  }\n\n  var inst = node[internalInstanceKey];\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber, this will always be the deepest root.\n    return inst;\n  }\n\n  return null;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode$1(node) {\n  var inst = node[internalInstanceKey];\n  if (inst) {\n    if (inst.tag === HostComponent || inst.tag === HostText) {\n      return inst;\n    } else {\n      return null;\n    }\n  }\n  return null;\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance$1(inst) {\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber this, is just the state node right now. We assume it will be\n    // a host component or host text.\n    return inst.stateNode;\n  }\n\n  // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n  invariant(false, 'getNodeFromInstance: Invalid argument.');\n}\n\nfunction getFiberCurrentPropsFromNode$1(node) {\n  return node[internalEventHandlersKey] || null;\n}\n\nfunction updateFiberProps$1(node, props) {\n  node[internalEventHandlersKey] = props;\n}\n\nvar ReactDOMComponentTree = Object.freeze({\n\tprecacheFiberNode: precacheFiberNode$1,\n\tgetClosestInstanceFromNode: getClosestInstanceFromNode,\n\tgetInstanceFromNode: getInstanceFromNode$1,\n\tgetNodeFromInstance: getNodeFromInstance$1,\n\tgetFiberCurrentPropsFromNode: getFiberCurrentPropsFromNode$1,\n\tupdateFiberProps: updateFiberProps$1\n});\n\nfunction getParent(inst) {\n  do {\n    inst = inst['return'];\n    // TODO: If this is a HostRoot we might want to bail out.\n    // That is depending on if we want nested subtrees (layers) to bubble\n    // events to their parent. We could also go through parentNode on the\n    // host node but that wouldn't work for React Native and doesn't let us\n    // do the portal feature.\n  } while (inst && inst.tag !== HostComponent);\n  if (inst) {\n    return inst;\n  }\n  return null;\n}\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n  var depthA = 0;\n  for (var tempA = instA; tempA; tempA = getParent(tempA)) {\n    depthA++;\n  }\n  var depthB = 0;\n  for (var tempB = instB; tempB; tempB = getParent(tempB)) {\n    depthB++;\n  }\n\n  // If A is deeper, crawl up.\n  while (depthA - depthB > 0) {\n    instA = getParent(instA);\n    depthA--;\n  }\n\n  // If B is deeper, crawl up.\n  while (depthB - depthA > 0) {\n    instB = getParent(instB);\n    depthB--;\n  }\n\n  // Walk in lockstep until we find a match.\n  var depth = depthA;\n  while (depth--) {\n    if (instA === instB || instA === instB.alternate) {\n      return instA;\n    }\n    instA = getParent(instA);\n    instB = getParent(instB);\n  }\n  return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\n\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n  return getParent(inst);\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n  var path = [];\n  while (inst) {\n    path.push(inst);\n    inst = getParent(inst);\n  }\n  var i = void 0;\n  for (i = path.length; i-- > 0;) {\n    fn(path[i], 'captured', arg);\n  }\n  for (i = 0; i < path.length; i++) {\n    fn(path[i], 'bubbled', arg);\n  }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n  var common = from && to ? getLowestCommonAncestor(from, to) : null;\n  var pathFrom = [];\n  while (true) {\n    if (!from) {\n      break;\n    }\n    if (from === common) {\n      break;\n    }\n    var alternate = from.alternate;\n    if (alternate !== null && alternate === common) {\n      break;\n    }\n    pathFrom.push(from);\n    from = getParent(from);\n  }\n  var pathTo = [];\n  while (true) {\n    if (!to) {\n      break;\n    }\n    if (to === common) {\n      break;\n    }\n    var _alternate = to.alternate;\n    if (_alternate !== null && _alternate === common) {\n      break;\n    }\n    pathTo.push(to);\n    to = getParent(to);\n  }\n  for (var i = 0; i < pathFrom.length; i++) {\n    fn(pathFrom[i], 'bubbled', argFrom);\n  }\n  for (var _i = pathTo.length; _i-- > 0;) {\n    fn(pathTo[_i], 'captured', argTo);\n  }\n}\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n  return getListener(inst, registrationName);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing even a\n * single one.\n */\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  {\n    !inst ? warning(false, 'Dispatching inst must not be null') : void 0;\n  }\n  var listener = listenerAtPhase(inst, event, phase);\n  if (listener) {\n    event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n    event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n  }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory.  We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    var parentInst = targetInst ? getParentInstance(targetInst) : null;\n    traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n  if (inst && event && event.dispatchConfig.registrationName) {\n    var registrationName = event.dispatchConfig.registrationName;\n    var listener = getListener(inst, registrationName);\n    if (listener) {\n      event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n      event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n    }\n  }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    accumulateDispatches(event._targetInst, null, event);\n  }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n  traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n  forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\nvar EventPropagators = Object.freeze({\n\taccumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n\taccumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n\taccumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches,\n\taccumulateDirectDispatches: accumulateDirectDispatches\n});\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n  if (!contentKey && ExecutionEnvironment.canUseDOM) {\n    // Prefer textContent to innerText because many browsers support both but\n    // SVG <text> elements don't support innerText even when <div> does.\n    contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n  }\n  return contentKey;\n}\n\n/**\n * This helper object stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nvar compositionState = {\n  _root: null,\n  _startText: null,\n  _fallbackText: null\n};\n\nfunction initialize(nativeEventTarget) {\n  compositionState._root = nativeEventTarget;\n  compositionState._startText = getText();\n  return true;\n}\n\nfunction reset() {\n  compositionState._root = null;\n  compositionState._startText = null;\n  compositionState._fallbackText = null;\n}\n\nfunction getData() {\n  if (compositionState._fallbackText) {\n    return compositionState._fallbackText;\n  }\n\n  var start = void 0;\n  var startValue = compositionState._startText;\n  var startLength = startValue.length;\n  var end = void 0;\n  var endValue = getText();\n  var endLength = endValue.length;\n\n  for (start = 0; start < startLength; start++) {\n    if (startValue[start] !== endValue[start]) {\n      break;\n    }\n  }\n\n  var minEnd = startLength - start;\n  for (end = 1; end <= minEnd; end++) {\n    if (startValue[startLength - end] !== endValue[endLength - end]) {\n      break;\n    }\n  }\n\n  var sliceTail = end > 1 ? 1 - end : undefined;\n  compositionState._fallbackText = endValue.slice(start, sliceTail);\n  return compositionState._fallbackText;\n}\n\nfunction getText() {\n  if ('value' in compositionState._root) {\n    return compositionState._root.value;\n  }\n  return compositionState._root[getTextContentAccessor()];\n}\n\n/* eslint valid-typeof: 0 */\n\nvar didWarnForAddedNewProperty = false;\nvar EVENT_POOL_SIZE = 10;\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n  type: null,\n  target: null,\n  // currentTarget is set when dispatching; no use in copying it here\n  currentTarget: emptyFunction.thatReturnsNull,\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n  {\n    // these have a getter/setter for warnings\n    delete this.nativeEvent;\n    delete this.preventDefault;\n    delete this.stopPropagation;\n  }\n\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n\n  var Interface = this.constructor.Interface;\n  for (var propName in Interface) {\n    if (!Interface.hasOwnProperty(propName)) {\n      continue;\n    }\n    {\n      delete this[propName]; // this has a getter/setter for warnings\n    }\n    var normalize = Interface[propName];\n    if (normalize) {\n      this[propName] = normalize(nativeEvent);\n    } else {\n      if (propName === 'target') {\n        this.target = nativeEventTarget;\n      } else {\n        this[propName] = nativeEvent[propName];\n      }\n    }\n  }\n\n  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n  if (defaultPrevented) {\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  } else {\n    this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n  }\n  this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n  return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n  preventDefault: function () {\n    this.defaultPrevented = true;\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.preventDefault) {\n      event.preventDefault();\n    } else if (typeof event.returnValue !== 'unknown') {\n      event.returnValue = false;\n    }\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  },\n\n  stopPropagation: function () {\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.stopPropagation) {\n      event.stopPropagation();\n    } else if (typeof event.cancelBubble !== 'unknown') {\n      // The ChangeEventPlugin registers a \"propertychange\" event for\n      // IE. This event does not support bubbling or cancelling, and\n      // any references to cancelBubble throw \"Member not found\".  A\n      // typeof check of \"unknown\" circumvents this issue (and is also\n      // IE specific).\n      event.cancelBubble = true;\n    }\n\n    this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * We release all dispatched `SyntheticEvent`s after each event loop, adding\n   * them back into the pool. This allows a way to hold onto a reference that\n   * won't be added back into the pool.\n   */\n  persist: function () {\n    this.isPersistent = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * Checks if this event should be released back into the pool.\n   *\n   * @return {boolean} True if this should not be released, false otherwise.\n   */\n  isPersistent: emptyFunction.thatReturnsFalse,\n\n  /**\n   * `PooledClass` looks for `destructor` on each instance it releases.\n   */\n  destructor: function () {\n    var Interface = this.constructor.Interface;\n    for (var propName in Interface) {\n      {\n        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n      }\n    }\n    for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n      this[shouldBeReleasedProperties[i]] = null;\n    }\n    {\n      Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n      Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n      Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n    }\n  }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n */\nSyntheticEvent.extend = function (Interface) {\n  var Super = this;\n\n  var E = function () {};\n  E.prototype = Super.prototype;\n  var prototype = new E();\n\n  function Class() {\n    return Super.apply(this, arguments);\n  }\n  _assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n\n  Class.Interface = _assign({}, Super.Interface, Interface);\n  Class.extend = Super.extend;\n  addEventPoolingTo(Class);\n\n  return Class;\n};\n\n/** Proxying after everything set on SyntheticEvent\n * to resolve Proxy issue on some WebKit browsers\n * in which some Event properties are set to undefined (GH#10010)\n */\n{\n  var isProxySupported = typeof Proxy === 'function' &&\n  // https://github.com/facebook/react/issues/12011\n  !Object.isSealed(new Proxy({}, {}));\n\n  if (isProxySupported) {\n    /*eslint-disable no-func-assign */\n    SyntheticEvent = new Proxy(SyntheticEvent, {\n      construct: function (target, args) {\n        return this.apply(target, Object.create(target.prototype), args);\n      },\n      apply: function (constructor, that, args) {\n        return new Proxy(constructor.apply(that, args), {\n          set: function (target, prop, value) {\n            if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n              !(didWarnForAddedNewProperty || target.isPersistent()) ? warning(false, \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n              didWarnForAddedNewProperty = true;\n            }\n            target[prop] = value;\n            return true;\n          }\n        });\n      }\n    });\n    /*eslint-enable no-func-assign */\n  }\n}\n\naddEventPoolingTo(SyntheticEvent);\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {String} propName\n * @param {?object} getVal\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n  var isFunction = typeof getVal === 'function';\n  return {\n    configurable: true,\n    set: set,\n    get: get\n  };\n\n  function set(val) {\n    var action = isFunction ? 'setting the method' : 'setting the property';\n    warn(action, 'This is effectively a no-op');\n    return val;\n  }\n\n  function get() {\n    var action = isFunction ? 'accessing the method' : 'accessing the property';\n    var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n    warn(action, result);\n    return getVal;\n  }\n\n  function warn(action, result) {\n    var warningCondition = false;\n    !warningCondition ? warning(false, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n  }\n}\n\nfunction getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {\n  var EventConstructor = this;\n  if (EventConstructor.eventPool.length) {\n    var instance = EventConstructor.eventPool.pop();\n    EventConstructor.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new EventConstructor(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\n\nfunction releasePooledEvent(event) {\n  var EventConstructor = this;\n  !(event instanceof EventConstructor) ? invariant(false, 'Trying to release an event instance  into a pool of a different type.') : void 0;\n  event.destructor();\n  if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) {\n    EventConstructor.eventPool.push(event);\n  }\n}\n\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.eventPool = [];\n  EventConstructor.getPooled = getPooledEvent;\n  EventConstructor.release = releasePooledEvent;\n}\n\nvar SyntheticEvent$1 = SyntheticEvent;\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar SyntheticCompositionEvent = SyntheticEvent$1.extend({\n  data: null\n});\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\nvar SyntheticInputEvent = SyntheticEvent$1.extend({\n  data: null\n});\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n  documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode;\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n  beforeInput: {\n    phasedRegistrationNames: {\n      bubbled: 'onBeforeInput',\n      captured: 'onBeforeInputCapture'\n    },\n    dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n  },\n  compositionEnd: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionEnd',\n      captured: 'onCompositionEndCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  },\n  compositionStart: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionStart',\n      captured: 'onCompositionStartCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  },\n  compositionUpdate: {\n    phasedRegistrationNames: {\n      bubbled: 'onCompositionUpdate',\n      captured: 'onCompositionUpdateCapture'\n    },\n    dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n  }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n  // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n  switch (topLevelType) {\n    case 'topCompositionStart':\n      return eventTypes.compositionStart;\n    case 'topCompositionEnd':\n      return eventTypes.compositionEnd;\n    case 'topCompositionUpdate':\n      return eventTypes.compositionUpdate;\n  }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n  return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case 'topKeyUp':\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n    case 'topKeyDown':\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n    case 'topKeyPress':\n    case 'topMouseDown':\n    case 'topBlur':\n      // Events are not possible without cancelling IME.\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n  if (typeof detail === 'object' && 'data' in detail) {\n    return detail.data;\n  }\n  return null;\n}\n\n// Track the current IME composition status, if any.\nvar isComposing = false;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType = void 0;\n  var fallbackData = void 0;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(topLevelType);\n  } else if (!isComposing) {\n    if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n      eventType = eventTypes.compositionStart;\n    }\n  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n    eventType = eventTypes.compositionEnd;\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!isComposing && eventType === eventTypes.compositionStart) {\n      isComposing = initialize(nativeEventTarget);\n    } else if (eventType === eventTypes.compositionEnd) {\n      if (isComposing) {\n        fallbackData = getData();\n      }\n    }\n  }\n\n  var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n  if (fallbackData) {\n    // Inject data generated from fallback path into the synthetic event.\n    // This matches the property of native CompositionEventInterface.\n    event.data = fallbackData;\n  } else {\n    var customData = getDataFromCustomEvent(nativeEvent);\n    if (customData !== null) {\n      event.data = customData;\n    }\n  }\n\n  accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * @param {TopLevelTypes} topLevelType Record from `BrowserEventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case 'topCompositionEnd':\n      return getDataFromCustomEvent(nativeEvent);\n    case 'topKeyPress':\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case 'topTextInput':\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data;\n\n      // If it's a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn't give us keycodes, so we need to blacklist it.\n      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `BrowserEventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (isComposing) {\n    if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n      var chars = getData();\n      reset();\n      isComposing = false;\n      return chars;\n    }\n    return null;\n  }\n\n  switch (topLevelType) {\n    case 'topPaste':\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n    case 'topKeyPress':\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: 'AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (!isKeypressCommand(nativeEvent)) {\n        // IE fires the `keypress` event when a user types an emoji via\n        // Touch keyboard of Windows.  In such a case, the `char` property\n        // holds an emoji character like `\\uD83D\\uDE0A`.  Because its length\n        // is 2, the property `which` does not represent an emoji correctly.\n        // In such a case, we directly return the `char` property instead of\n        // using `which`.\n        if (nativeEvent.char && nativeEvent.char.length > 1) {\n          return nativeEvent.char;\n        } else if (nativeEvent.which) {\n          return String.fromCharCode(nativeEvent.which);\n        }\n      }\n      return null;\n    case 'topCompositionEnd':\n      return useFallbackCompositionData ? null : nativeEvent.data;\n    default:\n      return null;\n  }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var chars = void 0;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n  }\n\n  // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n  if (!chars) {\n    return null;\n  }\n\n  var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n  event.data = chars;\n  accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var composition = extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n\n    var beforeInput = extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n\n    if (composition === null) {\n      return beforeInput;\n    }\n\n    if (beforeInput === null) {\n      return composition;\n    }\n\n    return [composition, beforeInput];\n  }\n};\n\n// Use to restore controlled state after a change event has fired.\n\nvar fiberHostComponent = null;\n\nvar ReactControlledComponentInjection = {\n  injectFiberControlledHostComponent: function (hostComponentImpl) {\n    // The fiber implementation doesn't use dynamic dispatch so we need to\n    // inject the implementation.\n    fiberHostComponent = hostComponentImpl;\n  }\n};\n\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n  // We perform this translation at the end of the event loop so that we\n  // always receive the correct fiber here\n  var internalInstance = getInstanceFromNode(target);\n  if (!internalInstance) {\n    // Unmounted\n    return;\n  }\n  !(fiberHostComponent && typeof fiberHostComponent.restoreControlledState === 'function') ? invariant(false, 'Fiber needs to be injected to handle a fiber target for controlled events. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n  var props = getFiberCurrentPropsFromNode(internalInstance.stateNode);\n  fiberHostComponent.restoreControlledState(internalInstance.stateNode, internalInstance.type, props);\n}\n\nvar injection$2 = ReactControlledComponentInjection;\n\nfunction enqueueStateRestore(target) {\n  if (restoreTarget) {\n    if (restoreQueue) {\n      restoreQueue.push(target);\n    } else {\n      restoreQueue = [target];\n    }\n  } else {\n    restoreTarget = target;\n  }\n}\n\nfunction needsStateRestore() {\n  return restoreTarget !== null || restoreQueue !== null;\n}\n\nfunction restoreStateIfNeeded() {\n  if (!restoreTarget) {\n    return;\n  }\n  var target = restoreTarget;\n  var queuedTargets = restoreQueue;\n  restoreTarget = null;\n  restoreQueue = null;\n\n  restoreStateOfTarget(target);\n  if (queuedTargets) {\n    for (var i = 0; i < queuedTargets.length; i++) {\n      restoreStateOfTarget(queuedTargets[i]);\n    }\n  }\n}\n\nvar ReactControlledComponent = Object.freeze({\n\tinjection: injection$2,\n\tenqueueStateRestore: enqueueStateRestore,\n\tneedsStateRestore: needsStateRestore,\n\trestoreStateIfNeeded: restoreStateIfNeeded\n});\n\n// Used as a way to call batchedUpdates when we don't have a reference to\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n\n// Defaults\nvar _batchedUpdates = function (fn, bookkeeping) {\n  return fn(bookkeeping);\n};\nvar _interactiveUpdates = function (fn, a, b) {\n  return fn(a, b);\n};\nvar _flushInteractiveUpdates = function () {};\n\nvar isBatching = false;\nfunction batchedUpdates(fn, bookkeeping) {\n  if (isBatching) {\n    // If we are currently inside another batch, we need to wait until it\n    // fully completes before restoring state.\n    return fn(bookkeeping);\n  }\n  isBatching = true;\n  try {\n    return _batchedUpdates(fn, bookkeeping);\n  } finally {\n    // Here we wait until all updates have propagated, which is important\n    // when using controlled components within layers:\n    // https://github.com/facebook/react/issues/1698\n    // Then we restore state of any controlled component.\n    isBatching = false;\n    var controlledComponentsHavePendingUpdates = needsStateRestore();\n    if (controlledComponentsHavePendingUpdates) {\n      // If a controlled event was fired, we may need to restore the state of\n      // the DOM node back to the controlled value. This is necessary when React\n      // bails out of the update without touching the DOM.\n      _flushInteractiveUpdates();\n      restoreStateIfNeeded();\n    }\n  }\n}\n\nfunction interactiveUpdates(fn, a, b) {\n  return _interactiveUpdates(fn, a, b);\n}\n\n\n\nvar injection$3 = {\n  injectRenderer: function (renderer) {\n    _batchedUpdates = renderer.batchedUpdates;\n    _interactiveUpdates = renderer.interactiveUpdates;\n    _flushInteractiveUpdates = renderer.flushInteractiveUpdates;\n  }\n};\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n  color: true,\n  date: true,\n  datetime: true,\n  'datetime-local': true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n  if (nodeName === 'input') {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === 'textarea') {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * HTML nodeType values that represent the type of the node\n */\n\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\nfunction getEventTarget(nativeEvent) {\n  var target = nativeEvent.target || window;\n\n  // Normalize SVG <use> element events #4963\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n  return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n  if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = eventName in document;\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  return isSupported;\n}\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n  return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n  node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n  var value = '';\n  if (!node) {\n    return value;\n  }\n\n  if (isCheckable(node)) {\n    value = node.checked ? 'true' : 'false';\n  } else {\n    value = node.value;\n  }\n\n  return value;\n}\n\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? 'checked' : 'value';\n  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n  var currentValue = '' + node[valueField];\n\n  // if someone has already defined a value or Safari, then bail\n  // and don't track value will cause over reporting of changes,\n  // but it's better then a hard failure\n  // (needed for certain tests that spyOn input values and Safari)\n  if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n    return;\n  }\n\n  Object.defineProperty(node, valueField, {\n    configurable: true,\n    get: function () {\n      return descriptor.get.call(this);\n    },\n    set: function (value) {\n      currentValue = '' + value;\n      descriptor.set.call(this, value);\n    }\n  });\n  // We could've passed this the first time\n  // but it triggers a bug in IE11 and Edge 14/15.\n  // Calling defineProperty() again should be equivalent.\n  // https://github.com/facebook/react/issues/11768\n  Object.defineProperty(node, valueField, {\n    enumerable: descriptor.enumerable\n  });\n\n  var tracker = {\n    getValue: function () {\n      return currentValue;\n    },\n    setValue: function (value) {\n      currentValue = '' + value;\n    },\n    stopTracking: function () {\n      detachTracker(node);\n      delete node[valueField];\n    }\n  };\n  return tracker;\n}\n\nfunction track(node) {\n  if (getTracker(node)) {\n    return;\n  }\n\n  // TODO: Once it's just Fiber we can move this to node._wrapperState\n  node._valueTracker = trackValueOnNode(node);\n}\n\nfunction updateValueIfChanged(node) {\n  if (!node) {\n    return false;\n  }\n\n  var tracker = getTracker(node);\n  // if there is no tracker at this point it's unlikely\n  // that trying again will succeed\n  if (!tracker) {\n    return true;\n  }\n\n  var lastValue = tracker.getValue();\n  var nextValue = getValueFromNode(node);\n  if (nextValue !== lastValue) {\n    tracker.setValue(nextValue);\n    return true;\n  }\n  return false;\n}\n\nvar ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar ReactCurrentOwner = ReactInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame = ReactInternals.ReactDebugCurrentFrame;\n\nvar describeComponentFrame = function (name, source, ownerName) {\n  return '\\n    in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol['for'];\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7;\nvar REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8;\nvar REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol['for']('react.strict_mode') : 0xeacc;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol['for']('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol['for']('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol['for']('react.async_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol['for']('react.forward_ref') : 0xead0;\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable === 'undefined') {\n    return null;\n  }\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n  return null;\n}\n\nfunction getComponentName(fiber) {\n  var type = fiber.type;\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name;\n  }\n  if (typeof type === 'string') {\n    return type;\n  }\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'ReactFragment';\n    case REACT_PORTAL_TYPE:\n      return 'ReactPortal';\n    case REACT_CALL_TYPE:\n      return 'ReactCall';\n    case REACT_RETURN_TYPE:\n      return 'ReactReturn';\n  }\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        var functionName = type.render.displayName || type.render.name || '';\n        return functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef';\n    }\n  }\n  return null;\n}\n\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case IndeterminateComponent:\n    case FunctionalComponent:\n    case ClassComponent:\n    case HostComponent:\n      var owner = fiber._debugOwner;\n      var source = fiber._debugSource;\n      var name = getComponentName(fiber);\n      var ownerName = null;\n      if (owner) {\n        ownerName = getComponentName(owner);\n      }\n      return describeComponentFrame(name, source, ownerName);\n    default:\n      return '';\n  }\n}\n\n// This function can only be called with a work-in-progress fiber and\n// only during begin or complete phase. Do not call it under any other\n// circumstances.\nfunction getStackAddendumByWorkInProgressFiber(workInProgress) {\n  var info = '';\n  var node = workInProgress;\n  do {\n    info += describeFiber(node);\n    // Otherwise this return pointer might point to the wrong tree:\n    node = node['return'];\n  } while (node);\n  return info;\n}\n\nfunction getCurrentFiberOwnerName$1() {\n  {\n    var fiber = ReactDebugCurrentFiber.current;\n    if (fiber === null) {\n      return null;\n    }\n    var owner = fiber._debugOwner;\n    if (owner !== null && typeof owner !== 'undefined') {\n      return getComponentName(owner);\n    }\n  }\n  return null;\n}\n\nfunction getCurrentFiberStackAddendum$1() {\n  {\n    var fiber = ReactDebugCurrentFiber.current;\n    if (fiber === null) {\n      return null;\n    }\n    // Safe because if current fiber exists, we are reconciling,\n    // and it is guaranteed to be the work-in-progress version.\n    return getStackAddendumByWorkInProgressFiber(fiber);\n  }\n  return null;\n}\n\nfunction resetCurrentFiber() {\n  ReactDebugCurrentFrame.getCurrentStack = null;\n  ReactDebugCurrentFiber.current = null;\n  ReactDebugCurrentFiber.phase = null;\n}\n\nfunction setCurrentFiber(fiber) {\n  ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackAddendum$1;\n  ReactDebugCurrentFiber.current = fiber;\n  ReactDebugCurrentFiber.phase = null;\n}\n\nfunction setCurrentPhase(phase) {\n  ReactDebugCurrentFiber.phase = phase;\n}\n\nvar ReactDebugCurrentFiber = {\n  current: null,\n  phase: null,\n  resetCurrentFiber: resetCurrentFiber,\n  setCurrentFiber: setCurrentFiber,\n  setCurrentPhase: setCurrentPhase,\n  getCurrentFiberOwnerName: getCurrentFiberOwnerName$1,\n  getCurrentFiberStackAddendum: getCurrentFiberStackAddendum$1\n};\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0;\n\n// A simple string attribute.\n// Attributes that aren't in the whitelist are presumed to have this type.\nvar STRING = 1;\n\n// A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\nvar BOOLEANISH_STRING = 2;\n\n// A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\nvar BOOLEAN = 3;\n\n// An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\nvar OVERLOADED_BOOLEAN = 4;\n\n// An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\nvar NUMERIC = 5;\n\n// An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\n\n\nvar ROOT_ATTRIBUTE_NAME = 'data-reactroot';\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n  if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n    return true;\n  }\n  if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n    return false;\n  }\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n  illegalAttributeNameCache[attributeName] = true;\n  {\n    warning(false, 'Invalid attribute name: `%s`', attributeName);\n  }\n  return false;\n}\n\nfunction shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null) {\n    return propertyInfo.type === RESERVED;\n  }\n  if (isCustomComponentTag) {\n    return false;\n  }\n  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return true;\n  }\n  return false;\n}\n\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n  switch (typeof value) {\n    case 'function':\n    // $FlowIssue symbol is perfectly valid here\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n    default:\n      return false;\n  }\n}\n\nfunction shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n  if (value === null || typeof value === 'undefined') {\n    return true;\n  }\n  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n    return true;\n  }\n  if (propertyInfo !== null) {\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        return !value;\n      case OVERLOADED_BOOLEAN:\n        return value === false;\n      case NUMERIC:\n        return isNaN(value);\n      case POSITIVE_NUMERIC:\n        return isNaN(value) || value < 1;\n    }\n  }\n  return false;\n}\n\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n}\n\n// When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\nvar properties = {};\n\n// These props are reserved by React. They shouldn't be written to the DOM.\n['children', 'dangerouslySetInnerHTML',\n// TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null);\n});\n\n// A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null);\n});\n\n// These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\n// These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n['autoReverse', 'externalResourcesRequired', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null);\n});\n\n// These are HTML boolean attributes.\n['allowFullScreen', 'async',\n// Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless',\n// Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\n// These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n['checked',\n// Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\n// These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n['capture', 'download'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\n// These are HTML attributes that must be positive numbers.\n['cols', 'rows', 'size', 'span'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\n// These are HTML attributes that must be numbers.\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null);\n});\n\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n};\n\n// This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML whitelist.\n// Some of these attributes can be hard to find. This list was created by\n// scrapping the MDN documentation.\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height'].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null);\n});\n\n// String SVG attributes with the xlink namespace.\n['xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type'].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink');\n});\n\n// String SVG attributes with the xml namespace.\n['xml:base', 'xml:lang', 'xml:space'].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace');\n});\n\n// Special case: this attribute exists both in HTML and SVG.\n// Its \"tabindex\" attribute name is case-sensitive in SVG so we can't just use\n// its React `tabIndex` name, like we do for attributes that exist only in HTML.\nproperties.tabIndex = new PropertyInfoRecord('tabIndex', STRING, false, // mustUseProperty\n'tabindex', // attributeName\nnull);\n\n/**\n * Get the value for a property on a node. Only used in DEV for SSR validation.\n * The \"expected\" argument is used as a hint of what the expected value is.\n * Some properties have multiple equivalent values.\n */\nfunction getValueForProperty(node, name, expected, propertyInfo) {\n  {\n    if (propertyInfo.mustUseProperty) {\n      var propertyName = propertyInfo.propertyName;\n\n      return node[propertyName];\n    } else {\n      var attributeName = propertyInfo.attributeName;\n\n      var stringValue = null;\n\n      if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n        if (node.hasAttribute(attributeName)) {\n          var value = node.getAttribute(attributeName);\n          if (value === '') {\n            return true;\n          }\n          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n            return value;\n          }\n          if (value === '' + expected) {\n            return expected;\n          }\n          return value;\n        }\n      } else if (node.hasAttribute(attributeName)) {\n        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n          // We had an attribute but shouldn't have had one, so read it\n          // for the error message.\n          return node.getAttribute(attributeName);\n        }\n        if (propertyInfo.type === BOOLEAN) {\n          // If this was a boolean, it doesn't matter what the value is\n          // the fact that we have it is the same as the expected.\n          return expected;\n        }\n        // Even if this property uses a namespace we use getAttribute\n        // because we assume its namespaced name is the same as our config.\n        // To use getAttributeNS we need the local name which we don't have\n        // in our config atm.\n        stringValue = node.getAttribute(attributeName);\n      }\n\n      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n        return stringValue === null ? expected : stringValue;\n      } else if (stringValue === '' + expected) {\n        return expected;\n      } else {\n        return stringValue;\n      }\n    }\n  }\n}\n\n/**\n * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n * The third argument is used as a hint of what the expected value is. Some\n * attributes have multiple equivalent values.\n */\nfunction getValueForAttribute(node, name, expected) {\n  {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n    if (!node.hasAttribute(name)) {\n      return expected === undefined ? undefined : null;\n    }\n    var value = node.getAttribute(name);\n    if (value === '' + expected) {\n      return expected;\n    }\n    return value;\n  }\n}\n\n/**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\nfunction setValueForProperty(node, name, value, isCustomComponentTag) {\n  var propertyInfo = getPropertyInfo(name);\n  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n    return;\n  }\n  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n    value = null;\n  }\n  // If the prop isn't in the special list, treat it as a simple attribute.\n  if (isCustomComponentTag || propertyInfo === null) {\n    if (isAttributeNameSafe(name)) {\n      var _attributeName = name;\n      if (value === null) {\n        node.removeAttribute(_attributeName);\n      } else {\n        node.setAttribute(_attributeName, '' + value);\n      }\n    }\n    return;\n  }\n  var mustUseProperty = propertyInfo.mustUseProperty;\n\n  if (mustUseProperty) {\n    var propertyName = propertyInfo.propertyName;\n\n    if (value === null) {\n      var type = propertyInfo.type;\n\n      node[propertyName] = type === BOOLEAN ? false : '';\n    } else {\n      // Contrary to `setAttribute`, object properties are properly\n      // `toString`ed by IE8/9.\n      node[propertyName] = value;\n    }\n    return;\n  }\n  // The rest are treated as attributes with special cases.\n  var attributeName = propertyInfo.attributeName,\n      attributeNamespace = propertyInfo.attributeNamespace;\n\n  if (value === null) {\n    node.removeAttribute(attributeName);\n  } else {\n    var _type = propertyInfo.type;\n\n    var attributeValue = void 0;\n    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n      attributeValue = '';\n    } else {\n      // `setAttribute` with objects becomes only `[object]` in IE8/9,\n      // ('' + value) makes it output the correct toString()-value.\n      attributeValue = '' + value;\n    }\n    if (attributeNamespace) {\n      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n    } else {\n      node.setAttribute(attributeName, attributeValue);\n    }\n  }\n}\n\nvar ReactControlledValuePropTypes = {\n  checkPropTypes: null\n};\n\n{\n  var hasReadOnlyValue = {\n    button: true,\n    checkbox: true,\n    image: true,\n    hidden: true,\n    radio: true,\n    reset: true,\n    submit: true\n  };\n\n  var propTypes = {\n    value: function (props, propName, componentName) {\n      if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n        return null;\n      }\n      return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    },\n    checked: function (props, propName, componentName) {\n      if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n        return null;\n      }\n      return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  };\n\n  /**\n   * Provide a linked `value` attribute for controlled forms. You should not use\n   * this outside of the ReactDOM controlled form components.\n   */\n  ReactControlledValuePropTypes.checkPropTypes = function (tagName, props, getStack) {\n    checkPropTypes(propTypes, props, 'prop', tagName, getStack);\n  };\n}\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar getCurrentFiberOwnerName = ReactDebugCurrentFiber.getCurrentFiberOwnerName;\nvar getCurrentFiberStackAddendum = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n  var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n  return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\nfunction getHostProps(element, props) {\n  var node = element;\n  var checked = props.checked;\n\n  var hostProps = _assign({}, props, {\n    defaultChecked: undefined,\n    defaultValue: undefined,\n    value: undefined,\n    checked: checked != null ? checked : node._wrapperState.initialChecked\n  });\n\n  return hostProps;\n}\n\nfunction initWrapperState(element, props) {\n  {\n    ReactControlledValuePropTypes.checkPropTypes('input', props, getCurrentFiberStackAddendum);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n      warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName() || 'A component', props.type);\n      didWarnCheckedDefaultChecked = true;\n    }\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n      warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName() || 'A component', props.type);\n      didWarnValueDefaultValue = true;\n    }\n  }\n\n  var node = element;\n  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;\n\n  node._wrapperState = {\n    initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n    initialValue: getSafeValue(props.value != null ? props.value : defaultValue),\n    controlled: isControlled(props)\n  };\n}\n\nfunction updateChecked(element, props) {\n  var node = element;\n  var checked = props.checked;\n  if (checked != null) {\n    setValueForProperty(node, 'checked', checked, false);\n  }\n}\n\nfunction updateWrapper(element, props) {\n  var node = element;\n  {\n    var _controlled = isControlled(props);\n\n    if (!node._wrapperState.controlled && _controlled && !didWarnUncontrolledToControlled) {\n      warning(false, 'A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum());\n      didWarnUncontrolledToControlled = true;\n    }\n    if (node._wrapperState.controlled && !_controlled && !didWarnControlledToUncontrolled) {\n      warning(false, 'A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum());\n      didWarnControlledToUncontrolled = true;\n    }\n  }\n\n  updateChecked(element, props);\n\n  var value = getSafeValue(props.value);\n\n  if (value != null) {\n    if (props.type === 'number') {\n      if (value === 0 && node.value === '' ||\n      // eslint-disable-next-line\n      node.value != value) {\n        node.value = '' + value;\n      }\n    } else if (node.value !== '' + value) {\n      node.value = '' + value;\n    }\n  }\n\n  if (props.hasOwnProperty('value')) {\n    setDefaultValue(node, props.type, value);\n  } else if (props.hasOwnProperty('defaultValue')) {\n    setDefaultValue(node, props.type, getSafeValue(props.defaultValue));\n  }\n\n  if (props.checked == null && props.defaultChecked != null) {\n    node.defaultChecked = !!props.defaultChecked;\n  }\n}\n\nfunction postMountWrapper(element, props) {\n  var node = element;\n\n  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {\n    // Do not assign value if it is already set. This prevents user text input\n    // from being lost during SSR hydration.\n    if (node.value === '') {\n      node.value = '' + node._wrapperState.initialValue;\n    }\n\n    // value must be assigned before defaultValue. This fixes an issue where the\n    // visually displayed value of date inputs disappears on mobile Safari and Chrome:\n    // https://github.com/facebook/react/issues/7233\n    node.defaultValue = '' + node._wrapperState.initialValue;\n  }\n\n  // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n  // this is needed to work around a chrome bug where setting defaultChecked\n  // will sometimes influence the value of checked (even after detachment).\n  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n  // We need to temporarily unset name to avoid disrupting radio button groups.\n  var name = node.name;\n  if (name !== '') {\n    node.name = '';\n  }\n  node.defaultChecked = !node.defaultChecked;\n  node.defaultChecked = !node.defaultChecked;\n  if (name !== '') {\n    node.name = name;\n  }\n}\n\nfunction restoreControlledState(element, props) {\n  var node = element;\n  updateWrapper(node, props);\n  updateNamedCousins(node, props);\n}\n\nfunction updateNamedCousins(rootNode, props) {\n  var name = props.name;\n  if (props.type === 'radio' && name != null) {\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    }\n\n    // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won't include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form. It might not even be in the\n    // document. Let's just use the local `querySelectorAll` to ensure we don't\n    // miss anything.\n    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n    for (var i = 0; i < group.length; i++) {\n      var otherNode = group[i];\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      }\n      // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That's probably okay; we don't support it just as we don't support\n      // mixing React radio buttons with non-React ones.\n      var otherProps = getFiberCurrentPropsFromNode$1(otherNode);\n      !otherProps ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : void 0;\n\n      // We need update the tracked value on the named cousin since the value\n      // was changed but the input saw no event or value set\n      updateValueIfChanged(otherNode);\n\n      // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n      updateWrapper(otherNode, otherProps);\n    }\n  }\n}\n\n// In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\nfunction setDefaultValue(node, type, value) {\n  if (\n  // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n  type !== 'number' || node.ownerDocument.activeElement !== node) {\n    if (value == null) {\n      node.defaultValue = '' + node._wrapperState.initialValue;\n    } else if (node.defaultValue !== '' + value) {\n      node.defaultValue = '' + value;\n    }\n  }\n}\n\nfunction getSafeValue(value) {\n  switch (typeof value) {\n    case 'boolean':\n    case 'number':\n    case 'object':\n    case 'string':\n    case 'undefined':\n      return value;\n    default:\n      // function, symbol are assigned as empty strings\n      return '';\n  }\n}\n\nvar eventTypes$1 = {\n  change: {\n    phasedRegistrationNames: {\n      bubbled: 'onChange',\n      captured: 'onChangeCapture'\n    },\n    dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n  }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n  var event = SyntheticEvent$1.getPooled(eventTypes$1.change, inst, nativeEvent, target);\n  event.type = 'change';\n  // Flag this event loop as needing state restore.\n  enqueueStateRestore(target);\n  accumulateTwoPhaseDispatches(event);\n  return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n  // If change and propertychange bubbled, we'd just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn't, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don't work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n  batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n  runEventsInBatch(event, false);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance$1(targetInst);\n  if (updateValueIfChanged(targetNode)) {\n    return targetInst;\n  }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topChange') {\n    return targetInst;\n  }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n  activeElement.detachEvent('onpropertychange', handlePropertyChange);\n  activeElement = null;\n  activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== 'value') {\n    return;\n  }\n  if (getInstIfValueChanged(activeElementInst)) {\n    manualDispatchChangeEvent(nativeEvent);\n  }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n  if (topLevelType === 'topFocus') {\n    // In IE9, propertychange fires for most input events but is buggy and\n    // doesn't fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don't want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (topLevelType === 'topBlur') {\n    stopWatchingForValueChange();\n  }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst) {\n  if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n    // On the selectionchange event, the target is just document which isn't\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it'll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    return getInstIfValueChanged(activeElementInst);\n  }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topClick') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {\n  if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n  // TODO: In IE, inst is occasionally null. Why?\n  if (inst == null) {\n    return;\n  }\n\n  // Fiber and ReactDOM keep wrapper state in separate places\n  var state = inst._wrapperState || node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== 'number') {\n    return;\n  }\n\n  // If controlled, assign the value attribute to the current value on blur\n  setDefaultValue(node, 'number', node.value);\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n  eventTypes: eventTypes$1,\n\n  _isInputEventSupported: isInputEventSupported,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window;\n\n    var getTargetInstFunc = void 0,\n        handleEventFunc = void 0;\n    if (shouldUseChangeEvent(targetNode)) {\n      getTargetInstFunc = getTargetInstForChangeEvent;\n    } else if (isTextInputElement(targetNode)) {\n      if (isInputEventSupported) {\n        getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n      } else {\n        getTargetInstFunc = getTargetInstForInputEventPolyfill;\n        handleEventFunc = handleEventsForInputEventPolyfill;\n      }\n    } else if (shouldUseClickEvent(targetNode)) {\n      getTargetInstFunc = getTargetInstForClickEvent;\n    }\n\n    if (getTargetInstFunc) {\n      var inst = getTargetInstFunc(topLevelType, targetInst);\n      if (inst) {\n        var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n        return event;\n      }\n    }\n\n    if (handleEventFunc) {\n      handleEventFunc(topLevelType, targetNode, targetInst);\n    }\n\n    // When blurring, set the value attribute for number inputs\n    if (topLevelType === 'topBlur') {\n      handleControlledInputBlur(targetInst, targetNode);\n    }\n  }\n};\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\nvar DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nvar SyntheticUIEvent = SyntheticEvent$1.extend({\n  view: null,\n  detail: null\n});\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar SyntheticMouseEvent = SyntheticUIEvent.extend({\n  screenX: null,\n  screenY: null,\n  clientX: null,\n  clientY: null,\n  pageX: null,\n  pageY: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  getModifierState: getEventModifierState,\n  button: null,\n  buttons: null,\n  relatedTarget: function (event) {\n    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n  }\n});\n\nvar eventTypes$2 = {\n  mouseEnter: {\n    registrationName: 'onMouseEnter',\n    dependencies: ['topMouseOut', 'topMouseOver']\n  },\n  mouseLeave: {\n    registrationName: 'onMouseLeave',\n    dependencies: ['topMouseOut', 'topMouseOver']\n  }\n};\n\nvar EnterLeaveEventPlugin = {\n  eventTypes: eventTypes$2,\n\n  /**\n   * For almost every interaction we care about, there will be both a top-level\n   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n   * we do not extract duplicate events. However, moving the mouse into the\n   * browser from outside will not fire a `mouseout` event. In this case, we use\n   * the `mouseover` top-level event.\n   */\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n      return null;\n    }\n    if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n      // Must not be a mouse in or mouse out - ignoring.\n      return null;\n    }\n\n    var win = void 0;\n    if (nativeEventTarget.window === nativeEventTarget) {\n      // `nativeEventTarget` is probably a window object.\n      win = nativeEventTarget;\n    } else {\n      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n      var doc = nativeEventTarget.ownerDocument;\n      if (doc) {\n        win = doc.defaultView || doc.parentWindow;\n      } else {\n        win = window;\n      }\n    }\n\n    var from = void 0;\n    var to = void 0;\n    if (topLevelType === 'topMouseOut') {\n      from = targetInst;\n      var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n      to = related ? getClosestInstanceFromNode(related) : null;\n    } else {\n      // Moving to a node from outside the window.\n      from = null;\n      to = targetInst;\n    }\n\n    if (from === to) {\n      // Nothing pertains to our managed components.\n      return null;\n    }\n\n    var fromNode = from == null ? win : getNodeFromInstance$1(from);\n    var toNode = to == null ? win : getNodeFromInstance$1(to);\n\n    var leave = SyntheticMouseEvent.getPooled(eventTypes$2.mouseLeave, from, nativeEvent, nativeEventTarget);\n    leave.type = 'mouseleave';\n    leave.target = fromNode;\n    leave.relatedTarget = toNode;\n\n    var enter = SyntheticMouseEvent.getPooled(eventTypes$2.mouseEnter, to, nativeEvent, nativeEventTarget);\n    enter.type = 'mouseenter';\n    enter.target = toNode;\n    enter.relatedTarget = fromNode;\n\n    accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n    return [leave, enter];\n  }\n};\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\n\n/**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n\n\nfunction get(key) {\n  return key._reactInternalFiber;\n}\n\nfunction has(key) {\n  return key._reactInternalFiber !== undefined;\n}\n\nfunction set(key, value) {\n  key._reactInternalFiber = value;\n}\n\n// Don't change these two values. They're used by React Dev Tools.\nvar NoEffect = /*              */0;\nvar PerformedWork = /*         */1;\n\n// You can change the rest (and add more).\nvar Placement = /*             */2;\nvar Update = /*                */4;\nvar PlacementAndUpdate = /*    */6;\nvar Deletion = /*              */8;\nvar ContentReset = /*          */16;\nvar Callback = /*              */32;\nvar DidCapture = /*            */64;\nvar Ref = /*                   */128;\nvar ErrLog = /*                */256;\nvar Snapshot = /*              */2048;\n\n// Union of all host effects\nvar HostEffectMask = /*        */2559;\n\nvar Incomplete = /*            */512;\nvar ShouldCapture = /*         */1024;\n\nvar MOUNTING = 1;\nvar MOUNTED = 2;\nvar UNMOUNTED = 3;\n\nfunction isFiberMountedImpl(fiber) {\n  var node = fiber;\n  if (!fiber.alternate) {\n    // If there is no alternate, this might be a new tree that isn't inserted\n    // yet. If it is, then it will have a pending insertion effect on it.\n    if ((node.effectTag & Placement) !== NoEffect) {\n      return MOUNTING;\n    }\n    while (node['return']) {\n      node = node['return'];\n      if ((node.effectTag & Placement) !== NoEffect) {\n        return MOUNTING;\n      }\n    }\n  } else {\n    while (node['return']) {\n      node = node['return'];\n    }\n  }\n  if (node.tag === HostRoot) {\n    // TODO: Check if this was a nested HostRoot when used with\n    // renderContainerIntoSubtree.\n    return MOUNTED;\n  }\n  // If we didn't hit the root, that means that we're in an disconnected tree\n  // that has been unmounted.\n  return UNMOUNTED;\n}\n\nfunction isFiberMounted(fiber) {\n  return isFiberMountedImpl(fiber) === MOUNTED;\n}\n\nfunction isMounted(component) {\n  {\n    var owner = ReactCurrentOwner.current;\n    if (owner !== null && owner.tag === ClassComponent) {\n      var ownerFiber = owner;\n      var instance = ownerFiber.stateNode;\n      !instance._warnedAboutRefsInRender ? warning(false, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber) || 'A component') : void 0;\n      instance._warnedAboutRefsInRender = true;\n    }\n  }\n\n  var fiber = get(component);\n  if (!fiber) {\n    return false;\n  }\n  return isFiberMountedImpl(fiber) === MOUNTED;\n}\n\nfunction assertIsMounted(fiber) {\n  !(isFiberMountedImpl(fiber) === MOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    // If there is no alternate, then we only need to check if it is mounted.\n    var state = isFiberMountedImpl(fiber);\n    !(state !== UNMOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n    if (state === MOUNTING) {\n      return null;\n    }\n    return fiber;\n  }\n  // If we have two possible branches, we'll walk backwards up to the root\n  // to see what path the root points to. On the way we may hit one of the\n  // special cases and we'll deal with them.\n  var a = fiber;\n  var b = alternate;\n  while (true) {\n    var parentA = a['return'];\n    var parentB = parentA ? parentA.alternate : null;\n    if (!parentA || !parentB) {\n      // We're at the root.\n      break;\n    }\n\n    // If both copies of the parent fiber point to the same child, we can\n    // assume that the child is current. This happens when we bailout on low\n    // priority: the bailed out fiber's child reuses the current child.\n    if (parentA.child === parentB.child) {\n      var child = parentA.child;\n      while (child) {\n        if (child === a) {\n          // We've determined that A is the current branch.\n          assertIsMounted(parentA);\n          return fiber;\n        }\n        if (child === b) {\n          // We've determined that B is the current branch.\n          assertIsMounted(parentA);\n          return alternate;\n        }\n        child = child.sibling;\n      }\n      // We should never have an alternate for any mounting node. So the only\n      // way this could possibly happen is if this was unmounted, if at all.\n      invariant(false, 'Unable to find node on an unmounted component.');\n    }\n\n    if (a['return'] !== b['return']) {\n      // The return pointer of A and the return pointer of B point to different\n      // fibers. We assume that return pointers never criss-cross, so A must\n      // belong to the child set of A.return, and B must belong to the child\n      // set of B.return.\n      a = parentA;\n      b = parentB;\n    } else {\n      // The return pointers point to the same fiber. We'll have to use the\n      // default, slow path: scan the child sets of each parent alternate to see\n      // which child belongs to which set.\n      //\n      // Search parent A's child set\n      var didFindChild = false;\n      var _child = parentA.child;\n      while (_child) {\n        if (_child === a) {\n          didFindChild = true;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (_child === b) {\n          didFindChild = true;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        _child = _child.sibling;\n      }\n      if (!didFindChild) {\n        // Search parent B's child set\n        _child = parentB.child;\n        while (_child) {\n          if (_child === a) {\n            didFindChild = true;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (_child === b) {\n            didFindChild = true;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          _child = _child.sibling;\n        }\n        !didFindChild ? invariant(false, 'Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.') : void 0;\n      }\n    }\n\n    !(a.alternate === b) ? invariant(false, 'Return fibers should always be each others\\' alternates. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n  }\n  // If the root is not a host container, we're in a disconnected tree. I.e.\n  // unmounted.\n  !(a.tag === HostRoot) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0;\n  if (a.stateNode.current === a) {\n    // We've determined that A is the current branch.\n    return fiber;\n  }\n  // Otherwise B has to be current branch.\n  return alternate;\n}\n\nfunction findCurrentHostFiber(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  if (!currentParent) {\n    return null;\n  }\n\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  var node = currentParent;\n  while (true) {\n    if (node.tag === HostComponent || node.tag === HostText) {\n      return node;\n    } else if (node.child) {\n      node.child['return'] = node;\n      node = node.child;\n      continue;\n    }\n    if (node === currentParent) {\n      return null;\n    }\n    while (!node.sibling) {\n      if (!node['return'] || node['return'] === currentParent) {\n        return null;\n      }\n      node = node['return'];\n    }\n    node.sibling['return'] = node['return'];\n    node = node.sibling;\n  }\n  // Flow needs the return null here, but ESLint complains about it.\n  // eslint-disable-next-line no-unreachable\n  return null;\n}\n\nfunction findCurrentHostFiberWithNoPortals(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  if (!currentParent) {\n    return null;\n  }\n\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  var node = currentParent;\n  while (true) {\n    if (node.tag === HostComponent || node.tag === HostText) {\n      return node;\n    } else if (node.child && node.tag !== HostPortal) {\n      node.child['return'] = node;\n      node = node.child;\n      continue;\n    }\n    if (node === currentParent) {\n      return null;\n    }\n    while (!node.sibling) {\n      if (!node['return'] || node['return'] === currentParent) {\n        return null;\n      }\n      node = node['return'];\n    }\n    node.sibling['return'] = node['return'];\n    node = node.sibling;\n  }\n  // Flow needs the return null here, but ESLint complains about it.\n  // eslint-disable-next-line no-unreachable\n  return null;\n}\n\nfunction addEventBubbleListener(element, eventType, listener) {\n  element.addEventListener(eventType, listener, false);\n}\n\nfunction addEventCaptureListener(element, eventType, listener) {\n  element.addEventListener(eventType, listener, true);\n}\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar SyntheticAnimationEvent = SyntheticEvent$1.extend({\n  animationName: null,\n  elapsedTime: null,\n  pseudoElement: null\n});\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar SyntheticClipboardEvent = SyntheticEvent$1.extend({\n  clipboardData: function (event) {\n    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n  }\n});\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar SyntheticFocusEvent = SyntheticUIEvent.extend({\n  relatedTarget: null\n});\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n  var charCode = void 0;\n  var keyCode = nativeEvent.keyCode;\n\n  if ('charCode' in nativeEvent) {\n    charCode = nativeEvent.charCode;\n\n    // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n    if (charCode === 0 && keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  }\n\n  // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n  // report Enter as charCode 10 when ctrl is pressed.\n  if (charCode === 10) {\n    charCode = 13;\n  }\n\n  // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n  if (charCode >= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n  Esc: 'Escape',\n  Spacebar: ' ',\n  Left: 'ArrowLeft',\n  Up: 'ArrowUp',\n  Right: 'ArrowRight',\n  Down: 'ArrowDown',\n  Del: 'Delete',\n  Win: 'OS',\n  Menu: 'ContextMenu',\n  Apps: 'ContextMenu',\n  Scroll: 'ScrollLock',\n  MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n  '8': 'Backspace',\n  '9': 'Tab',\n  '12': 'Clear',\n  '13': 'Enter',\n  '16': 'Shift',\n  '17': 'Control',\n  '18': 'Alt',\n  '19': 'Pause',\n  '20': 'CapsLock',\n  '27': 'Escape',\n  '32': ' ',\n  '33': 'PageUp',\n  '34': 'PageDown',\n  '35': 'End',\n  '36': 'Home',\n  '37': 'ArrowLeft',\n  '38': 'ArrowUp',\n  '39': 'ArrowRight',\n  '40': 'ArrowDown',\n  '45': 'Insert',\n  '46': 'Delete',\n  '112': 'F1',\n  '113': 'F2',\n  '114': 'F3',\n  '115': 'F4',\n  '116': 'F5',\n  '117': 'F6',\n  '118': 'F7',\n  '119': 'F8',\n  '120': 'F9',\n  '121': 'F10',\n  '122': 'F11',\n  '123': 'F12',\n  '144': 'NumLock',\n  '145': 'ScrollLock',\n  '224': 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  }\n\n  // Browser does not implement `key`, polyfill as much of it as we can.\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode(nativeEvent);\n\n    // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n  return '';\n}\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar SyntheticKeyboardEvent = SyntheticUIEvent.extend({\n  key: getEventKey,\n  location: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  repeat: null,\n  locale: null,\n  getModifierState: getEventModifierState,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n\n    // The actual meaning of the value depends on the users' keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n    return 0;\n  }\n});\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar SyntheticDragEvent = SyntheticMouseEvent.extend({\n  dataTransfer: null\n});\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar SyntheticTouchEvent = SyntheticUIEvent.extend({\n  touches: null,\n  targetTouches: null,\n  changedTouches: null,\n  altKey: null,\n  metaKey: null,\n  ctrlKey: null,\n  shiftKey: null,\n  getModifierState: getEventModifierState\n});\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar SyntheticTransitionEvent = SyntheticEvent$1.extend({\n  propertyName: null,\n  elapsedTime: null,\n  pseudoElement: null\n});\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar SyntheticWheelEvent = SyntheticMouseEvent.extend({\n  deltaX: function (event) {\n    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n    'wheelDelta' in event ? -event.wheelDelta : 0;\n  },\n\n  deltaZ: null,\n\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: null\n});\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n *   'abort': {\n *     phasedRegistrationNames: {\n *       bubbled: 'onAbort',\n *       captured: 'onAbortCapture',\n *     },\n *     dependencies: ['topAbort'],\n *   },\n *   ...\n * };\n * topLevelEventsToDispatchConfig = {\n *   'topAbort': { sameConfig }\n * };\n */\nvar interactiveEventTypeNames = ['blur', 'cancel', 'click', 'close', 'contextMenu', 'copy', 'cut', 'doubleClick', 'dragEnd', 'dragStart', 'drop', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'mouseDown', 'mouseUp', 'paste', 'pause', 'play', 'rateChange', 'reset', 'seeked', 'submit', 'touchCancel', 'touchEnd', 'touchStart', 'volumeChange'];\nvar nonInteractiveEventTypeNames = ['abort', 'animationEnd', 'animationIteration', 'animationStart', 'canPlay', 'canPlayThrough', 'drag', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseMove', 'mouseOut', 'mouseOver', 'playing', 'progress', 'scroll', 'seeking', 'stalled', 'suspend', 'timeUpdate', 'toggle', 'touchMove', 'transitionEnd', 'waiting', 'wheel'];\n\nvar eventTypes$4 = {};\nvar topLevelEventsToDispatchConfig = {};\n\nfunction addEventTypeNameToConfig(event, isInteractive) {\n  var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n  var onEvent = 'on' + capitalizedEvent;\n  var topEvent = 'top' + capitalizedEvent;\n\n  var type = {\n    phasedRegistrationNames: {\n      bubbled: onEvent,\n      captured: onEvent + 'Capture'\n    },\n    dependencies: [topEvent],\n    isInteractive: isInteractive\n  };\n  eventTypes$4[event] = type;\n  topLevelEventsToDispatchConfig[topEvent] = type;\n}\n\ninteractiveEventTypeNames.forEach(function (eventTypeName) {\n  addEventTypeNameToConfig(eventTypeName, true);\n});\nnonInteractiveEventTypeNames.forEach(function (eventTypeName) {\n  addEventTypeNameToConfig(eventTypeName, false);\n});\n\n// Only used in DEV for exhaustiveness validation.\nvar knownHTMLTopLevelTypes = ['topAbort', 'topCancel', 'topCanPlay', 'topCanPlayThrough', 'topClose', 'topDurationChange', 'topEmptied', 'topEncrypted', 'topEnded', 'topError', 'topInput', 'topInvalid', 'topLoad', 'topLoadedData', 'topLoadedMetadata', 'topLoadStart', 'topPause', 'topPlay', 'topPlaying', 'topProgress', 'topRateChange', 'topReset', 'topSeeked', 'topSeeking', 'topStalled', 'topSubmit', 'topSuspend', 'topTimeUpdate', 'topToggle', 'topVolumeChange', 'topWaiting'];\n\nvar SimpleEventPlugin = {\n  eventTypes: eventTypes$4,\n\n  isInteractiveTopLevelEventType: function (topLevelType) {\n    var config = topLevelEventsToDispatchConfig[topLevelType];\n    return config !== undefined && config.isInteractive === true;\n  },\n\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n    if (!dispatchConfig) {\n      return null;\n    }\n    var EventConstructor = void 0;\n    switch (topLevelType) {\n      case 'topKeyPress':\n        // Firefox creates a keypress event for function keys too. This removes\n        // the unwanted keypress events. Enter is however both printable and\n        // non-printable. One would expect Tab to be as well (but it isn't).\n        if (getEventCharCode(nativeEvent) === 0) {\n          return null;\n        }\n      /* falls through */\n      case 'topKeyDown':\n      case 'topKeyUp':\n        EventConstructor = SyntheticKeyboardEvent;\n        break;\n      case 'topBlur':\n      case 'topFocus':\n        EventConstructor = SyntheticFocusEvent;\n        break;\n      case 'topClick':\n        // Firefox creates a click event on right mouse clicks. This removes the\n        // unwanted click events.\n        if (nativeEvent.button === 2) {\n          return null;\n        }\n      /* falls through */\n      case 'topDoubleClick':\n      case 'topMouseDown':\n      case 'topMouseMove':\n      case 'topMouseUp':\n      // TODO: Disabled elements should not respond to mouse events\n      /* falls through */\n      case 'topMouseOut':\n      case 'topMouseOver':\n      case 'topContextMenu':\n        EventConstructor = SyntheticMouseEvent;\n        break;\n      case 'topDrag':\n      case 'topDragEnd':\n      case 'topDragEnter':\n      case 'topDragExit':\n      case 'topDragLeave':\n      case 'topDragOver':\n      case 'topDragStart':\n      case 'topDrop':\n        EventConstructor = SyntheticDragEvent;\n        break;\n      case 'topTouchCancel':\n      case 'topTouchEnd':\n      case 'topTouchMove':\n      case 'topTouchStart':\n        EventConstructor = SyntheticTouchEvent;\n        break;\n      case 'topAnimationEnd':\n      case 'topAnimationIteration':\n      case 'topAnimationStart':\n        EventConstructor = SyntheticAnimationEvent;\n        break;\n      case 'topTransitionEnd':\n        EventConstructor = SyntheticTransitionEvent;\n        break;\n      case 'topScroll':\n        EventConstructor = SyntheticUIEvent;\n        break;\n      case 'topWheel':\n        EventConstructor = SyntheticWheelEvent;\n        break;\n      case 'topCopy':\n      case 'topCut':\n      case 'topPaste':\n        EventConstructor = SyntheticClipboardEvent;\n        break;\n      default:\n        {\n          if (knownHTMLTopLevelTypes.indexOf(topLevelType) === -1) {\n            warning(false, 'SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType);\n          }\n        }\n        // HTML Events\n        // @see http://www.w3.org/TR/html5/index.html#events-0\n        EventConstructor = SyntheticEvent$1;\n        break;\n    }\n    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n    accumulateTwoPhaseDispatches(event);\n    return event;\n  }\n};\n\nvar isInteractiveTopLevelEventType = SimpleEventPlugin.isInteractiveTopLevelEventType;\n\n\nvar CALLBACK_BOOKKEEPING_POOL_SIZE = 10;\nvar callbackBookkeepingPool = [];\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findRootContainerNode(inst) {\n  // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n  // traversal, but caching is difficult to do correctly without using a\n  // mutation observer to listen for all DOM changes.\n  while (inst['return']) {\n    inst = inst['return'];\n  }\n  if (inst.tag !== HostRoot) {\n    // This can happen if we're in a detached tree.\n    return null;\n  }\n  return inst.stateNode.containerInfo;\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst) {\n  if (callbackBookkeepingPool.length) {\n    var instance = callbackBookkeepingPool.pop();\n    instance.topLevelType = topLevelType;\n    instance.nativeEvent = nativeEvent;\n    instance.targetInst = targetInst;\n    return instance;\n  }\n  return {\n    topLevelType: topLevelType,\n    nativeEvent: nativeEvent,\n    targetInst: targetInst,\n    ancestors: []\n  };\n}\n\nfunction releaseTopLevelCallbackBookKeeping(instance) {\n  instance.topLevelType = null;\n  instance.nativeEvent = null;\n  instance.targetInst = null;\n  instance.ancestors.length = 0;\n  if (callbackBookkeepingPool.length < CALLBACK_BOOKKEEPING_POOL_SIZE) {\n    callbackBookkeepingPool.push(instance);\n  }\n}\n\nfunction handleTopLevel(bookKeeping) {\n  var targetInst = bookKeeping.targetInst;\n\n  // Loop through the hierarchy, in case there's any nested components.\n  // It's important that we build the array of ancestors before calling any\n  // event handlers, because event handlers can modify the DOM, leading to\n  // inconsistencies with ReactMount's node cache. See #1105.\n  var ancestor = targetInst;\n  do {\n    if (!ancestor) {\n      bookKeeping.ancestors.push(ancestor);\n      break;\n    }\n    var root = findRootContainerNode(ancestor);\n    if (!root) {\n      break;\n    }\n    bookKeeping.ancestors.push(ancestor);\n    ancestor = getClosestInstanceFromNode(root);\n  } while (ancestor);\n\n  for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n    targetInst = bookKeeping.ancestors[i];\n    runExtractedEventsInBatch(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n  }\n}\n\n// TODO: can we stop exporting these?\nvar _enabled = true;\n\nfunction setEnabled(enabled) {\n  _enabled = !!enabled;\n}\n\nfunction isEnabled() {\n  return _enabled;\n}\n\n/**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `BrowserEventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n *                  remove the listener.\n * @internal\n */\nfunction trapBubbledEvent(topLevelType, handlerBaseName, element) {\n  if (!element) {\n    return null;\n  }\n  var dispatch = isInteractiveTopLevelEventType(topLevelType) ? dispatchInteractiveEvent : dispatchEvent;\n\n  addEventBubbleListener(element, handlerBaseName,\n  // Check if interactive and wrap in interactiveUpdates\n  dispatch.bind(null, topLevelType));\n}\n\n/**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `BrowserEventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n *                  remove the listener.\n * @internal\n */\nfunction trapCapturedEvent(topLevelType, handlerBaseName, element) {\n  if (!element) {\n    return null;\n  }\n  var dispatch = isInteractiveTopLevelEventType(topLevelType) ? dispatchInteractiveEvent : dispatchEvent;\n\n  addEventCaptureListener(element, handlerBaseName,\n  // Check if interactive and wrap in interactiveUpdates\n  dispatch.bind(null, topLevelType));\n}\n\nfunction dispatchInteractiveEvent(topLevelType, nativeEvent) {\n  interactiveUpdates(dispatchEvent, topLevelType, nativeEvent);\n}\n\nfunction dispatchEvent(topLevelType, nativeEvent) {\n  if (!_enabled) {\n    return;\n  }\n\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n  if (targetInst !== null && typeof targetInst.tag === 'number' && !isFiberMounted(targetInst)) {\n    // If we get an event (ex: img onload) before committing that\n    // component's mount, ignore it for now (that is, treat it as if it was an\n    // event on a non-React tree). We might also consider queueing events and\n    // dispatching them after the mount.\n    targetInst = null;\n  }\n\n  var bookKeeping = getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst);\n\n  try {\n    // Event queue being processed in the same cycle allows\n    // `preventDefault`.\n    batchedUpdates(handleTopLevel, bookKeeping);\n  } finally {\n    releaseTopLevelCallbackBookKeeping(bookKeeping);\n  }\n}\n\nvar ReactDOMEventListener = Object.freeze({\n\tget _enabled () { return _enabled; },\n\tsetEnabled: setEnabled,\n\tisEnabled: isEnabled,\n\ttrapBubbledEvent: trapBubbledEvent,\n\ttrapCapturedEvent: trapCapturedEvent,\n\tdispatchEvent: dispatchEvent\n});\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n  prefixes['Moz' + styleProp] = 'moz' + eventName;\n  prefixes['ms' + styleProp] = 'MS' + eventName;\n  prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n  return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n  animationend: makePrefixMap('Animation', 'AnimationEnd'),\n  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n  animationstart: makePrefixMap('Animation', 'AnimationStart'),\n  transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n  style = document.createElement('div').style;\n\n  // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n  if (!('AnimationEvent' in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  }\n\n  // Same as above\n  if (!('TransitionEvent' in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return eventName;\n}\n\n/**\n * Types of raw signals from the browser caught at the top level.\n *\n * For events like 'submit' or audio/video events which don't consistently\n * bubble (which we trap at a lower node than `document`), binding\n * at `document` would cause duplicate events so we don't include them here.\n */\nvar topLevelTypes = {\n  topAnimationEnd: getVendorPrefixedEventName('animationend'),\n  topAnimationIteration: getVendorPrefixedEventName('animationiteration'),\n  topAnimationStart: getVendorPrefixedEventName('animationstart'),\n  topBlur: 'blur',\n  topCancel: 'cancel',\n  topChange: 'change',\n  topClick: 'click',\n  topClose: 'close',\n  topCompositionEnd: 'compositionend',\n  topCompositionStart: 'compositionstart',\n  topCompositionUpdate: 'compositionupdate',\n  topContextMenu: 'contextmenu',\n  topCopy: 'copy',\n  topCut: 'cut',\n  topDoubleClick: 'dblclick',\n  topDrag: 'drag',\n  topDragEnd: 'dragend',\n  topDragEnter: 'dragenter',\n  topDragExit: 'dragexit',\n  topDragLeave: 'dragleave',\n  topDragOver: 'dragover',\n  topDragStart: 'dragstart',\n  topDrop: 'drop',\n  topFocus: 'focus',\n  topInput: 'input',\n  topKeyDown: 'keydown',\n  topKeyPress: 'keypress',\n  topKeyUp: 'keyup',\n  topLoad: 'load',\n  topLoadStart: 'loadstart',\n  topMouseDown: 'mousedown',\n  topMouseMove: 'mousemove',\n  topMouseOut: 'mouseout',\n  topMouseOver: 'mouseover',\n  topMouseUp: 'mouseup',\n  topPaste: 'paste',\n  topScroll: 'scroll',\n  topSelectionChange: 'selectionchange',\n  topTextInput: 'textInput',\n  topToggle: 'toggle',\n  topTouchCancel: 'touchcancel',\n  topTouchEnd: 'touchend',\n  topTouchMove: 'touchmove',\n  topTouchStart: 'touchstart',\n  topTransitionEnd: getVendorPrefixedEventName('transitionend'),\n  topWheel: 'wheel'\n};\n\n// There are so many media events, it makes sense to just\n// maintain a list of them. Note these aren't technically\n// \"top-level\" since they don't bubble. We should come up\n// with a better naming convention if we come to refactoring\n// the event system.\nvar mediaEventTypes = {\n  topAbort: 'abort',\n  topCanPlay: 'canplay',\n  topCanPlayThrough: 'canplaythrough',\n  topDurationChange: 'durationchange',\n  topEmptied: 'emptied',\n  topEncrypted: 'encrypted',\n  topEnded: 'ended',\n  topError: 'error',\n  topLoadedData: 'loadeddata',\n  topLoadedMetadata: 'loadedmetadata',\n  topLoadStart: 'loadstart',\n  topPause: 'pause',\n  topPlay: 'play',\n  topPlaying: 'playing',\n  topProgress: 'progress',\n  topRateChange: 'ratechange',\n  topSeeked: 'seeked',\n  topSeeking: 'seeking',\n  topStalled: 'stalled',\n  topSuspend: 'suspend',\n  topTimeUpdate: 'timeupdate',\n  topVolumeChange: 'volumechange',\n  topWaiting: 'waiting'\n};\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n *  - Top-level delegation is used to trap most native browser events. This\n *    may only occur in the main thread and is the responsibility of\n *    ReactDOMEventListener, which is injected and can therefore support\n *    pluggable event sources. This is the only work that occurs in the main\n *    thread.\n *\n *  - We normalize and de-duplicate events to account for browser quirks. This\n *    may be done in the worker thread.\n *\n *  - Forward these native events (with the associated top-level type used to\n *    trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n *    to extract any synthetic events.\n *\n *  - The `EventPluginHub` will then process each event by annotating them with\n *    \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n *  - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+    .\n * |    DOM     |    .\n * +------------+    .\n *       |           .\n *       v           .\n * +------------+    .\n * | ReactEvent |    .\n * |  Listener  |    .\n * +------------+    .                         +-----------+\n *       |           .               +--------+|SimpleEvent|\n *       |           .               |         |Plugin     |\n * +-----|------+    .               v         +-----------+\n * |     |      |    .    +--------------+                    +------------+\n * |     +-----------.--->|EventPluginHub|                    |    Event   |\n * |            |    .    |              |     +-----------+  | Propagators|\n * | ReactEvent |    .    |              |     |TapEvent   |  |------------|\n * |  Emitter   |    .    |              |<---+|Plugin     |  |other plugin|\n * |            |    .    |              |     +-----------+  |  utilities |\n * |     +-----------.--->|              |                    +------------+\n * |     |      |    .    +--------------+\n * +-----|------+    .                ^        +-----------+\n *       |           .                |        |Enter/Leave|\n *       +           .                +-------+|Plugin     |\n * +-------------+   .                         +-----------+\n * | application |   .\n * |-------------|   .\n * |             |   .\n * |             |   .\n * +-------------+   .\n *                   .\n *    React Core     .  General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar reactTopListenersCounter = 0;\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + ('' + Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n  // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n  // directly.\n  if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n    mountAt[topListenersIDKey] = reactTopListenersCounter++;\n    alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n  }\n  return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\nfunction listenTo(registrationName, contentDocumentHandle) {\n  var mountAt = contentDocumentHandle;\n  var isListening = getListeningForDocument(mountAt);\n  var dependencies = registrationNameDependencies[registrationName];\n\n  for (var i = 0; i < dependencies.length; i++) {\n    var dependency = dependencies[i];\n    if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n      if (dependency === 'topScroll') {\n        trapCapturedEvent('topScroll', 'scroll', mountAt);\n      } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n        trapCapturedEvent('topFocus', 'focus', mountAt);\n        trapCapturedEvent('topBlur', 'blur', mountAt);\n\n        // to make sure blur and focus event listeners are only attached once\n        isListening.topBlur = true;\n        isListening.topFocus = true;\n      } else if (dependency === 'topCancel') {\n        if (isEventSupported('cancel', true)) {\n          trapCapturedEvent('topCancel', 'cancel', mountAt);\n        }\n        isListening.topCancel = true;\n      } else if (dependency === 'topClose') {\n        if (isEventSupported('close', true)) {\n          trapCapturedEvent('topClose', 'close', mountAt);\n        }\n        isListening.topClose = true;\n      } else if (topLevelTypes.hasOwnProperty(dependency)) {\n        trapBubbledEvent(dependency, topLevelTypes[dependency], mountAt);\n      }\n\n      isListening[dependency] = true;\n    }\n  }\n}\n\nfunction isListeningToAllDependencies(registrationName, mountAt) {\n  var isListening = getListeningForDocument(mountAt);\n  var dependencies = registrationNameDependencies[registrationName];\n  for (var i = 0; i < dependencies.length; i++) {\n    var dependency = dependencies[i];\n    if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\nfunction getLeafNode(node) {\n  while (node && node.firstChild) {\n    node = node.firstChild;\n  }\n  return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n    node = node.parentNode;\n  }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === TEXT_NODE) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart <= offset && nodeEnd >= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\nfunction getOffsets(outerNode) {\n  var selection = window.getSelection && window.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset;\n\n  // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n  // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n  // expose properties, triggering a \"Permission denied error\" if any of its\n  // properties are accessed. The only seemingly possible way to avoid erroring\n  // is to access a property that typically works for non-anonymous divs and\n  // catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n  try {\n    /* eslint-disable no-unused-expressions */\n    anchorNode.nodeType;\n    focusNode.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var length = 0;\n  var start = -1;\n  var end = -1;\n  var indexWithinAnchor = 0;\n  var indexWithinFocus = 0;\n  var node = outerNode;\n  var parentNode = null;\n\n  outer: while (true) {\n    var next = null;\n\n    while (true) {\n      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n        start = length + anchorOffset;\n      }\n      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n        end = length + focusOffset;\n      }\n\n      if (node.nodeType === TEXT_NODE) {\n        length += node.nodeValue.length;\n      }\n\n      if ((next = node.firstChild) === null) {\n        break;\n      }\n      // Moving from `node` to its first child `next`.\n      parentNode = node;\n      node = next;\n    }\n\n    while (true) {\n      if (node === outerNode) {\n        // If `outerNode` has children, this is always the second time visiting\n        // it. If it has no children, this is still the first loop, and the only\n        // valid selection is anchorNode and focusNode both equal to this node\n        // and both offsets 0, in which case we will have handled above.\n        break outer;\n      }\n      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n        start = length;\n      }\n      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n        end = length;\n      }\n      if ((next = node.nextSibling) !== null) {\n        break;\n      }\n      node = parentNode;\n      parentNode = node.parentNode;\n    }\n\n    // Moving from `node` to its next sibling `next`.\n    node = next;\n  }\n\n  if (start === -1 || end === -1) {\n    // This should never happen. (Would happen if the anchor/focus nodes aren't\n    // actually inside the passed-in node.)\n    return null;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setOffsets(node, offsets) {\n  if (!window.getSelection) {\n    return;\n  }\n\n  var selection = window.getSelection();\n  var length = node[getTextContentAccessor()].length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n  // IE 11 uses modern selection, but doesn't support the extend method.\n  // Flip backward selections, so we can set with a single range.\n  if (!selection.extend && start > end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset(node, start);\n  var endMarker = getNodeForCharacterOffset(node, end);\n\n  if (startMarker && endMarker) {\n    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n      return;\n    }\n    var range = document.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start > end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nfunction isInDocument(node) {\n  return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\n\nfunction getSelectionInformation() {\n  var focusedElem = getActiveElement();\n  return {\n    focusedElem: focusedElem,\n    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection$1(focusedElem) : null\n  };\n}\n\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\nfunction restoreSelection(priorSelectionInformation) {\n  var curFocusedElem = getActiveElement();\n  var priorFocusedElem = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n    if (hasSelectionCapabilities(priorFocusedElem)) {\n      setSelection(priorFocusedElem, priorSelectionRange);\n    }\n\n    // Focusing a node can change the scroll position, which is undesirable\n    var ancestors = [];\n    var ancestor = priorFocusedElem;\n    while (ancestor = ancestor.parentNode) {\n      if (ancestor.nodeType === ELEMENT_NODE) {\n        ancestors.push({\n          element: ancestor,\n          left: ancestor.scrollLeft,\n          top: ancestor.scrollTop\n        });\n      }\n    }\n\n    priorFocusedElem.focus();\n\n    for (var i = 0; i < ancestors.length; i++) {\n      var info = ancestors[i];\n      info.element.scrollLeft = info.left;\n      info.element.scrollTop = info.top;\n    }\n  }\n}\n\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\nfunction getSelection$1(input) {\n  var selection = void 0;\n\n  if ('selectionStart' in input) {\n    // Modern browser with input or textarea.\n    selection = {\n      start: input.selectionStart,\n      end: input.selectionEnd\n    };\n  } else {\n    // Content editable or old IE textarea.\n    selection = getOffsets(input);\n  }\n\n  return selection || { start: 0, end: 0 };\n}\n\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input     Set selection bounds of this input or textarea\n * -@offsets   Object of same form that is returned from get*\n */\nfunction setSelection(input, offsets) {\n  var start = offsets.start,\n      end = offsets.end;\n\n  if (end === undefined) {\n    end = start;\n  }\n\n  if ('selectionStart' in input) {\n    input.selectionStart = start;\n    input.selectionEnd = Math.min(end, input.value.length);\n  } else {\n    setOffsets(input, offsets);\n  }\n}\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes$3 = {\n  select: {\n    phasedRegistrationNames: {\n      bubbled: 'onSelect',\n      captured: 'onSelectCapture'\n    },\n    dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n  }\n};\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n  if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else if (window.getSelection) {\n    var selection = window.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there's no focused element we\n  // won't dispatch.\n  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement()) {\n    return null;\n  }\n\n  // Only fire when selection has actually changed.\n  var currentSelection = getSelection(activeElement$1);\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n\n    var syntheticEvent = SyntheticEvent$1.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget);\n\n    syntheticEvent.type = 'select';\n    syntheticEvent.target = activeElement$1;\n\n    accumulateTwoPhaseDispatches(syntheticEvent);\n\n    return syntheticEvent;\n  }\n\n  return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n  eventTypes: eventTypes$3,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var doc = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget.document : nativeEventTarget.nodeType === DOCUMENT_NODE ? nativeEventTarget : nativeEventTarget.ownerDocument;\n    // Track whether all listeners exists for this plugin. If none exist, we do\n    // not extract events. See #3639.\n    if (!doc || !isListeningToAllDependencies('onSelect', doc)) {\n      return null;\n    }\n\n    var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window;\n\n    switch (topLevelType) {\n      // Track the input node that has focus.\n      case 'topFocus':\n        if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n          activeElement$1 = targetNode;\n          activeElementInst$1 = targetInst;\n          lastSelection = null;\n        }\n        break;\n      case 'topBlur':\n        activeElement$1 = null;\n        activeElementInst$1 = null;\n        lastSelection = null;\n        break;\n      // Don't fire the event while the user is dragging. This matches the\n      // semantics of the native select event.\n      case 'topMouseDown':\n        mouseDown = true;\n        break;\n      case 'topContextMenu':\n      case 'topMouseUp':\n        mouseDown = false;\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n      // Chrome and IE fire non-standard event when selection is changed (and\n      // sometimes when it hasn't). IE's event fires out of order with respect\n      // to key and input events on deletion, so we discard it.\n      //\n      // Firefox doesn't support selectionchange, so check selection status\n      // after each key entry. The selection changes after keydown and before\n      // keyup, but we check on keydown as well in the case of holding down a\n      // key, when multiple keydown events are fired but only one keyup is.\n      // This is also our approach for IE handling, for the reason above.\n      case 'topSelectionChange':\n        if (skipSelectionChangeEvent) {\n          break;\n        }\n      // falls through\n      case 'topKeyDown':\n      case 'topKeyUp':\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n    }\n\n    return null;\n  }\n};\n\n/**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\ninjection.injectEventPluginOrder(DOMEventPluginOrder);\ninjection$1.injectComponentTree(ReactDOMComponentTree);\n\n/**\n * Some important event plugins included by default (without having to require\n * them).\n */\ninjection.injectEventPluginsByName({\n  SimpleEventPlugin: SimpleEventPlugin,\n  EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n  ChangeEventPlugin: ChangeEventPlugin,\n  SelectEventPlugin: SelectEventPlugin,\n  BeforeInputEventPlugin: BeforeInputEventPlugin\n});\n\n// Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// TODO: Use an opaque type once ESLint et al support the syntax\n\n\nvar NoWork = 0;\nvar Sync = 1;\nvar Never = MAX_SIGNED_31_BIT_INT;\n\nvar UNIT_SIZE = 10;\nvar MAGIC_NUMBER_OFFSET = 2;\n\n// 1 unit of expiration time represents 10ms.\nfunction msToExpirationTime(ms) {\n  // Always add an offset so that we don't clash with the magic number for NoWork.\n  return (ms / UNIT_SIZE | 0) + MAGIC_NUMBER_OFFSET;\n}\n\nfunction expirationTimeToMs(expirationTime) {\n  return (expirationTime - MAGIC_NUMBER_OFFSET) * UNIT_SIZE;\n}\n\nfunction ceiling(num, precision) {\n  return ((num / precision | 0) + 1) * precision;\n}\n\nfunction computeExpirationBucket(currentTime, expirationInMs, bucketSizeMs) {\n  return ceiling(currentTime + expirationInMs / UNIT_SIZE, bucketSizeMs / UNIT_SIZE);\n}\n\nvar NoContext = 0;\nvar AsyncMode = 1;\nvar StrictMode = 2;\n\nvar hasBadMapPolyfill = void 0;\n\n{\n  hasBadMapPolyfill = false;\n  try {\n    var nonExtensibleObject = Object.preventExtensions({});\n    var testMap = new Map([[nonExtensibleObject, null]]);\n    var testSet = new Set([nonExtensibleObject]);\n    // This is necessary for Rollup to not consider these unused.\n    // https://github.com/rollup/rollup/issues/1771\n    // TODO: we can remove these if Rollup fixes the bug.\n    testMap.set(0, 0);\n    testSet.add(0);\n  } catch (e) {\n    // TODO: Consider warning about bad polyfills\n    hasBadMapPolyfill = true;\n  }\n}\n\n// A Fiber is work on a Component that needs to be done or was done. There can\n// be more than one per component.\n\n\nvar debugCounter = void 0;\n\n{\n  debugCounter = 1;\n}\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n  // Instance\n  this.tag = tag;\n  this.key = key;\n  this.type = null;\n  this.stateNode = null;\n\n  // Fiber\n  this['return'] = null;\n  this.child = null;\n  this.sibling = null;\n  this.index = 0;\n\n  this.ref = null;\n\n  this.pendingProps = pendingProps;\n  this.memoizedProps = null;\n  this.updateQueue = null;\n  this.memoizedState = null;\n\n  this.mode = mode;\n\n  // Effects\n  this.effectTag = NoEffect;\n  this.nextEffect = null;\n\n  this.firstEffect = null;\n  this.lastEffect = null;\n\n  this.expirationTime = NoWork;\n\n  this.alternate = null;\n\n  {\n    this._debugID = debugCounter++;\n    this._debugSource = null;\n    this._debugOwner = null;\n    this._debugIsCurrentlyTiming = false;\n    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n      Object.preventExtensions(this);\n    }\n  }\n}\n\n// This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n//    more difficult to predict when they get optimized and they are almost\n//    never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n//    always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n//    to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n//    is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n//    compatible.\nvar createFiber = function (tag, pendingProps, key, mode) {\n  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n  return new FiberNode(tag, pendingProps, key, mode);\n};\n\nfunction shouldConstruct(Component) {\n  return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\n// This is used to create an alternate fiber to do work on.\nfunction createWorkInProgress(current, pendingProps, expirationTime) {\n  var workInProgress = current.alternate;\n  if (workInProgress === null) {\n    // We use a double buffering pooling technique because we know that we'll\n    // only ever need at most two versions of a tree. We pool the \"other\" unused\n    // node that we're free to reuse. This is lazily created to avoid allocating\n    // extra objects for things that are never updated. It also allow us to\n    // reclaim the extra memory if needed.\n    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n    workInProgress.type = current.type;\n    workInProgress.stateNode = current.stateNode;\n\n    {\n      // DEV-only fields\n      workInProgress._debugID = current._debugID;\n      workInProgress._debugSource = current._debugSource;\n      workInProgress._debugOwner = current._debugOwner;\n    }\n\n    workInProgress.alternate = current;\n    current.alternate = workInProgress;\n  } else {\n    workInProgress.pendingProps = pendingProps;\n\n    // We already have an alternate.\n    // Reset the effect tag.\n    workInProgress.effectTag = NoEffect;\n\n    // The effect list is no longer valid.\n    workInProgress.nextEffect = null;\n    workInProgress.firstEffect = null;\n    workInProgress.lastEffect = null;\n  }\n\n  workInProgress.expirationTime = expirationTime;\n\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n\n  // These will be overridden during the parent's reconciliation\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n\n  return workInProgress;\n}\n\nfunction createHostRootFiber(isAsync) {\n  var mode = isAsync ? AsyncMode | StrictMode : NoContext;\n  return createFiber(HostRoot, null, null, mode);\n}\n\nfunction createFiberFromElement(element, mode, expirationTime) {\n  var owner = null;\n  {\n    owner = element._owner;\n  }\n\n  var fiber = void 0;\n  var type = element.type;\n  var key = element.key;\n  var pendingProps = element.props;\n\n  var fiberTag = void 0;\n  if (typeof type === 'function') {\n    fiberTag = shouldConstruct(type) ? ClassComponent : IndeterminateComponent;\n  } else if (typeof type === 'string') {\n    fiberTag = HostComponent;\n  } else {\n    switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, expirationTime, key);\n      case REACT_ASYNC_MODE_TYPE:\n        fiberTag = Mode;\n        mode |= AsyncMode | StrictMode;\n        break;\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = Mode;\n        mode |= StrictMode;\n        break;\n      case REACT_CALL_TYPE:\n        fiberTag = CallComponent;\n        break;\n      case REACT_RETURN_TYPE:\n        fiberTag = ReturnComponent;\n        break;\n      default:\n        {\n          if (typeof type === 'object' && type !== null) {\n            switch (type.$$typeof) {\n              case REACT_PROVIDER_TYPE:\n                fiberTag = ContextProvider;\n                break;\n              case REACT_CONTEXT_TYPE:\n                // This is a consumer\n                fiberTag = ContextConsumer;\n                break;\n              case REACT_FORWARD_REF_TYPE:\n                fiberTag = ForwardRef;\n                break;\n              default:\n                if (typeof type.tag === 'number') {\n                  // Currently assumed to be a continuation and therefore is a\n                  // fiber already.\n                  // TODO: The yield system is currently broken for updates in\n                  // some cases. The reified yield stores a fiber, but we don't\n                  // know which fiber that is; the current or a workInProgress?\n                  // When the continuation gets rendered here we don't know if we\n                  // can reuse that fiber or if we need to clone it. There is\n                  // probably a clever way to restructure this.\n                  fiber = type;\n                  fiber.pendingProps = pendingProps;\n                  fiber.expirationTime = expirationTime;\n                  return fiber;\n                } else {\n                  throwOnInvalidElementType(type, owner);\n                }\n                break;\n            }\n          } else {\n            throwOnInvalidElementType(type, owner);\n          }\n        }\n    }\n  }\n\n  fiber = createFiber(fiberTag, pendingProps, key, mode);\n  fiber.type = type;\n  fiber.expirationTime = expirationTime;\n\n  {\n    fiber._debugSource = element._source;\n    fiber._debugOwner = element._owner;\n  }\n\n  return fiber;\n}\n\nfunction throwOnInvalidElementType(type, owner) {\n  var info = '';\n  {\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n    }\n    var ownerName = owner ? getComponentName(owner) : null;\n    if (ownerName) {\n      info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n    }\n  }\n  invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info);\n}\n\nfunction createFiberFromFragment(elements, mode, expirationTime, key) {\n  var fiber = createFiber(Fragment, elements, key, mode);\n  fiber.expirationTime = expirationTime;\n  return fiber;\n}\n\nfunction createFiberFromText(content, mode, expirationTime) {\n  var fiber = createFiber(HostText, content, null, mode);\n  fiber.expirationTime = expirationTime;\n  return fiber;\n}\n\nfunction createFiberFromHostInstanceForDeletion() {\n  var fiber = createFiber(HostComponent, null, null, NoContext);\n  fiber.type = 'DELETED';\n  return fiber;\n}\n\nfunction createFiberFromPortal(portal, mode, expirationTime) {\n  var pendingProps = portal.children !== null ? portal.children : [];\n  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n  fiber.expirationTime = expirationTime;\n  fiber.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null, // Used by persistent updates\n    implementation: portal.implementation\n  };\n  return fiber;\n}\n\n// Used for stashing WIP properties to replay failed work in DEV.\nfunction assignFiberPropertiesInDEV(target, source) {\n  if (target === null) {\n    // This Fiber's initial properties will always be overwritten.\n    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.\n    target = createFiber(IndeterminateComponent, null, null, NoContext);\n  }\n\n  // This is intentionally written as a list of all properties.\n  // We tried to use Object.assign() instead but this is called in\n  // the hottest path, and Object.assign() was too slow:\n  // https://github.com/facebook/react/issues/12502\n  // This code is DEV-only so size is not a concern.\n\n  target.tag = source.tag;\n  target.key = source.key;\n  target.type = source.type;\n  target.stateNode = source.stateNode;\n  target['return'] = source['return'];\n  target.child = source.child;\n  target.sibling = source.sibling;\n  target.index = source.index;\n  target.ref = source.ref;\n  target.pendingProps = source.pendingProps;\n  target.memoizedProps = source.memoizedProps;\n  target.updateQueue = source.updateQueue;\n  target.memoizedState = source.memoizedState;\n  target.mode = source.mode;\n  target.effectTag = source.effectTag;\n  target.nextEffect = source.nextEffect;\n  target.firstEffect = source.firstEffect;\n  target.lastEffect = source.lastEffect;\n  target.expirationTime = source.expirationTime;\n  target.alternate = source.alternate;\n  target._debugID = source._debugID;\n  target._debugSource = source._debugSource;\n  target._debugOwner = source._debugOwner;\n  target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;\n  return target;\n}\n\n// TODO: This should be lifted into the renderer.\n\n\nfunction createFiberRoot(containerInfo, isAsync, hydrate) {\n  // Cyclic construction. This cheats the type system right now because\n  // stateNode is any.\n  var uninitializedFiber = createHostRootFiber(isAsync);\n  var root = {\n    current: uninitializedFiber,\n    containerInfo: containerInfo,\n    pendingChildren: null,\n    pendingCommitExpirationTime: NoWork,\n    finishedWork: null,\n    context: null,\n    pendingContext: null,\n    hydrate: hydrate,\n    remainingExpirationTime: NoWork,\n    firstBatch: null,\n    nextScheduledRoot: null\n  };\n  uninitializedFiber.stateNode = root;\n  return root;\n}\n\nvar onCommitFiberRoot = null;\nvar onCommitFiberUnmount = null;\nvar hasLoggedError = false;\n\nfunction catchErrors(fn) {\n  return function (arg) {\n    try {\n      return fn(arg);\n    } catch (err) {\n      if (true && !hasLoggedError) {\n        hasLoggedError = true;\n        warning(false, 'React DevTools encountered an error: %s', err);\n      }\n    }\n  };\n}\n\nfunction injectInternals(internals) {\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n    // No DevTools\n    return false;\n  }\n  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (hook.isDisabled) {\n    // This isn't a real property on the hook, but it can be set to opt out\n    // of DevTools integration and associated warnings and logs.\n    // https://github.com/facebook/react/issues/3877\n    return true;\n  }\n  if (!hook.supportsFiber) {\n    {\n      warning(false, 'The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools');\n    }\n    // DevTools exists, even though it doesn't support Fiber.\n    return true;\n  }\n  try {\n    var rendererID = hook.inject(internals);\n    // We have successfully injected, so now it is safe to set up hooks.\n    onCommitFiberRoot = catchErrors(function (root) {\n      return hook.onCommitFiberRoot(rendererID, root);\n    });\n    onCommitFiberUnmount = catchErrors(function (fiber) {\n      return hook.onCommitFiberUnmount(rendererID, fiber);\n    });\n  } catch (err) {\n    // Catch all errors because it is unsafe to throw during initialization.\n    {\n      warning(false, 'React DevTools encountered an error: %s.', err);\n    }\n  }\n  // DevTools exists\n  return true;\n}\n\nfunction onCommitRoot(root) {\n  if (typeof onCommitFiberRoot === 'function') {\n    onCommitFiberRoot(root);\n  }\n}\n\nfunction onCommitUnmount(fiber) {\n  if (typeof onCommitFiberUnmount === 'function') {\n    onCommitFiberUnmount(fiber);\n  }\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n  var printWarning = function (format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.warn(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  lowPriorityWarning = function (condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nvar ReactStrictModeWarnings = {\n  discardPendingWarnings: function () {},\n  flushPendingDeprecationWarnings: function () {},\n  flushPendingUnsafeLifecycleWarnings: function () {},\n  recordDeprecationWarnings: function (fiber, instance) {},\n  recordUnsafeLifecycleWarnings: function (fiber, instance) {}\n};\n\n{\n  var LIFECYCLE_SUGGESTIONS = {\n    UNSAFE_componentWillMount: 'componentDidMount',\n    UNSAFE_componentWillReceiveProps: 'static getDerivedStateFromProps',\n    UNSAFE_componentWillUpdate: 'componentDidUpdate'\n  };\n\n  var pendingComponentWillMountWarnings = [];\n  var pendingComponentWillReceivePropsWarnings = [];\n  var pendingComponentWillUpdateWarnings = [];\n  var pendingUnsafeLifecycleWarnings = new Map();\n\n  // Tracks components we have already warned about.\n  var didWarnAboutDeprecatedLifecycles = new Set();\n  var didWarnAboutUnsafeLifecycles = new Set();\n\n  var setToSortedString = function (set) {\n    var array = [];\n    set.forEach(function (value) {\n      array.push(value);\n    });\n    return array.sort().join(', ');\n  };\n\n  ReactStrictModeWarnings.discardPendingWarnings = function () {\n    pendingComponentWillMountWarnings = [];\n    pendingComponentWillReceivePropsWarnings = [];\n    pendingComponentWillUpdateWarnings = [];\n    pendingUnsafeLifecycleWarnings = new Map();\n  };\n\n  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {\n    pendingUnsafeLifecycleWarnings.forEach(function (lifecycleWarningsMap, strictRoot) {\n      var lifecyclesWarningMesages = [];\n\n      Object.keys(lifecycleWarningsMap).forEach(function (lifecycle) {\n        var lifecycleWarnings = lifecycleWarningsMap[lifecycle];\n        if (lifecycleWarnings.length > 0) {\n          var componentNames = new Set();\n          lifecycleWarnings.forEach(function (fiber) {\n            componentNames.add(getComponentName(fiber) || 'Component');\n            didWarnAboutUnsafeLifecycles.add(fiber.type);\n          });\n\n          var formatted = lifecycle.replace('UNSAFE_', '');\n          var suggestion = LIFECYCLE_SUGGESTIONS[lifecycle];\n          var sortedComponentNames = setToSortedString(componentNames);\n\n          lifecyclesWarningMesages.push(formatted + ': Please update the following components to use ' + (suggestion + ' instead: ' + sortedComponentNames));\n        }\n      });\n\n      if (lifecyclesWarningMesages.length > 0) {\n        var strictRootComponentStack = getStackAddendumByWorkInProgressFiber(strictRoot);\n\n        warning(false, 'Unsafe lifecycle methods were found within a strict-mode tree:%s' + '\\n\\n%s' + '\\n\\nLearn more about this warning here:' + '\\nhttps://fb.me/react-strict-mode-warnings', strictRootComponentStack, lifecyclesWarningMesages.join('\\n\\n'));\n      }\n    });\n\n    pendingUnsafeLifecycleWarnings = new Map();\n  };\n\n  var getStrictRoot = function (fiber) {\n    var maybeStrictRoot = null;\n\n    while (fiber !== null) {\n      if (fiber.mode & StrictMode) {\n        maybeStrictRoot = fiber;\n      }\n\n      fiber = fiber['return'];\n    }\n\n    return maybeStrictRoot;\n  };\n\n  ReactStrictModeWarnings.flushPendingDeprecationWarnings = function () {\n    if (pendingComponentWillMountWarnings.length > 0) {\n      var uniqueNames = new Set();\n      pendingComponentWillMountWarnings.forEach(function (fiber) {\n        uniqueNames.add(getComponentName(fiber) || 'Component');\n        didWarnAboutDeprecatedLifecycles.add(fiber.type);\n      });\n\n      var sortedNames = setToSortedString(uniqueNames);\n\n      lowPriorityWarning$1(false, 'componentWillMount is deprecated and will be removed in the next major version. ' + 'Use componentDidMount instead. As a temporary workaround, ' + 'you can rename to UNSAFE_componentWillMount.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here:' + '\\nhttps://fb.me/react-async-component-lifecycle-hooks', sortedNames);\n\n      pendingComponentWillMountWarnings = [];\n    }\n\n    if (pendingComponentWillReceivePropsWarnings.length > 0) {\n      var _uniqueNames = new Set();\n      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        _uniqueNames.add(getComponentName(fiber) || 'Component');\n        didWarnAboutDeprecatedLifecycles.add(fiber.type);\n      });\n\n      var _sortedNames = setToSortedString(_uniqueNames);\n\n      lowPriorityWarning$1(false, 'componentWillReceiveProps is deprecated and will be removed in the next major version. ' + 'Use static getDerivedStateFromProps instead.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here:' + '\\nhttps://fb.me/react-async-component-lifecycle-hooks', _sortedNames);\n\n      pendingComponentWillReceivePropsWarnings = [];\n    }\n\n    if (pendingComponentWillUpdateWarnings.length > 0) {\n      var _uniqueNames2 = new Set();\n      pendingComponentWillUpdateWarnings.forEach(function (fiber) {\n        _uniqueNames2.add(getComponentName(fiber) || 'Component');\n        didWarnAboutDeprecatedLifecycles.add(fiber.type);\n      });\n\n      var _sortedNames2 = setToSortedString(_uniqueNames2);\n\n      lowPriorityWarning$1(false, 'componentWillUpdate is deprecated and will be removed in the next major version. ' + 'Use componentDidUpdate instead. As a temporary workaround, ' + 'you can rename to UNSAFE_componentWillUpdate.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here:' + '\\nhttps://fb.me/react-async-component-lifecycle-hooks', _sortedNames2);\n\n      pendingComponentWillUpdateWarnings = [];\n    }\n  };\n\n  ReactStrictModeWarnings.recordDeprecationWarnings = function (fiber, instance) {\n    // Dedup strategy: Warn once per component.\n    if (didWarnAboutDeprecatedLifecycles.has(fiber.type)) {\n      return;\n    }\n\n    // Don't warn about react-lifecycles-compat polyfilled components.\n    if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n      pendingComponentWillMountWarnings.push(fiber);\n    }\n    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n      pendingComponentWillReceivePropsWarnings.push(fiber);\n    }\n    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n      pendingComponentWillUpdateWarnings.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {\n    var strictRoot = getStrictRoot(fiber);\n\n    // Dedup strategy: Warn once per component.\n    // This is difficult to track any other way since component names\n    // are often vague and are likely to collide between 3rd party libraries.\n    // An expand property is probably okay to use here since it's DEV-only,\n    // and will only be set in the event of serious warnings.\n    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n      return;\n    }\n\n    // Don't warn about react-lifecycles-compat polyfilled components.\n    // Note that it is sufficient to check for the presence of a\n    // single lifecycle, componentWillMount, with the polyfill flag.\n    if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning === true) {\n      return;\n    }\n\n    var warningsForRoot = void 0;\n    if (!pendingUnsafeLifecycleWarnings.has(strictRoot)) {\n      warningsForRoot = {\n        UNSAFE_componentWillMount: [],\n        UNSAFE_componentWillReceiveProps: [],\n        UNSAFE_componentWillUpdate: []\n      };\n\n      pendingUnsafeLifecycleWarnings.set(strictRoot, warningsForRoot);\n    } else {\n      warningsForRoot = pendingUnsafeLifecycleWarnings.get(strictRoot);\n    }\n\n    var unsafeLifecycles = [];\n    if (typeof instance.componentWillMount === 'function' || typeof instance.UNSAFE_componentWillMount === 'function') {\n      unsafeLifecycles.push('UNSAFE_componentWillMount');\n    }\n    if (typeof instance.componentWillReceiveProps === 'function' || typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n      unsafeLifecycles.push('UNSAFE_componentWillReceiveProps');\n    }\n    if (typeof instance.componentWillUpdate === 'function' || typeof instance.UNSAFE_componentWillUpdate === 'function') {\n      unsafeLifecycles.push('UNSAFE_componentWillUpdate');\n    }\n\n    if (unsafeLifecycles.length > 0) {\n      unsafeLifecycles.forEach(function (lifecycle) {\n        warningsForRoot[lifecycle].push(fiber);\n      });\n    }\n  };\n}\n\n// Exports ReactDOM.createRoot\nvar enableUserTimingAPI = true;\n\n// Mutating mode (React DOM, React ART, React Native):\nvar enableMutatingReconciler = true;\n// Experimental noop mode (currently unused):\nvar enableNoopReconciler = false;\n// Experimental persistent mode (Fabric):\nvar enablePersistentReconciler = false;\n// Experimental error-boundary API that can recover from errors within a single\n// render phase\nvar enableGetDerivedStateFromCatch = false;\n// Helps identify side effects in begin-phase lifecycle hooks and setState reducers:\nvar debugRenderPhaseSideEffects = false;\n\n// In some cases, StrictMode should also double-render lifecycles.\n// This can be confusing for tests though,\n// And it can be bad for performance in production.\n// This feature flag can be used to control the behavior:\nvar debugRenderPhaseSideEffectsForStrictMode = true;\n\n// To preserve the \"Pause on caught exceptions\" behavior of the debugger, we\n// replay the begin phase of a failed component inside invokeGuardedCallback.\nvar replayFailedUnitOfWorkWithInvokeGuardedCallback = true;\n\n// Warn about deprecated, async-unsafe lifecycles; relates to RFC #6:\nvar warnAboutDeprecatedLifecycles = false;\n\nvar alwaysUseRequestIdleCallbackPolyfill = false;\n\n// Only used in www builds.\n\n// Prefix measurements so that it's possible to filter them.\n// Longer prefixes are hard to read in DevTools.\nvar reactEmoji = '\\u269B';\nvar warningEmoji = '\\u26D4';\nvar supportsUserTiming = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';\n\n// Keep track of current fiber so that we know the path to unwind on pause.\n// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them?\nvar currentFiber = null;\n// If we're in the middle of user code, which fiber and method is it?\n// Reusing `currentFiber` would be confusing for this because user code fiber\n// can change during commit phase too, but we don't need to unwind it (since\n// lifecycles in the commit phase don't resemble a tree).\nvar currentPhase = null;\nvar currentPhaseFiber = null;\n// Did lifecycle hook schedule an update? This is often a performance problem,\n// so we will keep track of it, and include it in the report.\n// Track commits caused by cascading updates.\nvar isCommitting = false;\nvar hasScheduledUpdateInCurrentCommit = false;\nvar hasScheduledUpdateInCurrentPhase = false;\nvar commitCountInCurrentWorkLoop = 0;\nvar effectCountInCurrentCommit = 0;\nvar isWaitingForCallback = false;\n// During commits, we only show a measurement once per method name\n// to avoid stretch the commit phase with measurement overhead.\nvar labelsInCurrentCommit = new Set();\n\nvar formatMarkName = function (markName) {\n  return reactEmoji + ' ' + markName;\n};\n\nvar formatLabel = function (label, warning$$1) {\n  var prefix = warning$$1 ? warningEmoji + ' ' : reactEmoji + ' ';\n  var suffix = warning$$1 ? ' Warning: ' + warning$$1 : '';\n  return '' + prefix + label + suffix;\n};\n\nvar beginMark = function (markName) {\n  performance.mark(formatMarkName(markName));\n};\n\nvar clearMark = function (markName) {\n  performance.clearMarks(formatMarkName(markName));\n};\n\nvar endMark = function (label, markName, warning$$1) {\n  var formattedMarkName = formatMarkName(markName);\n  var formattedLabel = formatLabel(label, warning$$1);\n  try {\n    performance.measure(formattedLabel, formattedMarkName);\n  } catch (err) {}\n  // If previous mark was missing for some reason, this will throw.\n  // This could only happen if React crashed in an unexpected place earlier.\n  // Don't pile on with more errors.\n\n  // Clear marks immediately to avoid growing buffer.\n  performance.clearMarks(formattedMarkName);\n  performance.clearMeasures(formattedLabel);\n};\n\nvar getFiberMarkName = function (label, debugID) {\n  return label + ' (#' + debugID + ')';\n};\n\nvar getFiberLabel = function (componentName, isMounted, phase) {\n  if (phase === null) {\n    // These are composite component total time measurements.\n    return componentName + ' [' + (isMounted ? 'update' : 'mount') + ']';\n  } else {\n    // Composite component methods.\n    return componentName + '.' + phase;\n  }\n};\n\nvar beginFiberMark = function (fiber, phase) {\n  var componentName = getComponentName(fiber) || 'Unknown';\n  var debugID = fiber._debugID;\n  var isMounted = fiber.alternate !== null;\n  var label = getFiberLabel(componentName, isMounted, phase);\n\n  if (isCommitting && labelsInCurrentCommit.has(label)) {\n    // During the commit phase, we don't show duplicate labels because\n    // there is a fixed overhead for every measurement, and we don't\n    // want to stretch the commit phase beyond necessary.\n    return false;\n  }\n  labelsInCurrentCommit.add(label);\n\n  var markName = getFiberMarkName(label, debugID);\n  beginMark(markName);\n  return true;\n};\n\nvar clearFiberMark = function (fiber, phase) {\n  var componentName = getComponentName(fiber) || 'Unknown';\n  var debugID = fiber._debugID;\n  var isMounted = fiber.alternate !== null;\n  var label = getFiberLabel(componentName, isMounted, phase);\n  var markName = getFiberMarkName(label, debugID);\n  clearMark(markName);\n};\n\nvar endFiberMark = function (fiber, phase, warning$$1) {\n  var componentName = getComponentName(fiber) || 'Unknown';\n  var debugID = fiber._debugID;\n  var isMounted = fiber.alternate !== null;\n  var label = getFiberLabel(componentName, isMounted, phase);\n  var markName = getFiberMarkName(label, debugID);\n  endMark(label, markName, warning$$1);\n};\n\nvar shouldIgnoreFiber = function (fiber) {\n  // Host components should be skipped in the timeline.\n  // We could check typeof fiber.type, but does this work with RN?\n  switch (fiber.tag) {\n    case HostRoot:\n    case HostComponent:\n    case HostText:\n    case HostPortal:\n    case CallComponent:\n    case ReturnComponent:\n    case Fragment:\n    case ContextProvider:\n    case ContextConsumer:\n    case Mode:\n      return true;\n    default:\n      return false;\n  }\n};\n\nvar clearPendingPhaseMeasurement = function () {\n  if (currentPhase !== null && currentPhaseFiber !== null) {\n    clearFiberMark(currentPhaseFiber, currentPhase);\n  }\n  currentPhaseFiber = null;\n  currentPhase = null;\n  hasScheduledUpdateInCurrentPhase = false;\n};\n\nvar pauseTimers = function () {\n  // Stops all currently active measurements so that they can be resumed\n  // if we continue in a later deferred loop from the same unit of work.\n  var fiber = currentFiber;\n  while (fiber) {\n    if (fiber._debugIsCurrentlyTiming) {\n      endFiberMark(fiber, null, null);\n    }\n    fiber = fiber['return'];\n  }\n};\n\nvar resumeTimersRecursively = function (fiber) {\n  if (fiber['return'] !== null) {\n    resumeTimersRecursively(fiber['return']);\n  }\n  if (fiber._debugIsCurrentlyTiming) {\n    beginFiberMark(fiber, null);\n  }\n};\n\nvar resumeTimers = function () {\n  // Resumes all measurements that were active during the last deferred loop.\n  if (currentFiber !== null) {\n    resumeTimersRecursively(currentFiber);\n  }\n};\n\nfunction recordEffect() {\n  if (enableUserTimingAPI) {\n    effectCountInCurrentCommit++;\n  }\n}\n\nfunction recordScheduleUpdate() {\n  if (enableUserTimingAPI) {\n    if (isCommitting) {\n      hasScheduledUpdateInCurrentCommit = true;\n    }\n    if (currentPhase !== null && currentPhase !== 'componentWillMount' && currentPhase !== 'componentWillReceiveProps') {\n      hasScheduledUpdateInCurrentPhase = true;\n    }\n  }\n}\n\nfunction startRequestCallbackTimer() {\n  if (enableUserTimingAPI) {\n    if (supportsUserTiming && !isWaitingForCallback) {\n      isWaitingForCallback = true;\n      beginMark('(Waiting for async callback...)');\n    }\n  }\n}\n\nfunction stopRequestCallbackTimer(didExpire, expirationTime) {\n  if (enableUserTimingAPI) {\n    if (supportsUserTiming) {\n      isWaitingForCallback = false;\n      var warning$$1 = didExpire ? 'React was blocked by main thread' : null;\n      endMark('(Waiting for async callback... will force flush in ' + expirationTime + ' ms)', '(Waiting for async callback...)', warning$$1);\n    }\n  }\n}\n\nfunction startWorkTimer(fiber) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n      return;\n    }\n    // If we pause, this is the fiber to unwind from.\n    currentFiber = fiber;\n    if (!beginFiberMark(fiber, null)) {\n      return;\n    }\n    fiber._debugIsCurrentlyTiming = true;\n  }\n}\n\nfunction cancelWorkTimer(fiber) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n      return;\n    }\n    // Remember we shouldn't complete measurement for this fiber.\n    // Otherwise flamechart will be deep even for small updates.\n    fiber._debugIsCurrentlyTiming = false;\n    clearFiberMark(fiber, null);\n  }\n}\n\nfunction stopWorkTimer(fiber) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n      return;\n    }\n    // If we pause, its parent is the fiber to unwind from.\n    currentFiber = fiber['return'];\n    if (!fiber._debugIsCurrentlyTiming) {\n      return;\n    }\n    fiber._debugIsCurrentlyTiming = false;\n    endFiberMark(fiber, null, null);\n  }\n}\n\nfunction stopFailedWorkTimer(fiber) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {\n      return;\n    }\n    // If we pause, its parent is the fiber to unwind from.\n    currentFiber = fiber['return'];\n    if (!fiber._debugIsCurrentlyTiming) {\n      return;\n    }\n    fiber._debugIsCurrentlyTiming = false;\n    var warning$$1 = 'An error was thrown inside this error boundary';\n    endFiberMark(fiber, null, warning$$1);\n  }\n}\n\nfunction startPhaseTimer(fiber, phase) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    clearPendingPhaseMeasurement();\n    if (!beginFiberMark(fiber, phase)) {\n      return;\n    }\n    currentPhaseFiber = fiber;\n    currentPhase = phase;\n  }\n}\n\nfunction stopPhaseTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    if (currentPhase !== null && currentPhaseFiber !== null) {\n      var warning$$1 = hasScheduledUpdateInCurrentPhase ? 'Scheduled a cascading update' : null;\n      endFiberMark(currentPhaseFiber, currentPhase, warning$$1);\n    }\n    currentPhase = null;\n    currentPhaseFiber = null;\n  }\n}\n\nfunction startWorkLoopTimer(nextUnitOfWork) {\n  if (enableUserTimingAPI) {\n    currentFiber = nextUnitOfWork;\n    if (!supportsUserTiming) {\n      return;\n    }\n    commitCountInCurrentWorkLoop = 0;\n    // This is top level call.\n    // Any other measurements are performed within.\n    beginMark('(React Tree Reconciliation)');\n    // Resume any measurements that were in progress during the last loop.\n    resumeTimers();\n  }\n}\n\nfunction stopWorkLoopTimer(interruptedBy, didCompleteRoot) {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    var warning$$1 = null;\n    if (interruptedBy !== null) {\n      if (interruptedBy.tag === HostRoot) {\n        warning$$1 = 'A top-level update interrupted the previous render';\n      } else {\n        var componentName = getComponentName(interruptedBy) || 'Unknown';\n        warning$$1 = 'An update to ' + componentName + ' interrupted the previous render';\n      }\n    } else if (commitCountInCurrentWorkLoop > 1) {\n      warning$$1 = 'There were cascading updates';\n    }\n    commitCountInCurrentWorkLoop = 0;\n    var label = didCompleteRoot ? '(React Tree Reconciliation: Completed Root)' : '(React Tree Reconciliation: Yielded)';\n    // Pause any measurements until the next loop.\n    pauseTimers();\n    endMark(label, '(React Tree Reconciliation)', warning$$1);\n  }\n}\n\nfunction startCommitTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    isCommitting = true;\n    hasScheduledUpdateInCurrentCommit = false;\n    labelsInCurrentCommit.clear();\n    beginMark('(Committing Changes)');\n  }\n}\n\nfunction stopCommitTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n\n    var warning$$1 = null;\n    if (hasScheduledUpdateInCurrentCommit) {\n      warning$$1 = 'Lifecycle hook scheduled a cascading update';\n    } else if (commitCountInCurrentWorkLoop > 0) {\n      warning$$1 = 'Caused by a cascading update in earlier commit';\n    }\n    hasScheduledUpdateInCurrentCommit = false;\n    commitCountInCurrentWorkLoop++;\n    isCommitting = false;\n    labelsInCurrentCommit.clear();\n\n    endMark('(Committing Changes)', '(Committing Changes)', warning$$1);\n  }\n}\n\nfunction startCommitSnapshotEffectsTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    effectCountInCurrentCommit = 0;\n    beginMark('(Committing Snapshot Effects)');\n  }\n}\n\nfunction stopCommitSnapshotEffectsTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    var count = effectCountInCurrentCommit;\n    effectCountInCurrentCommit = 0;\n    endMark('(Committing Snapshot Effects: ' + count + ' Total)', '(Committing Snapshot Effects)', null);\n  }\n}\n\nfunction startCommitHostEffectsTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    effectCountInCurrentCommit = 0;\n    beginMark('(Committing Host Effects)');\n  }\n}\n\nfunction stopCommitHostEffectsTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    var count = effectCountInCurrentCommit;\n    effectCountInCurrentCommit = 0;\n    endMark('(Committing Host Effects: ' + count + ' Total)', '(Committing Host Effects)', null);\n  }\n}\n\nfunction startCommitLifeCyclesTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    effectCountInCurrentCommit = 0;\n    beginMark('(Calling Lifecycle Methods)');\n  }\n}\n\nfunction stopCommitLifeCyclesTimer() {\n  if (enableUserTimingAPI) {\n    if (!supportsUserTiming) {\n      return;\n    }\n    var count = effectCountInCurrentCommit;\n    effectCountInCurrentCommit = 0;\n    endMark('(Calling Lifecycle Methods: ' + count + ' Total)', '(Calling Lifecycle Methods)', null);\n  }\n}\n\nvar didWarnUpdateInsideUpdate = void 0;\n\n{\n  didWarnUpdateInsideUpdate = false;\n}\n\n// Callbacks are not validated until invocation\n\n\n// Singly linked-list of updates. When an update is scheduled, it is added to\n// the queue of the current fiber and the work-in-progress fiber. The two queues\n// are separate but they share a persistent structure.\n//\n// During reconciliation, updates are removed from the work-in-progress fiber,\n// but they remain on the current fiber. That ensures that if a work-in-progress\n// is aborted, the aborted updates are recovered by cloning from current.\n//\n// The work-in-progress queue is always a subset of the current queue.\n//\n// When the tree is committed, the work-in-progress becomes the current.\n\n\nfunction createUpdateQueue(baseState) {\n  var queue = {\n    baseState: baseState,\n    expirationTime: NoWork,\n    first: null,\n    last: null,\n    callbackList: null,\n    hasForceUpdate: false,\n    isInitialized: false,\n    capturedValues: null\n  };\n  {\n    queue.isProcessing = false;\n  }\n  return queue;\n}\n\nfunction insertUpdateIntoQueue(queue, update) {\n  // Append the update to the end of the list.\n  if (queue.last === null) {\n    // Queue is empty\n    queue.first = queue.last = update;\n  } else {\n    queue.last.next = update;\n    queue.last = update;\n  }\n  if (queue.expirationTime === NoWork || queue.expirationTime > update.expirationTime) {\n    queue.expirationTime = update.expirationTime;\n  }\n}\n\nvar q1 = void 0;\nvar q2 = void 0;\nfunction ensureUpdateQueues(fiber) {\n  q1 = q2 = null;\n  // We'll have at least one and at most two distinct update queues.\n  var alternateFiber = fiber.alternate;\n  var queue1 = fiber.updateQueue;\n  if (queue1 === null) {\n    // TODO: We don't know what the base state will be until we begin work.\n    // It depends on which fiber is the next current. Initialize with an empty\n    // base state, then set to the memoizedState when rendering. Not super\n    // happy with this approach.\n    queue1 = fiber.updateQueue = createUpdateQueue(null);\n  }\n\n  var queue2 = void 0;\n  if (alternateFiber !== null) {\n    queue2 = alternateFiber.updateQueue;\n    if (queue2 === null) {\n      queue2 = alternateFiber.updateQueue = createUpdateQueue(null);\n    }\n  } else {\n    queue2 = null;\n  }\n  queue2 = queue2 !== queue1 ? queue2 : null;\n\n  // Use module variables instead of returning a tuple\n  q1 = queue1;\n  q2 = queue2;\n}\n\nfunction insertUpdateIntoFiber(fiber, update) {\n  ensureUpdateQueues(fiber);\n  var queue1 = q1;\n  var queue2 = q2;\n\n  // Warn if an update is scheduled from inside an updater function.\n  {\n    if ((queue1.isProcessing || queue2 !== null && queue2.isProcessing) && !didWarnUpdateInsideUpdate) {\n      warning(false, 'An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n      didWarnUpdateInsideUpdate = true;\n    }\n  }\n\n  // If there's only one queue, add the update to that queue and exit.\n  if (queue2 === null) {\n    insertUpdateIntoQueue(queue1, update);\n    return;\n  }\n\n  // If either queue is empty, we need to add to both queues.\n  if (queue1.last === null || queue2.last === null) {\n    insertUpdateIntoQueue(queue1, update);\n    insertUpdateIntoQueue(queue2, update);\n    return;\n  }\n\n  // If both lists are not empty, the last update is the same for both lists\n  // because of structural sharing. So, we should only append to one of\n  // the lists.\n  insertUpdateIntoQueue(queue1, update);\n  // But we still need to update the `last` pointer of queue2.\n  queue2.last = update;\n}\n\nfunction getUpdateExpirationTime(fiber) {\n  switch (fiber.tag) {\n    case HostRoot:\n    case ClassComponent:\n      var updateQueue = fiber.updateQueue;\n      if (updateQueue === null) {\n        return NoWork;\n      }\n      return updateQueue.expirationTime;\n    default:\n      return NoWork;\n  }\n}\n\nfunction getStateFromUpdate(update, instance, prevState, props) {\n  var partialState = update.partialState;\n  if (typeof partialState === 'function') {\n    return partialState.call(instance, prevState, props);\n  } else {\n    return partialState;\n  }\n}\n\nfunction processUpdateQueue(current, workInProgress, queue, instance, props, renderExpirationTime) {\n  if (current !== null && current.updateQueue === queue) {\n    // We need to create a work-in-progress queue, by cloning the current queue.\n    var currentQueue = queue;\n    queue = workInProgress.updateQueue = {\n      baseState: currentQueue.baseState,\n      expirationTime: currentQueue.expirationTime,\n      first: currentQueue.first,\n      last: currentQueue.last,\n      isInitialized: currentQueue.isInitialized,\n      capturedValues: currentQueue.capturedValues,\n      // These fields are no longer valid because they were already committed.\n      // Reset them.\n      callbackList: null,\n      hasForceUpdate: false\n    };\n  }\n\n  {\n    // Set this flag so we can warn if setState is called inside the update\n    // function of another setState.\n    queue.isProcessing = true;\n  }\n\n  // Reset the remaining expiration time. If we skip over any updates, we'll\n  // increase this accordingly.\n  queue.expirationTime = NoWork;\n\n  // TODO: We don't know what the base state will be until we begin work.\n  // It depends on which fiber is the next current. Initialize with an empty\n  // base state, then set to the memoizedState when rendering. Not super\n  // happy with this approach.\n  var state = void 0;\n  if (queue.isInitialized) {\n    state = queue.baseState;\n  } else {\n    state = queue.baseState = workInProgress.memoizedState;\n    queue.isInitialized = true;\n  }\n  var dontMutatePrevState = true;\n  var update = queue.first;\n  var didSkip = false;\n  while (update !== null) {\n    var updateExpirationTime = update.expirationTime;\n    if (updateExpirationTime > renderExpirationTime) {\n      // This update does not have sufficient priority. Skip it.\n      var remainingExpirationTime = queue.expirationTime;\n      if (remainingExpirationTime === NoWork || remainingExpirationTime > updateExpirationTime) {\n        // Update the remaining expiration time.\n        queue.expirationTime = updateExpirationTime;\n      }\n      if (!didSkip) {\n        didSkip = true;\n        queue.baseState = state;\n      }\n      // Continue to the next update.\n      update = update.next;\n      continue;\n    }\n\n    // This update does have sufficient priority.\n\n    // If no previous updates were skipped, drop this update from the queue by\n    // advancing the head of the list.\n    if (!didSkip) {\n      queue.first = update.next;\n      if (queue.first === null) {\n        queue.last = null;\n      }\n    }\n\n    // Invoke setState callback an extra time to help detect side-effects.\n    // Ignore the return value in this case.\n    if (debugRenderPhaseSideEffects || debugRenderPhaseSideEffectsForStrictMode && workInProgress.mode & StrictMode) {\n      getStateFromUpdate(update, instance, state, props);\n    }\n\n    // Process the update\n    var _partialState = void 0;\n    if (update.isReplace) {\n      state = getStateFromUpdate(update, instance, state, props);\n      dontMutatePrevState = true;\n    } else {\n      _partialState = getStateFromUpdate(update, instance, state, props);\n      if (_partialState) {\n        if (dontMutatePrevState) {\n          // $FlowFixMe: Idk how to type this properly.\n          state = _assign({}, state, _partialState);\n        } else {\n          state = _assign(state, _partialState);\n        }\n        dontMutatePrevState = false;\n      }\n    }\n    if (update.isForced) {\n      queue.hasForceUpdate = true;\n    }\n    if (update.callback !== null) {\n      // Append to list of callbacks.\n      var _callbackList = queue.callbackList;\n      if (_callbackList === null) {\n        _callbackList = queue.callbackList = [];\n      }\n      _callbackList.push(update);\n    }\n    if (update.capturedValue !== null) {\n      var _capturedValues = queue.capturedValues;\n      if (_capturedValues === null) {\n        queue.capturedValues = [update.capturedValue];\n      } else {\n        _capturedValues.push(update.capturedValue);\n      }\n    }\n    update = update.next;\n  }\n\n  if (queue.callbackList !== null) {\n    workInProgress.effectTag |= Callback;\n  } else if (queue.first === null && !queue.hasForceUpdate && queue.capturedValues === null) {\n    // The queue is empty. We can reset it.\n    workInProgress.updateQueue = null;\n  }\n\n  if (!didSkip) {\n    didSkip = true;\n    queue.baseState = state;\n  }\n\n  {\n    // No longer processing.\n    queue.isProcessing = false;\n  }\n\n  return state;\n}\n\nfunction commitCallbacks(queue, context) {\n  var callbackList = queue.callbackList;\n  if (callbackList === null) {\n    return;\n  }\n  // Set the list to null to make sure they don't get called more than once.\n  queue.callbackList = null;\n  for (var i = 0; i < callbackList.length; i++) {\n    var update = callbackList[i];\n    var _callback = update.callback;\n    // This update might be processed again. Clear the callback so it's only\n    // called once.\n    update.callback = null;\n    !(typeof _callback === 'function') ? invariant(false, 'Invalid argument passed as callback. Expected a function. Instead received: %s', _callback) : void 0;\n    _callback.call(context);\n  }\n}\n\nvar fakeInternalInstance = {};\nvar isArray = Array.isArray;\n\nvar didWarnAboutStateAssignmentForComponent = void 0;\nvar didWarnAboutUndefinedDerivedState = void 0;\nvar didWarnAboutUninitializedState = void 0;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = void 0;\nvar didWarnAboutLegacyLifecyclesAndDerivedState = void 0;\nvar warnOnInvalidCallback$1 = void 0;\n\n{\n  didWarnAboutStateAssignmentForComponent = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback$1 = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n    var key = callerName + '_' + callback;\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n      warning(false, '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  // This is so gross but it's at least non-critical and can be removed if\n  // it causes problems. This is meant to give a nicer error message for\n  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n  // ...)) which otherwise throws a \"_processChildContext is not a function\"\n  // exception.\n  Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n    enumerable: false,\n    value: function () {\n      invariant(false, '_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn\\'t supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).');\n    }\n  });\n  Object.freeze(fakeInternalInstance);\n}\nfunction callGetDerivedStateFromCatch(ctor, capturedValues) {\n  var resultState = {};\n  for (var i = 0; i < capturedValues.length; i++) {\n    var capturedValue = capturedValues[i];\n    var error = capturedValue.value;\n    var partialState = ctor.getDerivedStateFromCatch.call(null, error);\n    if (partialState !== null && partialState !== undefined) {\n      _assign(resultState, partialState);\n    }\n  }\n  return resultState;\n}\n\nvar ReactFiberClassComponent = function (legacyContext, scheduleWork, computeExpirationForFiber, memoizeProps, memoizeState) {\n  var cacheContext = legacyContext.cacheContext,\n      getMaskedContext = legacyContext.getMaskedContext,\n      getUnmaskedContext = legacyContext.getUnmaskedContext,\n      isContextConsumer = legacyContext.isContextConsumer,\n      hasContextChanged = legacyContext.hasContextChanged;\n\n  // Class component state updater\n\n  var updater = {\n    isMounted: isMounted,\n    enqueueSetState: function (instance, partialState, callback) {\n      var fiber = get(instance);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback$1(callback, 'setState');\n      }\n      var expirationTime = computeExpirationForFiber(fiber);\n      var update = {\n        expirationTime: expirationTime,\n        partialState: partialState,\n        callback: callback,\n        isReplace: false,\n        isForced: false,\n        capturedValue: null,\n        next: null\n      };\n      insertUpdateIntoFiber(fiber, update);\n      scheduleWork(fiber, expirationTime);\n    },\n    enqueueReplaceState: function (instance, state, callback) {\n      var fiber = get(instance);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback$1(callback, 'replaceState');\n      }\n      var expirationTime = computeExpirationForFiber(fiber);\n      var update = {\n        expirationTime: expirationTime,\n        partialState: state,\n        callback: callback,\n        isReplace: true,\n        isForced: false,\n        capturedValue: null,\n        next: null\n      };\n      insertUpdateIntoFiber(fiber, update);\n      scheduleWork(fiber, expirationTime);\n    },\n    enqueueForceUpdate: function (instance, callback) {\n      var fiber = get(instance);\n      callback = callback === undefined ? null : callback;\n      {\n        warnOnInvalidCallback$1(callback, 'forceUpdate');\n      }\n      var expirationTime = computeExpirationForFiber(fiber);\n      var update = {\n        expirationTime: expirationTime,\n        partialState: null,\n        callback: callback,\n        isReplace: false,\n        isForced: true,\n        capturedValue: null,\n        next: null\n      };\n      insertUpdateIntoFiber(fiber, update);\n      scheduleWork(fiber, expirationTime);\n    }\n  };\n\n  function checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext) {\n    if (oldProps === null || workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate) {\n      // If the workInProgress already has an Update effect, return true\n      return true;\n    }\n\n    var instance = workInProgress.stateNode;\n    var ctor = workInProgress.type;\n    if (typeof instance.shouldComponentUpdate === 'function') {\n      startPhaseTimer(workInProgress, 'shouldComponentUpdate');\n      var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, newContext);\n      stopPhaseTimer();\n\n      {\n        !(shouldUpdate !== undefined) ? warning(false, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(workInProgress) || 'Component') : void 0;\n      }\n\n      return shouldUpdate;\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n      return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n    }\n\n    return true;\n  }\n\n  function checkClassInstance(workInProgress) {\n    var instance = workInProgress.stateNode;\n    var type = workInProgress.type;\n    {\n      var name = getComponentName(workInProgress) || 'Component';\n      var renderPresent = instance.render;\n\n      if (!renderPresent) {\n        if (type.prototype && typeof type.prototype.render === 'function') {\n          warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n        } else {\n          warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n        }\n      }\n\n      var noGetInitialStateOnES6 = !instance.getInitialState || instance.getInitialState.isReactClassApproved || instance.state;\n      !noGetInitialStateOnES6 ? warning(false, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name) : void 0;\n      var noGetDefaultPropsOnES6 = !instance.getDefaultProps || instance.getDefaultProps.isReactClassApproved;\n      !noGetDefaultPropsOnES6 ? warning(false, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name) : void 0;\n      var noInstancePropTypes = !instance.propTypes;\n      !noInstancePropTypes ? warning(false, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name) : void 0;\n      var noInstanceContextTypes = !instance.contextTypes;\n      !noInstanceContextTypes ? warning(false, 'contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name) : void 0;\n      var noComponentShouldUpdate = typeof instance.componentShouldUpdate !== 'function';\n      !noComponentShouldUpdate ? warning(false, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name) : void 0;\n      if (type.prototype && type.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n        warning(false, '%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(workInProgress) || 'A pure component');\n      }\n      var noComponentDidUnmount = typeof instance.componentDidUnmount !== 'function';\n      !noComponentDidUnmount ? warning(false, '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name) : void 0;\n      var noComponentDidReceiveProps = typeof instance.componentDidReceiveProps !== 'function';\n      !noComponentDidReceiveProps ? warning(false, '%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name) : void 0;\n      var noComponentWillRecieveProps = typeof instance.componentWillRecieveProps !== 'function';\n      !noComponentWillRecieveProps ? warning(false, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name) : void 0;\n      var noUnsafeComponentWillRecieveProps = typeof instance.UNSAFE_componentWillRecieveProps !== 'function';\n      !noUnsafeComponentWillRecieveProps ? warning(false, '%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name) : void 0;\n      var hasMutatedProps = instance.props !== workInProgress.pendingProps;\n      !(instance.props === undefined || !hasMutatedProps) ? warning(false, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name) : void 0;\n      var noInstanceDefaultProps = !instance.defaultProps;\n      !noInstanceDefaultProps ? warning(false, 'Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name) : void 0;\n\n      if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(type)) {\n        didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(type);\n        warning(false, '%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentName(workInProgress));\n      }\n\n      var noInstanceGetDerivedStateFromProps = typeof instance.getDerivedStateFromProps !== 'function';\n      !noInstanceGetDerivedStateFromProps ? warning(false, '%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name) : void 0;\n      var noInstanceGetDerivedStateFromCatch = typeof instance.getDerivedStateFromCatch !== 'function';\n      !noInstanceGetDerivedStateFromCatch ? warning(false, '%s: getDerivedStateFromCatch() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name) : void 0;\n      var noStaticGetSnapshotBeforeUpdate = typeof type.getSnapshotBeforeUpdate !== 'function';\n      !noStaticGetSnapshotBeforeUpdate ? warning(false, '%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name) : void 0;\n      var _state = instance.state;\n      if (_state && (typeof _state !== 'object' || isArray(_state))) {\n        warning(false, '%s.state: must be set to an object or null', name);\n      }\n      if (typeof instance.getChildContext === 'function') {\n        !(typeof type.childContextTypes === 'object') ? warning(false, '%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name) : void 0;\n      }\n    }\n  }\n\n  function resetInputPointers(workInProgress, instance) {\n    instance.props = workInProgress.memoizedProps;\n    instance.state = workInProgress.memoizedState;\n  }\n\n  function adoptClassInstance(workInProgress, instance) {\n    instance.updater = updater;\n    workInProgress.stateNode = instance;\n    // The instance needs access to the fiber so that it can schedule updates\n    set(instance, workInProgress);\n    {\n      instance._reactInternalInstance = fakeInternalInstance;\n    }\n  }\n\n  function constructClassInstance(workInProgress, props) {\n    var ctor = workInProgress.type;\n    var unmaskedContext = getUnmaskedContext(workInProgress);\n    var needsContext = isContextConsumer(workInProgress);\n    var context = needsContext ? getMaskedContext(workInProgress, unmaskedContext) : emptyObject;\n\n    // Instantiate twice to help detect side-effects.\n    if (debugRenderPhaseSideEffects || debugRenderPhaseSideEffectsForStrictMode && workInProgress.mode & StrictMode) {\n      new ctor(props, context); // eslint-disable-line no-new\n    }\n\n    var instance = new ctor(props, context);\n    var state = instance.state !== null && instance.state !== undefined ? instance.state : null;\n    adoptClassInstance(workInProgress, instance);\n\n    {\n      if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {\n        var componentName = getComponentName(workInProgress) || 'Component';\n        if (!didWarnAboutUninitializedState.has(componentName)) {\n          didWarnAboutUninitializedState.add(componentName);\n          warning(false, '%s: Did not properly initialize state during construction. ' + 'Expected state to be an object, but it was %s.', componentName, instance.state === null ? 'null' : 'undefined');\n        }\n      }\n\n      // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n      // Warn about these lifecycles if they are present.\n      // Don't warn about react-lifecycles-compat polyfilled methods though.\n      if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n        var foundWillMountName = null;\n        var foundWillReceivePropsName = null;\n        var foundWillUpdateName = null;\n        if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n          foundWillMountName = 'componentWillMount';\n        } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n          foundWillMountName = 'UNSAFE_componentWillMount';\n        }\n        if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n          foundWillReceivePropsName = 'componentWillReceiveProps';\n        } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n          foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n        }\n        if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n          foundWillUpdateName = 'componentWillUpdate';\n        } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n          foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n        }\n        if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n          var _componentName = getComponentName(workInProgress) || 'Component';\n          var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n          if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n            didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n            warning(false, 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks', _componentName, newApiName, foundWillMountName !== null ? '\\n  ' + foundWillMountName : '', foundWillReceivePropsName !== null ? '\\n  ' + foundWillReceivePropsName : '', foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '');\n          }\n        }\n      }\n    }\n\n    workInProgress.memoizedState = state;\n\n    var partialState = callGetDerivedStateFromProps(workInProgress, instance, props, state);\n\n    if (partialState !== null && partialState !== undefined) {\n      // Render-phase updates (like this) should not be added to the update queue,\n      // So that multiple render passes do not enqueue multiple updates.\n      // Instead, just synchronously merge the returned state into the instance.\n      workInProgress.memoizedState = _assign({}, workInProgress.memoizedState, partialState);\n    }\n\n    // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // ReactFiberContext usually updates this cache but can't for newly-created instances.\n    if (needsContext) {\n      cacheContext(workInProgress, unmaskedContext, context);\n    }\n\n    return instance;\n  }\n\n  function callComponentWillMount(workInProgress, instance) {\n    startPhaseTimer(workInProgress, 'componentWillMount');\n    var oldState = instance.state;\n\n    if (typeof instance.componentWillMount === 'function') {\n      instance.componentWillMount();\n    }\n    if (typeof instance.UNSAFE_componentWillMount === 'function') {\n      instance.UNSAFE_componentWillMount();\n    }\n\n    stopPhaseTimer();\n\n    if (oldState !== instance.state) {\n      {\n        warning(false, '%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentName(workInProgress) || 'Component');\n      }\n      updater.enqueueReplaceState(instance, instance.state, null);\n    }\n  }\n\n  function callComponentWillReceiveProps(workInProgress, instance, newProps, newContext) {\n    var oldState = instance.state;\n    startPhaseTimer(workInProgress, 'componentWillReceiveProps');\n    if (typeof instance.componentWillReceiveProps === 'function') {\n      instance.componentWillReceiveProps(newProps, newContext);\n    }\n    if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n      instance.UNSAFE_componentWillReceiveProps(newProps, newContext);\n    }\n    stopPhaseTimer();\n\n    if (instance.state !== oldState) {\n      {\n        var componentName = getComponentName(workInProgress) || 'Component';\n        if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n          didWarnAboutStateAssignmentForComponent.add(componentName);\n          warning(false, '%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', componentName);\n        }\n      }\n      updater.enqueueReplaceState(instance, instance.state, null);\n    }\n  }\n\n  function callGetDerivedStateFromProps(workInProgress, instance, nextProps, prevState) {\n    var type = workInProgress.type;\n\n\n    if (typeof type.getDerivedStateFromProps === 'function') {\n      if (debugRenderPhaseSideEffects || debugRenderPhaseSideEffectsForStrictMode && workInProgress.mode & StrictMode) {\n        // Invoke method an extra time to help detect side-effects.\n        type.getDerivedStateFromProps.call(null, nextProps, prevState);\n      }\n\n      var partialState = type.getDerivedStateFromProps.call(null, nextProps, prevState);\n\n      {\n        if (partialState === undefined) {\n          var componentName = getComponentName(workInProgress) || 'Component';\n          if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n            didWarnAboutUndefinedDerivedState.add(componentName);\n            warning(false, '%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n          }\n        }\n      }\n\n      return partialState;\n    }\n  }\n\n  // Invokes the mount life-cycles on a previously never rendered instance.\n  function mountClassInstance(workInProgress, renderExpirationTime) {\n    var ctor = workInProgress.type;\n    var current = workInProgress.alternate;\n\n    {\n      checkClassInstance(workInProgress);\n    }\n\n    var instance = workInProgress.stateNode;\n    var props = workInProgress.pendingProps;\n    var unmaskedContext = getUnmaskedContext(workInProgress);\n\n    instance.props = props;\n    instance.state = workInProgress.memoizedState;\n    instance.refs = emptyObject;\n    instance.context = getMaskedContext(workInProgress, unmaskedContext);\n\n    {\n      if (workInProgress.mode & StrictMode) {\n        ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);\n      }\n\n      if (warnAboutDeprecatedLifecycles) {\n        ReactStrictModeWarnings.recordDeprecationWarnings(workInProgress, instance);\n      }\n    }\n\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n      callComponentWillMount(workInProgress, instance);\n      // If we had additional state updates during this life-cycle, let's\n      // process them now.\n      var updateQueue = workInProgress.updateQueue;\n      if (updateQueue !== null) {\n        instance.state = processUpdateQueue(current, workInProgress, updateQueue, instance, props, renderExpirationTime);\n      }\n    }\n    if (typeof instance.componentDidMount === 'function') {\n      workInProgress.effectTag |= Update;\n    }\n  }\n\n  function resumeMountClassInstance(workInProgress, renderExpirationTime) {\n    var ctor = workInProgress.type;\n    var instance = workInProgress.stateNode;\n    resetInputPointers(workInProgress, instance);\n\n    var oldProps = workInProgress.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n    var oldContext = instance.context;\n    var newUnmaskedContext = getUnmaskedContext(workInProgress);\n    var newContext = getMaskedContext(workInProgress, newUnmaskedContext);\n\n    var hasNewLifecycles = typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function';\n\n    // Note: During these life-cycles, instance.props/instance.state are what\n    // ever the previously attempted to render - not the \"current\". However,\n    // during componentDidUpdate we pass the \"current\" props.\n\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n      if (oldProps !== newProps || oldContext !== newContext) {\n        callComponentWillReceiveProps(workInProgress, instance, newProps, newContext);\n      }\n    }\n\n    // Compute the next state using the memoized state and the update queue.\n    var oldState = workInProgress.memoizedState;\n    // TODO: Previous state can be null.\n    var newState = void 0;\n    var derivedStateFromCatch = void 0;\n    if (workInProgress.updateQueue !== null) {\n      newState = processUpdateQueue(null, workInProgress, workInProgress.updateQueue, instance, newProps, renderExpirationTime);\n\n      var updateQueue = workInProgress.updateQueue;\n      if (updateQueue !== null && updateQueue.capturedValues !== null && enableGetDerivedStateFromCatch && typeof ctor.getDerivedStateFromCatch === 'function') {\n        var capturedValues = updateQueue.capturedValues;\n        // Don't remove these from the update queue yet. We need them in\n        // finishClassComponent. Do the reset there.\n        // TODO: This is awkward. Refactor class components.\n        // updateQueue.capturedValues = null;\n        derivedStateFromCatch = callGetDerivedStateFromCatch(ctor, capturedValues);\n      }\n    } else {\n      newState = oldState;\n    }\n\n    var derivedStateFromProps = void 0;\n    if (oldProps !== newProps) {\n      // The prevState parameter should be the partially updated state.\n      // Otherwise, spreading state in return values could override updates.\n      derivedStateFromProps = callGetDerivedStateFromProps(workInProgress, instance, newProps, newState);\n    }\n\n    if (derivedStateFromProps !== null && derivedStateFromProps !== undefined) {\n      // Render-phase updates (like this) should not be added to the update queue,\n      // So that multiple render passes do not enqueue multiple updates.\n      // Instead, just synchronously merge the returned state into the instance.\n      newState = newState === null || newState === undefined ? derivedStateFromProps : _assign({}, newState, derivedStateFromProps);\n\n      // Update the base state of the update queue.\n      // FIXME: This is getting ridiculous. Refactor plz!\n      var _updateQueue = workInProgress.updateQueue;\n      if (_updateQueue !== null) {\n        _updateQueue.baseState = _assign({}, _updateQueue.baseState, derivedStateFromProps);\n      }\n    }\n    if (derivedStateFromCatch !== null && derivedStateFromCatch !== undefined) {\n      // Render-phase updates (like this) should not be added to the update queue,\n      // So that multiple render passes do not enqueue multiple updates.\n      // Instead, just synchronously merge the returned state into the instance.\n      newState = newState === null || newState === undefined ? derivedStateFromCatch : _assign({}, newState, derivedStateFromCatch);\n\n      // Update the base state of the update queue.\n      // FIXME: This is getting ridiculous. Refactor plz!\n      var _updateQueue2 = workInProgress.updateQueue;\n      if (_updateQueue2 !== null) {\n        _updateQueue2.baseState = _assign({}, _updateQueue2.baseState, derivedStateFromCatch);\n      }\n    }\n\n    if (oldProps === newProps && oldState === newState && !hasContextChanged() && !(workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate)) {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidMount === 'function') {\n        workInProgress.effectTag |= Update;\n      }\n      return false;\n    }\n\n    var shouldUpdate = checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext);\n\n    if (shouldUpdate) {\n      // In order to support react-lifecycles-compat polyfilled components,\n      // Unsafe lifecycles should not be invoked for components using the new APIs.\n      if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n        startPhaseTimer(workInProgress, 'componentWillMount');\n        if (typeof instance.componentWillMount === 'function') {\n          instance.componentWillMount();\n        }\n        if (typeof instance.UNSAFE_componentWillMount === 'function') {\n          instance.UNSAFE_componentWillMount();\n        }\n        stopPhaseTimer();\n      }\n      if (typeof instance.componentDidMount === 'function') {\n        workInProgress.effectTag |= Update;\n      }\n    } else {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidMount === 'function') {\n        workInProgress.effectTag |= Update;\n      }\n\n      // If shouldComponentUpdate returned false, we should still update the\n      // memoized props/state to indicate that this work can be reused.\n      memoizeProps(workInProgress, newProps);\n      memoizeState(workInProgress, newState);\n    }\n\n    // Update the existing instance's state, props, and context pointers even\n    // if shouldComponentUpdate returns false.\n    instance.props = newProps;\n    instance.state = newState;\n    instance.context = newContext;\n\n    return shouldUpdate;\n  }\n\n  // Invokes the update life-cycles and returns false if it shouldn't rerender.\n  function updateClassInstance(current, workInProgress, renderExpirationTime) {\n    var ctor = workInProgress.type;\n    var instance = workInProgress.stateNode;\n    resetInputPointers(workInProgress, instance);\n\n    var oldProps = workInProgress.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n    var oldContext = instance.context;\n    var newUnmaskedContext = getUnmaskedContext(workInProgress);\n    var newContext = getMaskedContext(workInProgress, newUnmaskedContext);\n\n    var hasNewLifecycles = typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function';\n\n    // Note: During these life-cycles, instance.props/instance.state are what\n    // ever the previously attempted to render - not the \"current\". However,\n    // during componentDidUpdate we pass the \"current\" props.\n\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n      if (oldProps !== newProps || oldContext !== newContext) {\n        callComponentWillReceiveProps(workInProgress, instance, newProps, newContext);\n      }\n    }\n\n    // Compute the next state using the memoized state and the update queue.\n    var oldState = workInProgress.memoizedState;\n    // TODO: Previous state can be null.\n    var newState = void 0;\n    var derivedStateFromCatch = void 0;\n\n    if (workInProgress.updateQueue !== null) {\n      newState = processUpdateQueue(current, workInProgress, workInProgress.updateQueue, instance, newProps, renderExpirationTime);\n\n      var updateQueue = workInProgress.updateQueue;\n      if (updateQueue !== null && updateQueue.capturedValues !== null && enableGetDerivedStateFromCatch && typeof ctor.getDerivedStateFromCatch === 'function') {\n        var capturedValues = updateQueue.capturedValues;\n        // Don't remove these from the update queue yet. We need them in\n        // finishClassComponent. Do the reset there.\n        // TODO: This is awkward. Refactor class components.\n        // updateQueue.capturedValues = null;\n        derivedStateFromCatch = callGetDerivedStateFromCatch(ctor, capturedValues);\n      }\n    } else {\n      newState = oldState;\n    }\n\n    var derivedStateFromProps = void 0;\n    if (oldProps !== newProps) {\n      // The prevState parameter should be the partially updated state.\n      // Otherwise, spreading state in return values could override updates.\n      derivedStateFromProps = callGetDerivedStateFromProps(workInProgress, instance, newProps, newState);\n    }\n\n    if (derivedStateFromProps !== null && derivedStateFromProps !== undefined) {\n      // Render-phase updates (like this) should not be added to the update queue,\n      // So that multiple render passes do not enqueue multiple updates.\n      // Instead, just synchronously merge the returned state into the instance.\n      newState = newState === null || newState === undefined ? derivedStateFromProps : _assign({}, newState, derivedStateFromProps);\n\n      // Update the base state of the update queue.\n      // FIXME: This is getting ridiculous. Refactor plz!\n      var _updateQueue3 = workInProgress.updateQueue;\n      if (_updateQueue3 !== null) {\n        _updateQueue3.baseState = _assign({}, _updateQueue3.baseState, derivedStateFromProps);\n      }\n    }\n    if (derivedStateFromCatch !== null && derivedStateFromCatch !== undefined) {\n      // Render-phase updates (like this) should not be added to the update queue,\n      // So that multiple render passes do not enqueue multiple updates.\n      // Instead, just synchronously merge the returned state into the instance.\n      newState = newState === null || newState === undefined ? derivedStateFromCatch : _assign({}, newState, derivedStateFromCatch);\n\n      // Update the base state of the update queue.\n      // FIXME: This is getting ridiculous. Refactor plz!\n      var _updateQueue4 = workInProgress.updateQueue;\n      if (_updateQueue4 !== null) {\n        _updateQueue4.baseState = _assign({}, _updateQueue4.baseState, derivedStateFromCatch);\n      }\n    }\n\n    if (oldProps === newProps && oldState === newState && !hasContextChanged() && !(workInProgress.updateQueue !== null && workInProgress.updateQueue.hasForceUpdate)) {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Update;\n        }\n      }\n      if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Snapshot;\n        }\n      }\n      return false;\n    }\n\n    var shouldUpdate = checkShouldComponentUpdate(workInProgress, oldProps, newProps, oldState, newState, newContext);\n\n    if (shouldUpdate) {\n      // In order to support react-lifecycles-compat polyfilled components,\n      // Unsafe lifecycles should not be invoked for components using the new APIs.\n      if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n        startPhaseTimer(workInProgress, 'componentWillUpdate');\n        if (typeof instance.componentWillUpdate === 'function') {\n          instance.componentWillUpdate(newProps, newState, newContext);\n        }\n        if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n          instance.UNSAFE_componentWillUpdate(newProps, newState, newContext);\n        }\n        stopPhaseTimer();\n      }\n      if (typeof instance.componentDidUpdate === 'function') {\n        workInProgress.effectTag |= Update;\n      }\n      if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n        workInProgress.effectTag |= Snapshot;\n      }\n    } else {\n      // If an update was already in progress, we should schedule an Update\n      // effect even though we're bailing out, so that cWU/cDU are called.\n      if (typeof instance.componentDidUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Update;\n        }\n      }\n      if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n        if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n          workInProgress.effectTag |= Snapshot;\n        }\n      }\n\n      // If shouldComponentUpdate returned false, we should still update the\n      // memoized props/state to indicate that this work can be reused.\n      memoizeProps(workInProgress, newProps);\n      memoizeState(workInProgress, newState);\n    }\n\n    // Update the existing instance's state, props, and context pointers even\n    // if shouldComponentUpdate returns false.\n    instance.props = newProps;\n    instance.state = newState;\n    instance.context = newContext;\n\n    return shouldUpdate;\n  }\n\n  return {\n    adoptClassInstance: adoptClassInstance,\n    callGetDerivedStateFromProps: callGetDerivedStateFromProps,\n    constructClassInstance: constructClassInstance,\n    mountClassInstance: mountClassInstance,\n    resumeMountClassInstance: resumeMountClassInstance,\n    updateClassInstance: updateClassInstance\n  };\n};\n\nvar getCurrentFiberStackAddendum$2 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\n\nvar didWarnAboutMaps = void 0;\nvar didWarnAboutStringRefInStrictMode = void 0;\nvar ownerHasKeyUseWarning = void 0;\nvar ownerHasFunctionTypeWarning = void 0;\nvar warnForMissingKey = function (child) {};\n\n{\n  didWarnAboutMaps = false;\n  didWarnAboutStringRefInStrictMode = {};\n\n  /**\n   * Warn if there's no key explicitly set on dynamic arrays of children or\n   * object keys are not valid. This allows us to keep track of children between\n   * updates.\n   */\n  ownerHasKeyUseWarning = {};\n  ownerHasFunctionTypeWarning = {};\n\n  warnForMissingKey = function (child) {\n    if (child === null || typeof child !== 'object') {\n      return;\n    }\n    if (!child._store || child._store.validated || child.key != null) {\n      return;\n    }\n    !(typeof child._store === 'object') ? invariant(false, 'React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    child._store.validated = true;\n\n    var currentComponentErrorInfo = 'Each child in an array or iterator should have a unique ' + '\"key\" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + (getCurrentFiberStackAddendum$2() || '');\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n    warning(false, 'Each child in an array or iterator should have a unique ' + '\"key\" prop. See https://fb.me/react-warning-keys for ' + 'more information.%s', getCurrentFiberStackAddendum$2());\n  };\n}\n\nvar isArray$1 = Array.isArray;\n\nfunction coerceRef(returnFiber, current, element) {\n  var mixedRef = element.ref;\n  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n    {\n      if (returnFiber.mode & StrictMode) {\n        var componentName = getComponentName(returnFiber) || 'Component';\n        if (!didWarnAboutStringRefInStrictMode[componentName]) {\n          warning(false, 'A string ref, \"%s\", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using createRef() instead.' + '\\n%s' + '\\n\\nLearn more about using refs safely here:' + '\\nhttps://fb.me/react-strict-mode-string-ref', mixedRef, getStackAddendumByWorkInProgressFiber(returnFiber));\n          didWarnAboutStringRefInStrictMode[componentName] = true;\n        }\n      }\n    }\n\n    if (element._owner) {\n      var owner = element._owner;\n      var inst = void 0;\n      if (owner) {\n        var ownerFiber = owner;\n        !(ownerFiber.tag === ClassComponent) ? invariant(false, 'Stateless function components cannot have refs.') : void 0;\n        inst = ownerFiber.stateNode;\n      }\n      !inst ? invariant(false, 'Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.', mixedRef) : void 0;\n      var stringRef = '' + mixedRef;\n      // Check if previous string ref matches new string ref\n      if (current !== null && current.ref !== null && current.ref._stringRef === stringRef) {\n        return current.ref;\n      }\n      var ref = function (value) {\n        var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n        if (value === null) {\n          delete refs[stringRef];\n        } else {\n          refs[stringRef] = value;\n        }\n      };\n      ref._stringRef = stringRef;\n      return ref;\n    } else {\n      !(typeof mixedRef === 'string') ? invariant(false, 'Expected ref to be a function or a string.') : void 0;\n      !element._owner ? invariant(false, 'Element ref was specified as a string (%s) but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a functional component\\n2. You may be adding a ref to a component that was not created inside a component\\'s render method\\n3. You have multiple copies of React loaded\\nSee https://fb.me/react-refs-must-have-owner for more information.', mixedRef) : void 0;\n    }\n  }\n  return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (returnFiber.type !== 'textarea') {\n    var addendum = '';\n    {\n      addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + (getCurrentFiberStackAddendum$2() || '');\n    }\n    invariant(false, 'Objects are not valid as a React child (found: %s).%s', Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild, addendum);\n  }\n}\n\nfunction warnOnFunctionType() {\n  var currentComponentErrorInfo = 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.' + (getCurrentFiberStackAddendum$2() || '');\n\n  if (ownerHasFunctionTypeWarning[currentComponentErrorInfo]) {\n    return;\n  }\n  ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true;\n\n  warning(false, 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.%s', getCurrentFiberStackAddendum$2() || '');\n}\n\n// This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return;\n    }\n    // Deletions are added in reversed order so we add it to the front.\n    // At this point, the return fiber's effect list is empty except for\n    // deletions, so we can just append the deletion to the list. The remaining\n    // effects aren't added until the complete phase. Once we implement\n    // resuming, this may not be true.\n    var last = returnFiber.lastEffect;\n    if (last !== null) {\n      last.nextEffect = childToDelete;\n      returnFiber.lastEffect = childToDelete;\n    } else {\n      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n    }\n    childToDelete.nextEffect = null;\n    childToDelete.effectTag = Deletion;\n  }\n\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return null;\n    }\n\n    // TODO: For the shouldClone case, this could be micro-optimized a bit by\n    // assuming that after the first child we've already added everything.\n    var childToDelete = currentFirstChild;\n    while (childToDelete !== null) {\n      deleteChild(returnFiber, childToDelete);\n      childToDelete = childToDelete.sibling;\n    }\n    return null;\n  }\n\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    // Add the remaining children to a temporary map so that we can find them by\n    // keys quickly. Implicit (null) keys get added to this set with their index\n    var existingChildren = new Map();\n\n    var existingChild = currentFirstChild;\n    while (existingChild !== null) {\n      if (existingChild.key !== null) {\n        existingChildren.set(existingChild.key, existingChild);\n      } else {\n        existingChildren.set(existingChild.index, existingChild);\n      }\n      existingChild = existingChild.sibling;\n    }\n    return existingChildren;\n  }\n\n  function useFiber(fiber, pendingProps, expirationTime) {\n    // We currently set sibling to null and index to 0 here because it is easy\n    // to forget to do before returning it. E.g. for the single child case.\n    var clone = createWorkInProgress(fiber, pendingProps, expirationTime);\n    clone.index = 0;\n    clone.sibling = null;\n    return clone;\n  }\n\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return lastPlacedIndex;\n    }\n    var current = newFiber.alternate;\n    if (current !== null) {\n      var oldIndex = current.index;\n      if (oldIndex < lastPlacedIndex) {\n        // This is a move.\n        newFiber.effectTag = Placement;\n        return lastPlacedIndex;\n      } else {\n        // This item can stay in place.\n        return oldIndex;\n      }\n    } else {\n      // This is an insertion.\n      newFiber.effectTag = Placement;\n      return lastPlacedIndex;\n    }\n  }\n\n  function placeSingleChild(newFiber) {\n    // This is simpler for the single child case. We only need to do a\n    // placement for inserting new children.\n    if (shouldTrackSideEffects && newFiber.alternate === null) {\n      newFiber.effectTag = Placement;\n    }\n    return newFiber;\n  }\n\n  function updateTextNode(returnFiber, current, textContent, expirationTime) {\n    if (current === null || current.tag !== HostText) {\n      // Insert\n      var created = createFiberFromText(textContent, returnFiber.mode, expirationTime);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, textContent, expirationTime);\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateElement(returnFiber, current, element, expirationTime) {\n    if (current !== null && current.type === element.type) {\n      // Move based on index\n      var existing = useFiber(current, element.props, expirationTime);\n      existing.ref = coerceRef(returnFiber, current, element);\n      existing['return'] = returnFiber;\n      {\n        existing._debugSource = element._source;\n        existing._debugOwner = element._owner;\n      }\n      return existing;\n    } else {\n      // Insert\n      var created = createFiberFromElement(element, returnFiber.mode, expirationTime);\n      created.ref = coerceRef(returnFiber, current, element);\n      created['return'] = returnFiber;\n      return created;\n    }\n  }\n\n  function updatePortal(returnFiber, current, portal, expirationTime) {\n    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n      // Insert\n      var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, portal.children || [], expirationTime);\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateFragment(returnFiber, current, fragment, expirationTime, key) {\n    if (current === null || current.tag !== Fragment) {\n      // Insert\n      var created = createFiberFromFragment(fragment, returnFiber.mode, expirationTime, key);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, fragment, expirationTime);\n      existing['return'] = returnFiber;\n      return existing;\n    }\n  }\n\n  function createChild(returnFiber, newChild, expirationTime) {\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      var created = createFiberFromText('' + newChild, returnFiber.mode, expirationTime);\n      created['return'] = returnFiber;\n      return created;\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _created = createFiberFromElement(newChild, returnFiber.mode, expirationTime);\n            _created.ref = coerceRef(returnFiber, null, newChild);\n            _created['return'] = returnFiber;\n            return _created;\n          }\n        case REACT_PORTAL_TYPE:\n          {\n            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, expirationTime);\n            _created2['return'] = returnFiber;\n            return _created2;\n          }\n      }\n\n      if (isArray$1(newChild) || getIteratorFn(newChild)) {\n        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, expirationTime, null);\n        _created3['return'] = returnFiber;\n        return _created3;\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  function updateSlot(returnFiber, oldFiber, newChild, expirationTime) {\n    // Update the fiber if the keys match, otherwise return null.\n\n    var key = oldFiber !== null ? oldFiber.key : null;\n\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      if (key !== null) {\n        return null;\n      }\n      return updateTextNode(returnFiber, oldFiber, '' + newChild, expirationTime);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            if (newChild.key === key) {\n              if (newChild.type === REACT_FRAGMENT_TYPE) {\n                return updateFragment(returnFiber, oldFiber, newChild.props.children, expirationTime, key);\n              }\n              return updateElement(returnFiber, oldFiber, newChild, expirationTime);\n            } else {\n              return null;\n            }\n          }\n        case REACT_PORTAL_TYPE:\n          {\n            if (newChild.key === key) {\n              return updatePortal(returnFiber, oldFiber, newChild, expirationTime);\n            } else {\n              return null;\n            }\n          }\n      }\n\n      if (isArray$1(newChild) || getIteratorFn(newChild)) {\n        if (key !== null) {\n          return null;\n        }\n\n        return updateFragment(returnFiber, oldFiber, newChild, expirationTime, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, expirationTime) {\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      // Text nodes don't have keys, so we neither have to check the old nor\n      // new node for the key. If both are text nodes, they match.\n      var matchedFiber = existingChildren.get(newIdx) || null;\n      return updateTextNode(returnFiber, matchedFiber, '' + newChild, expirationTime);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n            if (newChild.type === REACT_FRAGMENT_TYPE) {\n              return updateFragment(returnFiber, _matchedFiber, newChild.props.children, expirationTime, newChild.key);\n            }\n            return updateElement(returnFiber, _matchedFiber, newChild, expirationTime);\n          }\n        case REACT_PORTAL_TYPE:\n          {\n            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n            return updatePortal(returnFiber, _matchedFiber2, newChild, expirationTime);\n          }\n      }\n\n      if (isArray$1(newChild) || getIteratorFn(newChild)) {\n        var _matchedFiber3 = existingChildren.get(newIdx) || null;\n        return updateFragment(returnFiber, _matchedFiber3, newChild, expirationTime, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n\n    return null;\n  }\n\n  /**\n   * Warns if there is a duplicate or missing key\n   */\n  function warnOnInvalidKey(child, knownKeys) {\n    {\n      if (typeof child !== 'object' || child === null) {\n        return knownKeys;\n      }\n      switch (child.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n        case REACT_PORTAL_TYPE:\n          warnForMissingKey(child);\n          var key = child.key;\n          if (typeof key !== 'string') {\n            break;\n          }\n          if (knownKeys === null) {\n            knownKeys = new Set();\n            knownKeys.add(key);\n            break;\n          }\n          if (!knownKeys.has(key)) {\n            knownKeys.add(key);\n            break;\n          }\n          warning(false, 'Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.%s', key, getCurrentFiberStackAddendum$2());\n          break;\n        default:\n          break;\n      }\n    }\n    return knownKeys;\n  }\n\n  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, expirationTime) {\n    // This algorithm can't optimize by searching from boths ends since we\n    // don't have backpointers on fibers. I'm trying to see how far we can get\n    // with that model. If it ends up not being worth the tradeoffs, we can\n    // add it later.\n\n    // Even with a two ended optimization, we'd want to optimize for the case\n    // where there are few changes and brute force the comparison instead of\n    // going for the Map. It'd like to explore hitting that path first in\n    // forward-only mode and only go for the Map once we notice that we need\n    // lots of look ahead. This doesn't handle reversal as well as two ended\n    // search but that's unusual. Besides, for the two ended optimization to\n    // work on Iterables, we'd need to copy the whole set.\n\n    // In this first iteration, we'll just live with hitting the bad case\n    // (adding everything to a Map) in for every insert/move.\n\n    // If you change this code, also update reconcileChildrenIterator() which\n    // uses the same algorithm.\n\n    {\n      // First, validate keys.\n      var knownKeys = null;\n      for (var i = 0; i < newChildren.length; i++) {\n        var child = newChildren[i];\n        knownKeys = warnOnInvalidKey(child, knownKeys);\n      }\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], expirationTime);\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n        break;\n      }\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (newIdx === newChildren.length) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; newIdx < newChildren.length; newIdx++) {\n        var _newFiber = createChild(returnFiber, newChildren[newIdx], expirationTime);\n        if (!_newFiber) {\n          continue;\n        }\n        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber;\n        } else {\n          previousNewFiber.sibling = _newFiber;\n        }\n        previousNewFiber = _newFiber;\n      }\n      return resultingFirstChild;\n    }\n\n    // Add all children to a key map for quick lookups.\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n\n    // Keep scanning and use the map to restore deleted items as moves.\n    for (; newIdx < newChildren.length; newIdx++) {\n      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], expirationTime);\n      if (_newFiber2) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber2.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren['delete'](_newFiber2.key === null ? newIdx : _newFiber2.key);\n          }\n        }\n        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber2;\n        } else {\n          previousNewFiber.sibling = _newFiber2;\n        }\n        previousNewFiber = _newFiber2;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, expirationTime) {\n    // This is the same implementation as reconcileChildrenArray(),\n    // but using the iterator instead.\n\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n    !(typeof iteratorFn === 'function') ? invariant(false, 'An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    {\n      // Warn about using Maps as children\n      if (typeof newChildrenIterable.entries === 'function') {\n        var possibleMap = newChildrenIterable;\n        if (possibleMap.entries === iteratorFn) {\n          !didWarnAboutMaps ? warning(false, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', getCurrentFiberStackAddendum$2()) : void 0;\n          didWarnAboutMaps = true;\n        }\n      }\n\n      // First, validate keys.\n      // We'll get a different iterator later for the main pass.\n      var _newChildren = iteratorFn.call(newChildrenIterable);\n      if (_newChildren) {\n        var knownKeys = null;\n        var _step = _newChildren.next();\n        for (; !_step.done; _step = _newChildren.next()) {\n          var child = _step.value;\n          knownKeys = warnOnInvalidKey(child, knownKeys);\n        }\n      }\n    }\n\n    var newChildren = iteratorFn.call(newChildrenIterable);\n    !(newChildren != null) ? invariant(false, 'An iterable object provided no iterator.') : void 0;\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n\n    var step = newChildren.next();\n    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, expirationTime);\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (!oldFiber) {\n          oldFiber = nextOldFiber;\n        }\n        break;\n      }\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (step.done) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; !step.done; newIdx++, step = newChildren.next()) {\n        var _newFiber3 = createChild(returnFiber, step.value, expirationTime);\n        if (_newFiber3 === null) {\n          continue;\n        }\n        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber3;\n        } else {\n          previousNewFiber.sibling = _newFiber3;\n        }\n        previousNewFiber = _newFiber3;\n      }\n      return resultingFirstChild;\n    }\n\n    // Add all children to a key map for quick lookups.\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n\n    // Keep scanning and use the map to restore deleted items as moves.\n    for (; !step.done; newIdx++, step = newChildren.next()) {\n      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, expirationTime);\n      if (_newFiber4 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber4.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren['delete'](_newFiber4.key === null ? newIdx : _newFiber4.key);\n          }\n        }\n        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber4;\n        } else {\n          previousNewFiber.sibling = _newFiber4;\n        }\n        previousNewFiber = _newFiber4;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, expirationTime) {\n    // There's no need to check for keys on text nodes since we don't have a\n    // way to define them.\n    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n      // We already have an existing node so let's just update it and delete\n      // the rest.\n      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n      var existing = useFiber(currentFirstChild, textContent, expirationTime);\n      existing['return'] = returnFiber;\n      return existing;\n    }\n    // The existing first child is not a text node so we need to create one\n    // and delete the existing ones.\n    deleteRemainingChildren(returnFiber, currentFirstChild);\n    var created = createFiberFromText(textContent, returnFiber.mode, expirationTime);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleElement(returnFiber, currentFirstChild, element, expirationTime) {\n    var key = element.key;\n    var child = currentFirstChild;\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === Fragment ? element.type === REACT_FRAGMENT_TYPE : child.type === element.type) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, element.type === REACT_FRAGMENT_TYPE ? element.props.children : element.props, expirationTime);\n          existing.ref = coerceRef(returnFiber, child, element);\n          existing['return'] = returnFiber;\n          {\n            existing._debugSource = element._source;\n            existing._debugOwner = element._owner;\n          }\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n      child = child.sibling;\n    }\n\n    if (element.type === REACT_FRAGMENT_TYPE) {\n      var created = createFiberFromFragment(element.props.children, returnFiber.mode, expirationTime, element.key);\n      created['return'] = returnFiber;\n      return created;\n    } else {\n      var _created4 = createFiberFromElement(element, returnFiber.mode, expirationTime);\n      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n      _created4['return'] = returnFiber;\n      return _created4;\n    }\n  }\n\n  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, expirationTime) {\n    var key = portal.key;\n    var child = currentFirstChild;\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, portal.children || [], expirationTime);\n          existing['return'] = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n      child = child.sibling;\n    }\n\n    var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime);\n    created['return'] = returnFiber;\n    return created;\n  }\n\n  // This API will tag the children with the side-effect of the reconciliation\n  // itself. They will be added to the side-effect list as we pass through the\n  // children and the parent.\n  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, expirationTime) {\n    // This function is not recursive.\n    // If the top level item is an array, we treat it as a set of children,\n    // not as a fragment. Nested arrays on the other hand will be treated as\n    // fragment nodes. Recursion happens at the normal flow.\n\n    // Handle top level unkeyed fragments as if they were arrays.\n    // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n    // We treat the ambiguous cases above the same.\n    if (typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null) {\n      newChild = newChild.props.children;\n    }\n\n    // Handle object types\n    var isObject = typeof newChild === 'object' && newChild !== null;\n\n    if (isObject) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, expirationTime));\n        case REACT_PORTAL_TYPE:\n          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, expirationTime));\n      }\n    }\n\n    if (typeof newChild === 'string' || typeof newChild === 'number') {\n      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, expirationTime));\n    }\n\n    if (isArray$1(newChild)) {\n      return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, expirationTime);\n    }\n\n    if (getIteratorFn(newChild)) {\n      return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, expirationTime);\n    }\n\n    if (isObject) {\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType();\n      }\n    }\n    if (typeof newChild === 'undefined') {\n      // If the new child is undefined, and the return fiber is a composite\n      // component, throw an error. If Fiber return types are disabled,\n      // we already threw above.\n      switch (returnFiber.tag) {\n        case ClassComponent:\n          {\n            {\n              var instance = returnFiber.stateNode;\n              if (instance.render._isMockFunction) {\n                // We allow auto-mocks to proceed as if they're returning null.\n                break;\n              }\n            }\n          }\n        // Intentionally fall through to the next case, which handles both\n        // functions and classes\n        // eslint-disable-next-lined no-fallthrough\n        case FunctionalComponent:\n          {\n            var Component = returnFiber.type;\n            invariant(false, '%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.', Component.displayName || Component.name || 'Component');\n          }\n      }\n    }\n\n    // Remaining cases are all treated as empty.\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n\n  return reconcileChildFibers;\n}\n\nvar reconcileChildFibers = ChildReconciler(true);\nvar mountChildFibers = ChildReconciler(false);\n\nfunction cloneChildFibers(current, workInProgress) {\n  !(current === null || workInProgress.child === current.child) ? invariant(false, 'Resuming work not yet implemented.') : void 0;\n\n  if (workInProgress.child === null) {\n    return;\n  }\n\n  var currentChild = workInProgress.child;\n  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps, currentChild.expirationTime);\n  workInProgress.child = newChild;\n\n  newChild['return'] = workInProgress;\n  while (currentChild.sibling !== null) {\n    currentChild = currentChild.sibling;\n    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps, currentChild.expirationTime);\n    newChild['return'] = workInProgress;\n  }\n  newChild.sibling = null;\n}\n\nvar didWarnAboutBadClass = void 0;\nvar didWarnAboutGetDerivedStateOnFunctionalComponent = void 0;\nvar didWarnAboutStatelessRefs = void 0;\n\n{\n  didWarnAboutBadClass = {};\n  didWarnAboutGetDerivedStateOnFunctionalComponent = {};\n  didWarnAboutStatelessRefs = {};\n}\n\nvar ReactFiberBeginWork = function (config, hostContext, legacyContext, newContext, hydrationContext, scheduleWork, computeExpirationForFiber) {\n  var shouldSetTextContent = config.shouldSetTextContent,\n      shouldDeprioritizeSubtree = config.shouldDeprioritizeSubtree;\n  var pushHostContext = hostContext.pushHostContext,\n      pushHostContainer = hostContext.pushHostContainer;\n  var pushProvider = newContext.pushProvider;\n  var getMaskedContext = legacyContext.getMaskedContext,\n      getUnmaskedContext = legacyContext.getUnmaskedContext,\n      hasLegacyContextChanged = legacyContext.hasContextChanged,\n      pushLegacyContextProvider = legacyContext.pushContextProvider,\n      pushTopLevelContextObject = legacyContext.pushTopLevelContextObject,\n      invalidateContextProvider = legacyContext.invalidateContextProvider;\n  var enterHydrationState = hydrationContext.enterHydrationState,\n      resetHydrationState = hydrationContext.resetHydrationState,\n      tryToClaimNextHydratableInstance = hydrationContext.tryToClaimNextHydratableInstance;\n\n  var _ReactFiberClassCompo = ReactFiberClassComponent(legacyContext, scheduleWork, computeExpirationForFiber, memoizeProps, memoizeState),\n      adoptClassInstance = _ReactFiberClassCompo.adoptClassInstance,\n      callGetDerivedStateFromProps = _ReactFiberClassCompo.callGetDerivedStateFromProps,\n      constructClassInstance = _ReactFiberClassCompo.constructClassInstance,\n      mountClassInstance = _ReactFiberClassCompo.mountClassInstance,\n      resumeMountClassInstance = _ReactFiberClassCompo.resumeMountClassInstance,\n      updateClassInstance = _ReactFiberClassCompo.updateClassInstance;\n\n  // TODO: Remove this and use reconcileChildrenAtExpirationTime directly.\n\n\n  function reconcileChildren(current, workInProgress, nextChildren) {\n    reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, workInProgress.expirationTime);\n  }\n\n  function reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, renderExpirationTime) {\n    if (current === null) {\n      // If this is a fresh new component that hasn't been rendered yet, we\n      // won't update its child set by applying minimal side-effects. Instead,\n      // we will add them all to the child before it gets rendered. That means\n      // we can optimize this reconciliation pass by not tracking side-effects.\n      workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime);\n    } else {\n      // If the current child is the same as the work in progress, it means that\n      // we haven't yet started any work on these children. Therefore, we use\n      // the clone algorithm to create a copy of all the current children.\n\n      // If we had any progressed work already, that is invalid at this point so\n      // let's throw it out.\n      workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime);\n    }\n  }\n\n  function updateForwardRef(current, workInProgress) {\n    var render = workInProgress.type.render;\n    var nextChildren = render(workInProgress.pendingProps, workInProgress.ref);\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextChildren);\n    return workInProgress.child;\n  }\n\n  function updateFragment(current, workInProgress) {\n    var nextChildren = workInProgress.pendingProps;\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (workInProgress.memoizedProps === nextChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextChildren);\n    return workInProgress.child;\n  }\n\n  function updateMode(current, workInProgress) {\n    var nextChildren = workInProgress.pendingProps.children;\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (nextChildren === null || workInProgress.memoizedProps === nextChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextChildren);\n    return workInProgress.child;\n  }\n\n  function markRef(current, workInProgress) {\n    var ref = workInProgress.ref;\n    if (current === null && ref !== null || current !== null && current.ref !== ref) {\n      // Schedule a Ref effect\n      workInProgress.effectTag |= Ref;\n    }\n  }\n\n  function updateFunctionalComponent(current, workInProgress) {\n    var fn = workInProgress.type;\n    var nextProps = workInProgress.pendingProps;\n\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else {\n      if (workInProgress.memoizedProps === nextProps) {\n        return bailoutOnAlreadyFinishedWork(current, workInProgress);\n      }\n      // TODO: consider bringing fn.shouldComponentUpdate() back.\n      // It used to be here.\n    }\n\n    var unmaskedContext = getUnmaskedContext(workInProgress);\n    var context = getMaskedContext(workInProgress, unmaskedContext);\n\n    var nextChildren = void 0;\n\n    {\n      ReactCurrentOwner.current = workInProgress;\n      ReactDebugCurrentFiber.setCurrentPhase('render');\n      nextChildren = fn(nextProps, context);\n      ReactDebugCurrentFiber.setCurrentPhase(null);\n    }\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork;\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextProps);\n    return workInProgress.child;\n  }\n\n  function updateClassComponent(current, workInProgress, renderExpirationTime) {\n    // Push context providers early to prevent context stack mismatches.\n    // During mounting we don't know the child context yet as the instance doesn't exist.\n    // We will invalidate the child context in finishClassComponent() right after rendering.\n    var hasContext = pushLegacyContextProvider(workInProgress);\n    var shouldUpdate = void 0;\n    if (current === null) {\n      if (workInProgress.stateNode === null) {\n        // In the initial pass we might need to construct the instance.\n        constructClassInstance(workInProgress, workInProgress.pendingProps);\n        mountClassInstance(workInProgress, renderExpirationTime);\n\n        shouldUpdate = true;\n      } else {\n        // In a resume, we'll already have an instance we can reuse.\n        shouldUpdate = resumeMountClassInstance(workInProgress, renderExpirationTime);\n      }\n    } else {\n      shouldUpdate = updateClassInstance(current, workInProgress, renderExpirationTime);\n    }\n\n    // We processed the update queue inside updateClassInstance. It may have\n    // included some errors that were dispatched during the commit phase.\n    // TODO: Refactor class components so this is less awkward.\n    var didCaptureError = false;\n    var updateQueue = workInProgress.updateQueue;\n    if (updateQueue !== null && updateQueue.capturedValues !== null) {\n      shouldUpdate = true;\n      didCaptureError = true;\n    }\n    return finishClassComponent(current, workInProgress, shouldUpdate, hasContext, didCaptureError, renderExpirationTime);\n  }\n\n  function finishClassComponent(current, workInProgress, shouldUpdate, hasContext, didCaptureError, renderExpirationTime) {\n    // Refs should update even if shouldComponentUpdate returns false\n    markRef(current, workInProgress);\n\n    if (!shouldUpdate && !didCaptureError) {\n      // Context providers should defer to sCU for rendering\n      if (hasContext) {\n        invalidateContextProvider(workInProgress, false);\n      }\n\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var ctor = workInProgress.type;\n    var instance = workInProgress.stateNode;\n\n    // Rerender\n    ReactCurrentOwner.current = workInProgress;\n    var nextChildren = void 0;\n    if (didCaptureError && (!enableGetDerivedStateFromCatch || typeof ctor.getDerivedStateFromCatch !== 'function')) {\n      // If we captured an error, but getDerivedStateFrom catch is not defined,\n      // unmount all the children. componentDidCatch will schedule an update to\n      // re-render a fallback. This is temporary until we migrate everyone to\n      // the new API.\n      // TODO: Warn in a future release.\n      nextChildren = null;\n    } else {\n      {\n        ReactDebugCurrentFiber.setCurrentPhase('render');\n        nextChildren = instance.render();\n        if (debugRenderPhaseSideEffects || debugRenderPhaseSideEffectsForStrictMode && workInProgress.mode & StrictMode) {\n          instance.render();\n        }\n        ReactDebugCurrentFiber.setCurrentPhase(null);\n      }\n    }\n\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork;\n    if (didCaptureError) {\n      // If we're recovering from an error, reconcile twice: first to delete\n      // all the existing children.\n      reconcileChildrenAtExpirationTime(current, workInProgress, null, renderExpirationTime);\n      workInProgress.child = null;\n      // Now we can continue reconciling like normal. This has the effect of\n      // remounting all children regardless of whether their their\n      // identity matches.\n    }\n    reconcileChildrenAtExpirationTime(current, workInProgress, nextChildren, renderExpirationTime);\n    // Memoize props and state using the values we just used to render.\n    // TODO: Restructure so we never read values from the instance.\n    memoizeState(workInProgress, instance.state);\n    memoizeProps(workInProgress, instance.props);\n\n    // The context might have changed so we need to recalculate it.\n    if (hasContext) {\n      invalidateContextProvider(workInProgress, true);\n    }\n\n    return workInProgress.child;\n  }\n\n  function pushHostRootContext(workInProgress) {\n    var root = workInProgress.stateNode;\n    if (root.pendingContext) {\n      pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n    } else if (root.context) {\n      // Should always be set\n      pushTopLevelContextObject(workInProgress, root.context, false);\n    }\n    pushHostContainer(workInProgress, root.containerInfo);\n  }\n\n  function updateHostRoot(current, workInProgress, renderExpirationTime) {\n    pushHostRootContext(workInProgress);\n    var updateQueue = workInProgress.updateQueue;\n    if (updateQueue !== null) {\n      var prevState = workInProgress.memoizedState;\n      var state = processUpdateQueue(current, workInProgress, updateQueue, null, null, renderExpirationTime);\n      memoizeState(workInProgress, state);\n      updateQueue = workInProgress.updateQueue;\n\n      var element = void 0;\n      if (updateQueue !== null && updateQueue.capturedValues !== null) {\n        // There's an uncaught error. Unmount the whole root.\n        element = null;\n      } else if (prevState === state) {\n        // If the state is the same as before, that's a bailout because we had\n        // no work that expires at this time.\n        resetHydrationState();\n        return bailoutOnAlreadyFinishedWork(current, workInProgress);\n      } else {\n        element = state.element;\n      }\n      var root = workInProgress.stateNode;\n      if ((current === null || current.child === null) && root.hydrate && enterHydrationState(workInProgress)) {\n        // If we don't have any current children this might be the first pass.\n        // We always try to hydrate. If this isn't a hydration pass there won't\n        // be any children to hydrate which is effectively the same thing as\n        // not hydrating.\n\n        // This is a bit of a hack. We track the host root as a placement to\n        // know that we're currently in a mounting state. That way isMounted\n        // works as expected. We must reset this before committing.\n        // TODO: Delete this when we delete isMounted and findDOMNode.\n        workInProgress.effectTag |= Placement;\n\n        // Ensure that children mount into this root without tracking\n        // side-effects. This ensures that we don't store Placement effects on\n        // nodes that will be hydrated.\n        workInProgress.child = mountChildFibers(workInProgress, null, element, renderExpirationTime);\n      } else {\n        // Otherwise reset hydration state in case we aborted and resumed another\n        // root.\n        resetHydrationState();\n        reconcileChildren(current, workInProgress, element);\n      }\n      memoizeState(workInProgress, state);\n      return workInProgress.child;\n    }\n    resetHydrationState();\n    // If there is no update queue, that's a bailout because the root has no props.\n    return bailoutOnAlreadyFinishedWork(current, workInProgress);\n  }\n\n  function updateHostComponent(current, workInProgress, renderExpirationTime) {\n    pushHostContext(workInProgress);\n\n    if (current === null) {\n      tryToClaimNextHydratableInstance(workInProgress);\n    }\n\n    var type = workInProgress.type;\n    var memoizedProps = workInProgress.memoizedProps;\n    var nextProps = workInProgress.pendingProps;\n    var prevProps = current !== null ? current.memoizedProps : null;\n\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (memoizedProps === nextProps) {\n      var isHidden = workInProgress.mode & AsyncMode && shouldDeprioritizeSubtree(type, nextProps);\n      if (isHidden) {\n        // Before bailing out, make sure we've deprioritized a hidden component.\n        workInProgress.expirationTime = Never;\n      }\n      if (!isHidden || renderExpirationTime !== Never) {\n        return bailoutOnAlreadyFinishedWork(current, workInProgress);\n      }\n      // If we're rendering a hidden node at hidden priority, don't bailout. The\n      // parent is complete, but the children may not be.\n    }\n\n    var nextChildren = nextProps.children;\n    var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n    if (isDirectTextChild) {\n      // We special case a direct text child of a host node. This is a common\n      // case. We won't handle it as a reified child. We will instead handle\n      // this in the host environment that also have access to this prop. That\n      // avoids allocating another HostText fiber and traversing it.\n      nextChildren = null;\n    } else if (prevProps && shouldSetTextContent(type, prevProps)) {\n      // If we're switching from a direct text child to a normal child, or to\n      // empty, we need to schedule the text content to be reset.\n      workInProgress.effectTag |= ContentReset;\n    }\n\n    markRef(current, workInProgress);\n\n    // Check the host config to see if the children are offscreen/hidden.\n    if (renderExpirationTime !== Never && workInProgress.mode & AsyncMode && shouldDeprioritizeSubtree(type, nextProps)) {\n      // Down-prioritize the children.\n      workInProgress.expirationTime = Never;\n      // Bailout and come back to this fiber later.\n      workInProgress.memoizedProps = nextProps;\n      return null;\n    }\n\n    reconcileChildren(current, workInProgress, nextChildren);\n    memoizeProps(workInProgress, nextProps);\n    return workInProgress.child;\n  }\n\n  function updateHostText(current, workInProgress) {\n    if (current === null) {\n      tryToClaimNextHydratableInstance(workInProgress);\n    }\n    var nextProps = workInProgress.pendingProps;\n    memoizeProps(workInProgress, nextProps);\n    // Nothing to do here. This is terminal. We'll do the completion step\n    // immediately after.\n    return null;\n  }\n\n  function mountIndeterminateComponent(current, workInProgress, renderExpirationTime) {\n    !(current === null) ? invariant(false, 'An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    var fn = workInProgress.type;\n    var props = workInProgress.pendingProps;\n    var unmaskedContext = getUnmaskedContext(workInProgress);\n    var context = getMaskedContext(workInProgress, unmaskedContext);\n\n    var value = void 0;\n\n    {\n      if (fn.prototype && typeof fn.prototype.render === 'function') {\n        var componentName = getComponentName(workInProgress) || 'Unknown';\n\n        if (!didWarnAboutBadClass[componentName]) {\n          warning(false, \"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n          didWarnAboutBadClass[componentName] = true;\n        }\n      }\n      ReactCurrentOwner.current = workInProgress;\n      value = fn(props, context);\n    }\n    // React DevTools reads this flag.\n    workInProgress.effectTag |= PerformedWork;\n\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var Component = workInProgress.type;\n\n      // Proceed under the assumption that this is a class instance\n      workInProgress.tag = ClassComponent;\n\n      workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n\n      if (typeof Component.getDerivedStateFromProps === 'function') {\n        var partialState = callGetDerivedStateFromProps(workInProgress, value, props, workInProgress.memoizedState);\n\n        if (partialState !== null && partialState !== undefined) {\n          workInProgress.memoizedState = _assign({}, workInProgress.memoizedState, partialState);\n        }\n      }\n\n      // Push context providers early to prevent context stack mismatches.\n      // During mounting we don't know the child context yet as the instance doesn't exist.\n      // We will invalidate the child context in finishClassComponent() right after rendering.\n      var hasContext = pushLegacyContextProvider(workInProgress);\n      adoptClassInstance(workInProgress, value);\n      mountClassInstance(workInProgress, renderExpirationTime);\n      return finishClassComponent(current, workInProgress, true, hasContext, false, renderExpirationTime);\n    } else {\n      // Proceed under the assumption that this is a functional component\n      workInProgress.tag = FunctionalComponent;\n      {\n        var _Component = workInProgress.type;\n\n        if (_Component) {\n          !!_Component.childContextTypes ? warning(false, '%s(...): childContextTypes cannot be defined on a functional component.', _Component.displayName || _Component.name || 'Component') : void 0;\n        }\n        if (workInProgress.ref !== null) {\n          var info = '';\n          var ownerName = ReactDebugCurrentFiber.getCurrentFiberOwnerName();\n          if (ownerName) {\n            info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n          }\n\n          var warningKey = ownerName || workInProgress._debugID || '';\n          var debugSource = workInProgress._debugSource;\n          if (debugSource) {\n            warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n          }\n          if (!didWarnAboutStatelessRefs[warningKey]) {\n            didWarnAboutStatelessRefs[warningKey] = true;\n            warning(false, 'Stateless function components cannot be given refs. ' + 'Attempts to access this ref will fail.%s%s', info, ReactDebugCurrentFiber.getCurrentFiberStackAddendum());\n          }\n        }\n\n        if (typeof fn.getDerivedStateFromProps === 'function') {\n          var _componentName = getComponentName(workInProgress) || 'Unknown';\n\n          if (!didWarnAboutGetDerivedStateOnFunctionalComponent[_componentName]) {\n            warning(false, '%s: Stateless functional components do not support getDerivedStateFromProps.', _componentName);\n            didWarnAboutGetDerivedStateOnFunctionalComponent[_componentName] = true;\n          }\n        }\n      }\n      reconcileChildren(current, workInProgress, value);\n      memoizeProps(workInProgress, props);\n      return workInProgress.child;\n    }\n  }\n\n  function updateCallComponent(current, workInProgress, renderExpirationTime) {\n    var nextProps = workInProgress.pendingProps;\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (workInProgress.memoizedProps === nextProps) {\n      nextProps = workInProgress.memoizedProps;\n      // TODO: When bailing out, we might need to return the stateNode instead\n      // of the child. To check it for work.\n      // return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var nextChildren = nextProps.children;\n\n    // The following is a fork of reconcileChildrenAtExpirationTime but using\n    // stateNode to store the child.\n    if (current === null) {\n      workInProgress.stateNode = mountChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);\n    } else {\n      workInProgress.stateNode = reconcileChildFibers(workInProgress, current.stateNode, nextChildren, renderExpirationTime);\n    }\n\n    memoizeProps(workInProgress, nextProps);\n    // This doesn't take arbitrary time so we could synchronously just begin\n    // eagerly do the work of workInProgress.child as an optimization.\n    return workInProgress.stateNode;\n  }\n\n  function updatePortalComponent(current, workInProgress, renderExpirationTime) {\n    pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n    var nextChildren = workInProgress.pendingProps;\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (workInProgress.memoizedProps === nextChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    if (current === null) {\n      // Portals are special because we don't append the children during mount\n      // but at commit. Therefore we need to track insertions which the normal\n      // flow doesn't do during mount. This doesn't happen at the root because\n      // the root always starts with a \"current\" with a null child.\n      // TODO: Consider unifying this with how the root works.\n      workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime);\n      memoizeProps(workInProgress, nextChildren);\n    } else {\n      reconcileChildren(current, workInProgress, nextChildren);\n      memoizeProps(workInProgress, nextChildren);\n    }\n    return workInProgress.child;\n  }\n\n  function propagateContextChange(workInProgress, context, changedBits, renderExpirationTime) {\n    var fiber = workInProgress.child;\n    if (fiber !== null) {\n      // Set the return pointer of the child to the work-in-progress fiber.\n      fiber['return'] = workInProgress;\n    }\n    while (fiber !== null) {\n      var nextFiber = void 0;\n      // Visit this fiber.\n      switch (fiber.tag) {\n        case ContextConsumer:\n          // Check if the context matches.\n          var observedBits = fiber.stateNode | 0;\n          if (fiber.type === context && (observedBits & changedBits) !== 0) {\n            // Update the expiration time of all the ancestors, including\n            // the alternates.\n            var node = fiber;\n            while (node !== null) {\n              var alternate = node.alternate;\n              if (node.expirationTime === NoWork || node.expirationTime > renderExpirationTime) {\n                node.expirationTime = renderExpirationTime;\n                if (alternate !== null && (alternate.expirationTime === NoWork || alternate.expirationTime > renderExpirationTime)) {\n                  alternate.expirationTime = renderExpirationTime;\n                }\n              } else if (alternate !== null && (alternate.expirationTime === NoWork || alternate.expirationTime > renderExpirationTime)) {\n                alternate.expirationTime = renderExpirationTime;\n              } else {\n                // Neither alternate was updated, which means the rest of the\n                // ancestor path already has sufficient priority.\n                break;\n              }\n              node = node['return'];\n            }\n            // Don't scan deeper than a matching consumer. When we render the\n            // consumer, we'll continue scanning from that point. This way the\n            // scanning work is time-sliced.\n            nextFiber = null;\n          } else {\n            // Traverse down.\n            nextFiber = fiber.child;\n          }\n          break;\n        case ContextProvider:\n          // Don't scan deeper if this is a matching provider\n          nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n          break;\n        default:\n          // Traverse down.\n          nextFiber = fiber.child;\n          break;\n      }\n      if (nextFiber !== null) {\n        // Set the return pointer of the child to the work-in-progress fiber.\n        nextFiber['return'] = fiber;\n      } else {\n        // No child. Traverse to next sibling.\n        nextFiber = fiber;\n        while (nextFiber !== null) {\n          if (nextFiber === workInProgress) {\n            // We're back to the root of this subtree. Exit.\n            nextFiber = null;\n            break;\n          }\n          var sibling = nextFiber.sibling;\n          if (sibling !== null) {\n            nextFiber = sibling;\n            break;\n          }\n          // No more siblings. Traverse up.\n          nextFiber = nextFiber['return'];\n        }\n      }\n      fiber = nextFiber;\n    }\n  }\n\n  function updateContextProvider(current, workInProgress, renderExpirationTime) {\n    var providerType = workInProgress.type;\n    var context = providerType._context;\n\n    var newProps = workInProgress.pendingProps;\n    var oldProps = workInProgress.memoizedProps;\n\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (oldProps === newProps) {\n      workInProgress.stateNode = 0;\n      pushProvider(workInProgress);\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n\n    var newValue = newProps.value;\n    workInProgress.memoizedProps = newProps;\n\n    var changedBits = void 0;\n    if (oldProps === null) {\n      // Initial render\n      changedBits = MAX_SIGNED_31_BIT_INT;\n    } else {\n      if (oldProps.value === newProps.value) {\n        // No change. Bailout early if children are the same.\n        if (oldProps.children === newProps.children) {\n          workInProgress.stateNode = 0;\n          pushProvider(workInProgress);\n          return bailoutOnAlreadyFinishedWork(current, workInProgress);\n        }\n        changedBits = 0;\n      } else {\n        var oldValue = oldProps.value;\n        // Use Object.is to compare the new context value to the old value.\n        // Inlined Object.is polyfill.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n        if (oldValue === newValue && (oldValue !== 0 || 1 / oldValue === 1 / newValue) || oldValue !== oldValue && newValue !== newValue // eslint-disable-line no-self-compare\n        ) {\n            // No change. Bailout early if children are the same.\n            if (oldProps.children === newProps.children) {\n              workInProgress.stateNode = 0;\n              pushProvider(workInProgress);\n              return bailoutOnAlreadyFinishedWork(current, workInProgress);\n            }\n            changedBits = 0;\n          } else {\n          changedBits = typeof context._calculateChangedBits === 'function' ? context._calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n          {\n            !((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits) ? warning(false, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits) : void 0;\n          }\n          changedBits |= 0;\n\n          if (changedBits === 0) {\n            // No change. Bailout early if children are the same.\n            if (oldProps.children === newProps.children) {\n              workInProgress.stateNode = 0;\n              pushProvider(workInProgress);\n              return bailoutOnAlreadyFinishedWork(current, workInProgress);\n            }\n          } else {\n            propagateContextChange(workInProgress, context, changedBits, renderExpirationTime);\n          }\n        }\n      }\n    }\n\n    workInProgress.stateNode = changedBits;\n    pushProvider(workInProgress);\n\n    var newChildren = newProps.children;\n    reconcileChildren(current, workInProgress, newChildren);\n    return workInProgress.child;\n  }\n\n  function updateContextConsumer(current, workInProgress, renderExpirationTime) {\n    var context = workInProgress.type;\n    var newProps = workInProgress.pendingProps;\n    var oldProps = workInProgress.memoizedProps;\n\n    var newValue = context._currentValue;\n    var changedBits = context._changedBits;\n\n    if (hasLegacyContextChanged()) {\n      // Normally we can bail out on props equality but if context has changed\n      // we don't do the bailout and we have to reuse existing props instead.\n    } else if (changedBits === 0 && oldProps === newProps) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n    workInProgress.memoizedProps = newProps;\n\n    var observedBits = newProps.unstable_observedBits;\n    if (observedBits === undefined || observedBits === null) {\n      // Subscribe to all changes by default\n      observedBits = MAX_SIGNED_31_BIT_INT;\n    }\n    // Store the observedBits on the fiber's stateNode for quick access.\n    workInProgress.stateNode = observedBits;\n\n    if ((changedBits & observedBits) !== 0) {\n      // Context change propagation stops at matching consumers, for time-\n      // slicing. Continue the propagation here.\n      propagateContextChange(workInProgress, context, changedBits, renderExpirationTime);\n    } else if (oldProps === newProps) {\n      // Skip over a memoized parent with a bitmask bailout even\n      // if we began working on it because of a deeper matching child.\n      return bailoutOnAlreadyFinishedWork(current, workInProgress);\n    }\n    // There is no bailout on `children` equality because we expect people\n    // to often pass a bound method as a child, but it may reference\n    // `this.state` or `this.props` (and thus needs to re-render on `setState`).\n\n    var render = newProps.children;\n\n    {\n      !(typeof render === 'function') ? warning(false, 'A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.') : void 0;\n    }\n\n    var newChildren = render(newValue);\n    reconcileChildren(current, workInProgress, newChildren);\n    return workInProgress.child;\n  }\n\n  /*\n  function reuseChildrenEffects(returnFiber : Fiber, firstChild : Fiber) {\n    let child = firstChild;\n    do {\n      // Ensure that the first and last effect of the parent corresponds\n      // to the children's first and last effect.\n      if (!returnFiber.firstEffect) {\n        returnFiber.firstEffect = child.firstEffect;\n      }\n      if (child.lastEffect) {\n        if (returnFiber.lastEffect) {\n          returnFiber.lastEffect.nextEffect = child.firstEffect;\n        }\n        returnFiber.lastEffect = child.lastEffect;\n      }\n    } while (child = child.sibling);\n  }\n  */\n\n  function bailoutOnAlreadyFinishedWork(current, workInProgress) {\n    cancelWorkTimer(workInProgress);\n\n    // TODO: We should ideally be able to bail out early if the children have no\n    // more work to do. However, since we don't have a separation of this\n    // Fiber's priority and its children yet - we don't know without doing lots\n    // of the same work we do anyway. Once we have that separation we can just\n    // bail out here if the children has no more work at this priority level.\n    // if (workInProgress.priorityOfChildren <= priorityLevel) {\n    //   // If there are side-effects in these children that have not yet been\n    //   // committed we need to ensure that they get properly transferred up.\n    //   if (current && current.child !== workInProgress.child) {\n    //     reuseChildrenEffects(workInProgress, child);\n    //   }\n    //   return null;\n    // }\n\n    cloneChildFibers(current, workInProgress);\n    return workInProgress.child;\n  }\n\n  function bailoutOnLowPriority(current, workInProgress) {\n    cancelWorkTimer(workInProgress);\n\n    // TODO: Handle HostComponent tags here as well and call pushHostContext()?\n    // See PR 8590 discussion for context\n    switch (workInProgress.tag) {\n      case HostRoot:\n        pushHostRootContext(workInProgress);\n        break;\n      case ClassComponent:\n        pushLegacyContextProvider(workInProgress);\n        break;\n      case HostPortal:\n        pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n        break;\n      case ContextProvider:\n        pushProvider(workInProgress);\n        break;\n    }\n    // TODO: What if this is currently in progress?\n    // How can that happen? How is this not being cloned?\n    return null;\n  }\n\n  // TODO: Delete memoizeProps/State and move to reconcile/bailout instead\n  function memoizeProps(workInProgress, nextProps) {\n    workInProgress.memoizedProps = nextProps;\n  }\n\n  function memoizeState(workInProgress, nextState) {\n    workInProgress.memoizedState = nextState;\n    // Don't reset the updateQueue, in case there are pending updates. Resetting\n    // is handled by processUpdateQueue.\n  }\n\n  function beginWork(current, workInProgress, renderExpirationTime) {\n    if (workInProgress.expirationTime === NoWork || workInProgress.expirationTime > renderExpirationTime) {\n      return bailoutOnLowPriority(current, workInProgress);\n    }\n\n    switch (workInProgress.tag) {\n      case IndeterminateComponent:\n        return mountIndeterminateComponent(current, workInProgress, renderExpirationTime);\n      case FunctionalComponent:\n        return updateFunctionalComponent(current, workInProgress);\n      case ClassComponent:\n        return updateClassComponent(current, workInProgress, renderExpirationTime);\n      case HostRoot:\n        return updateHostRoot(current, workInProgress, renderExpirationTime);\n      case HostComponent:\n        return updateHostComponent(current, workInProgress, renderExpirationTime);\n      case HostText:\n        return updateHostText(current, workInProgress);\n      case CallHandlerPhase:\n        // This is a restart. Reset the tag to the initial phase.\n        workInProgress.tag = CallComponent;\n      // Intentionally fall through since this is now the same.\n      case CallComponent:\n        return updateCallComponent(current, workInProgress, renderExpirationTime);\n      case ReturnComponent:\n        // A return component is just a placeholder, we can just run through the\n        // next one immediately.\n        return null;\n      case HostPortal:\n        return updatePortalComponent(current, workInProgress, renderExpirationTime);\n      case ForwardRef:\n        return updateForwardRef(current, workInProgress);\n      case Fragment:\n        return updateFragment(current, workInProgress);\n      case Mode:\n        return updateMode(current, workInProgress);\n      case ContextProvider:\n        return updateContextProvider(current, workInProgress, renderExpirationTime);\n      case ContextConsumer:\n        return updateContextConsumer(current, workInProgress, renderExpirationTime);\n      default:\n        invariant(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  return {\n    beginWork: beginWork\n  };\n};\n\nvar ReactFiberCompleteWork = function (config, hostContext, legacyContext, newContext, hydrationContext) {\n  var createInstance = config.createInstance,\n      createTextInstance = config.createTextInstance,\n      appendInitialChild = config.appendInitialChild,\n      finalizeInitialChildren = config.finalizeInitialChildren,\n      prepareUpdate = config.prepareUpdate,\n      mutation = config.mutation,\n      persistence = config.persistence;\n  var getRootHostContainer = hostContext.getRootHostContainer,\n      popHostContext = hostContext.popHostContext,\n      getHostContext = hostContext.getHostContext,\n      popHostContainer = hostContext.popHostContainer;\n  var popLegacyContextProvider = legacyContext.popContextProvider,\n      popTopLevelLegacyContextObject = legacyContext.popTopLevelContextObject;\n  var popProvider = newContext.popProvider;\n  var prepareToHydrateHostInstance = hydrationContext.prepareToHydrateHostInstance,\n      prepareToHydrateHostTextInstance = hydrationContext.prepareToHydrateHostTextInstance,\n      popHydrationState = hydrationContext.popHydrationState;\n\n\n  function markUpdate(workInProgress) {\n    // Tag the fiber with an update effect. This turns a Placement into\n    // a PlacementAndUpdate.\n    workInProgress.effectTag |= Update;\n  }\n\n  function markRef(workInProgress) {\n    workInProgress.effectTag |= Ref;\n  }\n\n  function appendAllReturns(returns, workInProgress) {\n    var node = workInProgress.stateNode;\n    if (node) {\n      node['return'] = workInProgress;\n    }\n    while (node !== null) {\n      if (node.tag === HostComponent || node.tag === HostText || node.tag === HostPortal) {\n        invariant(false, 'A call cannot have host component children.');\n      } else if (node.tag === ReturnComponent) {\n        returns.push(node.pendingProps.value);\n      } else if (node.child !== null) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === workInProgress) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function moveCallToHandlerPhase(current, workInProgress, renderExpirationTime) {\n    var props = workInProgress.memoizedProps;\n    !props ? invariant(false, 'Should be resolved by now. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    // First step of the call has completed. Now we need to do the second.\n    // TODO: It would be nice to have a multi stage call represented by a\n    // single component, or at least tail call optimize nested ones. Currently\n    // that requires additional fields that we don't want to add to the fiber.\n    // So this requires nested handlers.\n    // Note: This doesn't mutate the alternate node. I don't think it needs to\n    // since this stage is reset for every pass.\n    workInProgress.tag = CallHandlerPhase;\n\n    // Build up the returns.\n    // TODO: Compare this to a generator or opaque helpers like Children.\n    var returns = [];\n    appendAllReturns(returns, workInProgress);\n    var fn = props.handler;\n    var childProps = props.props;\n    var nextChildren = fn(childProps, returns);\n\n    var currentFirstChild = current !== null ? current.child : null;\n    workInProgress.child = reconcileChildFibers(workInProgress, currentFirstChild, nextChildren, renderExpirationTime);\n    return workInProgress.child;\n  }\n\n  function appendAllChildren(parent, workInProgress) {\n    // We only have the top Fiber that was created but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = workInProgress.child;\n    while (node !== null) {\n      if (node.tag === HostComponent || node.tag === HostText) {\n        appendInitialChild(parent, node.stateNode);\n      } else if (node.tag === HostPortal) {\n        // If we have a portal child, then we don't want to traverse\n        // down its children. Instead, we'll get insertions from each child in\n        // the portal directly.\n      } else if (node.child !== null) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      if (node === workInProgress) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === workInProgress) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  var updateHostContainer = void 0;\n  var updateHostComponent = void 0;\n  var updateHostText = void 0;\n  if (mutation) {\n    if (enableMutatingReconciler) {\n      // Mutation mode\n      updateHostContainer = function (workInProgress) {\n        // Noop\n      };\n      updateHostComponent = function (current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance, currentHostContext) {\n        // TODO: Type this specific to this type of component.\n        workInProgress.updateQueue = updatePayload;\n        // If the update payload indicates that there is a change or if there\n        // is a new ref we mark this as an update. All the work is done in commitWork.\n        if (updatePayload) {\n          markUpdate(workInProgress);\n        }\n      };\n      updateHostText = function (current, workInProgress, oldText, newText) {\n        // If the text differs, mark it as an update. All the work in done in commitWork.\n        if (oldText !== newText) {\n          markUpdate(workInProgress);\n        }\n      };\n    } else {\n      invariant(false, 'Mutating reconciler is disabled.');\n    }\n  } else if (persistence) {\n    if (enablePersistentReconciler) {\n      // Persistent host tree mode\n      var cloneInstance = persistence.cloneInstance,\n          createContainerChildSet = persistence.createContainerChildSet,\n          appendChildToContainerChildSet = persistence.appendChildToContainerChildSet,\n          finalizeContainerChildren = persistence.finalizeContainerChildren;\n\n      // An unfortunate fork of appendAllChildren because we have two different parent types.\n\n      var appendAllChildrenToContainer = function (containerChildSet, workInProgress) {\n        // We only have the top Fiber that was created but we need recurse down its\n        // children to find all the terminal nodes.\n        var node = workInProgress.child;\n        while (node !== null) {\n          if (node.tag === HostComponent || node.tag === HostText) {\n            appendChildToContainerChildSet(containerChildSet, node.stateNode);\n          } else if (node.tag === HostPortal) {\n            // If we have a portal child, then we don't want to traverse\n            // down its children. Instead, we'll get insertions from each child in\n            // the portal directly.\n          } else if (node.child !== null) {\n            node.child['return'] = node;\n            node = node.child;\n            continue;\n          }\n          if (node === workInProgress) {\n            return;\n          }\n          while (node.sibling === null) {\n            if (node['return'] === null || node['return'] === workInProgress) {\n              return;\n            }\n            node = node['return'];\n          }\n          node.sibling['return'] = node['return'];\n          node = node.sibling;\n        }\n      };\n      updateHostContainer = function (workInProgress) {\n        var portalOrRoot = workInProgress.stateNode;\n        var childrenUnchanged = workInProgress.firstEffect === null;\n        if (childrenUnchanged) {\n          // No changes, just reuse the existing instance.\n        } else {\n          var container = portalOrRoot.containerInfo;\n          var newChildSet = createContainerChildSet(container);\n          // If children might have changed, we have to add them all to the set.\n          appendAllChildrenToContainer(newChildSet, workInProgress);\n          portalOrRoot.pendingChildren = newChildSet;\n          // Schedule an update on the container to swap out the container.\n          markUpdate(workInProgress);\n          finalizeContainerChildren(container, newChildSet);\n        }\n      };\n      updateHostComponent = function (current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance, currentHostContext) {\n        // If there are no effects associated with this node, then none of our children had any updates.\n        // This guarantees that we can reuse all of them.\n        var childrenUnchanged = workInProgress.firstEffect === null;\n        var currentInstance = current.stateNode;\n        if (childrenUnchanged && updatePayload === null) {\n          // No changes, just reuse the existing instance.\n          // Note that this might release a previous clone.\n          workInProgress.stateNode = currentInstance;\n        } else {\n          var recyclableInstance = workInProgress.stateNode;\n          var newInstance = cloneInstance(currentInstance, updatePayload, type, oldProps, newProps, workInProgress, childrenUnchanged, recyclableInstance);\n          if (finalizeInitialChildren(newInstance, type, newProps, rootContainerInstance, currentHostContext)) {\n            markUpdate(workInProgress);\n          }\n          workInProgress.stateNode = newInstance;\n          if (childrenUnchanged) {\n            // If there are no other effects in this tree, we need to flag this node as having one.\n            // Even though we're not going to use it for anything.\n            // Otherwise parents won't know that there are new children to propagate upwards.\n            markUpdate(workInProgress);\n          } else {\n            // If children might have changed, we have to add them all to the set.\n            appendAllChildren(newInstance, workInProgress);\n          }\n        }\n      };\n      updateHostText = function (current, workInProgress, oldText, newText) {\n        if (oldText !== newText) {\n          // If the text content differs, we'll create a new text instance for it.\n          var rootContainerInstance = getRootHostContainer();\n          var currentHostContext = getHostContext();\n          workInProgress.stateNode = createTextInstance(newText, rootContainerInstance, currentHostContext, workInProgress);\n          // We'll have to mark it as having an effect, even though we won't use the effect for anything.\n          // This lets the parents know that at least one of their children has changed.\n          markUpdate(workInProgress);\n        }\n      };\n    } else {\n      invariant(false, 'Persistent reconciler is disabled.');\n    }\n  } else {\n    if (enableNoopReconciler) {\n      // No host operations\n      updateHostContainer = function (workInProgress) {\n        // Noop\n      };\n      updateHostComponent = function (current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance, currentHostContext) {\n        // Noop\n      };\n      updateHostText = function (current, workInProgress, oldText, newText) {\n        // Noop\n      };\n    } else {\n      invariant(false, 'Noop reconciler is disabled.');\n    }\n  }\n\n  function completeWork(current, workInProgress, renderExpirationTime) {\n    var newProps = workInProgress.pendingProps;\n    switch (workInProgress.tag) {\n      case FunctionalComponent:\n        return null;\n      case ClassComponent:\n        {\n          // We are leaving this subtree, so pop context if any.\n          popLegacyContextProvider(workInProgress);\n\n          // If this component caught an error, schedule an error log effect.\n          var instance = workInProgress.stateNode;\n          var updateQueue = workInProgress.updateQueue;\n          if (updateQueue !== null && updateQueue.capturedValues !== null) {\n            workInProgress.effectTag &= ~DidCapture;\n            if (typeof instance.componentDidCatch === 'function') {\n              workInProgress.effectTag |= ErrLog;\n            } else {\n              // Normally we clear this in the commit phase, but since we did not\n              // schedule an effect, we need to reset it here.\n              updateQueue.capturedValues = null;\n            }\n          }\n          return null;\n        }\n      case HostRoot:\n        {\n          popHostContainer(workInProgress);\n          popTopLevelLegacyContextObject(workInProgress);\n          var fiberRoot = workInProgress.stateNode;\n          if (fiberRoot.pendingContext) {\n            fiberRoot.context = fiberRoot.pendingContext;\n            fiberRoot.pendingContext = null;\n          }\n          if (current === null || current.child === null) {\n            // If we hydrated, pop so that we can delete any remaining children\n            // that weren't hydrated.\n            popHydrationState(workInProgress);\n            // This resets the hacky state to fix isMounted before committing.\n            // TODO: Delete this when we delete isMounted and findDOMNode.\n            workInProgress.effectTag &= ~Placement;\n          }\n          updateHostContainer(workInProgress);\n\n          var _updateQueue = workInProgress.updateQueue;\n          if (_updateQueue !== null && _updateQueue.capturedValues !== null) {\n            workInProgress.effectTag |= ErrLog;\n          }\n          return null;\n        }\n      case HostComponent:\n        {\n          popHostContext(workInProgress);\n          var rootContainerInstance = getRootHostContainer();\n          var type = workInProgress.type;\n          if (current !== null && workInProgress.stateNode != null) {\n            // If we have an alternate, that means this is an update and we need to\n            // schedule a side-effect to do the updates.\n            var oldProps = current.memoizedProps;\n            // If we get updated because one of our children updated, we don't\n            // have newProps so we'll have to reuse them.\n            // TODO: Split the update API as separate for the props vs. children.\n            // Even better would be if children weren't special cased at all tho.\n            var _instance = workInProgress.stateNode;\n            var currentHostContext = getHostContext();\n            // TODO: Experiencing an error where oldProps is null. Suggests a host\n            // component is hitting the resume path. Figure out why. Possibly\n            // related to `hidden`.\n            var updatePayload = prepareUpdate(_instance, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n\n            updateHostComponent(current, workInProgress, updatePayload, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n\n            if (current.ref !== workInProgress.ref) {\n              markRef(workInProgress);\n            }\n          } else {\n            if (!newProps) {\n              !(workInProgress.stateNode !== null) ? invariant(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n              // This can happen when we abort work.\n              return null;\n            }\n\n            var _currentHostContext = getHostContext();\n            // TODO: Move createInstance to beginWork and keep it on a context\n            // \"stack\" as the parent. Then append children as we go in beginWork\n            // or completeWork depending on we want to add then top->down or\n            // bottom->up. Top->down is faster in IE11.\n            var wasHydrated = popHydrationState(workInProgress);\n            if (wasHydrated) {\n              // TODO: Move this and createInstance step into the beginPhase\n              // to consolidate.\n              if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, _currentHostContext)) {\n                // If changes to the hydrated node needs to be applied at the\n                // commit-phase we mark this as such.\n                markUpdate(workInProgress);\n              }\n            } else {\n              var _instance2 = createInstance(type, newProps, rootContainerInstance, _currentHostContext, workInProgress);\n\n              appendAllChildren(_instance2, workInProgress);\n\n              // Certain renderers require commit-time effects for initial mount.\n              // (eg DOM renderer supports auto-focus for certain elements).\n              // Make sure such renderers get scheduled for later work.\n              if (finalizeInitialChildren(_instance2, type, newProps, rootContainerInstance, _currentHostContext)) {\n                markUpdate(workInProgress);\n              }\n              workInProgress.stateNode = _instance2;\n            }\n\n            if (workInProgress.ref !== null) {\n              // If there is a ref on a host node we need to schedule a callback\n              markRef(workInProgress);\n            }\n          }\n          return null;\n        }\n      case HostText:\n        {\n          var newText = newProps;\n          if (current && workInProgress.stateNode != null) {\n            var oldText = current.memoizedProps;\n            // If we have an alternate, that means this is an update and we need\n            // to schedule a side-effect to do the updates.\n            updateHostText(current, workInProgress, oldText, newText);\n          } else {\n            if (typeof newText !== 'string') {\n              !(workInProgress.stateNode !== null) ? invariant(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n              // This can happen when we abort work.\n              return null;\n            }\n            var _rootContainerInstance = getRootHostContainer();\n            var _currentHostContext2 = getHostContext();\n            var _wasHydrated = popHydrationState(workInProgress);\n            if (_wasHydrated) {\n              if (prepareToHydrateHostTextInstance(workInProgress)) {\n                markUpdate(workInProgress);\n              }\n            } else {\n              workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext2, workInProgress);\n            }\n          }\n          return null;\n        }\n      case CallComponent:\n        return moveCallToHandlerPhase(current, workInProgress, renderExpirationTime);\n      case CallHandlerPhase:\n        // Reset the tag to now be a first phase call.\n        workInProgress.tag = CallComponent;\n        return null;\n      case ReturnComponent:\n        // Does nothing.\n        return null;\n      case ForwardRef:\n        return null;\n      case Fragment:\n        return null;\n      case Mode:\n        return null;\n      case HostPortal:\n        popHostContainer(workInProgress);\n        updateHostContainer(workInProgress);\n        return null;\n      case ContextProvider:\n        // Pop provider fiber\n        popProvider(workInProgress);\n        return null;\n      case ContextConsumer:\n        return null;\n      // Error cases\n      case IndeterminateComponent:\n        invariant(false, 'An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.');\n      // eslint-disable-next-line no-fallthrough\n      default:\n        invariant(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  return {\n    completeWork: completeWork\n  };\n};\n\nfunction createCapturedValue(value, source) {\n  // If the value is an error, call this function immediately after it is thrown\n  // so the stack is accurate.\n  return {\n    value: value,\n    source: source,\n    stack: getStackAddendumByWorkInProgressFiber(source)\n  };\n}\n\nvar ReactFiberUnwindWork = function (hostContext, legacyContext, newContext, scheduleWork, isAlreadyFailedLegacyErrorBoundary) {\n  var popHostContainer = hostContext.popHostContainer,\n      popHostContext = hostContext.popHostContext;\n  var popLegacyContextProvider = legacyContext.popContextProvider,\n      popTopLevelLegacyContextObject = legacyContext.popTopLevelContextObject;\n  var popProvider = newContext.popProvider;\n\n\n  function throwException(returnFiber, sourceFiber, rawValue) {\n    // The source fiber did not complete.\n    sourceFiber.effectTag |= Incomplete;\n    // Its effect list is no longer valid.\n    sourceFiber.firstEffect = sourceFiber.lastEffect = null;\n\n    var value = createCapturedValue(rawValue, sourceFiber);\n\n    var workInProgress = returnFiber;\n    do {\n      switch (workInProgress.tag) {\n        case HostRoot:\n          {\n            // Uncaught error\n            var errorInfo = value;\n            ensureUpdateQueues(workInProgress);\n            var updateQueue = workInProgress.updateQueue;\n            updateQueue.capturedValues = [errorInfo];\n            workInProgress.effectTag |= ShouldCapture;\n            return;\n          }\n        case ClassComponent:\n          // Capture and retry\n          var ctor = workInProgress.type;\n          var _instance = workInProgress.stateNode;\n          if ((workInProgress.effectTag & DidCapture) === NoEffect && (typeof ctor.getDerivedStateFromCatch === 'function' && enableGetDerivedStateFromCatch || _instance !== null && typeof _instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(_instance))) {\n            ensureUpdateQueues(workInProgress);\n            var _updateQueue = workInProgress.updateQueue;\n            var capturedValues = _updateQueue.capturedValues;\n            if (capturedValues === null) {\n              _updateQueue.capturedValues = [value];\n            } else {\n              capturedValues.push(value);\n            }\n            workInProgress.effectTag |= ShouldCapture;\n            return;\n          }\n          break;\n        default:\n          break;\n      }\n      workInProgress = workInProgress['return'];\n    } while (workInProgress !== null);\n  }\n\n  function unwindWork(workInProgress) {\n    switch (workInProgress.tag) {\n      case ClassComponent:\n        {\n          popLegacyContextProvider(workInProgress);\n          var effectTag = workInProgress.effectTag;\n          if (effectTag & ShouldCapture) {\n            workInProgress.effectTag = effectTag & ~ShouldCapture | DidCapture;\n            return workInProgress;\n          }\n          return null;\n        }\n      case HostRoot:\n        {\n          popHostContainer(workInProgress);\n          popTopLevelLegacyContextObject(workInProgress);\n          var _effectTag = workInProgress.effectTag;\n          if (_effectTag & ShouldCapture) {\n            workInProgress.effectTag = _effectTag & ~ShouldCapture | DidCapture;\n            return workInProgress;\n          }\n          return null;\n        }\n      case HostComponent:\n        {\n          popHostContext(workInProgress);\n          return null;\n        }\n      case HostPortal:\n        popHostContainer(workInProgress);\n        return null;\n      case ContextProvider:\n        popProvider(workInProgress);\n        return null;\n      default:\n        return null;\n    }\n  }\n\n  function unwindInterruptedWork(interruptedWork) {\n    switch (interruptedWork.tag) {\n      case ClassComponent:\n        {\n          popLegacyContextProvider(interruptedWork);\n          break;\n        }\n      case HostRoot:\n        {\n          popHostContainer(interruptedWork);\n          popTopLevelLegacyContextObject(interruptedWork);\n          break;\n        }\n      case HostComponent:\n        {\n          popHostContext(interruptedWork);\n          break;\n        }\n      case HostPortal:\n        popHostContainer(interruptedWork);\n        break;\n      case ContextProvider:\n        popProvider(interruptedWork);\n        break;\n      default:\n        break;\n    }\n  }\n\n  return {\n    throwException: throwException,\n    unwindWork: unwindWork,\n    unwindInterruptedWork: unwindInterruptedWork\n  };\n};\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(capturedError) {\n  return true;\n}\n\nfunction logCapturedError(capturedError) {\n  var logError = showErrorDialog(capturedError);\n\n  // Allow injected showErrorDialog() to prevent default console.error logging.\n  // This enables renderers like ReactNative to better manage redbox behavior.\n  if (logError === false) {\n    return;\n  }\n\n  var error = capturedError.error;\n  var suppressLogging = error && error.suppressReactErrorLogging;\n  if (suppressLogging) {\n    return;\n  }\n\n  {\n    var componentName = capturedError.componentName,\n        componentStack = capturedError.componentStack,\n        errorBoundaryName = capturedError.errorBoundaryName,\n        errorBoundaryFound = capturedError.errorBoundaryFound,\n        willRetry = capturedError.willRetry;\n\n\n    var componentNameMessage = componentName ? 'The above error occurred in the <' + componentName + '> component:' : 'The above error occurred in one of your React components:';\n\n    var errorBoundaryMessage = void 0;\n    // errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow.\n    if (errorBoundaryFound && errorBoundaryName) {\n      if (willRetry) {\n        errorBoundaryMessage = 'React will try to recreate this component tree from scratch ' + ('using the error boundary you provided, ' + errorBoundaryName + '.');\n      } else {\n        errorBoundaryMessage = 'This error was initially handled by the error boundary ' + errorBoundaryName + '.\\n' + 'Recreating the tree from scratch failed so React will unmount the tree.';\n      }\n    } else {\n      errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'Visit https://fb.me/react-error-boundaries to learn more about error boundaries.';\n    }\n    var combinedMessage = '' + componentNameMessage + componentStack + '\\n\\n' + ('' + errorBoundaryMessage);\n\n    // In development, we provide our own message with just the component stack.\n    // We don't include the original error message and JS stack because the browser\n    // has already printed it. Even if the application swallows the error, it is still\n    // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n    console.error(combinedMessage);\n  }\n}\n\nvar invokeGuardedCallback$3 = ReactErrorUtils.invokeGuardedCallback;\nvar hasCaughtError$1 = ReactErrorUtils.hasCaughtError;\nvar clearCaughtError$1 = ReactErrorUtils.clearCaughtError;\n\n\nvar didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n{\n  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();\n}\n\nfunction logError(boundary, errorInfo) {\n  var source = errorInfo.source;\n  var stack = errorInfo.stack;\n  if (stack === null) {\n    stack = getStackAddendumByWorkInProgressFiber(source);\n  }\n\n  var capturedError = {\n    componentName: source !== null ? getComponentName(source) : null,\n    componentStack: stack !== null ? stack : '',\n    error: errorInfo.value,\n    errorBoundary: null,\n    errorBoundaryName: null,\n    errorBoundaryFound: false,\n    willRetry: false\n  };\n\n  if (boundary !== null && boundary.tag === ClassComponent) {\n    capturedError.errorBoundary = boundary.stateNode;\n    capturedError.errorBoundaryName = getComponentName(boundary);\n    capturedError.errorBoundaryFound = true;\n    capturedError.willRetry = true;\n  }\n\n  try {\n    logCapturedError(capturedError);\n  } catch (e) {\n    // Prevent cycle if logCapturedError() throws.\n    // A cycle may still occur if logCapturedError renders a component that throws.\n    var suppressLogging = e && e.suppressReactErrorLogging;\n    if (!suppressLogging) {\n      console.error(e);\n    }\n  }\n}\n\nvar ReactFiberCommitWork = function (config, captureError, scheduleWork, computeExpirationForFiber, markLegacyErrorBoundaryAsFailed, recalculateCurrentTime) {\n  var getPublicInstance = config.getPublicInstance,\n      mutation = config.mutation,\n      persistence = config.persistence;\n\n\n  var callComponentWillUnmountWithTimer = function (current, instance) {\n    startPhaseTimer(current, 'componentWillUnmount');\n    instance.props = current.memoizedProps;\n    instance.state = current.memoizedState;\n    instance.componentWillUnmount();\n    stopPhaseTimer();\n  };\n\n  // Capture errors so they don't interrupt unmounting.\n  function safelyCallComponentWillUnmount(current, instance) {\n    {\n      invokeGuardedCallback$3(null, callComponentWillUnmountWithTimer, null, current, instance);\n      if (hasCaughtError$1()) {\n        var unmountError = clearCaughtError$1();\n        captureError(current, unmountError);\n      }\n    }\n  }\n\n  function safelyDetachRef(current) {\n    var ref = current.ref;\n    if (ref !== null) {\n      if (typeof ref === 'function') {\n        {\n          invokeGuardedCallback$3(null, ref, null, null);\n          if (hasCaughtError$1()) {\n            var refError = clearCaughtError$1();\n            captureError(current, refError);\n          }\n        }\n      } else {\n        ref.current = null;\n      }\n    }\n  }\n\n  function commitBeforeMutationLifeCycles(current, finishedWork) {\n    switch (finishedWork.tag) {\n      case ClassComponent:\n        {\n          if (finishedWork.effectTag & Snapshot) {\n            if (current !== null) {\n              var prevProps = current.memoizedProps;\n              var prevState = current.memoizedState;\n              startPhaseTimer(finishedWork, 'getSnapshotBeforeUpdate');\n              var _instance = finishedWork.stateNode;\n              _instance.props = finishedWork.memoizedProps;\n              _instance.state = finishedWork.memoizedState;\n              var snapshot = _instance.getSnapshotBeforeUpdate(prevProps, prevState);\n              {\n                var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n                if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {\n                  didWarnSet.add(finishedWork.type);\n                  warning(false, '%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentName(finishedWork));\n                }\n              }\n              _instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n              stopPhaseTimer();\n            }\n          }\n          return;\n        }\n      case HostRoot:\n      case HostComponent:\n      case HostText:\n      case HostPortal:\n        // Nothing to do for these component types\n        return;\n      default:\n        {\n          invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n        }\n    }\n  }\n\n  function commitLifeCycles(finishedRoot, current, finishedWork, currentTime, committedExpirationTime) {\n    switch (finishedWork.tag) {\n      case ClassComponent:\n        {\n          var _instance2 = finishedWork.stateNode;\n          if (finishedWork.effectTag & Update) {\n            if (current === null) {\n              startPhaseTimer(finishedWork, 'componentDidMount');\n              _instance2.props = finishedWork.memoizedProps;\n              _instance2.state = finishedWork.memoizedState;\n              _instance2.componentDidMount();\n              stopPhaseTimer();\n            } else {\n              var prevProps = current.memoizedProps;\n              var prevState = current.memoizedState;\n              startPhaseTimer(finishedWork, 'componentDidUpdate');\n              _instance2.props = finishedWork.memoizedProps;\n              _instance2.state = finishedWork.memoizedState;\n              _instance2.componentDidUpdate(prevProps, prevState, _instance2.__reactInternalSnapshotBeforeUpdate);\n              stopPhaseTimer();\n            }\n          }\n          var updateQueue = finishedWork.updateQueue;\n          if (updateQueue !== null) {\n            commitCallbacks(updateQueue, _instance2);\n          }\n          return;\n        }\n      case HostRoot:\n        {\n          var _updateQueue = finishedWork.updateQueue;\n          if (_updateQueue !== null) {\n            var _instance3 = null;\n            if (finishedWork.child !== null) {\n              switch (finishedWork.child.tag) {\n                case HostComponent:\n                  _instance3 = getPublicInstance(finishedWork.child.stateNode);\n                  break;\n                case ClassComponent:\n                  _instance3 = finishedWork.child.stateNode;\n                  break;\n              }\n            }\n            commitCallbacks(_updateQueue, _instance3);\n          }\n          return;\n        }\n      case HostComponent:\n        {\n          var _instance4 = finishedWork.stateNode;\n\n          // Renderers may schedule work to be done after host components are mounted\n          // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n          // These effects should only be committed when components are first mounted,\n          // aka when there is no current/alternate.\n          if (current === null && finishedWork.effectTag & Update) {\n            var type = finishedWork.type;\n            var props = finishedWork.memoizedProps;\n            commitMount(_instance4, type, props, finishedWork);\n          }\n\n          return;\n        }\n      case HostText:\n        {\n          // We have no life-cycles associated with text.\n          return;\n        }\n      case HostPortal:\n        {\n          // We have no life-cycles associated with portals.\n          return;\n        }\n      default:\n        {\n          invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n        }\n    }\n  }\n\n  function commitErrorLogging(finishedWork, onUncaughtError) {\n    switch (finishedWork.tag) {\n      case ClassComponent:\n        {\n          var ctor = finishedWork.type;\n          var _instance5 = finishedWork.stateNode;\n          var updateQueue = finishedWork.updateQueue;\n          !(updateQueue !== null && updateQueue.capturedValues !== null) ? invariant(false, 'An error logging effect should not have been scheduled if no errors were captured. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          var capturedErrors = updateQueue.capturedValues;\n          updateQueue.capturedValues = null;\n\n          if (typeof ctor.getDerivedStateFromCatch !== 'function') {\n            // To preserve the preexisting retry behavior of error boundaries,\n            // we keep track of which ones already failed during this batch.\n            // This gets reset before we yield back to the browser.\n            // TODO: Warn in strict mode if getDerivedStateFromCatch is\n            // not defined.\n            markLegacyErrorBoundaryAsFailed(_instance5);\n          }\n\n          _instance5.props = finishedWork.memoizedProps;\n          _instance5.state = finishedWork.memoizedState;\n          for (var i = 0; i < capturedErrors.length; i++) {\n            var errorInfo = capturedErrors[i];\n            var _error = errorInfo.value;\n            var stack = errorInfo.stack;\n            logError(finishedWork, errorInfo);\n            _instance5.componentDidCatch(_error, {\n              componentStack: stack !== null ? stack : ''\n            });\n          }\n        }\n        break;\n      case HostRoot:\n        {\n          var _updateQueue2 = finishedWork.updateQueue;\n          !(_updateQueue2 !== null && _updateQueue2.capturedValues !== null) ? invariant(false, 'An error logging effect should not have been scheduled if no errors were captured. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          var _capturedErrors = _updateQueue2.capturedValues;\n          _updateQueue2.capturedValues = null;\n          for (var _i = 0; _i < _capturedErrors.length; _i++) {\n            var _errorInfo = _capturedErrors[_i];\n            logError(finishedWork, _errorInfo);\n            onUncaughtError(_errorInfo.value);\n          }\n          break;\n        }\n      default:\n        invariant(false, 'This unit of work tag cannot capture errors.  This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  function commitAttachRef(finishedWork) {\n    var ref = finishedWork.ref;\n    if (ref !== null) {\n      var _instance6 = finishedWork.stateNode;\n      var instanceToUse = void 0;\n      switch (finishedWork.tag) {\n        case HostComponent:\n          instanceToUse = getPublicInstance(_instance6);\n          break;\n        default:\n          instanceToUse = _instance6;\n      }\n      if (typeof ref === 'function') {\n        ref(instanceToUse);\n      } else {\n        {\n          if (!ref.hasOwnProperty('current')) {\n            warning(false, 'Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().%s', getComponentName(finishedWork), getStackAddendumByWorkInProgressFiber(finishedWork));\n          }\n        }\n\n        ref.current = instanceToUse;\n      }\n    }\n  }\n\n  function commitDetachRef(current) {\n    var currentRef = current.ref;\n    if (currentRef !== null) {\n      if (typeof currentRef === 'function') {\n        currentRef(null);\n      } else {\n        currentRef.current = null;\n      }\n    }\n  }\n\n  // User-originating errors (lifecycles and refs) should not interrupt\n  // deletion, so don't let them throw. Host-originating errors should\n  // interrupt deletion, so it's okay\n  function commitUnmount(current) {\n    if (typeof onCommitUnmount === 'function') {\n      onCommitUnmount(current);\n    }\n\n    switch (current.tag) {\n      case ClassComponent:\n        {\n          safelyDetachRef(current);\n          var _instance7 = current.stateNode;\n          if (typeof _instance7.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(current, _instance7);\n          }\n          return;\n        }\n      case HostComponent:\n        {\n          safelyDetachRef(current);\n          return;\n        }\n      case CallComponent:\n        {\n          commitNestedUnmounts(current.stateNode);\n          return;\n        }\n      case HostPortal:\n        {\n          // TODO: this is recursive.\n          // We are also not using this parent because\n          // the portal will get pushed immediately.\n          if (enableMutatingReconciler && mutation) {\n            unmountHostComponents(current);\n          } else if (enablePersistentReconciler && persistence) {\n            emptyPortalContainer(current);\n          }\n          return;\n        }\n    }\n  }\n\n  function commitNestedUnmounts(root) {\n    // While we're inside a removed host node we don't want to call\n    // removeChild on the inner nodes because they're removed by the top\n    // call anyway. We also want to call componentWillUnmount on all\n    // composites before this host node is removed from the tree. Therefore\n    var node = root;\n    while (true) {\n      commitUnmount(node);\n      // Visit children because they may contain more composite or host nodes.\n      // Skip portals because commitUnmount() currently visits them recursively.\n      if (node.child !== null && (\n      // If we use mutation we drill down into portals using commitUnmount above.\n      // If we don't use mutation we drill down into portals here instead.\n      !mutation || node.tag !== HostPortal)) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      if (node === root) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === root) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function detachFiber(current) {\n    // Cut off the return pointers to disconnect it from the tree. Ideally, we\n    // should clear the child pointer of the parent alternate to let this\n    // get GC:ed but we don't know which for sure which parent is the current\n    // one so we'll settle for GC:ing the subtree of this child. This child\n    // itself will be GC:ed when the parent updates the next time.\n    current['return'] = null;\n    current.child = null;\n    if (current.alternate) {\n      current.alternate.child = null;\n      current.alternate['return'] = null;\n    }\n  }\n\n  var emptyPortalContainer = void 0;\n\n  if (!mutation) {\n    var commitContainer = void 0;\n    if (persistence) {\n      var replaceContainerChildren = persistence.replaceContainerChildren,\n          createContainerChildSet = persistence.createContainerChildSet;\n\n      emptyPortalContainer = function (current) {\n        var portal = current.stateNode;\n        var containerInfo = portal.containerInfo;\n\n        var emptyChildSet = createContainerChildSet(containerInfo);\n        replaceContainerChildren(containerInfo, emptyChildSet);\n      };\n      commitContainer = function (finishedWork) {\n        switch (finishedWork.tag) {\n          case ClassComponent:\n            {\n              return;\n            }\n          case HostComponent:\n            {\n              return;\n            }\n          case HostText:\n            {\n              return;\n            }\n          case HostRoot:\n          case HostPortal:\n            {\n              var portalOrRoot = finishedWork.stateNode;\n              var containerInfo = portalOrRoot.containerInfo,\n                  _pendingChildren = portalOrRoot.pendingChildren;\n\n              replaceContainerChildren(containerInfo, _pendingChildren);\n              return;\n            }\n          default:\n            {\n              invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n            }\n        }\n      };\n    } else {\n      commitContainer = function (finishedWork) {\n        // Noop\n      };\n    }\n    if (enablePersistentReconciler || enableNoopReconciler) {\n      return {\n        commitResetTextContent: function (finishedWork) {},\n        commitPlacement: function (finishedWork) {},\n        commitDeletion: function (current) {\n          // Detach refs and call componentWillUnmount() on the whole subtree.\n          commitNestedUnmounts(current);\n          detachFiber(current);\n        },\n        commitWork: function (current, finishedWork) {\n          commitContainer(finishedWork);\n        },\n\n        commitLifeCycles: commitLifeCycles,\n        commitBeforeMutationLifeCycles: commitBeforeMutationLifeCycles,\n        commitErrorLogging: commitErrorLogging,\n        commitAttachRef: commitAttachRef,\n        commitDetachRef: commitDetachRef\n      };\n    } else if (persistence) {\n      invariant(false, 'Persistent reconciler is disabled.');\n    } else {\n      invariant(false, 'Noop reconciler is disabled.');\n    }\n  }\n  var commitMount = mutation.commitMount,\n      commitUpdate = mutation.commitUpdate,\n      resetTextContent = mutation.resetTextContent,\n      commitTextUpdate = mutation.commitTextUpdate,\n      appendChild = mutation.appendChild,\n      appendChildToContainer = mutation.appendChildToContainer,\n      insertBefore = mutation.insertBefore,\n      insertInContainerBefore = mutation.insertInContainerBefore,\n      removeChild = mutation.removeChild,\n      removeChildFromContainer = mutation.removeChildFromContainer;\n\n\n  function getHostParentFiber(fiber) {\n    var parent = fiber['return'];\n    while (parent !== null) {\n      if (isHostParent(parent)) {\n        return parent;\n      }\n      parent = parent['return'];\n    }\n    invariant(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  function isHostParent(fiber) {\n    return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n  }\n\n  function getHostSibling(fiber) {\n    // We're going to search forward into the tree until we find a sibling host\n    // node. Unfortunately, if multiple insertions are done in a row we have to\n    // search past them. This leads to exponential search for the next sibling.\n    var node = fiber;\n    siblings: while (true) {\n      // If we didn't find anything, let's try the next sibling.\n      while (node.sibling === null) {\n        if (node['return'] === null || isHostParent(node['return'])) {\n          // If we pop out of the root or hit the parent the fiber we are the\n          // last sibling.\n          return null;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n      while (node.tag !== HostComponent && node.tag !== HostText) {\n        // If it is not host node and, we might have a host node inside it.\n        // Try to search down until we find one.\n        if (node.effectTag & Placement) {\n          // If we don't have a child, try the siblings instead.\n          continue siblings;\n        }\n        // If we don't have a child, try the siblings instead.\n        // We also skip portals because they are not part of this host tree.\n        if (node.child === null || node.tag === HostPortal) {\n          continue siblings;\n        } else {\n          node.child['return'] = node;\n          node = node.child;\n        }\n      }\n      // Check if this host node is stable or about to be placed.\n      if (!(node.effectTag & Placement)) {\n        // Found it!\n        return node.stateNode;\n      }\n    }\n  }\n\n  function commitPlacement(finishedWork) {\n    // Recursively insert all host nodes into the parent.\n    var parentFiber = getHostParentFiber(finishedWork);\n    var parent = void 0;\n    var isContainer = void 0;\n    switch (parentFiber.tag) {\n      case HostComponent:\n        parent = parentFiber.stateNode;\n        isContainer = false;\n        break;\n      case HostRoot:\n        parent = parentFiber.stateNode.containerInfo;\n        isContainer = true;\n        break;\n      case HostPortal:\n        parent = parentFiber.stateNode.containerInfo;\n        isContainer = true;\n        break;\n      default:\n        invariant(false, 'Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.');\n    }\n    if (parentFiber.effectTag & ContentReset) {\n      // Reset the text content of the parent before doing any insertions\n      resetTextContent(parent);\n      // Clear ContentReset from the effect tag\n      parentFiber.effectTag &= ~ContentReset;\n    }\n\n    var before = getHostSibling(finishedWork);\n    // We only have the top Fiber that was inserted but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = finishedWork;\n    while (true) {\n      if (node.tag === HostComponent || node.tag === HostText) {\n        if (before) {\n          if (isContainer) {\n            insertInContainerBefore(parent, node.stateNode, before);\n          } else {\n            insertBefore(parent, node.stateNode, before);\n          }\n        } else {\n          if (isContainer) {\n            appendChildToContainer(parent, node.stateNode);\n          } else {\n            appendChild(parent, node.stateNode);\n          }\n        }\n      } else if (node.tag === HostPortal) {\n        // If the insertion itself is a portal, then we don't want to traverse\n        // down its children. Instead, we'll get insertions from each child in\n        // the portal directly.\n      } else if (node.child !== null) {\n        node.child['return'] = node;\n        node = node.child;\n        continue;\n      }\n      if (node === finishedWork) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === finishedWork) {\n          return;\n        }\n        node = node['return'];\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function unmountHostComponents(current) {\n    // We only have the top Fiber that was inserted but we need recurse down its\n    var node = current;\n\n    // Each iteration, currentParent is populated with node's host parent if not\n    // currentParentIsValid.\n    var currentParentIsValid = false;\n    var currentParent = void 0;\n    var currentParentIsContainer = void 0;\n\n    while (true) {\n      if (!currentParentIsValid) {\n        var parent = node['return'];\n        findParent: while (true) {\n          !(parent !== null) ? invariant(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          switch (parent.tag) {\n            case HostComponent:\n              currentParent = parent.stateNode;\n              currentParentIsContainer = false;\n              break findParent;\n            case HostRoot:\n              currentParent = parent.stateNode.containerInfo;\n              currentParentIsContainer = true;\n              break findParent;\n            case HostPortal:\n              currentParent = parent.stateNode.containerInfo;\n              currentParentIsContainer = true;\n              break findParent;\n          }\n          parent = parent['return'];\n        }\n        currentParentIsValid = true;\n      }\n\n      if (node.tag === HostComponent || node.tag === HostText) {\n        commitNestedUnmounts(node);\n        // After all the children have unmounted, it is now safe to remove the\n        // node from the tree.\n        if (currentParentIsContainer) {\n          removeChildFromContainer(currentParent, node.stateNode);\n        } else {\n          removeChild(currentParent, node.stateNode);\n        }\n        // Don't visit children because we already visited them.\n      } else if (node.tag === HostPortal) {\n        // When we go into a portal, it becomes the parent to remove from.\n        // We will reassign it back when we pop the portal on the way up.\n        currentParent = node.stateNode.containerInfo;\n        // Visit children because portals might contain host components.\n        if (node.child !== null) {\n          node.child['return'] = node;\n          node = node.child;\n          continue;\n        }\n      } else {\n        commitUnmount(node);\n        // Visit children because we may find more host components below.\n        if (node.child !== null) {\n          node.child['return'] = node;\n          node = node.child;\n          continue;\n        }\n      }\n      if (node === current) {\n        return;\n      }\n      while (node.sibling === null) {\n        if (node['return'] === null || node['return'] === current) {\n          return;\n        }\n        node = node['return'];\n        if (node.tag === HostPortal) {\n          // When we go out of the portal, we need to restore the parent.\n          // Since we don't keep a stack of them, we will search for it.\n          currentParentIsValid = false;\n        }\n      }\n      node.sibling['return'] = node['return'];\n      node = node.sibling;\n    }\n  }\n\n  function commitDeletion(current) {\n    // Recursively delete all host nodes from the parent.\n    // Detach refs and call componentWillUnmount() on the whole subtree.\n    unmountHostComponents(current);\n    detachFiber(current);\n  }\n\n  function commitWork(current, finishedWork) {\n    switch (finishedWork.tag) {\n      case ClassComponent:\n        {\n          return;\n        }\n      case HostComponent:\n        {\n          var _instance8 = finishedWork.stateNode;\n          if (_instance8 != null) {\n            // Commit the work prepared earlier.\n            var newProps = finishedWork.memoizedProps;\n            // For hydration we reuse the update path but we treat the oldProps\n            // as the newProps. The updatePayload will contain the real change in\n            // this case.\n            var oldProps = current !== null ? current.memoizedProps : newProps;\n            var type = finishedWork.type;\n            // TODO: Type the updateQueue to be specific to host components.\n            var updatePayload = finishedWork.updateQueue;\n            finishedWork.updateQueue = null;\n            if (updatePayload !== null) {\n              commitUpdate(_instance8, updatePayload, type, oldProps, newProps, finishedWork);\n            }\n          }\n          return;\n        }\n      case HostText:\n        {\n          !(finishedWork.stateNode !== null) ? invariant(false, 'This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          var textInstance = finishedWork.stateNode;\n          var newText = finishedWork.memoizedProps;\n          // For hydration we reuse the update path but we treat the oldProps\n          // as the newProps. The updatePayload will contain the real change in\n          // this case.\n          var oldText = current !== null ? current.memoizedProps : newText;\n          commitTextUpdate(textInstance, oldText, newText);\n          return;\n        }\n      case HostRoot:\n        {\n          return;\n        }\n      default:\n        {\n          invariant(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');\n        }\n    }\n  }\n\n  function commitResetTextContent(current) {\n    resetTextContent(current.stateNode);\n  }\n\n  if (enableMutatingReconciler) {\n    return {\n      commitBeforeMutationLifeCycles: commitBeforeMutationLifeCycles,\n      commitResetTextContent: commitResetTextContent,\n      commitPlacement: commitPlacement,\n      commitDeletion: commitDeletion,\n      commitWork: commitWork,\n      commitLifeCycles: commitLifeCycles,\n      commitErrorLogging: commitErrorLogging,\n      commitAttachRef: commitAttachRef,\n      commitDetachRef: commitDetachRef\n    };\n  } else {\n    invariant(false, 'Mutating reconciler is disabled.');\n  }\n};\n\nvar NO_CONTEXT = {};\n\nvar ReactFiberHostContext = function (config, stack) {\n  var getChildHostContext = config.getChildHostContext,\n      getRootHostContext = config.getRootHostContext;\n  var createCursor = stack.createCursor,\n      push = stack.push,\n      pop = stack.pop;\n\n\n  var contextStackCursor = createCursor(NO_CONTEXT);\n  var contextFiberStackCursor = createCursor(NO_CONTEXT);\n  var rootInstanceStackCursor = createCursor(NO_CONTEXT);\n\n  function requiredContext(c) {\n    !(c !== NO_CONTEXT) ? invariant(false, 'Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    return c;\n  }\n\n  function getRootHostContainer() {\n    var rootInstance = requiredContext(rootInstanceStackCursor.current);\n    return rootInstance;\n  }\n\n  function pushHostContainer(fiber, nextRootInstance) {\n    // Push current root instance onto the stack;\n    // This allows us to reset root when portals are popped.\n    push(rootInstanceStackCursor, nextRootInstance, fiber);\n    // Track the context and the Fiber that provided it.\n    // This enables us to pop only Fibers that provide unique contexts.\n    push(contextFiberStackCursor, fiber, fiber);\n\n    // Finally, we need to push the host context to the stack.\n    // However, we can't just call getRootHostContext() and push it because\n    // we'd have a different number of entries on the stack depending on\n    // whether getRootHostContext() throws somewhere in renderer code or not.\n    // So we push an empty value first. This lets us safely unwind on errors.\n    push(contextStackCursor, NO_CONTEXT, fiber);\n    var nextRootContext = getRootHostContext(nextRootInstance);\n    // Now that we know this function doesn't throw, replace it.\n    pop(contextStackCursor, fiber);\n    push(contextStackCursor, nextRootContext, fiber);\n  }\n\n  function popHostContainer(fiber) {\n    pop(contextStackCursor, fiber);\n    pop(contextFiberStackCursor, fiber);\n    pop(rootInstanceStackCursor, fiber);\n  }\n\n  function getHostContext() {\n    var context = requiredContext(contextStackCursor.current);\n    return context;\n  }\n\n  function pushHostContext(fiber) {\n    var rootInstance = requiredContext(rootInstanceStackCursor.current);\n    var context = requiredContext(contextStackCursor.current);\n    var nextContext = getChildHostContext(context, fiber.type, rootInstance);\n\n    // Don't push this Fiber's context unless it's unique.\n    if (context === nextContext) {\n      return;\n    }\n\n    // Track the context and the Fiber that provided it.\n    // This enables us to pop only Fibers that provide unique contexts.\n    push(contextFiberStackCursor, fiber, fiber);\n    push(contextStackCursor, nextContext, fiber);\n  }\n\n  function popHostContext(fiber) {\n    // Do not pop unless this Fiber provided the current context.\n    // pushHostContext() only pushes Fibers that provide unique contexts.\n    if (contextFiberStackCursor.current !== fiber) {\n      return;\n    }\n\n    pop(contextStackCursor, fiber);\n    pop(contextFiberStackCursor, fiber);\n  }\n\n  return {\n    getHostContext: getHostContext,\n    getRootHostContainer: getRootHostContainer,\n    popHostContainer: popHostContainer,\n    popHostContext: popHostContext,\n    pushHostContainer: pushHostContainer,\n    pushHostContext: pushHostContext\n  };\n};\n\nvar ReactFiberHydrationContext = function (config) {\n  var shouldSetTextContent = config.shouldSetTextContent,\n      hydration = config.hydration;\n\n  // If this doesn't have hydration mode.\n\n  if (!hydration) {\n    return {\n      enterHydrationState: function () {\n        return false;\n      },\n      resetHydrationState: function () {},\n      tryToClaimNextHydratableInstance: function () {},\n      prepareToHydrateHostInstance: function () {\n        invariant(false, 'Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');\n      },\n      prepareToHydrateHostTextInstance: function () {\n        invariant(false, 'Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');\n      },\n      popHydrationState: function (fiber) {\n        return false;\n      }\n    };\n  }\n\n  var canHydrateInstance = hydration.canHydrateInstance,\n      canHydrateTextInstance = hydration.canHydrateTextInstance,\n      getNextHydratableSibling = hydration.getNextHydratableSibling,\n      getFirstHydratableChild = hydration.getFirstHydratableChild,\n      hydrateInstance = hydration.hydrateInstance,\n      hydrateTextInstance = hydration.hydrateTextInstance,\n      didNotMatchHydratedContainerTextInstance = hydration.didNotMatchHydratedContainerTextInstance,\n      didNotMatchHydratedTextInstance = hydration.didNotMatchHydratedTextInstance,\n      didNotHydrateContainerInstance = hydration.didNotHydrateContainerInstance,\n      didNotHydrateInstance = hydration.didNotHydrateInstance,\n      didNotFindHydratableContainerInstance = hydration.didNotFindHydratableContainerInstance,\n      didNotFindHydratableContainerTextInstance = hydration.didNotFindHydratableContainerTextInstance,\n      didNotFindHydratableInstance = hydration.didNotFindHydratableInstance,\n      didNotFindHydratableTextInstance = hydration.didNotFindHydratableTextInstance;\n\n  // The deepest Fiber on the stack involved in a hydration context.\n  // This may have been an insertion or a hydration.\n\n  var hydrationParentFiber = null;\n  var nextHydratableInstance = null;\n  var isHydrating = false;\n\n  function enterHydrationState(fiber) {\n    var parentInstance = fiber.stateNode.containerInfo;\n    nextHydratableInstance = getFirstHydratableChild(parentInstance);\n    hydrationParentFiber = fiber;\n    isHydrating = true;\n    return true;\n  }\n\n  function deleteHydratableInstance(returnFiber, instance) {\n    {\n      switch (returnFiber.tag) {\n        case HostRoot:\n          didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance);\n          break;\n        case HostComponent:\n          didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);\n          break;\n      }\n    }\n\n    var childToDelete = createFiberFromHostInstanceForDeletion();\n    childToDelete.stateNode = instance;\n    childToDelete['return'] = returnFiber;\n    childToDelete.effectTag = Deletion;\n\n    // This might seem like it belongs on progressedFirstDeletion. However,\n    // these children are not part of the reconciliation list of children.\n    // Even if we abort and rereconcile the children, that will try to hydrate\n    // again and the nodes are still in the host tree so these will be\n    // recreated.\n    if (returnFiber.lastEffect !== null) {\n      returnFiber.lastEffect.nextEffect = childToDelete;\n      returnFiber.lastEffect = childToDelete;\n    } else {\n      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;\n    }\n  }\n\n  function insertNonHydratedInstance(returnFiber, fiber) {\n    fiber.effectTag |= Placement;\n    {\n      switch (returnFiber.tag) {\n        case HostRoot:\n          {\n            var parentContainer = returnFiber.stateNode.containerInfo;\n            switch (fiber.tag) {\n              case HostComponent:\n                var type = fiber.type;\n                var props = fiber.pendingProps;\n                didNotFindHydratableContainerInstance(parentContainer, type, props);\n                break;\n              case HostText:\n                var text = fiber.pendingProps;\n                didNotFindHydratableContainerTextInstance(parentContainer, text);\n                break;\n            }\n            break;\n          }\n        case HostComponent:\n          {\n            var parentType = returnFiber.type;\n            var parentProps = returnFiber.memoizedProps;\n            var parentInstance = returnFiber.stateNode;\n            switch (fiber.tag) {\n              case HostComponent:\n                var _type = fiber.type;\n                var _props = fiber.pendingProps;\n                didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props);\n                break;\n              case HostText:\n                var _text = fiber.pendingProps;\n                didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);\n                break;\n            }\n            break;\n          }\n        default:\n          return;\n      }\n    }\n  }\n\n  function tryHydrate(fiber, nextInstance) {\n    switch (fiber.tag) {\n      case HostComponent:\n        {\n          var type = fiber.type;\n          var props = fiber.pendingProps;\n          var instance = canHydrateInstance(nextInstance, type, props);\n          if (instance !== null) {\n            fiber.stateNode = instance;\n            return true;\n          }\n          return false;\n        }\n      case HostText:\n        {\n          var text = fiber.pendingProps;\n          var textInstance = canHydrateTextInstance(nextInstance, text);\n          if (textInstance !== null) {\n            fiber.stateNode = textInstance;\n            return true;\n          }\n          return false;\n        }\n      default:\n        return false;\n    }\n  }\n\n  function tryToClaimNextHydratableInstance(fiber) {\n    if (!isHydrating) {\n      return;\n    }\n    var nextInstance = nextHydratableInstance;\n    if (!nextInstance) {\n      // Nothing to hydrate. Make it an insertion.\n      insertNonHydratedInstance(hydrationParentFiber, fiber);\n      isHydrating = false;\n      hydrationParentFiber = fiber;\n      return;\n    }\n    if (!tryHydrate(fiber, nextInstance)) {\n      // If we can't hydrate this instance let's try the next one.\n      // We use this as a heuristic. It's based on intuition and not data so it\n      // might be flawed or unnecessary.\n      nextInstance = getNextHydratableSibling(nextInstance);\n      if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n        // Nothing to hydrate. Make it an insertion.\n        insertNonHydratedInstance(hydrationParentFiber, fiber);\n        isHydrating = false;\n        hydrationParentFiber = fiber;\n        return;\n      }\n      // We matched the next one, we'll now assume that the first one was\n      // superfluous and we'll delete it. Since we can't eagerly delete it\n      // we'll have to schedule a deletion. To do that, this node needs a dummy\n      // fiber associated with it.\n      deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance);\n    }\n    hydrationParentFiber = fiber;\n    nextHydratableInstance = getFirstHydratableChild(nextInstance);\n  }\n\n  function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n    var instance = fiber.stateNode;\n    var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber);\n    // TODO: Type this specific to this type of component.\n    fiber.updateQueue = updatePayload;\n    // If the update payload indicates that there is a change or if there\n    // is a new ref we mark this as an update.\n    if (updatePayload !== null) {\n      return true;\n    }\n    return false;\n  }\n\n  function prepareToHydrateHostTextInstance(fiber) {\n    var textInstance = fiber.stateNode;\n    var textContent = fiber.memoizedProps;\n    var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n    {\n      if (shouldUpdate) {\n        // We assume that prepareToHydrateHostTextInstance is called in a context where the\n        // hydration parent is the parent host component of this host text.\n        var returnFiber = hydrationParentFiber;\n        if (returnFiber !== null) {\n          switch (returnFiber.tag) {\n            case HostRoot:\n              {\n                var parentContainer = returnFiber.stateNode.containerInfo;\n                didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent);\n                break;\n              }\n            case HostComponent:\n              {\n                var parentType = returnFiber.type;\n                var parentProps = returnFiber.memoizedProps;\n                var parentInstance = returnFiber.stateNode;\n                didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent);\n                break;\n              }\n          }\n        }\n      }\n    }\n    return shouldUpdate;\n  }\n\n  function popToNextHostParent(fiber) {\n    var parent = fiber['return'];\n    while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot) {\n      parent = parent['return'];\n    }\n    hydrationParentFiber = parent;\n  }\n\n  function popHydrationState(fiber) {\n    if (fiber !== hydrationParentFiber) {\n      // We're deeper than the current hydration context, inside an inserted\n      // tree.\n      return false;\n    }\n    if (!isHydrating) {\n      // If we're not currently hydrating but we're in a hydration context, then\n      // we were an insertion and now need to pop up reenter hydration of our\n      // siblings.\n      popToNextHostParent(fiber);\n      isHydrating = true;\n      return false;\n    }\n\n    var type = fiber.type;\n\n    // If we have any remaining hydratable nodes, we need to delete them now.\n    // We only do this deeper than head and body since they tend to have random\n    // other nodes in them. We also ignore components with pure text content in\n    // side of them.\n    // TODO: Better heuristic.\n    if (fiber.tag !== HostComponent || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) {\n      var nextInstance = nextHydratableInstance;\n      while (nextInstance) {\n        deleteHydratableInstance(fiber, nextInstance);\n        nextInstance = getNextHydratableSibling(nextInstance);\n      }\n    }\n\n    popToNextHostParent(fiber);\n    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n    return true;\n  }\n\n  function resetHydrationState() {\n    hydrationParentFiber = null;\n    nextHydratableInstance = null;\n    isHydrating = false;\n  }\n\n  return {\n    enterHydrationState: enterHydrationState,\n    resetHydrationState: resetHydrationState,\n    tryToClaimNextHydratableInstance: tryToClaimNextHydratableInstance,\n    prepareToHydrateHostInstance: prepareToHydrateHostInstance,\n    prepareToHydrateHostTextInstance: prepareToHydrateHostTextInstance,\n    popHydrationState: popHydrationState\n  };\n};\n\n// This lets us hook into Fiber to debug what it's doing.\n// See https://github.com/facebook/react/pull/8033.\n// This is not part of the public API, not even for React DevTools.\n// You may only inject a debugTool if you work on React Fiber itself.\nvar ReactFiberInstrumentation = {\n  debugTool: null\n};\n\nvar ReactFiberInstrumentation_1 = ReactFiberInstrumentation;\n\nvar warnedAboutMissingGetChildContext = void 0;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar ReactFiberLegacyContext = function (stack) {\n  var createCursor = stack.createCursor,\n      push = stack.push,\n      pop = stack.pop;\n\n  // A cursor to the current merged context object on the stack.\n\n  var contextStackCursor = createCursor(emptyObject);\n  // A cursor to a boolean indicating whether the context has changed.\n  var didPerformWorkStackCursor = createCursor(false);\n  // Keep track of the previous context object that was on the stack.\n  // We use this to get access to the parent context after we have already\n  // pushed the next context provider, and now need to merge their contexts.\n  var previousContext = emptyObject;\n\n  function getUnmaskedContext(workInProgress) {\n    var hasOwnContext = isContextProvider(workInProgress);\n    if (hasOwnContext) {\n      // If the fiber is a context provider itself, when we read its context\n      // we have already pushed its own child context on the stack. A context\n      // provider should not \"see\" its own child context. Therefore we read the\n      // previous (parent) context instead for a context provider.\n      return previousContext;\n    }\n    return contextStackCursor.current;\n  }\n\n  function cacheContext(workInProgress, unmaskedContext, maskedContext) {\n    var instance = workInProgress.stateNode;\n    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n  }\n\n  function getMaskedContext(workInProgress, unmaskedContext) {\n    var type = workInProgress.type;\n    var contextTypes = type.contextTypes;\n    if (!contextTypes) {\n      return emptyObject;\n    }\n\n    // Avoid recreating masked context unless unmasked context has changed.\n    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n    // This may trigger infinite loops if componentWillReceiveProps calls setState.\n    var instance = workInProgress.stateNode;\n    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n      return instance.__reactInternalMemoizedMaskedChildContext;\n    }\n\n    var context = {};\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentName(workInProgress) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name, ReactDebugCurrentFiber.getCurrentFiberStackAddendum);\n    }\n\n    // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // Context is created before the class component is instantiated so check for instance.\n    if (instance) {\n      cacheContext(workInProgress, unmaskedContext, context);\n    }\n\n    return context;\n  }\n\n  function hasContextChanged() {\n    return didPerformWorkStackCursor.current;\n  }\n\n  function isContextConsumer(fiber) {\n    return fiber.tag === ClassComponent && fiber.type.contextTypes != null;\n  }\n\n  function isContextProvider(fiber) {\n    return fiber.tag === ClassComponent && fiber.type.childContextTypes != null;\n  }\n\n  function popContextProvider(fiber) {\n    if (!isContextProvider(fiber)) {\n      return;\n    }\n\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n\n  function popTopLevelContextObject(fiber) {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n\n  function pushTopLevelContextObject(fiber, context, didChange) {\n    !(contextStackCursor.cursor == null) ? invariant(false, 'Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    push(contextStackCursor, context, fiber);\n    push(didPerformWorkStackCursor, didChange, fiber);\n  }\n\n  function processChildContext(fiber, parentContext) {\n    var instance = fiber.stateNode;\n    var childContextTypes = fiber.type.childContextTypes;\n\n    // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentName(fiber) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n          warning(false, '%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n      return parentContext;\n    }\n\n    var childContext = void 0;\n    {\n      ReactDebugCurrentFiber.setCurrentPhase('getChildContext');\n    }\n    startPhaseTimer(fiber, 'getChildContext');\n    childContext = instance.getChildContext();\n    stopPhaseTimer();\n    {\n      ReactDebugCurrentFiber.setCurrentPhase(null);\n    }\n    for (var contextKey in childContext) {\n      !(contextKey in childContextTypes) ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', getComponentName(fiber) || 'Unknown', contextKey) : void 0;\n    }\n    {\n      var name = getComponentName(fiber) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name,\n      // In practice, there is one case in which we won't get a stack. It's when\n      // somebody calls unstable_renderSubtreeIntoContainer() and we process\n      // context from the parent component instance. The stack will be missing\n      // because it's outside of the reconciliation, and so the pointer has not\n      // been set. This is rare and doesn't matter. We'll also remove that API.\n      ReactDebugCurrentFiber.getCurrentFiberStackAddendum);\n    }\n\n    return _assign({}, parentContext, childContext);\n  }\n\n  function pushContextProvider(workInProgress) {\n    if (!isContextProvider(workInProgress)) {\n      return false;\n    }\n\n    var instance = workInProgress.stateNode;\n    // We push the context as early as possible to ensure stack integrity.\n    // If the instance does not exist yet, we will push null at first,\n    // and replace it on the stack later when invalidating the context.\n    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyObject;\n\n    // Remember the parent context so we can merge with it later.\n    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n    previousContext = contextStackCursor.current;\n    push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n\n    return true;\n  }\n\n  function invalidateContextProvider(workInProgress, didChange) {\n    var instance = workInProgress.stateNode;\n    !instance ? invariant(false, 'Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    if (didChange) {\n      // Merge parent and own context.\n      // Skip this if we're not updating due to sCU.\n      // This avoids unnecessarily recomputing memoized values.\n      var mergedContext = processChildContext(workInProgress, previousContext);\n      instance.__reactInternalMemoizedMergedChildContext = mergedContext;\n\n      // Replace the old (or empty) context with the new one.\n      // It is important to unwind the context in the reverse order.\n      pop(didPerformWorkStackCursor, workInProgress);\n      pop(contextStackCursor, workInProgress);\n      // Now push the new context and mark that it has changed.\n      push(contextStackCursor, mergedContext, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    } else {\n      pop(didPerformWorkStackCursor, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    }\n  }\n\n  function findCurrentUnmaskedContext(fiber) {\n    // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n    // makes sense elsewhere\n    !(isFiberMounted(fiber) && fiber.tag === ClassComponent) ? invariant(false, 'Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    var node = fiber;\n    while (node.tag !== HostRoot) {\n      if (isContextProvider(node)) {\n        return node.stateNode.__reactInternalMemoizedMergedChildContext;\n      }\n      var parent = node['return'];\n      !parent ? invariant(false, 'Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n      node = parent;\n    }\n    return node.stateNode.context;\n  }\n\n  return {\n    getUnmaskedContext: getUnmaskedContext,\n    cacheContext: cacheContext,\n    getMaskedContext: getMaskedContext,\n    hasContextChanged: hasContextChanged,\n    isContextConsumer: isContextConsumer,\n    isContextProvider: isContextProvider,\n    popContextProvider: popContextProvider,\n    popTopLevelContextObject: popTopLevelContextObject,\n    pushTopLevelContextObject: pushTopLevelContextObject,\n    processChildContext: processChildContext,\n    pushContextProvider: pushContextProvider,\n    invalidateContextProvider: invalidateContextProvider,\n    findCurrentUnmaskedContext: findCurrentUnmaskedContext\n  };\n};\n\nvar ReactFiberNewContext = function (stack) {\n  var createCursor = stack.createCursor,\n      push = stack.push,\n      pop = stack.pop;\n\n\n  var providerCursor = createCursor(null);\n  var valueCursor = createCursor(null);\n  var changedBitsCursor = createCursor(0);\n\n  var rendererSigil = void 0;\n  {\n    // Use this to detect multiple renderers using the same context\n    rendererSigil = {};\n  }\n\n  function pushProvider(providerFiber) {\n    var context = providerFiber.type._context;\n\n    push(changedBitsCursor, context._changedBits, providerFiber);\n    push(valueCursor, context._currentValue, providerFiber);\n    push(providerCursor, providerFiber, providerFiber);\n\n    context._currentValue = providerFiber.pendingProps.value;\n    context._changedBits = providerFiber.stateNode;\n\n    {\n      !(context._currentRenderer === null || context._currentRenderer === rendererSigil) ? warning(false, 'Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.') : void 0;\n      context._currentRenderer = rendererSigil;\n    }\n  }\n\n  function popProvider(providerFiber) {\n    var changedBits = changedBitsCursor.current;\n    var currentValue = valueCursor.current;\n\n    pop(providerCursor, providerFiber);\n    pop(valueCursor, providerFiber);\n    pop(changedBitsCursor, providerFiber);\n\n    var context = providerFiber.type._context;\n    context._currentValue = currentValue;\n    context._changedBits = changedBits;\n  }\n\n  return {\n    pushProvider: pushProvider,\n    popProvider: popProvider\n  };\n};\n\nvar ReactFiberStack = function () {\n  var valueStack = [];\n\n  var fiberStack = void 0;\n\n  {\n    fiberStack = [];\n  }\n\n  var index = -1;\n\n  function createCursor(defaultValue) {\n    return {\n      current: defaultValue\n    };\n  }\n\n  function isEmpty() {\n    return index === -1;\n  }\n\n  function pop(cursor, fiber) {\n    if (index < 0) {\n      {\n        warning(false, 'Unexpected pop.');\n      }\n      return;\n    }\n\n    {\n      if (fiber !== fiberStack[index]) {\n        warning(false, 'Unexpected Fiber popped.');\n      }\n    }\n\n    cursor.current = valueStack[index];\n\n    valueStack[index] = null;\n\n    {\n      fiberStack[index] = null;\n    }\n\n    index--;\n  }\n\n  function push(cursor, value, fiber) {\n    index++;\n\n    valueStack[index] = cursor.current;\n\n    {\n      fiberStack[index] = fiber;\n    }\n\n    cursor.current = value;\n  }\n\n  function checkThatStackIsEmpty() {\n    {\n      if (index !== -1) {\n        warning(false, 'Expected an empty stack. Something was not reset properly.');\n      }\n    }\n  }\n\n  function resetStackAfterFatalErrorInDev() {\n    {\n      index = -1;\n      valueStack.length = 0;\n      fiberStack.length = 0;\n    }\n  }\n\n  return {\n    createCursor: createCursor,\n    isEmpty: isEmpty,\n    pop: pop,\n    push: push,\n    checkThatStackIsEmpty: checkThatStackIsEmpty,\n    resetStackAfterFatalErrorInDev: resetStackAfterFatalErrorInDev\n  };\n};\n\nvar invokeGuardedCallback$2 = ReactErrorUtils.invokeGuardedCallback;\nvar hasCaughtError = ReactErrorUtils.hasCaughtError;\nvar clearCaughtError = ReactErrorUtils.clearCaughtError;\n\n\nvar didWarnAboutStateTransition = void 0;\nvar didWarnSetStateChildContext = void 0;\nvar warnAboutUpdateOnUnmounted = void 0;\nvar warnAboutInvalidUpdates = void 0;\n\n{\n  didWarnAboutStateTransition = false;\n  didWarnSetStateChildContext = false;\n  var didWarnStateUpdateForUnmountedComponent = {};\n\n  warnAboutUpdateOnUnmounted = function (fiber) {\n    // We show the whole stack but dedupe on the top component's name because\n    // the problematic code almost always lies inside that component.\n    var componentName = getComponentName(fiber) || 'ReactClass';\n    if (didWarnStateUpdateForUnmountedComponent[componentName]) {\n      return;\n    }\n    warning(false, \"Can't call setState (or forceUpdate) on an unmounted component. This \" + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in the ' + 'componentWillUnmount method.%s', getStackAddendumByWorkInProgressFiber(fiber));\n    didWarnStateUpdateForUnmountedComponent[componentName] = true;\n  };\n\n  warnAboutInvalidUpdates = function (instance) {\n    switch (ReactDebugCurrentFiber.phase) {\n      case 'getChildContext':\n        if (didWarnSetStateChildContext) {\n          return;\n        }\n        warning(false, 'setState(...): Cannot call setState() inside getChildContext()');\n        didWarnSetStateChildContext = true;\n        break;\n      case 'render':\n        if (didWarnAboutStateTransition) {\n          return;\n        }\n        warning(false, 'Cannot update during an existing state transition (such as within ' + \"`render` or another component's constructor). Render methods should \" + 'be a pure function of props and state; constructor side-effects are ' + 'an anti-pattern, but can be moved to `componentWillMount`.');\n        didWarnAboutStateTransition = true;\n        break;\n    }\n  };\n}\n\nvar ReactFiberScheduler = function (config) {\n  var stack = ReactFiberStack();\n  var hostContext = ReactFiberHostContext(config, stack);\n  var legacyContext = ReactFiberLegacyContext(stack);\n  var newContext = ReactFiberNewContext(stack);\n  var popHostContext = hostContext.popHostContext,\n      popHostContainer = hostContext.popHostContainer;\n  var popTopLevelLegacyContextObject = legacyContext.popTopLevelContextObject,\n      popLegacyContextProvider = legacyContext.popContextProvider;\n  var popProvider = newContext.popProvider;\n\n  var hydrationContext = ReactFiberHydrationContext(config);\n\n  var _ReactFiberBeginWork = ReactFiberBeginWork(config, hostContext, legacyContext, newContext, hydrationContext, scheduleWork, computeExpirationForFiber),\n      beginWork = _ReactFiberBeginWork.beginWork;\n\n  var _ReactFiberCompleteWo = ReactFiberCompleteWork(config, hostContext, legacyContext, newContext, hydrationContext),\n      completeWork = _ReactFiberCompleteWo.completeWork;\n\n  var _ReactFiberUnwindWork = ReactFiberUnwindWork(hostContext, legacyContext, newContext, scheduleWork, isAlreadyFailedLegacyErrorBoundary),\n      throwException = _ReactFiberUnwindWork.throwException,\n      unwindWork = _ReactFiberUnwindWork.unwindWork,\n      unwindInterruptedWork = _ReactFiberUnwindWork.unwindInterruptedWork;\n\n  var _ReactFiberCommitWork = ReactFiberCommitWork(config, onCommitPhaseError, scheduleWork, computeExpirationForFiber, markLegacyErrorBoundaryAsFailed, recalculateCurrentTime),\n      commitBeforeMutationLifeCycles = _ReactFiberCommitWork.commitBeforeMutationLifeCycles,\n      commitResetTextContent = _ReactFiberCommitWork.commitResetTextContent,\n      commitPlacement = _ReactFiberCommitWork.commitPlacement,\n      commitDeletion = _ReactFiberCommitWork.commitDeletion,\n      commitWork = _ReactFiberCommitWork.commitWork,\n      commitLifeCycles = _ReactFiberCommitWork.commitLifeCycles,\n      commitErrorLogging = _ReactFiberCommitWork.commitErrorLogging,\n      commitAttachRef = _ReactFiberCommitWork.commitAttachRef,\n      commitDetachRef = _ReactFiberCommitWork.commitDetachRef;\n\n  var now = config.now,\n      scheduleDeferredCallback = config.scheduleDeferredCallback,\n      cancelDeferredCallback = config.cancelDeferredCallback,\n      prepareForCommit = config.prepareForCommit,\n      resetAfterCommit = config.resetAfterCommit;\n\n  // Represents the current time in ms.\n\n  var originalStartTimeMs = now();\n  var mostRecentCurrentTime = msToExpirationTime(0);\n  var mostRecentCurrentTimeMs = originalStartTimeMs;\n\n  // Used to ensure computeUniqueAsyncExpiration is monotonically increases.\n  var lastUniqueAsyncExpiration = 0;\n\n  // Represents the expiration time that incoming updates should use. (If this\n  // is NoWork, use the default strategy: async updates in async mode, sync\n  // updates in sync mode.)\n  var expirationContext = NoWork;\n\n  var isWorking = false;\n\n  // The next work in progress fiber that we're currently working on.\n  var nextUnitOfWork = null;\n  var nextRoot = null;\n  // The time at which we're currently rendering work.\n  var nextRenderExpirationTime = NoWork;\n\n  // The next fiber with an effect that we're currently committing.\n  var nextEffect = null;\n\n  var isCommitting = false;\n\n  var isRootReadyForCommit = false;\n\n  var legacyErrorBoundariesThatAlreadyFailed = null;\n\n  // Used for performance tracking.\n  var interruptedBy = null;\n\n  var stashedWorkInProgressProperties = void 0;\n  var replayUnitOfWork = void 0;\n  var isReplayingFailedUnitOfWork = void 0;\n  var originalReplayError = void 0;\n  var rethrowOriginalError = void 0;\n  if (true && replayFailedUnitOfWorkWithInvokeGuardedCallback) {\n    stashedWorkInProgressProperties = null;\n    isReplayingFailedUnitOfWork = false;\n    originalReplayError = null;\n    replayUnitOfWork = function (failedUnitOfWork, error, isAsync) {\n      // Restore the original state of the work-in-progress\n      assignFiberPropertiesInDEV(failedUnitOfWork, stashedWorkInProgressProperties);\n      switch (failedUnitOfWork.tag) {\n        case HostRoot:\n          popHostContainer(failedUnitOfWork);\n          popTopLevelLegacyContextObject(failedUnitOfWork);\n          break;\n        case HostComponent:\n          popHostContext(failedUnitOfWork);\n          break;\n        case ClassComponent:\n          popLegacyContextProvider(failedUnitOfWork);\n          break;\n        case HostPortal:\n          popHostContainer(failedUnitOfWork);\n          break;\n        case ContextProvider:\n          popProvider(failedUnitOfWork);\n          break;\n      }\n      // Replay the begin phase.\n      isReplayingFailedUnitOfWork = true;\n      originalReplayError = error;\n      invokeGuardedCallback$2(null, workLoop, null, isAsync);\n      isReplayingFailedUnitOfWork = false;\n      originalReplayError = null;\n      if (hasCaughtError()) {\n        clearCaughtError();\n      } else {\n        // If the begin phase did not fail the second time, set this pointer\n        // back to the original value.\n        nextUnitOfWork = failedUnitOfWork;\n      }\n    };\n    rethrowOriginalError = function () {\n      throw originalReplayError;\n    };\n  }\n\n  function resetStack() {\n    if (nextUnitOfWork !== null) {\n      var interruptedWork = nextUnitOfWork['return'];\n      while (interruptedWork !== null) {\n        unwindInterruptedWork(interruptedWork);\n        interruptedWork = interruptedWork['return'];\n      }\n    }\n\n    {\n      ReactStrictModeWarnings.discardPendingWarnings();\n      stack.checkThatStackIsEmpty();\n    }\n\n    nextRoot = null;\n    nextRenderExpirationTime = NoWork;\n    nextUnitOfWork = null;\n\n    isRootReadyForCommit = false;\n  }\n\n  function commitAllHostEffects() {\n    while (nextEffect !== null) {\n      {\n        ReactDebugCurrentFiber.setCurrentFiber(nextEffect);\n      }\n      recordEffect();\n\n      var effectTag = nextEffect.effectTag;\n\n      if (effectTag & ContentReset) {\n        commitResetTextContent(nextEffect);\n      }\n\n      if (effectTag & Ref) {\n        var current = nextEffect.alternate;\n        if (current !== null) {\n          commitDetachRef(current);\n        }\n      }\n\n      // The following switch statement is only concerned about placement,\n      // updates, and deletions. To avoid needing to add a case for every\n      // possible bitmap value, we remove the secondary effects from the\n      // effect tag and switch on that value.\n      var primaryEffectTag = effectTag & (Placement | Update | Deletion);\n      switch (primaryEffectTag) {\n        case Placement:\n          {\n            commitPlacement(nextEffect);\n            // Clear the \"placement\" from effect tag so that we know that this is inserted, before\n            // any life-cycles like componentDidMount gets called.\n            // TODO: findDOMNode doesn't rely on this any more but isMounted\n            // does and isMounted is deprecated anyway so we should be able\n            // to kill this.\n            nextEffect.effectTag &= ~Placement;\n            break;\n          }\n        case PlacementAndUpdate:\n          {\n            // Placement\n            commitPlacement(nextEffect);\n            // Clear the \"placement\" from effect tag so that we know that this is inserted, before\n            // any life-cycles like componentDidMount gets called.\n            nextEffect.effectTag &= ~Placement;\n\n            // Update\n            var _current = nextEffect.alternate;\n            commitWork(_current, nextEffect);\n            break;\n          }\n        case Update:\n          {\n            var _current2 = nextEffect.alternate;\n            commitWork(_current2, nextEffect);\n            break;\n          }\n        case Deletion:\n          {\n            commitDeletion(nextEffect);\n            break;\n          }\n      }\n      nextEffect = nextEffect.nextEffect;\n    }\n\n    {\n      ReactDebugCurrentFiber.resetCurrentFiber();\n    }\n  }\n\n  function commitBeforeMutationLifecycles() {\n    while (nextEffect !== null) {\n      var effectTag = nextEffect.effectTag;\n\n      if (effectTag & Snapshot) {\n        recordEffect();\n        var current = nextEffect.alternate;\n        commitBeforeMutationLifeCycles(current, nextEffect);\n      }\n\n      // Don't cleanup effects yet;\n      // This will be done by commitAllLifeCycles()\n      nextEffect = nextEffect.nextEffect;\n    }\n  }\n\n  function commitAllLifeCycles(finishedRoot, currentTime, committedExpirationTime) {\n    {\n      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n\n      if (warnAboutDeprecatedLifecycles) {\n        ReactStrictModeWarnings.flushPendingDeprecationWarnings();\n      }\n    }\n    while (nextEffect !== null) {\n      var effectTag = nextEffect.effectTag;\n\n      if (effectTag & (Update | Callback)) {\n        recordEffect();\n        var current = nextEffect.alternate;\n        commitLifeCycles(finishedRoot, current, nextEffect, currentTime, committedExpirationTime);\n      }\n\n      if (effectTag & ErrLog) {\n        commitErrorLogging(nextEffect, onUncaughtError);\n      }\n\n      if (effectTag & Ref) {\n        recordEffect();\n        commitAttachRef(nextEffect);\n      }\n\n      var next = nextEffect.nextEffect;\n      // Ensure that we clean these up so that we don't accidentally keep them.\n      // I'm not actually sure this matters because we can't reset firstEffect\n      // and lastEffect since they're on every node, not just the effectful\n      // ones. So we have to clean everything as we reuse nodes anyway.\n      nextEffect.nextEffect = null;\n      // Ensure that we reset the effectTag here so that we can rely on effect\n      // tags to reason about the current life-cycle.\n      nextEffect = next;\n    }\n  }\n\n  function isAlreadyFailedLegacyErrorBoundary(instance) {\n    return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n  }\n\n  function markLegacyErrorBoundaryAsFailed(instance) {\n    if (legacyErrorBoundariesThatAlreadyFailed === null) {\n      legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n    } else {\n      legacyErrorBoundariesThatAlreadyFailed.add(instance);\n    }\n  }\n\n  function commitRoot(finishedWork) {\n    isWorking = true;\n    isCommitting = true;\n    startCommitTimer();\n\n    var root = finishedWork.stateNode;\n    !(root.current !== finishedWork) ? invariant(false, 'Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    var committedExpirationTime = root.pendingCommitExpirationTime;\n    !(committedExpirationTime !== NoWork) ? invariant(false, 'Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    root.pendingCommitExpirationTime = NoWork;\n\n    var currentTime = recalculateCurrentTime();\n\n    // Reset this to null before calling lifecycles\n    ReactCurrentOwner.current = null;\n\n    var firstEffect = void 0;\n    if (finishedWork.effectTag > PerformedWork) {\n      // A fiber's effect list consists only of its children, not itself. So if\n      // the root has an effect, we need to add it to the end of the list. The\n      // resulting list is the set that would belong to the root's parent, if\n      // it had one; that is, all the effects in the tree including the root.\n      if (finishedWork.lastEffect !== null) {\n        finishedWork.lastEffect.nextEffect = finishedWork;\n        firstEffect = finishedWork.firstEffect;\n      } else {\n        firstEffect = finishedWork;\n      }\n    } else {\n      // There is no effect on the root.\n      firstEffect = finishedWork.firstEffect;\n    }\n\n    prepareForCommit(root.containerInfo);\n\n    // Invoke instances of getSnapshotBeforeUpdate before mutation.\n    nextEffect = firstEffect;\n    startCommitSnapshotEffectsTimer();\n    while (nextEffect !== null) {\n      var didError = false;\n      var error = void 0;\n      {\n        invokeGuardedCallback$2(null, commitBeforeMutationLifecycles, null);\n        if (hasCaughtError()) {\n          didError = true;\n          error = clearCaughtError();\n        }\n      }\n      if (didError) {\n        !(nextEffect !== null) ? invariant(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n        onCommitPhaseError(nextEffect, error);\n        // Clean-up\n        if (nextEffect !== null) {\n          nextEffect = nextEffect.nextEffect;\n        }\n      }\n    }\n    stopCommitSnapshotEffectsTimer();\n\n    // Commit all the side-effects within a tree. We'll do this in two passes.\n    // The first pass performs all the host insertions, updates, deletions and\n    // ref unmounts.\n    nextEffect = firstEffect;\n    startCommitHostEffectsTimer();\n    while (nextEffect !== null) {\n      var _didError = false;\n      var _error = void 0;\n      {\n        invokeGuardedCallback$2(null, commitAllHostEffects, null);\n        if (hasCaughtError()) {\n          _didError = true;\n          _error = clearCaughtError();\n        }\n      }\n      if (_didError) {\n        !(nextEffect !== null) ? invariant(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n        onCommitPhaseError(nextEffect, _error);\n        // Clean-up\n        if (nextEffect !== null) {\n          nextEffect = nextEffect.nextEffect;\n        }\n      }\n    }\n    stopCommitHostEffectsTimer();\n\n    resetAfterCommit(root.containerInfo);\n\n    // The work-in-progress tree is now the current tree. This must come after\n    // the first pass of the commit phase, so that the previous tree is still\n    // current during componentWillUnmount, but before the second pass, so that\n    // the finished work is current during componentDidMount/Update.\n    root.current = finishedWork;\n\n    // In the second pass we'll perform all life-cycles and ref callbacks.\n    // Life-cycles happen as a separate pass so that all placements, updates,\n    // and deletions in the entire tree have already been invoked.\n    // This pass also triggers any renderer-specific initial effects.\n    nextEffect = firstEffect;\n    startCommitLifeCyclesTimer();\n    while (nextEffect !== null) {\n      var _didError2 = false;\n      var _error2 = void 0;\n      {\n        invokeGuardedCallback$2(null, commitAllLifeCycles, null, root, currentTime, committedExpirationTime);\n        if (hasCaughtError()) {\n          _didError2 = true;\n          _error2 = clearCaughtError();\n        }\n      }\n      if (_didError2) {\n        !(nextEffect !== null) ? invariant(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n        onCommitPhaseError(nextEffect, _error2);\n        if (nextEffect !== null) {\n          nextEffect = nextEffect.nextEffect;\n        }\n      }\n    }\n\n    isCommitting = false;\n    isWorking = false;\n    stopCommitLifeCyclesTimer();\n    stopCommitTimer();\n    if (typeof onCommitRoot === 'function') {\n      onCommitRoot(finishedWork.stateNode);\n    }\n    if (true && ReactFiberInstrumentation_1.debugTool) {\n      ReactFiberInstrumentation_1.debugTool.onCommitWork(finishedWork);\n    }\n\n    var remainingTime = root.current.expirationTime;\n    if (remainingTime === NoWork) {\n      // If there's no remaining work, we can clear the set of already failed\n      // error boundaries.\n      legacyErrorBoundariesThatAlreadyFailed = null;\n    }\n    return remainingTime;\n  }\n\n  function resetExpirationTime(workInProgress, renderTime) {\n    if (renderTime !== Never && workInProgress.expirationTime === Never) {\n      // The children of this component are hidden. Don't bubble their\n      // expiration times.\n      return;\n    }\n\n    // Check for pending updates.\n    var newExpirationTime = getUpdateExpirationTime(workInProgress);\n\n    // TODO: Calls need to visit stateNode\n\n    // Bubble up the earliest expiration time.\n    var child = workInProgress.child;\n    while (child !== null) {\n      if (child.expirationTime !== NoWork && (newExpirationTime === NoWork || newExpirationTime > child.expirationTime)) {\n        newExpirationTime = child.expirationTime;\n      }\n      child = child.sibling;\n    }\n    workInProgress.expirationTime = newExpirationTime;\n  }\n\n  function completeUnitOfWork(workInProgress) {\n    // Attempt to complete the current unit of work, then move to the\n    // next sibling. If there are no more siblings, return to the\n    // parent fiber.\n    while (true) {\n      // The current, flushed, state of this fiber is the alternate.\n      // Ideally nothing should rely on this, but relying on it here\n      // means that we don't need an additional field on the work in\n      // progress.\n      var current = workInProgress.alternate;\n      {\n        ReactDebugCurrentFiber.setCurrentFiber(workInProgress);\n      }\n\n      var returnFiber = workInProgress['return'];\n      var siblingFiber = workInProgress.sibling;\n\n      if ((workInProgress.effectTag & Incomplete) === NoEffect) {\n        // This fiber completed.\n        var next = completeWork(current, workInProgress, nextRenderExpirationTime);\n        stopWorkTimer(workInProgress);\n        resetExpirationTime(workInProgress, nextRenderExpirationTime);\n        {\n          ReactDebugCurrentFiber.resetCurrentFiber();\n        }\n\n        if (next !== null) {\n          stopWorkTimer(workInProgress);\n          if (true && ReactFiberInstrumentation_1.debugTool) {\n            ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress);\n          }\n          // If completing this work spawned new work, do that next. We'll come\n          // back here again.\n          return next;\n        }\n\n        if (returnFiber !== null &&\n        // Do not append effects to parents if a sibling failed to complete\n        (returnFiber.effectTag & Incomplete) === NoEffect) {\n          // Append all the effects of the subtree and this fiber onto the effect\n          // list of the parent. The completion order of the children affects the\n          // side-effect order.\n          if (returnFiber.firstEffect === null) {\n            returnFiber.firstEffect = workInProgress.firstEffect;\n          }\n          if (workInProgress.lastEffect !== null) {\n            if (returnFiber.lastEffect !== null) {\n              returnFiber.lastEffect.nextEffect = workInProgress.firstEffect;\n            }\n            returnFiber.lastEffect = workInProgress.lastEffect;\n          }\n\n          // If this fiber had side-effects, we append it AFTER the children's\n          // side-effects. We can perform certain side-effects earlier if\n          // needed, by doing multiple passes over the effect list. We don't want\n          // to schedule our own side-effect on our own list because if end up\n          // reusing children we'll schedule this effect onto itself since we're\n          // at the end.\n          var effectTag = workInProgress.effectTag;\n          // Skip both NoWork and PerformedWork tags when creating the effect list.\n          // PerformedWork effect is read by React DevTools but shouldn't be committed.\n          if (effectTag > PerformedWork) {\n            if (returnFiber.lastEffect !== null) {\n              returnFiber.lastEffect.nextEffect = workInProgress;\n            } else {\n              returnFiber.firstEffect = workInProgress;\n            }\n            returnFiber.lastEffect = workInProgress;\n          }\n        }\n\n        if (true && ReactFiberInstrumentation_1.debugTool) {\n          ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress);\n        }\n\n        if (siblingFiber !== null) {\n          // If there is more work to do in this returnFiber, do that next.\n          return siblingFiber;\n        } else if (returnFiber !== null) {\n          // If there's no more work in this returnFiber. Complete the returnFiber.\n          workInProgress = returnFiber;\n          continue;\n        } else {\n          // We've reached the root.\n          isRootReadyForCommit = true;\n          return null;\n        }\n      } else {\n        // This fiber did not complete because something threw. Pop values off\n        // the stack without entering the complete phase. If this is a boundary,\n        // capture values if possible.\n        var _next = unwindWork(workInProgress);\n        // Because this fiber did not complete, don't reset its expiration time.\n        if (workInProgress.effectTag & DidCapture) {\n          // Restarting an error boundary\n          stopFailedWorkTimer(workInProgress);\n        } else {\n          stopWorkTimer(workInProgress);\n        }\n\n        {\n          ReactDebugCurrentFiber.resetCurrentFiber();\n        }\n\n        if (_next !== null) {\n          stopWorkTimer(workInProgress);\n          if (true && ReactFiberInstrumentation_1.debugTool) {\n            ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress);\n          }\n          // If completing this work spawned new work, do that next. We'll come\n          // back here again.\n          // Since we're restarting, remove anything that is not a host effect\n          // from the effect tag.\n          _next.effectTag &= HostEffectMask;\n          return _next;\n        }\n\n        if (returnFiber !== null) {\n          // Mark the parent fiber as incomplete and clear its effect list.\n          returnFiber.firstEffect = returnFiber.lastEffect = null;\n          returnFiber.effectTag |= Incomplete;\n        }\n\n        if (true && ReactFiberInstrumentation_1.debugTool) {\n          ReactFiberInstrumentation_1.debugTool.onCompleteWork(workInProgress);\n        }\n\n        if (siblingFiber !== null) {\n          // If there is more work to do in this returnFiber, do that next.\n          return siblingFiber;\n        } else if (returnFiber !== null) {\n          // If there's no more work in this returnFiber. Complete the returnFiber.\n          workInProgress = returnFiber;\n          continue;\n        } else {\n          return null;\n        }\n      }\n    }\n\n    // Without this explicit null return Flow complains of invalid return type\n    // TODO Remove the above while(true) loop\n    // eslint-disable-next-line no-unreachable\n    return null;\n  }\n\n  function performUnitOfWork(workInProgress) {\n    // The current, flushed, state of this fiber is the alternate.\n    // Ideally nothing should rely on this, but relying on it here\n    // means that we don't need an additional field on the work in\n    // progress.\n    var current = workInProgress.alternate;\n\n    // See if beginning this work spawns more work.\n    startWorkTimer(workInProgress);\n    {\n      ReactDebugCurrentFiber.setCurrentFiber(workInProgress);\n    }\n\n    if (true && replayFailedUnitOfWorkWithInvokeGuardedCallback) {\n      stashedWorkInProgressProperties = assignFiberPropertiesInDEV(stashedWorkInProgressProperties, workInProgress);\n    }\n    var next = beginWork(current, workInProgress, nextRenderExpirationTime);\n    {\n      ReactDebugCurrentFiber.resetCurrentFiber();\n      if (isReplayingFailedUnitOfWork) {\n        // Currently replaying a failed unit of work. This should be unreachable,\n        // because the render phase is meant to be idempotent, and it should\n        // have thrown again. Since it didn't, rethrow the original error, so\n        // React's internal stack is not misaligned.\n        rethrowOriginalError();\n      }\n    }\n    if (true && ReactFiberInstrumentation_1.debugTool) {\n      ReactFiberInstrumentation_1.debugTool.onBeginWork(workInProgress);\n    }\n\n    if (next === null) {\n      // If this doesn't spawn new work, complete the current work.\n      next = completeUnitOfWork(workInProgress);\n    }\n\n    ReactCurrentOwner.current = null;\n\n    return next;\n  }\n\n  function workLoop(isAsync) {\n    if (!isAsync) {\n      // Flush all expired work.\n      while (nextUnitOfWork !== null) {\n        nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n      }\n    } else {\n      // Flush asynchronous work until the deadline runs out of time.\n      while (nextUnitOfWork !== null && !shouldYield()) {\n        nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n      }\n    }\n  }\n\n  function renderRoot(root, expirationTime, isAsync) {\n    !!isWorking ? invariant(false, 'renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    isWorking = true;\n\n    // Check if we're starting from a fresh stack, or if we're resuming from\n    // previously yielded work.\n    if (expirationTime !== nextRenderExpirationTime || root !== nextRoot || nextUnitOfWork === null) {\n      // Reset the stack and start working from the root.\n      resetStack();\n      nextRoot = root;\n      nextRenderExpirationTime = expirationTime;\n      nextUnitOfWork = createWorkInProgress(nextRoot.current, null, nextRenderExpirationTime);\n      root.pendingCommitExpirationTime = NoWork;\n    }\n\n    var didFatal = false;\n\n    startWorkLoopTimer(nextUnitOfWork);\n\n    do {\n      try {\n        workLoop(isAsync);\n      } catch (thrownValue) {\n        if (nextUnitOfWork === null) {\n          // This is a fatal error.\n          didFatal = true;\n          onUncaughtError(thrownValue);\n          break;\n        }\n\n        if (true && replayFailedUnitOfWorkWithInvokeGuardedCallback) {\n          var failedUnitOfWork = nextUnitOfWork;\n          replayUnitOfWork(failedUnitOfWork, thrownValue, isAsync);\n        }\n\n        var sourceFiber = nextUnitOfWork;\n        var returnFiber = sourceFiber['return'];\n        if (returnFiber === null) {\n          // This is the root. The root could capture its own errors. However,\n          // we don't know if it errors before or after we pushed the host\n          // context. This information is needed to avoid a stack mismatch.\n          // Because we're not sure, treat this as a fatal error. We could track\n          // which phase it fails in, but doesn't seem worth it. At least\n          // for now.\n          didFatal = true;\n          onUncaughtError(thrownValue);\n          break;\n        }\n        throwException(returnFiber, sourceFiber, thrownValue);\n        nextUnitOfWork = completeUnitOfWork(sourceFiber);\n      }\n      break;\n    } while (true);\n\n    // We're done performing work. Time to clean up.\n    var didCompleteRoot = false;\n    isWorking = false;\n\n    // Yield back to main thread.\n    if (didFatal) {\n      stopWorkLoopTimer(interruptedBy, didCompleteRoot);\n      interruptedBy = null;\n      // There was a fatal error.\n      {\n        stack.resetStackAfterFatalErrorInDev();\n      }\n      return null;\n    } else if (nextUnitOfWork === null) {\n      // We reached the root.\n      if (isRootReadyForCommit) {\n        didCompleteRoot = true;\n        stopWorkLoopTimer(interruptedBy, didCompleteRoot);\n        interruptedBy = null;\n        // The root successfully completed. It's ready for commit.\n        root.pendingCommitExpirationTime = expirationTime;\n        var finishedWork = root.current.alternate;\n        return finishedWork;\n      } else {\n        // The root did not complete.\n        stopWorkLoopTimer(interruptedBy, didCompleteRoot);\n        interruptedBy = null;\n        invariant(false, 'Expired work should have completed. This error is likely caused by a bug in React. Please file an issue.');\n      }\n    } else {\n      stopWorkLoopTimer(interruptedBy, didCompleteRoot);\n      interruptedBy = null;\n      // There's more work to do, but we ran out of time. Yield back to\n      // the renderer.\n      return null;\n    }\n  }\n\n  function scheduleCapture(sourceFiber, boundaryFiber, value, expirationTime) {\n    // TODO: We only support dispatching errors.\n    var capturedValue = createCapturedValue(value, sourceFiber);\n    var update = {\n      expirationTime: expirationTime,\n      partialState: null,\n      callback: null,\n      isReplace: false,\n      isForced: false,\n      capturedValue: capturedValue,\n      next: null\n    };\n    insertUpdateIntoFiber(boundaryFiber, update);\n    scheduleWork(boundaryFiber, expirationTime);\n  }\n\n  function dispatch(sourceFiber, value, expirationTime) {\n    !(!isWorking || isCommitting) ? invariant(false, 'dispatch: Cannot dispatch during the render phase.') : void 0;\n\n    // TODO: Handle arrays\n\n    var fiber = sourceFiber['return'];\n    while (fiber !== null) {\n      switch (fiber.tag) {\n        case ClassComponent:\n          var ctor = fiber.type;\n          var instance = fiber.stateNode;\n          if (typeof ctor.getDerivedStateFromCatch === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n            scheduleCapture(sourceFiber, fiber, value, expirationTime);\n            return;\n          }\n          break;\n        // TODO: Handle async boundaries\n        case HostRoot:\n          scheduleCapture(sourceFiber, fiber, value, expirationTime);\n          return;\n      }\n      fiber = fiber['return'];\n    }\n\n    if (sourceFiber.tag === HostRoot) {\n      // Error was thrown at the root. There is no parent, so the root\n      // itself should capture it.\n      scheduleCapture(sourceFiber, sourceFiber, value, expirationTime);\n    }\n  }\n\n  function onCommitPhaseError(fiber, error) {\n    return dispatch(fiber, error, Sync);\n  }\n\n  function computeAsyncExpiration(currentTime) {\n    // Given the current clock time, returns an expiration time. We use rounding\n    // to batch like updates together.\n    // Should complete within ~1000ms. 1200ms max.\n    var expirationMs = 5000;\n    var bucketSizeMs = 250;\n    return computeExpirationBucket(currentTime, expirationMs, bucketSizeMs);\n  }\n\n  function computeInteractiveExpiration(currentTime) {\n    var expirationMs = void 0;\n    // We intentionally set a higher expiration time for interactive updates in\n    // dev than in production.\n    // If the main thread is being blocked so long that you hit the expiration,\n    // it's a problem that could be solved with better scheduling.\n    // People will be more likely to notice this and fix it with the long\n    // expiration time in development.\n    // In production we opt for better UX at the risk of masking scheduling\n    // problems, by expiring fast.\n    {\n      // Should complete within ~500ms. 600ms max.\n      expirationMs = 500;\n    }\n    var bucketSizeMs = 100;\n    return computeExpirationBucket(currentTime, expirationMs, bucketSizeMs);\n  }\n\n  // Creates a unique async expiration time.\n  function computeUniqueAsyncExpiration() {\n    var currentTime = recalculateCurrentTime();\n    var result = computeAsyncExpiration(currentTime);\n    if (result <= lastUniqueAsyncExpiration) {\n      // Since we assume the current time monotonically increases, we only hit\n      // this branch when computeUniqueAsyncExpiration is fired multiple times\n      // within a 200ms window (or whatever the async bucket size is).\n      result = lastUniqueAsyncExpiration + 1;\n    }\n    lastUniqueAsyncExpiration = result;\n    return lastUniqueAsyncExpiration;\n  }\n\n  function computeExpirationForFiber(fiber) {\n    var expirationTime = void 0;\n    if (expirationContext !== NoWork) {\n      // An explicit expiration context was set;\n      expirationTime = expirationContext;\n    } else if (isWorking) {\n      if (isCommitting) {\n        // Updates that occur during the commit phase should have sync priority\n        // by default.\n        expirationTime = Sync;\n      } else {\n        // Updates during the render phase should expire at the same time as\n        // the work that is being rendered.\n        expirationTime = nextRenderExpirationTime;\n      }\n    } else {\n      // No explicit expiration context was set, and we're not currently\n      // performing work. Calculate a new expiration time.\n      if (fiber.mode & AsyncMode) {\n        if (isBatchingInteractiveUpdates) {\n          // This is an interactive update\n          var currentTime = recalculateCurrentTime();\n          expirationTime = computeInteractiveExpiration(currentTime);\n        } else {\n          // This is an async update\n          var _currentTime = recalculateCurrentTime();\n          expirationTime = computeAsyncExpiration(_currentTime);\n        }\n      } else {\n        // This is a sync update\n        expirationTime = Sync;\n      }\n    }\n    if (isBatchingInteractiveUpdates) {\n      // This is an interactive update. Keep track of the lowest pending\n      // interactive expiration time. This allows us to synchronously flush\n      // all interactive updates when needed.\n      if (lowestPendingInteractiveExpirationTime === NoWork || expirationTime > lowestPendingInteractiveExpirationTime) {\n        lowestPendingInteractiveExpirationTime = expirationTime;\n      }\n    }\n    return expirationTime;\n  }\n\n  function scheduleWork(fiber, expirationTime) {\n    return scheduleWorkImpl(fiber, expirationTime, false);\n  }\n\n  function scheduleWorkImpl(fiber, expirationTime, isErrorRecovery) {\n    recordScheduleUpdate();\n\n    {\n      if (!isErrorRecovery && fiber.tag === ClassComponent) {\n        var instance = fiber.stateNode;\n        warnAboutInvalidUpdates(instance);\n      }\n    }\n\n    var node = fiber;\n    while (node !== null) {\n      // Walk the parent path to the root and update each node's\n      // expiration time.\n      if (node.expirationTime === NoWork || node.expirationTime > expirationTime) {\n        node.expirationTime = expirationTime;\n      }\n      if (node.alternate !== null) {\n        if (node.alternate.expirationTime === NoWork || node.alternate.expirationTime > expirationTime) {\n          node.alternate.expirationTime = expirationTime;\n        }\n      }\n      if (node['return'] === null) {\n        if (node.tag === HostRoot) {\n          var root = node.stateNode;\n          if (!isWorking && nextRenderExpirationTime !== NoWork && expirationTime < nextRenderExpirationTime) {\n            // This is an interruption. (Used for performance tracking.)\n            interruptedBy = fiber;\n            resetStack();\n          }\n          if (\n          // If we're in the render phase, we don't need to schedule this root\n          // for an update, because we'll do it before we exit...\n          !isWorking || isCommitting ||\n          // ...unless this is a different root than the one we're rendering.\n          nextRoot !== root) {\n            // Add this root to the root schedule.\n            requestWork(root, expirationTime);\n          }\n          if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n            invariant(false, 'Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.');\n          }\n        } else {\n          {\n            if (!isErrorRecovery && fiber.tag === ClassComponent) {\n              warnAboutUpdateOnUnmounted(fiber);\n            }\n          }\n          return;\n        }\n      }\n      node = node['return'];\n    }\n  }\n\n  function recalculateCurrentTime() {\n    // Subtract initial time so it fits inside 32bits\n    mostRecentCurrentTimeMs = now() - originalStartTimeMs;\n    mostRecentCurrentTime = msToExpirationTime(mostRecentCurrentTimeMs);\n    return mostRecentCurrentTime;\n  }\n\n  function deferredUpdates(fn) {\n    var previousExpirationContext = expirationContext;\n    var currentTime = recalculateCurrentTime();\n    expirationContext = computeAsyncExpiration(currentTime);\n    try {\n      return fn();\n    } finally {\n      expirationContext = previousExpirationContext;\n    }\n  }\n  function syncUpdates(fn, a, b, c, d) {\n    var previousExpirationContext = expirationContext;\n    expirationContext = Sync;\n    try {\n      return fn(a, b, c, d);\n    } finally {\n      expirationContext = previousExpirationContext;\n    }\n  }\n\n  // TODO: Everything below this is written as if it has been lifted to the\n  // renderers. I'll do this in a follow-up.\n\n  // Linked-list of roots\n  var firstScheduledRoot = null;\n  var lastScheduledRoot = null;\n\n  var callbackExpirationTime = NoWork;\n  var callbackID = -1;\n  var isRendering = false;\n  var nextFlushedRoot = null;\n  var nextFlushedExpirationTime = NoWork;\n  var lowestPendingInteractiveExpirationTime = NoWork;\n  var deadlineDidExpire = false;\n  var hasUnhandledError = false;\n  var unhandledError = null;\n  var deadline = null;\n\n  var isBatchingUpdates = false;\n  var isUnbatchingUpdates = false;\n  var isBatchingInteractiveUpdates = false;\n\n  var completedBatches = null;\n\n  // Use these to prevent an infinite loop of nested updates\n  var NESTED_UPDATE_LIMIT = 1000;\n  var nestedUpdateCount = 0;\n\n  var timeHeuristicForUnitOfWork = 1;\n\n  function scheduleCallbackWithExpiration(expirationTime) {\n    if (callbackExpirationTime !== NoWork) {\n      // A callback is already scheduled. Check its expiration time (timeout).\n      if (expirationTime > callbackExpirationTime) {\n        // Existing callback has sufficient timeout. Exit.\n        return;\n      } else {\n        // Existing callback has insufficient timeout. Cancel and schedule a\n        // new one.\n        cancelDeferredCallback(callbackID);\n      }\n      // The request callback timer is already running. Don't start a new one.\n    } else {\n      startRequestCallbackTimer();\n    }\n\n    // Compute a timeout for the given expiration time.\n    var currentMs = now() - originalStartTimeMs;\n    var expirationMs = expirationTimeToMs(expirationTime);\n    var timeout = expirationMs - currentMs;\n\n    callbackExpirationTime = expirationTime;\n    callbackID = scheduleDeferredCallback(performAsyncWork, { timeout: timeout });\n  }\n\n  // requestWork is called by the scheduler whenever a root receives an update.\n  // It's up to the renderer to call renderRoot at some point in the future.\n  function requestWork(root, expirationTime) {\n    addRootToSchedule(root, expirationTime);\n\n    if (isRendering) {\n      // Prevent reentrancy. Remaining work will be scheduled at the end of\n      // the currently rendering batch.\n      return;\n    }\n\n    if (isBatchingUpdates) {\n      // Flush work at the end of the batch.\n      if (isUnbatchingUpdates) {\n        // ...unless we're inside unbatchedUpdates, in which case we should\n        // flush it now.\n        nextFlushedRoot = root;\n        nextFlushedExpirationTime = Sync;\n        performWorkOnRoot(root, Sync, false);\n      }\n      return;\n    }\n\n    // TODO: Get rid of Sync and use current time?\n    if (expirationTime === Sync) {\n      performSyncWork();\n    } else {\n      scheduleCallbackWithExpiration(expirationTime);\n    }\n  }\n\n  function addRootToSchedule(root, expirationTime) {\n    // Add the root to the schedule.\n    // Check if this root is already part of the schedule.\n    if (root.nextScheduledRoot === null) {\n      // This root is not already scheduled. Add it.\n      root.remainingExpirationTime = expirationTime;\n      if (lastScheduledRoot === null) {\n        firstScheduledRoot = lastScheduledRoot = root;\n        root.nextScheduledRoot = root;\n      } else {\n        lastScheduledRoot.nextScheduledRoot = root;\n        lastScheduledRoot = root;\n        lastScheduledRoot.nextScheduledRoot = firstScheduledRoot;\n      }\n    } else {\n      // This root is already scheduled, but its priority may have increased.\n      var remainingExpirationTime = root.remainingExpirationTime;\n      if (remainingExpirationTime === NoWork || expirationTime < remainingExpirationTime) {\n        // Update the priority.\n        root.remainingExpirationTime = expirationTime;\n      }\n    }\n  }\n\n  function findHighestPriorityRoot() {\n    var highestPriorityWork = NoWork;\n    var highestPriorityRoot = null;\n    if (lastScheduledRoot !== null) {\n      var previousScheduledRoot = lastScheduledRoot;\n      var root = firstScheduledRoot;\n      while (root !== null) {\n        var remainingExpirationTime = root.remainingExpirationTime;\n        if (remainingExpirationTime === NoWork) {\n          // This root no longer has work. Remove it from the scheduler.\n\n          // TODO: This check is redudant, but Flow is confused by the branch\n          // below where we set lastScheduledRoot to null, even though we break\n          // from the loop right after.\n          !(previousScheduledRoot !== null && lastScheduledRoot !== null) ? invariant(false, 'Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n          if (root === root.nextScheduledRoot) {\n            // This is the only root in the list.\n            root.nextScheduledRoot = null;\n            firstScheduledRoot = lastScheduledRoot = null;\n            break;\n          } else if (root === firstScheduledRoot) {\n            // This is the first root in the list.\n            var next = root.nextScheduledRoot;\n            firstScheduledRoot = next;\n            lastScheduledRoot.nextScheduledRoot = next;\n            root.nextScheduledRoot = null;\n          } else if (root === lastScheduledRoot) {\n            // This is the last root in the list.\n            lastScheduledRoot = previousScheduledRoot;\n            lastScheduledRoot.nextScheduledRoot = firstScheduledRoot;\n            root.nextScheduledRoot = null;\n            break;\n          } else {\n            previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot;\n            root.nextScheduledRoot = null;\n          }\n          root = previousScheduledRoot.nextScheduledRoot;\n        } else {\n          if (highestPriorityWork === NoWork || remainingExpirationTime < highestPriorityWork) {\n            // Update the priority, if it's higher\n            highestPriorityWork = remainingExpirationTime;\n            highestPriorityRoot = root;\n          }\n          if (root === lastScheduledRoot) {\n            break;\n          }\n          previousScheduledRoot = root;\n          root = root.nextScheduledRoot;\n        }\n      }\n    }\n\n    // If the next root is the same as the previous root, this is a nested\n    // update. To prevent an infinite loop, increment the nested update count.\n    var previousFlushedRoot = nextFlushedRoot;\n    if (previousFlushedRoot !== null && previousFlushedRoot === highestPriorityRoot && highestPriorityWork === Sync) {\n      nestedUpdateCount++;\n    } else {\n      // Reset whenever we switch roots.\n      nestedUpdateCount = 0;\n    }\n    nextFlushedRoot = highestPriorityRoot;\n    nextFlushedExpirationTime = highestPriorityWork;\n  }\n\n  function performAsyncWork(dl) {\n    performWork(NoWork, true, dl);\n  }\n\n  function performSyncWork() {\n    performWork(Sync, false, null);\n  }\n\n  function performWork(minExpirationTime, isAsync, dl) {\n    deadline = dl;\n\n    // Keep working on roots until there's no more work, or until the we reach\n    // the deadline.\n    findHighestPriorityRoot();\n\n    if (enableUserTimingAPI && deadline !== null) {\n      var didExpire = nextFlushedExpirationTime < recalculateCurrentTime();\n      var timeout = expirationTimeToMs(nextFlushedExpirationTime);\n      stopRequestCallbackTimer(didExpire, timeout);\n    }\n\n    if (isAsync) {\n      while (nextFlushedRoot !== null && nextFlushedExpirationTime !== NoWork && (minExpirationTime === NoWork || minExpirationTime >= nextFlushedExpirationTime) && (!deadlineDidExpire || recalculateCurrentTime() >= nextFlushedExpirationTime)) {\n        performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, !deadlineDidExpire);\n        findHighestPriorityRoot();\n      }\n    } else {\n      while (nextFlushedRoot !== null && nextFlushedExpirationTime !== NoWork && (minExpirationTime === NoWork || minExpirationTime >= nextFlushedExpirationTime)) {\n        performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, false);\n        findHighestPriorityRoot();\n      }\n    }\n\n    // We're done flushing work. Either we ran out of time in this callback,\n    // or there's no more work left with sufficient priority.\n\n    // If we're inside a callback, set this to false since we just completed it.\n    if (deadline !== null) {\n      callbackExpirationTime = NoWork;\n      callbackID = -1;\n    }\n    // If there's work left over, schedule a new callback.\n    if (nextFlushedExpirationTime !== NoWork) {\n      scheduleCallbackWithExpiration(nextFlushedExpirationTime);\n    }\n\n    // Clean-up.\n    deadline = null;\n    deadlineDidExpire = false;\n\n    finishRendering();\n  }\n\n  function flushRoot(root, expirationTime) {\n    !!isRendering ? invariant(false, 'work.commit(): Cannot commit while already rendering. This likely means you attempted to commit from inside a lifecycle method.') : void 0;\n    // Perform work on root as if the given expiration time is the current time.\n    // This has the effect of synchronously flushing all work up to and\n    // including the given time.\n    nextFlushedRoot = root;\n    nextFlushedExpirationTime = expirationTime;\n    performWorkOnRoot(root, expirationTime, false);\n    // Flush any sync work that was scheduled by lifecycles\n    performSyncWork();\n    finishRendering();\n  }\n\n  function finishRendering() {\n    nestedUpdateCount = 0;\n\n    if (completedBatches !== null) {\n      var batches = completedBatches;\n      completedBatches = null;\n      for (var i = 0; i < batches.length; i++) {\n        var batch = batches[i];\n        try {\n          batch._onComplete();\n        } catch (error) {\n          if (!hasUnhandledError) {\n            hasUnhandledError = true;\n            unhandledError = error;\n          }\n        }\n      }\n    }\n\n    if (hasUnhandledError) {\n      var error = unhandledError;\n      unhandledError = null;\n      hasUnhandledError = false;\n      throw error;\n    }\n  }\n\n  function performWorkOnRoot(root, expirationTime, isAsync) {\n    !!isRendering ? invariant(false, 'performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n\n    isRendering = true;\n\n    // Check if this is async work or sync/expired work.\n    if (!isAsync) {\n      // Flush sync work.\n      var finishedWork = root.finishedWork;\n      if (finishedWork !== null) {\n        // This root is already complete. We can commit it.\n        completeRoot(root, finishedWork, expirationTime);\n      } else {\n        root.finishedWork = null;\n        finishedWork = renderRoot(root, expirationTime, false);\n        if (finishedWork !== null) {\n          // We've completed the root. Commit it.\n          completeRoot(root, finishedWork, expirationTime);\n        }\n      }\n    } else {\n      // Flush async work.\n      var _finishedWork = root.finishedWork;\n      if (_finishedWork !== null) {\n        // This root is already complete. We can commit it.\n        completeRoot(root, _finishedWork, expirationTime);\n      } else {\n        root.finishedWork = null;\n        _finishedWork = renderRoot(root, expirationTime, true);\n        if (_finishedWork !== null) {\n          // We've completed the root. Check the deadline one more time\n          // before committing.\n          if (!shouldYield()) {\n            // Still time left. Commit the root.\n            completeRoot(root, _finishedWork, expirationTime);\n          } else {\n            // There's no time left. Mark this root as complete. We'll come\n            // back and commit it later.\n            root.finishedWork = _finishedWork;\n          }\n        }\n      }\n    }\n\n    isRendering = false;\n  }\n\n  function completeRoot(root, finishedWork, expirationTime) {\n    // Check if there's a batch that matches this expiration time.\n    var firstBatch = root.firstBatch;\n    if (firstBatch !== null && firstBatch._expirationTime <= expirationTime) {\n      if (completedBatches === null) {\n        completedBatches = [firstBatch];\n      } else {\n        completedBatches.push(firstBatch);\n      }\n      if (firstBatch._defer) {\n        // This root is blocked from committing by a batch. Unschedule it until\n        // we receive another update.\n        root.finishedWork = finishedWork;\n        root.remainingExpirationTime = NoWork;\n        return;\n      }\n    }\n\n    // Commit the root.\n    root.finishedWork = null;\n    root.remainingExpirationTime = commitRoot(finishedWork);\n  }\n\n  // When working on async work, the reconciler asks the renderer if it should\n  // yield execution. For DOM, we implement this with requestIdleCallback.\n  function shouldYield() {\n    if (deadline === null) {\n      return false;\n    }\n    if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) {\n      // Disregard deadline.didTimeout. Only expired work should be flushed\n      // during a timeout. This path is only hit for non-expired work.\n      return false;\n    }\n    deadlineDidExpire = true;\n    return true;\n  }\n\n  function onUncaughtError(error) {\n    !(nextFlushedRoot !== null) ? invariant(false, 'Should be working on a root. This error is likely caused by a bug in React. Please file an issue.') : void 0;\n    // Unschedule this root so we don't work on it again until there's\n    // another update.\n    nextFlushedRoot.remainingExpirationTime = NoWork;\n    if (!hasUnhandledError) {\n      hasUnhandledError = true;\n      unhandledError = error;\n    }\n  }\n\n  // TODO: Batching should be implemented at the renderer level, not inside\n  // the reconciler.\n  function batchedUpdates(fn, a) {\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    isBatchingUpdates = true;\n    try {\n      return fn(a);\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      if (!isBatchingUpdates && !isRendering) {\n        performSyncWork();\n      }\n    }\n  }\n\n  // TODO: Batching should be implemented at the renderer level, not inside\n  // the reconciler.\n  function unbatchedUpdates(fn, a) {\n    if (isBatchingUpdates && !isUnbatchingUpdates) {\n      isUnbatchingUpdates = true;\n      try {\n        return fn(a);\n      } finally {\n        isUnbatchingUpdates = false;\n      }\n    }\n    return fn(a);\n  }\n\n  // TODO: Batching should be implemented at the renderer level, not within\n  // the reconciler.\n  function flushSync(fn, a) {\n    !!isRendering ? invariant(false, 'flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.') : void 0;\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    isBatchingUpdates = true;\n    try {\n      return syncUpdates(fn, a);\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      performSyncWork();\n    }\n  }\n\n  function interactiveUpdates(fn, a, b) {\n    if (isBatchingInteractiveUpdates) {\n      return fn(a, b);\n    }\n    // If there are any pending interactive updates, synchronously flush them.\n    // This needs to happen before we read any handlers, because the effect of\n    // the previous event may influence which handlers are called during\n    // this event.\n    if (!isBatchingUpdates && !isRendering && lowestPendingInteractiveExpirationTime !== NoWork) {\n      // Synchronously flush pending interactive updates.\n      performWork(lowestPendingInteractiveExpirationTime, false, null);\n      lowestPendingInteractiveExpirationTime = NoWork;\n    }\n    var previousIsBatchingInteractiveUpdates = isBatchingInteractiveUpdates;\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    isBatchingInteractiveUpdates = true;\n    isBatchingUpdates = true;\n    try {\n      return fn(a, b);\n    } finally {\n      isBatchingInteractiveUpdates = previousIsBatchingInteractiveUpdates;\n      isBatchingUpdates = previousIsBatchingUpdates;\n      if (!isBatchingUpdates && !isRendering) {\n        performSyncWork();\n      }\n    }\n  }\n\n  function flushInteractiveUpdates() {\n    if (!isRendering && lowestPendingInteractiveExpirationTime !== NoWork) {\n      // Synchronously flush pending interactive updates.\n      performWork(lowestPendingInteractiveExpirationTime, false, null);\n      lowestPendingInteractiveExpirationTime = NoWork;\n    }\n  }\n\n  function flushControlled(fn) {\n    var previousIsBatchingUpdates = isBatchingUpdates;\n    isBatchingUpdates = true;\n    try {\n      syncUpdates(fn);\n    } finally {\n      isBatchingUpdates = previousIsBatchingUpdates;\n      if (!isBatchingUpdates && !isRendering) {\n        performWork(Sync, false, null);\n      }\n    }\n  }\n\n  return {\n    recalculateCurrentTime: recalculateCurrentTime,\n    computeExpirationForFiber: computeExpirationForFiber,\n    scheduleWork: scheduleWork,\n    requestWork: requestWork,\n    flushRoot: flushRoot,\n    batchedUpdates: batchedUpdates,\n    unbatchedUpdates: unbatchedUpdates,\n    flushSync: flushSync,\n    flushControlled: flushControlled,\n    deferredUpdates: deferredUpdates,\n    syncUpdates: syncUpdates,\n    interactiveUpdates: interactiveUpdates,\n    flushInteractiveUpdates: flushInteractiveUpdates,\n    computeUniqueAsyncExpiration: computeUniqueAsyncExpiration,\n    legacyContext: legacyContext\n  };\n};\n\nvar didWarnAboutNestedUpdates = void 0;\n\n{\n  didWarnAboutNestedUpdates = false;\n}\n\n// 0 is PROD, 1 is DEV.\n// Might add PROFILE later.\n\n\nvar ReactFiberReconciler$1 = function (config) {\n  var getPublicInstance = config.getPublicInstance;\n\n  var _ReactFiberScheduler = ReactFiberScheduler(config),\n      computeUniqueAsyncExpiration = _ReactFiberScheduler.computeUniqueAsyncExpiration,\n      recalculateCurrentTime = _ReactFiberScheduler.recalculateCurrentTime,\n      computeExpirationForFiber = _ReactFiberScheduler.computeExpirationForFiber,\n      scheduleWork = _ReactFiberScheduler.scheduleWork,\n      requestWork = _ReactFiberScheduler.requestWork,\n      flushRoot = _ReactFiberScheduler.flushRoot,\n      batchedUpdates = _ReactFiberScheduler.batchedUpdates,\n      unbatchedUpdates = _ReactFiberScheduler.unbatchedUpdates,\n      flushSync = _ReactFiberScheduler.flushSync,\n      flushControlled = _ReactFiberScheduler.flushControlled,\n      deferredUpdates = _ReactFiberScheduler.deferredUpdates,\n      syncUpdates = _ReactFiberScheduler.syncUpdates,\n      interactiveUpdates = _ReactFiberScheduler.interactiveUpdates,\n      flushInteractiveUpdates = _ReactFiberScheduler.flushInteractiveUpdates,\n      legacyContext = _ReactFiberScheduler.legacyContext;\n\n  var findCurrentUnmaskedContext = legacyContext.findCurrentUnmaskedContext,\n      isContextProvider = legacyContext.isContextProvider,\n      processChildContext = legacyContext.processChildContext;\n\n\n  function getContextForSubtree(parentComponent) {\n    if (!parentComponent) {\n      return emptyObject;\n    }\n\n    var fiber = get(parentComponent);\n    var parentContext = findCurrentUnmaskedContext(fiber);\n    return isContextProvider(fiber) ? processChildContext(fiber, parentContext) : parentContext;\n  }\n\n  function scheduleRootUpdate(current, element, currentTime, expirationTime, callback) {\n    {\n      if (ReactDebugCurrentFiber.phase === 'render' && ReactDebugCurrentFiber.current !== null && !didWarnAboutNestedUpdates) {\n        didWarnAboutNestedUpdates = true;\n        warning(false, 'Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentName(ReactDebugCurrentFiber.current) || 'Unknown');\n      }\n    }\n\n    callback = callback === undefined ? null : callback;\n    {\n      !(callback === null || typeof callback === 'function') ? warning(false, 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback) : void 0;\n    }\n\n    var update = {\n      expirationTime: expirationTime,\n      partialState: { element: element },\n      callback: callback,\n      isReplace: false,\n      isForced: false,\n      capturedValue: null,\n      next: null\n    };\n    insertUpdateIntoFiber(current, update);\n    scheduleWork(current, expirationTime);\n\n    return expirationTime;\n  }\n\n  function updateContainerAtExpirationTime(element, container, parentComponent, currentTime, expirationTime, callback) {\n    // TODO: If this is a nested container, this won't be the root.\n    var current = container.current;\n\n    {\n      if (ReactFiberInstrumentation_1.debugTool) {\n        if (current.alternate === null) {\n          ReactFiberInstrumentation_1.debugTool.onMountContainer(container);\n        } else if (element === null) {\n          ReactFiberInstrumentation_1.debugTool.onUnmountContainer(container);\n        } else {\n          ReactFiberInstrumentation_1.debugTool.onUpdateContainer(container);\n        }\n      }\n    }\n\n    var context = getContextForSubtree(parentComponent);\n    if (container.context === null) {\n      container.context = context;\n    } else {\n      container.pendingContext = context;\n    }\n\n    return scheduleRootUpdate(current, element, currentTime, expirationTime, callback);\n  }\n\n  function findHostInstance(component) {\n    var fiber = get(component);\n    if (fiber === undefined) {\n      if (typeof component.render === 'function') {\n        invariant(false, 'Unable to find node on an unmounted component.');\n      } else {\n        invariant(false, 'Argument appears to not be a ReactComponent. Keys: %s', Object.keys(component));\n      }\n    }\n    var hostFiber = findCurrentHostFiber(fiber);\n    if (hostFiber === null) {\n      return null;\n    }\n    return hostFiber.stateNode;\n  }\n\n  return {\n    createContainer: function (containerInfo, isAsync, hydrate) {\n      return createFiberRoot(containerInfo, isAsync, hydrate);\n    },\n    updateContainer: function (element, container, parentComponent, callback) {\n      var current = container.current;\n      var currentTime = recalculateCurrentTime();\n      var expirationTime = computeExpirationForFiber(current);\n      return updateContainerAtExpirationTime(element, container, parentComponent, currentTime, expirationTime, callback);\n    },\n    updateContainerAtExpirationTime: function (element, container, parentComponent, expirationTime, callback) {\n      var currentTime = recalculateCurrentTime();\n      return updateContainerAtExpirationTime(element, container, parentComponent, currentTime, expirationTime, callback);\n    },\n\n\n    flushRoot: flushRoot,\n\n    requestWork: requestWork,\n\n    computeUniqueAsyncExpiration: computeUniqueAsyncExpiration,\n\n    batchedUpdates: batchedUpdates,\n\n    unbatchedUpdates: unbatchedUpdates,\n\n    deferredUpdates: deferredUpdates,\n\n    syncUpdates: syncUpdates,\n\n    interactiveUpdates: interactiveUpdates,\n\n    flushInteractiveUpdates: flushInteractiveUpdates,\n\n    flushControlled: flushControlled,\n\n    flushSync: flushSync,\n\n    getPublicRootInstance: function (container) {\n      var containerFiber = container.current;\n      if (!containerFiber.child) {\n        return null;\n      }\n      switch (containerFiber.child.tag) {\n        case HostComponent:\n          return getPublicInstance(containerFiber.child.stateNode);\n        default:\n          return containerFiber.child.stateNode;\n      }\n    },\n\n\n    findHostInstance: findHostInstance,\n\n    findHostInstanceWithNoPortals: function (fiber) {\n      var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n      if (hostFiber === null) {\n        return null;\n      }\n      return hostFiber.stateNode;\n    },\n    injectIntoDevTools: function (devToolsConfig) {\n      var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n\n      return injectInternals(_assign({}, devToolsConfig, {\n        findHostInstanceByFiber: function (fiber) {\n          var hostFiber = findCurrentHostFiber(fiber);\n          if (hostFiber === null) {\n            return null;\n          }\n          return hostFiber.stateNode;\n        },\n        findFiberByHostInstance: function (instance) {\n          if (!findFiberByHostInstance) {\n            // Might not be implemented by the renderer.\n            return null;\n          }\n          return findFiberByHostInstance(instance);\n        }\n      }));\n    }\n  };\n};\n\nvar ReactFiberReconciler$2 = Object.freeze({\n\tdefault: ReactFiberReconciler$1\n});\n\nvar ReactFiberReconciler$3 = ( ReactFiberReconciler$2 && ReactFiberReconciler$1 ) || ReactFiberReconciler$2;\n\n// TODO: bundle Flow types with the package.\n\n\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar reactReconciler = ReactFiberReconciler$3['default'] ? ReactFiberReconciler$3['default'] : ReactFiberReconciler$3;\n\nfunction createPortal$1(children, containerInfo,\n// TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  return {\n    // This tag allow us to uniquely identify this as a React Portal\n    $$typeof: REACT_PORTAL_TYPE,\n    key: key == null ? null : '' + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.3.2';\n\n// a requestAnimationFrame, storing the time for the start of the frame, then\n// scheduling a postMessage which gets scheduled after paint. Within the\n// postMessage handler do as much work as possible until time + frame rate.\n// By separating the idle call into a separate event tick we ensure that\n// layout, paint and other browser work is counted against the available time.\n// The frame rate is dynamically adjusted.\n\n{\n  if (ExecutionEnvironment.canUseDOM && typeof requestAnimationFrame !== 'function') {\n    warning(false, 'React depends on requestAnimationFrame. Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n  }\n}\n\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nvar now = void 0;\nif (hasNativePerformanceNow) {\n  now = function () {\n    return performance.now();\n  };\n} else {\n  now = function () {\n    return Date.now();\n  };\n}\n\n// TODO: There's no way to cancel, because Fiber doesn't atm.\nvar rIC = void 0;\nvar cIC = void 0;\n\nif (!ExecutionEnvironment.canUseDOM) {\n  rIC = function (frameCallback) {\n    return setTimeout(function () {\n      frameCallback({\n        timeRemaining: function () {\n          return Infinity;\n        },\n\n        didTimeout: false\n      });\n    });\n  };\n  cIC = function (timeoutID) {\n    clearTimeout(timeoutID);\n  };\n} else if (alwaysUseRequestIdleCallbackPolyfill || typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {\n  // Polyfill requestIdleCallback and cancelIdleCallback\n\n  var scheduledRICCallback = null;\n  var isIdleScheduled = false;\n  var timeoutTime = -1;\n\n  var isAnimationFrameScheduled = false;\n\n  var frameDeadline = 0;\n  // We start out assuming that we run at 30fps but then the heuristic tracking\n  // will adjust this value to a faster fps if we get more frequent animation\n  // frames.\n  var previousFrameTime = 33;\n  var activeFrameTime = 33;\n\n  var frameDeadlineObject = void 0;\n  if (hasNativePerformanceNow) {\n    frameDeadlineObject = {\n      didTimeout: false,\n      timeRemaining: function () {\n        // We assume that if we have a performance timer that the rAF callback\n        // gets a performance timer value. Not sure if this is always true.\n        var remaining = frameDeadline - performance.now();\n        return remaining > 0 ? remaining : 0;\n      }\n    };\n  } else {\n    frameDeadlineObject = {\n      didTimeout: false,\n      timeRemaining: function () {\n        // Fallback to Date.now()\n        var remaining = frameDeadline - Date.now();\n        return remaining > 0 ? remaining : 0;\n      }\n    };\n  }\n\n  // We use the postMessage trick to defer idle work until after the repaint.\n  var messageKey = '__reactIdleCallback$' + Math.random().toString(36).slice(2);\n  var idleTick = function (event) {\n    if (event.source !== window || event.data !== messageKey) {\n      return;\n    }\n\n    isIdleScheduled = false;\n\n    var currentTime = now();\n    if (frameDeadline - currentTime <= 0) {\n      // There's no time left in this idle period. Check if the callback has\n      // a timeout and whether it's been exceeded.\n      if (timeoutTime !== -1 && timeoutTime <= currentTime) {\n        // Exceeded the timeout. Invoke the callback even though there's no\n        // time left.\n        frameDeadlineObject.didTimeout = true;\n      } else {\n        // No timeout.\n        if (!isAnimationFrameScheduled) {\n          // Schedule another animation callback so we retry later.\n          isAnimationFrameScheduled = true;\n          requestAnimationFrame(animationTick);\n        }\n        // Exit without invoking the callback.\n        return;\n      }\n    } else {\n      // There's still time left in this idle period.\n      frameDeadlineObject.didTimeout = false;\n    }\n\n    timeoutTime = -1;\n    var callback = scheduledRICCallback;\n    scheduledRICCallback = null;\n    if (callback !== null) {\n      callback(frameDeadlineObject);\n    }\n  };\n  // Assumes that we have addEventListener in this environment. Might need\n  // something better for old IE.\n  window.addEventListener('message', idleTick, false);\n\n  var animationTick = function (rafTime) {\n    isAnimationFrameScheduled = false;\n    var nextFrameTime = rafTime - frameDeadline + activeFrameTime;\n    if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) {\n      if (nextFrameTime < 8) {\n        // Defensive coding. We don't support higher frame rates than 120hz.\n        // If we get lower than that, it is probably a bug.\n        nextFrameTime = 8;\n      }\n      // If one frame goes long, then the next one can be short to catch up.\n      // If two frames are short in a row, then that's an indication that we\n      // actually have a higher frame rate than what we're currently optimizing.\n      // We adjust our heuristic dynamically accordingly. For example, if we're\n      // running on 120hz display or 90hz VR display.\n      // Take the max of the two in case one of them was an anomaly due to\n      // missed frame deadlines.\n      activeFrameTime = nextFrameTime < previousFrameTime ? previousFrameTime : nextFrameTime;\n    } else {\n      previousFrameTime = nextFrameTime;\n    }\n    frameDeadline = rafTime + activeFrameTime;\n    if (!isIdleScheduled) {\n      isIdleScheduled = true;\n      window.postMessage(messageKey, '*');\n    }\n  };\n\n  rIC = function (callback, options) {\n    // This assumes that we only schedule one callback at a time because that's\n    // how Fiber uses it.\n    scheduledRICCallback = callback;\n    if (options != null && typeof options.timeout === 'number') {\n      timeoutTime = now() + options.timeout;\n    }\n    if (!isAnimationFrameScheduled) {\n      // If rAF didn't already schedule one, we need to schedule a frame.\n      // TODO: If this rAF doesn't materialize because the browser throttles, we\n      // might want to still have setTimeout trigger rIC as a backup to ensure\n      // that we keep performing work.\n      isAnimationFrameScheduled = true;\n      requestAnimationFrame(animationTick);\n    }\n    return 0;\n  };\n\n  cIC = function () {\n    scheduledRICCallback = null;\n    isIdleScheduled = false;\n    timeoutTime = -1;\n  };\n} else {\n  rIC = window.requestIdleCallback;\n  cIC = window.cancelIdleCallback;\n}\n\nvar didWarnSelectedSetOnOption = false;\n\nfunction flattenChildren(children) {\n  var content = '';\n\n  // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n  // We can silently skip them because invalid DOM nesting warning\n  // catches these cases in Fiber.\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n    if (typeof child === 'string' || typeof child === 'number') {\n      content += child;\n    }\n  });\n\n  return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\n\nfunction validateProps(element, props) {\n  // TODO (yungsters): Remove support for `selected` in <option>.\n  {\n    if (props.selected != null && !didWarnSelectedSetOnOption) {\n      warning(false, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n      didWarnSelectedSetOnOption = true;\n    }\n  }\n}\n\nfunction postMountWrapper$1(element, props) {\n  // value=\"\" should make a value attribute (#6219)\n  if (props.value != null) {\n    element.setAttribute('value', props.value);\n  }\n}\n\nfunction getHostProps$1(element, props) {\n  var hostProps = _assign({ children: undefined }, props);\n  var content = flattenChildren(props.children);\n\n  if (content) {\n    hostProps.children = content;\n  }\n\n  return hostProps;\n}\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar getCurrentFiberOwnerName$3 = ReactDebugCurrentFiber.getCurrentFiberOwnerName;\nvar getCurrentFiberStackAddendum$4 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\n\nvar didWarnValueDefaultValue$1 = void 0;\n\n{\n  didWarnValueDefaultValue$1 = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  var ownerName = getCurrentFiberOwnerName$3();\n  if (ownerName) {\n    return '\\n\\nCheck the render method of `' + ownerName + '`.';\n  }\n  return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n */\nfunction checkSelectPropTypes(props) {\n  ReactControlledValuePropTypes.checkPropTypes('select', props, getCurrentFiberStackAddendum$4);\n\n  for (var i = 0; i < valuePropNames.length; i++) {\n    var propName = valuePropNames[i];\n    if (props[propName] == null) {\n      continue;\n    }\n    var isArray = Array.isArray(props[propName]);\n    if (props.multiple && !isArray) {\n      warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n    } else if (!props.multiple && isArray) {\n      warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n    }\n  }\n}\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  var options = node.options;\n\n  if (multiple) {\n    var selectedValues = propValue;\n    var selectedValue = {};\n    for (var i = 0; i < selectedValues.length; i++) {\n      // Prefix to avoid chaos with special keys.\n      selectedValue['$' + selectedValues[i]] = true;\n    }\n    for (var _i = 0; _i < options.length; _i++) {\n      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n      if (options[_i].selected !== selected) {\n        options[_i].selected = selected;\n      }\n      if (selected && setDefaultSelected) {\n        options[_i].defaultSelected = true;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn't consistent across all\n    // browsers for all cases.\n    var _selectedValue = '' + propValue;\n    var defaultSelected = null;\n    for (var _i2 = 0; _i2 < options.length; _i2++) {\n      if (options[_i2].value === _selectedValue) {\n        options[_i2].selected = true;\n        if (setDefaultSelected) {\n          options[_i2].defaultSelected = true;\n        }\n        return;\n      }\n      if (defaultSelected === null && !options[_i2].disabled) {\n        defaultSelected = options[_i2];\n      }\n    }\n    if (defaultSelected !== null) {\n      defaultSelected.selected = true;\n    }\n  }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\nfunction getHostProps$2(element, props) {\n  return _assign({}, props, {\n    value: undefined\n  });\n}\n\nfunction initWrapperState$1(element, props) {\n  var node = element;\n  {\n    checkSelectPropTypes(props);\n  }\n\n  var value = props.value;\n  node._wrapperState = {\n    initialValue: value != null ? value : props.defaultValue,\n    wasMultiple: !!props.multiple\n  };\n\n  {\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n      warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');\n      didWarnValueDefaultValue$1 = true;\n    }\n  }\n}\n\nfunction postMountWrapper$2(element, props) {\n  var node = element;\n  node.multiple = !!props.multiple;\n  var value = props.value;\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (props.defaultValue != null) {\n    updateOptions(node, !!props.multiple, props.defaultValue, true);\n  }\n}\n\nfunction postUpdateWrapper(element, props) {\n  var node = element;\n  // After the initial mount, we control selected-ness manually so don't pass\n  // this value down\n  node._wrapperState.initialValue = undefined;\n\n  var wasMultiple = node._wrapperState.wasMultiple;\n  node._wrapperState.wasMultiple = !!props.multiple;\n\n  var value = props.value;\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (wasMultiple !== !!props.multiple) {\n    // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n    if (props.defaultValue != null) {\n      updateOptions(node, !!props.multiple, props.defaultValue, true);\n    } else {\n      // Revert the select back to its default unselected state.\n      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);\n    }\n  }\n}\n\nfunction restoreControlledState$2(element, props) {\n  var node = element;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  }\n}\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar getCurrentFiberStackAddendum$5 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\n\nfunction getHostProps$3(element, props) {\n  var node = element;\n  !(props.dangerouslySetInnerHTML == null) ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : void 0;\n\n  // Always set children to the same thing. In IE9, the selection range will\n  // get reset if `textContent` is mutated.  We could add a check in setTextContent\n  // to only set the value if/when the value differs from the node value (which would\n  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n  // solution. The value can be a boolean or object so that's why it's forced\n  // to be a string.\n  var hostProps = _assign({}, props, {\n    value: undefined,\n    defaultValue: undefined,\n    children: '' + node._wrapperState.initialValue\n  });\n\n  return hostProps;\n}\n\nfunction initWrapperState$2(element, props) {\n  var node = element;\n  {\n    ReactControlledValuePropTypes.checkPropTypes('textarea', props, getCurrentFiberStackAddendum$5);\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n      warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');\n      didWarnValDefaultVal = true;\n    }\n  }\n\n  var initialValue = props.value;\n\n  // Only bother fetching default value if we're going to use it\n  if (initialValue == null) {\n    var defaultValue = props.defaultValue;\n    // TODO (yungsters): Remove support for children content in <textarea>.\n    var children = props.children;\n    if (children != null) {\n      {\n        warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n      }\n      !(defaultValue == null) ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : void 0;\n      if (Array.isArray(children)) {\n        !(children.length <= 1) ? invariant(false, '<textarea> can only have at most one child.') : void 0;\n        children = children[0];\n      }\n\n      defaultValue = '' + children;\n    }\n    if (defaultValue == null) {\n      defaultValue = '';\n    }\n    initialValue = defaultValue;\n  }\n\n  node._wrapperState = {\n    initialValue: '' + initialValue\n  };\n}\n\nfunction updateWrapper$1(element, props) {\n  var node = element;\n  var value = props.value;\n  if (value != null) {\n    // Cast `value` to a string to ensure the value is set correctly. While\n    // browsers typically do this as necessary, jsdom doesn't.\n    var newValue = '' + value;\n\n    // To avoid side effects (such as losing text selection), only set value if changed\n    if (newValue !== node.value) {\n      node.value = newValue;\n    }\n    if (props.defaultValue == null) {\n      node.defaultValue = newValue;\n    }\n  }\n  if (props.defaultValue != null) {\n    node.defaultValue = props.defaultValue;\n  }\n}\n\nfunction postMountWrapper$3(element, props) {\n  var node = element;\n  // This is in postMount because we need access to the DOM node, which is not\n  // available until after the component has mounted.\n  var textContent = node.textContent;\n\n  // Only set node.value if textContent is equal to the expected\n  // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n  // will populate textContent as well.\n  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n  if (textContent === node._wrapperState.initialValue) {\n    node.value = textContent;\n  }\n}\n\nfunction restoreControlledState$3(element, props) {\n  // DOM component is still mounted; update\n  updateWrapper$1(element, props);\n}\n\nvar HTML_NAMESPACE$1 = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nvar Namespaces = {\n  html: HTML_NAMESPACE$1,\n  mathml: MATH_NAMESPACE,\n  svg: SVG_NAMESPACE\n};\n\n// Assumes there is no parent namespace.\nfunction getIntrinsicNamespace(type) {\n  switch (type) {\n    case 'svg':\n      return SVG_NAMESPACE;\n    case 'math':\n      return MATH_NAMESPACE;\n    default:\n      return HTML_NAMESPACE$1;\n  }\n}\n\nfunction getChildNamespace(parentNamespace, type) {\n  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE$1) {\n    // No (or default) parent namespace: potential entry point.\n    return getIntrinsicNamespace(type);\n  }\n  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n    // We're leaving SVG.\n    return HTML_NAMESPACE$1;\n  }\n  // By default, pass namespace below.\n  return parentNamespace;\n}\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer = void 0;\n\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n  // IE does not have innerHTML for SVG nodes, so instead we inject the\n  // new markup in a temp node and then move the child nodes across into\n  // the target node\n\n  if (node.namespaceURI === Namespaces.svg && !('innerHTML' in node)) {\n    reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n    reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n    var svgNode = reusableSVGContainer.firstChild;\n    while (node.firstChild) {\n      node.removeChild(node.firstChild);\n    }\n    while (svgNode.firstChild) {\n      node.appendChild(svgNode.firstChild);\n    }\n  } else {\n    node.innerHTML = html;\n  }\n});\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  // Note that we've removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn't repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we're going to\n  // trust URLs moving forward. See #2115901\n\n  var isEmpty = value == null || typeof value === 'boolean' || value === '';\n  if (isEmpty) {\n    return '';\n  }\n\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  return ('' + value).trim();\n}\n\nvar warnValidStyle = emptyFunction;\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n  // style values shouldn't contain a semicolon\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var warnHyphenatedStyleName = function (name, getStack) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), getStack());\n  };\n\n  var warnBadVendoredStyleName = function (name, getStack) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), getStack());\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value, getStack) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n    warning(false, \"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.%s', name, value.replace(badStyleValueWithSemicolonPattern, ''), getStack());\n  };\n\n  var warnStyleValueIsNaN = function (name, value, getStack) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n    warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, getStack());\n  };\n\n  var warnStyleValueIsInfinity = function (name, value, getStack) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n    warning(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, getStack());\n  };\n\n  warnValidStyle = function (name, value, getStack) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name, getStack);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name, getStack);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value, getStack);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value, getStack);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value, getStack);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n/**\n * Operations for dealing with CSS properties.\n */\n\n/**\n * This creates a string that is expected to be equivalent to the style\n * attribute generated by server-side rendering. It by-passes warnings and\n * security checks so it's not safe to use this value for anything other than\n * comparison. It is only used in DEV for SSR validation.\n */\nfunction createDangerousStringForStyles(styles) {\n  {\n    var serialized = '';\n    var delimiter = '';\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n      var styleValue = styles[styleName];\n      if (styleValue != null) {\n        var isCustomProperty = styleName.indexOf('--') === 0;\n        serialized += delimiter + hyphenateStyleName(styleName) + ':';\n        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n\n        delimiter = ';';\n      }\n    }\n    return serialized || null;\n  }\n}\n\n/**\n * Sets the value for multiple styles on a node.  If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\nfunction setValueForStyles(node, styles, getStack) {\n  var style = node.style;\n  for (var styleName in styles) {\n    if (!styles.hasOwnProperty(styleName)) {\n      continue;\n    }\n    var isCustomProperty = styleName.indexOf('--') === 0;\n    {\n      if (!isCustomProperty) {\n        warnValidStyle$1(styleName, styles[styleName], getStack);\n      }\n    }\n    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n    if (styleName === 'float') {\n      styleName = 'cssFloat';\n    }\n    if (isCustomProperty) {\n      style.setProperty(styleName, styleValue);\n    } else {\n      style[styleName] = styleValue;\n    }\n  }\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n  menuitem: true\n}, omittedCloseTags);\n\nvar HTML$1 = '__html';\n\nfunction assertValidProps(tag, props, getStack) {\n  if (!props) {\n    return;\n  }\n  // Note the use of `==` which checks for null or undefined.\n  if (voidElementTags[tag]) {\n    !(props.children == null && props.dangerouslySetInnerHTML == null) ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', tag, getStack()) : void 0;\n  }\n  if (props.dangerouslySetInnerHTML != null) {\n    !(props.children == null) ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : void 0;\n    !(typeof props.dangerouslySetInnerHTML === 'object' && HTML$1 in props.dangerouslySetInnerHTML) ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : void 0;\n  }\n  {\n    !(props.suppressContentEditableWarning || !props.contentEditable || props.children == null) ? warning(false, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.%s', getStack()) : void 0;\n  }\n  !(props.style == null || typeof props.style === 'object') ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getStack()) : void 0;\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this whitelist too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n    default:\n      return true;\n  }\n}\n\n// When adding attributes to the HTML or SVG whitelist, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  'class': 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  'default': 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  'for': 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  'in': 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  'typeof': 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar ariaProperties = {\n  'aria-current': 0, // state\n  'aria-details': 0,\n  'aria-disabled': 0, // state\n  'aria-hidden': 0, // state\n  'aria-invalid': 0, // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction getStackAddendum() {\n  var stack = ReactDebugCurrentFrame.getStackAddendum();\n  return stack != null ? stack : '';\n}\n\nfunction validateProperty(tagName, name) {\n  if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n    return true;\n  }\n\n  if (rARIACamel.test(name)) {\n    var ariaName = 'aria-' + name.slice(4).toLowerCase();\n    var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null;\n\n    // If this is an aria-* attribute, but is not listed in the known DOM\n    // DOM properties, then it is an invalid aria-* attribute.\n    if (correctName == null) {\n      warning(false, 'Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.%s', name, getStackAddendum());\n      warnedProperties[name] = true;\n      return true;\n    }\n    // aria-* attributes should be lowercase; suggest the lowercase version.\n    if (name !== correctName) {\n      warning(false, 'Invalid ARIA attribute `%s`. Did you mean `%s`?%s', name, correctName, getStackAddendum());\n      warnedProperties[name] = true;\n      return true;\n    }\n  }\n\n  if (rARIA.test(name)) {\n    var lowerCasedName = name.toLowerCase();\n    var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null;\n\n    // If this is an aria-* attribute, but is not listed in the known DOM\n    // DOM properties, then it is an invalid aria-* attribute.\n    if (standardName == null) {\n      warnedProperties[name] = true;\n      return false;\n    }\n    // aria-* attributes should be lowercase; suggest the lowercase version.\n    if (name !== standardName) {\n      warning(false, 'Unknown ARIA attribute `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum());\n      warnedProperties[name] = true;\n      return true;\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  var invalidProps = [];\n\n  for (var key in props) {\n    var isValid = validateProperty(type, key);\n    if (!isValid) {\n      invalidProps.push(key);\n    }\n  }\n\n  var unknownPropString = invalidProps.map(function (prop) {\n    return '`' + prop + '`';\n  }).join(', ');\n\n  if (invalidProps.length === 1) {\n    warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());\n  } else if (invalidProps.length > 1) {\n    warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\n\nfunction getStackAddendum$1() {\n  var stack = ReactDebugCurrentFrame.getStackAddendum();\n  return stack != null ? stack : '';\n}\n\nfunction validateProperties$1(type, props) {\n  if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n    return;\n  }\n\n  if (props != null && props.value === null && !didWarnValueNull) {\n    didWarnValueNull = true;\n    if (type === 'select' && props.multiple) {\n      warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.%s', type, getStackAddendum$1());\n    } else {\n      warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', type, getStackAddendum$1());\n    }\n  }\n}\n\nfunction getStackAddendum$2() {\n  var stack = ReactDebugCurrentFrame.getStackAddendum();\n  return stack != null ? stack : '';\n}\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var _hasOwnProperty = Object.prototype.hasOwnProperty;\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, canUseEventSystem) {\n    if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      warning(false, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    // We can't rely on the event system being injected on the server.\n    if (canUseEventSystem) {\n      if (registrationNameModules.hasOwnProperty(name)) {\n        return true;\n      }\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n      if (registrationName != null) {\n        warning(false, 'Invalid event handler property `%s`. Did you mean `%s`?%s', name, registrationName, getStackAddendum$2());\n        warnedProperties$1[name] = true;\n        return true;\n      }\n      if (EVENT_NAME_REGEX.test(name)) {\n        warning(false, 'Unknown event handler property `%s`. It will be ignored.%s', name, getStackAddendum$2());\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        warning(false, 'Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.%s', name, getStackAddendum$2());\n      }\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    // Let the ARIA attribute hook validate ARIA attributes\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      warning(false, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      warning(false, 'The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      warning(false, 'Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.%s', typeof value, getStackAddendum$2());\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      warning(false, 'Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.%s', name, getStackAddendum$2());\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED;\n\n    // Known attributes should match the casing specified in the property config.\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n      if (standardName !== name) {\n        warning(false, 'Invalid DOM property `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$2());\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      warning(false, 'React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.%s', name, lowerCasedName, getStackAddendum$2());\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        warning(false, 'Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.%s', value, name, name, value, name, getStackAddendum$2());\n      } else {\n        warning(false, 'Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', value, name, name, value, name, name, name, getStackAddendum$2());\n      }\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    // Now that we've validated casing, do not validate\n    // data types for reserved props\n    if (isReserved) {\n      return true;\n    }\n\n    // Warn when a known attribute is a bad type\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, canUseEventSystem) {\n  var unknownProps = [];\n  for (var key in props) {\n    var isValid = validateProperty$1(type, key, props[key], canUseEventSystem);\n    if (!isValid) {\n      unknownProps.push(key);\n    }\n  }\n\n  var unknownPropString = unknownProps.map(function (prop) {\n    return '`' + prop + '`';\n  }).join(', ');\n  if (unknownProps.length === 1) {\n    warning(false, 'Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());\n  } else if (unknownProps.length > 1) {\n    warning(false, 'Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());\n  }\n};\n\nfunction validateProperties$2(type, props, canUseEventSystem) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n  warnUnknownProperties(type, props, canUseEventSystem);\n}\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar getCurrentFiberOwnerName$2 = ReactDebugCurrentFiber.getCurrentFiberOwnerName;\nvar getCurrentFiberStackAddendum$3 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\nvar didWarnInvalidHydration = false;\nvar didWarnShadyDOM = false;\n\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\nvar AUTOFOCUS = 'autoFocus';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML = '__html';\n\nvar HTML_NAMESPACE = Namespaces.html;\n\n\nvar getStack = emptyFunction.thatReturns('');\n\nvar warnedUnknownTags = void 0;\nvar suppressHydrationWarning = void 0;\n\nvar validatePropertiesInDevelopment = void 0;\nvar warnForTextDifference = void 0;\nvar warnForPropDifference = void 0;\nvar warnForExtraAttributes = void 0;\nvar warnForInvalidEventListener = void 0;\n\nvar normalizeMarkupForTextOrAttribute = void 0;\nvar normalizeHTML = void 0;\n\n{\n  getStack = getCurrentFiberStackAddendum$3;\n\n  warnedUnknownTags = {\n    // Chrome is the only major browser not shipping <time>. But as of July\n    // 2017 it intends to ship it due to widespread usage. We intentionally\n    // *don't* warn for <time> even if it's unrecognized by Chrome because\n    // it soon will be, and many apps have been using it anyway.\n    time: true,\n    // There are working polyfills for <dialog>. Let people use it.\n    dialog: true\n  };\n\n  validatePropertiesInDevelopment = function (type, props) {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, /* canUseEventSystem */true);\n  };\n\n  // HTML parsing normalizes CR and CRLF to LF.\n  // It also can turn \\u0000 into \\uFFFD inside attributes.\n  // https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n  // If we have a mismatch, it might be caused by that.\n  // We will still patch up in this case but not fire the warning.\n  var NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\n  var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\n  normalizeMarkupForTextOrAttribute = function (markup) {\n    var markupString = typeof markup === 'string' ? markup : '' + markup;\n    return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n  };\n\n  warnForTextDifference = function (serverText, clientText) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n    var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n    if (normalizedServerText === normalizedClientText) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n  };\n\n  warnForPropDifference = function (propName, serverValue, clientValue) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n    if (normalizedServerValue === normalizedClientValue) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n  };\n\n  warnForExtraAttributes = function (attributeNames) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    var names = [];\n    attributeNames.forEach(function (name) {\n      names.push(name);\n    });\n    warning(false, 'Extra attributes from the server: %s', names);\n  };\n\n  warnForInvalidEventListener = function (registrationName, listener) {\n    if (listener === false) {\n      warning(false, 'Expected `%s` listener to be a function, instead got `false`.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', registrationName, registrationName, registrationName, getCurrentFiberStackAddendum$3());\n    } else {\n      warning(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.%s', registrationName, typeof listener, getCurrentFiberStackAddendum$3());\n    }\n  };\n\n  // Parse the HTML and read it back to normalize the HTML string so that it\n  // can be used for comparison.\n  normalizeHTML = function (parent, html) {\n    // We could have created a separate document here to avoid\n    // re-initializing custom elements if they exist. But this breaks\n    // how <noscript> is being handled. So we use the same document.\n    // See the discussion in https://github.com/facebook/react/pull/11157.\n    var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n    testElement.innerHTML = html;\n    return testElement.innerHTML;\n  };\n}\n\nfunction ensureListeningTo(rootContainerElement, registrationName) {\n  var isDocumentOrFragment = rootContainerElement.nodeType === DOCUMENT_NODE || rootContainerElement.nodeType === DOCUMENT_FRAGMENT_NODE;\n  var doc = isDocumentOrFragment ? rootContainerElement : rootContainerElement.ownerDocument;\n  listenTo(registrationName, doc);\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction trapClickOnNonInteractiveElement(node) {\n  // Mobile Safari does not fire properly bubble click events on\n  // non-interactive elements, which means delegated click listeners do not\n  // fire. The workaround for this bug involves attaching an empty click\n  // listener on the target node.\n  // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n  // Just set it using the onclick property so that we don't have to manage any\n  // bookkeeping for it. Not sure if we need to clear it when the listener is\n  // removed.\n  // TODO: Only do this for the relevant Safaris maybe?\n  node.onclick = emptyFunction;\n}\n\nfunction setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n  for (var propKey in nextProps) {\n    if (!nextProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n    var nextProp = nextProps[propKey];\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n      // Relies on `updateStylesByID` not mutating `styleUpdates`.\n      setValueForStyles(domElement, nextProp, getStack);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML] : undefined;\n      if (nextHtml != null) {\n        setInnerHTML(domElement, nextHtml);\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string') {\n        // Avoid setting initial textContent when the text is empty. In IE11 setting\n        // textContent on a <textarea> will cause the placeholder to not\n        // show within the <textarea> until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        var canSetTextContent = tag !== 'textarea' || nextProp !== '';\n        if (canSetTextContent) {\n          setTextContent(domElement, nextProp);\n        }\n      } else if (typeof nextProp === 'number') {\n        setTextContent(domElement, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING$1) {\n      // Noop\n    } else if (propKey === AUTOFOCUS) {\n      // We polyfill it separately on the client during commit.\n      // We blacklist it here rather than in the property list because we emit it in SSR.\n    } else if (registrationNameModules.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if (true && typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n        ensureListeningTo(rootContainerElement, propKey);\n      }\n    } else if (nextProp != null) {\n      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n    }\n  }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n  // TODO: Handle wasCustomComponentTag\n  for (var i = 0; i < updatePayload.length; i += 2) {\n    var propKey = updatePayload[i];\n    var propValue = updatePayload[i + 1];\n    if (propKey === STYLE) {\n      setValueForStyles(domElement, propValue, getStack);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      setInnerHTML(domElement, propValue);\n    } else if (propKey === CHILDREN) {\n      setTextContent(domElement, propValue);\n    } else {\n      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n    }\n  }\n}\n\nfunction createElement$1(type, props, rootContainerElement, parentNamespace) {\n  var isCustomComponentTag = void 0;\n\n  // We create tags in the namespace of their parent container, except HTML\n  // tags get no namespace.\n  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n  var domElement = void 0;\n  var namespaceURI = parentNamespace;\n  if (namespaceURI === HTML_NAMESPACE) {\n    namespaceURI = getIntrinsicNamespace(type);\n  }\n  if (namespaceURI === HTML_NAMESPACE) {\n    {\n      isCustomComponentTag = isCustomComponent(type, props);\n      // Should this check be gated by parent namespace? Not sure we want to\n      // allow <SVG> or <mATH>.\n      !(isCustomComponentTag || type === type.toLowerCase()) ? warning(false, '<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type) : void 0;\n    }\n\n    if (type === 'script') {\n      // Create the script via .innerHTML so its \"parser-inserted\" flag is\n      // set to true and it does not execute\n      var div = ownerDocument.createElement('div');\n      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n      // This is guaranteed to yield a script element.\n      var firstChild = div.firstChild;\n      domElement = div.removeChild(firstChild);\n    } else if (typeof props.is === 'string') {\n      // $FlowIssue `createElement` should be updated for Web Components\n      domElement = ownerDocument.createElement(type, { is: props.is });\n    } else {\n      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n      // See discussion in https://github.com/facebook/react/pull/6896\n      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n      domElement = ownerDocument.createElement(type);\n    }\n  } else {\n    domElement = ownerDocument.createElementNS(namespaceURI, type);\n  }\n\n  {\n    if (namespaceURI === HTML_NAMESPACE) {\n      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {\n        warnedUnknownTags[type] = true;\n        warning(false, 'The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n      }\n    }\n  }\n\n  return domElement;\n}\n\nfunction createTextNode$1(text, rootContainerElement) {\n  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n}\n\nfunction setInitialProperties$1(domElement, tag, rawProps, rootContainerElement) {\n  var isCustomComponentTag = isCustomComponent(tag, rawProps);\n  {\n    validatePropertiesInDevelopment(tag, rawProps);\n    if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {\n      warning(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$2() || 'A component');\n      didWarnShadyDOM = true;\n    }\n  }\n\n  // TODO: Make sure that we check isMounted before firing any of these events.\n  var props = void 0;\n  switch (tag) {\n    case 'iframe':\n    case 'object':\n      trapBubbledEvent('topLoad', 'load', domElement);\n      props = rawProps;\n      break;\n    case 'video':\n    case 'audio':\n      // Create listener for each media event\n      for (var event in mediaEventTypes) {\n        if (mediaEventTypes.hasOwnProperty(event)) {\n          trapBubbledEvent(event, mediaEventTypes[event], domElement);\n        }\n      }\n      props = rawProps;\n      break;\n    case 'source':\n      trapBubbledEvent('topError', 'error', domElement);\n      props = rawProps;\n      break;\n    case 'img':\n    case 'image':\n    case 'link':\n      trapBubbledEvent('topError', 'error', domElement);\n      trapBubbledEvent('topLoad', 'load', domElement);\n      props = rawProps;\n      break;\n    case 'form':\n      trapBubbledEvent('topReset', 'reset', domElement);\n      trapBubbledEvent('topSubmit', 'submit', domElement);\n      props = rawProps;\n      break;\n    case 'details':\n      trapBubbledEvent('topToggle', 'toggle', domElement);\n      props = rawProps;\n      break;\n    case 'input':\n      initWrapperState(domElement, rawProps);\n      props = getHostProps(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n    case 'option':\n      validateProps(domElement, rawProps);\n      props = getHostProps$1(domElement, rawProps);\n      break;\n    case 'select':\n      initWrapperState$1(domElement, rawProps);\n      props = getHostProps$2(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps);\n      props = getHostProps$3(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n    default:\n      props = rawProps;\n  }\n\n  assertValidProps(tag, props, getStack);\n\n  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps);\n      break;\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement, rawProps);\n      break;\n    case 'option':\n      postMountWrapper$1(domElement, rawProps);\n      break;\n    case 'select':\n      postMountWrapper$2(domElement, rawProps);\n      break;\n    default:\n      if (typeof props.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n      break;\n  }\n}\n\n// Calculate the diff between the two objects.\nfunction diffProperties$1(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n  {\n    validatePropertiesInDevelopment(tag, nextRawProps);\n  }\n\n  var updatePayload = null;\n\n  var lastProps = void 0;\n  var nextProps = void 0;\n  switch (tag) {\n    case 'input':\n      lastProps = getHostProps(domElement, lastRawProps);\n      nextProps = getHostProps(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n    case 'option':\n      lastProps = getHostProps$1(domElement, lastRawProps);\n      nextProps = getHostProps$1(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n    case 'select':\n      lastProps = getHostProps$2(domElement, lastRawProps);\n      nextProps = getHostProps$2(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n    case 'textarea':\n      lastProps = getHostProps$3(domElement, lastRawProps);\n      nextProps = getHostProps$3(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n    default:\n      lastProps = lastRawProps;\n      nextProps = nextRawProps;\n      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n      break;\n  }\n\n  assertValidProps(tag, nextProps, getStack);\n\n  var propKey = void 0;\n  var styleName = void 0;\n  var styleUpdates = null;\n  for (propKey in lastProps) {\n    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n      continue;\n    }\n    if (propKey === STYLE) {\n      var lastStyle = lastProps[propKey];\n      for (styleName in lastStyle) {\n        if (lastStyle.hasOwnProperty(styleName)) {\n          if (!styleUpdates) {\n            styleUpdates = {};\n          }\n          styleUpdates[styleName] = '';\n        }\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) {\n      // Noop. This is handled by the clear text mechanism.\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING$1) {\n      // Noop\n    } else if (propKey === AUTOFOCUS) {\n      // Noop. It doesn't work on updates anyway.\n    } else if (registrationNameModules.hasOwnProperty(propKey)) {\n      // This is a special case. If any listener updates we need to ensure\n      // that the \"current\" fiber pointer gets updated so we need a commit\n      // to update this element.\n      if (!updatePayload) {\n        updatePayload = [];\n      }\n    } else {\n      // For all other deleted properties we add it to the queue. We use\n      // the whitelist in the commit phase instead.\n      (updatePayload = updatePayload || []).push(propKey, null);\n    }\n  }\n  for (propKey in nextProps) {\n    var nextProp = nextProps[propKey];\n    var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n      continue;\n    }\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n      if (lastProp) {\n        // Unset styles on `lastProp` but not on `nextProp`.\n        for (styleName in lastProp) {\n          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n            styleUpdates[styleName] = '';\n          }\n        }\n        // Update styles that changed since `lastProp`.\n        for (styleName in nextProp) {\n          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n            styleUpdates[styleName] = nextProp[styleName];\n          }\n        }\n      } else {\n        // Relies on `updateStylesByID` not mutating `styleUpdates`.\n        if (!styleUpdates) {\n          if (!updatePayload) {\n            updatePayload = [];\n          }\n          updatePayload.push(propKey, styleUpdates);\n        }\n        styleUpdates = nextProp;\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML] : undefined;\n      var lastHtml = lastProp ? lastProp[HTML] : undefined;\n      if (nextHtml != null) {\n        if (lastHtml !== nextHtml) {\n          (updatePayload = updatePayload || []).push(propKey, '' + nextHtml);\n        }\n      } else {\n        // TODO: It might be too late to clear this if we have children\n        // inserted already.\n      }\n    } else if (propKey === CHILDREN) {\n      if (lastProp !== nextProp && (typeof nextProp === 'string' || typeof nextProp === 'number')) {\n        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING$1) {\n      // Noop\n    } else if (registrationNameModules.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        // We eagerly listen to this even though we haven't committed yet.\n        if (true && typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n        ensureListeningTo(rootContainerElement, propKey);\n      }\n      if (!updatePayload && lastProp !== nextProp) {\n        // This is a special case. If any listener updates we need to ensure\n        // that the \"current\" props pointer gets updated so we need a commit\n        // to update this element.\n        updatePayload = [];\n      }\n    } else {\n      // For any other property we always add it to the queue and then we\n      // filter it out using the whitelist during the commit.\n      (updatePayload = updatePayload || []).push(propKey, nextProp);\n    }\n  }\n  if (styleUpdates) {\n    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n  }\n  return updatePayload;\n}\n\n// Apply the diff.\nfunction updateProperties$1(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n  // Update checked *before* name.\n  // In the middle of an update, it is possible to have multiple checked.\n  // When a checked radio tries to change name, browser makes another radio's checked false.\n  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {\n    updateChecked(domElement, nextRawProps);\n  }\n\n  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n  var isCustomComponentTag = isCustomComponent(tag, nextRawProps);\n  // Apply the diff.\n  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag);\n\n  // TODO: Ensure that an update gets scheduled if any of the special props\n  // changed.\n  switch (tag) {\n    case 'input':\n      // Update the wrapper around inputs *after* updating props. This has to\n      // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n      // raise warnings and prevent the new value from being assigned.\n      updateWrapper(domElement, nextRawProps);\n      break;\n    case 'textarea':\n      updateWrapper$1(domElement, nextRawProps);\n      break;\n    case 'select':\n      // <select> value update needs to occur after <option> children\n      // reconciliation\n      postUpdateWrapper(domElement, nextRawProps);\n      break;\n  }\n}\n\nfunction getPossibleStandardName(propName) {\n  {\n    var lowerCasedName = propName.toLowerCase();\n    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      return null;\n    }\n    return possibleStandardNames[lowerCasedName] || null;\n  }\n  return null;\n}\n\nfunction diffHydratedProperties$1(domElement, tag, rawProps, parentNamespace, rootContainerElement) {\n  var isCustomComponentTag = void 0;\n  var extraAttributeNames = void 0;\n\n  {\n    suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING$1] === true;\n    isCustomComponentTag = isCustomComponent(tag, rawProps);\n    validatePropertiesInDevelopment(tag, rawProps);\n    if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {\n      warning(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$2() || 'A component');\n      didWarnShadyDOM = true;\n    }\n  }\n\n  // TODO: Make sure that we check isMounted before firing any of these events.\n  switch (tag) {\n    case 'iframe':\n    case 'object':\n      trapBubbledEvent('topLoad', 'load', domElement);\n      break;\n    case 'video':\n    case 'audio':\n      // Create listener for each media event\n      for (var event in mediaEventTypes) {\n        if (mediaEventTypes.hasOwnProperty(event)) {\n          trapBubbledEvent(event, mediaEventTypes[event], domElement);\n        }\n      }\n      break;\n    case 'source':\n      trapBubbledEvent('topError', 'error', domElement);\n      break;\n    case 'img':\n    case 'image':\n    case 'link':\n      trapBubbledEvent('topError', 'error', domElement);\n      trapBubbledEvent('topLoad', 'load', domElement);\n      break;\n    case 'form':\n      trapBubbledEvent('topReset', 'reset', domElement);\n      trapBubbledEvent('topSubmit', 'submit', domElement);\n      break;\n    case 'details':\n      trapBubbledEvent('topToggle', 'toggle', domElement);\n      break;\n    case 'input':\n      initWrapperState(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n    case 'option':\n      validateProps(domElement, rawProps);\n      break;\n    case 'select':\n      initWrapperState$1(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps);\n      trapBubbledEvent('topInvalid', 'invalid', domElement);\n      // For controlled components we always need to ensure we're listening\n      // to onChange. Even if there is no listener.\n      ensureListeningTo(rootContainerElement, 'onChange');\n      break;\n  }\n\n  assertValidProps(tag, rawProps, getStack);\n\n  {\n    extraAttributeNames = new Set();\n    var attributes = domElement.attributes;\n    for (var i = 0; i < attributes.length; i++) {\n      var name = attributes[i].name.toLowerCase();\n      switch (name) {\n        // Built-in SSR attribute is whitelisted\n        case 'data-reactroot':\n          break;\n        // Controlled attributes are not validated\n        // TODO: Only ignore them on controlled tags.\n        case 'value':\n          break;\n        case 'checked':\n          break;\n        case 'selected':\n          break;\n        default:\n          // Intentionally use the original name.\n          // See discussion in https://github.com/facebook/react/pull/10676.\n          extraAttributeNames.add(attributes[i].name);\n      }\n    }\n  }\n\n  var updatePayload = null;\n  for (var propKey in rawProps) {\n    if (!rawProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n    var nextProp = rawProps[propKey];\n    if (propKey === CHILDREN) {\n      // For text content children we compare against textContent. This\n      // might match additional HTML that is hidden when we read it using\n      // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n      // satisfies our requirement. Our requirement is not to produce perfect\n      // HTML and attributes. Ideally we should preserve structure but it's\n      // ok not to if the visible content is still enough to indicate what\n      // even listeners these nodes might be wired up to.\n      // TODO: Warn if there is more than a single textNode as a child.\n      // TODO: Should we use domElement.firstChild.nodeValue to compare?\n      if (typeof nextProp === 'string') {\n        if (domElement.textContent !== nextProp) {\n          if (true && !suppressHydrationWarning) {\n            warnForTextDifference(domElement.textContent, nextProp);\n          }\n          updatePayload = [CHILDREN, nextProp];\n        }\n      } else if (typeof nextProp === 'number') {\n        if (domElement.textContent !== '' + nextProp) {\n          if (true && !suppressHydrationWarning) {\n            warnForTextDifference(domElement.textContent, nextProp);\n          }\n          updatePayload = [CHILDREN, '' + nextProp];\n        }\n      }\n    } else if (registrationNameModules.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if (true && typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n        ensureListeningTo(rootContainerElement, propKey);\n      }\n    } else if (true &&\n    // Convince Flow we've calculated it (it's DEV-only in this method.)\n    typeof isCustomComponentTag === 'boolean') {\n      // Validate that the properties correspond to their expected values.\n      var serverValue = void 0;\n      var propertyInfo = getPropertyInfo(propKey);\n      if (suppressHydrationWarning) {\n        // Don't bother comparing. We're ignoring all these warnings.\n      } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING$1 ||\n      // Controlled attributes are not validated\n      // TODO: Only ignore them on controlled tags.\n      propKey === 'value' || propKey === 'checked' || propKey === 'selected') {\n        // Noop\n      } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n        var rawHtml = nextProp ? nextProp[HTML] || '' : '';\n        var serverHTML = domElement.innerHTML;\n        var expectedHTML = normalizeHTML(domElement, rawHtml);\n        if (expectedHTML !== serverHTML) {\n          warnForPropDifference(propKey, serverHTML, expectedHTML);\n        }\n      } else if (propKey === STYLE) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames['delete'](propKey);\n        var expectedStyle = createDangerousStringForStyles(nextProp);\n        serverValue = domElement.getAttribute('style');\n        if (expectedStyle !== serverValue) {\n          warnForPropDifference(propKey, serverValue, expectedStyle);\n        }\n      } else if (isCustomComponentTag) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames['delete'](propKey.toLowerCase());\n        serverValue = getValueForAttribute(domElement, propKey, nextProp);\n\n        if (nextProp !== serverValue) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n        var isMismatchDueToBadCasing = false;\n        if (propertyInfo !== null) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames['delete'](propertyInfo.attributeName);\n          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n        } else {\n          var ownNamespace = parentNamespace;\n          if (ownNamespace === HTML_NAMESPACE) {\n            ownNamespace = getIntrinsicNamespace(tag);\n          }\n          if (ownNamespace === HTML_NAMESPACE) {\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames['delete'](propKey.toLowerCase());\n          } else {\n            var standardName = getPossibleStandardName(propKey);\n            if (standardName !== null && standardName !== propKey) {\n              // If an SVG prop is supplied with bad casing, it will\n              // be successfully parsed from HTML, but will produce a mismatch\n              // (and would be incorrectly rendered on the client).\n              // However, we already warn about bad casing elsewhere.\n              // So we'll skip the misleading extra mismatch warning in this case.\n              isMismatchDueToBadCasing = true;\n              // $FlowFixMe - Should be inferred as not undefined.\n              extraAttributeNames['delete'](standardName);\n            }\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames['delete'](propKey);\n          }\n          serverValue = getValueForAttribute(domElement, propKey, nextProp);\n        }\n\n        if (nextProp !== serverValue && !isMismatchDueToBadCasing) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      }\n    }\n  }\n\n  {\n    // $FlowFixMe - Should be inferred as not undefined.\n    if (extraAttributeNames.size > 0 && !suppressHydrationWarning) {\n      // $FlowFixMe - Should be inferred as not undefined.\n      warnForExtraAttributes(extraAttributeNames);\n    }\n  }\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps);\n      break;\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement, rawProps);\n      break;\n    case 'select':\n    case 'option':\n      // For input and textarea we current always set the value property at\n      // post mount to force it to diverge from attributes. However, for\n      // option and select we don't quite do the same thing and select\n      // is not resilient to the DOM state changing so we don't do that here.\n      // TODO: Consider not doing this for input and textarea.\n      break;\n    default:\n      if (typeof rawProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n      break;\n  }\n\n  return updatePayload;\n}\n\nfunction diffHydratedText$1(textNode, text) {\n  var isDifferent = textNode.nodeValue !== text;\n  return isDifferent;\n}\n\nfunction warnForUnmatchedText$1(textNode, text) {\n  {\n    warnForTextDifference(textNode.nodeValue, text);\n  }\n}\n\nfunction warnForDeletedHydratableElement$1(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n  }\n}\n\nfunction warnForDeletedHydratableText$1(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n  }\n}\n\nfunction warnForInsertedHydratedElement$1(parentNode, tag, props) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n  }\n}\n\nfunction warnForInsertedHydratedText$1(parentNode, text) {\n  {\n    if (text === '') {\n      // We expect to insert empty text nodes since they're not represented in\n      // the HTML.\n      // TODO: Remove this special case if we can just avoid inserting empty\n      // text nodes.\n      return;\n    }\n    if (didWarnInvalidHydration) {\n      return;\n    }\n    didWarnInvalidHydration = true;\n    warning(false, 'Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n  }\n}\n\nfunction restoreControlledState$1(domElement, tag, props) {\n  switch (tag) {\n    case 'input':\n      restoreControlledState(domElement, props);\n      return;\n    case 'textarea':\n      restoreControlledState$3(domElement, props);\n      return;\n    case 'select':\n      restoreControlledState$2(domElement, props);\n      return;\n  }\n}\n\nvar ReactDOMFiberComponent = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateTextNode: createTextNode$1,\n\tsetInitialProperties: setInitialProperties$1,\n\tdiffProperties: diffProperties$1,\n\tupdateProperties: updateProperties$1,\n\tdiffHydratedProperties: diffHydratedProperties$1,\n\tdiffHydratedText: diffHydratedText$1,\n\twarnForUnmatchedText: warnForUnmatchedText$1,\n\twarnForDeletedHydratableElement: warnForDeletedHydratableElement$1,\n\twarnForDeletedHydratableText: warnForDeletedHydratableText$1,\n\twarnForInsertedHydratedElement: warnForInsertedHydratedElement$1,\n\twarnForInsertedHydratedText: warnForInsertedHydratedText$1,\n\trestoreControlledState: restoreControlledState$1\n});\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar getCurrentFiberStackAddendum$6 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;\n\nvar validateDOMNesting = emptyFunction;\n\n{\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it's\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, <b><div></div></b> is invalid but we don't warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // <p> tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for <title>, including it here\n  // errs on the side of fewer warnings\n  'foreignObject', 'desc', 'title'];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n  var buttonScopeTags = inScopeTags.concat(['button']);\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n  var emptyAncestorInfo = {\n    current: null,\n\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  var updatedAncestorInfo$1 = function (oldInfo, tag, instance) {\n    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n    var info = { tag: tag, instance: instance };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    }\n\n    // See rules for 'li', 'dd', 'dt' start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === 'form') {\n      ancestorInfo.formTag = info;\n    }\n    if (tag === 'a') {\n      ancestorInfo.aTagInScope = info;\n    }\n    if (tag === 'button') {\n      ancestorInfo.buttonTagInScope = info;\n    }\n    if (tag === 'nobr') {\n      ancestorInfo.nobrTagInScope = info;\n    }\n    if (tag === 'p') {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n    if (tag === 'li') {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n    if (tag === 'dd' || tag === 'dt') {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n\n  /**\n   * Returns whether\n   */\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let's check if we're in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case 'select':\n        return tag === 'option' || tag === 'optgroup' || tag === '#text';\n      case 'optgroup':\n        return tag === 'option' || tag === '#text';\n      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n      // but\n      case 'option':\n        return tag === '#text';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n      case 'tr':\n        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n      case 'tbody':\n      case 'thead':\n      case 'tfoot':\n        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n      case 'colgroup':\n        return tag === 'col' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n      case 'table':\n        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n      case 'head':\n        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n      case 'html':\n        return tag === 'head' || tag === 'body';\n      case '#document':\n        return tag === 'html';\n    }\n\n    // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    switch (tag) {\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n      case 'rp':\n      case 'rt':\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case 'body':\n      case 'caption':\n      case 'col':\n      case 'colgroup':\n      case 'frame':\n      case 'head':\n      case 'html':\n      case 'tbody':\n      case 'td':\n      case 'tfoot':\n      case 'th':\n      case 'thead':\n      case 'tr':\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we're down here, then none of those matched and\n        // so we allow it only if we don't know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n\n  /**\n   * Returns whether\n   */\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case 'address':\n      case 'article':\n      case 'aside':\n      case 'blockquote':\n      case 'center':\n      case 'details':\n      case 'dialog':\n      case 'dir':\n      case 'div':\n      case 'dl':\n      case 'fieldset':\n      case 'figcaption':\n      case 'figure':\n      case 'footer':\n      case 'header':\n      case 'hgroup':\n      case 'main':\n      case 'menu':\n      case 'nav':\n      case 'ol':\n      case 'p':\n      case 'section':\n      case 'summary':\n      case 'ul':\n      case 'pre':\n      case 'listing':\n      case 'table':\n      case 'hr':\n      case 'xmp':\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return ancestorInfo.pTagInButtonScope;\n\n      case 'form':\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case 'li':\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case 'dd':\n      case 'dt':\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case 'button':\n        return ancestorInfo.buttonTagInScope;\n\n      case 'a':\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case 'nobr':\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  var didWarn = {};\n\n  validateDOMNesting = function (childTag, childText, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n\n    if (childText != null) {\n      !(childTag == null) ? warning(false, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n      childTag = '#text';\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var invalidParentOrAncestor = invalidParent || invalidAncestor;\n    if (!invalidParentOrAncestor) {\n      return;\n    }\n\n    var ancestorTag = invalidParentOrAncestor.tag;\n    var addendum = getCurrentFiberStackAddendum$6();\n\n    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + addendum;\n    if (didWarn[warnKey]) {\n      return;\n    }\n    didWarn[warnKey] = true;\n\n    var tagDisplayName = childTag;\n    var whitespaceInfo = '';\n    if (childTag === '#text') {\n      if (/\\S/.test(childText)) {\n        tagDisplayName = 'Text nodes';\n      } else {\n        tagDisplayName = 'Whitespace text nodes';\n        whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n      }\n    } else {\n      tagDisplayName = '<' + childTag + '>';\n    }\n\n    if (invalidParent) {\n      var info = '';\n      if (ancestorTag === 'table' && childTag === 'tr') {\n        info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n      }\n      warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info, addendum);\n    } else {\n      warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.%s', tagDisplayName, ancestorTag, addendum);\n    }\n  };\n\n  // TODO: turn this into a named export\n  validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo$1;\n}\n\nvar validateDOMNesting$1 = validateDOMNesting;\n\n// TODO: This type is shared between the reconciler and ReactDOM, but will\n// eventually be lifted out to the renderer.\n\n// TODO: direct imports like some-package/src/* are bad. Fix me.\nvar createElement = createElement$1;\nvar createTextNode = createTextNode$1;\nvar setInitialProperties = setInitialProperties$1;\nvar diffProperties = diffProperties$1;\nvar updateProperties = updateProperties$1;\nvar diffHydratedProperties = diffHydratedProperties$1;\nvar diffHydratedText = diffHydratedText$1;\nvar warnForUnmatchedText = warnForUnmatchedText$1;\nvar warnForDeletedHydratableElement = warnForDeletedHydratableElement$1;\nvar warnForDeletedHydratableText = warnForDeletedHydratableText$1;\nvar warnForInsertedHydratedElement = warnForInsertedHydratedElement$1;\nvar warnForInsertedHydratedText = warnForInsertedHydratedText$1;\nvar updatedAncestorInfo = validateDOMNesting$1.updatedAncestorInfo;\nvar precacheFiberNode = precacheFiberNode$1;\nvar updateFiberProps = updateFiberProps$1;\n\n\nvar SUPPRESS_HYDRATION_WARNING = void 0;\nvar topLevelUpdateWarnings = void 0;\nvar warnOnInvalidCallback = void 0;\nvar didWarnAboutUnstableCreatePortal = false;\n\n{\n  SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\n  if (typeof Map !== 'function' || Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n    warning(false, 'React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n  }\n\n  topLevelUpdateWarnings = function (container) {\n    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n      var hostInstance = DOMRenderer.findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);\n      if (hostInstance) {\n        !(hostInstance.parentNode === container) ? warning(false, 'render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.') : void 0;\n      }\n    }\n\n    var isRootRenderedBySomeReact = !!container._reactRootContainer;\n    var rootEl = getReactRootElementInContainer(container);\n    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode$1(rootEl));\n\n    !(!hasNonRootReactChild || isRootRenderedBySomeReact) ? warning(false, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n    !(container.nodeType !== ELEMENT_NODE || !container.tagName || container.tagName.toUpperCase() !== 'BODY') ? warning(false, 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n  };\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    !(callback === null || typeof callback === 'function') ? warning(false, '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback) : void 0;\n  };\n}\n\ninjection$2.injectFiberControlledHostComponent(ReactDOMFiberComponent);\n\nvar eventsEnabled = null;\nvar selectionInformation = null;\n\nfunction ReactBatch(root) {\n  var expirationTime = DOMRenderer.computeUniqueAsyncExpiration();\n  this._expirationTime = expirationTime;\n  this._root = root;\n  this._next = null;\n  this._callbacks = null;\n  this._didComplete = false;\n  this._hasChildren = false;\n  this._children = null;\n  this._defer = true;\n}\nReactBatch.prototype.render = function (children) {\n  !this._defer ? invariant(false, 'batch.render: Cannot render a batch that already committed.') : void 0;\n  this._hasChildren = true;\n  this._children = children;\n  var internalRoot = this._root._internalRoot;\n  var expirationTime = this._expirationTime;\n  var work = new ReactWork();\n  DOMRenderer.updateContainerAtExpirationTime(children, internalRoot, null, expirationTime, work._onCommit);\n  return work;\n};\nReactBatch.prototype.then = function (onComplete) {\n  if (this._didComplete) {\n    onComplete();\n    return;\n  }\n  var callbacks = this._callbacks;\n  if (callbacks === null) {\n    callbacks = this._callbacks = [];\n  }\n  callbacks.push(onComplete);\n};\nReactBatch.prototype.commit = function () {\n  var internalRoot = this._root._internalRoot;\n  var firstBatch = internalRoot.firstBatch;\n  !(this._defer && firstBatch !== null) ? invariant(false, 'batch.commit: Cannot commit a batch multiple times.') : void 0;\n\n  if (!this._hasChildren) {\n    // This batch is empty. Return.\n    this._next = null;\n    this._defer = false;\n    return;\n  }\n\n  var expirationTime = this._expirationTime;\n\n  // Ensure this is the first batch in the list.\n  if (firstBatch !== this) {\n    // This batch is not the earliest batch. We need to move it to the front.\n    // Update its expiration time to be the expiration time of the earliest\n    // batch, so that we can flush it without flushing the other batches.\n    if (this._hasChildren) {\n      expirationTime = this._expirationTime = firstBatch._expirationTime;\n      // Rendering this batch again ensures its children will be the final state\n      // when we flush (updates are processed in insertion order: last\n      // update wins).\n      // TODO: This forces a restart. Should we print a warning?\n      this.render(this._children);\n    }\n\n    // Remove the batch from the list.\n    var previous = null;\n    var batch = firstBatch;\n    while (batch !== this) {\n      previous = batch;\n      batch = batch._next;\n    }\n    !(previous !== null) ? invariant(false, 'batch.commit: Cannot commit a batch multiple times.') : void 0;\n    previous._next = batch._next;\n\n    // Add it to the front.\n    this._next = firstBatch;\n    firstBatch = internalRoot.firstBatch = this;\n  }\n\n  // Synchronously flush all the work up to this batch's expiration time.\n  this._defer = false;\n  DOMRenderer.flushRoot(internalRoot, expirationTime);\n\n  // Pop the batch from the list.\n  var next = this._next;\n  this._next = null;\n  firstBatch = internalRoot.firstBatch = next;\n\n  // Append the next earliest batch's children to the update queue.\n  if (firstBatch !== null && firstBatch._hasChildren) {\n    firstBatch.render(firstBatch._children);\n  }\n};\nReactBatch.prototype._onComplete = function () {\n  if (this._didComplete) {\n    return;\n  }\n  this._didComplete = true;\n  var callbacks = this._callbacks;\n  if (callbacks === null) {\n    return;\n  }\n  // TODO: Error handling.\n  for (var i = 0; i < callbacks.length; i++) {\n    var _callback = callbacks[i];\n    _callback();\n  }\n};\n\nfunction ReactWork() {\n  this._callbacks = null;\n  this._didCommit = false;\n  // TODO: Avoid need to bind by replacing callbacks in the update queue with\n  // list of Work objects.\n  this._onCommit = this._onCommit.bind(this);\n}\nReactWork.prototype.then = function (onCommit) {\n  if (this._didCommit) {\n    onCommit();\n    return;\n  }\n  var callbacks = this._callbacks;\n  if (callbacks === null) {\n    callbacks = this._callbacks = [];\n  }\n  callbacks.push(onCommit);\n};\nReactWork.prototype._onCommit = function () {\n  if (this._didCommit) {\n    return;\n  }\n  this._didCommit = true;\n  var callbacks = this._callbacks;\n  if (callbacks === null) {\n    return;\n  }\n  // TODO: Error handling.\n  for (var i = 0; i < callbacks.length; i++) {\n    var _callback2 = callbacks[i];\n    !(typeof _callback2 === 'function') ? invariant(false, 'Invalid argument passed as callback. Expected a function. Instead received: %s', _callback2) : void 0;\n    _callback2();\n  }\n};\n\nfunction ReactRoot(container, isAsync, hydrate) {\n  var root = DOMRenderer.createContainer(container, isAsync, hydrate);\n  this._internalRoot = root;\n}\nReactRoot.prototype.render = function (children, callback) {\n  var root = this._internalRoot;\n  var work = new ReactWork();\n  callback = callback === undefined ? null : callback;\n  {\n    warnOnInvalidCallback(callback, 'render');\n  }\n  if (callback !== null) {\n    work.then(callback);\n  }\n  DOMRenderer.updateContainer(children, root, null, work._onCommit);\n  return work;\n};\nReactRoot.prototype.unmount = function (callback) {\n  var root = this._internalRoot;\n  var work = new ReactWork();\n  callback = callback === undefined ? null : callback;\n  {\n    warnOnInvalidCallback(callback, 'render');\n  }\n  if (callback !== null) {\n    work.then(callback);\n  }\n  DOMRenderer.updateContainer(null, root, null, work._onCommit);\n  return work;\n};\nReactRoot.prototype.legacy_renderSubtreeIntoContainer = function (parentComponent, children, callback) {\n  var root = this._internalRoot;\n  var work = new ReactWork();\n  callback = callback === undefined ? null : callback;\n  {\n    warnOnInvalidCallback(callback, 'render');\n  }\n  if (callback !== null) {\n    work.then(callback);\n  }\n  DOMRenderer.updateContainer(children, root, parentComponent, work._onCommit);\n  return work;\n};\nReactRoot.prototype.createBatch = function () {\n  var batch = new ReactBatch(this);\n  var expirationTime = batch._expirationTime;\n\n  var internalRoot = this._internalRoot;\n  var firstBatch = internalRoot.firstBatch;\n  if (firstBatch === null) {\n    internalRoot.firstBatch = batch;\n    batch._next = null;\n  } else {\n    // Insert sorted by expiration time then insertion order\n    var insertAfter = null;\n    var insertBefore = firstBatch;\n    while (insertBefore !== null && insertBefore._expirationTime <= expirationTime) {\n      insertAfter = insertBefore;\n      insertBefore = insertBefore._next;\n    }\n    batch._next = insertBefore;\n    if (insertAfter !== null) {\n      insertAfter._next = batch;\n    }\n  }\n\n  return batch;\n};\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOCUMENT_NODE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction shouldHydrateDueToLegacyHeuristic(container) {\n  var rootElement = getReactRootElementInContainer(container);\n  return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));\n}\n\nfunction shouldAutoFocusHostComponent(type, props) {\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      return !!props.autoFocus;\n  }\n  return false;\n}\n\nvar DOMRenderer = reactReconciler({\n  getRootHostContext: function (rootContainerInstance) {\n    var type = void 0;\n    var namespace = void 0;\n    var nodeType = rootContainerInstance.nodeType;\n    switch (nodeType) {\n      case DOCUMENT_NODE:\n      case DOCUMENT_FRAGMENT_NODE:\n        {\n          type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n          var root = rootContainerInstance.documentElement;\n          namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n          break;\n        }\n      default:\n        {\n          var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n          var ownNamespace = container.namespaceURI || null;\n          type = container.tagName;\n          namespace = getChildNamespace(ownNamespace, type);\n          break;\n        }\n    }\n    {\n      var validatedTag = type.toLowerCase();\n      var _ancestorInfo = updatedAncestorInfo(null, validatedTag, null);\n      return { namespace: namespace, ancestorInfo: _ancestorInfo };\n    }\n    return namespace;\n  },\n  getChildHostContext: function (parentHostContext, type) {\n    {\n      var parentHostContextDev = parentHostContext;\n      var _namespace = getChildNamespace(parentHostContextDev.namespace, type);\n      var _ancestorInfo2 = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type, null);\n      return { namespace: _namespace, ancestorInfo: _ancestorInfo2 };\n    }\n    var parentNamespace = parentHostContext;\n    return getChildNamespace(parentNamespace, type);\n  },\n  getPublicInstance: function (instance) {\n    return instance;\n  },\n  prepareForCommit: function () {\n    eventsEnabled = isEnabled();\n    selectionInformation = getSelectionInformation();\n    setEnabled(false);\n  },\n  resetAfterCommit: function () {\n    restoreSelection(selectionInformation);\n    selectionInformation = null;\n    setEnabled(eventsEnabled);\n    eventsEnabled = null;\n  },\n  createInstance: function (type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n    var parentNamespace = void 0;\n    {\n      // TODO: take namespace into account when validating.\n      var hostContextDev = hostContext;\n      validateDOMNesting$1(type, null, hostContextDev.ancestorInfo);\n      if (typeof props.children === 'string' || typeof props.children === 'number') {\n        var string = '' + props.children;\n        var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null);\n        validateDOMNesting$1(null, string, ownAncestorInfo);\n      }\n      parentNamespace = hostContextDev.namespace;\n    }\n    var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n    precacheFiberNode(internalInstanceHandle, domElement);\n    updateFiberProps(domElement, props);\n    return domElement;\n  },\n  appendInitialChild: function (parentInstance, child) {\n    parentInstance.appendChild(child);\n  },\n  finalizeInitialChildren: function (domElement, type, props, rootContainerInstance) {\n    setInitialProperties(domElement, type, props, rootContainerInstance);\n    return shouldAutoFocusHostComponent(type, props);\n  },\n  prepareUpdate: function (domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n    {\n      var hostContextDev = hostContext;\n      if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n        var string = '' + newProps.children;\n        var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null);\n        validateDOMNesting$1(null, string, ownAncestorInfo);\n      }\n    }\n    return diffProperties(domElement, type, oldProps, newProps, rootContainerInstance);\n  },\n  shouldSetTextContent: function (type, props) {\n    return type === 'textarea' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && typeof props.dangerouslySetInnerHTML.__html === 'string';\n  },\n  shouldDeprioritizeSubtree: function (type, props) {\n    return !!props.hidden;\n  },\n  createTextInstance: function (text, rootContainerInstance, hostContext, internalInstanceHandle) {\n    {\n      var hostContextDev = hostContext;\n      validateDOMNesting$1(null, text, hostContextDev.ancestorInfo);\n    }\n    var textNode = createTextNode(text, rootContainerInstance);\n    precacheFiberNode(internalInstanceHandle, textNode);\n    return textNode;\n  },\n\n\n  now: now,\n\n  mutation: {\n    commitMount: function (domElement, type, newProps, internalInstanceHandle) {\n      // Despite the naming that might imply otherwise, this method only\n      // fires if there is an `Update` effect scheduled during mounting.\n      // This happens if `finalizeInitialChildren` returns `true` (which it\n      // does to implement the `autoFocus` attribute on the client). But\n      // there are also other cases when this might happen (such as patching\n      // up text content during hydration mismatch). So we'll check this again.\n      if (shouldAutoFocusHostComponent(type, newProps)) {\n        domElement.focus();\n      }\n    },\n    commitUpdate: function (domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n      // Update the props handle so that we know which props are the ones with\n      // with current event handlers.\n      updateFiberProps(domElement, newProps);\n      // Apply the diff to the DOM node.\n      updateProperties(domElement, updatePayload, type, oldProps, newProps);\n    },\n    resetTextContent: function (domElement) {\n      setTextContent(domElement, '');\n    },\n    commitTextUpdate: function (textInstance, oldText, newText) {\n      textInstance.nodeValue = newText;\n    },\n    appendChild: function (parentInstance, child) {\n      parentInstance.appendChild(child);\n    },\n    appendChildToContainer: function (container, child) {\n      if (container.nodeType === COMMENT_NODE) {\n        container.parentNode.insertBefore(child, container);\n      } else {\n        container.appendChild(child);\n      }\n    },\n    insertBefore: function (parentInstance, child, beforeChild) {\n      parentInstance.insertBefore(child, beforeChild);\n    },\n    insertInContainerBefore: function (container, child, beforeChild) {\n      if (container.nodeType === COMMENT_NODE) {\n        container.parentNode.insertBefore(child, beforeChild);\n      } else {\n        container.insertBefore(child, beforeChild);\n      }\n    },\n    removeChild: function (parentInstance, child) {\n      parentInstance.removeChild(child);\n    },\n    removeChildFromContainer: function (container, child) {\n      if (container.nodeType === COMMENT_NODE) {\n        container.parentNode.removeChild(child);\n      } else {\n        container.removeChild(child);\n      }\n    }\n  },\n\n  hydration: {\n    canHydrateInstance: function (instance, type, props) {\n      if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n        return null;\n      }\n      // This has now been refined to an element node.\n      return instance;\n    },\n    canHydrateTextInstance: function (instance, text) {\n      if (text === '' || instance.nodeType !== TEXT_NODE) {\n        // Empty strings are not parsed by HTML so there won't be a correct match here.\n        return null;\n      }\n      // This has now been refined to a text node.\n      return instance;\n    },\n    getNextHydratableSibling: function (instance) {\n      var node = instance.nextSibling;\n      // Skip non-hydratable nodes.\n      while (node && node.nodeType !== ELEMENT_NODE && node.nodeType !== TEXT_NODE) {\n        node = node.nextSibling;\n      }\n      return node;\n    },\n    getFirstHydratableChild: function (parentInstance) {\n      var next = parentInstance.firstChild;\n      // Skip non-hydratable nodes.\n      while (next && next.nodeType !== ELEMENT_NODE && next.nodeType !== TEXT_NODE) {\n        next = next.nextSibling;\n      }\n      return next;\n    },\n    hydrateInstance: function (instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n      precacheFiberNode(internalInstanceHandle, instance);\n      // TODO: Possibly defer this until the commit phase where all the events\n      // get attached.\n      updateFiberProps(instance, props);\n      var parentNamespace = void 0;\n      {\n        var hostContextDev = hostContext;\n        parentNamespace = hostContextDev.namespace;\n      }\n      return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance);\n    },\n    hydrateTextInstance: function (textInstance, text, internalInstanceHandle) {\n      precacheFiberNode(internalInstanceHandle, textInstance);\n      return diffHydratedText(textInstance, text);\n    },\n    didNotMatchHydratedContainerTextInstance: function (parentContainer, textInstance, text) {\n      {\n        warnForUnmatchedText(textInstance, text);\n      }\n    },\n    didNotMatchHydratedTextInstance: function (parentType, parentProps, parentInstance, textInstance, text) {\n      if (true && parentProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        warnForUnmatchedText(textInstance, text);\n      }\n    },\n    didNotHydrateContainerInstance: function (parentContainer, instance) {\n      {\n        if (instance.nodeType === 1) {\n          warnForDeletedHydratableElement(parentContainer, instance);\n        } else {\n          warnForDeletedHydratableText(parentContainer, instance);\n        }\n      }\n    },\n    didNotHydrateInstance: function (parentType, parentProps, parentInstance, instance) {\n      if (true && parentProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        if (instance.nodeType === 1) {\n          warnForDeletedHydratableElement(parentInstance, instance);\n        } else {\n          warnForDeletedHydratableText(parentInstance, instance);\n        }\n      }\n    },\n    didNotFindHydratableContainerInstance: function (parentContainer, type, props) {\n      {\n        warnForInsertedHydratedElement(parentContainer, type, props);\n      }\n    },\n    didNotFindHydratableContainerTextInstance: function (parentContainer, text) {\n      {\n        warnForInsertedHydratedText(parentContainer, text);\n      }\n    },\n    didNotFindHydratableInstance: function (parentType, parentProps, parentInstance, type, props) {\n      if (true && parentProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        warnForInsertedHydratedElement(parentInstance, type, props);\n      }\n    },\n    didNotFindHydratableTextInstance: function (parentType, parentProps, parentInstance, text) {\n      if (true && parentProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        warnForInsertedHydratedText(parentInstance, text);\n      }\n    }\n  },\n\n  scheduleDeferredCallback: rIC,\n  cancelDeferredCallback: cIC\n});\n\ninjection$3.injectRenderer(DOMRenderer);\n\nvar warnedAboutHydrateAPI = false;\n\nfunction legacyCreateRootFromDOMContainer(container, forceHydrate) {\n  var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container);\n  // First clear any existing content.\n  if (!shouldHydrate) {\n    var warned = false;\n    var rootSibling = void 0;\n    while (rootSibling = container.lastChild) {\n      {\n        if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {\n          warned = true;\n          warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');\n        }\n      }\n      container.removeChild(rootSibling);\n    }\n  }\n  {\n    if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) {\n      warnedAboutHydrateAPI = true;\n      lowPriorityWarning$1(false, 'render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v17. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.');\n    }\n  }\n  // Legacy roots are not async by default.\n  var isAsync = false;\n  return new ReactRoot(container, isAsync, shouldHydrate);\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n  // TODO: Ensure all entry points contain this check\n  !isValidContainer(container) ? invariant(false, 'Target container is not a DOM element.') : void 0;\n\n  {\n    topLevelUpdateWarnings(container);\n  }\n\n  // TODO: Without `any` type, Flow says \"Property cannot be accessed on any\n  // member of intersection type.\" Whyyyyyy.\n  var root = container._reactRootContainer;\n  if (!root) {\n    // Initial mount\n    root = container._reactRootContainer = legacyCreateRootFromDOMContainer(container, forceHydrate);\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n      callback = function () {\n        var instance = DOMRenderer.getPublicRootInstance(root._internalRoot);\n        originalCallback.call(instance);\n      };\n    }\n    // Initial mount should not be batched.\n    DOMRenderer.unbatchedUpdates(function () {\n      if (parentComponent != null) {\n        root.legacy_renderSubtreeIntoContainer(parentComponent, children, callback);\n      } else {\n        root.render(children, callback);\n      }\n    });\n  } else {\n    if (typeof callback === 'function') {\n      var _originalCallback = callback;\n      callback = function () {\n        var instance = DOMRenderer.getPublicRootInstance(root._internalRoot);\n        _originalCallback.call(instance);\n      };\n    }\n    // Update\n    if (parentComponent != null) {\n      root.legacy_renderSubtreeIntoContainer(parentComponent, children, callback);\n    } else {\n      root.render(children, callback);\n    }\n  }\n  return DOMRenderer.getPublicRootInstance(root._internalRoot);\n}\n\nfunction createPortal(children, container) {\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  !isValidContainer(container) ? invariant(false, 'Target container is not a DOM element.') : void 0;\n  // TODO: pass ReactDOM portal implementation as third argument\n  return createPortal$1(children, container, null, key);\n}\n\nvar ReactDOM = {\n  createPortal: createPortal,\n\n  findDOMNode: function (componentOrElement) {\n    {\n      var owner = ReactCurrentOwner.current;\n      if (owner !== null && owner.stateNode !== null) {\n        var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n        !warnedAboutRefsInRender ? warning(false, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner) || 'A component') : void 0;\n        owner.stateNode._warnedAboutRefsInRender = true;\n      }\n    }\n    if (componentOrElement == null) {\n      return null;\n    }\n    if (componentOrElement.nodeType === ELEMENT_NODE) {\n      return componentOrElement;\n    }\n\n    return DOMRenderer.findHostInstance(componentOrElement);\n  },\n  hydrate: function (element, container, callback) {\n    // TODO: throw or warn if we couldn't hydrate?\n    return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n  },\n  render: function (element, container, callback) {\n    return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n  },\n  unstable_renderSubtreeIntoContainer: function (parentComponent, element, containerNode, callback) {\n    !(parentComponent != null && has(parentComponent)) ? invariant(false, 'parentComponent must be a valid React Component') : void 0;\n    return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n  },\n  unmountComponentAtNode: function (container) {\n    !isValidContainer(container) ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : void 0;\n\n    if (container._reactRootContainer) {\n      {\n        var rootEl = getReactRootElementInContainer(container);\n        var renderedByDifferentReact = rootEl && !getInstanceFromNode$1(rootEl);\n        !!renderedByDifferentReact ? warning(false, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n      }\n\n      // Unmount should not be batched.\n      DOMRenderer.unbatchedUpdates(function () {\n        legacyRenderSubtreeIntoContainer(null, null, container, false, function () {\n          container._reactRootContainer = null;\n        });\n      });\n      // If you call unmountComponentAtNode twice in quick succession, you'll\n      // get `true` twice. That's probably fine?\n      return true;\n    } else {\n      {\n        var _rootEl = getReactRootElementInContainer(container);\n        var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode$1(_rootEl));\n\n        // Check if the container itself is a React root node.\n        var isContainerReactRoot = container.nodeType === 1 && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n        !!hasNonRootReactChild ? warning(false, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n      }\n\n      return false;\n    }\n  },\n\n\n  // Temporary alias since we already shipped React 16 RC with it.\n  // TODO: remove in React 17.\n  unstable_createPortal: function () {\n    if (!didWarnAboutUnstableCreatePortal) {\n      didWarnAboutUnstableCreatePortal = true;\n      lowPriorityWarning$1(false, 'The ReactDOM.unstable_createPortal() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactDOM.createPortal() instead. It has the exact same API, ' + 'but without the \"unstable_\" prefix.');\n    }\n    return createPortal.apply(undefined, arguments);\n  },\n\n\n  unstable_batchedUpdates: DOMRenderer.batchedUpdates,\n\n  unstable_deferredUpdates: DOMRenderer.deferredUpdates,\n\n  flushSync: DOMRenderer.flushSync,\n\n  unstable_flushControlled: DOMRenderer.flushControlled,\n\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    // For TapEventPlugin which is popular in open source\n    EventPluginHub: EventPluginHub,\n    // Used by test-utils\n    EventPluginRegistry: EventPluginRegistry,\n    EventPropagators: EventPropagators,\n    ReactControlledComponent: ReactControlledComponent,\n    ReactDOMComponentTree: ReactDOMComponentTree,\n    ReactDOMEventListener: ReactDOMEventListener\n  }\n};\n\nReactDOM.unstable_createRoot = function createRoot(container, options) {\n  var hydrate = options != null && options.hydrate === true;\n  return new ReactRoot(container, true, hydrate);\n};\n\nvar foundDevTools = DOMRenderer.injectIntoDevTools({\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  bundleType: 1,\n  version: ReactVersion,\n  rendererPackageName: 'react-dom'\n});\n\n{\n  if (!foundDevTools && ExecutionEnvironment.canUseDOM && window.top === window.self) {\n    // If we're in Chrome or Firefox, provide a download link if not installed.\n    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n      var protocol = window.location.protocol;\n      // Don't warn in exotic cases like chrome-extension://.\n      if (/^(https?|file):$/.test(protocol)) {\n        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://fb.me/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://fb.me/react-devtools-faq' : ''), 'font-weight:bold');\n      }\n    }\n  }\n}\n\n\n\nvar ReactDOM$2 = Object.freeze({\n\tdefault: ReactDOM\n});\n\nvar ReactDOM$3 = ( ReactDOM$2 && ReactDOM ) || ReactDOM$2;\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar reactDom = ReactDOM$3['default'] ? ReactDOM$3['default'] : ReactDOM$3;\n\nmodule.exports = reactDom;\n  })();\n}\n\n\n//# sourceURL=webpack:///./node_modules/react-dom/cjs/react-dom.development.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-dom/index.js":
+/*!*****************************************!*\
+  !*** ./node_modules/react-dom/index.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (true) {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ \"./node_modules/react-dom/cjs/react-dom.development.js\");\n}\n\n\n//# sourceURL=webpack:///./node_modules/react-dom/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-event-listener/lib/index.js":
+/*!********************************************************!*\
+  !*** ./node_modules/react-event-listener/lib/index.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _typeof2 = __webpack_require__(/*! babel-runtime/helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _objectWithoutProperties2 = __webpack_require__(/*! babel-runtime/helpers/objectWithoutProperties */ \"./node_modules/babel-runtime/helpers/objectWithoutProperties.js\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _assign = __webpack_require__(/*! babel-runtime/core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.withOptions = withOptions;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _shallowEqual = __webpack_require__(/*! fbjs/lib/shallowEqual */ \"./node_modules/fbjs/lib/shallowEqual.js\");\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _warning = __webpack_require__(/*! warning */ \"./node_modules/warning/browser.js\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _supports = __webpack_require__(/*! ./supports */ \"./node_modules/react-event-listener/lib/supports.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultEventOptions = {\n  capture: false,\n  passive: false\n};\n\nfunction mergeDefaultEventOptions(options) {\n  return (0, _assign2.default)({}, defaultEventOptions, options);\n}\n\nfunction getEventListenerArgs(eventName, callback, options) {\n  var args = [eventName, callback];\n  args.push(_supports.passiveOption ? options : options.capture);\n  return args;\n}\n\nfunction on(target, eventName, callback, options) {\n  // eslint-disable-next-line prefer-spread\n  target.addEventListener.apply(target, getEventListenerArgs(eventName, callback, options));\n}\n\nfunction off(target, eventName, callback, options) {\n  // eslint-disable-next-line prefer-spread\n  target.removeEventListener.apply(target, getEventListenerArgs(eventName, callback, options));\n}\n\nfunction forEachListener(props, iteratee) {\n  var children = props.children,\n      target = props.target,\n      eventProps = (0, _objectWithoutProperties3.default)(props, ['children', 'target']);\n\n\n  (0, _keys2.default)(eventProps).forEach(function (name) {\n    if (name.substring(0, 2) !== 'on') {\n      return;\n    }\n\n    var prop = eventProps[name];\n    var type = typeof prop === 'undefined' ? 'undefined' : (0, _typeof3.default)(prop);\n    var isObject = type === 'object';\n    var isFunction = type === 'function';\n\n    if (!isObject && !isFunction) {\n      return;\n    }\n\n    var capture = name.substr(-7).toLowerCase() === 'capture';\n    var eventName = name.substring(2).toLowerCase();\n    eventName = capture ? eventName.substring(0, eventName.length - 7) : eventName;\n\n    if (isObject) {\n      iteratee(eventName, prop.handler, prop.options);\n    } else {\n      iteratee(eventName, prop, mergeDefaultEventOptions({ capture: capture }));\n    }\n  });\n}\n\nfunction withOptions(handler, options) {\n   true ? (0, _warning2.default)(options, 'react-event-listener: should be specified options in withOptions.') : undefined;\n\n  return {\n    handler: handler,\n    options: mergeDefaultEventOptions(options)\n  };\n}\n\nvar EventListener = function (_React$Component) {\n  (0, _inherits3.default)(EventListener, _React$Component);\n\n  function EventListener() {\n    (0, _classCallCheck3.default)(this, EventListener);\n    return (0, _possibleConstructorReturn3.default)(this, (EventListener.__proto__ || (0, _getPrototypeOf2.default)(EventListener)).apply(this, arguments));\n  }\n\n  (0, _createClass3.default)(EventListener, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.addListeners();\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return !(0, _shallowEqual2.default)(this.props, nextProps);\n    }\n  }, {\n    key: 'componentWillUpdate',\n    value: function componentWillUpdate() {\n      this.removeListeners();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      this.addListeners();\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.removeListeners();\n    }\n  }, {\n    key: 'addListeners',\n    value: function addListeners() {\n      this.applyListeners(on);\n    }\n  }, {\n    key: 'removeListeners',\n    value: function removeListeners() {\n      this.applyListeners(off);\n    }\n  }, {\n    key: 'applyListeners',\n    value: function applyListeners(onOrOff) {\n      var target = this.props.target;\n\n\n      if (target) {\n        var element = target;\n\n        if (typeof target === 'string') {\n          element = window[target];\n        }\n\n        forEachListener(this.props, onOrOff.bind(null, element));\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return this.props.children || null;\n    }\n  }]);\n  return EventListener;\n}(_react2.default.Component);\n\nEventListener.propTypes =  true ? {\n  /**\n   * You can provide a single child too.\n   */\n  children: _propTypes2.default.node,\n  /**\n   * The DOM target to listen to.\n   */\n  target: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.string]).isRequired\n} : undefined;\n\nexports.default = EventListener;\n\n//# sourceURL=webpack:///./node_modules/react-event-listener/lib/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-event-listener/lib/supports.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/react-event-listener/lib/supports.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.passiveOption = undefined;\n\nvar _defineProperty = __webpack_require__(/*! babel-runtime/core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction defineProperty(object, property, attr) {\n  return (0, _defineProperty2.default)(object, property, attr);\n}\n\n// Passive options\n// Inspired by https://github.com/Modernizr/Modernizr/blob/master/feature-detects/dom/passiveeventlisteners.js\nvar passiveOption = exports.passiveOption = function () {\n  var cache = null;\n\n  return function () {\n    if (cache !== null) {\n      return cache;\n    }\n\n    var supportsPassiveOption = false;\n\n    try {\n      window.addEventListener('test', null, defineProperty({}, 'passive', {\n        get: function get() {\n          supportsPassiveOption = true;\n        }\n      }));\n    } catch (err) {\n      //\n    }\n\n    cache = supportsPassiveOption;\n\n    return supportsPassiveOption;\n  }();\n}();\n\nexports.default = {};\n\n//# sourceURL=webpack:///./node_modules/react-event-listener/lib/supports.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-jss/lib/contextTypes.js":
+/*!****************************************************!*\
+  !*** ./node_modules/react-jss/lib/contextTypes.js ***!
+  \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _ns$jss$ns$sheetOptio;\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _ns = __webpack_require__(/*! ./ns */ \"./node_modules/react-jss/lib/ns.js\");\n\nvar ns = _interopRequireWildcard(_ns);\n\nvar _propTypes2 = __webpack_require__(/*! ./propTypes */ \"./node_modules/react-jss/lib/propTypes.js\");\n\nvar _propTypes3 = _interopRequireDefault(_propTypes2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexports['default'] = (_ns$jss$ns$sheetOptio = {}, _defineProperty(_ns$jss$ns$sheetOptio, ns.jss, _propTypes3['default'].jss), _defineProperty(_ns$jss$ns$sheetOptio, ns.sheetOptions, _propTypes.object), _defineProperty(_ns$jss$ns$sheetOptio, ns.sheetsRegistry, _propTypes3['default'].registry), _defineProperty(_ns$jss$ns$sheetOptio, ns.managers, _propTypes.object), _ns$jss$ns$sheetOptio);\n\n//# sourceURL=webpack:///./node_modules/react-jss/lib/contextTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-jss/lib/ns.js":
+/*!******************************************!*\
+  !*** ./node_modules/react-jss/lib/ns.js ***!
+  \******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/**\n * Namespaces to avoid conflicts on the context.\n */\nvar jss = exports.jss = '64a55d578f856d258dc345b094a2a2b3';\nvar sheetsRegistry = exports.sheetsRegistry = 'd4bd0baacbc52bbd48bbb9eb24344ecd';\nvar managers = exports.managers = 'b768b78919504fba9de2c03545c5cd3a';\nvar sheetOptions = exports.sheetOptions = '6fc570d6bd61383819d0f9e7407c452d';\n\n//# sourceURL=webpack:///./node_modules/react-jss/lib/ns.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-jss/lib/propTypes.js":
+/*!*************************************************!*\
+  !*** ./node_modules/react-jss/lib/propTypes.js ***!
+  \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nexports['default'] = {\n  jss: (0, _propTypes.shape)({\n    options: (0, _propTypes.shape)({\n      createGenerateClassName: _propTypes.func.isRequired\n    }).isRequired,\n    createStyleSheet: _propTypes.func.isRequired,\n    removeStyleSheet: _propTypes.func.isRequired\n  }),\n  registry: (0, _propTypes.shape)({\n    add: _propTypes.func.isRequired,\n    toString: _propTypes.func.isRequired\n  })\n};\n\n//# sourceURL=webpack:///./node_modules/react-jss/lib/propTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js ***!
+  \****************************************************************************/
+/*! exports provided: polyfill */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  this.setState(function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  });\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n\n//# sourceURL=webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/Transition.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/react-transition-group/Transition.js ***!
+  \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = undefined;\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar PropTypes = _interopRequireWildcard(_propTypes);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _PropTypes = __webpack_require__(/*! ./utils/PropTypes */ \"./node_modules/react-transition-group/utils/PropTypes.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = exports.UNMOUNTED = 'unmounted';\nvar EXITED = exports.EXITED = 'exited';\nvar ENTERING = exports.ENTERING = 'entering';\nvar ENTERED = exports.ENTERED = 'entered';\nvar EXITING = exports.EXITING = 'exiting';\n\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {(state) => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n *   this.setState({ in: true });\n * }\n *\n * render() {\n *   return (\n *     <div>\n *       <Transition in={this.state.in} timeout={500} />\n *       <button onClick={this.toggleEnterState}>Click to Enter</button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n *\n * ## Example\n *\n * <iframe src=\"https://codesandbox.io/embed/741op4mmj0?fontsize=14\" style=\"width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"></iframe>\n *\n */\n\nvar Transition = function (_React$Component) {\n  _inherits(Transition, _React$Component);\n\n  function Transition(props, context) {\n    _classCallCheck(this, Transition);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    var parentGroup = context.transitionGroup;\n    // In the context of a TransitionGroup all enters are really appears\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n\n    var initialStatus = void 0;\n    _this.nextStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.nextStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = { status: initialStatus };\n\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.prototype.getChildContext = function getChildContext() {\n    return { transitionGroup: null }; // allows for nested Transitions\n  };\n\n  Transition.prototype.componentDidMount = function componentDidMount() {\n    this.updateStatus(true);\n  };\n\n  Transition.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var _ref = this.pendingState || this.state,\n        status = _ref.status;\n\n    if (nextProps.in) {\n      if (status === UNMOUNTED) {\n        this.setState({ status: EXITED });\n      }\n      if (status !== ENTERING && status !== ENTERED) {\n        this.nextStatus = ENTERING;\n      }\n    } else {\n      if (status === ENTERING || status === ENTERED) {\n        this.nextStatus = EXITING;\n      }\n    }\n  };\n\n  Transition.prototype.componentDidUpdate = function componentDidUpdate() {\n    this.updateStatus();\n  };\n\n  Transition.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  Transition.prototype.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n\n    var exit = void 0,\n        enter = void 0,\n        appear = void 0;\n\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter;\n      appear = timeout.appear;\n    }\n    return { exit: exit, enter: enter, appear: appear };\n  };\n\n  Transition.prototype.updateStatus = function updateStatus() {\n    var mounting = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    var nextStatus = this.nextStatus;\n\n    if (nextStatus !== null) {\n      this.nextStatus = null;\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n      var node = _reactDom2.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({ status: UNMOUNTED });\n    }\n  };\n\n  Transition.prototype.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n\n    var timeouts = this.getTimeouts();\n\n    // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n    if (!mounting && !enter) {\n      this.safeSetState({ status: ENTERED }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n\n    this.safeSetState({ status: ENTERING }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      // FIXME: appear timeout?\n      _this2.onTransitionEnd(node, timeouts.enter, function () {\n        _this2.safeSetState({ status: ENTERED }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  Transition.prototype.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n\n    var timeouts = this.getTimeouts();\n\n    // no exit animation skip right to EXITED\n    if (!exit) {\n      this.safeSetState({ status: EXITED }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n    this.props.onExit(node);\n\n    this.safeSetState({ status: EXITING }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({ status: EXITED }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  Transition.prototype.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  Transition.prototype.safeSetState = function safeSetState(nextState, callback) {\n    var _this4 = this;\n\n    // We need to track pending updates for instances where a cWRP fires quickly\n    // after cDM and before the state flushes, which would double trigger a\n    // transition\n    this.pendingState = nextState;\n\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, function () {\n      _this4.pendingState = null;\n      callback();\n    });\n  };\n\n  Transition.prototype.setNextCallback = function setNextCallback(callback) {\n    var _this5 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this5.nextCallback = null;\n\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  Transition.prototype.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n\n    if (node) {\n      if (this.props.addEndListener) {\n        this.props.addEndListener(node, this.nextCallback);\n      }\n      if (timeout != null) {\n        setTimeout(this.nextCallback, timeout);\n      }\n    } else {\n      setTimeout(this.nextCallback, 0);\n    }\n  };\n\n  Transition.prototype.render = function render() {\n    var status = this.state.status;\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _props = this.props,\n        children = _props.children,\n        childProps = _objectWithoutProperties(_props, ['children']);\n    // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react2.default.Children.only(children);\n    return _react2.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react2.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\n\n\nTransition.propTypes =  true ? {\n  /**\n   * A `function` child can be used instead of a React element.\n   * This function is called with the current transition status\n   * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n   * to apply context specific props to a component.\n   *\n   * ```jsx\n   * <Transition timeout={150}>\n   *   {(status) => (\n   *     <MyComponent className={`fade fade-${status}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided\n   *\n   * You may specify a single timeout for all transitions like: `timeout={500}`,\n   * or individually like:\n   *\n   * ```jsx\n   * timeout={{\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * @type {number | { enter?: number, exit?: number }}\n   */\n  timeout: function timeout(props) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var pt = _PropTypes.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n    return pt.apply(undefined, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : undefined;\n\n// Name the function so it is clearer in the documentation\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\n\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nexports.default = Transition;\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/Transition.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/TransitionGroup.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/react-transition-group/TransitionGroup.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ChildMapping = __webpack_require__(/*! ./utils/ChildMapping */ \"./node_modules/react-transition-group/utils/ChildMapping.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar propTypes = {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes2.default.any,\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   */\n  children: _propTypes2.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes2.default.bool,\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes2.default.bool,\n  /**\n    * A convenience prop that enables or disables exit animations\n    * for all children. Note that specifying this will override any defaults set\n    * on individual children Transitions.\n    */\n  exit: _propTypes2.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes2.default.func\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n\n/**\n * The `<TransitionGroup>` component manages a set of `<Transition>` components\n * in a list. Like with the `<Transition>` component, `<TransitionGroup>`, is a\n * state machine for managing the mounting and unmounting of components over\n * time.\n *\n * Consider the example below using the `Fade` CSS transition from before.\n * As items are removed or added to the TodoList the `in` prop is toggled\n * automatically by the `<TransitionGroup>`. You can use _any_ `<Transition>`\n * component in a `<TransitionGroup>`, not just css.\n *\n * ## Example\n *\n * <iframe src=\"https://codesandbox.io/embed/00rqyo26kn?fontsize=14\" style=\"width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"></iframe>\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual `<Transition>`\n * components. This means you can mix and match animations across different\n * list items.\n */\n\nvar TransitionGroup = function (_React$Component) {\n  _inherits(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    _classCallCheck(this, TransitionGroup);\n\n    // Initial children should all be entering, dependent on appear\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.state = {\n      children: (0, _ChildMapping.getChildMapping)(props.children, function (child) {\n        return (0, _react.cloneElement)(child, {\n          onExited: _this.handleExited.bind(_this, child),\n          in: true,\n          appear: _this.getProp(child, 'appear'),\n          enter: _this.getProp(child, 'enter'),\n          exit: _this.getProp(child, 'exit')\n        });\n      })\n    };\n    return _this;\n  }\n\n  TransitionGroup.prototype.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: { isMounting: !this.appeared }\n    };\n  };\n  // use child config unless explictly set by the Group\n\n\n  TransitionGroup.prototype.getProp = function getProp(child, prop) {\n    var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props;\n\n    return props[prop] != null ? props[prop] : child.props[prop];\n  };\n\n  TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n  };\n\n  TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    var _this2 = this;\n\n    var prevChildMapping = this.state.children;\n    var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n\n    var children = (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping);\n\n    Object.keys(children).forEach(function (key) {\n      var child = children[key];\n\n      if (!(0, _react.isValidElement)(child)) return;\n\n      var hasPrev = key in prevChildMapping;\n      var hasNext = key in nextChildMapping;\n\n      var prevChild = prevChildMapping[key];\n      var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in;\n\n      // item is new (entering)\n      if (hasNext && (!hasPrev || isLeaving)) {\n        // console.log('entering', key)\n        children[key] = (0, _react.cloneElement)(child, {\n          onExited: _this2.handleExited.bind(_this2, child),\n          in: true,\n          exit: _this2.getProp(child, 'exit', nextProps),\n          enter: _this2.getProp(child, 'enter', nextProps)\n        });\n      }\n      // item is old (exiting)\n      else if (!hasNext && hasPrev && !isLeaving) {\n          // console.log('leaving', key)\n          children[key] = (0, _react.cloneElement)(child, { in: false });\n        }\n        // item hasn't changed transition states\n        // copy over the last transition props;\n        else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n            // console.log('unchanged', key)\n            children[key] = (0, _react.cloneElement)(child, {\n              onExited: _this2.handleExited.bind(_this2, child),\n              in: prevChild.props.in,\n              exit: _this2.getProp(child, 'exit', nextProps),\n              enter: _this2.getProp(child, 'enter', nextProps)\n            });\n          }\n    });\n\n    this.setState({ children: children });\n  };\n\n  TransitionGroup.prototype.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    this.setState(function (state) {\n      var children = _extends({}, state.children);\n\n      delete children[child.key];\n      return { children: children };\n    });\n  };\n\n  TransitionGroup.prototype.render = function render() {\n    var _props = this.props,\n        Component = _props.component,\n        childFactory = _props.childFactory,\n        props = _objectWithoutProperties(_props, ['component', 'childFactory']);\n\n    var children = values(this.state.children).map(childFactory);\n\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return children;\n    }\n    return _react2.default.createElement(\n      Component,\n      props,\n      children\n    );\n  };\n\n  return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes2.default.object.isRequired\n};\n\n\nTransitionGroup.propTypes =  true ? propTypes : undefined;\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/TransitionGroup.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/utils/ChildMapping.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/react-transition-group/utils/ChildMapping.js ***!
+  \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  }\n\n  // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n  var nextKeysPending = Object.create(null);\n\n  var pendingKeys = [];\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i = void 0;\n  var childMapping = {};\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n    childMapping[nextKey] = getValueForKey(nextKey);\n  }\n\n  // Finally, add the keys which didn't appear before any key in `next`\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/utils/ChildMapping.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-transition-group/utils/PropTypes.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/react-transition-group/utils/PropTypes.js ***!
+  \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = undefined;\nexports.transitionTimeout = transitionTimeout;\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n  var timeoutPropName = 'transition' + transitionType + 'Timeout';\n  var enabledPropName = 'transition' + transitionType;\n\n  return function (props) {\n    // If the transition is enabled\n    if (props[enabledPropName]) {\n      // If no timeout duration is provided\n      if (props[timeoutPropName] == null) {\n        return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.');\n\n        // If the duration isn't a number\n      } else if (typeof props[timeoutPropName] !== 'number') {\n        return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n      }\n    }\n\n    return null;\n  };\n}\n\nvar timeoutsShape = exports.timeoutsShape = _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.shape({\n  enter: _propTypes2.default.number,\n  exit: _propTypes2.default.number\n}).isRequired]);\n\nvar classNamesShape = exports.classNamesShape = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  exit: _propTypes2.default.string,\n  active: _propTypes2.default.string\n}), _propTypes2.default.shape({\n  enter: _propTypes2.default.string,\n  enterDone: _propTypes2.default.string,\n  enterActive: _propTypes2.default.string,\n  exit: _propTypes2.default.string,\n  exitDone: _propTypes2.default.string,\n  exitActive: _propTypes2.default.string\n})]);\n\n//# sourceURL=webpack:///./node_modules/react-transition-group/utils/PropTypes.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react/cjs/react.development.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/react/cjs/react.development.js ***!
+  \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/** @license React v16.3.2\n * react.development.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar _assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ \"./node_modules/fbjs/lib/emptyObject.js\");\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\nvar checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.3.2';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol['for'];\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7;\nvar REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8;\nvar REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol['for']('react.strict_mode') : 0xeacc;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol['for']('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol['for']('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol['for']('react.async_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol['for']('react.forward_ref') : 0xead0;\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable === 'undefined') {\n    return null;\n  }\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n  return null;\n}\n\n// Relying on the `invariant()` implementation lets us\n// have preserve the format and params in the www builds.\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n  var printWarning = function (format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.warn(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  lowPriorityWarning = function (condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n    var warningKey = componentName + '.' + callerName;\n    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n      return;\n    }\n    warning(false, \"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n    didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n  }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nComponent.prototype.setState = function (partialState, callback) {\n  !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0;\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(Component.prototype, methodName, {\n      get: function () {\n        lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n        return undefined;\n      }\n    });\n  };\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\n\n/**\n * Convenience component with default shallow equality check for sCU.\n */\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n  var refObject = {\n    current: null\n  };\n  {\n    Object.seal(refObject);\n  }\n  return refObject;\n}\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\n\nvar specialPropKeyWarningShown = void 0;\nvar specialPropRefWarningShown = void 0;\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    if (!specialPropKeyWarningShown) {\n      specialPropKeyWarningShown = true;\n      warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n    }\n  };\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    if (!specialPropRefWarningShown) {\n      specialPropRefWarningShown = true;\n      warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n    }\n  };\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {};\n\n    // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    });\n    // self and source are DEV only properties.\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    });\n    // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\nfunction createElement(type, config, children) {\n  var propName = void 0;\n\n  // Reserved names are extracted\n  var props = {};\n\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n    }\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source;\n    // Remaining properties are added to a new props object\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n    props.children = childArray;\n  }\n\n  // Resolve default props\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n  {\n    if (key || ref) {\n      if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n        var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n        if (key) {\n          defineKeyPropWarningGetter(props, displayName);\n        }\n        if (ref) {\n          defineRefPropWarningGetter(props, displayName);\n        }\n      }\n    }\n  }\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://reactjs.org/docs/react-api.html#createfactory\n */\n\n\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n  return newElement;\n}\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\nfunction cloneElement(element, config, children) {\n  !!(element === null || element === undefined) ? invariant(false, 'React.cloneElement(...): The argument must be a React element, but you passed %s.', element) : void 0;\n\n  var propName = void 0;\n\n  // Original props are copied\n  var props = _assign({}, element.props);\n\n  // Reserved names are extracted\n  var key = element.key;\n  var ref = element.ref;\n  // Self is preserved since the owner is preserved.\n  var self = element._self;\n  // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n  var source = element._source;\n\n  // Owner will be preserved, unless ref is overridden\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    }\n\n    // Remaining properties override existing props\n    var defaultProps = void 0;\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nfunction isValidElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar ReactDebugCurrentFrame = {};\n\n{\n  // Component that is being worked on\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n    if (impl) {\n      return impl();\n    }\n    return null;\n  };\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = ('' + key).replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n\n  return '$' + escapedString;\n}\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n  return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\nvar POOL_SIZE = 10;\nvar traverseContextPool = [];\nfunction getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {\n  if (traverseContextPool.length) {\n    var traverseContext = traverseContextPool.pop();\n    traverseContext.result = mapResult;\n    traverseContext.keyPrefix = keyPrefix;\n    traverseContext.func = mapFunction;\n    traverseContext.context = mapContext;\n    traverseContext.count = 0;\n    return traverseContext;\n  } else {\n    return {\n      result: mapResult,\n      keyPrefix: keyPrefix,\n      func: mapFunction,\n      context: mapContext,\n      count: 0\n    };\n  }\n}\n\nfunction releaseTraverseContext(traverseContext) {\n  traverseContext.result = null;\n  traverseContext.keyPrefix = null;\n  traverseContext.func = null;\n  traverseContext.context = null;\n  traverseContext.count = 0;\n  if (traverseContextPool.length < POOL_SIZE) {\n    traverseContextPool.push(traverseContext);\n  }\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  var invokeCallback = false;\n\n  if (children === null) {\n    invokeCallback = true;\n  } else {\n    switch (type) {\n      case 'string':\n      case 'number':\n        invokeCallback = true;\n        break;\n      case 'object':\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = true;\n        }\n    }\n  }\n\n  if (invokeCallback) {\n    callback(traverseContext, children,\n    // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows.\n    nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n    return 1;\n  }\n\n  var child = void 0;\n  var nextName = void 0;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getComponentKey(child, i);\n      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n    if (typeof iteratorFn === 'function') {\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === children.entries) {\n          !didWarnAboutMaps ? warning(false, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum()) : void 0;\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(children);\n      var step = void 0;\n      var ii = 0;\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getComponentKey(child, ii++);\n        subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n      }\n    } else if (type === 'object') {\n      var addendum = '';\n      {\n        addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();\n      }\n      var childrenString = '' + children;\n      invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n  if (children == null) {\n    return 0;\n  }\n\n  return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof component === 'object' && component !== null && component.key != null) {\n    // Explicit key\n    return escape(component.key);\n  }\n  // Implicit key determined by the index in the set\n  return index.toString(36);\n}\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n  var func = bookKeeping.func,\n      context = bookKeeping.context;\n\n  func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  if (children == null) {\n    return children;\n  }\n  var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);\n  traverseAllChildren(children, forEachSingleChild, traverseContext);\n  releaseTraverseContext(traverseContext);\n}\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n  var result = bookKeeping.result,\n      keyPrefix = bookKeeping.keyPrefix,\n      func = bookKeeping.func,\n      context = bookKeeping.context;\n\n\n  var mappedChild = func.call(context, child, bookKeeping.count++);\n  if (Array.isArray(mappedChild)) {\n    mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n  } else if (mappedChild != null) {\n    if (isValidElement(mappedChild)) {\n      mappedChild = cloneAndReplaceKey(mappedChild,\n      // Keep both the (mapped) and old keys if they differ, just as\n      // traverseAllChildren used to do for objects as children\n      keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n    }\n    result.push(mappedChild);\n  }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n  var escapedPrefix = '';\n  if (prefix != null) {\n    escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n  }\n  var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);\n  traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n  releaseTraverseContext(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n  return result;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n  return traverseAllChildren(children, emptyFunction.thatReturnsNull, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.toarray\n */\nfunction toArray(children) {\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n  return result;\n}\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n  !isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;\n  return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n  if (calculateChangedBits === undefined) {\n    calculateChangedBits = null;\n  } else {\n    {\n      !(calculateChangedBits === null || typeof calculateChangedBits === 'function') ? warning(false, 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits) : void 0;\n    }\n  }\n\n  var context = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _calculateChangedBits: calculateChangedBits,\n    _defaultValue: defaultValue,\n    _currentValue: defaultValue,\n    _changedBits: 0,\n    // These are circular\n    Provider: null,\n    Consumer: null\n  };\n\n  context.Provider = {\n    $$typeof: REACT_PROVIDER_TYPE,\n    _context: context\n  };\n  context.Consumer = context;\n\n  {\n    context._currentRenderer = null;\n  }\n\n  return context;\n}\n\nfunction forwardRef(render) {\n  {\n    !(typeof render === 'function') ? warning(false, 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render) : void 0;\n  }\n\n  return {\n    $$typeof: REACT_FORWARD_REF_TYPE,\n    render: render\n  };\n}\n\nvar describeComponentFrame = function (name, source, ownerName) {\n  return '\\n    in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' ||\n  // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_ASYNC_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\nfunction getComponentName(fiber) {\n  var type = fiber.type;\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name;\n  }\n  if (typeof type === 'string') {\n    return type;\n  }\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'ReactFragment';\n    case REACT_PORTAL_TYPE:\n      return 'ReactPortal';\n    case REACT_CALL_TYPE:\n      return 'ReactCall';\n    case REACT_RETURN_TYPE:\n      return 'ReactReturn';\n  }\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        var functionName = type.render.displayName || type.render.name || '';\n        return functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef';\n    }\n  }\n  return null;\n}\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\nvar currentlyValidatingElement = void 0;\nvar propTypesMisspellWarningShown = void 0;\n\nvar getDisplayName = function () {};\nvar getStackAddendum = function () {};\n\n{\n  currentlyValidatingElement = null;\n\n  propTypesMisspellWarningShown = false;\n\n  getDisplayName = function (element) {\n    if (element == null) {\n      return '#empty';\n    } else if (typeof element === 'string' || typeof element === 'number') {\n      return '#text';\n    } else if (typeof element.type === 'string') {\n      return element.type;\n    } else if (element.type === REACT_FRAGMENT_TYPE) {\n      return 'React.Fragment';\n    } else {\n      return element.type.displayName || element.type.name || 'Unknown';\n    }\n  };\n\n  getStackAddendum = function () {\n    var stack = '';\n    if (currentlyValidatingElement) {\n      var name = getDisplayName(currentlyValidatingElement);\n      var owner = currentlyValidatingElement._owner;\n      stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner));\n    }\n    stack += ReactDebugCurrentFrame.getStackAddendum() || '';\n    return stack;\n  };\n}\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = getComponentName(ReactCurrentOwner.current);\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n  if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n    var source = elementProps.__source;\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n  return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n    if (parentName) {\n      info = '\\n\\nCheck the top-level render call using <' + parentName + '>.';\n    }\n  }\n  return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n  element._store.validated = true;\n\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n  // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n  var childOwner = '';\n  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.';\n  }\n\n  currentlyValidatingElement = element;\n  {\n    warning(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum());\n  }\n  currentlyValidatingElement = null;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n  if (Array.isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n      if (isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step = void 0;\n        while (!(step = iterator.next()).done) {\n          if (isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n  var componentClass = element.type;\n  if (typeof componentClass !== 'function') {\n    return;\n  }\n  var name = componentClass.displayName || componentClass.name;\n  var propTypes = componentClass.propTypes;\n  if (propTypes) {\n    currentlyValidatingElement = element;\n    checkPropTypes(propTypes, element.props, 'prop', name, getStackAddendum);\n    currentlyValidatingElement = null;\n  } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n    propTypesMisspellWarningShown = true;\n    warning(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');\n  }\n  if (typeof componentClass.getDefaultProps === 'function') {\n    !componentClass.getDefaultProps.isReactClassApproved ? warning(false, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\n  }\n}\n\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\nfunction validateFragmentProps(fragment) {\n  currentlyValidatingElement = fragment;\n\n  var keys = Object.keys(fragment.props);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (key !== 'children' && key !== 'key') {\n      warning(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum());\n      break;\n    }\n  }\n\n  if (fragment.ref !== null) {\n    warning(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum());\n  }\n\n  currentlyValidatingElement = null;\n}\n\nfunction createElementWithValidation(type, props, children) {\n  var validType = isValidElementType(type);\n\n  // We warn in this case but don't throw. We expect the element creation to\n  // succeed and there will likely be errors in render.\n  if (!validType) {\n    var info = '';\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n    }\n\n    var sourceInfo = getSourceInfoErrorAddendum(props);\n    if (sourceInfo) {\n      info += sourceInfo;\n    } else {\n      info += getDeclarationErrorAddendum();\n    }\n\n    info += getStackAddendum() || '';\n\n    var typeString = void 0;\n    if (type === null) {\n      typeString = 'null';\n    } else if (Array.isArray(type)) {\n      typeString = 'array';\n    } else {\n      typeString = typeof type;\n    }\n\n    warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n  }\n\n  var element = createElement.apply(this, arguments);\n\n  // The result can be nullish if a mock or a custom function is used.\n  // TODO: Drop this when these are no longer allowed as the type argument.\n  if (element == null) {\n    return element;\n  }\n\n  // Skip key warning if the type isn't valid since our key validation logic\n  // doesn't expect a non-string/function type and can throw confusing errors.\n  // We don't want exception behavior to differ between dev and prod.\n  // (Rendering will throw with a helpful message and as soon as the type is\n  // fixed, the key warnings will appear.)\n  if (validType) {\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], type);\n    }\n  }\n\n  if (type === REACT_FRAGMENT_TYPE) {\n    validateFragmentProps(element);\n  } else {\n    validatePropTypes(element);\n  }\n\n  return element;\n}\n\nfunction createFactoryWithValidation(type) {\n  var validatedFactory = createElementWithValidation.bind(null, type);\n  validatedFactory.type = type;\n  // Legacy hook: remove it\n  {\n    Object.defineProperty(validatedFactory, 'type', {\n      enumerable: false,\n      get: function () {\n        lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n        Object.defineProperty(this, 'type', {\n          value: type\n        });\n        return type;\n      }\n    });\n  }\n\n  return validatedFactory;\n}\n\nfunction cloneElementWithValidation(element, props, children) {\n  var newElement = cloneElement.apply(this, arguments);\n  for (var i = 2; i < arguments.length; i++) {\n    validateChildKeys(arguments[i], newElement.type);\n  }\n  validatePropTypes(newElement);\n  return newElement;\n}\n\nvar React = {\n  Children: {\n    map: mapChildren,\n    forEach: forEachChildren,\n    count: countChildren,\n    toArray: toArray,\n    only: onlyChild\n  },\n\n  createRef: createRef,\n  Component: Component,\n  PureComponent: PureComponent,\n\n  createContext: createContext,\n  forwardRef: forwardRef,\n\n  Fragment: REACT_FRAGMENT_TYPE,\n  StrictMode: REACT_STRICT_MODE_TYPE,\n  unstable_AsyncMode: REACT_ASYNC_MODE_TYPE,\n\n  createElement: createElementWithValidation,\n  cloneElement: cloneElementWithValidation,\n  createFactory: createFactoryWithValidation,\n  isValidElement: isValidElement,\n\n  version: ReactVersion,\n\n  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n    ReactCurrentOwner: ReactCurrentOwner,\n    // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n    assign: _assign\n  }\n};\n\n{\n  _assign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, {\n    // These should not be included in production.\n    ReactDebugCurrentFrame: ReactDebugCurrentFrame,\n    // Shim for React DOM 16.0.0 which still destructured (but not used) this.\n    // TODO: remove in React 17.0.\n    ReactComponentTreeHook: {}\n  });\n}\n\n\n\nvar React$2 = Object.freeze({\n\tdefault: React\n});\n\nvar React$3 = ( React$2 && React ) || React$2;\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar react = React$3['default'] ? React$3['default'] : React$3;\n\nmodule.exports = react;\n  })();\n}\n\n\n//# sourceURL=webpack:///./node_modules/react/cjs/react.development.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react/index.js":
+/*!*************************************!*\
+  !*** ./node_modules/react/index.js ***!
+  \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react.development.js */ \"./node_modules/react/cjs/react.development.js\");\n}\n\n\n//# sourceURL=webpack:///./node_modules/react/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/getDisplayName.js":
+/*!**************************************************!*\
+  !*** ./node_modules/recompose/getDisplayName.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar getDisplayName = function getDisplayName(Component) {\n  if (typeof Component === 'string') {\n    return Component;\n  }\n\n  if (!Component) {\n    return undefined;\n  }\n\n  return Component.displayName || Component.name || 'Component';\n};\n\nexports.default = getDisplayName;\n\n//# sourceURL=webpack:///./node_modules/recompose/getDisplayName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/pure.js":
+/*!****************************************!*\
+  !*** ./node_modules/recompose/pure.js ***!
+  \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _shouldUpdate = __webpack_require__(/*! ./shouldUpdate */ \"./node_modules/recompose/shouldUpdate.js\");\n\nvar _shouldUpdate2 = _interopRequireDefault(_shouldUpdate);\n\nvar _shallowEqual = __webpack_require__(/*! ./shallowEqual */ \"./node_modules/recompose/shallowEqual.js\");\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _setDisplayName = __webpack_require__(/*! ./setDisplayName */ \"./node_modules/recompose/setDisplayName.js\");\n\nvar _setDisplayName2 = _interopRequireDefault(_setDisplayName);\n\nvar _wrapDisplayName = __webpack_require__(/*! ./wrapDisplayName */ \"./node_modules/recompose/wrapDisplayName.js\");\n\nvar _wrapDisplayName2 = _interopRequireDefault(_wrapDisplayName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar pure = function pure(BaseComponent) {\n  var hoc = (0, _shouldUpdate2.default)(function (props, nextProps) {\n    return !(0, _shallowEqual2.default)(props, nextProps);\n  });\n\n  if (true) {\n    return (0, _setDisplayName2.default)((0, _wrapDisplayName2.default)(BaseComponent, 'pure'))(hoc(BaseComponent));\n  }\n\n  return hoc(BaseComponent);\n};\n\nexports.default = pure;\n\n//# sourceURL=webpack:///./node_modules/recompose/pure.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/setDisplayName.js":
+/*!**************************************************!*\
+  !*** ./node_modules/recompose/setDisplayName.js ***!
+  \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _setStatic = __webpack_require__(/*! ./setStatic */ \"./node_modules/recompose/setStatic.js\");\n\nvar _setStatic2 = _interopRequireDefault(_setStatic);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar setDisplayName = function setDisplayName(displayName) {\n  return (0, _setStatic2.default)('displayName', displayName);\n};\n\nexports.default = setDisplayName;\n\n//# sourceURL=webpack:///./node_modules/recompose/setDisplayName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/setStatic.js":
+/*!*********************************************!*\
+  !*** ./node_modules/recompose/setStatic.js ***!
+  \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar setStatic = function setStatic(key, value) {\n  return function (BaseComponent) {\n    /* eslint-disable no-param-reassign */\n    BaseComponent[key] = value;\n    /* eslint-enable no-param-reassign */\n    return BaseComponent;\n  };\n};\n\nexports.default = setStatic;\n\n//# sourceURL=webpack:///./node_modules/recompose/setStatic.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/shallowEqual.js":
+/*!************************************************!*\
+  !*** ./node_modules/recompose/shallowEqual.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _shallowEqual = __webpack_require__(/*! fbjs/lib/shallowEqual */ \"./node_modules/fbjs/lib/shallowEqual.js\");\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _shallowEqual2.default;\n\n//# sourceURL=webpack:///./node_modules/recompose/shallowEqual.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/shouldUpdate.js":
+/*!************************************************!*\
+  !*** ./node_modules/recompose/shouldUpdate.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _setDisplayName = __webpack_require__(/*! ./setDisplayName */ \"./node_modules/recompose/setDisplayName.js\");\n\nvar _setDisplayName2 = _interopRequireDefault(_setDisplayName);\n\nvar _wrapDisplayName = __webpack_require__(/*! ./wrapDisplayName */ \"./node_modules/recompose/wrapDisplayName.js\");\n\nvar _wrapDisplayName2 = _interopRequireDefault(_wrapDisplayName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar shouldUpdate = function shouldUpdate(test) {\n  return function (BaseComponent) {\n    var factory = (0, _react.createFactory)(BaseComponent);\n\n    var ShouldUpdate = function (_Component) {\n      (0, _inherits3.default)(ShouldUpdate, _Component);\n\n      function ShouldUpdate() {\n        (0, _classCallCheck3.default)(this, ShouldUpdate);\n        return (0, _possibleConstructorReturn3.default)(this, _Component.apply(this, arguments));\n      }\n\n      ShouldUpdate.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return test(this.props, nextProps);\n      };\n\n      ShouldUpdate.prototype.render = function render() {\n        return factory(this.props);\n      };\n\n      return ShouldUpdate;\n    }(_react.Component);\n\n    if (true) {\n      return (0, _setDisplayName2.default)((0, _wrapDisplayName2.default)(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n    }\n    return ShouldUpdate;\n  };\n};\n\nexports.default = shouldUpdate;\n\n//# sourceURL=webpack:///./node_modules/recompose/shouldUpdate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/recompose/wrapDisplayName.js":
+/*!***************************************************!*\
+  !*** ./node_modules/recompose/wrapDisplayName.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getDisplayName = __webpack_require__(/*! ./getDisplayName */ \"./node_modules/recompose/getDisplayName.js\");\n\nvar _getDisplayName2 = _interopRequireDefault(_getDisplayName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n  return hocName + '(' + (0, _getDisplayName2.default)(BaseComponent) + ')';\n};\n\nexports.default = wrapDisplayName;\n\n//# sourceURL=webpack:///./node_modules/recompose/wrapDisplayName.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/index.js":
+/*!******************************************!*\
+  !*** ./node_modules/rxjs/_esm5/index.js ***!
+  \******************************************/
+/*! exports provided: Observable, ConnectableObservable, GroupedObservable, observable, Subject, BehaviorSubject, ReplaySubject, AsyncSubject, asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, VirtualTimeScheduler, VirtualAction, Scheduler, Subscription, Subscriber, Notification, pipe, noop, identity, isObservable, ArgumentOutOfRangeError, EmptyError, ObjectUnsubscribedError, UnsubscriptionError, TimeoutError, bindCallback, bindNodeCallback, combineLatest, concat, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, iif, interval, merge, never, of, onErrorResumeNext, pairs, race, range, throwError, timer, using, zip, EMPTY, NEVER, config */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Observable\", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"]; });\n\n/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/observable/ConnectableObservable */ \"./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConnectableObservable\", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__[\"ConnectableObservable\"]; });\n\n/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/operators/groupBy */ \"./node_modules/rxjs/_esm5/internal/operators/groupBy.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GroupedObservable\", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__[\"GroupedObservable\"]; });\n\n/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"observable\", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__[\"observable\"]; });\n\n/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Subject\", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__[\"Subject\"]; });\n\n/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/BehaviorSubject */ \"./node_modules/rxjs/_esm5/internal/BehaviorSubject.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BehaviorSubject\", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__[\"BehaviorSubject\"]; });\n\n/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/ReplaySubject */ \"./node_modules/rxjs/_esm5/internal/ReplaySubject.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReplaySubject\", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__[\"ReplaySubject\"]; });\n\n/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/AsyncSubject */ \"./node_modules/rxjs/_esm5/internal/AsyncSubject.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AsyncSubject\", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__[\"AsyncSubject\"]; });\n\n/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/scheduler/asap */ \"./node_modules/rxjs/_esm5/internal/scheduler/asap.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"asapScheduler\", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__[\"asap\"]; });\n\n/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internal/scheduler/async */ \"./node_modules/rxjs/_esm5/internal/scheduler/async.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"asyncScheduler\", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__[\"async\"]; });\n\n/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internal/scheduler/queue */ \"./node_modules/rxjs/_esm5/internal/scheduler/queue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"queueScheduler\", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__[\"queue\"]; });\n\n/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./internal/scheduler/animationFrame */ \"./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"animationFrameScheduler\", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__[\"animationFrame\"]; });\n\n/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./internal/scheduler/VirtualTimeScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VirtualTimeScheduler\", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__[\"VirtualTimeScheduler\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VirtualAction\", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__[\"VirtualAction\"]; });\n\n/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internal/Scheduler */ \"./node_modules/rxjs/_esm5/internal/Scheduler.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scheduler\", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__[\"Scheduler\"]; });\n\n/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internal/Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Subscription\", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__[\"Subscription\"]; });\n\n/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internal/Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Subscriber\", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__[\"Subscriber\"]; });\n\n/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internal/Notification */ \"./node_modules/rxjs/_esm5/internal/Notification.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Notification\", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__[\"Notification\"]; });\n\n/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internal/util/pipe */ \"./node_modules/rxjs/_esm5/internal/util/pipe.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pipe\", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__[\"pipe\"]; });\n\n/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internal/util/noop */ \"./node_modules/rxjs/_esm5/internal/util/noop.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__[\"noop\"]; });\n\n/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internal/util/identity */ \"./node_modules/rxjs/_esm5/internal/util/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__[\"identity\"]; });\n\n/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internal/util/isObservable */ \"./node_modules/rxjs/_esm5/internal/util/isObservable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObservable\", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__[\"isObservable\"]; });\n\n/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./internal/util/ArgumentOutOfRangeError */ \"./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ArgumentOutOfRangeError\", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__[\"ArgumentOutOfRangeError\"]; });\n\n/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internal/util/EmptyError */ \"./node_modules/rxjs/_esm5/internal/util/EmptyError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmptyError\", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__[\"EmptyError\"]; });\n\n/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./internal/util/ObjectUnsubscribedError */ \"./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ObjectUnsubscribedError\", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__[\"ObjectUnsubscribedError\"]; });\n\n/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internal/util/UnsubscriptionError */ \"./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UnsubscriptionError\", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__[\"UnsubscriptionError\"]; });\n\n/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internal/util/TimeoutError */ \"./node_modules/rxjs/_esm5/internal/util/TimeoutError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeoutError\", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__[\"TimeoutError\"]; });\n\n/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./internal/observable/bindCallback */ \"./node_modules/rxjs/_esm5/internal/observable/bindCallback.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bindCallback\", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__[\"bindCallback\"]; });\n\n/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./internal/observable/bindNodeCallback */ \"./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bindNodeCallback\", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__[\"bindNodeCallback\"]; });\n\n/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./internal/observable/combineLatest */ \"./node_modules/rxjs/_esm5/internal/observable/combineLatest.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"combineLatest\", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__[\"combineLatest\"]; });\n\n/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./internal/observable/concat */ \"./node_modules/rxjs/_esm5/internal/observable/concat.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concat\", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__[\"concat\"]; });\n\n/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./internal/observable/defer */ \"./node_modules/rxjs/_esm5/internal/observable/defer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__[\"defer\"]; });\n\n/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./internal/observable/empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"empty\", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__[\"empty\"]; });\n\n/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./internal/observable/forkJoin */ \"./node_modules/rxjs/_esm5/internal/observable/forkJoin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forkJoin\", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__[\"forkJoin\"]; });\n\n/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./internal/observable/from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"from\", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__[\"from\"]; });\n\n/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./internal/observable/fromEvent */ \"./node_modules/rxjs/_esm5/internal/observable/fromEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fromEvent\", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__[\"fromEvent\"]; });\n\n/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./internal/observable/fromEventPattern */ \"./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fromEventPattern\", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__[\"fromEventPattern\"]; });\n\n/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./internal/observable/generate */ \"./node_modules/rxjs/_esm5/internal/observable/generate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__[\"generate\"]; });\n\n/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./internal/observable/iif */ \"./node_modules/rxjs/_esm5/internal/observable/iif.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"iif\", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__[\"iif\"]; });\n\n/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./internal/observable/interval */ \"./node_modules/rxjs/_esm5/internal/observable/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__[\"interval\"]; });\n\n/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./internal/observable/merge */ \"./node_modules/rxjs/_esm5/internal/observable/merge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__[\"merge\"]; });\n\n/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./internal/observable/never */ \"./node_modules/rxjs/_esm5/internal/observable/never.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"never\", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__[\"never\"]; });\n\n/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./internal/observable/of */ \"./node_modules/rxjs/_esm5/internal/observable/of.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"of\", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__[\"of\"]; });\n\n/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./internal/observable/onErrorResumeNext */ \"./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onErrorResumeNext\", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__[\"onErrorResumeNext\"]; });\n\n/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./internal/observable/pairs */ \"./node_modules/rxjs/_esm5/internal/observable/pairs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__[\"pairs\"]; });\n\n/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./internal/observable/race */ \"./node_modules/rxjs/_esm5/internal/observable/race.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"race\", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_44__[\"race\"]; });\n\n/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./internal/observable/range */ \"./node_modules/rxjs/_esm5/internal/observable/range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_45__[\"range\"]; });\n\n/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./internal/observable/throwError */ \"./node_modules/rxjs/_esm5/internal/observable/throwError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"throwError\", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_46__[\"throwError\"]; });\n\n/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./internal/observable/timer */ \"./node_modules/rxjs/_esm5/internal/observable/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_47__[\"timer\"]; });\n\n/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./internal/observable/using */ \"./node_modules/rxjs/_esm5/internal/observable/using.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"using\", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_48__[\"using\"]; });\n\n/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./internal/observable/zip */ \"./node_modules/rxjs/_esm5/internal/observable/zip.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_49__[\"zip\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__[\"EMPTY\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NEVER\", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__[\"NEVER\"]; });\n\n/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./internal/config */ \"./node_modules/rxjs/_esm5/internal/config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_50__[\"config\"]; });\n\n/* Observable */\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\n\n\n\n\n/* Subjects */\n\n\n\n\n/* Schedulers */\n\n\n\n\n\n\n/* Subscription */\n\n\n/* Notification */\n\n/* Utils */\n\n\n\n\n/* Error types */\n\n\n\n\n\n/* Static observable creation exports */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Constants */\n\n\n/* Config */\n\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/AsyncSubject.js ***!
+  \**********************************************************/
+/*! exports provided: AsyncSubject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsyncSubject\", function() { return AsyncSubject; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */\n\n\n\n/**\n * @class AsyncSubject<T>\n */\nvar AsyncSubject = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AsyncSubject, _super);\n    function AsyncSubject() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.value = null;\n        _this.hasNext = false;\n        _this.hasCompleted = false;\n        return _this;\n    }\n    /** @deprecated This is an internal implementation detail, do not use. */\n    AsyncSubject.prototype._subscribe = function (subscriber) {\n        if (this.hasError) {\n            subscriber.error(this.thrownError);\n            return _Subscription__WEBPACK_IMPORTED_MODULE_2__[\"Subscription\"].EMPTY;\n        }\n        else if (this.hasCompleted && this.hasNext) {\n            subscriber.next(this.value);\n            subscriber.complete();\n            return _Subscription__WEBPACK_IMPORTED_MODULE_2__[\"Subscription\"].EMPTY;\n        }\n        return _super.prototype._subscribe.call(this, subscriber);\n    };\n    AsyncSubject.prototype.next = function (value) {\n        if (!this.hasCompleted) {\n            this.value = value;\n            this.hasNext = true;\n        }\n    };\n    AsyncSubject.prototype.error = function (error) {\n        if (!this.hasCompleted) {\n            _super.prototype.error.call(this, error);\n        }\n    };\n    AsyncSubject.prototype.complete = function () {\n        this.hasCompleted = true;\n        if (this.hasNext) {\n            _super.prototype.next.call(this, this.value);\n        }\n        _super.prototype.complete.call(this);\n    };\n    return AsyncSubject;\n}(_Subject__WEBPACK_IMPORTED_MODULE_1__[\"Subject\"]));\n\n//# sourceMappingURL=AsyncSubject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/AsyncSubject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/BehaviorSubject.js ***!
+  \*************************************************************/
+/*! exports provided: BehaviorSubject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BehaviorSubject\", function() { return BehaviorSubject; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ \"./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js\");\n/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\n\n\n\n/**\n * @class BehaviorSubject<T>\n */\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](BehaviorSubject, _super);\n    function BehaviorSubject(_value) {\n        var _this = _super.call(this) || this;\n        _this._value = _value;\n        return _this;\n    }\n    Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n        get: function () {\n            return this.getValue();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /** @deprecated This is an internal implementation detail, do not use. */\n    BehaviorSubject.prototype._subscribe = function (subscriber) {\n        var subscription = _super.prototype._subscribe.call(this, subscriber);\n        if (subscription && !subscription.closed) {\n            subscriber.next(this._value);\n        }\n        return subscription;\n    };\n    BehaviorSubject.prototype.getValue = function () {\n        if (this.hasError) {\n            throw this.thrownError;\n        }\n        else if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__[\"ObjectUnsubscribedError\"]();\n        }\n        else {\n            return this._value;\n        }\n    };\n    BehaviorSubject.prototype.next = function (value) {\n        _super.prototype.next.call(this, this._value = value);\n    };\n    return BehaviorSubject;\n}(_Subject__WEBPACK_IMPORTED_MODULE_1__[\"Subject\"]));\n\n//# sourceMappingURL=BehaviorSubject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/BehaviorSubject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/InnerSubscriber.js ***!
+  \*************************************************************/
+/*! exports provided: InnerSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InnerSubscriber\", function() { return InnerSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](InnerSubscriber, _super);\n    function InnerSubscriber(parent, outerValue, outerIndex) {\n        var _this = _super.call(this) || this;\n        _this.parent = parent;\n        _this.outerValue = outerValue;\n        _this.outerIndex = outerIndex;\n        _this.index = 0;\n        return _this;\n    }\n    InnerSubscriber.prototype._next = function (value) {\n        this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n    };\n    InnerSubscriber.prototype._error = function (error) {\n        this.parent.notifyError(error, this);\n        this.unsubscribe();\n    };\n    InnerSubscriber.prototype._complete = function () {\n        this.parent.notifyComplete(this);\n        this.unsubscribe();\n    };\n    return InnerSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n\n//# sourceMappingURL=InnerSubscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/InnerSubscriber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Notification.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Notification.js ***!
+  \**********************************************************/
+/*! exports provided: Notification */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Notification\", function() { return Notification; });\n/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable/empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./observable/of */ \"./node_modules/rxjs/_esm5/internal/observable/of.js\");\n/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./observable/throwError */ \"./node_modules/rxjs/_esm5/internal/observable/throwError.js\");\n/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\n\n\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification<T>\n */\nvar Notification = /*@__PURE__*/ (function () {\n    function Notification(kind, value, error) {\n        this.kind = kind;\n        this.value = value;\n        this.error = error;\n        this.hasValue = kind === 'N';\n    }\n    /**\n     * Delivers to the given `observer` the value wrapped by this Notification.\n     * @param {Observer} observer\n     * @return\n     */\n    Notification.prototype.observe = function (observer) {\n        switch (this.kind) {\n            case 'N':\n                return observer.next && observer.next(this.value);\n            case 'E':\n                return observer.error && observer.error(this.error);\n            case 'C':\n                return observer.complete && observer.complete();\n        }\n    };\n    /**\n     * Given some {@link Observer} callbacks, deliver the value represented by the\n     * current Notification to the correctly corresponding callback.\n     * @param {function(value: T): void} next An Observer `next` callback.\n     * @param {function(err: any): void} [error] An Observer `error` callback.\n     * @param {function(): void} [complete] An Observer `complete` callback.\n     * @return {any}\n     */\n    Notification.prototype.do = function (next, error, complete) {\n        var kind = this.kind;\n        switch (kind) {\n            case 'N':\n                return next && next(this.value);\n            case 'E':\n                return error && error(this.error);\n            case 'C':\n                return complete && complete();\n        }\n    };\n    /**\n     * Takes an Observer or its individual callback functions, and calls `observe`\n     * or `do` methods accordingly.\n     * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n     * the `next` callback.\n     * @param {function(err: any): void} [error] An Observer `error` callback.\n     * @param {function(): void} [complete] An Observer `complete` callback.\n     * @return {any}\n     */\n    Notification.prototype.accept = function (nextOrObserver, error, complete) {\n        if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n            return this.observe(nextOrObserver);\n        }\n        else {\n            return this.do(nextOrObserver, error, complete);\n        }\n    };\n    /**\n     * Returns a simple Observable that just delivers the notification represented\n     * by this Notification instance.\n     * @return {any}\n     */\n    Notification.prototype.toObservable = function () {\n        var kind = this.kind;\n        switch (kind) {\n            case 'N':\n                return Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__[\"of\"])(this.value);\n            case 'E':\n                return Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__[\"throwError\"])(this.error);\n            case 'C':\n                return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_0__[\"empty\"])();\n        }\n        throw new Error('unexpected notification kind value');\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `next` from a\n     * given value.\n     * @param {T} value The `next` value.\n     * @return {Notification<T>} The \"next\" Notification representing the\n     * argument.\n     * @nocollapse\n     */\n    Notification.createNext = function (value) {\n        if (typeof value !== 'undefined') {\n            return new Notification('N', value);\n        }\n        return Notification.undefinedValueNotification;\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `error` from a\n     * given error.\n     * @param {any} [err] The `error` error.\n     * @return {Notification<T>} The \"error\" Notification representing the\n     * argument.\n     * @nocollapse\n     */\n    Notification.createError = function (err) {\n        return new Notification('E', undefined, err);\n    };\n    /**\n     * A shortcut to create a Notification instance of the type `complete`.\n     * @return {Notification<any>} The valueless \"complete\" Notification.\n     * @nocollapse\n     */\n    Notification.createComplete = function () {\n        return Notification.completeNotification;\n    };\n    Notification.completeNotification = new Notification('C');\n    Notification.undefinedValueNotification = new Notification('N', undefined);\n    return Notification;\n}());\n\n//# sourceMappingURL=Notification.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Notification.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Observable.js":
+/*!********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Observable.js ***!
+  \********************************************************/
+/*! exports provided: Observable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Observable\", function() { return Observable; });\n/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/toSubscriber */ \"./node_modules/rxjs/_esm5/internal/util/toSubscriber.js\");\n/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/pipe */ \"./node_modules/rxjs/_esm5/internal/util/pipe.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config */ \"./node_modules/rxjs/_esm5/internal/config.js\");\n/** PURE_IMPORTS_START _util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\n\n\n\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nvar Observable = /*@__PURE__*/ (function () {\n    /**\n     * @constructor\n     * @param {Function} subscribe the function that is called when the Observable is\n     * initially subscribed to. This function is given a Subscriber, to which new values\n     * can be `next`ed, or an `error` method can be called to raise an error, or\n     * `complete` can be called to notify of a successful completion.\n     */\n    function Observable(subscribe) {\n        /** Internal implementation detail, do not use directly. */\n        this._isScalar = false;\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    /**\n     * Creates a new Observable, with this Observable as the source, and the passed\n     * operator defined as the new observable's operator.\n     * @method lift\n     * @param {Operator} operator the operator defining the operation to take on the observable\n     * @return {Observable} a new observable with the Operator applied\n     */\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    /**\n     * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n     *\n     * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n     *\n     * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n     * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n     * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n     * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n     * thought.\n     *\n     * Apart from starting the execution of an Observable, this method allows you to listen for values\n     * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n     * following ways.\n     *\n     * The first way is creating an object that implements {@link Observer} interface. It should have methods\n     * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n     * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n     * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n     * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n     * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n     * be left uncaught.\n     *\n     * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n     * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n     * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n     * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n     * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n     * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n     *\n     * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n     * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n     * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n     * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n     *\n     * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n     * It is an Observable itself that decides when these functions will be called. For example {@link of}\n     * by default emits all its values synchronously. Always check documentation for how given Observable\n     * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n     *\n     * @example <caption>Subscribe with an Observer</caption>\n     * const sumObserver = {\n     *   sum: 0,\n     *   next(value) {\n     *     console.log('Adding: ' + value);\n     *     this.sum = this.sum + value;\n     *   },\n     *   error() { // We actually could just remove this method,\n     *   },        // since we do not really care about errors right now.\n     *   complete() {\n     *     console.log('Sum equals: ' + this.sum);\n     *   }\n     * };\n     *\n     * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n     * .subscribe(sumObserver);\n     *\n     * // Logs:\n     * // \"Adding: 1\"\n     * // \"Adding: 2\"\n     * // \"Adding: 3\"\n     * // \"Sum equals: 6\"\n     *\n     *\n     * @example <caption>Subscribe with functions</caption>\n     * let sum = 0;\n     *\n     * Rx.Observable.of(1, 2, 3)\n     * .subscribe(\n     *   function(value) {\n     *     console.log('Adding: ' + value);\n     *     sum = sum + value;\n     *   },\n     *   undefined,\n     *   function() {\n     *     console.log('Sum equals: ' + sum);\n     *   }\n     * );\n     *\n     * // Logs:\n     * // \"Adding: 1\"\n     * // \"Adding: 2\"\n     * // \"Adding: 3\"\n     * // \"Sum equals: 6\"\n     *\n     *\n     * @example <caption>Cancel a subscription</caption>\n     * const subscription = Rx.Observable.interval(1000).subscribe(\n     *   num => console.log(num),\n     *   undefined,\n     *   () => console.log('completed!') // Will not be called, even\n     * );                                // when cancelling subscription\n     *\n     *\n     * setTimeout(() => {\n     *   subscription.unsubscribe();\n     *   console.log('unsubscribed!');\n     * }, 2500);\n     *\n     * // Logs:\n     * // 0 after 1s\n     * // 1 after 2s\n     * // \"unsubscribed!\" after 2.5s\n     *\n     *\n     * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n     *  or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n     *  Observable.\n     * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n     *  the error will be thrown as unhandled.\n     * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n     * @return {ISubscription} a subscription reference to the registered handlers\n     * @method subscribe\n     */\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var operator = this.operator;\n        var sink = Object(_util_toSubscriber__WEBPACK_IMPORTED_MODULE_0__[\"toSubscriber\"])(observerOrNext, error, complete);\n        if (operator) {\n            operator.call(sink, this.source);\n        }\n        else {\n            sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n        }\n        if (_config__WEBPACK_IMPORTED_MODULE_3__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n            if (sink.syncErrorThrowable) {\n                sink.syncErrorThrowable = false;\n                if (sink.syncErrorThrown) {\n                    throw sink.syncErrorValue;\n                }\n            }\n        }\n        return sink;\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            if (_config__WEBPACK_IMPORTED_MODULE_3__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n                sink.syncErrorThrown = true;\n                sink.syncErrorValue = err;\n            }\n            sink.error(err);\n        }\n    };\n    /**\n     * @method forEach\n     * @param {Function} next a handler for each value emitted by the observable\n     * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n     * @return {Promise} a promise that either resolves on observable completion or\n     *  rejects with the handled error\n     */\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            // Must be declared in a separate statement to avoid a RefernceError when\n            // accessing subscription below in the closure due to Temporal Dead Zone.\n            var subscription;\n            subscription = _this.subscribe(function (value) {\n                try {\n                    next(value);\n                }\n                catch (err) {\n                    reject(err);\n                    if (subscription) {\n                        subscription.unsubscribe();\n                    }\n                }\n            }, reject, resolve);\n        });\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    Observable.prototype._subscribe = function (subscriber) {\n        var source = this.source;\n        return source && source.subscribe(subscriber);\n    };\n    /**\n     * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n     * @method Symbol.observable\n     * @return {Observable} this instance of the observable\n     */\n    Observable.prototype[_internal_symbol_observable__WEBPACK_IMPORTED_MODULE_1__[\"observable\"]] = function () {\n        return this;\n    };\n    /* tslint:enable:max-line-length */\n    /**\n     * Used to stitch together functional operators into a chain.\n     * @method pipe\n     * @return {Observable} the Observable result of all of the operators having\n     * been called in the order they were passed in.\n     *\n     * @example\n     *\n     * import { map, filter, scan } from 'rxjs/operators';\n     *\n     * Rx.Observable.interval(1000)\n     *   .pipe(\n     *     filter(x => x % 2 === 0),\n     *     map(x => x + x),\n     *     scan((acc, x) => acc + x)\n     *   )\n     *   .subscribe(x => console.log(x))\n     */\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        if (operations.length === 0) {\n            return this;\n        }\n        return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_2__[\"pipeFromArray\"])(operations)(this);\n    };\n    /* tslint:enable:max-line-length */\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    // HACK: Since TypeScript inherits static properties too, we have to\n    // fight against TypeScript here so Subject can have a different static create signature\n    /**\n     * Creates a new cold Observable by calling the Observable constructor\n     * @static true\n     * @owner Observable\n     * @method create\n     * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n     * @return {Observable} a new cold observable\n     * @nocollapse\n     */\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor) {\n    if (!promiseCtor) {\n        promiseCtor = _config__WEBPACK_IMPORTED_MODULE_3__[\"config\"].Promise || Promise;\n    }\n    if (!promiseCtor) {\n        throw new Error('no Promise impl found');\n    }\n    return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Observable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Observer.js":
+/*!******************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Observer.js ***!
+  \******************************************************/
+/*! exports provided: empty */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"empty\", function() { return empty; });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./node_modules/rxjs/_esm5/internal/config.js\");\n/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/hostReportError */ \"./node_modules/rxjs/_esm5/internal/util/hostReportError.js\");\n/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\n\n\nvar empty = {\n    closed: true,\n    next: function (value) { },\n    error: function (err) {\n        if (_config__WEBPACK_IMPORTED_MODULE_0__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n            throw err;\n        }\n        else {\n            Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__[\"hostReportError\"])(err);\n        }\n    },\n    complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Observer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/OuterSubscriber.js ***!
+  \*************************************************************/
+/*! exports provided: OuterSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OuterSubscriber\", function() { return OuterSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](OuterSubscriber, _super);\n    function OuterSubscriber() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.destination.next(innerValue);\n    };\n    OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n        this.destination.error(error);\n    };\n    OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n        this.destination.complete();\n    };\n    return OuterSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n\n//# sourceMappingURL=OuterSubscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/OuterSubscriber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/ReplaySubject.js ***!
+  \***********************************************************/
+/*! exports provided: ReplaySubject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReplaySubject\", function() { return ReplaySubject; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scheduler/queue */ \"./node_modules/rxjs/_esm5/internal/scheduler/queue.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operators/observeOn */ \"./node_modules/rxjs/_esm5/internal/operators/observeOn.js\");\n/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ \"./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js\");\n/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SubjectSubscription */ \"./node_modules/rxjs/_esm5/internal/SubjectSubscription.js\");\n/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\n\n\n\n\n\n\n\n/**\n * @class ReplaySubject<T>\n */\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ReplaySubject, _super);\n    function ReplaySubject(bufferSize, windowTime, scheduler) {\n        if (bufferSize === void 0) {\n            bufferSize = Number.POSITIVE_INFINITY;\n        }\n        if (windowTime === void 0) {\n            windowTime = Number.POSITIVE_INFINITY;\n        }\n        var _this = _super.call(this) || this;\n        _this.scheduler = scheduler;\n        _this._events = [];\n        _this._infiniteTimeWindow = false;\n        _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n        _this._windowTime = windowTime < 1 ? 1 : windowTime;\n        if (windowTime === Number.POSITIVE_INFINITY) {\n            _this._infiniteTimeWindow = true;\n            _this.next = _this.nextInfiniteTimeWindow;\n        }\n        else {\n            _this.next = _this.nextTimeWindow;\n        }\n        return _this;\n    }\n    ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n        var _events = this._events;\n        _events.push(value);\n        // Since this method is invoked in every next() call than the buffer\n        // can overgrow the max size only by one item\n        if (_events.length > this._bufferSize) {\n            _events.shift();\n        }\n        _super.prototype.next.call(this, value);\n    };\n    ReplaySubject.prototype.nextTimeWindow = function (value) {\n        this._events.push(new ReplayEvent(this._getNow(), value));\n        this._trimBufferThenGetEvents();\n        _super.prototype.next.call(this, value);\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    ReplaySubject.prototype._subscribe = function (subscriber) {\n        // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n        var _infiniteTimeWindow = this._infiniteTimeWindow;\n        var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n        var scheduler = this.scheduler;\n        var len = _events.length;\n        var subscription;\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__[\"ObjectUnsubscribedError\"]();\n        }\n        else if (this.isStopped || this.hasError) {\n            subscription = _Subscription__WEBPACK_IMPORTED_MODULE_3__[\"Subscription\"].EMPTY;\n        }\n        else {\n            this.observers.push(subscriber);\n            subscription = new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__[\"SubjectSubscription\"](this, subscriber);\n        }\n        if (scheduler) {\n            subscriber.add(subscriber = new _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__[\"ObserveOnSubscriber\"](subscriber, scheduler));\n        }\n        if (_infiniteTimeWindow) {\n            for (var i = 0; i < len && !subscriber.closed; i++) {\n                subscriber.next(_events[i]);\n            }\n        }\n        else {\n            for (var i = 0; i < len && !subscriber.closed; i++) {\n                subscriber.next(_events[i].value);\n            }\n        }\n        if (this.hasError) {\n            subscriber.error(this.thrownError);\n        }\n        else if (this.isStopped) {\n            subscriber.complete();\n        }\n        return subscription;\n    };\n    ReplaySubject.prototype._getNow = function () {\n        return (this.scheduler || _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__[\"queue\"]).now();\n    };\n    ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n        var now = this._getNow();\n        var _bufferSize = this._bufferSize;\n        var _windowTime = this._windowTime;\n        var _events = this._events;\n        var eventsCount = _events.length;\n        var spliceCount = 0;\n        // Trim events that fall out of the time window.\n        // Start at the front of the list. Break early once\n        // we encounter an event that falls within the window.\n        while (spliceCount < eventsCount) {\n            if ((now - _events[spliceCount].time) < _windowTime) {\n                break;\n            }\n            spliceCount++;\n        }\n        if (eventsCount > _bufferSize) {\n            spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n        }\n        if (spliceCount > 0) {\n            _events.splice(0, spliceCount);\n        }\n        return _events;\n    };\n    return ReplaySubject;\n}(_Subject__WEBPACK_IMPORTED_MODULE_1__[\"Subject\"]));\n\nvar ReplayEvent = /*@__PURE__*/ (function () {\n    function ReplayEvent(time, value) {\n        this.time = time;\n        this.value = value;\n    }\n    return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/ReplaySubject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Scheduler.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Scheduler.js ***!
+  \*******************************************************/
+/*! exports provided: Scheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scheduler\", function() { return Scheduler; });\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n *   now(): number;\n *   schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nvar Scheduler = /*@__PURE__*/ (function () {\n    function Scheduler(SchedulerAction, now) {\n        if (now === void 0) {\n            now = Scheduler.now;\n        }\n        this.SchedulerAction = SchedulerAction;\n        this.now = now;\n    }\n    /**\n     * Schedules a function, `work`, for execution. May happen at some point in\n     * the future, according to the `delay` parameter, if specified. May be passed\n     * some context object, `state`, which will be passed to the `work` function.\n     *\n     * The given arguments will be processed an stored as an Action object in a\n     * queue of actions.\n     *\n     * @param {function(state: ?T): ?Subscription} work A function representing a\n     * task, or some unit of work to be executed by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler itself.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @return {Subscription} A subscription in order to be able to unsubscribe\n     * the scheduled work.\n     */\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return new this.SchedulerAction(this, work).schedule(state, delay);\n    };\n    /** @nocollapse */\n    Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };\n    return Scheduler;\n}());\n\n//# sourceMappingURL=Scheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Subject.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Subject.js ***!
+  \*****************************************************/
+/*! exports provided: SubjectSubscriber, Subject, AnonymousSubject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectSubscriber\", function() { return SubjectSubscriber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Subject\", function() { return Subject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnonymousSubject\", function() { return AnonymousSubject; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ \"./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js\");\n/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SubjectSubscription */ \"./node_modules/rxjs/_esm5/internal/SubjectSubscription.js\");\n/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ \"./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js\");\n/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\n\n\n\n\n\n\n\n/**\n * @class SubjectSubscriber<T>\n */\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](SubjectSubscriber, _super);\n    function SubjectSubscriber(destination) {\n        var _this = _super.call(this, destination) || this;\n        _this.destination = destination;\n        return _this;\n    }\n    return SubjectSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__[\"Subscriber\"]));\n\n/**\n * @class Subject<T>\n */\nvar Subject = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](Subject, _super);\n    function Subject() {\n        var _this = _super.call(this) || this;\n        _this.observers = [];\n        _this.closed = false;\n        _this.isStopped = false;\n        _this.hasError = false;\n        _this.thrownError = null;\n        return _this;\n    }\n    Subject.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__[\"rxSubscriber\"]] = function () {\n        return new SubjectSubscriber(this);\n    };\n    Subject.prototype.lift = function (operator) {\n        var subject = new AnonymousSubject(this, this);\n        subject.operator = operator;\n        return subject;\n    };\n    Subject.prototype.next = function (value) {\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__[\"ObjectUnsubscribedError\"]();\n        }\n        if (!this.isStopped) {\n            var observers = this.observers;\n            var len = observers.length;\n            var copy = observers.slice();\n            for (var i = 0; i < len; i++) {\n                copy[i].next(value);\n            }\n        }\n    };\n    Subject.prototype.error = function (err) {\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__[\"ObjectUnsubscribedError\"]();\n        }\n        this.hasError = true;\n        this.thrownError = err;\n        this.isStopped = true;\n        var observers = this.observers;\n        var len = observers.length;\n        var copy = observers.slice();\n        for (var i = 0; i < len; i++) {\n            copy[i].error(err);\n        }\n        this.observers.length = 0;\n    };\n    Subject.prototype.complete = function () {\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__[\"ObjectUnsubscribedError\"]();\n        }\n        this.isStopped = true;\n        var observers = this.observers;\n        var len = observers.length;\n        var copy = observers.slice();\n        for (var i = 0; i < len; i++) {\n            copy[i].complete();\n        }\n        this.observers.length = 0;\n    };\n    Subject.prototype.unsubscribe = function () {\n        this.isStopped = true;\n        this.closed = true;\n        this.observers = null;\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    Subject.prototype._trySubscribe = function (subscriber) {\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__[\"ObjectUnsubscribedError\"]();\n        }\n        else {\n            return _super.prototype._trySubscribe.call(this, subscriber);\n        }\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    Subject.prototype._subscribe = function (subscriber) {\n        if (this.closed) {\n            throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__[\"ObjectUnsubscribedError\"]();\n        }\n        else if (this.hasError) {\n            subscriber.error(this.thrownError);\n            return _Subscription__WEBPACK_IMPORTED_MODULE_3__[\"Subscription\"].EMPTY;\n        }\n        else if (this.isStopped) {\n            subscriber.complete();\n            return _Subscription__WEBPACK_IMPORTED_MODULE_3__[\"Subscription\"].EMPTY;\n        }\n        else {\n            this.observers.push(subscriber);\n            return new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__[\"SubjectSubscription\"](this, subscriber);\n        }\n    };\n    Subject.prototype.asObservable = function () {\n        var observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__[\"Observable\"]();\n        observable.source = this;\n        return observable;\n    };\n    /**@nocollapse */\n    Subject.create = function (destination, source) {\n        return new AnonymousSubject(destination, source);\n    };\n    return Subject;\n}(_Observable__WEBPACK_IMPORTED_MODULE_1__[\"Observable\"]));\n\n/**\n * @class AnonymousSubject<T>\n */\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AnonymousSubject, _super);\n    function AnonymousSubject(destination, source) {\n        var _this = _super.call(this) || this;\n        _this.destination = destination;\n        _this.source = source;\n        return _this;\n    }\n    AnonymousSubject.prototype.next = function (value) {\n        var destination = this.destination;\n        if (destination && destination.next) {\n            destination.next(value);\n        }\n    };\n    AnonymousSubject.prototype.error = function (err) {\n        var destination = this.destination;\n        if (destination && destination.error) {\n            this.destination.error(err);\n        }\n    };\n    AnonymousSubject.prototype.complete = function () {\n        var destination = this.destination;\n        if (destination && destination.complete) {\n            this.destination.complete();\n        }\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    AnonymousSubject.prototype._subscribe = function (subscriber) {\n        var source = this.source;\n        if (source) {\n            return this.source.subscribe(subscriber);\n        }\n        else {\n            return _Subscription__WEBPACK_IMPORTED_MODULE_3__[\"Subscription\"].EMPTY;\n        }\n    };\n    return AnonymousSubject;\n}(Subject));\n\n//# sourceMappingURL=Subject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Subject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/SubjectSubscription.js ***!
+  \*****************************************************************/
+/*! exports provided: SubjectSubscription */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubjectSubscription\", function() { return SubjectSubscription; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](SubjectSubscription, _super);\n    function SubjectSubscription(subject, subscriber) {\n        var _this = _super.call(this) || this;\n        _this.subject = subject;\n        _this.subscriber = subscriber;\n        _this.closed = false;\n        return _this;\n    }\n    SubjectSubscription.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.closed = true;\n        var subject = this.subject;\n        var observers = subject.observers;\n        this.subject = null;\n        if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n            return;\n        }\n        var subscriberIndex = observers.indexOf(this.subscriber);\n        if (subscriberIndex !== -1) {\n            observers.splice(subscriberIndex, 1);\n        }\n    };\n    return SubjectSubscription;\n}(_Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]));\n\n//# sourceMappingURL=SubjectSubscription.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/SubjectSubscription.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Subscriber.js":
+/*!********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Subscriber.js ***!
+  \********************************************************/
+/*! exports provided: Subscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Subscriber\", function() { return Subscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isFunction */ \"./node_modules/rxjs/_esm5/internal/util/isFunction.js\");\n/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Observer */ \"./node_modules/rxjs/_esm5/internal/Observer.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ \"./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ \"./node_modules/rxjs/_esm5/internal/config.js\");\n/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/hostReportError */ \"./node_modules/rxjs/_esm5/internal/util/hostReportError.js\");\n/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\n\n\n\n\n\n\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](Subscriber, _super);\n    /**\n     * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n     * defined Observer or a `next` callback function.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     */\n    function Subscriber(destinationOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        /** @internal */ _this.syncErrorValue = null;\n        /** @internal */ _this.syncErrorThrown = false;\n        /** @internal */ _this.syncErrorThrowable = false;\n        _this.isStopped = false;\n        switch (arguments.length) {\n            case 0:\n                _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__[\"empty\"];\n                break;\n            case 1:\n                if (!destinationOrNext) {\n                    _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__[\"empty\"];\n                    break;\n                }\n                if (typeof destinationOrNext === 'object') {\n                    // HACK(benlesh): For situations where Node has multiple copies of rxjs in\n                    // node_modules, we cannot rely on `instanceof` checks\n                    if (isTrustedSubscriber(destinationOrNext)) {\n                        var trustedSubscriber = destinationOrNext[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__[\"rxSubscriber\"]]();\n                        _this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable;\n                        _this.destination = trustedSubscriber;\n                        trustedSubscriber.add(_this);\n                    }\n                    else {\n                        _this.syncErrorThrowable = true;\n                        _this.destination = new SafeSubscriber(_this, destinationOrNext);\n                    }\n                    break;\n                }\n            default:\n                _this.syncErrorThrowable = true;\n                _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n                break;\n        }\n        return _this;\n    }\n    Subscriber.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__[\"rxSubscriber\"]] = function () { return this; };\n    /**\n     * A static factory for a Subscriber, given a (potentially partial) definition\n     * of an Observer.\n     * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n     * @param {function(e: ?any): void} [error] The `error` callback of an\n     * Observer.\n     * @param {function(): void} [complete] The `complete` callback of an\n     * Observer.\n     * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n     * Observer represented by the given arguments.\n     * @nocollapse\n     */\n    Subscriber.create = function (next, error, complete) {\n        var subscriber = new Subscriber(next, error, complete);\n        subscriber.syncErrorThrowable = false;\n        return subscriber;\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `next` from\n     * the Observable, with a value. The Observable may call this method 0 or more\n     * times.\n     * @param {T} [value] The `next` value.\n     * @return {void}\n     */\n    Subscriber.prototype.next = function (value) {\n        if (!this.isStopped) {\n            this._next(value);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive notifications of type `error` from\n     * the Observable, with an attached {@link Error}. Notifies the Observer that\n     * the Observable has experienced an error condition.\n     * @param {any} [err] The `error` exception.\n     * @return {void}\n     */\n    Subscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    /**\n     * The {@link Observer} callback to receive a valueless notification of type\n     * `complete` from the Observable. Notifies the Observer that the Observable\n     * has finished sending push-based notifications.\n     * @return {void}\n     */\n    Subscriber.prototype.complete = function () {\n        if (!this.isStopped) {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (this.closed) {\n            return;\n        }\n        this.isStopped = true;\n        _super.prototype.unsubscribe.call(this);\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        this.destination.error(err);\n        this.unsubscribe();\n    };\n    Subscriber.prototype._complete = function () {\n        this.destination.complete();\n        this.unsubscribe();\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    Subscriber.prototype._unsubscribeAndRecycle = function () {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        this._parent = null;\n        this._parents = null;\n        this.unsubscribe();\n        this.closed = false;\n        this.isStopped = false;\n        this._parent = _parent;\n        this._parents = _parents;\n        return this;\n    };\n    return Subscriber;\n}(_Subscription__WEBPACK_IMPORTED_MODULE_3__[\"Subscription\"]));\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](SafeSubscriber, _super);\n    function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        _this._parentSubscriber = _parentSubscriber;\n        var next;\n        var context = _this;\n        if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(observerOrNext)) {\n            next = observerOrNext;\n        }\n        else if (observerOrNext) {\n            next = observerOrNext.next;\n            error = observerOrNext.error;\n            complete = observerOrNext.complete;\n            if (observerOrNext !== _Observer__WEBPACK_IMPORTED_MODULE_2__[\"empty\"]) {\n                context = Object.create(observerOrNext);\n                if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(context.unsubscribe)) {\n                    _this.add(context.unsubscribe.bind(context));\n                }\n                context.unsubscribe = _this.unsubscribe.bind(_this);\n            }\n        }\n        _this._context = context;\n        _this._next = next;\n        _this._error = error;\n        _this._complete = complete;\n        return _this;\n    }\n    SafeSubscriber.prototype.next = function (value) {\n        if (!this.isStopped && this._next) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (!_config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                this.__tryOrUnsub(this._next, value);\n            }\n            else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.error = function (err) {\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            var useDeprecatedSynchronousErrorHandling = _config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling;\n            if (this._error) {\n                if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(this._error, err);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, this._error, err);\n                    this.unsubscribe();\n                }\n            }\n            else if (!_parentSubscriber.syncErrorThrowable) {\n                this.unsubscribe();\n                if (useDeprecatedSynchronousErrorHandling) {\n                    throw err;\n                }\n                Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__[\"hostReportError\"])(err);\n            }\n            else {\n                if (useDeprecatedSynchronousErrorHandling) {\n                    _parentSubscriber.syncErrorValue = err;\n                    _parentSubscriber.syncErrorThrown = true;\n                }\n                else {\n                    Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__[\"hostReportError\"])(err);\n                }\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.complete = function () {\n        var _this = this;\n        if (!this.isStopped) {\n            var _parentSubscriber = this._parentSubscriber;\n            if (this._complete) {\n                var wrappedComplete = function () { return _this._complete.call(_this._context); };\n                if (!_config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n                    this.__tryOrUnsub(wrappedComplete);\n                    this.unsubscribe();\n                }\n                else {\n                    this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n                    this.unsubscribe();\n                }\n            }\n            else {\n                this.unsubscribe();\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            this.unsubscribe();\n            if (_config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n                throw err;\n            }\n            else {\n                Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__[\"hostReportError\"])(err);\n            }\n        }\n    };\n    SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n        if (!_config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n            throw new Error('bad call');\n        }\n        try {\n            fn.call(this._context, value);\n        }\n        catch (err) {\n            if (_config__WEBPACK_IMPORTED_MODULE_5__[\"config\"].useDeprecatedSynchronousErrorHandling) {\n                parent.syncErrorValue = err;\n                parent.syncErrorThrown = true;\n                return true;\n            }\n            else {\n                Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__[\"hostReportError\"])(err);\n                return true;\n            }\n        }\n        return false;\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    SafeSubscriber.prototype._unsubscribe = function () {\n        var _parentSubscriber = this._parentSubscriber;\n        this._context = null;\n        this._parentSubscriber = null;\n        _parentSubscriber.unsubscribe();\n    };\n    return SafeSubscriber;\n}(Subscriber));\nfunction isTrustedSubscriber(obj) {\n    return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__[\"rxSubscriber\"]]);\n}\n//# sourceMappingURL=Subscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Subscriber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/Subscription.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/Subscription.js ***!
+  \**********************************************************/
+/*! exports provided: Subscription */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Subscription\", function() { return Subscription; });\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isObject */ \"./node_modules/rxjs/_esm5/internal/util/isObject.js\");\n/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/isFunction */ \"./node_modules/rxjs/_esm5/internal/util/isFunction.js\");\n/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/tryCatch */ \"./node_modules/rxjs/_esm5/internal/util/tryCatch.js\");\n/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/errorObject */ \"./node_modules/rxjs/_esm5/internal/util/errorObject.js\");\n/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/UnsubscriptionError */ \"./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js\");\n/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */\n\n\n\n\n\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = /*@__PURE__*/ (function () {\n    /**\n     * @param {function(): void} [unsubscribe] A function describing how to\n     * perform the disposal of resources when the `unsubscribe` method is called.\n     */\n    function Subscription(unsubscribe) {\n        /**\n         * A flag to indicate whether this Subscription has already been unsubscribed.\n         * @type {boolean}\n         */\n        this.closed = false;\n        /** @internal */\n        this._parent = null;\n        /** @internal */\n        this._parents = null;\n        /** @internal */\n        this._subscriptions = null;\n        if (unsubscribe) {\n            this._unsubscribe = unsubscribe;\n        }\n    }\n    /**\n     * Disposes the resources held by the subscription. May, for instance, cancel\n     * an ongoing Observable execution or cancel any other type of work that\n     * started when the Subscription was created.\n     * @return {void}\n     */\n    Subscription.prototype.unsubscribe = function () {\n        var hasErrors = false;\n        var errors;\n        if (this.closed) {\n            return;\n        }\n        var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n        this.closed = true;\n        this._parent = null;\n        this._parents = null;\n        // null out _subscriptions first so any child subscriptions that attempt\n        // to remove themselves from this subscription will noop\n        this._subscriptions = null;\n        var index = -1;\n        var len = _parents ? _parents.length : 0;\n        // if this._parent is null, then so is this._parents, and we\n        // don't have to remove ourselves from any parent subscriptions.\n        while (_parent) {\n            _parent.remove(this);\n            // if this._parents is null or index >= len,\n            // then _parent is set to null, and the loop exits\n            _parent = ++index < len && _parents[index] || null;\n        }\n        if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(_unsubscribe)) {\n            var trial = Object(_util_tryCatch__WEBPACK_IMPORTED_MODULE_3__[\"tryCatch\"])(_unsubscribe).call(this);\n            if (trial === _util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"]) {\n                hasErrors = true;\n                errors = errors || (_util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"].e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__[\"UnsubscriptionError\"] ?\n                    flattenUnsubscriptionErrors(_util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"].e.errors) : [_util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"].e]);\n            }\n        }\n        if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(_subscriptions)) {\n            index = -1;\n            len = _subscriptions.length;\n            while (++index < len) {\n                var sub = _subscriptions[index];\n                if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(sub)) {\n                    var trial = Object(_util_tryCatch__WEBPACK_IMPORTED_MODULE_3__[\"tryCatch\"])(sub.unsubscribe).call(sub);\n                    if (trial === _util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"]) {\n                        hasErrors = true;\n                        errors = errors || [];\n                        var err = _util_errorObject__WEBPACK_IMPORTED_MODULE_4__[\"errorObject\"].e;\n                        if (err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__[\"UnsubscriptionError\"]) {\n                            errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n                        }\n                        else {\n                            errors.push(err);\n                        }\n                    }\n                }\n            }\n        }\n        if (hasErrors) {\n            throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__[\"UnsubscriptionError\"](errors);\n        }\n    };\n    /**\n     * Adds a tear down to be called during the unsubscribe() of this\n     * Subscription.\n     *\n     * If the tear down being added is a subscription that is already\n     * unsubscribed, is the same reference `add` is being called on, or is\n     * `Subscription.EMPTY`, it will not be added.\n     *\n     * If this subscription is already in an `closed` state, the passed\n     * tear down logic will be executed immediately.\n     *\n     * @param {TeardownLogic} teardown The additional logic to execute on\n     * teardown.\n     * @return {Subscription} Returns the Subscription used or created to be\n     * added to the inner subscriptions list. This Subscription can be used with\n     * `remove()` to remove the passed teardown logic from the inner subscriptions\n     * list.\n     */\n    Subscription.prototype.add = function (teardown) {\n        if (!teardown || (teardown === Subscription.EMPTY)) {\n            return Subscription.EMPTY;\n        }\n        if (teardown === this) {\n            return this;\n        }\n        var subscription = teardown;\n        switch (typeof teardown) {\n            case 'function':\n                subscription = new Subscription(teardown);\n            case 'object':\n                if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n                    return subscription;\n                }\n                else if (this.closed) {\n                    subscription.unsubscribe();\n                    return subscription;\n                }\n                else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n                    var tmp = subscription;\n                    subscription = new Subscription();\n                    subscription._subscriptions = [tmp];\n                }\n                break;\n            default:\n                throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n        }\n        var subscriptions = this._subscriptions || (this._subscriptions = []);\n        subscriptions.push(subscription);\n        subscription._addParent(this);\n        return subscription;\n    };\n    /**\n     * Removes a Subscription from the internal list of subscriptions that will\n     * unsubscribe during the unsubscribe process of this Subscription.\n     * @param {Subscription} subscription The subscription to remove.\n     * @return {void}\n     */\n    Subscription.prototype.remove = function (subscription) {\n        var subscriptions = this._subscriptions;\n        if (subscriptions) {\n            var subscriptionIndex = subscriptions.indexOf(subscription);\n            if (subscriptionIndex !== -1) {\n                subscriptions.splice(subscriptionIndex, 1);\n            }\n        }\n    };\n    /** @internal */\n    Subscription.prototype._addParent = function (parent) {\n        var _a = this, _parent = _a._parent, _parents = _a._parents;\n        if (!_parent || _parent === parent) {\n            // If we don't have a parent, or the new parent is the same as the\n            // current parent, then set this._parent to the new parent.\n            this._parent = parent;\n        }\n        else if (!_parents) {\n            // If there's already one parent, but not multiple, allocate an Array to\n            // store the rest of the parent Subscriptions.\n            this._parents = [parent];\n        }\n        else if (_parents.indexOf(parent) === -1) {\n            // Only add the new parent to the _parents list if it's not already there.\n            _parents.push(parent);\n        }\n    };\n    /** @nocollapse */\n    Subscription.EMPTY = (function (empty) {\n        empty.closed = true;\n        return empty;\n    }(new Subscription()));\n    return Subscription;\n}());\n\nfunction flattenUnsubscriptionErrors(errors) {\n    return errors.reduce(function (errs, err) { return errs.concat((err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__[\"UnsubscriptionError\"]) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/Subscription.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/config.js":
+/*!****************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/config.js ***!
+  \****************************************************/
+/*! exports provided: config */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return config; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nvar config = {\n    /**\n     * The promise constructor used by default for methods such as\n     * {@link toPromise} and {@link forEach}\n     */\n    Promise: undefined,\n    /**\n     * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n     * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n     * call in a try/catch block. It also enables producer interference, a nasty bug\n     * where a multicast can be broken for all observers by a downstream consumer with\n     * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n     * FOR MIGRATION REASONS.\n     */\n    set useDeprecatedSynchronousErrorHandling(value) {\n        if (value) {\n            var error = /*@__PURE__*/ new Error();\n            /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n        }\n        else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n            /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n        }\n        _enable_super_gross_mode_that_will_cause_bad_things = value;\n    },\n    get useDeprecatedSynchronousErrorHandling() {\n        return _enable_super_gross_mode_that_will_cause_bad_things;\n    },\n};\n//# sourceMappingURL=config.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/config.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js":
+/*!******************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js ***!
+  \******************************************************************************/
+/*! exports provided: ConnectableObservable, connectableObservableDescriptor */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConnectableObservable\", function() { return ConnectableObservable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"connectableObservableDescriptor\", function() { return connectableObservableDescriptor; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../operators/refCount */ \"./node_modules/rxjs/_esm5/internal/operators/refCount.js\");\n/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\n\n\n\n\n\n\n/**\n * @class ConnectableObservable<T>\n */\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ConnectableObservable, _super);\n    function ConnectableObservable(source, subjectFactory) {\n        var _this = _super.call(this) || this;\n        _this.source = source;\n        _this.subjectFactory = subjectFactory;\n        _this._refCount = 0;\n        /** @internal */\n        _this._isComplete = false;\n        return _this;\n    }\n    /** @deprecated This is an internal implementation detail, do not use. */\n    ConnectableObservable.prototype._subscribe = function (subscriber) {\n        return this.getSubject().subscribe(subscriber);\n    };\n    ConnectableObservable.prototype.getSubject = function () {\n        var subject = this._subject;\n        if (!subject || subject.isStopped) {\n            this._subject = this.subjectFactory();\n        }\n        return this._subject;\n    };\n    ConnectableObservable.prototype.connect = function () {\n        var connection = this._connection;\n        if (!connection) {\n            this._isComplete = false;\n            connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_4__[\"Subscription\"]();\n            connection.add(this.source\n                .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n            if (connection.closed) {\n                this._connection = null;\n                connection = _Subscription__WEBPACK_IMPORTED_MODULE_4__[\"Subscription\"].EMPTY;\n            }\n            else {\n                this._connection = connection;\n            }\n        }\n        return connection;\n    };\n    ConnectableObservable.prototype.refCount = function () {\n        return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_5__[\"refCount\"])()(this);\n    };\n    return ConnectableObservable;\n}(_Observable__WEBPACK_IMPORTED_MODULE_2__[\"Observable\"]));\n\nvar connectableProto = ConnectableObservable.prototype;\nvar connectableObservableDescriptor = {\n    operator: { value: null },\n    _refCount: { value: 0, writable: true },\n    _subject: { value: null, writable: true },\n    _connection: { value: null, writable: true },\n    _subscribe: { value: connectableProto._subscribe },\n    _isComplete: { value: connectableProto._isComplete, writable: true },\n    getSubject: { value: connectableProto.getSubject },\n    connect: { value: connectableProto.connect },\n    refCount: { value: connectableProto.refCount }\n};\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ConnectableSubscriber, _super);\n    function ConnectableSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    ConnectableSubscriber.prototype._error = function (err) {\n        this._unsubscribe();\n        _super.prototype._error.call(this, err);\n    };\n    ConnectableSubscriber.prototype._complete = function () {\n        this.connectable._isComplete = true;\n        this._unsubscribe();\n        _super.prototype._complete.call(this);\n    };\n    ConnectableSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (connectable) {\n            this.connectable = null;\n            var connection = connectable._connection;\n            connectable._refCount = 0;\n            connectable._subject = null;\n            connectable._connection = null;\n            if (connection) {\n                connection.unsubscribe();\n            }\n        }\n    };\n    return ConnectableSubscriber;\n}(_Subject__WEBPACK_IMPORTED_MODULE_1__[\"SubjectSubscriber\"]));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        ///\n        // Compare the local RefCountSubscriber's connection Subscription to the\n        // connection Subscription on the shared ConnectableObservable. In cases\n        // where the ConnectableObservable source synchronously emits values, and\n        // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n        // execution continues to here before the RefCountOperator has a chance to\n        // supply the RefCountSubscriber with the shared connection Subscription.\n        // For example:\n        // ```\n        // Observable.range(0, 10)\n        //   .publish()\n        //   .refCount()\n        //   .take(5)\n        //   .subscribe();\n        // ```\n        // In order to account for this case, RefCountSubscriber should only dispose\n        // the ConnectableObservable's shared connection Subscription if the\n        // connection Subscription exists, *and* either:\n        //   a. RefCountSubscriber doesn't have a reference to the shared connection\n        //      Subscription yet, or,\n        //   b. RefCountSubscriber's connection Subscription reference is identical\n        //      to the shared connection Subscription\n        ///\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__[\"Subscriber\"]));\n//# sourceMappingURL=ConnectableObservable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/bindCallback.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/bindCallback.js ***!
+  \*********************************************************************/
+/*! exports provided: bindCallback */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindCallback\", function() { return bindCallback; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ \"./node_modules/rxjs/_esm5/internal/AsyncSubject.js\");\n/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_isArray,_util_isScheduler PURE_IMPORTS_END */\n\n\n\n\n\n// tslint:enable:max-line-length\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * <span class=\"informal\">Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.</span>\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, the\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is very important to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - {@link Scheduler} - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to  an Observable calls `func`\n * synchronously, but using `Scheduler.async` as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you use the async Scheduler\n * and call `subscribe` on the output Observable all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously the subscription of the resulting Observable\n * will call the `next` function synchronously as well.  If you want to defer that call,\n * you may use `Scheduler.async` just as before.  This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n *  you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n *\n * @example <caption>Convert jQuery's getJSON to an Observable API</caption>\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * var getJSONAsObservable = bindCallback(jQuery.getJSON);\n * var result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n *\n * @example <caption>Receive an array of arguments passed to a callback</caption>\n * someFunction((a, b, c) => {\n *   console.log(a); // 5\n *   console.log(b); // 'some string'\n *   console.log(c); // {someProperty: 'someValue'}\n * });\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n *   console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n *\n *\n * @example <caption>Compare behaviour with and without async Scheduler</caption>\n * function iCallMyCallbackSynchronously(cb) {\n *   cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n *\n *\n * @example <caption>Use bindCallback on an object method</caption>\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n *\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n * @see {@link fromPromise}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n    if (resultSelector) {\n        if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_4__[\"isScheduler\"])(resultSelector)) {\n            scheduler = resultSelector;\n        }\n        else {\n            // DEPRECATED PATH\n            return function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n            };\n        }\n    }\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var context = this;\n        var subject;\n        var params = {\n            context: context,\n            subject: subject,\n            callbackFunc: callbackFunc,\n            scheduler: scheduler,\n        };\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            if (!scheduler) {\n                if (!subject) {\n                    subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__[\"AsyncSubject\"]();\n                    var handler = function () {\n                        var innerArgs = [];\n                        for (var _i = 0; _i < arguments.length; _i++) {\n                            innerArgs[_i] = arguments[_i];\n                        }\n                        subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n                        subject.complete();\n                    };\n                    try {\n                        callbackFunc.apply(context, args.concat([handler]));\n                    }\n                    catch (err) {\n                        subject.error(err);\n                    }\n                }\n                return subject.subscribe(subscriber);\n            }\n            else {\n                var state = {\n                    args: args, subscriber: subscriber, params: params,\n                };\n                return scheduler.schedule(dispatch, 0, state);\n            }\n        });\n    };\n}\nfunction dispatch(state) {\n    var _this = this;\n    var self = this;\n    var args = state.args, subscriber = state.subscriber, params = state.params;\n    var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n    var subject = params.subject;\n    if (!subject) {\n        subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__[\"AsyncSubject\"]();\n        var handler = function () {\n            var innerArgs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                innerArgs[_i] = arguments[_i];\n            }\n            var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n            _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n        };\n        try {\n            callbackFunc.apply(context, args.concat([handler]));\n        }\n        catch (err) {\n            subject.error(err);\n        }\n    }\n    this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n    var value = state.value, subject = state.subject;\n    subject.next(value);\n    subject.complete();\n}\nfunction dispatchError(state) {\n    var err = state.err, subject = state.subject;\n    subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/bindCallback.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js ***!
+  \*************************************************************************/
+/*! exports provided: bindNodeCallback */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindNodeCallback\", function() { return bindNodeCallback; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ \"./node_modules/rxjs/_esm5/internal/AsyncSubject.js\");\n/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_isScheduler,_util_isArray PURE_IMPORTS_END */\n\n\n\n\n\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * <span class=\"informal\">It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.</span>\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper {@link Scheduler} provided as optional third parameter. Scheduler\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * Scheduler works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n *\n * @example <caption>Read a file from the filesystem and get the data as an Observable</caption>\n * import * as fs from 'fs';\n * var readFileAsObservable = bindNodeCallback(fs.readFile);\n * var result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n *\n * @example <caption>Use on function calling callback with multiple arguments</caption>\n * someFunction((err, a, b) => {\n *   console.log(err); // null\n *   console.log(a); // 5\n *   console.log(b); // \"some string\"\n * });\n * var boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n *   console.log(value); // [5, \"some string\"]\n * });\n *\n * @example <caption>Use on function calling callback in regular style</caption>\n * someFunction(a => {\n *   console.log(a); // 5\n * });\n * var boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n *   value => {}             // never gets called\n *   err => console.log(err) // 5\n * );\n *\n *\n * @see {@link bindCallback}\n * @see {@link from}\n * @see {@link fromPromise}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n    if (resultSelector) {\n        if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__[\"isScheduler\"])(resultSelector)) {\n            scheduler = resultSelector;\n        }\n        else {\n            // DEPRECATED PATH\n            return function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_4__[\"isArray\"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n            };\n        }\n    }\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var params = {\n            subject: undefined,\n            args: args,\n            callbackFunc: callbackFunc,\n            scheduler: scheduler,\n            context: this,\n        };\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var context = params.context;\n            var subject = params.subject;\n            if (!scheduler) {\n                if (!subject) {\n                    subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__[\"AsyncSubject\"]();\n                    var handler = function () {\n                        var innerArgs = [];\n                        for (var _i = 0; _i < arguments.length; _i++) {\n                            innerArgs[_i] = arguments[_i];\n                        }\n                        var err = innerArgs.shift();\n                        if (err) {\n                            subject.error(err);\n                            return;\n                        }\n                        subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n                        subject.complete();\n                    };\n                    try {\n                        callbackFunc.apply(context, args.concat([handler]));\n                    }\n                    catch (err) {\n                        subject.error(err);\n                    }\n                }\n                return subject.subscribe(subscriber);\n            }\n            else {\n                return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n            }\n        });\n    };\n}\nfunction dispatch(state) {\n    var _this = this;\n    var params = state.params, subscriber = state.subscriber, context = state.context;\n    var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n    var subject = params.subject;\n    if (!subject) {\n        subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__[\"AsyncSubject\"]();\n        var handler = function () {\n            var innerArgs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                innerArgs[_i] = arguments[_i];\n            }\n            var err = innerArgs.shift();\n            if (err) {\n                _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n            }\n            else {\n                var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n                _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n            }\n        };\n        try {\n            callbackFunc.apply(context, args.concat([handler]));\n        }\n        catch (err) {\n            this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n        }\n    }\n    this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n    var value = arg.value, subject = arg.subject;\n    subject.next(value);\n    subject.complete();\n}\nfunction dispatchError(arg) {\n    var err = arg.err, subject = arg.subject;\n    subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/combineLatest.js ***!
+  \**********************************************************************/
+/*! exports provided: combineLatest, CombineLatestOperator, CombineLatestSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"combineLatest\", function() { return combineLatest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CombineLatestOperator\", function() { return CombineLatestOperator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CombineLatestSubscriber\", function() { return CombineLatestSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ \"./node_modules/rxjs/_esm5/internal/OuterSubscriber.js\");\n/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\n\n\n\n\n\n\nvar NONE = {};\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * <img src=\"./img/combineLatest.png\" width=\"100%\">\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all that values but last\n * will be lost. On the other hand, is some Observable does not emit value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n *\n * @example <caption>Combine two timer Observables</caption>\n * const firstTimer = Rx.Observable.timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = Rx.Observable.timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = Rx.Observable.combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n *\n *\n * @example <caption>Combine an array of Observables</caption>\n * const observables = [1, 5, 10].map(\n *   n => Rx.Observable.of(n).delay(n * 1000).startWith(0) // emit 0 and then emit n after n seconds\n * );\n * const combined = Rx.Observable.combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n *\n *\n * @example <caption>Use project function to dynamically calculate the Body-Mass Index</caption>\n * var weight = Rx.Observable.of(70, 72, 76, 79, 75);\n * var height = Rx.Observable.of(1.76, 1.77, 1.78);\n * var bmi = Rx.Observable.combineLatest(weight, height, (w, h) => w / (h * h));\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n *\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nfunction combineLatest() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var resultSelector = null;\n    var scheduler = null;\n    if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__[\"isScheduler\"])(observables[observables.length - 1])) {\n        scheduler = observables.pop();\n    }\n    if (typeof observables[observables.length - 1] === 'function') {\n        resultSelector = observables.pop();\n    }\n    // if the first and only other argument besides the resultSelector is an array\n    // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n    if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(observables[0])) {\n        observables = observables[0];\n    }\n    return Object(_fromArray__WEBPACK_IMPORTED_MODULE_5__[\"fromArray\"])(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n    function CombineLatestOperator(resultSelector) {\n        this.resultSelector = resultSelector;\n    }\n    CombineLatestOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n    };\n    return CombineLatestOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](CombineLatestSubscriber, _super);\n    function CombineLatestSubscriber(destination, resultSelector) {\n        var _this = _super.call(this, destination) || this;\n        _this.resultSelector = resultSelector;\n        _this.active = 0;\n        _this.values = [];\n        _this.observables = [];\n        return _this;\n    }\n    CombineLatestSubscriber.prototype._next = function (observable) {\n        this.values.push(NONE);\n        this.observables.push(observable);\n    };\n    CombineLatestSubscriber.prototype._complete = function () {\n        var observables = this.observables;\n        var len = observables.length;\n        if (len === 0) {\n            this.destination.complete();\n        }\n        else {\n            this.active = len;\n            this.toRespond = len;\n            for (var i = 0; i < len; i++) {\n                var observable = observables[i];\n                this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__[\"subscribeToResult\"])(this, observable, observable, i));\n            }\n        }\n    };\n    CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n        if ((this.active -= 1) === 0) {\n            this.destination.complete();\n        }\n    };\n    CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        var values = this.values;\n        var oldVal = values[outerIndex];\n        var toRespond = !this.toRespond\n            ? 0\n            : oldVal === NONE ? --this.toRespond : this.toRespond;\n        values[outerIndex] = innerValue;\n        if (toRespond === 0) {\n            if (this.resultSelector) {\n                this._tryResultSelector(values);\n            }\n            else {\n                this.destination.next(values.slice());\n            }\n        }\n    };\n    CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n        var result;\n        try {\n            result = this.resultSelector.apply(this, values);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return CombineLatestSubscriber;\n}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__[\"OuterSubscriber\"]));\n\n//# sourceMappingURL=combineLatest.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/combineLatest.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/concat.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/concat.js ***!
+  \***************************************************************/
+/*! exports provided: concat */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concat\", function() { return concat; });\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./of */ \"./node_modules/rxjs/_esm5/internal/observable/of.js\");\n/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/concatAll */ \"./node_modules/rxjs/_esm5/internal/operators/concatAll.js\");\n/** PURE_IMPORTS_START _util_isScheduler,_of,_from,_operators_concatAll PURE_IMPORTS_END */\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * <img src=\"./img/concat.png\" width=\"100%\">\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example <caption>Concatenate an array of 3 Observables</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example <caption>Concatenate the same Observable to repeat it</caption>\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nfunction concat() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    if (observables.length === 1 || (observables.length === 2 && Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__[\"isScheduler\"])(observables[1]))) {\n        return Object(_from__WEBPACK_IMPORTED_MODULE_2__[\"from\"])(observables[0]);\n    }\n    return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_3__[\"concatAll\"])()(_of__WEBPACK_IMPORTED_MODULE_1__[\"of\"].apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/concat.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/defer.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/defer.js ***!
+  \**************************************************************/
+/*! exports provided: defer */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return defer; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\n\n // lol\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n * is subscribed.\n * </span>\n *\n * <img src=\"./img/defer.png\" width=\"100%\">\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * @example <caption>Subscribe to either an Observable of clicks or an Observable of interval, at random</caption>\n * var clicksOrInterval = Rx.Observable.defer(function () {\n *   if (Math.random() > 0.5) {\n *     return Rx.Observable.fromEvent(document, 'click');\n *   } else {\n *     return Rx.Observable.interval(1000);\n *   }\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n *\n * @see {@link create}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nfunction defer(observableFactory) {\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var input;\n        try {\n            input = observableFactory();\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n        var source = input ? Object(_from__WEBPACK_IMPORTED_MODULE_1__[\"from\"])(input) : Object(_empty__WEBPACK_IMPORTED_MODULE_2__[\"empty\"])();\n        return source.subscribe(subscriber);\n    });\n}\n//# sourceMappingURL=defer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/defer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/empty.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/empty.js ***!
+  \**************************************************************/
+/*! exports provided: EMPTY, empty, emptyScheduled */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return EMPTY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"empty\", function() { return empty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"emptyScheduled\", function() { return emptyScheduled; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * {@link Scheduler}. It is preferrable to use this over `empty()`.\n */\nvar EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) { return subscriber.complete(); });\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.\n * </span>\n *\n * <img src=\"./img/empty.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then complete.</caption>\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n *   x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n * @deprecated Deprecated in favor of using EMPTY constant.\n */\nfunction empty(scheduler) {\n    return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/empty.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/forkJoin.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/forkJoin.js ***!
+  \*****************************************************************/
+/*! exports provided: forkJoin */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forkJoin\", function() { return forkJoin; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js\");\n/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../OuterSubscriber */ \"./node_modules/rxjs/_esm5/internal/OuterSubscriber.js\");\n/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../operators/map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/** PURE_IMPORTS_START tslib,_Observable,_util_isArray,_empty,_util_subscribeToResult,_OuterSubscriber,_operators_map PURE_IMPORTS_END */\n\n\n\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Joins last values emitted by passed Observables.\n *\n * <span class=\"informal\">Wait for Observables to complete and then combine last values they emitted.</span>\n *\n * <img src=\"./img/forkJoin.png\" width=\"100%\">\n *\n * `forkJoin` is an operator that takes any number of Observables which can be passed either as an array\n * or directly as arguments. If no input Observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed Observables to complete and then it will emit an array with last\n * values from corresponding Observables. So if you pass `n` Observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first Observable,\n * second value is the last thing emitted by the second Observable and so on. That means `forkJoin` will\n * not emit more than once and it will complete after that. If you need to emit combined values not only\n * at the end of lifecycle of passed Observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input Observables, whenever any of\n * that Observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other Observables.\n * Conversely, if there is an Observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other Observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all Observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input Observable errors at some point, `forkJoin` will error as well and all other Observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * Observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output Observable is supposed to emit a result.\n *\n * @example <caption>Use forkJoin with operator emitting immediately</caption>\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin(\n *   of(1, 2, 3, 4),\n *   of(5, 6, 7, 8)\n * );\n * observable.subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // [4, 8]\n * // \"This is how it ends!\"\n *\n *\n * @example <caption>Use forkJoin with operator emitting after some time</caption>\n * import { forkJoin, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const observable = forkJoin(\n *   interval(1000).pipe(take(3)), // emit 0, 1, 2 every second and complete\n *   interval(500).pipe(take(4)) // emit 0, 1, 2, 3 every half a second and complete\n * );\n * observable.subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // [2, 3] after 3 seconds\n * // \"This is how it ends!\" immediately after\n *\n *\n * @example <caption>Use forkJoin with project function</caption>\n * import { jorkJoin, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const observable = forkJoin(\n *   interval(1000).pipe(take(3)), // emit 0, 1, 2 every second and complete\n *   interval(500).pipe(take(4)), // emit 0, 1, 2, 3 every half a second and complete\n *   (n, m) => n + m\n * );\n * observable.subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('This is how it ends!')\n * );\n *\n * // Logs:\n * // 5 after 3 seconds\n * // \"This is how it ends!\" immediately after\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nfunction forkJoin() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    var resultSelector;\n    if (typeof sources[sources.length - 1] === 'function') {\n        // DEPRECATED PATH\n        resultSelector = sources.pop();\n    }\n    // if the first and only other argument is an array\n    // assume it's been called with `forkJoin([obs1, obs2, obs3])`\n    if (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(sources[0])) {\n        sources = sources[0];\n    }\n    if (sources.length === 0) {\n        return _empty__WEBPACK_IMPORTED_MODULE_3__[\"EMPTY\"];\n    }\n    if (resultSelector) {\n        // DEPRECATED PATH\n        return forkJoin(sources).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_6__[\"map\"])(function (args) { return resultSelector.apply(void 0, args); }));\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_1__[\"Observable\"](function (subscriber) {\n        return new ForkJoinSubscriber(subscriber, sources);\n    });\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ForkJoinSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ForkJoinSubscriber, _super);\n    function ForkJoinSubscriber(destination, sources) {\n        var _this = _super.call(this, destination) || this;\n        _this.sources = sources;\n        _this.completed = 0;\n        _this.haveValues = 0;\n        var len = sources.length;\n        _this.values = new Array(len);\n        for (var i = 0; i < len; i++) {\n            var source = sources[i];\n            var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__[\"subscribeToResult\"])(_this, source, null, i);\n            if (innerSubscription) {\n                _this.add(innerSubscription);\n            }\n        }\n        return _this;\n    }\n    ForkJoinSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.values[outerIndex] = innerValue;\n        if (!innerSub._hasValue) {\n            innerSub._hasValue = true;\n            this.haveValues++;\n        }\n    };\n    ForkJoinSubscriber.prototype.notifyComplete = function (innerSub) {\n        var _a = this, destination = _a.destination, haveValues = _a.haveValues, values = _a.values;\n        var len = values.length;\n        if (!innerSub._hasValue) {\n            destination.complete();\n            return;\n        }\n        this.completed++;\n        if (this.completed !== len) {\n            return;\n        }\n        if (haveValues === len) {\n            destination.next(values);\n        }\n        destination.complete();\n    };\n    return ForkJoinSubscriber;\n}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__[\"OuterSubscriber\"]));\n//# sourceMappingURL=forkJoin.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/forkJoin.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/from.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/from.js ***!
+  \*************************************************************/
+/*! exports provided: from */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"from\", function() { return from; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isPromise */ \"./node_modules/rxjs/_esm5/internal/util/isPromise.js\");\n/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArrayLike */ \"./node_modules/rxjs/_esm5/internal/util/isArrayLike.js\");\n/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isInteropObservable */ \"./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js\");\n/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isIterable */ \"./node_modules/rxjs/_esm5/internal/util/isIterable.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/* harmony import */ var _fromPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./fromPromise */ \"./node_modules/rxjs/_esm5/internal/observable/fromPromise.js\");\n/* harmony import */ var _fromIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./fromIterable */ \"./node_modules/rxjs/_esm5/internal/observable/fromIterable.js\");\n/* harmony import */ var _fromObservable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fromObservable */ \"./node_modules/rxjs/_esm5/internal/observable/fromObservable.js\");\n/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/subscribeTo */ \"./node_modules/rxjs/_esm5/internal/util/subscribeTo.js\");\n/** PURE_IMPORTS_START _Observable,_util_isPromise,_util_isArrayLike,_util_isInteropObservable,_util_isIterable,_fromArray,_fromPromise,_fromIterable,_fromObservable,_util_subscribeTo PURE_IMPORTS_END */\n\n\n\n\n\n\n\n\n\n\nfunction from(input, scheduler) {\n    if (!scheduler) {\n        if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"]) {\n            return input;\n        }\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_9__[\"subscribeTo\"])(input));\n    }\n    if (input != null) {\n        if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_3__[\"isInteropObservable\"])(input)) {\n            return Object(_fromObservable__WEBPACK_IMPORTED_MODULE_8__[\"fromObservable\"])(input, scheduler);\n        }\n        else if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_1__[\"isPromise\"])(input)) {\n            return Object(_fromPromise__WEBPACK_IMPORTED_MODULE_6__[\"fromPromise\"])(input, scheduler);\n        }\n        else if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__[\"isArrayLike\"])(input)) {\n            return Object(_fromArray__WEBPACK_IMPORTED_MODULE_5__[\"fromArray\"])(input, scheduler);\n        }\n        else if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_4__[\"isIterable\"])(input) || typeof input === 'string') {\n            return Object(_fromIterable__WEBPACK_IMPORTED_MODULE_7__[\"fromIterable\"])(input, scheduler);\n        }\n    }\n    throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=from.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/from.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromArray.js ***!
+  \******************************************************************/
+/*! exports provided: fromArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromArray\", function() { return fromArray; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToArray */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js\");\n/** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToArray PURE_IMPORTS_END */\n\n\n\nfunction fromArray(input, scheduler) {\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](Object(_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_2__[\"subscribeToArray\"])(input));\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]();\n            var i = 0;\n            sub.add(scheduler.schedule(function () {\n                if (i === input.length) {\n                    subscriber.complete();\n                    return;\n                }\n                subscriber.next(input[i++]);\n                if (!subscriber.closed) {\n                    sub.add(this.schedule());\n                }\n            }));\n            return sub;\n        });\n    }\n}\n//# sourceMappingURL=fromArray.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEvent.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromEvent.js ***!
+  \******************************************************************/
+/*! exports provided: fromEvent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromEvent\", function() { return fromEvent; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ \"./node_modules/rxjs/_esm5/internal/util/isFunction.js\");\n/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\n\n\n\n\nvar toString = Object.prototype.toString;\n/* tslint:enable:max-line-length */\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * <img src=\"./img/fromEvent.png\" width=\"100%\">\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * @example <caption>Emits clicks happening on the DOM document</caption>\n * var clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n *\n *\n * @example <caption>Use addEventListener with capture option</caption>\n * var clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n *                                                                          // which will be passed to addEventListener\n * var clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget<T>} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable<T>}\n * @name fromEvent\n */\nfunction fromEvent(target, eventName, options, resultSelector) {\n    if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(options)) {\n        // DEPRECATED PATH\n        resultSelector = options;\n        options = undefined;\n    }\n    if (resultSelector) {\n        // DEPRECATED PATH\n        return fromEvent(target, eventName, options).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__[\"map\"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        function handler(e) {\n            if (arguments.length > 1) {\n                subscriber.next(Array.prototype.slice.call(arguments));\n            }\n            else {\n                subscriber.next(e);\n            }\n        }\n        setupSubscription(target, eventName, handler, subscriber, options);\n    });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n    var unsubscribe;\n    if (isEventTarget(sourceObj)) {\n        var source_1 = sourceObj;\n        sourceObj.addEventListener(eventName, handler, options);\n        unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n    }\n    else if (isJQueryStyleEventEmitter(sourceObj)) {\n        var source_2 = sourceObj;\n        sourceObj.on(eventName, handler);\n        unsubscribe = function () { return source_2.off(eventName, handler); };\n    }\n    else if (isNodeStyleEventEmitter(sourceObj)) {\n        var source_3 = sourceObj;\n        sourceObj.addListener(eventName, handler);\n        unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n    }\n    else if (sourceObj && sourceObj.length) {\n        for (var i = 0, len = sourceObj.length; i < len; i++) {\n            setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n        }\n    }\n    else {\n        throw new TypeError('Invalid event target');\n    }\n    subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n    return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n    return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n    return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEvent.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js":
+/*!*************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js ***!
+  \*************************************************************************/
+/*! exports provided: fromEventPattern */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromEventPattern\", function() { return fromEventPattern; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ \"./node_modules/rxjs/_esm5/internal/util/isFunction.js\");\n/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Creates an Observable from an API based on addHandler/removeHandler\n * functions.\n *\n * <span class=\"informal\">Converts any addHandler/removeHandler API to an\n * Observable.</span>\n *\n * <img src=\"./img/fromEventPattern.png\" width=\"100%\">\n *\n * Creates an Observable by using the `addHandler` and `removeHandler`\n * functions to add and remove the handlers. The `addHandler` is\n * called when the output Observable is subscribed, and `removeHandler` is\n * called when the Subscription is unsubscribed.\n *\n * @example <caption>Emits clicks happening on the DOM document</caption>\n * function addClickHandler(handler) {\n *   document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n *   document.removeEventListener('click', handler);\n * }\n *\n * var clicks = fromEventPattern(\n *   addClickHandler,\n *   removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * @see {@link from}\n * @see {@link fromEvent}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, signal?: any): void} [removeHandler] An optional function that\n * takes a `handler` function as argument and removes it in case it was\n * previously attached using `addHandler`. if addHandler returns signal to teardown when remove,\n * removeHandler function will forward it.\n * @return {Observable<T>}\n * @name fromEventPattern\n */\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n    if (resultSelector) {\n        // DEPRECATED PATH\n        return fromEventPattern(addHandler, removeHandler).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__[\"map\"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var handler = function () {\n            var e = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                e[_i] = arguments[_i];\n            }\n            return subscriber.next(e.length === 1 ? e[0] : e);\n        };\n        var retValue;\n        try {\n            retValue = addHandler(handler);\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n        if (!Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(removeHandler)) {\n            return undefined;\n        }\n        return function () { return removeHandler(handler, retValue); };\n    });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromIterable.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromIterable.js ***!
+  \*********************************************************************/
+/*! exports provided: fromIterable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromIterable\", function() { return fromIterable; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/iterator */ \"./node_modules/rxjs/_esm5/internal/symbol/iterator.js\");\n/* harmony import */ var _util_subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToIterable */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js\");\n/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator,_util_subscribeToIterable PURE_IMPORTS_END */\n\n\n\n\nfunction fromIterable(input, scheduler) {\n    if (!input) {\n        throw new Error('Iterable cannot be null');\n    }\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](Object(_util_subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__[\"subscribeToIterable\"])(input));\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]();\n            var iterator;\n            sub.add(function () {\n                // Finalize generators\n                if (iterator && typeof iterator.return === 'function') {\n                    iterator.return();\n                }\n            });\n            sub.add(scheduler.schedule(function () {\n                iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__[\"iterator\"]]();\n                sub.add(scheduler.schedule(function () {\n                    if (subscriber.closed) {\n                        return;\n                    }\n                    var value;\n                    var done;\n                    try {\n                        var result = iterator.next();\n                        value = result.value;\n                        done = result.done;\n                    }\n                    catch (err) {\n                        subscriber.error(err);\n                        return;\n                    }\n                    if (done) {\n                        subscriber.complete();\n                    }\n                    else {\n                        subscriber.next(value);\n                        this.schedule();\n                    }\n                }));\n            }));\n            return sub;\n        });\n    }\n}\n//# sourceMappingURL=fromIterable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromIterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromObservable.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromObservable.js ***!
+  \***********************************************************************/
+/*! exports provided: fromObservable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromObservable\", function() { return fromObservable; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/* harmony import */ var _util_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToObservable */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js\");\n/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable,_util_subscribeToObservable PURE_IMPORTS_END */\n\n\n\n\nfunction fromObservable(input, scheduler) {\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](Object(_util_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__[\"subscribeToObservable\"])(input));\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]();\n            sub.add(scheduler.schedule(function () {\n                var observable = input[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__[\"observable\"]]();\n                sub.add(observable.subscribe({\n                    next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n                    error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n                    complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n                }));\n            }));\n            return sub;\n        });\n    }\n}\n//# sourceMappingURL=fromObservable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/fromPromise.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/fromPromise.js ***!
+  \********************************************************************/
+/*! exports provided: fromPromise */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromPromise\", function() { return fromPromise; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _util_subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToPromise */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js\");\n/** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToPromise PURE_IMPORTS_END */\n\n\n\nfunction fromPromise(input, scheduler) {\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](Object(_util_subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__[\"subscribeToPromise\"])(input));\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]();\n            sub.add(scheduler.schedule(function () {\n                return input.then(function (value) {\n                    sub.add(scheduler.schedule(function () {\n                        subscriber.next(value);\n                        sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n                    }));\n                }, function (err) {\n                    sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n                });\n            }));\n            return sub;\n        });\n    }\n}\n//# sourceMappingURL=fromPromise.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/fromPromise.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/generate.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/generate.js ***!
+  \*****************************************************************/
+/*! exports provided: generate */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ \"./node_modules/rxjs/_esm5/internal/util/identity.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */\n\n\n\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n    var resultSelector;\n    var initialState;\n    if (arguments.length == 1) {\n        var options = initialStateOrOptions;\n        initialState = options.initialState;\n        condition = options.condition;\n        iterate = options.iterate;\n        resultSelector = options.resultSelector || _util_identity__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n        scheduler = options.scheduler;\n    }\n    else if (resultSelectorOrObservable === undefined || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__[\"isScheduler\"])(resultSelectorOrObservable)) {\n        initialState = initialStateOrOptions;\n        resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__[\"identity\"];\n        scheduler = resultSelectorOrObservable;\n    }\n    else {\n        initialState = initialStateOrOptions;\n        resultSelector = resultSelectorOrObservable;\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var state = initialState;\n        if (scheduler) {\n            return scheduler.schedule(dispatch, 0, {\n                subscriber: subscriber,\n                iterate: iterate,\n                condition: condition,\n                resultSelector: resultSelector,\n                state: state\n            });\n        }\n        do {\n            if (condition) {\n                var conditionResult = void 0;\n                try {\n                    conditionResult = condition(state);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return undefined;\n                }\n                if (!conditionResult) {\n                    subscriber.complete();\n                    break;\n                }\n            }\n            var value = void 0;\n            try {\n                value = resultSelector(state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return undefined;\n            }\n            subscriber.next(value);\n            if (subscriber.closed) {\n                break;\n            }\n            try {\n                state = iterate(state);\n            }\n            catch (err) {\n                subscriber.error(err);\n                return undefined;\n            }\n        } while (true);\n        return undefined;\n    });\n}\nfunction dispatch(state) {\n    var subscriber = state.subscriber, condition = state.condition;\n    if (subscriber.closed) {\n        return undefined;\n    }\n    if (state.needIterate) {\n        try {\n            state.state = state.iterate(state.state);\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n    }\n    else {\n        state.needIterate = true;\n    }\n    if (condition) {\n        var conditionResult = void 0;\n        try {\n            conditionResult = condition(state.state);\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n        if (!conditionResult) {\n            subscriber.complete();\n            return undefined;\n        }\n        if (subscriber.closed) {\n            return undefined;\n        }\n    }\n    var value;\n    try {\n        value = state.resultSelector(state.state);\n    }\n    catch (err) {\n        subscriber.error(err);\n        return undefined;\n    }\n    if (subscriber.closed) {\n        return undefined;\n    }\n    subscriber.next(value);\n    if (subscriber.closed) {\n        return undefined;\n    }\n    return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/generate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/iif.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/iif.js ***!
+  \************************************************************/
+/*! exports provided: iif */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"iif\", function() { return iif; });\n/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defer */ \"./node_modules/rxjs/_esm5/internal/observable/defer.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\n\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * <span class=\"informal\">`If` statement for Observables.</span>\n *\n * `if` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * then controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `if` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * @example <caption>Change at runtime which Observable will be subscribed</caption>\n * let subscribeToFirst;\n * const firstOrSecond = Rx.Observable.if(\n *   () => subscribeToFirst,\n *   Rx.Observable.of('first'),\n *   Rx.Observable.of('second')\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n *\n * @example <caption>Control an access to an Observable</caption>\n * let accessGranted;\n * const observableIfYouHaveAccess = Rx.Observable.if(\n *   () => accessGranted,\n *   Rx.Observable.of('It seems you have an access...') // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('The end')\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n *   value => console.log(value),\n *   err => {},\n *   () => console.log('The end')\n * );\n *\n * // Logs:\n * // \"The end\"\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n */\nfunction iif(condition, trueResult, falseResult) {\n    if (trueResult === void 0) {\n        trueResult = _empty__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY\"];\n    }\n    if (falseResult === void 0) {\n        falseResult = _empty__WEBPACK_IMPORTED_MODULE_1__[\"EMPTY\"];\n    }\n    return Object(_defer__WEBPACK_IMPORTED_MODULE_0__[\"defer\"])(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/iif.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/interval.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/interval.js ***!
+  \*****************************************************************/
+/*! exports provided: interval */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return interval; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ \"./node_modules/rxjs/_esm5/internal/scheduler/async.js\");\n/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ \"./node_modules/rxjs/_esm5/internal/util/isNumeric.js\");\n/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\n\n\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified IScheduler.\n *\n * <span class=\"informal\">Emits incremental numbers periodically in time.\n * </span>\n *\n * <img src=\"./img/interval.png\" width=\"100%\">\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` IScheduler to provide a notion of time, but you may pass any\n * IScheduler to it.\n *\n * @example <caption>Emits ascending numbers, one every second (1000ms)</caption>\n * var numbers = Rx.Observable.interval(1000);\n * numbers.subscribe(x => console.log(x));\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nfunction interval(period, scheduler) {\n    if (period === void 0) {\n        period = 0;\n    }\n    if (scheduler === void 0) {\n        scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[\"async\"];\n    }\n    if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__[\"isNumeric\"])(period) || period < 0) {\n        period = 0;\n    }\n    if (!scheduler || typeof scheduler.schedule !== 'function') {\n        scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[\"async\"];\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n        return subscriber;\n    });\n}\nfunction dispatch(state) {\n    var subscriber = state.subscriber, counter = state.counter, period = state.period;\n    subscriber.next(counter);\n    this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/interval.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/merge.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/merge.js ***!
+  \**************************************************************/
+/*! exports provided: merge */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/mergeAll */ \"./node_modules/rxjs/_esm5/internal/operators/mergeAll.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * <img src=\"./img/merge.png\" width=\"100%\">\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Merge together two Observables: 1s interval and clicks</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var timer = Rx.Observable.interval(1000);\n * var clicksOrTimer = Rx.Observable.merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n *\n * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var concurrent = 2; // the argument\n * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits it's max iteration, timer2 will\n * //   continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits it's max iteration it terminates, and\n * //   timer3 will continue to emit a value every 500ms until it is complete\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {Scheduler} [scheduler=null] The IScheduler to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nfunction merge() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var concurrent = Number.POSITIVE_INFINITY;\n    var scheduler = null;\n    var last = observables[observables.length - 1];\n    if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__[\"isScheduler\"])(last)) {\n        scheduler = observables.pop();\n        if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n            concurrent = observables.pop();\n        }\n    }\n    else if (typeof last === 'number') {\n        concurrent = observables.pop();\n    }\n    if (scheduler === null && observables.length === 1 && observables[0] instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"]) {\n        return observables[0];\n    }\n    return Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__[\"mergeAll\"])(concurrent)(Object(_fromArray__WEBPACK_IMPORTED_MODULE_3__[\"fromArray\"])(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/merge.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/never.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/never.js ***!
+  \**************************************************************/
+/*! exports provided: NEVER, never */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEVER\", function() { return NEVER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"never\", function() { return never; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/noop */ \"./node_modules/rxjs/_esm5/internal/util/noop.js\");\n/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\n\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * <img src=\"./img/never.png\" width=\"100%\">\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * @example <caption>Emit the number 7, then never emit anything else (not even complete).</caption>\n * function info() {\n *   console.log('Will not be called');\n * }\n * var result = NEVER.startWith(7);\n * result.subscribe(x => console.log(x), info, info);\n *\n * @see {@link create}\n * @see {@link EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nvar NEVER = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](_util_noop__WEBPACK_IMPORTED_MODULE_1__[\"noop\"]);\n/**\n * @deprecated Deprecated in favor of using NEVER constant.\n */\nfunction never() {\n    return NEVER;\n}\n//# sourceMappingURL=never.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/never.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/of.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/of.js ***!
+  \***********************************************************/
+/*! exports provided: of */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"of\", function() { return of; });\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/* harmony import */ var _scalar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scalar */ \"./node_modules/rxjs/_esm5/internal/observable/scalar.js\");\n/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_empty,_scalar PURE_IMPORTS_END */\n\n\n\n\nfunction of() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = args[args.length - 1];\n    if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__[\"isScheduler\"])(scheduler)) {\n        args.pop();\n    }\n    else {\n        scheduler = undefined;\n    }\n    switch (args.length) {\n        case 0:\n            return Object(_empty__WEBPACK_IMPORTED_MODULE_2__[\"empty\"])(scheduler);\n        case 1:\n            return scheduler ? Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__[\"fromArray\"])(args, scheduler) : Object(_scalar__WEBPACK_IMPORTED_MODULE_3__[\"scalar\"])(args[0]);\n        default:\n            return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__[\"fromArray\"])(args, scheduler);\n    }\n}\n//# sourceMappingURL=of.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/of.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js ***!
+  \**************************************************************************/
+/*! exports provided: onErrorResumeNext */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onErrorResumeNext\", function() { return onErrorResumeNext; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * <span class=\"informal\">Execute series of Observables no matter what, even if it means swallowing errors.</span>\n *\n * <img src=\"./img/onErrorResumeNext.png\" width=\"100%\">\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the resuult of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * @example <caption>Subscribe to the next Observable after map fails</caption>\n * import { onErrorResumeNext, of } from 'rxjs/create';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n *  of(1, 2, 3, 0).pipe(\n *    map(x => {\n *      if (x === 0) throw Error();\n *      return 10 / x;\n *    })\n *  ),\n *  of(1, 2, 3),\n * )\n * .subscribe(\n *   val => console.log(val),\n *   err => console.log(err),          // Will never be called.\n *   () => console.log('done')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n *\n * @see {@link concat}\n * @see {@link catch}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nfunction onErrorResumeNext() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    if (sources.length === 0) {\n        return _empty__WEBPACK_IMPORTED_MODULE_3__[\"EMPTY\"];\n    }\n    var first = sources[0], remainder = sources.slice(1);\n    if (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(first)) {\n        return onErrorResumeNext.apply(void 0, first);\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n        return Object(_from__WEBPACK_IMPORTED_MODULE_1__[\"from\"])(first).subscribe({\n            next: function (value) { subscriber.next(value); },\n            error: subNext,\n            complete: subNext,\n        });\n    });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/pairs.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/pairs.js ***!
+  \**************************************************************/
+/*! exports provided: pairs, dispatch */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return pairs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dispatch\", function() { return dispatch; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\n\n\n/**\n * Convert an object into an observable sequence of [key, value] pairs\n * using an optional IScheduler to enumerate the object.\n *\n * @example <caption>Converts a javascript object to an Observable</caption>\n * var obj = {\n *   foo: 42,\n *   bar: 56,\n *   baz: 78\n * };\n *\n * var source = Rx.Observable.pairs(obj);\n *\n * var subscription = source.subscribe(\n *   function (x) {\n *     console.log('Next: %s', x);\n *   },\n *   function (err) {\n *     console.log('Error: %s', err);\n *   },\n *   function () {\n *     console.log('Completed');\n *   });\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to run the\n * enumeration of the input sequence on.\n * @returns {(Observable<[string, T]>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nfunction pairs(obj, scheduler) {\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var keys = Object.keys(obj);\n            for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n                var key = keys[i];\n                if (obj.hasOwnProperty(key)) {\n                    subscriber.next([key, obj[key]]);\n                }\n            }\n            subscriber.complete();\n        });\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n            var keys = Object.keys(obj);\n            var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]();\n            subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n            return subscription;\n        });\n    }\n}\n/** @internal */\nfunction dispatch(state) {\n    var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n    if (!subscriber.closed) {\n        if (index < keys.length) {\n            var key = keys[index];\n            subscriber.next([key, obj[key]]);\n            subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n        }\n        else {\n            subscriber.complete();\n        }\n    }\n}\n//# sourceMappingURL=pairs.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/pairs.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/race.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/race.js ***!
+  \*************************************************************/
+/*! exports provided: race, RaceOperator, RaceSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"race\", function() { return race; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RaceOperator\", function() { return RaceOperator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RaceSubscriber\", function() { return RaceSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ \"./node_modules/rxjs/_esm5/internal/OuterSubscriber.js\");\n/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js\");\n/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\n\n\n\n\n\nfunction race() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    // if the only argument is an array, it was most likely called with\n    // `race([obs1, obs2, ...])`\n    if (observables.length === 1) {\n        if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(observables[0])) {\n            observables = observables[0];\n        }\n        else {\n            return observables[0];\n        }\n    }\n    return Object(_fromArray__WEBPACK_IMPORTED_MODULE_2__[\"fromArray\"])(observables, undefined).lift(new RaceOperator());\n}\nvar RaceOperator = /*@__PURE__*/ (function () {\n    function RaceOperator() {\n    }\n    RaceOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new RaceSubscriber(subscriber));\n    };\n    return RaceOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar RaceSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](RaceSubscriber, _super);\n    function RaceSubscriber(destination) {\n        var _this = _super.call(this, destination) || this;\n        _this.hasFirst = false;\n        _this.observables = [];\n        _this.subscriptions = [];\n        return _this;\n    }\n    RaceSubscriber.prototype._next = function (observable) {\n        this.observables.push(observable);\n    };\n    RaceSubscriber.prototype._complete = function () {\n        var observables = this.observables;\n        var len = observables.length;\n        if (len === 0) {\n            this.destination.complete();\n        }\n        else {\n            for (var i = 0; i < len && !this.hasFirst; i++) {\n                var observable = observables[i];\n                var subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__[\"subscribeToResult\"])(this, observable, observable, i);\n                if (this.subscriptions) {\n                    this.subscriptions.push(subscription);\n                }\n                this.add(subscription);\n            }\n            this.observables = null;\n        }\n    };\n    RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        if (!this.hasFirst) {\n            this.hasFirst = true;\n            for (var i = 0; i < this.subscriptions.length; i++) {\n                if (i !== outerIndex) {\n                    var subscription = this.subscriptions[i];\n                    subscription.unsubscribe();\n                    this.remove(subscription);\n                }\n            }\n            this.subscriptions = null;\n        }\n        this.destination.next(innerValue);\n    };\n    return RaceSubscriber;\n}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__[\"OuterSubscriber\"]));\n\n//# sourceMappingURL=race.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/race.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/range.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/range.js ***!
+  \**************************************************************/
+/*! exports provided: range, dispatch */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dispatch\", function() { return dispatch; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * <span class=\"informal\">Emits a sequence of numbers in a range.</span>\n *\n * <img src=\"./img/range.png\" width=\"100%\">\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * IScheduler and just delivers the notifications synchronously, but may use\n * an optional IScheduler to regulate those deliveries.\n *\n * @example <caption>Emits the numbers 1 to 10</caption>\n * var numbers = Rx.Observable.range(1, 10);\n * numbers.subscribe(x => console.log(x));\n *\n * @see {@link timer}\n * @see {@link interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} [count=0] The number of sequential integers to generate.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nfunction range(start, count, scheduler) {\n    if (start === void 0) {\n        start = 0;\n    }\n    if (count === void 0) {\n        count = 0;\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var index = 0;\n        if (scheduler) {\n            return scheduler.schedule(dispatch, 0, {\n                index: index, count: count, start: start, subscriber: subscriber\n            });\n        }\n        else {\n            do {\n                if (index++ >= count) {\n                    subscriber.complete();\n                    break;\n                }\n                subscriber.next(start++);\n                if (subscriber.closed) {\n                    break;\n                }\n            } while (true);\n        }\n        return undefined;\n    });\n}\n/** @internal */\nfunction dispatch(state) {\n    var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n    if (index >= count) {\n        subscriber.complete();\n        return;\n    }\n    subscriber.next(start);\n    if (subscriber.closed) {\n        return;\n    }\n    state.index = index + 1;\n    state.start = start + 1;\n    this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/range.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/scalar.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/scalar.js ***!
+  \***************************************************************/
+/*! exports provided: scalar */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scalar\", function() { return scalar; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\n\nfunction scalar(value) {\n    var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        subscriber.next(value);\n        subscriber.complete();\n    });\n    result._isScalar = true;\n    result.value = value;\n    return result;\n}\n//# sourceMappingURL=scalar.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/scalar.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/throwError.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/throwError.js ***!
+  \*******************************************************************/
+/*! exports provided: throwError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"throwError\", function() { return throwError; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * <span class=\"informal\">Just emits 'error', and nothing else.\n * </span>\n *\n * <img src=\"./img/throw.png\" width=\"100%\">\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example <caption>Emit the number 7, then emit an error.</caption>\n * import { throwError, concat, of } from 'rxjs/create';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @example <caption>Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 13</caption>\n * import { throwError, interval, of } from 'rxjs/create';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n *   mergeMap(x => x === 13 ?\n *     throwError('Thirteens are bad') :\n *     of('a', 'b', 'c')\n *   )\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throw\n * @owner Observable\n */\nfunction throwError(error, scheduler) {\n    if (!scheduler) {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) { return subscriber.error(error); });\n    }\n    else {\n        return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n    }\n}\nfunction dispatch(_a) {\n    var error = _a.error, subscriber = _a.subscriber;\n    subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/throwError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/timer.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/timer.js ***!
+  \**************************************************************/
+/*! exports provided: timer */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ \"./node_modules/rxjs/_esm5/internal/scheduler/async.js\");\n/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ \"./node_modules/rxjs/_esm5/internal/util/isNumeric.js\");\n/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ \"./node_modules/rxjs/_esm5/internal/util/isScheduler.js\");\n/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\n\n\n\n\n/**\n * Creates an Observable that starts emitting after an `initialDelay` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * <span class=\"informal\">Its like {@link interval}, but you can specify when\n * should the emissions start.</span>\n *\n * <img src=\"./img/timer.png\" width=\"100%\">\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `initialDelay`. The initial delay may be a {@link Date}. By default, this\n * operator uses the `async` IScheduler to provide a notion of time, but you\n * may pass any IScheduler to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * @example <caption>Emits ascending numbers, one every second (1000ms), starting after 3 seconds</caption>\n * var numbers = Rx.Observable.timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n *\n * @example <caption>Emits one number after five seconds</caption>\n * var numbers = Rx.Observable.timer(5000);\n * numbers.subscribe(x => console.log(x));\n *\n * @see {@link interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time to wait before\n * emitting the first value of `0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The IScheduler to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `initialDelay` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nfunction timer(dueTime, periodOrScheduler, scheduler) {\n    if (dueTime === void 0) {\n        dueTime = 0;\n    }\n    var period = -1;\n    if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__[\"isNumeric\"])(periodOrScheduler)) {\n        period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n    }\n    else if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__[\"isScheduler\"])(periodOrScheduler)) {\n        scheduler = periodOrScheduler;\n    }\n    if (!Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__[\"isScheduler\"])(scheduler)) {\n        scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[\"async\"];\n    }\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var due = Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__[\"isNumeric\"])(dueTime)\n            ? dueTime\n            : (+dueTime - scheduler.now());\n        return scheduler.schedule(dispatch, due, {\n            index: 0, period: period, subscriber: subscriber\n        });\n    });\n}\nfunction dispatch(state) {\n    var index = state.index, period = state.period, subscriber = state.subscriber;\n    subscriber.next(index);\n    if (subscriber.closed) {\n        return;\n    }\n    else if (period === -1) {\n        return subscriber.complete();\n    }\n    state.index = index + 1;\n    this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/timer.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/using.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/using.js ***!
+  \**************************************************************/
+/*! exports provided: using */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"using\", function() { return using; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ \"./node_modules/rxjs/_esm5/internal/observable/empty.js\");\n/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\n\n // from from from! LAWL\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * <span class=\"informal\">Use it when you catch yourself cleaning up after an Observable.</span>\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable<T>} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable<T>} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nfunction using(resourceFactory, observableFactory) {\n    return new _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"](function (subscriber) {\n        var resource;\n        try {\n            resource = resourceFactory();\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n        var result;\n        try {\n            result = observableFactory(resource);\n        }\n        catch (err) {\n            subscriber.error(err);\n            return undefined;\n        }\n        var source = result ? Object(_from__WEBPACK_IMPORTED_MODULE_1__[\"from\"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__[\"EMPTY\"];\n        var subscription = source.subscribe(subscriber);\n        return function () {\n            subscription.unsubscribe();\n            if (resource) {\n                resource.unsubscribe();\n            }\n        };\n    });\n}\n//# sourceMappingURL=using.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/using.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/observable/zip.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/observable/zip.js ***!
+  \************************************************************/
+/*! exports provided: zip, ZipOperator, ZipSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return zip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZipOperator\", function() { return ZipOperator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZipSubscriber\", function() { return ZipSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ \"./node_modules/rxjs/_esm5/internal/observable/fromArray.js\");\n/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OuterSubscriber */ \"./node_modules/rxjs/_esm5/internal/OuterSubscriber.js\");\n/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/subscribeToResult */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js\");\n/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/symbol/iterator */ \"./node_modules/rxjs/_esm5/internal/symbol/iterator.js\");\n/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */\n\n\n\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the latest parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * @example <caption>Combine age and name from different sources</caption>\n *\n * let age$ = Observable.of<number>(27, 25, 29);\n * let name$ = Observable.of<string>('Foo', 'Bar', 'Beer');\n * let isDev$ = Observable.of<boolean>(true, true, false);\n *\n * Observable\n *     .zip(age$,\n *          name$,\n *          isDev$,\n *          (age: number, name: string, isDev: boolean) => ({ age, name, isDev }))\n *     .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n *\n * @param observables\n * @return {Observable<R>}\n * @static true\n * @name zip\n * @owner Observable\n */\nfunction zip() {\n    var observables = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        observables[_i] = arguments[_i];\n    }\n    var resultSelector = observables[observables.length - 1];\n    if (typeof resultSelector === 'function') {\n        observables.pop();\n    }\n    return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__[\"fromArray\"])(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n    function ZipOperator(resultSelector) {\n        this.resultSelector = resultSelector;\n    }\n    ZipOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n    };\n    return ZipOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ZipSubscriber, _super);\n    function ZipSubscriber(destination, resultSelector, values) {\n        if (values === void 0) {\n            values = Object.create(null);\n        }\n        var _this = _super.call(this, destination) || this;\n        _this.iterators = [];\n        _this.active = 0;\n        _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null;\n        _this.values = values;\n        return _this;\n    }\n    ZipSubscriber.prototype._next = function (value) {\n        var iterators = this.iterators;\n        if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value)) {\n            iterators.push(new StaticArrayIterator(value));\n        }\n        else if (typeof value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__[\"iterator\"]] === 'function') {\n            iterators.push(new StaticIterator(value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__[\"iterator\"]]()));\n        }\n        else {\n            iterators.push(new ZipBufferIterator(this.destination, this, value));\n        }\n    };\n    ZipSubscriber.prototype._complete = function () {\n        var iterators = this.iterators;\n        var len = iterators.length;\n        if (len === 0) {\n            this.destination.complete();\n            return;\n        }\n        this.active = len;\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            if (iterator.stillUnsubscribed) {\n                this.add(iterator.subscribe(iterator, i));\n            }\n            else {\n                this.active--; // not an observable\n            }\n        }\n    };\n    ZipSubscriber.prototype.notifyInactive = function () {\n        this.active--;\n        if (this.active === 0) {\n            this.destination.complete();\n        }\n    };\n    ZipSubscriber.prototype.checkIterators = function () {\n        var iterators = this.iterators;\n        var len = iterators.length;\n        var destination = this.destination;\n        // abort if not all of them have values\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n                return;\n            }\n        }\n        var shouldComplete = false;\n        var args = [];\n        for (var i = 0; i < len; i++) {\n            var iterator = iterators[i];\n            var result = iterator.next();\n            // check to see if it's completed now that you've gotten\n            // the next value.\n            if (iterator.hasCompleted()) {\n                shouldComplete = true;\n            }\n            if (result.done) {\n                destination.complete();\n                return;\n            }\n            args.push(result.value);\n        }\n        if (this.resultSelector) {\n            this._tryresultSelector(args);\n        }\n        else {\n            destination.next(args);\n        }\n        if (shouldComplete) {\n            destination.complete();\n        }\n    };\n    ZipSubscriber.prototype._tryresultSelector = function (args) {\n        var result;\n        try {\n            result = this.resultSelector.apply(this, args);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return ZipSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__[\"Subscriber\"]));\n\nvar StaticIterator = /*@__PURE__*/ (function () {\n    function StaticIterator(iterator) {\n        this.iterator = iterator;\n        this.nextResult = iterator.next();\n    }\n    StaticIterator.prototype.hasValue = function () {\n        return true;\n    };\n    StaticIterator.prototype.next = function () {\n        var result = this.nextResult;\n        this.nextResult = this.iterator.next();\n        return result;\n    };\n    StaticIterator.prototype.hasCompleted = function () {\n        var nextResult = this.nextResult;\n        return nextResult && nextResult.done;\n    };\n    return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n    function StaticArrayIterator(array) {\n        this.array = array;\n        this.index = 0;\n        this.length = 0;\n        this.length = array.length;\n    }\n    StaticArrayIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__[\"iterator\"]] = function () {\n        return this;\n    };\n    StaticArrayIterator.prototype.next = function (value) {\n        var i = this.index++;\n        var array = this.array;\n        return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n    };\n    StaticArrayIterator.prototype.hasValue = function () {\n        return this.array.length > this.index;\n    };\n    StaticArrayIterator.prototype.hasCompleted = function () {\n        return this.array.length === this.index;\n    };\n    return StaticArrayIterator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ZipBufferIterator, _super);\n    function ZipBufferIterator(destination, parent, observable) {\n        var _this = _super.call(this, destination) || this;\n        _this.parent = parent;\n        _this.observable = observable;\n        _this.stillUnsubscribed = true;\n        _this.buffer = [];\n        _this.isComplete = false;\n        return _this;\n    }\n    ZipBufferIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__[\"iterator\"]] = function () {\n        return this;\n    };\n    // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n    //    this is legit because `next()` will never be called by a subscription in this case.\n    ZipBufferIterator.prototype.next = function () {\n        var buffer = this.buffer;\n        if (buffer.length === 0 && this.isComplete) {\n            return { value: null, done: true };\n        }\n        else {\n            return { value: buffer.shift(), done: false };\n        }\n    };\n    ZipBufferIterator.prototype.hasValue = function () {\n        return this.buffer.length > 0;\n    };\n    ZipBufferIterator.prototype.hasCompleted = function () {\n        return this.buffer.length === 0 && this.isComplete;\n    };\n    ZipBufferIterator.prototype.notifyComplete = function () {\n        if (this.buffer.length > 0) {\n            this.isComplete = true;\n            this.parent.notifyInactive();\n        }\n        else {\n            this.destination.complete();\n        }\n    };\n    ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.buffer.push(innerValue);\n        this.parent.checkIterators();\n    };\n    ZipBufferIterator.prototype.subscribe = function (value, index) {\n        return Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__[\"subscribeToResult\"])(this, this.observable, this, index);\n    };\n    return ZipBufferIterator;\n}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__[\"OuterSubscriber\"]));\n//# sourceMappingURL=zip.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/observable/zip.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/concatAll.js ***!
+  \*****************************************************************/
+/*! exports provided: concatAll */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concatAll\", function() { return concatAll; });\n/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeAll */ \"./node_modules/rxjs/_esm5/internal/operators/mergeAll.js\");\n/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * <img src=\"./img/concatAll.png\" width=\"100%\">\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nfunction concatAll() {\n    return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__[\"mergeAll\"])(1);\n}\n//# sourceMappingURL=concatAll.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/concatAll.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/groupBy.js ***!
+  \***************************************************************/
+/*! exports provided: groupBy, GroupedObservable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return groupBy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GroupedObservable\", function() { return GroupedObservable; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subject */ \"./node_modules/rxjs/_esm5/internal/Subject.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */\n\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * <img src=\"./img/groupBy.png\" width=\"100%\">\n *\n * @example <caption>Group objects by id and return as array</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs3'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *     )\n *     .groupBy(p => p.id)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], []))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'aze1' },\n * //   { id: 1, name: 'erg1' },\n * //   { id: 1, name: 'df1' } ]\n * //\n * // [ { id: 2, name: 'sf2' },\n * //   { id: 2, name: 'dg2' },\n * //   { id: 2, name: 'sfqfb2' },\n * //   { id: 2, name: 'qsgqsfg2' } ]\n * //\n * // [ { id: 3, name: 'qfs3' } ]\n *\n * @example <caption>Pivot data on the id field</caption>\n * Observable.of<Obj>({id: 1, name: 'aze1'},\n *                    {id: 2, name: 'sf2'},\n *                    {id: 2, name: 'dg2'},\n *                    {id: 1, name: 'erg1'},\n *                    {id: 1, name: 'df1'},\n *                    {id: 2, name: 'sfqfb2'},\n *                    {id: 3, name: 'qfs1'},\n *                    {id: 2, name: 'qsgqsfg2'}\n *                   )\n *     .groupBy(p => p.id, p => p.name)\n *     .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], [\"\" + group$.key]))\n *     .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)}))\n *     .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] }\n * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] }\n * // { id: 3, values: [ 'qfs1' ] }\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable<K,R>): Observable<any>} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable<GroupedObservable<K,R>>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nfunction groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n    return function (source) {\n        return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n    };\n}\nvar GroupByOperator = /*@__PURE__*/ (function () {\n    function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n        this.keySelector = keySelector;\n        this.elementSelector = elementSelector;\n        this.durationSelector = durationSelector;\n        this.subjectSelector = subjectSelector;\n    }\n    GroupByOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n    };\n    return GroupByOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar GroupBySubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](GroupBySubscriber, _super);\n    function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n        var _this = _super.call(this, destination) || this;\n        _this.keySelector = keySelector;\n        _this.elementSelector = elementSelector;\n        _this.durationSelector = durationSelector;\n        _this.subjectSelector = subjectSelector;\n        _this.groups = null;\n        _this.attemptedToUnsubscribe = false;\n        _this.count = 0;\n        return _this;\n    }\n    GroupBySubscriber.prototype._next = function (value) {\n        var key;\n        try {\n            key = this.keySelector(value);\n        }\n        catch (err) {\n            this.error(err);\n            return;\n        }\n        this._group(value, key);\n    };\n    GroupBySubscriber.prototype._group = function (value, key) {\n        var groups = this.groups;\n        if (!groups) {\n            groups = this.groups = new Map();\n        }\n        var group = groups.get(key);\n        var element;\n        if (this.elementSelector) {\n            try {\n                element = this.elementSelector(value);\n            }\n            catch (err) {\n                this.error(err);\n            }\n        }\n        else {\n            element = value;\n        }\n        if (!group) {\n            group = (this.subjectSelector ? this.subjectSelector() : new _Subject__WEBPACK_IMPORTED_MODULE_4__[\"Subject\"]());\n            groups.set(key, group);\n            var groupedObservable = new GroupedObservable(key, group, this);\n            this.destination.next(groupedObservable);\n            if (this.durationSelector) {\n                var duration = void 0;\n                try {\n                    duration = this.durationSelector(new GroupedObservable(key, group));\n                }\n                catch (err) {\n                    this.error(err);\n                    return;\n                }\n                this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n            }\n        }\n        if (!group.closed) {\n            group.next(element);\n        }\n    };\n    GroupBySubscriber.prototype._error = function (err) {\n        var groups = this.groups;\n        if (groups) {\n            groups.forEach(function (group, key) {\n                group.error(err);\n            });\n            groups.clear();\n        }\n        this.destination.error(err);\n    };\n    GroupBySubscriber.prototype._complete = function () {\n        var groups = this.groups;\n        if (groups) {\n            groups.forEach(function (group, key) {\n                group.complete();\n            });\n            groups.clear();\n        }\n        this.destination.complete();\n    };\n    GroupBySubscriber.prototype.removeGroup = function (key) {\n        this.groups.delete(key);\n    };\n    GroupBySubscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.attemptedToUnsubscribe = true;\n            if (this.count === 0) {\n                _super.prototype.unsubscribe.call(this);\n            }\n        }\n    };\n    return GroupBySubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](GroupDurationSubscriber, _super);\n    function GroupDurationSubscriber(key, group, parent) {\n        var _this = _super.call(this, group) || this;\n        _this.key = key;\n        _this.group = group;\n        _this.parent = parent;\n        return _this;\n    }\n    GroupDurationSubscriber.prototype._next = function (value) {\n        this.complete();\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    GroupDurationSubscriber.prototype._unsubscribe = function () {\n        var _a = this, parent = _a.parent, key = _a.key;\n        this.key = this.parent = null;\n        if (parent) {\n            parent.removeGroup(key);\n        }\n    };\n    return GroupDurationSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable<K, T>\n */\nvar GroupedObservable = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](GroupedObservable, _super);\n    /** @deprecated Do not construct this type. Internal use only */\n    function GroupedObservable(key, groupSubject, refCountSubscription) {\n        var _this = _super.call(this) || this;\n        _this.key = key;\n        _this.groupSubject = groupSubject;\n        _this.refCountSubscription = refCountSubscription;\n        return _this;\n    }\n    /** @deprecated This is an internal implementation detail, do not use. */\n    GroupedObservable.prototype._subscribe = function (subscriber) {\n        var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[\"Subscription\"]();\n        var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n        if (refCountSubscription && !refCountSubscription.closed) {\n            subscription.add(new InnerRefCountSubscription(refCountSubscription));\n        }\n        subscription.add(groupSubject.subscribe(subscriber));\n        return subscription;\n    };\n    return GroupedObservable;\n}(_Observable__WEBPACK_IMPORTED_MODULE_3__[\"Observable\"]));\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](InnerRefCountSubscription, _super);\n    function InnerRefCountSubscription(parent) {\n        var _this = _super.call(this) || this;\n        _this.parent = parent;\n        parent.count++;\n        return _this;\n    }\n    InnerRefCountSubscription.prototype.unsubscribe = function () {\n        var parent = this.parent;\n        if (!parent.closed && !this.closed) {\n            _super.prototype.unsubscribe.call(this);\n            parent.count -= 1;\n            if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n                parent.unsubscribe();\n            }\n        }\n    };\n    return InnerRefCountSubscription;\n}(_Subscription__WEBPACK_IMPORTED_MODULE_2__[\"Subscription\"]));\n//# sourceMappingURL=groupBy.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/groupBy.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/map.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/map.js ***!
+  \***********************************************************/
+/*! exports provided: map, MapOperator */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MapOperator\", function() { return MapOperator; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\n\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * <img src=\"./img/map.png\" width=\"100%\">\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example <caption>Map every click to the clientX position of that click</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable<R>} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n    return function mapOperation(source) {\n        if (typeof project !== 'function') {\n            throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n        }\n        return source.lift(new MapOperator(project, thisArg));\n    };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n    function MapOperator(project, thisArg) {\n        this.project = project;\n        this.thisArg = thisArg;\n    }\n    MapOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n    };\n    return MapOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](MapSubscriber, _super);\n    function MapSubscriber(destination, project, thisArg) {\n        var _this = _super.call(this, destination) || this;\n        _this.project = project;\n        _this.count = 0;\n        _this.thisArg = thisArg || _this;\n        return _this;\n    }\n    // NOTE: This looks unoptimized, but it's actually purposefully NOT\n    // using try/catch optimizations.\n    MapSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.project.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.destination.next(result);\n    };\n    return MapSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n//# sourceMappingURL=map.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/map.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/mergeAll.js ***!
+  \****************************************************************/
+/*! exports provided: mergeAll */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeAll\", function() { return mergeAll; });\n/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ \"./node_modules/rxjs/_esm5/internal/operators/mergeMap.js\");\n/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ \"./node_modules/rxjs/_esm5/internal/util/identity.js\");\n/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\n\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * <img src=\"./img/mergeAll.png\" width=\"100%\">\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nfunction mergeAll(concurrent) {\n    if (concurrent === void 0) {\n        concurrent = Number.POSITIVE_INFINITY;\n    }\n    return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[\"mergeMap\"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__[\"identity\"], concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeAll.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/mergeMap.js ***!
+  \****************************************************************/
+/*! exports provided: mergeMap, MergeMapOperator, MergeMapSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeMap\", function() { return mergeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeMapOperator\", function() { return MergeMapOperator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MergeMapSubscriber\", function() { return MergeMapSubscriber; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToResult */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js\");\n/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ \"./node_modules/rxjs/_esm5/internal/OuterSubscriber.js\");\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map */ \"./node_modules/rxjs/_esm5/internal/operators/map.js\");\n/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../observable/from */ \"./node_modules/rxjs/_esm5/internal/observable/from.js\");\n/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_map,_observable_from PURE_IMPORTS_END */\n\n\n\n\n\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * <img src=\"./img/mergeMap.png\" width=\"100%\">\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n *   Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) {\n        concurrent = Number.POSITIVE_INFINITY;\n    }\n    if (typeof resultSelector === 'function') {\n        // DEPRECATED PATH\n        return function (source) { return source.pipe(mergeMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_4__[\"from\"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_3__[\"map\"])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n    }\n    else if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n    }\n    return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n    function MergeMapOperator(project, concurrent) {\n        if (concurrent === void 0) {\n            concurrent = Number.POSITIVE_INFINITY;\n        }\n        this.project = project;\n        this.concurrent = concurrent;\n    }\n    MergeMapOperator.prototype.call = function (observer, source) {\n        return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n    };\n    return MergeMapOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](MergeMapSubscriber, _super);\n    function MergeMapSubscriber(destination, project, concurrent) {\n        if (concurrent === void 0) {\n            concurrent = Number.POSITIVE_INFINITY;\n        }\n        var _this = _super.call(this, destination) || this;\n        _this.project = project;\n        _this.concurrent = concurrent;\n        _this.hasCompleted = false;\n        _this.buffer = [];\n        _this.active = 0;\n        _this.index = 0;\n        return _this;\n    }\n    MergeMapSubscriber.prototype._next = function (value) {\n        if (this.active < this.concurrent) {\n            this._tryNext(value);\n        }\n        else {\n            this.buffer.push(value);\n        }\n    };\n    MergeMapSubscriber.prototype._tryNext = function (value) {\n        var result;\n        var index = this.index++;\n        try {\n            result = this.project(value, index);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        this.active++;\n        this._innerSub(result, value, index);\n    };\n    MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n        this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__[\"subscribeToResult\"])(this, ish, value, index));\n    };\n    MergeMapSubscriber.prototype._complete = function () {\n        this.hasCompleted = true;\n        if (this.active === 0 && this.buffer.length === 0) {\n            this.destination.complete();\n        }\n    };\n    MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n        this.destination.next(innerValue);\n    };\n    MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n        var buffer = this.buffer;\n        this.remove(innerSub);\n        this.active--;\n        if (buffer.length > 0) {\n            this._next(buffer.shift());\n        }\n        else if (this.active === 0 && this.hasCompleted) {\n            this.destination.complete();\n        }\n    };\n    return MergeMapSubscriber;\n}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__[\"OuterSubscriber\"]));\n\n//# sourceMappingURL=mergeMap.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMap.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/observeOn.js ***!
+  \*****************************************************************/
+/*! exports provided: observeOn, ObserveOnOperator, ObserveOnSubscriber, ObserveOnMessage */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"observeOn\", function() { return observeOn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObserveOnOperator\", function() { return ObserveOnOperator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObserveOnSubscriber\", function() { return ObserveOnSubscriber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObserveOnMessage\", function() { return ObserveOnMessage; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Notification */ \"./node_modules/rxjs/_esm5/internal/Notification.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\n\n\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n *                                               // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame)       // ...but we will observe on animationFrame\n * .subscribe(val => {                           // scheduler to ensure smooth animation.\n *   someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable<T>} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nfunction observeOn(scheduler, delay) {\n    if (delay === void 0) {\n        delay = 0;\n    }\n    return function observeOnOperatorFunction(source) {\n        return source.lift(new ObserveOnOperator(scheduler, delay));\n    };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n    function ObserveOnOperator(scheduler, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        this.scheduler = scheduler;\n        this.delay = delay;\n    }\n    ObserveOnOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n    };\n    return ObserveOnOperator;\n}());\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ObserveOnSubscriber, _super);\n    function ObserveOnSubscriber(destination, scheduler, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        var _this = _super.call(this, destination) || this;\n        _this.scheduler = scheduler;\n        _this.delay = delay;\n        return _this;\n    }\n    /** @nocollapse */\n    ObserveOnSubscriber.dispatch = function (arg) {\n        var notification = arg.notification, destination = arg.destination;\n        notification.observe(destination);\n        this.unsubscribe();\n    };\n    ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n        this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n    };\n    ObserveOnSubscriber.prototype._next = function (value) {\n        this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__[\"Notification\"].createNext(value));\n    };\n    ObserveOnSubscriber.prototype._error = function (err) {\n        this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__[\"Notification\"].createError(err));\n    };\n    ObserveOnSubscriber.prototype._complete = function () {\n        this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__[\"Notification\"].createComplete());\n    };\n    return ObserveOnSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n    function ObserveOnMessage(notification, destination) {\n        this.notification = notification;\n        this.destination = destination;\n    }\n    return ObserveOnMessage;\n}());\n\n//# sourceMappingURL=observeOn.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/observeOn.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/operators/refCount.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/operators/refCount.js ***!
+  \****************************************************************/
+/*! exports provided: refCount */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refCount\", function() { return refCount; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\n\n\nfunction refCount() {\n    return function refCountOperatorFunction(source) {\n        return source.lift(new RefCountOperator(source));\n    };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        ///\n        // Compare the local RefCountSubscriber's connection Subscription to the\n        // connection Subscription on the shared ConnectableObservable. In cases\n        // where the ConnectableObservable source synchronously emits values, and\n        // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n        // execution continues to here before the RefCountOperator has a chance to\n        // supply the RefCountSubscriber with the shared connection Subscription.\n        // For example:\n        // ```\n        // Observable.range(0, 10)\n        //   .publish()\n        //   .refCount()\n        //   .take(5)\n        //   .subscribe();\n        // ```\n        // In order to account for this case, RefCountSubscriber should only dispose\n        // the ConnectableObservable's shared connection Subscription if the\n        // connection Subscription exists, *and* either:\n        //   a. RefCountSubscriber doesn't have a reference to the shared connection\n        //      Subscription yet, or,\n        //   b. RefCountSubscriber's connection Subscription reference is identical\n        //      to the shared connection Subscription\n        ///\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[\"Subscriber\"]));\n//# sourceMappingURL=refCount.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/operators/refCount.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/Action.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/Action.js ***!
+  \**************************************************************/
+/*! exports provided: Action */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Action\", function() { return Action; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ \"./node_modules/rxjs/_esm5/internal/Subscription.js\");\n/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\n\n\n/**\n * A unit of work to be executed in a {@link Scheduler}. An action is typically\n * created from within a Scheduler and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n *   new (scheduler: Scheduler, work: (state?: T) => void);\n *   schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nvar Action = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](Action, _super);\n    function Action(scheduler, work) {\n        return _super.call(this) || this;\n    }\n    /**\n     * Schedules this action on its parent Scheduler for execution. May be passed\n     * some context object, `state`. May happen at some point in the future,\n     * according to the `delay` parameter, if specified.\n     * @param {T} [state] Some contextual data that the `work` function uses when\n     * called by the Scheduler.\n     * @param {number} [delay] Time to wait before executing the work, where the\n     * time unit is implicit and defined by the Scheduler.\n     * @return {void}\n     */\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return this;\n    };\n    return Action;\n}(_Subscription__WEBPACK_IMPORTED_MODULE_1__[\"Subscription\"]));\n\n//# sourceMappingURL=Action.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js ***!
+  \****************************************************************************/
+/*! exports provided: AnimationFrameAction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnimationFrameAction\", function() { return AnimationFrameAction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js\");\n/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AnimationFrameAction, _super);\n    function AnimationFrameAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        return _this;\n    }\n    AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If delay is greater than 0, request as an async action.\n        if (delay !== null && delay > 0) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Push the action to the end of the scheduler queue.\n        scheduler.actions.push(this);\n        // If an animation frame has already been requested, don't request another\n        // one. If an animation frame hasn't been requested yet, request one. Return\n        // the current animation frame request id.\n        return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n    };\n    AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n        }\n        // If the scheduler queue is empty, cancel the requested animation frame and\n        // set the scheduled flag to undefined so the next AnimationFrameAction will\n        // request its own.\n        if (scheduler.actions.length === 0) {\n            cancelAnimationFrame(id);\n            scheduler.scheduled = undefined;\n        }\n        // Return undefined so the action knows to request a new async id if it's rescheduled.\n        return undefined;\n    };\n    return AnimationFrameAction;\n}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[\"AsyncAction\"]));\n\n//# sourceMappingURL=AnimationFrameAction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js":
+/*!*******************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js ***!
+  \*******************************************************************************/
+/*! exports provided: AnimationFrameScheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AnimationFrameScheduler\", function() { return AnimationFrameScheduler; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js\");\n/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\n\n\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AnimationFrameScheduler, _super);\n    function AnimationFrameScheduler() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AnimationFrameScheduler.prototype.flush = function (action) {\n        this.active = true;\n        this.scheduled = undefined;\n        var actions = this.actions;\n        var error;\n        var index = -1;\n        var count = actions.length;\n        action = action || actions.shift();\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (++index < count && (action = actions.shift()));\n        this.active = false;\n        if (error) {\n            while (++index < count && (action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AnimationFrameScheduler;\n}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AsyncScheduler\"]));\n\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js ***!
+  \******************************************************************/
+/*! exports provided: AsapAction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsapAction\", function() { return AsapAction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/Immediate */ \"./node_modules/rxjs/_esm5/internal/util/Immediate.js\");\n/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js\");\n/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\n\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AsapAction, _super);\n    function AsapAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        return _this;\n    }\n    AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If delay is greater than 0, request as an async action.\n        if (delay !== null && delay > 0) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Push the action to the end of the scheduler queue.\n        scheduler.actions.push(this);\n        // If a microtask has already been scheduled, don't schedule another\n        // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n        // the current scheduled microtask id.\n        return scheduler.scheduled || (scheduler.scheduled = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[\"Immediate\"].setImmediate(scheduler.flush.bind(scheduler, null)));\n    };\n    AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n        }\n        // If the scheduler queue is empty, cancel the requested microtask and\n        // set the scheduled flag to undefined so the next AsapAction will schedule\n        // its own.\n        if (scheduler.actions.length === 0) {\n            _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[\"Immediate\"].clearImmediate(id);\n            scheduler.scheduled = undefined;\n        }\n        // Return undefined so the action knows to request a new async id if it's rescheduled.\n        return undefined;\n    };\n    return AsapAction;\n}(_AsyncAction__WEBPACK_IMPORTED_MODULE_2__[\"AsyncAction\"]));\n\n//# sourceMappingURL=AsapAction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js ***!
+  \*********************************************************************/
+/*! exports provided: AsapScheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsapScheduler\", function() { return AsapScheduler; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js\");\n/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\n\n\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AsapScheduler, _super);\n    function AsapScheduler() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AsapScheduler.prototype.flush = function (action) {\n        this.active = true;\n        this.scheduled = undefined;\n        var actions = this.actions;\n        var error;\n        var index = -1;\n        var count = actions.length;\n        action = action || actions.shift();\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (++index < count && (action = actions.shift()));\n        this.active = false;\n        if (error) {\n            while (++index < count && (action = actions.shift())) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsapScheduler;\n}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AsyncScheduler\"]));\n\n//# sourceMappingURL=AsapScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js ***!
+  \*******************************************************************/
+/*! exports provided: AsyncAction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsyncAction\", function() { return AsyncAction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Action */ \"./node_modules/rxjs/_esm5/internal/scheduler/Action.js\");\n/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.pending = false;\n        return _this;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (this.closed) {\n            return this;\n        }\n        // Always replace the current state with the new state.\n        this.state = state;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        //\n        // Important implementation note:\n        //\n        // Actions only execute once by default, unless rescheduled from within the\n        // scheduled callback. This allows us to implement single and repeat\n        // actions via the same code path, without adding API surface area, as well\n        // as mimic traditional recursion but across asynchronous boundaries.\n        //\n        // However, JS runtimes and timers distinguish between intervals achieved by\n        // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n        // serial `setTimeout` calls can be individually delayed, which delays\n        // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n        // guarantee the interval callback will be invoked more precisely to the\n        // interval period, regardless of load.\n        //\n        // Therefore, we use `setInterval` to schedule single and repeat actions.\n        // If the action reschedules itself with the same delay, the interval is not\n        // canceled. If the action doesn't reschedule, or reschedules with a\n        // different delay, the interval will be canceled after scheduled callback\n        // execution.\n        //\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        // Set the pending flag indicating that this action has been scheduled, or\n        // has recursively rescheduled itself.\n        this.pending = true;\n        this.delay = delay;\n        // If this action has already an async Id, don't request a new one.\n        this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If this action is rescheduled with the same delay time, don't clear the interval id.\n        if (delay !== null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        // Otherwise, if the action's delay time is different from the current delay,\n        // or the action has been rescheduled before it's executed, clear the interval id\n        return clearInterval(id) && undefined || undefined;\n    };\n    /**\n     * Immediately executes this action and the `work` it contains.\n     * @return {any}\n     */\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            // Dequeue if the action didn't reschedule itself. Don't call\n            // unsubscribe(), because the action could reschedule later.\n            // For example:\n            // ```\n            // scheduler.schedule(function doWork(counter) {\n            //   /* ... I'm a busy worker bee ... */\n            //   var originalAction = this;\n            //   /* wait 100ms before rescheduling the action */\n            //   setTimeout(function () {\n            //     originalAction.schedule(counter + 1);\n            //   }, 100);\n            // }, 1000);\n            // ```\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, delay) {\n        var errored = false;\n        var errorValue = undefined;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = !!e && e || new Error(e);\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    /** @deprecated This is an internal implementation detail, do not use. */\n    AsyncAction.prototype._unsubscribe = function () {\n        var id = this.id;\n        var scheduler = this.scheduler;\n        var actions = scheduler.actions;\n        var index = actions.indexOf(this);\n        this.work = null;\n        this.state = null;\n        this.pending = false;\n        this.scheduler = null;\n        if (index !== -1) {\n            actions.splice(index, 1);\n        }\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, null);\n        }\n        this.delay = null;\n    };\n    return AsyncAction;\n}(_Action__WEBPACK_IMPORTED_MODULE_1__[\"Action\"]));\n\n//# sourceMappingURL=AsyncAction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js ***!
+  \**********************************************************************/
+/*! exports provided: AsyncScheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AsyncScheduler\", function() { return AsyncScheduler; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Scheduler */ \"./node_modules/rxjs/_esm5/internal/Scheduler.js\");\n/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\n\n\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](AsyncScheduler, _super);\n    function AsyncScheduler(SchedulerAction, now) {\n        if (now === void 0) {\n            now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__[\"Scheduler\"].now;\n        }\n        var _this = _super.call(this, SchedulerAction, function () {\n            if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n                return AsyncScheduler.delegate.now();\n            }\n            else {\n                return now();\n            }\n        }) || this;\n        _this.actions = [];\n        /**\n         * A flag to indicate whether the Scheduler is currently executing a batch of\n         * queued actions.\n         * @type {boolean}\n         * @deprecated internal use only\n         */\n        _this.active = false;\n        /**\n         * An internal ID used to track the latest asynchronous task such as those\n         * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n         * others.\n         * @type {any}\n         * @deprecated internal use only\n         */\n        _this.scheduled = undefined;\n        return _this;\n    }\n    AsyncScheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n            return AsyncScheduler.delegate.schedule(work, delay, state);\n        }\n        else {\n            return _super.prototype.schedule.call(this, work, delay, state);\n        }\n    };\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this.active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this.active = true;\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (action = actions.shift()); // exhaust the scheduler queue\n        this.active = false;\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(_Scheduler__WEBPACK_IMPORTED_MODULE_1__[\"Scheduler\"]));\n\n//# sourceMappingURL=AsyncScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js ***!
+  \*******************************************************************/
+/*! exports provided: QueueAction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueueAction\", function() { return QueueAction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js\");\n/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\n\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](QueueAction, _super);\n    function QueueAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        return _this;\n    }\n    QueueAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (delay > 0) {\n            return _super.prototype.schedule.call(this, state, delay);\n        }\n        this.delay = delay;\n        this.state = state;\n        this.scheduler.flush(this);\n        return this;\n    };\n    QueueAction.prototype.execute = function (state, delay) {\n        return (delay > 0 || this.closed) ?\n            _super.prototype.execute.call(this, state, delay) :\n            this._execute(state, delay);\n    };\n    QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        // If delay exists and is greater than 0, or if the delay is null (the\n        // action wasn't rescheduled) but was originally scheduled as an async\n        // action, then recycle as an async action.\n        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n        }\n        // Otherwise flush the scheduler starting with this action.\n        return scheduler.flush(this);\n    };\n    return QueueAction;\n}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[\"AsyncAction\"]));\n\n//# sourceMappingURL=QueueAction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js ***!
+  \**********************************************************************/
+/*! exports provided: QueueScheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueueScheduler\", function() { return QueueScheduler; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js\");\n/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\n\n\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](QueueScheduler, _super);\n    function QueueScheduler() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return QueueScheduler;\n}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AsyncScheduler\"]));\n\n//# sourceMappingURL=QueueScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js ***!
+  \****************************************************************************/
+/*! exports provided: VirtualTimeScheduler, VirtualAction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualTimeScheduler\", function() { return VirtualTimeScheduler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualAction\", function() { return VirtualAction; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js\");\n/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js\");\n/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\n\n\n\nvar VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](VirtualTimeScheduler, _super);\n    function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n        if (SchedulerAction === void 0) {\n            SchedulerAction = VirtualAction;\n        }\n        if (maxFrames === void 0) {\n            maxFrames = Number.POSITIVE_INFINITY;\n        }\n        var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n        _this.maxFrames = maxFrames;\n        _this.frame = 0;\n        _this.index = -1;\n        return _this;\n    }\n    /**\n     * Prompt the Scheduler to execute all of its queued actions, therefore\n     * clearing its queue.\n     * @return {void}\n     */\n    VirtualTimeScheduler.prototype.flush = function () {\n        var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n        var error, action;\n        while ((action = actions.shift()) && (this.frame = action.delay) <= maxFrames) {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        }\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    VirtualTimeScheduler.frameTimeFactor = 10;\n    return VirtualTimeScheduler;\n}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__[\"AsyncScheduler\"]));\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar VirtualAction = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](VirtualAction, _super);\n    function VirtualAction(scheduler, work, index) {\n        if (index === void 0) {\n            index = scheduler.index += 1;\n        }\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.index = index;\n        _this.active = true;\n        _this.index = scheduler.index = index;\n        return _this;\n    }\n    VirtualAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (!this.id) {\n            return _super.prototype.schedule.call(this, state, delay);\n        }\n        this.active = false;\n        // If an action is rescheduled, we save allocations by mutating its state,\n        // pushing it to the end of the scheduler queue, and recycling the action.\n        // But since the VirtualTimeScheduler is used for testing, VirtualActions\n        // must be immutable so they can be inspected later.\n        var action = new VirtualAction(this.scheduler, this.work);\n        this.add(action);\n        return action.schedule(state, delay);\n    };\n    VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        this.delay = scheduler.frame + delay;\n        var actions = scheduler.actions;\n        actions.push(this);\n        actions.sort(VirtualAction.sortActions);\n        return true;\n    };\n    VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return undefined;\n    };\n    VirtualAction.prototype._execute = function (state, delay) {\n        if (this.active === true) {\n            return _super.prototype._execute.call(this, state, delay);\n        }\n    };\n    VirtualAction.sortActions = function (a, b) {\n        if (a.delay === b.delay) {\n            if (a.index === b.index) {\n                return 0;\n            }\n            else if (a.index > b.index) {\n                return 1;\n            }\n            else {\n                return -1;\n            }\n        }\n        else if (a.delay > b.delay) {\n            return 1;\n        }\n        else {\n            return -1;\n        }\n    };\n    return VirtualAction;\n}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[\"AsyncAction\"]));\n\n//# sourceMappingURL=VirtualTimeScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js ***!
+  \**********************************************************************/
+/*! exports provided: animationFrame */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"animationFrame\", function() { return animationFrame; });\n/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimationFrameAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js\");\n/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnimationFrameScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js\");\n/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\n\n\n/**\n *\n * Animation Frame Scheduler\n *\n * <span class=\"informal\">Perform task when `window.requestAnimationFrame` would fire</span>\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link async} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * @example <caption>Schedule div height animation</caption>\n * const div = document.querySelector('.some-div');\n *\n * Rx.Scheduler.animationFrame.schedule(function(height) {\n *   div.style.height = height + \"px\";\n *\n *   this.schedule(height + 1);  // `this` references currently executing Action,\n *                               // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see .some-div element growing in height\n *\n *\n * @static true\n * @name animationFrame\n * @owner Scheduler\n */\nvar animationFrame = /*@__PURE__*/ new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AnimationFrameScheduler\"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__[\"AnimationFrameAction\"]);\n//# sourceMappingURL=animationFrame.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/asap.js ***!
+  \************************************************************/
+/*! exports provided: asap */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asap\", function() { return asap; });\n/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsapAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js\");\n/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsapScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js\");\n/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\n\n\n/**\n *\n * Asap Scheduler\n *\n * <span class=\"informal\">Perform task as fast as it can be performed asynchronously</span>\n *\n * `asap` scheduler behaves the same as {@link async} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * @example <caption>Compare async and asap scheduler</caption>\n *\n * Rx.Scheduler.async.schedule(() => console.log('async')); // scheduling 'async' first...\n * Rx.Scheduler.asap.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n *\n * @static true\n * @name asap\n * @owner Scheduler\n */\nvar asap = /*@__PURE__*/ new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AsapScheduler\"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__[\"AsapAction\"]);\n//# sourceMappingURL=asap.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/asap.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/async.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/async.js ***!
+  \*************************************************************/
+/*! exports provided: async */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"async\", function() { return async; });\n/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js\");\n/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js\");\n/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\n\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asap} scheduler.\n *\n * @example <caption>Use async scheduler to delay task</caption>\n * const task = () => console.log('it works!');\n *\n * Rx.Scheduler.async.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n *\n *\n * @example <caption>Use async scheduler to repeat task in intervals</caption>\n * function task(state) {\n *   console.log(state);\n *   this.schedule(state + 1, 1000); // `this` references currently executing Action,\n *                                   // which we reschedule with new state and delay\n * }\n *\n * Rx.Scheduler.async.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n *\n * @static true\n * @name async\n * @owner Scheduler\n */\nvar async = /*@__PURE__*/ new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[\"AsyncScheduler\"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__[\"AsyncAction\"]);\n//# sourceMappingURL=async.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/scheduler/queue.js ***!
+  \*************************************************************/
+/*! exports provided: queue */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"queue\", function() { return queue; });\n/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QueueAction */ \"./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js\");\n/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueueScheduler */ \"./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js\");\n/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\n\n\n/**\n *\n * Queue Scheduler\n *\n * <span class=\"informal\">Put every next task on a queue, instead of executing it immediately</span>\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link async} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * @examples <caption>Schedule recursively first, then do something</caption>\n *\n * Rx.Scheduler.queue.schedule(() => {\n *   Rx.Scheduler.queue.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n *   console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n *\n *\n * @example <caption>Reschedule itself recursively</caption>\n *\n * Rx.Scheduler.queue.schedule(function(state) {\n *   if (state !== 0) {\n *     console.log('before', state);\n *     this.schedule(state - 1); // `this` references currently executing Action,\n *                               // which we reschedule with new state\n *     console.log('after', state);\n *   }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n *\n *\n * @static true\n * @name queue\n * @owner Scheduler\n */\nvar queue = /*@__PURE__*/ new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__[\"QueueScheduler\"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__[\"QueueAction\"]);\n//# sourceMappingURL=queue.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/scheduler/queue.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/symbol/iterator.js ***!
+  \*************************************************************/
+/*! exports provided: getSymbolIterator, iterator, $$iterator */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSymbolIterator\", function() { return getSymbolIterator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"iterator\", function() { return iterator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"$$iterator\", function() { return $$iterator; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction getSymbolIterator() {\n    if (typeof Symbol !== 'function' || !Symbol.iterator) {\n        return '@@iterator';\n    }\n    return Symbol.iterator;\n}\nvar iterator = /*@__PURE__*/ getSymbolIterator();\n/**\n * @deprecated use {@link iterator} instead\n */\nvar $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/symbol/iterator.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/symbol/observable.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/symbol/observable.js ***!
+  \***************************************************************/
+/*! exports provided: observable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"observable\", function() { return observable; });\n/** Symbol.observable or a string \"@@observable\". Used for interop */\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar observable = typeof Symbol === 'function' && Symbol.observable || '@@observable';\n//# sourceMappingURL=observable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/symbol/observable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js ***!
+  \*****************************************************************/
+/*! exports provided: rxSubscriber, $$rxSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rxSubscriber\", function() { return rxSubscriber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"$$rxSubscriber\", function() { return $$rxSubscriber; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function')\n    ? /*@__PURE__*/ Symbol.for('rxSubscriber')\n    : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nvar $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js ***!
+  \**************************************************************************/
+/*! exports provided: ArgumentOutOfRangeError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ArgumentOutOfRangeError\", function() { return ArgumentOutOfRangeError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/** PURE_IMPORTS_START tslib PURE_IMPORTS_END */\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nvar ArgumentOutOfRangeError = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ArgumentOutOfRangeError, _super);\n    function ArgumentOutOfRangeError() {\n        var _this = _super.call(this, 'argument out of range') || this;\n        _this.name = 'ArgumentOutOfRangeError';\n        Object.setPrototypeOf(_this, ArgumentOutOfRangeError.prototype);\n        return _this;\n    }\n    return ArgumentOutOfRangeError;\n}(Error));\n\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/EmptyError.js ***!
+  \*************************************************************/
+/*! exports provided: EmptyError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EmptyError\", function() { return EmptyError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/** PURE_IMPORTS_START tslib PURE_IMPORTS_END */\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nvar EmptyError = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](EmptyError, _super);\n    function EmptyError() {\n        var _this = _super.call(this, 'no elements in sequence') || this;\n        _this.name = 'EmptyError';\n        Object.setPrototypeOf(_this, EmptyError.prototype);\n        return _this;\n    }\n    return EmptyError;\n}(Error));\n\n//# sourceMappingURL=EmptyError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/EmptyError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/Immediate.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/Immediate.js ***!
+  \************************************************************/
+/*! exports provided: Immediate */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Immediate\", function() { return Immediate; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar tasksByHandle = {};\nfunction runIfPresent(handle) {\n    var cb = tasksByHandle[handle];\n    if (cb) {\n        cb();\n    }\n}\nvar Immediate = {\n    setImmediate: function (cb) {\n        var handle = nextHandle++;\n        tasksByHandle[handle] = cb;\n        Promise.resolve().then(function () { return runIfPresent(handle); });\n        return handle;\n    },\n    clearImmediate: function (handle) {\n        delete tasksByHandle[handle];\n    },\n};\n//# sourceMappingURL=Immediate.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/Immediate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js":
+/*!**************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js ***!
+  \**************************************************************************/
+/*! exports provided: ObjectUnsubscribedError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ObjectUnsubscribedError\", function() { return ObjectUnsubscribedError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/** PURE_IMPORTS_START tslib PURE_IMPORTS_END */\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nvar ObjectUnsubscribedError = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](ObjectUnsubscribedError, _super);\n    function ObjectUnsubscribedError() {\n        var _this = _super.call(this, 'object unsubscribed') || this;\n        _this.name = 'ObjectUnsubscribedError';\n        Object.setPrototypeOf(_this, ObjectUnsubscribedError.prototype);\n        return _this;\n    }\n    return ObjectUnsubscribedError;\n}(Error));\n\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/TimeoutError.js ***!
+  \***************************************************************/
+/*! exports provided: TimeoutError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimeoutError\", function() { return TimeoutError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/** PURE_IMPORTS_START tslib PURE_IMPORTS_END */\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link timeout}\n *\n * @class TimeoutError\n */\nvar TimeoutError = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](TimeoutError, _super);\n    function TimeoutError() {\n        var _this = _super.call(this, 'Timeout has occurred') || this;\n        Object.setPrototypeOf(_this, TimeoutError.prototype);\n        return _this;\n    }\n    return TimeoutError;\n}(Error));\n\n//# sourceMappingURL=TimeoutError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/TimeoutError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js ***!
+  \**********************************************************************/
+/*! exports provided: UnsubscriptionError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnsubscriptionError\", function() { return UnsubscriptionError; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/** PURE_IMPORTS_START tslib PURE_IMPORTS_END */\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = /*@__PURE__*/ (function (_super) {\n    tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"](UnsubscriptionError, _super);\n    function UnsubscriptionError(errors) {\n        var _this = _super.call(this, errors ?\n            errors.length + \" errors occurred during unsubscription:\\n  \" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ') : '') || this;\n        _this.errors = errors;\n        _this.name = 'UnsubscriptionError';\n        Object.setPrototypeOf(_this, UnsubscriptionError.prototype);\n        return _this;\n    }\n    return UnsubscriptionError;\n}(Error));\n\n//# sourceMappingURL=UnsubscriptionError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/errorObject.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/errorObject.js ***!
+  \**************************************************************/
+/*! exports provided: errorObject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"errorObject\", function() { return errorObject; });\n// typeof any so that it we don't have to cast when comparing a result to the error object\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/errorObject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js":
+/*!******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/hostReportError.js ***!
+  \******************************************************************/
+/*! exports provided: hostReportError */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hostReportError\", function() { return hostReportError; });\n/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction hostReportError(err) {\n    setTimeout(function () { throw err; });\n}\n//# sourceMappingURL=hostReportError.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/hostReportError.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/identity.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/identity.js ***!
+  \***********************************************************/
+/*! exports provided: identity */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/identity.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isArray.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isArray.js ***!
+  \**********************************************************/
+/*! exports provided: isArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isArrayLike.js ***!
+  \**************************************************************/
+/*! exports provided: isArrayLike */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayLike\", function() { return isArrayLike; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isArrayLike.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isFunction.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isFunction.js ***!
+  \*************************************************************/
+/*! exports provided: isFunction */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction isFunction(x) {\n    return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isFunction.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js ***!
+  \**********************************************************************/
+/*! exports provided: isInteropObservable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInteropObservable\", function() { return isInteropObservable; });\n/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nfunction isInteropObservable(input) {\n    return input && typeof input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__[\"observable\"]] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isIterable.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isIterable.js ***!
+  \*************************************************************/
+/*! exports provided: isIterable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIterable\", function() { return isIterable; });\n/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ \"./node_modules/rxjs/_esm5/internal/symbol/iterator.js\");\n/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\n\n/** Identifies an input as being an Iterable */\nfunction isIterable(input) {\n    return input && typeof input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__[\"iterator\"]] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isIterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isNumeric.js ***!
+  \************************************************************/
+/*! exports provided: isNumeric */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumeric\", function() { return isNumeric; });\n/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray */ \"./node_modules/rxjs/_esm5/internal/util/isArray.js\");\n/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\n\nfunction isNumeric(val) {\n    // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n    // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n    // subtraction forces infinities to NaN\n    // adding 1 corrects loss of precision from parseFloat (#15100)\n    return !Object(_isArray__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isObject.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isObject.js ***!
+  \***********************************************************/
+/*! exports provided: isObject */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction isObject(x) {\n    return x != null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isObject.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isObservable.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isObservable.js ***!
+  \***************************************************************/
+/*! exports provided: isObservable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObservable\", function() { return isObservable; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nfunction isObservable(obj) {\n    return obj && obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"] || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function');\n}\n//# sourceMappingURL=isObservable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isPromise.js":
+/*!************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isPromise.js ***!
+  \************************************************************/
+/*! exports provided: isPromise */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction isPromise(value) {\n    return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isPromise.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/isScheduler.js ***!
+  \**************************************************************/
+/*! exports provided: isScheduler */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScheduler\", function() { return isScheduler; });\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction isScheduler(value) {\n    return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/isScheduler.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/noop.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/noop.js ***!
+  \*******************************************************/
+/*! exports provided: noop */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return noop; });\n/* tslint:disable:no-empty */\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nfunction noop() { }\n//# sourceMappingURL=noop.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/noop.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/pipe.js":
+/*!*******************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/pipe.js ***!
+  \*******************************************************/
+/*! exports provided: pipe, pipeFromArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pipe\", function() { return pipe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pipeFromArray\", function() { return pipeFromArray; });\n/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./noop */ \"./node_modules/rxjs/_esm5/internal/util/noop.js\");\n/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\n\n/* tslint:enable:max-line-length */\nfunction pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\n/* @internal */\nfunction pipeFromArray(fns) {\n    if (!fns) {\n        return _noop__WEBPACK_IMPORTED_MODULE_0__[\"noop\"];\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/pipe.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js":
+/*!**************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeTo.js ***!
+  \**************************************************************/
+/*! exports provided: subscribeTo */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeTo\", function() { return subscribeTo; });\n/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ \"./node_modules/rxjs/_esm5/internal/Observable.js\");\n/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeToArray */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js\");\n/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribeToPromise */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js\");\n/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./subscribeToIterable */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js\");\n/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./subscribeToObservable */ \"./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js\");\n/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/rxjs/_esm5/internal/util/isArrayLike.js\");\n/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isPromise */ \"./node_modules/rxjs/_esm5/internal/util/isPromise.js\");\n/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./isObject */ \"./node_modules/rxjs/_esm5/internal/util/isObject.js\");\n/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../symbol/iterator */ \"./node_modules/rxjs/_esm5/internal/symbol/iterator.js\");\n/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/** PURE_IMPORTS_START _Observable,_subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\n\n\n\n\n\n\n\n\n\n\nvar subscribeTo = function (result) {\n    if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[\"Observable\"]) {\n        return function (subscriber) {\n            if (result._isScalar) {\n                subscriber.next(result.value);\n                subscriber.complete();\n                return undefined;\n            }\n            else {\n                return result.subscribe(subscriber);\n            }\n        };\n    }\n    else if (Object(_isArrayLike__WEBPACK_IMPORTED_MODULE_5__[\"isArrayLike\"])(result)) {\n        return Object(_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__[\"subscribeToArray\"])(result);\n    }\n    else if (Object(_isPromise__WEBPACK_IMPORTED_MODULE_6__[\"isPromise\"])(result)) {\n        return Object(_subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__[\"subscribeToPromise\"])(result);\n    }\n    else if (result && typeof result[_symbol_iterator__WEBPACK_IMPORTED_MODULE_8__[\"iterator\"]] === 'function') {\n        return Object(_subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__[\"subscribeToIterable\"])(result);\n    }\n    else if (result && typeof result[_symbol_observable__WEBPACK_IMPORTED_MODULE_9__[\"observable\"]] === 'function') {\n        return Object(_subscribeToObservable__WEBPACK_IMPORTED_MODULE_4__[\"subscribeToObservable\"])(result);\n    }\n    else {\n        var value = Object(_isObject__WEBPACK_IMPORTED_MODULE_7__[\"isObject\"])(result) ? 'an invalid object' : \"'\" + result + \"'\";\n        var msg = \"You provided \" + value + \" where a stream was expected.\"\n            + ' You can provide an Observable, Promise, Array, or Iterable.';\n        throw new TypeError(msg);\n    }\n};\n//# sourceMappingURL=subscribeTo.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeTo.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js ***!
+  \*******************************************************************/
+/*! exports provided: subscribeToArray */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeToArray\", function() { return subscribeToArray; });\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\n/** PURE_IMPORTS_START  PURE_IMPORTS_END */\nvar subscribeToArray = function (array) {\n    return function (subscriber) {\n        for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n            subscriber.next(array[i]);\n        }\n        if (!subscriber.closed) {\n            subscriber.complete();\n        }\n    };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js ***!
+  \**********************************************************************/
+/*! exports provided: subscribeToIterable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeToIterable\", function() { return subscribeToIterable; });\n/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ \"./node_modules/rxjs/_esm5/internal/symbol/iterator.js\");\n/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\n\nvar subscribeToIterable = function (iterable) {\n    return function (subscriber) {\n        var iterator = iterable[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__[\"iterator\"]]();\n        do {\n            var item = iterator.next();\n            if (item.done) {\n                subscriber.complete();\n                break;\n            }\n            subscriber.next(item.value);\n            if (subscriber.closed) {\n                break;\n            }\n        } while (true);\n        // Finalize the iterator if it happens to be a Generator\n        if (typeof iterator.return === 'function') {\n            subscriber.add(function () {\n                if (iterator.return) {\n                    iterator.return();\n                }\n            });\n        }\n        return subscriber;\n    };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js ***!
+  \************************************************************************/
+/*! exports provided: subscribeToObservable */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeToObservable\", function() { return subscribeToObservable; });\n/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ \"./node_modules/rxjs/_esm5/internal/symbol/observable.js\");\n/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nvar subscribeToObservable = function (obj) {\n    return function (subscriber) {\n        var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__[\"observable\"]]();\n        if (typeof obs.subscribe !== 'function') {\n            // Should be caught by observable subscribe function error handling.\n            throw new TypeError('Provided object does not correctly implement Symbol.observable');\n        }\n        else {\n            return obs.subscribe(subscriber);\n        }\n    };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js ***!
+  \*********************************************************************/
+/*! exports provided: subscribeToPromise */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeToPromise\", function() { return subscribeToPromise; });\n/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hostReportError */ \"./node_modules/rxjs/_esm5/internal/util/hostReportError.js\");\n/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\n\nvar subscribeToPromise = function (promise) {\n    return function (subscriber) {\n        promise.then(function (value) {\n            if (!subscriber.closed) {\n                subscriber.next(value);\n                subscriber.complete();\n            }\n        }, function (err) { return subscriber.error(err); })\n            .then(null, _hostReportError__WEBPACK_IMPORTED_MODULE_0__[\"hostReportError\"]);\n        return subscriber;\n    };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js ***!
+  \********************************************************************/
+/*! exports provided: subscribeToResult */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribeToResult\", function() { return subscribeToResult; });\n/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../InnerSubscriber */ \"./node_modules/rxjs/_esm5/internal/InnerSubscriber.js\");\n/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeTo */ \"./node_modules/rxjs/_esm5/internal/util/subscribeTo.js\");\n/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */\n\n\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n    var destination = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__[\"InnerSubscriber\"](outerSubscriber, outerValue, outerIndex);\n    return Object(_subscribeTo__WEBPACK_IMPORTED_MODULE_1__[\"subscribeTo\"])(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/toSubscriber.js":
+/*!***************************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/toSubscriber.js ***!
+  \***************************************************************/
+/*! exports provided: toSubscriber */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toSubscriber\", function() { return toSubscriber; });\n/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ \"./node_modules/rxjs/_esm5/internal/Subscriber.js\");\n/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/rxSubscriber */ \"./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js\");\n/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observer */ \"./node_modules/rxjs/_esm5/internal/Observer.js\");\n/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\n\n\n\nfunction toSubscriber(nextOrObserver, error, complete) {\n    if (nextOrObserver) {\n        if (nextOrObserver instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__[\"Subscriber\"]) {\n            return nextOrObserver;\n        }\n        if (nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__[\"rxSubscriber\"]]) {\n            return nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__[\"rxSubscriber\"]]();\n        }\n    }\n    if (!nextOrObserver && !error && !complete) {\n        return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[\"Subscriber\"](_Observer__WEBPACK_IMPORTED_MODULE_2__[\"empty\"]);\n    }\n    return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[\"Subscriber\"](nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/toSubscriber.js?");
+
+/***/ }),
+
+/***/ "./node_modules/rxjs/_esm5/internal/util/tryCatch.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/rxjs/_esm5/internal/util/tryCatch.js ***!
+  \***********************************************************/
+/*! exports provided: tryCatch */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tryCatch\", function() { return tryCatch; });\n/* harmony import */ var _errorObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./errorObject */ \"./node_modules/rxjs/_esm5/internal/util/errorObject.js\");\n/** PURE_IMPORTS_START _errorObject PURE_IMPORTS_END */\n\nvar tryCatchTarget;\nfunction tryCatcher() {\n    try {\n        return tryCatchTarget.apply(this, arguments);\n    }\n    catch (e) {\n        _errorObject__WEBPACK_IMPORTED_MODULE_0__[\"errorObject\"].e = e;\n        return _errorObject__WEBPACK_IMPORTED_MODULE_0__[\"errorObject\"];\n    }\n}\nfunction tryCatch(fn) {\n    tryCatchTarget = fn;\n    return tryCatcher;\n}\n//# sourceMappingURL=tryCatch.js.map\n\n\n//# sourceURL=webpack:///./node_modules/rxjs/_esm5/internal/util/tryCatch.js?");
+
+/***/ }),
+
+/***/ "./node_modules/setimmediate/setImmediate.js":
+/*!***************************************************!*\
+  !*** ./node_modules/setimmediate/setImmediate.js ***!
+  \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\"), __webpack_require__(/*! ./../node-libs-browser/node_modules/process/browser.js */ \"./node_modules/node-libs-browser/node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/setimmediate/setImmediate.js?");
+
+/***/ }),
+
+/***/ "./node_modules/timers-browserify/main.js":
+/*!************************************************!*\
+  !*** ./node_modules/timers-browserify/main.js ***!
+  \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(/*! setimmediate */ \"./node_modules/setimmediate/setImmediate.js\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/timers-browserify/main.js?");
+
+/***/ }),
+
+/***/ "./node_modules/tslib/tslib.es6.js":
+/*!*****************************************!*\
+  !*** ./node_modules/tslib/tslib.es6.js ***!
+  \*****************************************/
+/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__extends\", function() { return __extends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__rest\", function() { return __rest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__decorate\", function() { return __decorate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__param\", function() { return __param; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__metadata\", function() { return __metadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__awaiter\", function() { return __awaiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__generator\", function() { return __generator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__exportStar\", function() { return __exportStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__values\", function() { return __values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__read\", function() { return __read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spread\", function() { return __spread; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__await\", function() { return __await; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function() { return __asyncGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function() { return __asyncDelegator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function() { return __asyncValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function() { return __makeTemplateObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importStar\", function() { return __importStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importDefault\", function() { return __importDefault; });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n    ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n    function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n    }\r\n    return t;\r\n}\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nfunction __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator];\r\n    return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\n\n//# sourceURL=webpack:///./node_modules/tslib/tslib.es6.js?");
+
+/***/ }),
+
+/***/ "./node_modules/warning/browser.js":
+/*!*****************************************!*\
+  !*** ./node_modules/warning/browser.js ***!
+  \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (true) {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n\n\n//# sourceURL=webpack:///./node_modules/warning/browser.js?");
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+  !*** (webpack)/buildin/global.js ***!
+  \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?");
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/harmony-module.js":
+/*!*******************************************!*\
+  !*** (webpack)/buildin/harmony-module.js ***!
+  \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = function(originalModule) {\r\n\tif (!originalModule.webpackPolyfill) {\r\n\t\tvar module = Object.create(originalModule);\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n//# sourceURL=webpack:///(webpack)/buildin/harmony-module.js?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file