You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by sa...@apache.org on 2020/09/23 08:03:23 UTC

[incubator-mxnet] branch v1.8.x updated: [WEBSITE] v1.8 website patch (#19212)

This is an automated email from the ASF dual-hosted git repository.

samskalicky pushed a commit to branch v1.8.x
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git


The following commit(s) were added to refs/heads/v1.8.x by this push:
     new 975aa6e  [WEBSITE] v1.8 website patch (#19212)
975aa6e is described below

commit 975aa6e0d5558cb7983383b4a3e67ca8dcb8d4c1
Author: Yang Shi <ya...@amazon.com>
AuthorDate: Wed Sep 23 00:58:50 2020 -0700

    [WEBSITE] v1.8 website patch (#19212)
    
    * Add missing license header for md files (#18541) (#19189)
    
    Co-authored-by: ciyong <ci...@intel.com>
    
    * Fixed Install page history broken (#18182)
    
    * fix install option block history broke
    
    * when history goes back, avoid button default css blue outline
    
    * use appropriate parameter name
    
    * format scss change
    
    * Update website version select drop down (#18188)
    
    * update version select drop down
    
    * align caret
    
    * revert scrollable content, add delayed hover effect
    
    * bugfix
    
    * fix new design doesn't work on mobile
    # Conflicts:
    #	docs/static_site/src/_includes/get_started/get_started.html
    
    * Update website version select drop down (#18188)
    
    * update version select drop down
    
    * align caret
    
    * revert scrollable content, add delayed hover effect
    
    * bugfix
    
    * fix new design doesn't work on mobile
    # Conflicts:
    #	docs/static_site/src/_includes/get_started/get_started.html
    
    * Fix gluon link missing (#18243)
    
    * fix gluon link missing
    
    * empty commit to trigger checks
    
    * empty commit to trigger checks
    
    * fix when clicking version dropdown it jumps to top of the page (#18238)
    
    * Website global search feature (#18288)
    
    * init global search ui
    
    * add hover effect to icon and refactor js
    
    * add search bar ui styles
    
    * fix search UI's effect on navbar height
    
    * add fade in/out effect to search ui and navbar
    
    * update search trigger to click and add x button for close
    
    * add version select for search
    
    * fix version typo
    
    * update dropdown
    
    * fix hitsperpage reset after change version
    
    * fix nav trigger not show
    
    * update search border css class name
    
    * make dropdown style consistent
    
    * global search mobile&tablet UI
    
    * adjust mobile search result width
    
    * extract global search related styles to a seperate scss
    
    * restore formatting to existing code
    
    * format & coding style
    
    * fix caret height bug
    
    * add mobile compatible UI
    
    * add license header to js files and update dropdown width
    
    * put docsearch css before main to overrides
    
    * update search result panel height
    
    * dynamically generate version dropdown
    
    * use more accurate selector over search result
    
    * use vh for height
    
    * add comments  to scss
    
    * move versions to Jekyll global variable
    
    * remove redundant version key
    
    * make global search default version the same as website version
    
    Co-authored-by: Yang Shi <ya...@amazon.com>
    
    * replace google CDN with JQuery's own CDN (#18369)
    
    Co-authored-by: Yang Shi <ya...@amazon.com>
    
    * Add Developer Guide Docs to MXNet Website (#18474)
    
    * init dev guide
    
    * move dev guide above FAQ
    
    * update format and images
    
    * hoist git docs and fix styles
    
    * use relative urls
    
    * remove useless code block
    
    * use consistent url and file name
    
    * update heading
    
    * add apache license header
    
    * init dev guide
    
    * move dev guide above FAQ
    
    * update format and images
    
    * hoist git docs and fix styles
    
    * use relative urls
    
    * remove useless code block
    
    * use consistent url and file name
    
    * update heading
    
    * add apache license header
    
    * update doc - git clone recursive
    
    * reviewing the dev guide - proof reading and text edits
    
    Co-authored-by: Yang Shi <ya...@amazon.com>
    Co-authored-by: Talia Chopra <ch...@amazon.com>
    
    * fix contribute page anchor position shifted (#18571)
    
    Co-authored-by: Yang Shi <ya...@amazon.com>
    
    * Clipboard refactor (#18605)
    
    * refactor clipboard
    
    * make lang getter more extensible
    
    * trigger ci
    
    * User Feedback Widget (#18639)
    
    * user feedback widget implementation
    
    * add user feedback widget to python docs site
    
    * update margin
    
    * add apache license
    
    * one more license
    
    * turn off feedback widget on python site
    
    * update copy
    
    * format
    
    * add event value field
    
    * turn on widget on Python site
    # Conflicts:
    #	docs/static_site/src/_includes/head.html
    #	docs/static_site/src/assets/main.scss
    
    * Fix python micro-site table of content bugs (#18664)
    
    * update footer style
    
    * add compiled css of footer styles changes
    
    * add same style for footer2
    
    * more fix to the toc
    
    * Fix all anchor shifts on website (#18674)
    
    * use regex that is supported by all browsers (#18811)
    
    * 1.7 compatible fix
    
    * add jquery fix
    
    * Consolidate installation instructions on website and add disclaimer for non-ASF ressources (#18487)
    
    * Update website with disclaimer for non-ASF ressources
    
    * Integrate Windows instructions to build_from_source.md
    
    * Remove master version from selector
    
    * Update Download links
    
    * Update get_started/download.md per Release Download Page policy
    # Conflicts:
    #	contrib/clojure-package/README.md
    #	docs/python_docs/python/tutorials/deploy/inference/image_classification_jetson.md
    #	docs/static_site/src/_includes/get_started/get_started.html
    #	docs/static_site/src/_includes/get_started/linux/clojure/gpu.md
    #	docs/static_site/src/_includes/get_started/linux/java/gpu.md
    #	docs/static_site/src/_includes/get_started/linux/julia/build-from-source.md
    #	docs/static_site/src/_includes/get_started/linux/perl/perl.md
    #	docs/static_site/src/_includes/get_started/linux/python/cpu/build-from-source.md
    #	docs/static_site/src/_includes/get_started/linux/python/cpu/docker.md
    #	docs/static_site/src/_includes/get_started/linux/python/cpu/pip.md
    #	docs/static_site/src/_includes/get_started/linux/python/gpu/build-from-source.md
    #	docs/static_site/src/_includes/get_started/linux/python/gpu/docker.md
    #	docs/static_site/src/_includes/get_started/linux/python/gpu/pip.md
    #	docs/static_site/src/_includes/get_started/linux/r/gpu.md
    #	docs/static_site/src/_includes/get_started/linux/scala/cpu.md
    #	docs/static_site/src/_includes/get_started/linux/scala/gpu.md
    #	docs/static_site/src/_includes/get_started/macos
    #	docs/static_site/src/_includes/get_started/macos/clojure/cpu.md
    #	docs/static_site/src/_includes/get_started/macos/julia/build-from-source.md
    #	docs/static_site/src/_includes/get_started/macos/perl/perl.md
    #	docs/static_site/src/_includes/get_started/macos/python/cpu/build-from-source.md
    #	docs/static_site/src/_includes/get_started/macos/python/cpu/docker.md
    #	docs/static_site/src/_includes/get_started/macos/python/cpu/pip.md
    #	docs/static_site/src/_includes/get_started/macos/python/gpu/build-from-source.md
    #	docs/static_site/src/_includes/get_started/macos/python/gpu/pip_docker.md
    #	docs/static_site/src/_includes/get_started/macos/r/cpu.md
    #	docs/static_site/src/_includes/get_started/macos/scala/cpu.md
    #	docs/static_site/src/_includes/get_started/windows
    #	docs/static_site/src/_includes/get_started/windows/perl/perl.md
    #	docs/static_site/src/_includes/get_started/windows/python/cpu/build-from-source.md
    #	docs/static_site/src/_includes/get_started/windows/python/cpu/docker.md
    #	docs/static_site/src/_includes/get_started/windows/python/cpu/pip.md
    #	docs/static_site/src/_includes/get_started/windows/python/gpu/pip.md
    #	docs/static_site/src/_includes/get_started/windows/r/cpu.md
    #	docs/static_site/src/_includes/get_started/windows/r/gpu.md
    #	docs/static_site/src/pages/get_started/build_from_source.md
    #	docs/static_site/src/pages/get_started/download.md
    #	docs/static_site/src/pages/get_started/osx_setup.md
    #	docs/static_site/src/pages/get_started/ubuntu_setup.md
    #	docs/static_site/src/pages/get_started/windows_setup.md
    
    * fix broken installation widget - remove empty entries (#18661)
    
    * update static files
    
    # Conflicts:
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map
    
    * update header dropdown default version
    
    * fix failed pipeline
    
    * cherry pick 1.7 content from master
    
    * update version number in image classification tutorial
    
    * minor version fix
    
    * fix bullet point format bug
    
    * Fixed python website double scroller and improve UX (#18845)
    
    * make python site header scroll aware and avoid double scroller
    
    * add compiled assets
    
    * adjust python site second header height
    
    * add new line
    
    * set focus to main content on DOM load
    # Conflicts:
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js
    #	docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map
    #	docs/python_docs/themes/mx-theme/src/scss/_root.scss
    
    * add jekyll base url to enable relative path
    
    * fix python micro site header link path
    
    * update python site css
    
    Co-authored-by: Sheng Zha <sz...@users.noreply.github.com>
    Co-authored-by: ciyong <ci...@intel.com>
    Co-authored-by: Yang Shi <ys...@nyu.edu>
    Co-authored-by: Talia Chopra <ch...@amazon.com>
    Co-authored-by: Leonard Lausen <la...@amazon.com>
---
 NEWS.md                                            | 1596 +++++++++++++++++---
 R-package/README.md                                |   17 +
 ci/docker/Dockerfile.build.ubuntu_cpu_jekyll       |    1 +
 docs/python_docs/_static/feedback.css              |   37 +
 docs/python_docs/_static/feedback.js               |   33 +
 docs/python_docs/_static/mxnet.css                 |    8 +-
 docs/python_docs/python/api/gluon/index.rst        |    2 +-
 .../inference/image_classification_jetson.md       |  117 ++
 .../themes/mx-theme/mxtheme/feedback.html          |   10 +
 .../themes/mx-theme/mxtheme/header_top.html        |   18 +
 .../themes/mx-theme/mxtheme/layout.html            |   53 +-
 .../mxtheme/static/sphinx_materialdesign_theme.css |    2 +-
 .../static/sphinx_materialdesign_theme.css.map     |    2 +-
 .../mxtheme/static/sphinx_materialdesign_theme.js  |  450 +++---
 .../static/sphinx_materialdesign_theme.js.map      |    2 +-
 .../python_docs/themes/mx-theme/mxtheme/theme.conf |    2 +-
 .../themes/mx-theme/src/js/scrollspy.js            |   25 +-
 .../mx-theme/src/js/sphinx_materialdesign_theme.js |   18 +
 .../themes/mx-theme/src/scss/_root.scss            |   22 +
 .../themes/mx-theme/src/scss/footer/_footer.scss   |    4 +
 .../themes/mx-theme/src/scss/layout/_layout.scss   |    7 +-
 docs/static_site/Makefile                          |    1 +
 docs/static_site/src/_config.yml                   |   13 +
 docs/static_site/src/_config_beta.yml              |   15 +-
 docs/static_site/src/_config_prod.yml              |   15 +-
 docs/static_site/src/_includes/feedback.html       |   10 +
 .../src/_includes/get_started/cloud/cpu.md         |   16 +-
 .../src/_includes/get_started/cloud/gpu.md         |   17 +-
 .../src/_includes/get_started/get_started.html     |  259 +---
 .../linux/clojure/{cpu.md => build-from-source.md} |    0
 .../src/_includes/get_started/linux/clojure/gpu.md |   15 -
 .../get_started/linux/cpp/build-from-source.md     |    2 +
 .../src/_includes/get_started/linux/cpp/cpp.md     |    4 -
 .../get_started/linux/java/build-from-source.md    |    6 +
 .../src/_includes/get_started/linux/java/gpu.md    |   17 -
 .../get_started/linux/julia/build-from-source.md   |    3 +-
 .../src/_includes/get_started/linux/julia/pkg.md   |   10 -
 .../get_started/linux/perl/build-from-source.md    |    1 +
 .../src/_includes/get_started/linux/perl/perl.md   |    1 -
 .../linux/python/cpu/build-from-source.md          |    2 +-
 .../get_started/linux/python/cpu/docker.md         |   42 +-
 .../_includes/get_started/linux/python/cpu/pip.md  |  123 +-
 .../linux/python/gpu/build-from-source.md          |    2 +-
 .../get_started/linux/python/gpu/docker.md         |   45 +-
 .../_includes/get_started/linux/python/gpu/pip.md  |   40 +-
 .../get_started/linux/r/build-from-source.md       |    2 +
 .../src/_includes/get_started/linux/r/cpu.md       |   10 -
 .../src/_includes/get_started/linux/r/gpu.md       |   17 -
 .../{java/cpu.md => scala/build-from-source.md}    |    0
 .../src/_includes/get_started/linux/scala/cpu.md   |   14 -
 .../src/_includes/get_started/linux/scala/gpu.md   |   16 -
 docs/static_site/src/_includes/get_started/macos   |    1 +
 .../src/_includes/get_started/macos/clojure/cpu.md |   17 -
 .../src/_includes/get_started/macos/clojure/gpu.md |    1 -
 .../src/_includes/get_started/macos/cpp/cpp.md     |    3 -
 .../src/_includes/get_started/macos/java/cpu.md    |   16 -
 .../src/_includes/get_started/macos/java/gpu.md    |    1 -
 .../get_started/macos/julia/build-from-source.md   |    1 -
 .../src/_includes/get_started/macos/julia/pkg.md   |   10 -
 .../src/_includes/get_started/macos/perl/perl.md   |    1 -
 .../macos/python/cpu/build-from-source.md          |    2 -
 .../get_started/macos/python/cpu/docker.md         |   35 -
 .../_includes/get_started/macos/python/cpu/pip.md  |   73 -
 .../macos/python/gpu/build-from-source.md          |    2 -
 .../get_started/macos/python/gpu/pip_docker.md     |    1 -
 .../src/_includes/get_started/macos/r/cpu.md       |   28 -
 .../src/_includes/get_started/macos/r/gpu.md       |    1 -
 .../src/_includes/get_started/macos/scala/cpu.md   |   14 -
 .../src/_includes/get_started/macos/scala/gpu.md   |    1 -
 .../src/_includes/get_started/pip_snippet.md       |    9 +-
 docs/static_site/src/_includes/get_started/windows |    1 +
 .../get_started/windows/clojure/clojure.md         |    1 -
 .../src/_includes/get_started/windows/cpp/cpp.md   |    3 -
 .../src/_includes/get_started/windows/java/java.md |    1 -
 .../get_started/windows/julia/build-from-source.md |    1 -
 .../src/_includes/get_started/windows/julia/pkg.md |   10 -
 .../src/_includes/get_started/windows/perl/perl.md |    1 -
 .../windows/python/cpu/build-from-source.md        |    1 -
 .../get_started/windows/python/cpu/docker.md       |   34 -
 .../get_started/windows/python/cpu/pip.md          |   73 -
 .../windows/python/gpu/build-from-source.md        |    1 -
 .../get_started/windows/python/gpu/pip.md          |   74 -
 .../src/_includes/get_started/windows/r/cpu.md     |   15 -
 .../src/_includes/get_started/windows/r/gpu.md     |   16 -
 .../_includes/get_started/windows/scala/scala.md   |    1 -
 docs/static_site/src/_includes/head.html           |   18 +-
 docs/static_site/src/_includes/header.html         |   63 +-
 docs/static_site/src/_layouts/page_api.html        |    3 +
 docs/static_site/src/_sass/feedback.scss           |   39 +
 .../src/_sass/generalVersionDropdown.scss          |   41 +
 docs/static_site/src/_sass/globalSearch.scss       |  217 +++
 docs/static_site/src/_sass/minima/_docs.scss       |   12 +-
 .../src/_sass/minima/_getting_started.scss         |   37 +-
 docs/static_site/src/_sass/minima/_layout.scss     |   29 +-
 .../src/assets/img/dev_guide_profilling_1.png      |  Bin 0 -> 267358 bytes
 .../src/assets/img/dev_guide_profilling_2.png      |  Bin 0 -> 166792 bytes
 .../src/assets/img/dev_guide_profilling_3.png      |  Bin 0 -> 110434 bytes
 .../src/assets/img/dev_guide_profilling_4.png      |  Bin 0 -> 96117 bytes
 .../src/assets/img/dev_guide_profilling_5.png      |  Bin 0 -> 113453 bytes
 .../src/assets/img/dev_guide_profilling_6.png      |  Bin 0 -> 120953 bytes
 .../src/assets/img/dev_guide_profilling_7.png      |  Bin 0 -> 142486 bytes
 docs/static_site/src/assets/img/search-icon.svg    |    3 +
 docs/static_site/src/assets/js/clipboard.js        |  819 +---------
 docs/static_site/src/assets/js/copycode.js         |  125 +-
 docs/static_site/src/assets/js/feedback.js         |   33 +
 docs/static_site/src/assets/js/globalSearch.js     |  118 ++
 docs/static_site/src/assets/js/options.js          |   31 +-
 docs/static_site/src/assets/main.scss              |    3 +
 docs/static_site/src/pages/api/api.html            |   12 +
 ...github_contribution_and_PR_verification_tips.md |  193 +++
 .../debugging_and_performance_optimization_tips.md |   59 +
 .../examine_forward_results_with_hooks.md          |  163 ++
 .../exception_handing_and_custom_error_types.md    |  110 ++
 .../src/pages/api/developer_guide/profiling.md     |  279 ++++
 docs/static_site/src/pages/api/faq/security.md     |    1 +
 .../src/pages/get_started/build_from_source.md     |  474 +++---
 .../src/pages/get_started/c_plus_plus.md           |   55 -
 .../src/pages/get_started/centos_setup.md          |  115 --
 docs/static_site/src/pages/get_started/download.md |   22 +-
 docs/static_site/src/pages/get_started/index.html  |   14 +-
 .../src/pages/get_started/validate_mxnet.md        |   69 -
 121 files changed, 4106 insertions(+), 2645 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index b49c119..0ba22152 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -18,87 +18,161 @@
 MXNet Change Log
 ================
 - [MXNet Change Log](#mxnet-change-log)
-  * [1.5.1](#151)
-  * [1.5.0](#150)
-    + [New Features](#new-features)
-      - [Automatic Mixed Precision(experimental)](#automatic-mixed-precision-experimental-)
+  - [1.7.0](#170)
+    - [New features](#new-features)
+      - [MXNet Extensions: custom operators, partitioning, and graph passes](#mxnet-extensions-custom-operators-partitioning-and-graph-passes)
+      - [OpPerf utility enabled in the binary distribution](#opperf-utility-enabled-in-the-binary-distribution)
+      - [MKL-DNN](#mkl-dnn)
+        - [MKL-DNN as the default CPU backend in binary distribution](#mkl-dnn-as-the-default-cpu-backend-in-binary-distribution)
+        - [Branding change to DNNL](#branding-change-to-dnnl)
+        - [Support bfloat16 datatype](#support-bfloat16-datatype)
+      - [New operators](#new-operators)
+    - [Feature improvements](#feature-improvements)
+      - [Numpy compatible interface(experimental)](#numpy-compatible-interfaceexperimental)
+      - [Large tensor support](#large-tensor-support)
+      - [MKL-DNN enhancement](#mkl-dnn-enhancement)
+      - [TensorRT integration](#tensorrt-integration)
+      - [Quantization](#quantization)
+      - [Profiler](#profiler)
+      - [ONNX](#onnx)
+      - [New models](#new-models)
+      - [Operator improvements](#operator-improvements)
+      - [Bug fixes](#bug-fixes)
+    - [Front end API](#front-end-api)
+      - [Gluon](#gluon)
+      - [Symbol](#symbol)
+    - [Language Bindings](#language-bindings)
+      - [Python](#python)
+      - [C/C++](#cc)
+      - [R](#r)
+      - [Clojure](#clojure)
+      - [Julia](#julia)
+      - [Perl](#perl)
+      - [Scala](#scala)
+    - [Performance improvements](#performance-improvements)
+    - [Example and tutorials](#example-and-tutorials)
+    - [Website and documentation](#website-and-documentation)
+    - [CI/CD](#cicd)
+    - [License](#license)
+    - [Miscellaneous changes](#miscellaneous-changes)
+  - [1.6.0](#160)
+    - [Deprecation of Python 2](#deprecation-of-python-2)
+    - [New features](#new-features-1)
+      - [NumPy compatible interface and using TVM to generate operators](#numpy-compatible-interface-and-using-tvm-to-generate-operators)
+      - [Graph optimizations](#graph-optimizations)
+        - [Pointwise fusion for GPU](#pointwise-fusion-for-gpu)
+        - [Eliminate common subexpressions](#eliminate-common-subexpressions)
+        - [Default MKLDNN Subgraph fusion](#default-mkldnn-subgraph-fusion)
+      - [New operators](#new-operators-1)
+    - [Feature improvements](#feature-improvements-1)
+      - [Automatic Mixed Precision](#automatic-mixed-precision)
+      - [Gluon Fit API](#gluon-fit-api)
+      - [MKLDNN](#mkldnn)
+      - [Large tensor support](#large-tensor-support-1)
+      - [TensorRT integration](#tensorrt-integration-1)
+      - [Higher order gradient support](#higher-order-gradient-support)
+      - [Operator improvements](#operator-improvements-1)
+      - [Profiler](#profiler-1)
+      - [ONNX import/export](#onnx-importexport)
+      - [Runtime discovery of features](#runtime-discovery-of-features)
+      - [Bug fixes](#bug-fixes-1)
+    - [Front end API](#front-end-api-1)
+      - [Gluon](#gluon-1)
+      - [Symbol](#symbol-1)
+    - [Language Bindings](#language-bindings-1)
+      - [Python](#python-1)
+      - [C/C++](#cc-1)
+      - [Clojure](#clojure-1)
+      - [Julia](#julia-1)
+      - [Perl](#perl-1)
+      - [Scala](#scala-1)
+    - [Performance improvements](#performance-improvements-1)
+    - [Examples and tutorials](#examples-and-tutorials)
+    - [Website and documentation](#website-and-documentation-1)
+    - [CI/CD](#cicd-1)
+    - [Misc](#misc)
+  - [1.5.1](#151)
+    - [Bug-fixes](#bug-fixes-2)
+  - [1.5.0](#150)
+    - [New Features](#new-features-2)
+      - [Automatic Mixed Precision(experimental)](#automatic-mixed-precisionexperimental)
       - [MKL-DNN Reduced precision inference and RNN API support](#mkl-dnn-reduced-precision-inference-and-rnn-api-support)
-      - [Dynamic Shape(experimental)](#dynamic-shape-experimental-)
-      - [Large Tensor Support](#large-tensor-support)
+      - [Dynamic Shape(experimental)](#dynamic-shapeexperimental)
+      - [Large Tensor Support](#large-tensor-support-2)
       - [Dependency Update](#dependency-update)
-      - [Gluon Fit API(experimental)](#gluon-fit-api-experimental-)
-      - [New Operators](#new-operators)
-    + [Feature Improvements](#feature-improvements)
+      - [Gluon Fit API(experimental)](#gluon-fit-apiexperimental)
+      - [New Operators](#new-operators-2)
+    - [Feature Improvements](#feature-improvements-2)
       - [Operators](#operators)
-      - [MKLDNN](#mkldnn)
-      - [ONNX](#onnx)
+      - [MKLDNN](#mkldnn-1)
+      - [ONNX](#onnx-1)
       - [TensorRT](#tensorrt)
       - [FP16 Support](#fp16-support)
-      - [Deep Graph Library(DGL) support](#deep-graph-library-dgl--support)
+      - [Deep Graph Library(DGL) support](#deep-graph-librarydgl-support)
       - [Horovod Integration](#horovod-integration)
       - [Dynamic Shape](#dynamic-shape)
       - [Backend Engine](#backend-engine)
-      - [Large Tensor Support](#large-tensor-support-1)
-      - [Quantization](#quantization)
-      - [Profiler](#profiler)
+      - [Large Tensor Support](#large-tensor-support-3)
+      - [Quantization](#quantization-1)
+      - [Profiler](#profiler-2)
       - [CoreML](#coreml)
-    + [Front End API](#front-end-api)
-      - [Gluon](#gluon)
-      - [Python](#python)
-    + [Language Bindings](#language-bindings)
-      - [Scala](#scala)
+    - [Front End API](#front-end-api-2)
+      - [Gluon](#gluon-2)
+      - [Python](#python-2)
+    - [Language Bindings](#language-bindings-2)
+      - [Scala](#scala-2)
       - [Java](#java)
-      - [C++](#c--)
-      - [Clojure](#clojure)
-      - [Julia](#julia)
-      - [Perl:](#perl-)
-      - [R](#r)
-    + [Performance Improvements](#performance-improvements)
-    + [Example and Tutorials](#example-and-tutorials)
-    + [Website](#website)
-    + [Documentation](#documentation)
-    + [Build and Test](#build-and-test)
-    + [Bug-fixes](#bug-fixes)
-    + [License](#license)
-    + [Depreciations](#depreciations)
-    + [Known Issues](#known-issues)
-  * [1.4.1](#141)
-    + [Bug-fixes](#bug-fixes-1)
-  * [1.4.0](#140)
-    + [New Features](#new-features-1)
+      - [C++](#c)
+      - [Clojure](#clojure-2)
+      - [Julia](#julia-2)
+      - [Perl:](#perl-2)
+      - [R](#r-1)
+    - [Performance Improvements](#performance-improvements-2)
+    - [Example and Tutorials](#example-and-tutorials-1)
+    - [Website](#website)
+    - [Documentation](#documentation)
+    - [Build and Test](#build-and-test)
+    - [Bug-fixes](#bug-fixes-3)
+    - [License](#license-1)
+    - [Depreciations](#depreciations)
+    - [Known Issues](#known-issues)
+  - [1.4.1](#141)
+    - [Bug-fixes](#bug-fixes-4)
+  - [1.4.0](#140)
+    - [New Features](#new-features-3)
       - [Java Inference API](#java-inference-api)
       - [Julia API](#julia-api)
-      - [Control Flow Operators (experimental)](#control-flow-operators--experimental-)
+      - [Control Flow Operators (experimental)](#control-flow-operators-experimental)
       - [SVRG Optimization](#svrg-optimization)
-      - [Subgraph API (experimental)](#subgraph-api--experimental-)
+      - [Subgraph API (experimental)](#subgraph-api-experimental)
       - [JVM Memory Management](#jvm-memory-management)
-      - [Topology-aware AllReduce (experimental)](#topology-aware-allreduce--experimental-)
-      - [MKLDNN backend: Graph optimization and Quantization (experimental)](#mkldnn-backend--graph-optimization-and-quantization--experimental-)
-        * [Graph Optimization](#graph-optimization)
-        * [Quantization](#quantization-1)
-    + [New Operators](#new-operators-1)
-    + [Feature improvements](#feature-improvements)
+      - [Topology-aware AllReduce (experimental)](#topology-aware-allreduce-experimental)
+      - [MKLDNN backend: Graph optimization and Quantization (experimental)](#mkldnn-backend-graph-optimization-and-quantization-experimental)
+        - [Graph Optimization](#graph-optimization)
+        - [Quantization](#quantization-2)
+    - [New Operators](#new-operators-3)
+    - [Feature improvements](#feature-improvements-3)
       - [Operator](#operator)
       - [Optimizer](#optimizer)
       - [Sparse](#sparse)
-      - [ONNX](#onnx-1)
-      - [MKLDNN](#mkldnn-1)
+      - [ONNX](#onnx-2)
+      - [MKLDNN](#mkldnn-2)
       - [Inference](#inference)
       - [Other](#other)
-    + [Frontend API updates](#frontend-api-updates)
-      - [Gluon](#gluon-1)
-      - [Symbol](#symbol)
-    + [Language API updates](#language-api-updates)
+    - [Frontend API updates](#frontend-api-updates)
+      - [Gluon](#gluon-3)
+      - [Symbol](#symbol-2)
+    - [Language API updates](#language-api-updates)
       - [Java](#java-1)
-      - [R](#r-1)
-      - [Scala](#scala-1)
-      - [Clojure](#clojure-1)
-      - [Perl](#perl)
-      - [Julia](#julia-1)
-    + [Performance benchmarks and improvements](#performance-benchmarks-and-improvements)
-    + [Bug fixes](#bug-fixes)
-    + [Licensing updates](#licensing-updates)
-    + [Improvements](#improvements)
+      - [R](#r-2)
+      - [Scala](#scala-3)
+      - [Clojure](#clojure-3)
+      - [Perl](#perl-3)
+      - [Julia](#julia-3)
+    - [Performance benchmarks and improvements](#performance-benchmarks-and-improvements)
+    - [Bug fixes](#bug-fixes-5)
+    - [Licensing updates](#licensing-updates)
+    - [Improvements](#improvements)
       - [Tutorial](#tutorial)
       - [Example](#example)
       - [Documentation](#documentation-1)
@@ -107,98 +181,1220 @@ MXNet Change Log
       - [Installation](#installation)
       - [Build and CI](#build-and-ci)
       - [3rd party](#3rd-party)
-        * [TVM:](#tvm-)
-        * [CUDNN:](#cudnn-)
-        * [Horovod:](#horovod-)
-    + [Deprications](#deprications)
-    + [Other](#other-1)
-    + [How to build MXNet](#how-to-build-mxnet)
-    + [List of submodules used by Apache MXNet (Incubating) and when they were updated last](#list-of-submodules-used-by-apache-mxnet--incubating--and-when-they-were-updated-last)
-  * [1.3.1](#131)
-    + [Bug fixes](#bug-fixes-1)
-    + [Documentation fixes](#documentation-fixes)
-    + [Other Improvements](#other-improvements)
-    + [Submodule updates](#submodule-updates)
-    + [Known issues](#known-issues)
-  * [1.3.0](#130)
-    + [New Features - Gluon RNN layers are now HybridBlocks](#new-features---gluon-rnn-layers-are-now-hybridblocks)
-    + [MKL-DNN improvements](#mkl-dnn-improvements)
-    + [New Features - Gluon Model Zoo Pre-trained Models](#new-features---gluon-model-zoo-pre-trained-models)
-    + [New Features - Clojure package (experimental)](#new-features---clojure-package--experimental-)
-    + [New Features - Synchronized Cross-GPU Batch Norm (experimental)](#new-features---synchronized-cross-gpu-batch-norm--experimental-)
-    + [New Features - Sparse Tensor Support for Gluon (experimental)](#new-features---sparse-tensor-support-for-gluon--experimental-)
-    + [New Features - Control flow operators (experimental)](#new-features---control-flow-operators--experimental-)
-    + [New Features - Scala API Improvements (experimental)](#new-features---scala-api-improvements--experimental-)
-    + [New Features - Rounding GPU Memory Pool for dynamic networks with variable-length inputs and outputs (experimental)](#new-features---rounding-gpu-memory-pool-for-dynamic-networks-with-variable-length-inputs-and-outputs--experimental-)
-    + [New Features - Topology-aware AllReduce (experimental)](#new-features---topology-aware-allreduce--experimental-)
-    + [New Features - Export MXNet models to ONNX format (experimental)](#new-features---export-mxnet-models-to-onnx-format--experimental-)
-    + [New Features - TensorRT Runtime Integration (experimental)](#new-features---tensorrt-runtime-integration--experimental-)
-    + [New Examples - Scala](#new-examples---scala)
-    + [Maintenance - Flaky Tests improvement effort](#maintenance---flaky-tests-improvement-effort)
-    + [Maintenance - MXNet Model Backwards Compatibility Checker](#maintenance---mxnet-model-backwards-compatibility-checker)
-    + [Maintenance - Integrated testing for "the Straight Dope"](#maintenance---integrated-testing-for--the-straight-dope-)
-    + [Bug-fixes](#bug-fixes-2)
-    + [Performance Improvements](#performance-improvements-1)
-    + [API Changes](#api-changes)
-    + [Other features](#other-features)
-    + [Usability Improvements](#usability-improvements)
-  * [1.2.0](#120)
-    + [New Features - Added Scala Inference APIs](#new-features---added-scala-inference-apis)
-    + [New Features - Added a Module to Import ONNX models into MXNet](#new-features---added-a-module-to-import-onnx-models-into-mxnet)
-    + [New Features - Added Support for Model Quantization with Calibration](#new-features---added-support-for-model-quantization-with-calibration)
-    + [New Features - MKL-DNN Integration](#new-features---mkl-dnn-integration)
-    + [New Features - Added Exception Handling Support for Operators](#new-features---added-exception-handling-support-for-operators)
-    + [New Features - Enhanced FP16 support](#new-features---enhanced-fp16-support)
-    + [New Features - Added Profiling Enhancements](#new-features---added-profiling-enhancements)
-    + [Breaking Changes](#breaking-changes)
-    + [Bug Fixes](#bug-fixes)
-    + [Performance Improvements](#performance-improvements-2)
-    + [API Changes](#api-changes-1)
-    + [Sparse Support](#sparse-support)
-    + [Deprecations](#deprecations)
-    + [Other Features](#other-features)
-    + [Usability Improvements](#usability-improvements-1)
-    + [Known Issues](#known-issues-1)
-  * [1.1.0](#110)
-    + [Usability Improvements](#usability-improvements-2)
-    + [Bug-fixes](#bug-fixes-3)
-    + [New Features](#new-features-2)
-    + [API Changes](#api-changes-2)
-    + [Deprecations](#deprecations-1)
-    + [Performance Improvements](#performance-improvements-3)
-    + [Known Issues](#known-issues-2)
-  * [1.0.0](#100)
-    + [Performance](#performance)
-    + [New Features - Gradient Compression [Experimental]](#new-features---gradient-compression--experimental-)
-    + [New Features - Support of NVIDIA Collective Communication Library (NCCL) [Experimental]](#new-features---support-of-nvidia-collective-communication-library--nccl---experimental-)
-    + [New Features - Advanced Indexing [General Availability]](#new-features---advanced-indexing--general-availability-)
-    + [New Features - Gluon [General Availability]](#new-features---gluon--general-availability-)
-    + [New Features - ARM / Raspberry Pi support [Experimental]](#new-features---arm---raspberry-pi-support--experimental-)
-    + [New Features - NVIDIA Jetson support [Experimental]](#new-features---nvidia-jetson-support--experimental-)
-    + [New Features - Sparse Tensor Support [General Availability]](#new-features---sparse-tensor-support--general-availability-)
-    + [Bug-fixes](#bug-fixes-4)
-    + [Doc Updates](#doc-updates)
-  * [0.12.1](#0121)
-    + [Bug-fixes](#bug-fixes-5)
-  * [0.12.0](#0120)
-    + [Performance](#performance-1)
-    + [New Features - Gluon](#new-features---gluon)
-    + [New Features - Autograd](#new-features---autograd)
-    + [New Features - Sparse Tensor Support](#new-features---sparse-tensor-support)
-    + [Other New Features](#other-new-features)
-    + [API Changes](#api-changes-3)
-    + [Bug-fixes](#bug-fixes-6)
-  * [0.11.0](#0110)
-    + [Major Features](#major-features)
-    + [API Changes](#api-changes-4)
-    + [Performance Improvements](#performance-improvements-4)
-    + [Bugfixes](#bugfixes)
-    + [Refactors](#refactors)
-  * [0.10.0](#0100)
-  * [0.9.3](#093)
-  * [v0.8](#v08)
-  * [v0.7](#v07)
-  * [v0.5 (initial release)](#v05--initial-release-)
+        - [TVM:](#tvm)
+        - [CUDNN:](#cudnn)
+        - [Horovod:](#horovod)
+    - [Deprications](#deprications)
+    - [Other](#other-1)
+    - [How to build MXNet](#how-to-build-mxnet)
+    - [List of submodules used by Apache MXNet (Incubating) and when they were updated last](#list-of-submodules-used-by-apache-mxnet-incubating-and-when-they-were-updated-last)
+  - [1.3.1](#131)
+    - [Bug fixes](#bug-fixes-6)
+    - [Documentation fixes](#documentation-fixes)
+    - [Other Improvements](#other-improvements)
+    - [Submodule updates](#submodule-updates)
+    - [Known issues](#known-issues-1)
+  - [1.3.0](#130)
+    - [New Features - Gluon RNN layers are now HybridBlocks](#new-features---gluon-rnn-layers-are-now-hybridblocks)
+    - [MKL-DNN improvements](#mkl-dnn-improvements)
+    - [New Features - Gluon Model Zoo Pre-trained Models](#new-features---gluon-model-zoo-pre-trained-models)
+    - [New Features - Clojure package (experimental)](#new-features---clojure-package-experimental)
+    - [New Features - Synchronized Cross-GPU Batch Norm (experimental)](#new-features---synchronized-cross-gpu-batch-norm-experimental)
+    - [New Features - Sparse Tensor Support for Gluon (experimental)](#new-features---sparse-tensor-support-for-gluon-experimental)
+    - [New Features - Control flow operators (experimental)](#new-features---control-flow-operators-experimental)
+    - [New Features - Scala API Improvements (experimental)](#new-features---scala-api-improvements-experimental)
+    - [New Features - Rounding GPU Memory Pool for dynamic networks with variable-length inputs and outputs (experimental)](#new-features---rounding-gpu-memory-pool-for-dynamic-networks-with-variable-length-inputs-and-outputs-experimental)
+    - [New Features - Topology-aware AllReduce (experimental)](#new-features---topology-aware-allreduce-experimental)
+    - [New Features - Export MXNet models to ONNX format (experimental)](#new-features---export-mxnet-models-to-onnx-format-experimental)
+    - [New Features - TensorRT Runtime Integration (experimental)](#new-features---tensorrt-runtime-integration-experimental)
+    - [New Examples - Scala](#new-examples---scala)
+    - [Maintenance - Flaky Tests improvement effort](#maintenance---flaky-tests-improvement-effort)
+    - [Maintenance - MXNet Model Backwards Compatibility Checker](#maintenance---mxnet-model-backwards-compatibility-checker)
+    - [Maintenance - Integrated testing for "the Straight Dope"](#maintenance---integrated-testing-for-%22the-straight-dope%22)
+    - [Bug-fixes](#bug-fixes-7)
+    - [Performance Improvements](#performance-improvements-3)
+    - [API Changes](#api-changes)
+    - [Other features](#other-features)
+    - [Usability Improvements](#usability-improvements)
+  - [1.2.0](#120)
+    - [New Features - Added Scala Inference APIs](#new-features---added-scala-inference-apis)
+    - [New Features - Added a Module to Import ONNX models into MXNet](#new-features---added-a-module-to-import-onnx-models-into-mxnet)
+    - [New Features - Added Support for Model Quantization with Calibration](#new-features---added-support-for-model-quantization-with-calibration)
+    - [New Features - MKL-DNN Integration](#new-features---mkl-dnn-integration)
+    - [New Features - Added Exception Handling Support for Operators](#new-features---added-exception-handling-support-for-operators)
+    - [New Features - Enhanced FP16 support](#new-features---enhanced-fp16-support)
+    - [New Features - Added Profiling Enhancements](#new-features---added-profiling-enhancements)
+    - [Breaking Changes](#breaking-changes)
+    - [Bug Fixes](#bug-fixes-8)
+    - [Performance Improvements](#performance-improvements-4)
+    - [API Changes](#api-changes-1)
+    - [Sparse Support](#sparse-support)
+    - [Deprecations](#deprecations)
+    - [Other Features](#other-features-1)
+    - [Usability Improvements](#usability-improvements-1)
+    - [Known Issues](#known-issues-2)
+  - [1.1.0](#110)
+    - [Usability Improvements](#usability-improvements-2)
+    - [Bug-fixes](#bug-fixes-9)
+    - [New Features](#new-features-4)
+    - [API Changes](#api-changes-2)
+    - [Deprecations](#deprecations-1)
+    - [Performance Improvements](#performance-improvements-5)
+    - [Known Issues](#known-issues-3)
+  - [1.0.0](#100)
+    - [Performance](#performance)
+    - [New Features - Gradient Compression [Experimental]](#new-features---gradient-compression-experimental)
+    - [New Features - Support of NVIDIA Collective Communication Library (NCCL) [Experimental]](#new-features---support-of-nvidia-collective-communication-library-nccl-experimental)
+    - [New Features - Advanced Indexing [General Availability]](#new-features---advanced-indexing-general-availability)
+    - [New Features - Gluon [General Availability]](#new-features---gluon-general-availability)
+    - [New Features - ARM / Raspberry Pi support [Experimental]](#new-features---arm--raspberry-pi-support-experimental)
+    - [New Features - NVIDIA Jetson support [Experimental]](#new-features---nvidia-jetson-support-experimental)
+    - [New Features - Sparse Tensor Support [General Availability]](#new-features---sparse-tensor-support-general-availability)
+    - [Bug-fixes](#bug-fixes-10)
+    - [Doc Updates](#doc-updates)
+  - [0.12.1](#0121)
+    - [Bug-fixes](#bug-fixes-11)
+  - [0.12.0](#0120)
+    - [Performance](#performance-1)
+    - [New Features - Gluon](#new-features---gluon)
+    - [New Features - Autograd](#new-features---autograd)
+    - [New Features - Sparse Tensor Support](#new-features---sparse-tensor-support)
+    - [Other New Features](#other-new-features)
+    - [API Changes](#api-changes-3)
+    - [Bug-fixes](#bug-fixes-12)
+  - [0.11.0](#0110)
+    - [Major Features](#major-features)
+    - [API Changes](#api-changes-4)
+    - [Performance Improvements](#performance-improvements-6)
+    - [Bugfixes](#bugfixes)
+    - [Refactors](#refactors)
+  - [0.10.0](#0100)
+  - [0.9.3](#093)
+  - [v0.8](#v08)
+  - [v0.7](#v07)
+  - [v0.5 (initial release)](#v05-initial-release)
+
+## 1.7.0
+
+### New features
+#### MXNet Extensions: custom operators, partitioning, and graph passes
+
+Adds support for extending MXNet with custom operators, partitioning strategies, and graph passes. All implemented in a library easily compiled separately from the MXNet codebase, and dynamically loaded at runtime into any prebuilt installation of MXNet.
+
+ - fix for number of inputs/outputs for backward custom ops (#17069)
+ - Enhancements for custom subgraph op (#17194)
+ - Disable flaky test_custom_op_fork (#17481)
+ - fix custom op makefile (#17516)
+ - Update CustomOp doc with changes for GPU support (#17486)
+ - [WIP] MXNet Extensions enhancements (#17885) (#18128)
+ - Dynamic subgraph property (#17034)
+ - Dynamic subgraph property doc (#17585)
+ - [1.7] Backport MXNet Extension PRs (#17623, #17569, #17762) #18063 (#18069)
+
+#### OpPerf utility enabled in the binary distribution
+ - [OpPerf] Add Neural network loss ops (#17482)
+ - [OpPerf] Fixes the issue when you pass NDArray to run_perf_test (#17508)
+ - [OpPerf] Fix markdown for native profile and add profile param in function desc (#17494)
+ - [OpPerf] Add Indexing ops (#16253)
+ - [OpPerf] Implement remaining random sampling ops (#17502)
+ - [OpPerf] Implement remaining GEMM ops (#17501)
+ - [OpPerf] Implement all linalg ops (#17528)
+ - [OpPerf] Fixed native output ordering, added warmup & runs command line args (#17571)
+ - [OpPerf] Add norm, cast ops, remaining optimizer ops (#17542)
+ - [OpPerf] Fixed Python profiler bug (#17642)
+
+#### MKL-DNN
+##### MKL-DNN as the default CPU backend in binary distribution
+##### Branding change to DNNL
+ - Upgrade MKL-DNN dependency to v1.1 (#16823)
+
+##### Support bfloat16 datatype
+ - Add bfloat16 floating-point format support based on AMP  (#17265)
+
+#### New operators
+ - [New Op] Add deformable conv v2 (#16341)
+ - Add MXNet Ops for fast multihead attention (#16408)
+ - Support boolean elemwise/broadcast binary add, multiply and true_divide (#16728)
+ - add gammaln, erf, erfinv (#16811)
+ - add aligned roi introduced in Detectron2 (#16619)
+ - Implement atleast_1d/2d/3d (#17099)
+ - Interleaved MHA for CPU path (#17138)
+ - Lamb optimizer update (#16715)
+ - Quantized Embedding (#16691)
+ - Add gelu fuse ops (#18082) (#18092)
+
+### Feature improvements
+#### Numpy compatible interface(experimental)
+ - [NumPy] NumPy support for linalg.inv (#16730)
+ - add numpy op nan_to_num (#16717)
+ - [Numpy] Add sampling method for bernoulli (#16638)
+ - Fix numpy-compatible mean output type for integer inputs (#16792)
+ - [Numpy] Fix collect_params().zero_grad() in gluon numpy interface (#16716)
+ - [Numpy][Operator] 'where' Implementation in MXNet (#16829)
+ - [Numpy] Random.normal() with backward (#16330)
+ - Add OP diag [numpy] (#16786)
+ - Mixed precison binary op backward (use in) for numpy (#16791)
+ - add numpy op diagflat [numpy] (#16813)
+ - add op bitwise_or [numpy] (#16801)
+ - [Numpy] Implementation npx.{sample}_n (#16876)
+ - [Numpy] Add NumPy support for np.linalg.det and np.linalg.slogdet (#16800)
+ - Op Unravel_index PR [Numpy] (#16862)
+ - [Numpy] Fix imperative basic indexing in numpy (#16902)
+ - [Numpy] Basic indexing in symbolic interface of DeepNumpy (#16621)
+ - [Numpy] add op full_like, c++ impl, fix zeros_like, ones_like type inference (#16804)
+ - [Numpy] Implement numpy operator 'average' (#16720)
+ - [Bugfix] [Numpy] Add `kAddTo` and kNullOp to Transpose (#16979)
+ - set rtol = 1e-2 and atol = 1e-4 when dtype == np.float32 in test_numpy_op.py:test_np_linalg_solve (#17025)
+ - Op_Diagonal [Numpy] (#16989)
+ - numpy bincount (#16965)
+ - [numpy] add op bitwise_not (#16947)
+ - [Numpy ]Modify np.random.shuffle to enable inplace by default (#17133)
+ - [numpy] fix argsort typo (#17150)
+ - [numpy] add op round (#17175)
+ - [numpy]Add op delete (#17023)
+ - [numpy] add op flipud, fliplr (#17192)
+ - [CI] Re-enable testing with numpy 1.18 (#17200)
+ - [Numpy] Add broadcast_to scalar case (#17233)
+ - [Numpy] Random.gamma() implemented (#16152)
+ - [Numpy] add row_stack (=vstack) (#17171)
+ - [Numpy] Add infra for performing constraint check (#17272)
+ - porting numpy-compatible hstack to master and add dstack for interoperability (#17030)
+ - adding asnumpy() to output of gather(implicitly called) to fix gather test in large vector and tensor tests (#17290)
+ - [numpy] add op random.exponential (#17280)
+ - [NumPy] Add NumPy support for norm (#17014)
+ - [numpy]add op random.lognormal  (#17415)
+ - Add numpy random weibull operator (#17505)
+ - [numpy] Add np.random.pareto and np.random.power (#17517)
+ - [Numpy] Add sort op (#17393)
+ - [numpy]implement exponential backward (#17401)
+ - [Numpy] Where operator scalar version (#17249)
+ - [numpy] add op matmul (#16990)
+ - [numpy]add op random.logistic, random.gumbel (#17302)
+ - [numpy][Do Not Review]add op insert (#16865)
+ - [numpy] add op random.rayleigh (#17541)
+ - [numpy] add fallback ops (#17609)
+ - [numpy] add op pad (#17328)
+ - [numpy] add op fabs, sometrue, round_ (#17619)
+ - Add arange_like to npx (#16883)
+ - try to move shape_array to npx (#16897)
+ - support np.argsort (#16949)
+ - np.broadcast_to extension (#17358)
+ - support bitwise_and (#16861)
+ - fix np.argmax/argmin output data type (#17476)
+ - add op random.beta (#17390)
+ - add op isnan isinf (#17535)
+ - array_split pr (#17032)
+ - Mixed data type binary ops (#16699)
+ - randn implemented (#17141)
+ - refactor and reduce float types for some functions, also add bitwise_xor (#16827)
+ - any/all (#17087)
+ - amax (#17176)
+ - fix format (#17100)
+ - add op empty_like, add nan_to_num to dispatch (#17169)
+ - handle array_like fill_value for np.full; add unit test coverage (#17245)
+ - add np.amin (#17538)
+ - add npx.gather_nd (#17477)
+ - add np.random.chisquare (#17524)
+ - add polyval (#17416)
+ - add isposinf isneginf isfinite (#17563)
+ - Support broadcast assign for `npi_boolean_mask_assign_tensor` (#17131)
+ - Implement Weibull backward (#17590)
+ - support np.dsplit, fix some error msgs and corner cases for hsplit and vsplit, add interoperability tests for h/v/dsplit (#17478)
+ - add np.product (#17489)
+ - Implement np.random.pareto backward (#17607)
+ - add np.ediff1d (#17624)
+ - more support for boolean indexing and assign (#18352)
+ - Fix einsum gradient (#18482)
+ - [v1.7.x] Backport PRs of numpy features (#18653)
+ - [v1.7.x] backport mixed type binary ops to v1.7.x (#18649)
+ - revise activations (#18700)
+
+#### Large tensor support
+ - [Large Tensor] Add support to Random Sample & Pdf ops (#17445)
+ - [Large Tensor] Add LT support for NN optimizers and 1 activation function (#17444)
+ - [Large Tensor] Fixed SoftmaxActivation op (#17634)
+ - [Large Tensor] Fixed col2im op (#17622)
+ - [Large Tensor] Fixed Spatial Transformer op (#17617)
+ - [Large Tensor] Fix ravel_multi_index op (#17644)
+ - Sparse int64 Large tensor support (#16898)
+ - Re-Enabling Large Tensor Nightly on GPU (#16164)
+ - enabling build stage gpu_int64 to enable large tensor nightly runs (#17546)
+ - [Large Tensor] Fixed Embedding op (#17599)
+
+#### MKL-DNN enhancement
+ - MKLDNN FC : Add error info when mkldnn fc bias dimension is wrong (#16692)
+ - [MKLDNN] support mkldnn gelu (#16710)
+ - [MKLDNN] Fix int8 convolution/fc bias overflow (#16734)
+ - [MKLDNN] use dim_t instead of int in slice/transpose operators (#16737)
+ - Mkldnn fullyConnect bwd bug fix (#16890)
+ - Revert Mkldnn fullyConnect bwd bug fix (#16890) (#16907)
+ - [MKLDNN] Use MKLDNNRun (#16772)
+ - [MKLDNN] mkldnn RNN operator enhancement (#17075)
+ - [MKLDNN] enable MaxPooling with full pooling convention (#16860)
+ - update mkldnn to v1.1.2 (#17165)
+ - improve mkldnn doc (#17198)
+ - [MKLDNN] Fix _copyto  (#17173)
+ - [MKLDNN] Support channel wise quantization for FullyConnected (#17187)
+ - fixed seed for mkldnn test (#17386)
+ - add mkldnn softmax backward  (#17170)
+ - cmake: copy dnnl headers to include/mkldnn (#17647)
+ - [mkldnn]Mkldnn bn opt backport from master to 1.7x (#18009)
+ - [v1.x] Update 3rdparty/mkldnn remote URL and pin to v1.3 (#17972) (#18033)
+ - [v1.x] backport #17900 [MKLDNN] support using any format in pooling backward (#18067)
+ - Static link MKL-DNN library (#16731)
+ - Add large tensor nightly tests for MKL-DNN operators (#16184)
+ -  [MKL-DNN] Enable and Optimization for s8 eltwise_add (#16931)
+ - [MKL-DNN] Enhance Quantization Method (#17161)
+ - Static Build and CD for mxnet-cu102/mxnet-cu102mkl (#17074)
+ - MKL-DNN RNN backward path enhancement (#17183)
+ - cmake: check USE_OPENMP and pass proper MKL-DNN build flags (#17356)
+ - update mkl to 2020.0 (#17355)
+ - Enable MKL-DNN by default in pip packages (#16899)
+ - Enable MKL-DNN FullyConnected backward (#17318)
+ - Softmax primitive cache and in-place computation (#17152)
+ - boolean_mask_assign with start_axis (#16886)
+ - use identity_with_cast (#16913)
+ - change error tolerance for bf16 bn (#18110)
+ - [v1.x] Backport #17689 and #17884 to v1.x branch (#18064)
+ - refactor codes and add an option to skip/check weight's version to reduce overhead (#17707) (#18039)
+ - [v1.x] Backport #17702 and #17872 to v1.x branch (#18038)
+
+#### TensorRT integration
+ - Update TensorRT tutorial to build-from-source. (#14860)
+ - Minor fix, use RAII for TensorRT builder and network object (#17189)
+
+#### Quantization
+ - Add silent option to quantization script (#17094)
+
+#### Profiler
+ - Implemented final two binary ops, added default params for functionality (#17407)
+ - Implement remaining nn_activation ops in opperf (#17475)
+ - Implement all miscellaneous ops (#17511)
+ - Implement remaining nn_basic ops in opperf (#17456)
+
+#### ONNX
+ - Fix memory leak reported by ASAN in NNVM to ONNX conversion (#15516)
+ - ONNX export: Gather (#15995)
+ - ONNX export: Slice op - Handle None value for ends (#14942)
+
+#### New models
+ - [Model] Implement Neural Collaborative Filtering with MXNet (#16689)
+ - Further optimization for NCF model (#17148)
+ - HMM Model (#17120)
+
+#### Operator improvements
+ - Faster GPU NMS operator (#16542)
+ - [MXNET-1421] Added (CuDNN)BatchNorm operator to the list of mirrored operators (#16022)
+ - dynamic custom operator support (#15921)
+ - Multi Precision Lamb Update operator (#16885)
+ - Add im2col and col2im operator (#16502)
+ - Quantized Elemwise Mul Operator (#17147)
+ - Enhancements for MXTensor for custom operators (#17204)
+ - Enabling large tensor support for binary broadcast operators (#16755)
+ - Fix operators lying about their number of inputs (#17049)
+ - [WIP] Fallback mechanism for mx.np operators (#16923)
+ - Dynamic custom operator GPU support (#17270)
+ - Fix flaky - test_operator_gpu.test_np_insert (#17620)
+ - MXNet FFI for Operator Imperative Invocation (#17510)
+ - [MXNET-978] Higher Order Gradient Support `logp1`, `expm1`, `square`. (#15416)
+ - [MXNET-978] Higher Order Gradient Support `arcsin`, `arccos`. (#15515)
+ - [MXNET-978] Higher Order Gradient Support `rsqrt`, `rcbrt`. (#15476)
+ - gather_nd: check bound and wrap negative indices (#17208)
+ - Remove dilation restriction for conv3d (#17491)
+ - Fix storage type infer of softmax backward (#17576)
+ - Fix and optimize handling of vectorized memory accesses (#17767) (#18113)
+ - Cherry-pick of #17995 and #17937 to 1.x branch (#18041)
+ - No tensor cores for fp32 interleaved attention, remove div by 8 restriction (#17994) (#18085)
+ - GPU gemms true fp16 (#17466) (#18023)
+ - Add support for boolean inputs to FusedOp (#16796)
+
+#### Bug fixes
+ - [BUG FIX] Always preserve batch dimension in batches returned from dataloader (#16233)
+ - Fix SliceChannel Type inference (#16748)
+ - change _generate_op_module_signature get_module_file open with encoding=utf-8,it fix some encode error in Chinese windows system. (#16738)
+ - Fix rtrue_divide grad (#16769)
+ - fix inv test flakiness using random matrices generated by SVD (#16782)
+ - [MXNET-1426] Fix the wrong result of sum, mean, argmin, argmax when inputs contain inf or nan (#16234)
+ - Fix (#16781)
+ - fix expand_dims fall back when input's ndim is 0 (#16837)
+ - [fix] missing input log higher order. (#15331)
+ - Fix IndentationError in setup.py (#16857)
+ - Fix a few np issues (#16849)
+ - Fix InferAttr/InferShapeAttr not calling inference for all nodes in a graph (#16836)
+ - fix for enable model parallelism for non-fp32 data (#16683)
+ - Fix NDArrayIter iteration bug when last_batch_handle='pad' (#16166)
+ - Fix crashing on Windows in ObjectPool ~ctor (#16941)
+ - Fix NDArrayIter cant pad when size is large (#17001)
+ - fix axis=-1 bug (#17016)
+ - Fix CUDNN detection for CMake build (#17019)
+ - Fix omp assert issue (#17039)
+ - mshadow: fix vector access (#17021)
+ - [BUGFIX] Fix race condition in kvstore.pushpull (#17007)
+ - [BUGFIX] Fix trainer param order (#17068)
+ - [BugFix] fix filter channel calculation in ModulatedDeformableConvV2 (#17070)
+ - Fix reshape interoperability test (#17155)
+ - fix norm sparse fallback (#17149)
+ - fix py27 quantization (#17153)
+ - fix int8 add ut (#17166)
+ - Fix and clean up Ubuntu build from source instructions (#17229)
+ - fix lstm layer with projection save params (#17266)
+ - Fix rendering of ubuntu_setup.md codeblocks (#17294)
+ - Fix #17267, add expected and got datatype for concat error msgs (#17271)
+ - [BUGFIX] fix model zoo parallel download (#17372)
+ - fix use int8, uint8, int32, int64 (#17188)
+ - [Fix] Add ctx to the original ndarray and revise the usage of context to ctx (#16819)
+ - Fix ndarray indexing bug (#16895)
+ - fix requantize flaky test (#16709)
+ - Initial checkin (#16856)
+ - Fix flakey test_ndarray.py:test_reduce (#17312)
+ - fix flaky test: boolean index and fix bugs (#17222)
+ - Fix IOT Devices section of Get Started page (#17326)
+ - add logic for no batch size while getting data arrays from executors (#17772) (#18122)
+ - Fix reverse shape inference in LayerNorm (#17683)
+ - fix full and full_like when input is boolean (#17668)
+ - Fix MBCC inference (#17660)
+ - Additional fix for vector access. (#17230)
+ - Cherrypick Fix nightly large_vector test caused by incorrect with_seed path (#18178) (#18220)
+ - [1.7] Pass args fix3 (#18237)
+ - fixing batch_norm and layer_norm for large tensors (#17805) (#18261)
+ - [1.7.x] Backport of LSTM and GRU fix (#17898) and RNN op (#17632) (#18316)
+ - [v1.7.x] backport #18500 - [Bug Fixed] Fix batch norm when grad_req is `add` (#18517)
+ - Fix the monitor_callback invalid issue during calibration with variable input shapes (#18632) (#18703)
+
+### Front end API
+ - Fix the problem in printing feature in c++ API examples : feature_extract (#15686)
+ - updating MXNet version to 1.6.0 in base.h for C APIs (#16905)
+ - [API] unified API for custom kvstores (#17010)
+ - fix parameter names in the estimator api (#17051)
+ - adding docs for 64bit C APIs of large tensor (#17309)
+ - Add API docs to INT64 APIs (#16617)
+
+#### Gluon
+ - [Quantization] Enhance gluon quantization API (#16695)
+ - [Gluon] Improve estimator usability and fix logging logic (#16810)
+ - Fix test_gluon.py:test_sync_batchnorm when number of GPUS > 4 (#16834)
+ - [Gluon] Update contrib.Estimator LoggingHandler to support logging per batch interval (#16922)
+ - Include eval_net the validation model in the gluon estimator api (#16957)
+ - Fix Gluon Estimator nightly test (#17042)
+ - [MXNET-1431] Multiple channel support in Gluon PReLU (#16262)
+ - Fix gluon.Trainer regression if no kvstore is used with sparse gradients (#17199)
+ - refactor gluon.utils.split_data() following np.array_split() (#17123)
+ - Add RandomApply in gluon's transforms (#17242)
+ - Partitioning Gluon HybridBlocks (#15969)
+ - Random rotation (#16794)
+ - bump up atol for gradient check (#16843)
+ - Extend estimator.evaluate() to support event handlers (#16971)
+ - [MXNET-1438] Adding SDML loss function (#17298)
+
+#### Symbol
+ - Add unoptimized symbol to executor for sharing (#16798)
+ - Enforces NDArray type in get_symbol (#16871)
+ - Fix #17164 symbolblock with BatchNorm inside during cast to fp16 (#17212)
+ - autograd video and image link fixes and removing symbol tutorials (#17227)
+ - Fix CosineEmbeddingLoss in when symbol API is used (#17308)
+ - Fix Horovod build error due to missing exported symbols (#17348)
+ - Update symbol.py (#17408)
+ - update symbol to json (#16948)
+
+### Language Bindings
+#### Python
+ - Python 2 compatibility fix in base.py
+ - adding stacktrace in Jenkinsfile_utils.groovy to inspect Python2 failure cause in CI (#17065)
+ - Fix image display in python autograd tutorial (#17243)
+ - Fix Python 3 compatibility in example/speech_recognition (#17354)
+ - Stop testing Python 2 on CI (#15990)
+ - Docs: Python tutorials doc fixes (#17435)
+ - pin python dependencies (#17556)
+ - Python 2 cleanup (#17583)
+
+#### C/C++
+ - Simplify C++ flags (#17413)
+
+#### R
+ - fix R docs (#16733)
+ - [R package] Make R package compilation support opencv 4.0 (#16934)
+ - Support R-package with cmake build and fix installation instructions (#17228)
+ - Fix R-package/src/Makevars for OpenCV 4 (#17404)
+ - Fix typo in Install the MXNet Package for R (#17340)
+
+#### Clojure
+
+#### Julia
+ - [MXNET-1440] julia: porting `current_context` (#17142)
+ - julia: porting `context.empty_cache` (#17172)
+ - pin Markdown version to 3.1 in Julia doc build (#17549)
+
+#### Perl
+ - [Perl] - ndarray operator overloading enhancements (#16779)
+ - MXNET-1447 [Perl] Runtime features and large tensor support. (#17610)
+
+#### Scala
+ - Fix scala publish & nvidia-docker cublas issue (#16968)
+ - Fix publishing scala gpu with cpu instance (#16987)
+ - swap wget to curl in Scala scripts (#17041)
+ - [Scala/Java] Remove unnecessary data slicing (#17544)
+ - quantile_scalar (#17572)
+ - Fix get_started scala gpu (#17434)
+ - Fix MBCC & scala publish pipeline (#17643)
+ - Bump up additional scala 1.x branch to 1.7.0 (#17765)
+
+### Performance improvements
+ - Build.py improvement (#16976)
+ - Improvements to config.cmake (#17639)
+ - [Done] BilinearResize2D optimized (#16292)
+ - Speed fused_op compilation by caching ptx and jit-compiled functions (#16783)
+ - Improve the speed of the pointwise fusion graph pass (#17114)
+ - broadcast_axis optimization (#17091)
+ - Optimize AddTakeGrad Tensor Sum (#17906) (#18045)
+
+### Example and tutorials
+ - Add CustomOp tutorial doc (#17241)
+ - Correct the grammar in 1-ndarray tutorial (#17513)
+
+### Website and documentation
+ - Website edits (#17050)
+ - [Website 2.0] Nightly Build for v1.x (#17956)
+ - [docs] Fix runtime feature detection documentation (#16746)
+ - Adding user guidelines for using MXNet built with Large Tensor Support (#16894)
+ - fix typo and doc (#16921)
+ - large tensor faq doc fix (#16953)
+ - [DOC] Add a few tips for running horovod (#17235)
+ - Update NOTICE to fix copyright years (#17330)
+ - [DOC] Fix tutorial link, and better error msg (#17057)
+ - doc fix for argmax & argmin (#17604)
+
+### CI/CD
+ - support mixed-precision true_divide (#16711)
+ - Try to fix CI (#16908)
+ - mixed precision for power (#16859)
+ - Fix desired precision for test_ndarray.py:test_reduce (#16992)
+ - [reproducibility] multi_sum_sq review, AtomicAdd removal (#17002)
+ - fix precision problem in linalg_solve, linalg_tensorinv, linalg_cholesky op test (#16981)
+ - grouping large array tests based on type and updating nightly CI function (#17305)
+ - [LICENSE] fix cpp predcit license (#17377)
+ - [CI] Fix static build pipeline (#17474)
+ - skipping tests that cannot fit in nightly CI machine corrected imports (#17450)
+ - Update Windows CI scripts to use syntax compatible with Win 2019 server powershell. (#17526)
+ - Fix Non-ASCII character in docstring (#17600)
+ - [CI] Follow redirects when downloading apache-maven-3.3.9-bin.tar.gz (#17608)
+ - [CI] Upgrade sphinx and autodocsumm (#17594)
+ - Reduce load on CI due to excessive log flood (#17629)
+ - Enable users to specify BLAS (#17648)
+ - [CI] Add AMI id to instance info on builds (#17649)
+ - [v1.7.x] Backport staggered CI builds (#17999 & #18119) (#18142)
+ - [v1.7.x] Backport #17177 to 1.7.x (Fix incorrect calculation results when the C locale is set to a locale that uses commas as the decimal separator) (#18147)
+ - Fix formatting and typos in CD README.md (#16703)
+ - [CD] dynamic libmxet pipeline fix + small fixes (#16966)
+ - [CD] enable s3 publish for nightly builds in cd (#17112)
+ - [CD] fix CD pipeline (#17259)
+ - [CD] update publish path (#17453)
+ - fix CD and remove leftover from #15990 (#17551)
+ - Fix nightly build (#16773)
+ - Update pypi_publish.py to disable nighlty build upload to Pypi (#17082)
+ - [v1.7.x] update jetson dockerfile to support CUDA 10.0 (#18339)
+ - Remove manually created symbolic link to ninja-build (#18437) (#18456)
+ - Increase staggered build timeout to 180 min (#18568) (#18585)
+
+### License
+ - Don't relicense FindCUDAToolkit.cmake (#17334)
+ - fix license and copyright issues (#17364)
+ - Update ps-lite LICENSE (#17351)
+ - remove unused file with license issue (#17371)
+ - Update LICENSE for fonts (#17365)
+ - license np_einsum file under bsd (#17367)
+ - Update Apache License for mshadow (#18109) (#18134)
+ - Julia: remove downloading of the non-ASF binary build (#18489) (#18502)
+ - Add missing license header for md files (#18541)
+ - [v1.7.x]License checker enhancement (#18478)
+
+### Miscellaneous changes
+ - Link fixes4 (#16764)
+ - Refactoring names for mxnet version of nnvm to avoid conflicting with the original tvm/nnvm. (#15303)
+ - minor typo fix (#17008)
+ - Add micro averaging strategy to pearsonr metric (#16878)
+ - introduce  gradient update handler to the  base estimator (#16900)
+ - fix latency calculation and print issue (#17217)
+ - add inference benchmark script (#16978)
+ - change the wording and log level to be more in line with the general use (#16626)
+ - Updated logos. (#16719)
+ - Pinning rvm version to satisfy Jekyll build (#18016)
+ - Workaround gnu_tls handshake error on Ubuntu 14.04 Nvidia Docker (#18044)
+
+## 1.6.0
+
+### Deprecation of Python 2
+
+MXNet community [voted](https://lists.apache.org/thread.html/r3a2db0f22a1680cc56804191446fef2289595798ca19fd17de1ff03e%40%3Cdev.mxnet.apache.org%3E) to no longer support Python 2 in future releases of MXNet. Therefore, MXNet 1.6 release is going to be the last MXNet release to support Python 2.
+
+### New features
+
+#### NumPy compatible interface and using TVM to generate operators
+
+NumPy has long been established as the standard math library in Python, the most prevalent language for the deep learning community. With this library as the cornerstone, there are now the largest ecosystem and community for scientific computing. The popularity of NumPy comes from its flexibility and generality.
+
+In #14253, the MXNet community reached consensus on moving towards a NumPy-compatible programing experience and committed to a major endeavor on providing NumPy compatible operators.
+
+The primary goal of the projects below is to provide the equivalent usability and expressiveness of NumPy in MXNet to facilitate Deep Learning model development, which not only helps existing deep learning practitioners but also provides people in the existing NumPy community with a shortcut for getting started in Deep Learning. The efforts towards this goal would also help a secondary goal, which is to enable the existing NumPy ecosystem to utilize GPUs and accelerators to speed up larg [...]
+
+ - Infra to use tvm write op kernels (#15550)
+ - fix boolean_mask for 0-size output (#15731)
+ - fix tvm cmake (#15781)
+ - Numpy-compatible Infra (#15581)
+ - [MXNET-1206] Support NDArray indexing with None and Ellipsis (#13143)
+ - numpy-compatible sum (#15810)
+ - [Numpy] Numpy compatible slicing (#15798)
+ - Numpy Tensordot and Dot Operator (#15820)
+ - numpy linspace (#15852)
+ - tvm infra for op attrs (#15854)
+ - Port several np ops to master (#15867)
+ - numpy-compatible split upstream (#15841)
+ - Numpy-compatible concatenate upstream (#15894)
+ - Numpy-compatible stack upstream (#15842)
+ - [Numpy] Numpy behavior random.uniform() (#15858)
+ - Tvm broadcast backward (#15938)
+ - np elemwise unary ops upstream (#15831)
+ - [Numpy] random.randint() implemented (#15956)
+ - Refines NDArray indexing and adds numpy ndarray indexing [READY FOR REVIEW] (#15942)
+ - Port ops from np branch (#16018)
+ - numpy-compatible cumsum upstream (#15924)
+ - NumPy-compatible infrastructure on Gluon (#16024)
+ - [OP] Support range as advanced index for ndarrays (#16047)
+ - Numpy compatible max min (#16046)
+ - NumPy-compatible Mean, Std and Var (#16014)
+ - Add fluent methods mean, std, var for ndarray (#16077)
+ - numpy multinomial op (#15878)
+ - add numpy operator remainder (#16080)
+ - [Numpy] Random.choice implemented (#16089)
+ - Fix sample.normal shape inference
+ - Numpy add numpy op indices (#15837)
+ - [Numpy] Numpy copysign (#15851)
+ - numpy operator ravel, derive from reshape (#16016)
+ - Add __array_function__
+ - Improved error mesages
+ - Fix np.choice
+ - add exception check for numpy reshape (#16180)
+ - [Numpy] Numpy behavior normal distribution (#16109)
+ - fix multinomial bug on gpu (#16204)
+ - [Numpy] Differentiable svd (#15795)
+ - add epsilon to sum(pvalue) upperbound (#16211)
+ - np compatible vstack (#15850)
+ - Numpy add numpy op roll (#15902)
+ - add numpy compatible trace (#16008)
+ - add numpy op hanning, hamming, blackman (#15815)
+ - [Numpy]flip (#15819)
+ - numpy operator around (#16126)
+ - numpy operator arctan2 (#15890)
+ - numpy operator nonzero (#15838)
+ - numpy operator hypot (#15901)
+ - tvm numpy operator deg2rad && rad2deg (#16015)
+ - numpy op unique
+ - try to fix bug
+ - fix memory bug and disable some test
+ - fix according to review
+ - Numpy operators: `lcm`, `tril`, `identity` and `take` (#16264)
+ - [numpy] Cosmetic improvement on mxnet.numpy builtin op signature in documentation (#16305)
+ - Disable Pylint false error in numpy_op_signature  (#16370)
+ - boolean_mask_assign operator for future boolean indexing (#16361)
+ - Implements ldexp. (#15845)
+ - Numpy Operators: Inner, Outer, vdot (#15846)
+ - Numpy det and slogdet operators (#15861)
+ - Fix random op signature
+ - fix choice signature
+ - add raise test for shape
+ - Add boolean ndarray (#15940)
+ - global numpy shape flag (#16335)
+ - numpy-compatible histogram (#16266)
+ - [Numpy] Numpy compatible dstack (#15871)
+ - numpy eye op (#16132)
+ - Numpy compatible vsplit; minor changes to split (#15983)
+ - add numpy op logspace (#15825)
+ - add numpy op bitwise_xor, hsplit, moveaxis, rot90 (#16257)
+ - Fix optimizer bug for np attribute (#16494)
+ - Tests of NumPy interoperability (#16469)
+ - improve unary and binary operator handling and refactor tests (#16423)
+ - [DOC] Fix numpy op doc  (#16504)
+ - [Numpy] More numpy dispatch tests (#16426)
+ - [Numpy] einsum (#15911)
+ - Add test pipeline for USE_TVM_OP=OFF on Unix (#16450)
+ - Numpy dispatch test of ...... (#16422)
+ - setup and concatenate, copy, expand_dims, expm1 (#16493)
+ - add sum for boolean type in mainline (#16436)
+ - [Numpy] SVD outputs tuple (#16530)
+ - numpy op doc: max, min, prod (#16506)
+ - add interface for rand
+ - Fix numpy bugs (#16537)
+ - pickler override for np ndarrays (#16561)
+ - [numpy]op test in new pattern (#16556)
+ - Enforce adding documentation for builtin numpy operators (#16575)
+ - [Numpy] Support N_D(N>=3) batch_dot (#16586)
+ - [Numpy] Loading numpy-incompatible NDArray in numpy-compatible mode (#16597)
+ - Fix index overflow bug in einsum (#16589)
+ - add npx reshape (#16640)
+ - add type switch to weight tensor (#16543)
+ - numpy doc enhancement (#16637)
+ - Infra for tvm op runtime dispatch (#16100)
+ - [NumPy][Operator] NumPy operator `may_share_memory` and `shares_memory` (#16533)
+ - [Numpy] Numpy operator diff (#15906)
+ - Miscellaneous fix for several numpy issues (#16664)
+ - [Numpy] implement np.column_stack (#16594)
+ - [numpy] add numpy operator : append (#16564)
+ - Backport of #16711, #16737, #16408 to 1.6 branch (#16763)
+ - Backport to 1.6 (#16773, #16781, #16783, #16716, #16699, #16728, #16769, #16792) (#16832)
+ - [Backport][v1.6.x] Fix the wrong result of sum, mean, argmin, argmax when inputs contain inf or nan (#16884)
+ - Backport of #16827, #16791 and #16888 to 1.6 branch (#16901)
+ - port shape op to 1.6.x (#16912)
+ - [Numpy] Fix imperative basic indexing in numpy (#16902) (#16919)
+ - Backport #16895, #16922, #16878, #16979 and #16900 to 1.6 (#17029)
+
+
+#### Graph optimizations
+
+##### Pointwise fusion for GPU
+
+DL models, besides compute intensive operations like convolutions and fully connected layers, feature a lot of simple pointwise (aka elementwise) operations (like elementwise addition etc.). Performance of those operations is fully memory bandwidth bound and so limit speedups from newer GPU hardware, which typically has high compute/memory bandwidth ratio. When multiple of such operations are chained one after another, it results in a series of unnecessary stores and loads as well as pot [...]
+
+ - Pointwise fusion for GPU (#15167)
+ - Backport #16798, #16836 and #16838 to 1.6 (#16874)
+ - Add support for boolean inputs to FusedOp (#16796) (#16892)
+ - Workaround problem with fusion in CUDA 9 (#17028) (#17035)
+
+##### Eliminate common subexpressions
+
+ - Eliminate common expressions (#15657)
+
+##### Default MKLDNN Subgraph fusion
+
+ - [MKLDNN] Enable subgraph backend mkldnn by default. (#15518)
+
+#### New operators
+
+ - [OP] Add a new arange_like operator to contrib (#15400)
+ - PDF operators for each distribution for which we have a random sampler (plus also the PDF of the Dirichlet).  Supports probabilities and log-probabilities, as well as gradients. (#14617)
+ - Group Normalization (#14959)
+ - Add RROIAlign (#16017)
+ - Add fast implementation of LARS (#16122)
+ - Round and sign straight-through-estimators C operators. (#16373)
+ - New ops for RCNN + old ops improvements for RCNN (#16215)
+ - Comparison ops implemented using mshadow (#16414)
+ - Add mask target generator operator for Mask-RCNN (#16268)
+ - Move MRCNNMaskTarget op to contrib (#16486)
+ - Mxnet allclose (#14443)
+ - Aggregated adamw update (#16398)
+ - Make mrcnn_mask_target arg mask_size a 2d tuple (#16567)
+ - Dgl ops 2 (#16416)
+ - Lamb optimizer update (#16715)
+ - [OP] changing data type of 't' to int in lamb_update_phase1 (#16903)
+ - Multi Precision Lamb Update operator (#16885)
+ - Interleaved MHA for CPU path (#17138) (#17211)
+
+### Feature improvements
+
+#### Automatic Mixed Precision
+
+ - [AMP] Move topk from FP16_FP32_FUNCS to FP32_FUNCS (#15342)
+ - Conversion from FP32 model to Mixed Precision model (#15118)
+ - Update fp16 docs: Block.cast is inplace (#15458)
+ - FP16 Support for C Predict API (#15245)
+ - Add AMP Conversion support for BucketingModule (#15528)
+
+#### Gluon Fit API
+
+ - Fixing build for gluon estimator test, including libtvm in pack libs (#16148)
+ - [Estimator] handle composite metrics in estimator (#16676)
+ - [Estimator] refactor estimator to allow overriding evaluate/fit of a batch (#16678)
+ - [Estimator] refactor estimator and clarify docs (#16694)
+ - [Gluon] Improve estimator usability and fix logging logic (#16810) (#16846)
+ - Backport Gluon estimator changes to 1.6 (#17048)
+ - fix parameter names in the estimator api (#17051) (#17162)
+
+
+#### MKLDNN
+
+ - Upgrade MKL-DNN submodule to v0.20 release (#15422)
+ - Fix quantized concat when inputs are mixed int8 and uint8 (#15693)
+ - [MKLDNN]Enhance Quantization APIs and Tutorial (#15448)
+ - Add quantization support for GluonCV (#15754)
+ - add int8 bn mkldnn implementation and test (#15664)
+ - [Quantization]support exclude operators while quantization (#15910)
+ - [MKLDNN]Support fullyconnected and element-wise ops fusion (#15950)
+ - Disable test coverage for Clang MKLDNN (#15977)
+ - update support MKLDNN BN conditions (#15870)
+ - [MKLDNN] Fix out of bound access of req vector (#16000)
+ - add uint8 bn mkldnn implementation (#16003)
+ - Improve quantization flow (#15961)
+ - [MKLDNN] fix uint8 batch norm memory misuse (#16034)
+ - MKL-DNN RNN checks NDArray version (#16071)
+ - Float64 fallback for mkldnn subgraph and rnn op (#15853)
+ - Update MKL-DNN dependency (#16073)
+ - Integrate MKL-DNN leakyrelu (#16075)
+ - [MKLDNN] NDArray reorder in C API and deconv (#16265)
+ - Fix mkldnn reshape (#16455)
+ - [MKLDNN] Fix uint quantized fc when not fusing with requantize (#16523)
+ - [MKLDNN]Fix reorder2default (#16602)
+ - Upgrade MKL-DNN dependency to v1.0 (#16555)
+ - Revert "[MKLDNN]Fix reorder2default (#16602)" (#16697)
+ - [v1.6.x] Backport #16837 into v1.6.x (#16847)
+ - Initial checkin (#16856) (#16872)
+
+#### Large tensor support
+
+ - [MXNET-1413] Adding Large Tensor support for sort operators (#15170)
+ - Large Index Support for Slice (#15593)
+ - Add large tensor support binary arithmetic (#15785)
+ - Large tensor support for random ops (#15783)
+ - Add Large Tensor Support for Sequence, NN Ops  (#15807)
+ - Add power, exponent, log ops large tensor support (#15794)
+ - removing unnecessary int64 C apis that were added to support Large Tensors and Vectors (#15944)
+ - creating ndarray directly using mxnet ndarray primitives to reduce memory footprint of tests for topk, sort and argsort (#15900)
+ - Adding tests to verify support for Large Tensors in additional Ops along with new C_Apis supporting 64bit indexing (#15895)
+ - Added tests to verify Large Vector Support for initial set of ops  (#15943)
+ - Added more tests for Large Indices (#15960)
+ - Add Large tensor vector test cases (#15941)
+ - Test large vector mean operator and fix a few bugs (#16079)
+ - Reducing memory footprint of one_hot for Large Array Testing (#16136)
+ - removing MXNDArrayLoadFromBuffer64 and MXNDArrayLoad64 (#16203)
+ - Fix large array tests (#16328)
+ - added more tests to verify support for large vector (#16477)
+ - added support for large tensors for Dropout operator and tests to verify support for more operators (#16409)
+ - adding large tensor support for add_n and tests for more ops (#16476)
+ - adding large tensor support for pad operator (#15126)
+ - Added large tensor support and test for gather_nd (#16371)
+ - Large Vector tests for DGL Ops Part 2 (#16497)
+ - Showing proper error message when an attempt is made to create large tensor but MXNet is not built with it (#16570)
+
+#### TensorRT integration
+
+ - enable TensorRT integration with cpp api (#15335)
+ - Add unit tests for TensorRT integration and fix some bugs (#15399)
+
+#### Higher order gradient support
+
+ - [MXNET-978] Higher order gradient for sigmoid (#15288)
+ - [MXNET-978] Higher Order Gradient Support `reciprocal`, `abs`. (#15413)
+ - [MXNET-978] Add higher order gradient support `tan`, `tanh` (#15253)
+ - [MXNET-978] Higher Order Gradient Support `arctan`, `arctanh`, `radians`. (#15531)
+ - [MXNET-978] Higher Order Gradient Support `sqrt`, `cbrt`. (#15474)
+ - [MXNET-978] Higher Order Gradient Support `clip`, `dropout`. (#15746)
+ - [MXNET-978] Higher Order Gradient Support `sinh`, `cosh`. (#15412)
+ - [MXNET-978] n-th order gradient test support. (#15611)
+ - [MXNET-978] Fully connected, higher order grad (#14779)
+ - [MXNET-978] Higher Order Gradient Support `arcsinh`, `arccosh`. (#15530)
+
+#### Operator improvements
+
+ - broadcast axis is alias to broadcast axes; doc fix (#15546)
+ - Utility to help developers debug operators: Tensor Inspector (#15490)
+ - Softmax with length (#15169)
+ - in-place reshape ops (#14053)
+ - Add missing default axis value to symbol.squeeze op (#15707)
+ - Add matrix determinant operator in linalg (#15007)
+ - Add fp16 support for topk (#15560)
+ - [MXNET-1399] multiclass-mcc metric enhancements (#14874)
+ - new raise mode for nd.take and fix backward for wrap mode (#15887)
+
+#### Profiler
+
+ - Fixing duplication in operator profiling (#15240)
+ - Custom Operator Profiling Enhancement (#15210)
+ - [Opperf] Make module/namespace of the operator parameterized (#15226)
+ - Opperf: Support Python<3.6 (#15487)
+ - Add transpose_conv, sorting and searching operator benchmarks to Opperf (#15475)
+ - Deprecate USE_PROFILER flag (#15595)
+ - Update profiler.md (#15477)
+ - [Opperf] Add array rearrange operators to opperf (#15606)
+ - [OpPerf] PDF Random ops fix (#15661)
+ - [Opperf] Add  optimizer update operator benchmarks to opperf (#15522)
+ - fix broadcast op param (#15714)
+ - [OpPerf] Profiler flag for Python, Cpp  (#15881)
+ - [Opperf] Filter out deprecated ops (#15541)
+ - [OpPerf] Handle positional arguments (#15761)
+ - [OpPerf] Take care of 4d param  (#15736)
+ - Add Median,p50,p99 to python profiler (#15953)
+ - adding "total" (total time) to profiler aggregate stats sorting criteria (#16055)
+
+#### ONNX import/export
+
+ - Correct ONNX documentation (#15914)
+ - [MXNET-895] ONNX import/export: TopK (#13627)
+
+#### Runtime discovery of features
+
+ - Making Features as a singleton for improved caching (#15835)
+
+#### Bug fixes
+
+ - [bug] fix higher grad log  (#15120)
+ - Showing proper error when csr array is not 2D in shape. (#15242)
+ - add 'asnumpy' dtype option to check_symbolic_backward (#15186)
+ - point fix the vector declaration in MultiBoxDetection (#15300)
+ - Temporarily Commenting out Flaky Test (#15436)
+ - Fix memory leak in NaiveEngine (#15405)
+ - fix nightly CI failure (#15452)
+ - Small typo fixes in batch_norm-inl.h (#15527)
+ - Bypass cuda/cudnn checks if no driver. (#15551)
+ - Julia path patch (#15561)
+ - Fix AMP Tutorial failures (#15526)
+ - Fix warnings in CLang: (#15270)
+ - Fix dumps for Constant initializer (#15150)
+ - fix normalize mean error bug (#15539)
+ - [fix] print `self` in warning. (#15614)
+ - [MXNET-1411] solve pylint error issue#14851 (#15113)
+ - [Flaky test] Skip test_operator_gpu.test_convolution_independent_gradients (#15631)
+ - Fix subgraph with custom_op (#15671)
+ - Fix USE_BLAS == openblas check (#15691)
+ - update previous flaky naive engine test (#15651)
+ - make TransposeShape infer shape form both sides (#15713)
+ - Skip Flaky Test (#15722)
+ - Revert "Dynamic Library Loading Support" (#15755)
+ - Fix flaky test test_global_metric (#15756)
+ - Fix PR #15489 (Dynamic Library Loading Support) (#15760)
+ - Refactor LibraryInitializer so it's thread safe. Fixes random sporadical concurrency crashes. (#15762)
+ - Fix backward_clip num inputs and type of clip params (#15688)
+ - fixing problem with existing Singleton Caching (#15868)
+ - Allow operators with multiple outputs in get_atomic_symbol (#15740)
+ - Fix ConcatType backward type inference (#15829)
+ - Add disable attr to subgraph property (#15926)
+ - Re-enable flaky test_prelu (#15777)
+ - declare explicitly the tblob default assign operator and copy constructor (#15937)
+ - Discard needless test cases in `test_convolution_independent_gradients` (#15939)
+ - fix naive engine for multi-threaded inference (#15574)
+ - Fix get_rows_per_block (#15979)
+ - Fix a memory misalignment in topk operator (#15948)
+ - Decouple dtype from shape for Random multinomial (#15980)
+ - Fix dtype inference in arange_like operator (#15930)
+ - Disable laop_6 (#15976)
+ - Fix flaky clojure profile test (#16058)
+ - fix test_pick test time  is too long (#16066)
+ - [fix] Support nullop in `transpose` (#15865)
+ - fix flaky test (#16074)
+ - fix some test files test time is too long (#16067)
+ - Fix gradient tensor mutate in `{adam/ftrl/rmprop/rmspropalex}_update`. (#15768)
+ - Fix unary operator ceil/floor/trunc when data type is integer (#14251)
+ - Fix failing tests (#16117)
+ - Fixes NAG optimizer #15543 (#16053)
+ - avoid test relu at the origin due to discontinuous gradient (#16133)
+ - Fix remaining errors reported by D2L (#16157)
+ - use 1E-4 in groupnorm test(#16169)
+ - Sequence last fix (#16156)
+ - fixing test for model compatibility checker (#16159)
+ - assert_allclose -> rtol=1e-10 (#16198)
+ - [MEMORY] retry GPU memory allocation if fragmented (#16194)
+ - improve dataloader signals and messages (#16114)
+ - Update ndarray.py (#16205)
+ - fix flaky test (#16191)
+ - Solve #14116, #15143 (#15144)
+ - [MXNET-1422] Fix wrong results of min([inf, inf]) and max([-inf,-inf]) (#16226)
+ - Fix inconsistent interpolation method values (#16212)
+ - set fixed seed for profiler (#16155)
+ - Fix MXNDArrayGetData (#16289)
+ - fix atol for test_preloaded_multi_sgd (#16356)
+ - Fix windows flakiness (#16415)
+ - cuDNN non-persistant bidirectional RNN dgrad sync fix (#16391)
+ - [BUGFIX] Minor type issues in Squeeze (#16448)
+ - Fix Nightly Tests for Binaries (#16451)
+ - Fix dtype bug (#16467)
+ - Fix flakey pylint CI failures (#16462)
+ - Load NDArray only to GPU if GPU is present (#16432)
+ - Bug fix for the input of same axes of the swapaxes operator (#16513)
+ - Fix learning rate scheduler being unexpectedly overwritten by optimizer's default value (#16487)
+ - disable tests (#16536)
+ - fix pylint in CI (#16540)
+ - image crop gpu (#16464)
+ - Build dmlc-core with old thread_local implementation (#16526)
+ - fix doc for topk (#16571)
+ - RNNOp to call cudaEventCreate lazily (#16584)
+ - add encoding to the stub files for potential utf8 char in doc strings (#16580)
+ - Surpress subgraph log in CI (#16607)
+ - Fix dequantize memory corruption (#16606)
+ - Fix for wrong reqs set after switching from training to inference (#16553)
+ - Disables test_bulking_operator_gpu due to flakiness (#16611)
+ - Imagenet inference to nightly fix (#16599)
+ - Move some subgraph verbose to MXNET_SUBGRAPH_VERBOSE=2 (#16622)
+ - RNNOp only call cuda/cudnn if GPU ctx is requested (#16632)
+ - fix bad encode (#16641)
+ - Disable float16 test (#16643)
+ - Fix GetMKLDNNData for delay alloc (#16618)
+ - Move ops which don't support FP16 dtype to FP32 list (#16668)
+ - no such method => modified function args (#16610)
+ - fix cuDNN RNN dtype_with_fallback_ bug (#16671)
+ - Add check if scipy is imported in sparse.py (#16574)
+ - Added launch bounds to the reduce kernels (#16397)
+ - fix install dir (#16690)
+ - fix binary dependencies in CD and nightly (#16693)
+ - Fix SliceChannel Type inference (#16748) (#16797)
+ - fix flakiness of test_np_mixed_precision_binary_funcs (#16873)
+ - Fix test_gluon.py:test_sync_batchnorm when number of GPUS > 4 (#16835)
+ - Omp fork numthreads fix 1.6 (#17000)
+ - [BUGFIX] Fix race condition in kvstore.pushpull (#17007) (#17052)
+ - Backport #17002, #17068 and #17114 to 1.6 branch (#17137)
+ - Backport 3rdparty/openmp fixes (#17193)
+ - fix norm sparse fallback (#17149)
+
+### Front end API
+
+ - Expose get_all_registered_operators and get_operator_arguments in the… (#15364)
+ - Add magic method `abs` to NDArray and Symbol. (#15680)
+ - Dynamic Library Loading Support (#15489)
+ - [MXNET-1294] Add KVSTORE PushPull API (#15559)
+
+#### Gluon
+
+ - [Dataset] Add take, filter, sample API to dataset (#16078)
+ - Add register_op_hook for gluon (#15839)
+ - [Dataset] add shard API (#16175)
+ - Add list_ctx to ParameterDict (#16185)
+ - [Gluon] Support None argument in HybridBlock (#16280)
+ - Aggregated zero grad (#16446)
+ - try to fix block (#16465)
+ - [Gluon] Don't serialize shared parameters twice (#16582)
+ - Initializer.__eq__ (#16680)
+
+#### Symbol
+
+ - Add symbol api for randn and fix shape issue for randn ndarray and symbol api (#15772)
+ - Graph Partition API (#15886)
+
+### Language Bindings
+
+#### Python
+
+MXNet community [voted](https://lists.apache.org/thread.html/r3a2db0f22a1680cc56804191446fef2289595798ca19fd17de1ff03e%40%3Cdev.mxnet.apache.org%3E) to no longer support Python 2 in future releases of MXNet. Therefore, MXNet 1.6 release is going to be the last MXNet release to support Python 2.
+
+#### C/C++
+
+ - [C++] Improve inference script to support benchmark on Imagenet (#15164)
+ - C Api for simplebind, fix comment for trigoops, add atol to assert (#16585)
+
+#### Clojure
+
+ - Extend Clojure BERT example (#15023)
+ - [Clojure] Add fastText example (#15340)
+ - make clojure api generator tests less brittle (#15579)
+
+#### Julia
+
+ - add julia env settings (#15523)
+ - julia: bump window prebult binary version to v1.5.0 (#15608)
+ - julia: remove Travis CI related files (#15616)
+ - julia: bump binding version to v1.6.0 (#15607)
+ - julia: rename build env var `MXNET_HOME` to `MXNET_ROOT` (#15568)
+ - Revert "julia: rename build env var `MXNET_HOME` to `MXNET_ROOT` (#15568)" (#16147)
+ - julia: fix `mx.forward` kwargs checking (#16138)
+ - julia: implement `context.num_gpus` (#16236)
+ - julia: add `AbstractMXError` as parent type (#16235)
+ - [MXNET-1430] julia: implement context.gpu_memory_info (#16324)
+ - julia/docs: more DRY on page rendering (#16396)
+
+#### Perl
+
+ - [Perl] - simplify aliasing strategy (#15395)
+ - [Perl] - ndarray to native array conversion fix (#16635)
+
+#### Scala
+
+ - Add Sparse NDArray support for Scala (#15378)
+ - fix the bug on Scala Sparse (#15500)
+ - fix heap-use-after-free in scala (#15503)
+ - Bump Scala version to 1.6 (#15660)
+ - Fix Scala Symbolic API some/Some typo (#15687)
+ - Faster Scala NDArray to BufferedImage function (#16219)
+
+### Performance improvements
+
+ - Proper bulking of ops not using FCompute (#15272)
+ - improve layernorm CPU performance (#15313)
+ - Efficient MXNet sampling in the multinomial distribution (#15311)
+ - Revert default return type for indices in argsort() and topk() back to float32 (#15360)
+ - Use omp threads for cpu data loader (#15379)
+ - Accelerate ROIPooling layer (#14894)
+ - Avoid memory copy for dropout inference (#15521)
+ - Add omp parallel optimization for _contrib_BilinearReisze2D (#15584)
+ - Softmax optimization for GPU (#15545)
+ - Speed up group executor (#16069)
+ - FullyConnected Bias performance improvement on GPU (#16039)
+ - Embedding gradient performance optimization on GPU (#16355)
+ - Faster Transpose 2D (#16104)
+ - Pseudo 2D transpose kernel (#16229)
+ - Faster general take (#16615)
+
+### Examples and tutorials
+
+ - [TUTORIAL] Gluon performance tips and tricks (#15427)
+ - Updating profiler tutorial to include new custom operator profiling (#15403)
+ - [TUTORIAL] Gluon and Sparse NDArray (#15396)
+ - [TUTORIAL] Revise Naming tutorial (#15365)
+ - Revise Symbol tutorial (#15343)
+ - Two fixes for info_gan.md example Code (#15323)
+ - Rebase #13757 to master (#15189)
+ - Tensor Inspector Tutorial (#15517)
+ - logging (#15106)
+ - update profiler tutorial (#15580)
+ - [MXNET-1358] Fit api tutorial (#15353)
+ - Tutorials nighly fix (#16179)
+ - Update add_op_in_backend.md (#16403)
+ - typo fix in r doc lstm tutorial (#16546)
+ - [MKL-DNN] Add mxnet mkldnn cmake tutorial (#16688)
+
+### Website and documentation
+
+ - [DOC] Clarify that global pooling is going to reset padding (#15269)
+ - Update sparse_retain Documentation (#15394)
+ - nano instructions (#15117)
+ - remove comments from nano instructions (#15433)
+ - REAME   MTCNN   Link URL Error in original website (#15020)
+ - Update Horovod docs links in README (#15366)
+ - fix doc for sort and argsort (#15317)
+ - fix comment (#15481)
+ - Improve docs for AMP (#15455)
+ - [Doc] Add MKL install method apt/yum into tutorial (#15491)
+ - Julia docs (#15454)
+ - Docs: Fix misprints (#15505)
+ - website build for julia: fix path to be static (#15554)
+ - some minor typos/clarifications (#15538)
+ - refine Nano setup directions (#15524)
+ - [Doc] add squeeze to Array change shape (#15549)
+ - fix typo (#15648)
+ - Fix url (404 error) (#15683)
+ - update julia install doc (#15609)
+ - [DOC] refine autograd docs (#15109)
+ - [DOC] Fix many arguments in the doc: reshape_like, arange_like, shape_array (#15752)
+ - Add Gather_nd Scatter_nd to NDArray API category doc (#15689)
+ - [Dependency Update] [Doc] move the general prerequisite software to the top (#15896)
+ - typo in docs (#16094)
+ - [WIP] New Website: New Docs [1/3] (#15884)
+ - [DOC] Fix doc for nn.Embedding, nn.Dense and nd.Embedding (#15869)
+ - [DOC] Consistent capitalization: mxnet -> MXNet, scala -> Scala (#16041)
+ - New Website: Remove Old Content [2/3] (#15885)
+ - New Website: New Pipeline [3/3] (#15883)
+ - Update KL Divergence formula (#16170)
+ - fix broken links (#16255)
+ - redirect to the 404 page (#16287)
+ - add google-analytics config (#16271)
+ - Fixing links for website + Fixing search (#16284)
+ - Minor fix in ToTensor documentation. (#16299)
+ - adding redirects so that old website API links surfaced from searches (#16342)
+ - Fix code block formatting in Why MXNet doc page (#16334)
+ - Julia: add API docs back (#16363)
+ - Change mailing list url in footer to point to instructions about how to subscribe instead (#16384)
+ - Add instructions to report a security vulnerability (#16383)
+ - [DOC] fix installation selector wrong history (#16381)
+ - Beta build (#16411)
+ - [WIP] Improving Python Docs API (#16392)
+ - fix autodoc for spurrious toggles (#16452)
+ - [Doc] Update the download page with 1.5.1 release (#16442)
+ - Fixing broken links (#16500)
+ - add binary and docs build command options (#16514)
+ - add option to remove indexes (#16525)
+ - Correct Google Analytics Tracker (#16490)
+ - [Doc] Use mirror link in the download page (#16501)
+ - checking broken link fixes work (#16538)
+ - detect number of procs during sphinx build (#16512)
+ - fixed broken links across multiple files (#16581)
+ - fix missing docs due to git add issues (#16496)
+ - second round of fixing broken links in multiple files (#16598)
+ - Python Docstring Convetion (#16550)
+ - [MXNET-1434] Fix a broken link for basic C++ tutorial (#16461)
+ - Fix python doc build issue (#16630)
+ - fixing broken links in multiple files - round 3 (#16634)
+
+### CI/CD
+
+ - Fix build_ccache_wrappers: (#14631)
+ - Remove mhard-float option. This is already deprecated by Google. (#15435)
+ - CI: upgrade Julia version from 1.0.3 to 1.0.4 (#15502)
+ - Add -R option to ci/build.py to avoid rebuilding containers (#15426)
+ - [Dependency Update] Bump up the CI Nvidia docker to CUDA 10.1 (#14986)
+ - fixed config.mk and Makefile bugs for installing mkl (#15424)
+ - Add -DMXNET_USE_OPENMP to Makefiles so libinfo gets updated accordingly (#15498)
+ - [Dependency Update] Dependency update doc (#15045)
+ - Remove Scala package test on build (#15915)
+ - Refactor for windows CI 'out of heap space' errors (#15922)
+ - Fix Nightly Maven GPU (#15989)
+ - Windows cmake flags cleanup (#16013)
+ - Disable flaky test in test_amp_conversion (#16031)
+ - Updates git_init Jenkins utility function to support checking out a particular commit id
+ - Adds artifact repository scripts
+ - Adds CD pipeline framework
+ - Adds static libmxnet release pipeline
+ - Updates CD pipeline
+ - Adds documentation
+ - Updates kvstore functions to use pushd and popd
+ - Throws exceptions instead o magic numbers
+ - Updates artifact repository cli to use --libtype instead of --static or --dynamic
+ - Clarifies ci_utils and cd_utils origin remark
+ - Adds clarifying note on why ubuntu 14.04 is being used for compilation
+ - Removes MXNET_SHA
+ - Removes set_release_job_name
+ - Adds license headers
+ - Updates artifact repository to expect licenses
+ - Moves ci/cd to cd directory
+ - Takes downstream job name from environment
+ - Updates order of parameters
+ - Updates job type parameter to dropdown
+ - Adds libmxnet feature extraction code comments
+ - Removes ccache setup from static build
+ - Disable test coverage of C++ codebase on CI  (#15981)
+ - Update readme and project.clj comment (#16084)
+ - Enable tvm_op for ci (#15889)
+ - Not to search for coverage files when none exist (#16107)
+ - Fixes openblas installation for static build
+ - Update python dependencies (#16105)
+ - CD Fixes (#16127)
+ - Adds dynamic libmxnet to CD pipeline (#16163)
+ - Fix README Build Status (#16183)
+ - subscribe to build and CD changes (#16192)
+ - [CD] Add COMMIT_ID param to release job (#16202)
+ - Fix lack of dylib support in Makefile when use lapack (#15813)
+ - Removes git status update stop gap solution (#16285)
+ - add mkl installation temp fix (#16304)
+ - add 'Release' cmake flag (#16294)
+ - S3 upload artifacts (#16336)
+ - Fix nightly scala pipeline (#16362)
+ - remove redundant branch name (#16372)
+ - Skipping installing nightly test (#16418)
+ - Adds PyPI CD Pipeline (#16190)
+ - upgrade the pytest version (#16429)
+ - Revert "add mkl installation temp fix (#16304)" (#16369)
+ - increase docker cache timeout (#16430)
+ - Adds pip requirements file to nightly gpu ci image (#16472)
+ - [CD] Adds python docker pipeline (#16547)
+ - Move imagenet inference to nightly (#16577)
+ - Backport #16980 #17031 #17018 #17019 to 1.6 branch (#17213)
+
+### Misc
+
+ - update committer info (#15289)
+ - Typo fix in plan_memory relase -> release. (#15299)
+ - indent changes (#15321)
+ - Had a few PRs merged. Hope to become an official contributor and potentially a commiter. (#15451)
+ - cuda/cuDNN lib version checking.  Force cuDNN v7 usage. (#15449)
+ - Improve diagnose.py, adding build features info and binary library path. (#15499)
+ - update ratcheck for apache-rat 0.13 release (#15417)
+ - add myself to interested modules (#15590)
+ - 1.5.0 news (#15137)
+ - bump up version from 1.5.0 to 1.6.0 on master (#15072)
+ - Remove myself from CODEOWNERS (#15617)
+ - remove mshadow submodule
+ - import mshadow source tree
+ - cuDNN support cleanup (#15812)
+ - Remove requests_failed_to_import handling
+ - Update CODEOWNERS. (#15972)
+ - Improve diagnose.py to display environment variables (#15715)
+ - Update README.md (#16035)
+ - [Dev] update ps-lite dependency (#15936)
+ - Typedef cleanup (#15899)
+ - add KEY for Tao Lv (#16081)
+ - remove 'foo' and other print msg from test (#16088)
+ - Revert accidental change to CMakelists (#16040)
+ - Update env_var.md (#16145)
+ - Update dmlc-core (#16149)
+ - adding codeowners (#16165)
+ - Factorize CUDA_KERNEL_LOOP used in CUDA kernels (#16197)
+ - add code of conduct and conflict resolution (#16343)
+ - simple typo error in NEWS.md (#16344)
+ - update NEWS.md and README.md (#16385)
+ - split issue templates (#16558)
+ - Create SECURITY.md (#16573)
 
 ## 1.5.1
 Apache MXNet (incubating) 1.5.1 is a maintenance release incorporating important bug fixes and important performance improvements. All users of Apache MXNet (incubating) 1.5.0 are advised to upgrade. You can install Apache MXNet (incubating) 1.5.1 at the usual place. Please review these Release Notes to learn the bug fixes.
@@ -228,9 +1424,9 @@ Apache MXNet (incubating) 1.5.1 is a maintenance release incorporating important
 ### New Features
 
 #### Automatic Mixed Precision(experimental)
-Training Deep Learning networks is a very computationally intensive task. Novel model architectures tend to have increasing numbers of layers and parameters, which slow down training. Fortunately, software optimizations and new generations of training hardware make it a feasible task. 
+Training Deep Learning networks is a very computationally intensive task. Novel model architectures tend to have increasing numbers of layers and parameters, which slow down training. Fortunately, software optimizations and new generations of training hardware make it a feasible task.
 However, most of the hardware and software optimization opportunities exist in exploiting lower precision (e.g. FP16) to, for example, utilize Tensor Cores available on new Volta and Turing GPUs. While training in FP16 showed great success in image classification tasks, other more complicated neural networks typically stayed in FP32 due to difficulties in applying the FP16 training guidelines.
-That is where AMP (Automatic Mixed Precision) comes into play. It automatically applies the guidelines of FP16 training, using FP16 precision where it provides the most benefit, while conservatively keeping in full FP32 precision operations unsafe to do in FP16. To learn more about AMP, check out this [tutorial](https://github.com/apache/incubator-mxnet/blob/master/docs/tutorials/amp/amp_tutorial.md). 
+That is where AMP (Automatic Mixed Precision) comes into play. It automatically applies the guidelines of FP16 training, using FP16 precision where it provides the most benefit, while conservatively keeping in full FP32 precision operations unsafe to do in FP16. To learn more about AMP, check out this [tutorial](https://github.com/apache/incubator-mxnet/blob/master/docs/tutorials/amp/amp_tutorial.md).
 
 #### MKL-DNN Reduced precision inference and RNN API support
 Two advanced features, fused computation and reduced-precision kernels, are introduced by MKL-DNN in the recent version. These features can significantly speed up the inference performance on CPU for a broad range of deep learning topologies. MXNet MKL-DNN backend provides optimized implementations for various operators covering a broad range of applications including image classification, object detection, and natural language processing. Refer to the [MKL-DNN operator documentation](ht [...]
@@ -245,13 +1441,13 @@ Note: Currently dynamic shape does not work with Gluon deferred initialization.
 
 #### Large Tensor Support
 Currently, MXNet supports maximal tensor size of around 4 billon (2^32). This is due to uint32_t being used as the default data type for tensor size, as well as variable indexing.
-This limitation has created many problems when larger tensors are used in the model. 
+This limitation has created many problems when larger tensors are used in the model.
 A naive solution to this problem is to replace all uint32_t in the MXNet backend source code to int64_t.
 This solution is not viable, however, because many data structures use uint32_t as the data type for its members.
-Unnecessarily replacing these variables to int64_t will increase the memory consumption causing another limitation. Second, MXNet has many submodule dependencies. 
-Updating the variable types in the MXNet repository is not enough. We also need to make sure different libraries, such as MKLDNN, MShadow etc. supports the int64_t integer data type. 
+Unnecessarily replacing these variables to int64_t will increase the memory consumption causing another limitation. Second, MXNet has many submodule dependencies.
+Updating the variable types in the MXNet repository is not enough. We also need to make sure different libraries, such as MKLDNN, MShadow etc. supports the int64_t integer data type.
 Third, many front end APIs assume unsigned 32-bit integer interface. Only updating the interface in C/C++ will cause all the language bindings to fail.
-Therefore, we need a systematic approach to enhance MXNet to support large tensors. 
+Therefore, we need a systematic approach to enhance MXNet to support large tensors.
 Now you can enable large tensor support by changing the following build flag to 1: `USE_INT64_TENSOR_SIZE = 1`. Note this is set to 0 by default.
 For more details please refer to the [design document](https://cwiki.apache.org/confluence/display/MXNET/Large+Tensor+Support).
 
@@ -260,7 +1456,7 @@ MXNet has added support for CUDA 10, CUDA 10.1, cudnn7.5, NCCL 2.4.2, and numpy
 These updates are available through PyPI packages and build from source, refer to [installation guide](https://mxnet.apache.org/versions/master/install/index.html) for more details.
 
 #### Gluon Fit API(experimental)
-Training a model in Gluon requires users to write the training loop. This is useful because of its imperative nature, however repeating the same code across multiple models can become tedious and repetitive with boilerplate code. 
+Training a model in Gluon requires users to write the training loop. This is useful because of its imperative nature, however repeating the same code across multiple models can become tedious and repetitive with boilerplate code.
 The training loop can also be overwhelming to some users new to deep learning. We have introduced an Estimator and Fit API to help facilitate training loop.
 Note: this feature is still experimental, for more details, refer to [design document](https://cwiki.apache.org/confluence/display/MXNET/Gluon+Fit+API+-+Tech+Design).
 
@@ -521,7 +1717,7 @@ Note: this feature is still experimental, for more details, refer to [design doc
 * Update inception_inference.cpp (#14674)
 * Optimize C++ API (#13496)
 
-#### Clojure 
+#### Clojure
 * [Clojure] - Add Spec Validations to the Optimizer namespace (#13499)
 * [Clojure] Add Spec Validations for the Random namespace (#13523)
 * [Clojure] Correct the versions in the README so they correspond to the latest maven.org release ([#13507)
@@ -1093,38 +2289,38 @@ Apache MXNet (incubating) 1.4.1 is a maintenance release incorporating important
 
 ## 1.4.0
 
-- [New Features](#new-features)
+- [New Features](#new-features-2)
   * [Java Inference API](#java-inference-api)
   * [Julia API](#julia-api)
-  * [Control Flow Operators (experimental)](#control-flow-operators--experimental-)
+  * [Control Flow Operators (experimental)](#control-flow-operators-experimental)
   * [SVRG Optimization](#svrg-optimization)
-  * [Subgraph API (experimental)](#subgraph-api--experimental-)
+  * [Subgraph API (experimental)](#subgraph-api-experimental)
   * [JVM Memory Management](#jvm-memory-management)
-  * [Topology-aware AllReduce (experimental)](#topology-aware-allreduce--experimental-)
-  * [MKLDNN backend: Graph optimization and Quantization (experimental)](#mkldnn-backend--graph-optimization-and-quantization--experimental-)
+  * [Topology-aware AllReduce (experimental)](#topology-aware-allreduce-experimental)
+  * [MKLDNN backend: Graph optimization and Quantization (experimental)](#mkldnn-backend--graph-optimization-and-quantization-experimental)
     + [Graph Optimization](#graph-optimization)
     + [Quantization](#quantization)
-- [New Operators](#new-operators)
-- [Feature improvements](#feature-improvements)
+- [New Operators](#new-operators-3)
+- [Feature improvements](#feature-improvements-3)
   * [Operator](#operator)
   * [Optimizer](#optimizer)
   * [Sparse](#sparse)
   * [ONNX](#onnx)
-  * [MKLDNN](#mkldnn)
+  * [MKLDNN](#mkldnn-2)
   * [Inference](#inference)
   * [Other](#other)
 - [Frontend API updates](#frontend-api-updates)
-  * [Gluon](#gluon)
-  * [Symbol](#symbol)
+  * [Gluon](#gluon-2)
+  * [Symbol](#symbol-1)
 - [Language API updates](#language-api-updates)
   * [Java](#java)
   * [R](#r)
-  * [Scala](#scala)
-  * [Clojure](#clojure)
-  * [Perl](#perl)
-  * [Julia](#julia)
+  * [Scala](#scala-2)
+  * [Clojure](#clojure-2)
+  * [Perl](#perl-2)
+  * [Julia](#julia-2)
 - [Performance benchmarks and improvements](#performance-benchmarks-and-improvements)
-- [Bug fixes](#bug-fixes)
+- [Bug fixes](#bug-fixes-4)
 - [Licensing updates](#licensing-updates)
 - [Improvements](#improvements)
   * [Tutorial](#tutorial)
@@ -1135,9 +2331,9 @@ Apache MXNet (incubating) 1.4.1 is a maintenance release incorporating important
   * [Installation](#installation)
   * [Build and CI](#build-and-ci)
   * [3rd party](#3rd-party)
-    + [TVM:](#tvm-)
-    + [CUDNN:](#cudnn-)
-    + [Horovod:](#horovod-)
+    + [TVM:](#tvm)
+    + [CUDNN:](#cudnn)
+    + [Horovod:](#horovod)
 - [Deprications](#deprications)
 - [Other](#other-1)
 - [How to build MXNet](#how-to-build-mxnet)
@@ -1668,20 +2864,20 @@ Submodule@commit ID::Last updated by MXNet:: Last update in submodule
 
 ### Bug fixes
 
-* [MXNET-953] Fix oob memory read (v1.3.x) / [#13118](https://github.com/apache/incubator-mxnet/pull/13118)  
+* [MXNET-953] Fix oob memory read (v1.3.x) / [#13118](https://github.com/apache/incubator-mxnet/pull/13118)
 Simple bugfix addressing an out-of-bounds memory read.
 
 
-* [MXNET-969] Fix buffer overflow in RNNOp (v1.3.x) / [#13119](https://github.com/apache/incubator-mxnet/pull/13119)  
+* [MXNET-969] Fix buffer overflow in RNNOp (v1.3.x) / [#13119](https://github.com/apache/incubator-mxnet/pull/13119)
 This fixes an buffer overflow detected by ASAN.
 
 
-* CudnnFind() usage improvements (v1.3.x) / [#13123](https://github.com/apache/incubator-mxnet/pull/13123)  
+* CudnnFind() usage improvements (v1.3.x) / [#13123](https://github.com/apache/incubator-mxnet/pull/13123)
   This PR improves the MXNet's use of cudnnFind() to address a few issues:
   1. With the gluon imperative style, cudnnFind() is called during forward(), and so might have its timings perturbed by other GPU activity (including potentially other cudnnFind() calls).
   2. With some cuda drivers versions, care is needed to ensure that the large I/O and workspace cudaMallocs() performed by cudnnFind() are immediately released and available to MXNet.
-  3. cudnnFind() makes both conv I/O and workspace allocations that must be covered by the GPU global memory headroom defined by MXNET_GPU_MEM_POOL_RESERVE. Per issue #12662, large convolutions can result in out-of-memory errors, even when MXNet's storage allocator has free memory in its pool.  
-  
+  3. cudnnFind() makes both conv I/O and workspace allocations that must be covered by the GPU global memory headroom defined by MXNET_GPU_MEM_POOL_RESERVE. Per issue #12662, large convolutions can result in out-of-memory errors, even when MXNet's storage allocator has free memory in its pool.
+
   This PR addresses these issues, providing the following benefits:
   1. Consistent algo choice for a given convolution type in a model, both for instances in the same GPU and in other GPUs in a multi-GPU training setting.
   2. Consistent algo choice from run to run, based on eliminating sources of interference of the cudnnFind() timing process.
@@ -1689,38 +2885,38 @@ This fixes an buffer overflow detected by ASAN.
   4. Increased training performance based on being able to consistently run with models that approach the GPU's full global memory footprint.
   5. Adds a unittest for and solves issue #12662.
 
-* [MXNET-922] Fix memleak in profiler (v1.3.x) / [#13120](https://github.com/apache/incubator-mxnet/pull/13120)  
+* [MXNET-922] Fix memleak in profiler (v1.3.x) / [#13120](https://github.com/apache/incubator-mxnet/pull/13120)
   Fix a memleak reported locally by ASAN during a normal inference test.
 
-* Fix lazy record io when used with dataloader and multi_worker > 0 (v1.3.x) / [#13124](https://github.com/apache/incubator-mxnet/pull/13124)  
+* Fix lazy record io when used with dataloader and multi_worker > 0 (v1.3.x) / [#13124](https://github.com/apache/incubator-mxnet/pull/13124)
   Fixes multi_worker data loader when record file is used. The MXRecordIO instance needs to require a new file handler after fork to be safely manipulated simultaneously.
 
   This fix also safely voids the previous temporary fixes #12093 #11370.
 
-* fixed symbols naming in RNNCell, LSTMCell, GRUCell (v1.3.x) / [#13158](https://github.com/apache/incubator-mxnet/pull/13158)  
+* fixed symbols naming in RNNCell, LSTMCell, GRUCell (v1.3.x) / [#13158](https://github.com/apache/incubator-mxnet/pull/13158)
   This fixes #12783, by assigning all nodes in hybrid_forward a unique name. Some operations were in fact performed without attaching the appropriate (time) prefix to the name, which makes serialized graphs non-deserializable.
 
-* Fixed `__setattr__` method of `_MXClassPropertyMetaClass` (v1.3.x) / [#13157](https://github.com/apache/incubator-mxnet/pull/13157)  
+* Fixed `__setattr__` method of `_MXClassPropertyMetaClass` (v1.3.x) / [#13157](https://github.com/apache/incubator-mxnet/pull/13157)
   Fixed `__setattr__` method
 
-* allow foreach on input with 0 length (v1.3.x) / [#13151](https://github.com/apache/incubator-mxnet/pull/13151)  
+* allow foreach on input with 0 length (v1.3.x) / [#13151](https://github.com/apache/incubator-mxnet/pull/13151)
   Fix #12470. With this change, outs shape can be inferred correctly.
 
-* Infer dtype in SymbolBlock import from input symbol (v1.3.x) / [#13117](https://github.com/apache/incubator-mxnet/pull/13117)  
-  Fix for the issue - #11849  
-  Currently, Gluon symbol block cannot import any symbol with type other than fp32. All the parameters are created as FP32 leading to failure in importing the params when it is of type fp16, fp64 etc,  
-  In this PR, we infer the type of the symbol being imported and create the Symbol Block Parameters with that inferred type.  
+* Infer dtype in SymbolBlock import from input symbol (v1.3.x) / [#13117](https://github.com/apache/incubator-mxnet/pull/13117)
+  Fix for the issue - #11849
+  Currently, Gluon symbol block cannot import any symbol with type other than fp32. All the parameters are created as FP32 leading to failure in importing the params when it is of type fp16, fp64 etc,
+  In this PR, we infer the type of the symbol being imported and create the Symbol Block Parameters with that inferred type.
   Added the tests
 
 ### Documentation fixes
 
-* Document the newly added env variable (v1.3.x) / [#13156](https://github.com/apache/incubator-mxnet/pull/13156)  
+* Document the newly added env variable (v1.3.x) / [#13156](https://github.com/apache/incubator-mxnet/pull/13156)
   Document the env variable: MXNET_ENFORCE_DETERMINISM added in PR: [#12992](https://github.com/apache/incubator-mxnet/pull/12992)
 
-* fix broken links (v1.3.x) / [#13155](https://github.com/apache/incubator-mxnet/pull/13155)  
+* fix broken links (v1.3.x) / [#13155](https://github.com/apache/incubator-mxnet/pull/13155)
   This PR fixes broken links on the website.
 
-* fix broken Python IO API docs (v1.3.x) / [#13154](https://github.com/apache/incubator-mxnet/pull/13154)  
+* fix broken Python IO API docs (v1.3.x) / [#13154](https://github.com/apache/incubator-mxnet/pull/13154)
   Fixes [#12854: Data Iterators documentation is broken](https://github.com/apache/incubator-mxnet/issues/12854)
 
   This PR manually specifies members of the IO module so that the docs will render as expected. This is workaround in the docs to deal with a bug introduced in the Python code/structure since v1.3.0. See the comments for more info.
@@ -1729,7 +2925,7 @@ This fixes an buffer overflow detected by ASAN.
 
   This is important for any future modules - that they recognize this issue and make efforts to map the params and other elements.
 
-* add/update infer_range docs (v1.3.x) / [#13153](https://github.com/apache/incubator-mxnet/pull/13153)  
+* add/update infer_range docs (v1.3.x) / [#13153](https://github.com/apache/incubator-mxnet/pull/13153)
   This PR adds or updates the docs for the infer_range feature.
 
   Clarifies the param in the C op docs
@@ -1740,13 +2936,13 @@ This fixes an buffer overflow detected by ASAN.
 
 ### Other Improvements
 
-* [MXNET-1179] Enforce deterministic algorithms in convolution layers (v1.3.x) / [#13152](https://github.com/apache/incubator-mxnet/pull/13152)  
+* [MXNET-1179] Enforce deterministic algorithms in convolution layers (v1.3.x) / [#13152](https://github.com/apache/incubator-mxnet/pull/13152)
   Some of the CUDNN convolution algorithms are non-deterministic (see issue #11341). This PR adds an env variable to enforce determinism in the convolution operators. If set to true, only deterministic CUDNN algorithms will be used. If no deterministic algorithm is available, MXNet will error out.
 
 
 ### Submodule updates
 
-* update mshadow (v1.3.x) / [#13122](https://github.com/apache/incubator-mxnet/pull/13122)  
+* update mshadow (v1.3.x) / [#13122](https://github.com/apache/incubator-mxnet/pull/13122)
   Update mshadow for omp acceleration when nvcc is not present
 
 ### Known issues
@@ -1871,7 +3067,7 @@ For more information and examples, see [full release notes](https://cwiki.apache
 - CTC operator performance improvement from HawkAaron/MXNet-CTC (#11834)
 - Improve performance of broadcast ops backward pass (#11252)
 - Improved numerical stability as a result of using stable L2 norm (#11573)
-- Accelerate the performance of topk for GPU and CPU side (#12085 #10997 ; This changes the behavior of topk when nan values occur in the input) 
+- Accelerate the performance of topk for GPU and CPU side (#12085 #10997 ; This changes the behavior of topk when nan values occur in the input)
 - Support for dot(dns, csr) = dns and dot(dns, csr.T) = dns on CPU ([#11113](https://github.com/apache/incubator-mxnet/pull/11113))
 - Performance improvement for Batch Dot on CPU from mshadow ([mshadow PR#342](https://github.com/dmlc/mshadow/pull/342))
 
diff --git a/R-package/README.md b/R-package/README.md
index 68996b0..24135b1 100644
--- a/R-package/README.md
+++ b/R-package/README.md
@@ -1,3 +1,20 @@
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+<!--- -->
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+<!--- -->
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
 <img src=https://raw.githubusercontent.com/dmlc/dmlc.github.io/master/img/logo-m/mxnetR.png width=155/> Deep Learning for R
 ==========================
 
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_jekyll b/ci/docker/Dockerfile.build.ubuntu_cpu_jekyll
index 88815d7..bc91286 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_jekyll
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_jekyll
@@ -28,6 +28,7 @@ RUN apt-get update && apt-get install -y \
       build-essential \
       git \
       zlib1g-dev \
+      wget \
       gnupg2 \
       curl
 
diff --git a/docs/python_docs/_static/feedback.css b/docs/python_docs/_static/feedback.css
new file mode 100644
index 0000000..b4a64ec
--- /dev/null
+++ b/docs/python_docs/_static/feedback.css
@@ -0,0 +1,37 @@
+.feedback-container {
+  text-align: center;
+}
+
+.feedback-answer-container {
+  display: inline-block;
+}
+
+.feedback-question {
+  display: inline-block;
+  padding: 0.5em 1em 0.5em 1em;
+}
+
+.feedback-answer {
+  display: inline-block;
+  padding: 0.5em 1em 0.5em 1em;
+  color: #048ccc;
+  cursor: pointer;
+}
+
+.feedback-answer:hover {
+  color: #ffffff;
+  background-color: #048ccc;
+}
+
+.feedback-thank-you {
+  display: none;
+  padding: 0.5em 1em 0.5em 1em;
+}
+
+.feedback-hr-top {
+  margin-top: 50px;
+}
+
+.feedback-hr-bottom {
+  margin-bottom: 30px;
+}
diff --git a/docs/python_docs/_static/feedback.js b/docs/python_docs/_static/feedback.js
new file mode 100644
index 0000000..f454237
--- /dev/null
+++ b/docs/python_docs/_static/feedback.js
@@ -0,0 +1,33 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+$(document).ready(function() {
+  $(".feedback-answer").on("click", function () {
+    $(".feedback-question").remove();
+    $(".feedback-answer-container").remove();
+    $(".feedback-thank-you").show();
+    ga("send", {
+      hitType: "event",
+      eventCategory: "Did this page help you?",
+      eventAction: $(this).attr("data-response"),
+      eventLabel: window.location.pathname || "unknown",
+      eventValue: $(this).attr("data-response") === "yes" ? 1 : 0
+    });
+  });
+});
diff --git a/docs/python_docs/_static/mxnet.css b/docs/python_docs/_static/mxnet.css
index 7d4f7f1..08415c8 100644
--- a/docs/python_docs/_static/mxnet.css
+++ b/docs/python_docs/_static/mxnet.css
@@ -53,7 +53,7 @@
 }
 
 .mdl-layout__header-row {
-    height: 84px !important;
+    height: 80px !important;
 }
 
 .mdl-shadow--2dp {
@@ -203,4 +203,8 @@ p {
     float: right;
     margin: 4px;
     cursor: pointer;
-}
\ No newline at end of file
+}
+
+.scrollUp {
+    transform: translateY(-80px);
+}
diff --git a/docs/python_docs/python/api/gluon/index.rst b/docs/python_docs/python/api/gluon/index.rst
index c08e8aa..cf76ef4 100644
--- a/docs/python_docs/python/api/gluon/index.rst
+++ b/docs/python_docs/python/api/gluon/index.rst
@@ -49,7 +49,7 @@ Tutorials
 
    .. card::
       :title: Gluon Guide
-      :link: ../tutorials/packages/gluon/index.html
+      :link: ../../tutorials/packages/gluon/index.html
 
       The Gluon guide. Start here!
 
diff --git a/docs/python_docs/python/tutorials/deploy/inference/image_classification_jetson.md b/docs/python_docs/python/tutorials/deploy/inference/image_classification_jetson.md
new file mode 100644
index 0000000..299a40f
--- /dev/null
+++ b/docs/python_docs/python/tutorials/deploy/inference/image_classification_jetson.md
@@ -0,0 +1,117 @@
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Image Classication using pretrained ResNet-50 model on Jetson module
+
+This tutorial shows how to install MXNet v1.x with Jetson support and use it to deploy a pre-trained MXNet model for image classification on a Jetson module.
+
+## What's in this tutorial?
+
+This tutorial shows how to:
+
+1. Install MXNet v1.x along with its dependencies on a Jetson module (This tutorial has been tested on Jetson Xavier AGX and Jetson Nano modules)
+
+2. Deploy a pre-trained MXNet model for image classifcation on the module
+
+## Who's this tutorial for?
+
+This tutorial would benefit developers working on Jetson modules implementing deep learning applications. It assumes that readers have a Jetson module setup with Jetpack installed, are familiar with the Jetson working environment and are somewhat familiar with deep learning using MXNet.
+
+## Prerequisites
+
+To complete this tutorial, you need:
+
+* A [Jetson module](https://developer.nvidia.com/embedded/develop/hardware) setup with [Jetpack 4.4](https://docs.nvidia.com/jetson/jetpack/release-notes/) installed using NVIDIA [SDK Manager](https://developer.nvidia.com/nvidia-sdk-manager)
+
+* An SSH connection to the module OR display and keyboard setup to directly open shell on the module
+
+* [Swapfile](https://help.ubuntu.com/community/SwapFaq) installed, especially on Jetson Nano for additional memory (increase memory if the inference script terminates with a `Killed` message)
+
+## Installing MXNet v1.x with Jetson support
+
+To install MXNet with Jetson support, you can follow the [installation guide](https://mxnet.apache.org/get_started/jetson_setup) on MXNet official website.
+
+Alternatively, you can also directly install MXNet v1.6 wheel with Jetson support, hosted on a public s3 bucket. Here are the steps to install this wheel:
+
+*WARNING: this MXNet wheel is provided for your convenience but it contains packages that are not provided nor endorsed by the Apache Software Foundation.
+As such, they might contain software components with more restrictive licenses than the Apache License and you'll need to decide whether they are appropriate for your usage. Like all Apache Releases, the
+official Apache MXNet (incubating) releases consist of source code only and are found at https://mxnet.apache.org/get_started/download .*
+
+We start by installing MXNet dependencies
+```bash
+sudo apt-get update
+sudo apt-get install -y git build-essential libopenblas-dev libopencv-dev python3-pip
+sudo pip3 install -U pip
+```
+
+Then we download and install MXNet v1.6 wheel with Jetson support
+```bash
+wget https://mxnet-public.s3.us-east-2.amazonaws.com/install/jetson/1.6.0/mxnet_cu102-1.6.0-py2.py3-none-linux_aarch64.whl
+sudo pip3 install mxnet_cu102-1.6.0-py2.py3-none-linux_aarch64.whl
+```
+
+And we are done. You can test the installation now by importing mxnet from python3
+```bash
+>>> python3 -c 'import mxnet'
+```
+
+## Running a pre-trained ResNet-50 model on Jetson
+
+We are now ready to run a pre-trained model and run inference on a Jetson module. In this tutorial we are using ResNet-50 model trained on Imagenet dataset. We run the following classification script with either cpu/gpu context using python3.
+
+```python
+from mxnet import gluon
+import mxnet as mx
+
+# set context
+ctx = mx.gpu()
+
+# load pre-trained model
+net = gluon.model_zoo.vision.resnet50_v1(pretrained=True, ctx=ctx)
+net.hybridize(static_alloc=True, static_shape=True)
+
+# load labels
+lbl_path = gluon.utils.download('http://data.mxnet.io/models/imagenet/synset.txt')
+with open(lbl_path, 'r') as f:
+    labels = [l.rstrip() for l in f]
+
+# download and format image as (batch, RGB, width, height)
+img_path = gluon.utils.download('https://github.com/dmlc/web-data/blob/master/mxnet/doc/tutorials/python/predict_image/cat.jpg?raw=true')
+img = mx.image.imread(img_path)
+img = mx.image.imresize(img, 224, 224) # resize
+img = mx.image.color_normalize(img.astype(dtype='float32')/255,
+                               mean=mx.nd.array([0.485, 0.456, 0.406]),
+                               std=mx.nd.array([0.229, 0.224, 0.225])) # normalize
+img = img.transpose((2, 0, 1)) # channel first
+img = img.expand_dims(axis=0) # batchify
+img = img.as_in_context(ctx)
+
+prob = net(img).softmax() # predict and normalize output
+idx = prob.topk(k=5)[0] # get top 5 result
+for i in idx:
+    i = int(i.asscalar())
+    print('With prob = %.5f, it contains %s' % (prob[0,i].asscalar(), labels[i]))
+```
+
+After running the above script, you should get the following output showing the five classes that the image most relates to with probability:
+```bash
+With prob = 0.41940, it contains n02119789 kit fox, Vulpes macrotis
+With prob = 0.28096, it contains n02119022 red fox, Vulpes vulpes
+With prob = 0.06857, it contains n02124075 Egyptian cat
+With prob = 0.03046, it contains n02120505 grey fox, gray fox, Urocyon cinereoargenteus
+With prob = 0.02770, it contains n02441942 weasel
+```
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/feedback.html b/docs/python_docs/themes/mx-theme/mxtheme/feedback.html
new file mode 100644
index 0000000..8a9b1b5
--- /dev/null
+++ b/docs/python_docs/themes/mx-theme/mxtheme/feedback.html
@@ -0,0 +1,10 @@
+<hr class="feedback-hr-top" />
+<div class="feedback-container">
+    <div class="feedback-question">Did this page help you?</div>
+    <div class="feedback-answer-container">
+        <div class="feedback-answer yes-link" data-response="yes">Yes</div>
+        <div class="feedback-answer no-link" data-response="no">No</div>
+    </div>
+    <div class="feedback-thank-you">Thanks for your feedback!</div>
+</div>
+<hr class="feedback-hr-bottom" />
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/header_top.html b/docs/python_docs/themes/mx-theme/mxtheme/header_top.html
index 3d16e1e..f87d6c0 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/header_top.html
+++ b/docs/python_docs/themes/mx-theme/mxtheme/header_top.html
@@ -19,6 +19,24 @@
         <a class="page-link" href="{{theme_relative_url}}ecosystem">Ecosystem</a>
         <a class="page-link page-current" href="{{theme_relative_url}}api">Docs & Tutorials</a>
         <a class="page-link" href="https://github.com/apache/incubator-mxnet">GitHub</a>
+        <div class="dropdown">
+          <span class="dropdown-header">1.7
+            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
+          </span>
+          <div class="dropdown-content">
+            <a class="dropdown-option" href="/">master</a><br>
+            <a class="dropdown-option-active" href="/versions/1.7/">1.7</a><br>
+            <a class="dropdown-option" href="/versions/1.6/">1.6</a><br>
+            <a class="dropdown-option" href="/versions/1.5.0/">1.5.0</a><br>
+            <a class="dropdown-option" href="/versions/1.4.1/">1.4.1</a><br>
+            <a class="dropdown-option" href="/versions/1.3.1/">1.3.1</a><br>
+            <a class="dropdown-option" href="/versions/1.2.1/">1.2.1</a><br>
+            <a class="dropdown-option" href="/versions/1.1.0/">1.1.0</a><br>
+            <a class="dropdown-option" href="/versions/1.0.0/">1.0.0</a><br>
+            <a class="dropdown-option" href="/versions/0.12.1/">0.12.1</a><br>
+            <a class="dropdown-option" href="/versions/0.11.0/">0.11.0</a>
+          </div>
+        </div>
       </div>
     </nav>
   </div>
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/layout.html b/docs/python_docs/themes/mx-theme/mxtheme/layout.html
index 8c3f01b..994da38 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/layout.html
+++ b/docs/python_docs/themes/mx-theme/mxtheme/layout.html
@@ -7,6 +7,54 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
+    <style>
+    .dropdown {
+        position: relative;
+        display: inline-block;
+    }
+
+    .dropdown-content {
+        display: none;
+        position: absolute;
+        background-color: #f9f9f9;
+        min-width: 160px;
+        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+        padding: 12px 16px;
+        z-index: 1;
+        text-align: left;
+    }
+
+    .dropdown:hover .dropdown-content {
+        display: block;
+    }
+
+    .dropdown-option:hover {
+        color: #FF4500;
+    }
+
+    .dropdown-option-active {
+        color: #FF4500;
+        font-weight: lighter;
+    }
+
+    .dropdown-option {
+        color: #000000;
+        font-weight: lighter;
+    }
+
+    .dropdown-header {
+        color: #FFFFFF;
+        display: inline-flex;
+    }
+
+    .dropdown-caret {
+        width: 18px;
+    }
+
+    .dropdown-caret-path {
+        fill: #FFFFFF;
+    }
+    </style>
     {{ super() }}
 {% endblock %}
 
@@ -16,10 +64,12 @@
     '_static/sphinx_materialdesign_theme.css',
     '_static/fontawesome/all.css',
     '_static/fonts.css',
+    '_static/feedback.css',
 ] %}
 
     {%- block header %}
-	<script type="text/javascript" src="{{ pathto('_static/sphinx_materialdesign_theme.js', 1) }} "></script>
+        <script type="text/javascript" src="{{ pathto('_static/sphinx_materialdesign_theme.js', 1) }} "></script>
+        <script type="text/javascript" src="{{ pathto('_static/feedback.js', 1) }}"></script>
     {% endblock %}
 {%- block relbar1 %}{% endblock %}
 {%- block relbar2 %}{% include "relations.html" %}{% endblock %}
@@ -37,6 +87,7 @@
 {%- block document %}
         <div class="page-content" role="main">
         {% block body %} {% endblock %}
+        {% include "feedback.html" %}
         </div>
         <div class="side-doc-outline">
             <div class="side-doc-outline--content">
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css
index cb26a38..58f7c2f 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css
+++ b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css
@@ -1,2 +1,2 @@
-.admonition,.mdl-shadow--2dp,.page-content pre:hover,.page-content table:not(.footnote):not(.indextable):not(.hlist):not(.option-list):not(.field-list){box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-shadow--3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-shadow--4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-shadow--6 [...]
+.admonition,.mdl-shadow--2dp,.page-content pre:hover,.page-content table:not(.footnote):not(.indextable):not(.hlist):not(.option-list):not(.field-list){box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-shadow--3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-shadow--4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-shadow--6 [...]
 /*# sourceMappingURL=/sphinx_materialdesign_theme.css.map */
\ No newline at end of file
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map
index 61d1180..aaab114 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map
+++ b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../node_modules/material-design-lite/src/shadow/_shadow.scss","../../node_modules/material-design-lite/src/_mixins.scss","../../node_modules/material-design-lite/src/data-table/_data-table.scss","../../node_modules/material-design-lite/src/_variables.scss","../../node_modules/material-design-lite/src/footer/_mini_footer.scss","../../node_modules/material-design-lite/src/card/_card.scss","../../node_modules/material-design-lite/src/button/_button.scss","../scss [...]
\ No newline at end of file
+{"version":3,"sources":["../../node_modules/material-design-lite/src/shadow/_shadow.scss","../../node_modules/material-design-lite/src/_mixins.scss","../../node_modules/material-design-lite/src/data-table/_data-table.scss","../../node_modules/material-design-lite/src/_variables.scss","../../node_modules/material-design-lite/src/footer/_mini_footer.scss","../../node_modules/material-design-lite/src/card/_card.scss","../../node_modules/material-design-lite/src/button/_button.scss","../scss [...]
\ No newline at end of file
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js
index 6b3ab86..140f60b 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js
+++ b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js
@@ -2,30 +2,30 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
 
 },{}],"vKy7":[function(require,module,exports) {
 function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}!function(){"use strict";function t(e,t){if(e){if(t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var s=document.createElement("span");s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER),s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);var i [...]
-},{}],"8QiI":[function(require,module,exports) {
+},{}],"QiIT":[function(require,module,exports) {
 
 var e=module.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e);
-},{}],"k/OQ":[function(require,module,exports) {
+},{}],"kOQz":[function(require,module,exports) {
 var r={}.hasOwnProperty;module.exports=function(e,n){return r.call(e,n)};
 },{}],"BI7s":[function(require,module,exports) {
 module.exports=function(r){try{return!!r()}catch(t){return!0}};
 },{}],"jVdc":[function(require,module,exports) {
 module.exports=!require("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a});
-},{"./_fails":"BI7s"}],"6DcE":[function(require,module,exports) {
-var e=module.exports={version:"2.6.9"};"number"==typeof __e&&(__e=e);
-},{}],"/2t/":[function(require,module,exports) {
+},{"./_fails":"BI7s"}],"DcE6":[function(require,module,exports) {
+var e=module.exports={version:"2.6.11"};"number"==typeof __e&&(__e=e);
+},{}],"tZ11":[function(require,module,exports) {
 module.exports=function(o){return"object"==typeof o?null!==o:"function"==typeof o};
-},{}],"1087":[function(require,module,exports) {
+},{}],"AIrJ":[function(require,module,exports) {
 var r=require("./_is-object");module.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e};
-},{"./_is-object":"/2t/"}],"4cz6":[function(require,module,exports) {
+},{"./_is-object":"tZ11"}],"cz6Q":[function(require,module,exports) {
 var e=require("./_is-object"),r=require("./_global").document,t=e(r)&&e(r.createElement);module.exports=function(e){return t?r.createElement(e):{}};
-},{"./_is-object":"/2t/","./_global":"8QiI"}],"+9/k":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_global":"QiIT"}],"kIpn":[function(require,module,exports) {
 module.exports=!require("./_descriptors")&&!require("./_fails")(function(){return 7!=Object.defineProperty(require("./_dom-create")("div"),"a",{get:function(){return 7}}).a});
-},{"./_descriptors":"jVdc","./_fails":"BI7s","./_dom-create":"4cz6"}],"S7GM":[function(require,module,exports) {
+},{"./_descriptors":"jVdc","./_fails":"BI7s","./_dom-create":"cz6Q"}],"S7GM":[function(require,module,exports) {
 var t=require("./_is-object");module.exports=function(r,e){if(!t(r))return r;var o,n;if(e&&"function"==typeof(o=r.toString)&&!t(n=o.call(r)))return n;if("function"==typeof(o=r.valueOf)&&!t(n=o.call(r)))return n;if(!e&&"function"==typeof(o=r.toString)&&!t(n=o.call(r)))return n;throw TypeError("Can't convert object to primitive value")};
-},{"./_is-object":"/2t/"}],"gGgn":[function(require,module,exports) {
+},{"./_is-object":"tZ11"}],"gGgn":[function(require,module,exports) {
 var e=require("./_an-object"),r=require("./_ie8-dom-define"),t=require("./_to-primitive"),i=Object.defineProperty;exports.f=require("./_descriptors")?Object.defineProperty:function(o,n,u){if(e(o),n=t(n,!0),e(u),r)try{return i(o,n,u)}catch(c){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");return"value"in u&&(o[n]=u.value),o};
-},{"./_an-object":"1087","./_ie8-dom-define":"+9/k","./_to-primitive":"S7GM","./_descriptors":"jVdc"}],"zQQJ":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_ie8-dom-define":"kIpn","./_to-primitive":"S7GM","./_descriptors":"jVdc"}],"zQQJ":[function(require,module,exports) {
 module.exports=function(e,r){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:r}};
 },{}],"nCfi":[function(require,module,exports) {
 var r=require("./_object-dp"),e=require("./_property-desc");module.exports=require("./_descriptors")?function(t,u,o){return r.f(t,u,e(1,o))}:function(r,e,t){return r[e]=t,r};
@@ -36,186 +36,186 @@ module.exports=!1;
 },{}],"k492":[function(require,module,exports) {
 
 var r=require("./_core"),e=require("./_global"),o="__core-js_shared__",i=e[o]||(e[o]={});(module.exports=function(r,e){return i[r]||(i[r]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:require("./_library")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"});
-},{"./_core":"6DcE","./_global":"8QiI","./_library":"dG4y"}],"it4f":[function(require,module,exports) {
+},{"./_core":"DcE6","./_global":"QiIT","./_library":"dG4y"}],"it4f":[function(require,module,exports) {
 module.exports=require("./_shared")("native-function-to-string",Function.toString);
 },{"./_shared":"k492"}],"jDrK":[function(require,module,exports) {
 
 var e=require("./_global"),r=require("./_hide"),t=require("./_has"),i=require("./_uid")("src"),n=require("./_function-to-string"),o="toString",u=(""+n).split(o);require("./_core").inspectSource=function(e){return n.call(e)},(module.exports=function(n,o,c,l){var s="function"==typeof c;s&&(t(c,"name")||r(c,"name",o)),n[o]!==c&&(s&&(t(c,i)||r(c,i,n[o]?""+n[o]:u.join(String(o)))),n===e?n[o]=c:l?n[o]?n[o]=c:r(n,o,c):(delete n[o],r(n,o,c)))})(Function.prototype,o,function(){return"function"==t [...]
-},{"./_global":"8QiI","./_hide":"nCfi","./_has":"k/OQ","./_uid":"jLFM","./_function-to-string":"it4f","./_core":"6DcE"}],"QKlW":[function(require,module,exports) {
+},{"./_global":"QiIT","./_hide":"nCfi","./_has":"kOQz","./_uid":"jLFM","./_function-to-string":"it4f","./_core":"DcE6"}],"QKlW":[function(require,module,exports) {
 module.exports=function(o){if("function"!=typeof o)throw TypeError(o+" is not a function!");return o};
 },{}],"W8bf":[function(require,module,exports) {
 var r=require("./_a-function");module.exports=function(n,t,u){if(r(n),void 0===t)return n;switch(u){case 1:return function(r){return n.call(t,r)};case 2:return function(r,u){return n.call(t,r,u)};case 3:return function(r,u,e){return n.call(t,r,u,e)}}return function(){return n.apply(t,arguments)}};
 },{"./_a-function":"QKlW"}],"Vobs":[function(require,module,exports) {
 
 var e=require("./_global"),r=require("./_core"),o=require("./_hide"),i=require("./_redefine"),u=require("./_ctx"),n="prototype",t=function(c,f,l){var q,_,a,d,p=c&t.F,v=c&t.G,F=c&t.S,x=c&t.P,y=c&t.B,B=v?e:F?e[f]||(e[f]={}):(e[f]||{})[n],G=v?r:r[f]||(r[f]={}),P=G[n]||(G[n]={});for(q in v&&(l=f),l)a=((_=!p&&B&&void 0!==B[q])?B:l)[q],d=y&&_?u(a,e):x&&"function"==typeof a?u(Function.call,a):a,B&&i(B,q,a,c&t.U),G[q]!=a&&o(G,q,d),x&&P[q]!=a&&(P[q]=a)};e.core=r,t.F=1,t.G=2,t.S=4,t.P=8,t.B=16,t.W [...]
-},{"./_global":"8QiI","./_core":"6DcE","./_hide":"nCfi","./_redefine":"jDrK","./_ctx":"W8bf"}],"nxhn":[function(require,module,exports) {
+},{"./_global":"QiIT","./_core":"DcE6","./_hide":"nCfi","./_redefine":"jDrK","./_ctx":"W8bf"}],"nxhn":[function(require,module,exports) {
 var e=require("./_uid")("meta"),r=require("./_is-object"),t=require("./_has"),n=require("./_object-dp").f,i=0,u=Object.isExtensible||function(){return!0},f=!require("./_fails")(function(){return u(Object.preventExtensions({}))}),o=function(r){n(r,e,{value:{i:"O"+ ++i,w:{}}})},s=function(n,i){if(!r(n))return"symbol"==typeof n?n:("string"==typeof n?"S":"P")+n;if(!t(n,e)){if(!u(n))return"F";if(!i)return"E";o(n)}return n[e].i},c=function(r,n){if(!t(r,e)){if(!u(r))return!0;if(!n)return!1;o(r) [...]
-},{"./_uid":"jLFM","./_is-object":"/2t/","./_has":"k/OQ","./_object-dp":"gGgn","./_fails":"BI7s"}],"I5XL":[function(require,module,exports) {
+},{"./_uid":"jLFM","./_is-object":"tZ11","./_has":"kOQz","./_object-dp":"gGgn","./_fails":"BI7s"}],"I5XL":[function(require,module,exports) {
 var e=require("./_shared")("wks"),r=require("./_uid"),o=require("./_global").Symbol,u="function"==typeof o,i=module.exports=function(i){return e[i]||(e[i]=u&&o[i]||(u?o:r)("Symbol."+i))};i.store=e;
-},{"./_shared":"k492","./_uid":"jLFM","./_global":"8QiI"}],"+IBD":[function(require,module,exports) {
+},{"./_shared":"k492","./_uid":"jLFM","./_global":"QiIT"}],"IBDH":[function(require,module,exports) {
 var e=require("./_object-dp").f,r=require("./_has"),o=require("./_wks")("toStringTag");module.exports=function(t,u,i){t&&!r(t=i?t:t.prototype,o)&&e(t,o,{configurable:!0,value:u})};
-},{"./_object-dp":"gGgn","./_has":"k/OQ","./_wks":"I5XL"}],"Jnk4":[function(require,module,exports) {
+},{"./_object-dp":"gGgn","./_has":"kOQz","./_wks":"I5XL"}],"Jnk4":[function(require,module,exports) {
 exports.f=require("./_wks");
 },{"./_wks":"I5XL"}],"ZenZ":[function(require,module,exports) {
 
 var r=require("./_global"),e=require("./_core"),o=require("./_library"),i=require("./_wks-ext"),l=require("./_object-dp").f;module.exports=function(u){var a=e.Symbol||(e.Symbol=o?{}:r.Symbol||{});"_"==u.charAt(0)||u in a||l(a,u,{value:i.f(u)})};
-},{"./_global":"8QiI","./_core":"6DcE","./_library":"dG4y","./_wks-ext":"Jnk4","./_object-dp":"gGgn"}],"3+Dr":[function(require,module,exports) {
+},{"./_global":"QiIT","./_core":"DcE6","./_library":"dG4y","./_wks-ext":"Jnk4","./_object-dp":"gGgn"}],"DrRY":[function(require,module,exports) {
 var r={}.toString;module.exports=function(t){return r.call(t).slice(8,-1)};
 },{}],"sUp0":[function(require,module,exports) {
 var e=require("./_cof");module.exports=Object("z").propertyIsEnumerable(0)?Object:function(r){return"String"==e(r)?r.split(""):Object(r)};
-},{"./_cof":"3+Dr"}],"3V0R":[function(require,module,exports) {
+},{"./_cof":"DrRY"}],"V0RG":[function(require,module,exports) {
 module.exports=function(o){if(null==o)throw TypeError("Can't call method on  "+o);return o};
 },{}],"zakI":[function(require,module,exports) {
 var e=require("./_iobject"),r=require("./_defined");module.exports=function(i){return e(r(i))};
-},{"./_iobject":"sUp0","./_defined":"3V0R"}],"ubM9":[function(require,module,exports) {
+},{"./_iobject":"sUp0","./_defined":"V0RG"}],"ubM9":[function(require,module,exports) {
 var o=Math.ceil,r=Math.floor;module.exports=function(t){return isNaN(t=+t)?0:(t>0?r:o)(t)};
-},{}],"0KLz":[function(require,module,exports) {
+},{}],"KLzx":[function(require,module,exports) {
 var e=require("./_to-integer"),r=Math.min;module.exports=function(t){return t>0?r(e(t),9007199254740991):0};
 },{"./_to-integer":"ubM9"}],"tPLG":[function(require,module,exports) {
 var e=require("./_to-integer"),r=Math.max,t=Math.min;module.exports=function(n,a){return(n=e(n))<0?r(n+a,0):t(n,a)};
 },{"./_to-integer":"ubM9"}],"ntLR":[function(require,module,exports) {
 var e=require("./_to-iobject"),r=require("./_to-length"),t=require("./_to-absolute-index");module.exports=function(n){return function(i,o,u){var f,l=e(i),a=r(l.length),c=t(u,a);if(n&&o!=o){for(;a>c;)if((f=l[c++])!=f)return!0}else for(;a>c;c++)if((n||c in l)&&l[c]===o)return n||c||0;return!n&&-1}};
-},{"./_to-iobject":"zakI","./_to-length":"0KLz","./_to-absolute-index":"tPLG"}],"4UE8":[function(require,module,exports) {
+},{"./_to-iobject":"zakI","./_to-length":"KLzx","./_to-absolute-index":"tPLG"}],"UE8F":[function(require,module,exports) {
 var e=require("./_shared")("keys"),r=require("./_uid");module.exports=function(u){return e[u]||(e[u]=r(u))};
 },{"./_shared":"k492","./_uid":"jLFM"}],"tBLI":[function(require,module,exports) {
 var r=require("./_has"),e=require("./_to-iobject"),u=require("./_array-includes")(!1),i=require("./_shared-key")("IE_PROTO");module.exports=function(o,a){var n,s=e(o),t=0,h=[];for(n in s)n!=i&&r(s,n)&&h.push(n);for(;a.length>t;)r(s,n=a[t++])&&(~u(h,n)||h.push(n));return h};
-},{"./_has":"k/OQ","./_to-iobject":"zakI","./_array-includes":"ntLR","./_shared-key":"4UE8"}],"qGBL":[function(require,module,exports) {
+},{"./_has":"kOQz","./_to-iobject":"zakI","./_array-includes":"ntLR","./_shared-key":"UE8F"}],"qGBL":[function(require,module,exports) {
 module.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
-},{}],"+huX":[function(require,module,exports) {
+},{}],"huXi":[function(require,module,exports) {
 var e=require("./_object-keys-internal"),r=require("./_enum-bug-keys");module.exports=Object.keys||function(u){return e(u,r)};
 },{"./_object-keys-internal":"tBLI","./_enum-bug-keys":"qGBL"}],"vSss":[function(require,module,exports) {
 exports.f=Object.getOwnPropertySymbols;
 },{}],"NRj4":[function(require,module,exports) {
 exports.f={}.propertyIsEnumerable;
-},{}],"6BDX":[function(require,module,exports) {
+},{}],"BDXu":[function(require,module,exports) {
 var e=require("./_object-keys"),r=require("./_object-gops"),o=require("./_object-pie");module.exports=function(t){var u=e(t),i=r.f;if(i)for(var c,f=i(t),a=o.f,l=0;f.length>l;)a.call(t,c=f[l++])&&u.push(c);return u};
-},{"./_object-keys":"+huX","./_object-gops":"vSss","./_object-pie":"NRj4"}],"JI5q":[function(require,module,exports) {
+},{"./_object-keys":"huXi","./_object-gops":"vSss","./_object-pie":"NRj4"}],"JI5q":[function(require,module,exports) {
 var r=require("./_cof");module.exports=Array.isArray||function(e){return"Array"==r(e)};
-},{"./_cof":"3+Dr"}],"2XMZ":[function(require,module,exports) {
+},{"./_cof":"DrRY"}],"XMZs":[function(require,module,exports) {
 var e=require("./_defined");module.exports=function(r){return Object(e(r))};
-},{"./_defined":"3V0R"}],"L4n9":[function(require,module,exports) {
+},{"./_defined":"V0RG"}],"L4n9":[function(require,module,exports) {
 var e=require("./_object-dp"),r=require("./_an-object"),t=require("./_object-keys");module.exports=require("./_descriptors")?Object.defineProperties:function(o,i){r(o);for(var u,c=t(i),n=c.length,s=0;n>s;)e.f(o,u=c[s++],i[u]);return o};
-},{"./_object-dp":"gGgn","./_an-object":"1087","./_object-keys":"+huX","./_descriptors":"jVdc"}],"HDWL":[function(require,module,exports) {
+},{"./_object-dp":"gGgn","./_an-object":"AIrJ","./_object-keys":"huXi","./_descriptors":"jVdc"}],"HDWL":[function(require,module,exports) {
 var e=require("./_global").document;module.exports=e&&e.documentElement;
-},{"./_global":"8QiI"}],"EH/8":[function(require,module,exports) {
+},{"./_global":"QiIT"}],"EH8e":[function(require,module,exports) {
 var e=require("./_an-object"),r=require("./_object-dps"),t=require("./_enum-bug-keys"),n=require("./_shared-key")("IE_PROTO"),o=function(){},i="prototype",u=function(){var e,r=require("./_dom-create")("iframe"),n=t.length;for(r.style.display="none",require("./_html").appendChild(r),r.src="javascript:",(e=r.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),u=e.F;n--;)delete u[i][t[n]];return u()};module.exports=Object.create||function(t,c){var a;retur [...]
-},{"./_an-object":"1087","./_object-dps":"L4n9","./_enum-bug-keys":"qGBL","./_shared-key":"4UE8","./_dom-create":"4cz6","./_html":"HDWL"}],"HNVq":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_object-dps":"L4n9","./_enum-bug-keys":"qGBL","./_shared-key":"UE8F","./_dom-create":"cz6Q","./_html":"HDWL"}],"HNVq":[function(require,module,exports) {
 var e=require("./_object-keys-internal"),r=require("./_enum-bug-keys").concat("length","prototype");exports.f=Object.getOwnPropertyNames||function(t){return e(t,r)};
 },{"./_object-keys-internal":"tBLI","./_enum-bug-keys":"qGBL"}],"NpQ8":[function(require,module,exports) {
 var e=require("./_to-iobject"),t=require("./_object-gopn").f,o={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],n=function(e){try{return t(e)}catch(o){return r.slice()}};module.exports.f=function(c){return r&&"[object Window]"==o.call(c)?n(c):t(e(c))};
 },{"./_to-iobject":"zakI","./_object-gopn":"HNVq"}],"EGJe":[function(require,module,exports) {
 var e=require("./_object-pie"),r=require("./_property-desc"),i=require("./_to-iobject"),t=require("./_to-primitive"),o=require("./_has"),c=require("./_ie8-dom-define"),u=Object.getOwnPropertyDescriptor;exports.f=require("./_descriptors")?u:function(p,q){if(p=i(p),q=t(q,!0),c)try{return u(p,q)}catch(_){}if(o(p,q))return r(!e.f.call(p,q),p[q])};
-},{"./_object-pie":"NRj4","./_property-desc":"zQQJ","./_to-iobject":"zakI","./_to-primitive":"S7GM","./_has":"k/OQ","./_ie8-dom-define":"+9/k","./_descriptors":"jVdc"}],"rGq9":[function(require,module,exports) {
+},{"./_object-pie":"NRj4","./_property-desc":"zQQJ","./_to-iobject":"zakI","./_to-primitive":"S7GM","./_has":"kOQz","./_ie8-dom-define":"kIpn","./_descriptors":"jVdc"}],"rGq9":[function(require,module,exports) {
 
 "use strict";var e=require("./_global"),r=require("./_has"),t=require("./_descriptors"),i=require("./_export"),n=require("./_redefine"),o=require("./_meta").KEY,u=require("./_fails"),s=require("./_shared"),f=require("./_set-to-string-tag"),c=require("./_uid"),a=require("./_wks"),l=require("./_wks-ext"),p=require("./_wks-define"),b=require("./_enum-keys"),y=require("./_is-array"),h=require("./_an-object"),_=require("./_is-object"),q=require("./_to-object"),g=require("./_to-iobject"),m=req [...]
-},{"./_global":"8QiI","./_has":"k/OQ","./_descriptors":"jVdc","./_export":"Vobs","./_redefine":"jDrK","./_meta":"nxhn","./_fails":"BI7s","./_shared":"k492","./_set-to-string-tag":"+IBD","./_uid":"jLFM","./_wks":"I5XL","./_wks-ext":"Jnk4","./_wks-define":"ZenZ","./_enum-keys":"6BDX","./_is-array":"JI5q","./_an-object":"1087","./_is-object":"/2t/","./_to-object":"2XMZ","./_to-iobject":"zakI","./_to-primitive":"S7GM","./_property-desc":"zQQJ","./_object-create":"EH/8","./_object-gopn-ext":" [...]
+},{"./_global":"QiIT","./_has":"kOQz","./_descriptors":"jVdc","./_export":"Vobs","./_redefine":"jDrK","./_meta":"nxhn","./_fails":"BI7s","./_shared":"k492","./_set-to-string-tag":"IBDH","./_uid":"jLFM","./_wks":"I5XL","./_wks-ext":"Jnk4","./_wks-define":"ZenZ","./_enum-keys":"BDXu","./_is-array":"JI5q","./_an-object":"AIrJ","./_is-object":"tZ11","./_to-object":"XMZs","./_to-iobject":"zakI","./_to-primitive":"S7GM","./_property-desc":"zQQJ","./_object-create":"EH8e","./_object-gopn-ext":" [...]
 var e=require("./_export");e(e.S,"Object",{create:require("./_object-create")});
-},{"./_export":"Vobs","./_object-create":"EH/8"}],"pS46":[function(require,module,exports) {
+},{"./_export":"Vobs","./_object-create":"EH8e"}],"pS46":[function(require,module,exports) {
 var e=require("./_export");e(e.S+e.F*!require("./_descriptors"),"Object",{defineProperty:require("./_object-dp").f});
 },{"./_export":"Vobs","./_descriptors":"jVdc","./_object-dp":"gGgn"}],"sbXv":[function(require,module,exports) {
 var e=require("./_export");e(e.S+e.F*!require("./_descriptors"),"Object",{defineProperties:require("./_object-dps")});
 },{"./_export":"Vobs","./_descriptors":"jVdc","./_object-dps":"L4n9"}],"gG9K":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_core"),t=require("./_fails");module.exports=function(c,i){var o=(r.Object||{})[c]||Object[c],u={};u[c]=i(o),e(e.S+e.F*t(function(){o(1)}),"Object",u)};
-},{"./_export":"Vobs","./_core":"6DcE","./_fails":"BI7s"}],"0xCv":[function(require,module,exports) {
+},{"./_export":"Vobs","./_core":"DcE6","./_fails":"BI7s"}],"xCvV":[function(require,module,exports) {
 var r=require("./_to-iobject"),e=require("./_object-gopd").f;require("./_object-sap")("getOwnPropertyDescriptor",function(){return function(t,o){return e(r(t),o)}});
 },{"./_to-iobject":"zakI","./_object-gopd":"EGJe","./_object-sap":"gG9K"}],"dlIw":[function(require,module,exports) {
 var t=require("./_has"),e=require("./_to-object"),o=require("./_shared-key")("IE_PROTO"),r=Object.prototype;module.exports=Object.getPrototypeOf||function(c){return c=e(c),t(c,o)?c[o]:"function"==typeof c.constructor&&c instanceof c.constructor?c.constructor.prototype:c instanceof Object?r:null};
-},{"./_has":"k/OQ","./_to-object":"2XMZ","./_shared-key":"4UE8"}],"3Dkc":[function(require,module,exports) {
+},{"./_has":"kOQz","./_to-object":"XMZs","./_shared-key":"UE8F"}],"Dkc5":[function(require,module,exports) {
 var e=require("./_to-object"),r=require("./_object-gpo");require("./_object-sap")("getPrototypeOf",function(){return function(t){return r(e(t))}});
-},{"./_to-object":"2XMZ","./_object-gpo":"dlIw","./_object-sap":"gG9K"}],"RpZ9":[function(require,module,exports) {
+},{"./_to-object":"XMZs","./_object-gpo":"dlIw","./_object-sap":"gG9K"}],"RpZ9":[function(require,module,exports) {
 var e=require("./_to-object"),r=require("./_object-keys");require("./_object-sap")("keys",function(){return function(t){return r(e(t))}});
-},{"./_to-object":"2XMZ","./_object-keys":"+huX","./_object-sap":"gG9K"}],"69mV":[function(require,module,exports) {
+},{"./_to-object":"XMZs","./_object-keys":"huXi","./_object-sap":"gG9K"}],"mVnl":[function(require,module,exports) {
 require("./_object-sap")("getOwnPropertyNames",function(){return require("./_object-gopn-ext").f});
 },{"./_object-sap":"gG9K","./_object-gopn-ext":"NpQ8"}],"bkZb":[function(require,module,exports) {
 var e=require("./_is-object"),r=require("./_meta").onFreeze;require("./_object-sap")("freeze",function(n){return function(t){return n&&e(t)?n(r(t)):t}});
-},{"./_is-object":"/2t/","./_meta":"nxhn","./_object-sap":"gG9K"}],"LEG2":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_meta":"nxhn","./_object-sap":"gG9K"}],"LEG2":[function(require,module,exports) {
 var e=require("./_is-object"),r=require("./_meta").onFreeze;require("./_object-sap")("seal",function(n){return function(t){return n&&e(t)?n(r(t)):t}});
-},{"./_is-object":"/2t/","./_meta":"nxhn","./_object-sap":"gG9K"}],"2OeT":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_meta":"nxhn","./_object-sap":"gG9K"}],"OeTo":[function(require,module,exports) {
 var e=require("./_is-object"),r=require("./_meta").onFreeze;require("./_object-sap")("preventExtensions",function(n){return function(t){return n&&e(t)?n(r(t)):t}});
-},{"./_is-object":"/2t/","./_meta":"nxhn","./_object-sap":"gG9K"}],"Lm2M":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_meta":"nxhn","./_object-sap":"gG9K"}],"Lm2M":[function(require,module,exports) {
 var r=require("./_is-object");require("./_object-sap")("isFrozen",function(e){return function(n){return!r(n)||!!e&&e(n)}});
-},{"./_is-object":"/2t/","./_object-sap":"gG9K"}],"Lrni":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_object-sap":"gG9K"}],"Lrni":[function(require,module,exports) {
 var e=require("./_is-object");require("./_object-sap")("isSealed",function(r){return function(i){return!e(i)||!!r&&r(i)}});
-},{"./_is-object":"/2t/","./_object-sap":"gG9K"}],"8ypI":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_object-sap":"gG9K"}],"ypI7":[function(require,module,exports) {
 var e=require("./_is-object");require("./_object-sap")("isExtensible",function(r){return function(i){return!!e(i)&&(!r||r(i))}});
-},{"./_is-object":"/2t/","./_object-sap":"gG9K"}],"v89L":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_object-sap":"gG9K"}],"v89L":[function(require,module,exports) {
 "use strict";var e=require("./_descriptors"),r=require("./_object-keys"),t=require("./_object-gops"),o=require("./_object-pie"),i=require("./_to-object"),c=require("./_iobject"),n=Object.assign;module.exports=!n||require("./_fails")(function(){var e={},r={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach(function(e){r[e]=e}),7!=n({},e)[t]||Object.keys(n({},r)).join("")!=o})?function(n,u){for(var s=i(n),a=arguments.length,f=1,b=t.f,j=o.f;a>f;)for(var l,q=c(arguments[ [...]
-},{"./_descriptors":"jVdc","./_object-keys":"+huX","./_object-gops":"vSss","./_object-pie":"NRj4","./_to-object":"2XMZ","./_iobject":"sUp0","./_fails":"BI7s"}],"av62":[function(require,module,exports) {
+},{"./_descriptors":"jVdc","./_object-keys":"huXi","./_object-gops":"vSss","./_object-pie":"NRj4","./_to-object":"XMZs","./_iobject":"sUp0","./_fails":"BI7s"}],"av62":[function(require,module,exports) {
 var e=require("./_export");e(e.S+e.F,"Object",{assign:require("./_object-assign")});
-},{"./_export":"Vobs","./_object-assign":"v89L"}],"wc3+":[function(require,module,exports) {
+},{"./_export":"Vobs","./_object-assign":"v89L"}],"wc34":[function(require,module,exports) {
 module.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};
 },{}],"OI80":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Object",{is:require("./_same-value")});
-},{"./_export":"Vobs","./_same-value":"wc3+"}],"I+c1":[function(require,module,exports) {
+},{"./_export":"Vobs","./_same-value":"wc34"}],"IC1x":[function(require,module,exports) {
 var t=require("./_is-object"),e=require("./_an-object"),r=function(r,o){if(e(r),!t(o)&&null!==o)throw TypeError(o+": can't set as prototype!")};module.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{(o=require("./_ctx")(Function.call,require("./_object-gopd").f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(c){e=!0}return function(t,c){return r(t,c),e?t.__proto__=c:o(t,c),t}}({},!1):void 0),check:r};
-},{"./_is-object":"/2t/","./_an-object":"1087","./_ctx":"W8bf","./_object-gopd":"EGJe"}],"xZ9m":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_an-object":"AIrJ","./_ctx":"W8bf","./_object-gopd":"EGJe"}],"xZ9m":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Object",{setPrototypeOf:require("./_set-proto").set});
-},{"./_export":"Vobs","./_set-proto":"I+c1"}],"pLtw":[function(require,module,exports) {
+},{"./_export":"Vobs","./_set-proto":"IC1x"}],"pLtw":[function(require,module,exports) {
 var e=require("./_cof"),t=require("./_wks")("toStringTag"),n="Arguments"==e(function(){return arguments}()),r=function(e,t){try{return e[t]}catch(n){}};module.exports=function(u){var o,c,i;return void 0===u?"Undefined":null===u?"Null":"string"==typeof(c=r(o=Object(u),t))?c:n?e(o):"Object"==(i=e(o))&&"function"==typeof o.callee?"Arguments":i};
-},{"./_cof":"3+Dr","./_wks":"I5XL"}],"++zm":[function(require,module,exports) {
+},{"./_cof":"DrRY","./_wks":"I5XL"}],"zmtK":[function(require,module,exports) {
 "use strict";var e=require("./_classof"),r={};r[require("./_wks")("toStringTag")]="z",r+""!="[object z]"&&require("./_redefine")(Object.prototype,"toString",function(){return"[object "+e(this)+"]"},!0);
 },{"./_classof":"pLtw","./_wks":"I5XL","./_redefine":"jDrK"}],"Grvq":[function(require,module,exports) {
 module.exports=function(e,r,l){var a=void 0===l;switch(r.length){case 0:return a?e():e.call(l);case 1:return a?e(r[0]):e.call(l,r[0]);case 2:return a?e(r[0],r[1]):e.call(l,r[0],r[1]);case 3:return a?e(r[0],r[1],r[2]):e.call(l,r[0],r[1],r[2]);case 4:return a?e(r[0],r[1],r[2],r[3]):e.call(l,r[0],r[1],r[2],r[3])}return e.apply(l,r)};
 },{}],"s1yo":[function(require,module,exports) {
 "use strict";var n=require("./_a-function"),t=require("./_is-object"),r=require("./_invoke"),e=[].slice,i={},o=function(n,t,r){if(!(t in i)){for(var e=[],o=0;o<t;o++)e[o]="a["+o+"]";i[t]=Function("F,a","return new F("+e.join(",")+")")}return i[t](n,r)};module.exports=Function.bind||function(i){var u=n(this),c=e.call(arguments,1),a=function(){var n=c.concat(e.call(arguments));return this instanceof a?o(u,n.length,n):r(u,n,i)};return t(u.prototype)&&(a.prototype=u.prototype),a};
-},{"./_a-function":"QKlW","./_is-object":"/2t/","./_invoke":"Grvq"}],"qI6I":[function(require,module,exports) {
+},{"./_a-function":"QKlW","./_is-object":"tZ11","./_invoke":"Grvq"}],"qI6I":[function(require,module,exports) {
 var r=require("./_export");r(r.P,"Function",{bind:require("./_bind")});
 },{"./_export":"Vobs","./_bind":"s1yo"}],"z3jV":[function(require,module,exports) {
 var r=require("./_object-dp").f,t=Function.prototype,e=/^\s*function ([^ (]*)/,n="name";n in t||require("./_descriptors")&&r(t,n,{configurable:!0,get:function(){try{return(""+this).match(e)[1]}catch(r){return""}}});
 },{"./_object-dp":"gGgn","./_descriptors":"jVdc"}],"owRX":[function(require,module,exports) {
 "use strict";var t=require("./_is-object"),e=require("./_object-gpo"),r=require("./_wks")("hasInstance"),i=Function.prototype;r in i||require("./_object-dp").f(i,r,{value:function(r){if("function"!=typeof this||!t(r))return!1;if(!t(this.prototype))return r instanceof this;for(;r=e(r);)if(this.prototype===r)return!0;return!1}});
-},{"./_is-object":"/2t/","./_object-gpo":"dlIw","./_wks":"I5XL","./_object-dp":"gGgn"}],"Pm3s":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_object-gpo":"dlIw","./_wks":"I5XL","./_object-dp":"gGgn"}],"Pm3s":[function(require,module,exports) {
 module.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff";
 },{}],"JIX2":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_defined"),i=require("./_fails"),n=require("./_string-ws"),t="["+n+"]",u="​…",o=RegExp("^"+t+t+"*"),p=RegExp(t+t+"*$"),a=function(e,t,o){var p={},a=i(function(){return!!n[e]()||u[e]()!=u}),f=p[e]=a?t(c):n[e];o&&(p[o]=f),r(r.P+r.F*a,"String",p)},c=a.trim=function(r,i){return r=String(e(r)),1&i&&(r=r.replace(o,"")),2&i&&(r=r.replace(p,"")),r};module.exports=a;
-},{"./_export":"Vobs","./_defined":"3V0R","./_fails":"BI7s","./_string-ws":"Pm3s"}],"U/D3":[function(require,module,exports) {
+},{"./_export":"Vobs","./_defined":"V0RG","./_fails":"BI7s","./_string-ws":"Pm3s"}],"UD3M":[function(require,module,exports) {
 var r=require("./_global").parseInt,e=require("./_string-trim").trim,t=require("./_string-ws"),i=/^[-+]?0[xX]/;module.exports=8!==r(t+"08")||22!==r(t+"0x16")?function(t,n){var s=e(String(t),3);return r(s,n>>>0||(i.test(s)?16:10))}:r;
-},{"./_global":"8QiI","./_string-trim":"JIX2","./_string-ws":"Pm3s"}],"nPGY":[function(require,module,exports) {
+},{"./_global":"QiIT","./_string-trim":"JIX2","./_string-ws":"Pm3s"}],"nPGY":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_parse-int");r(r.G+r.F*(parseInt!=e),{parseInt:e});
-},{"./_export":"Vobs","./_parse-int":"U/D3"}],"tlHn":[function(require,module,exports) {
+},{"./_export":"Vobs","./_parse-int":"UD3M"}],"tlHn":[function(require,module,exports) {
 var r=require("./_global").parseFloat,e=require("./_string-trim").trim;module.exports=1/r(require("./_string-ws")+"-0")!=-1/0?function(t){var i=e(String(t),3),a=r(i);return 0===a&&"-"==i.charAt(0)?-0:a}:r;
-},{"./_global":"8QiI","./_string-trim":"JIX2","./_string-ws":"Pm3s"}],"yexh":[function(require,module,exports) {
+},{"./_global":"QiIT","./_string-trim":"JIX2","./_string-ws":"Pm3s"}],"yexh":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_parse-float");r(r.G+r.F*(parseFloat!=e),{parseFloat:e});
 },{"./_export":"Vobs","./_parse-float":"tlHn"}],"IxAU":[function(require,module,exports) {
 var t=require("./_is-object"),o=require("./_set-proto").set;module.exports=function(r,e,p){var u,n=e.constructor;return n!==p&&"function"==typeof n&&(u=n.prototype)!==p.prototype&&t(u)&&o&&o(r,u),r};
-},{"./_is-object":"/2t/","./_set-proto":"I+c1"}],"57F7":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_set-proto":"IC1x"}],"F74v":[function(require,module,exports) {
 
 "use strict";var e=require("./_global"),r=require("./_has"),t=require("./_cof"),i=require("./_inherit-if-required"),a=require("./_to-primitive"),n=require("./_fails"),o=require("./_object-gopn").f,u=require("./_object-gopd").f,s=require("./_object-dp").f,c=require("./_string-trim").trim,f="Number",_=e[f],I=_,N=_.prototype,p=t(require("./_object-create")(N))==f,l="trim"in String.prototype,q=function(e){var r=a(e,!1);if("string"==typeof r&&r.length>2){var t,i,n,o=(r=l?r.trim():c(r,3)).char [...]
-},{"./_global":"8QiI","./_has":"k/OQ","./_cof":"3+Dr","./_inherit-if-required":"IxAU","./_to-primitive":"S7GM","./_fails":"BI7s","./_object-gopn":"HNVq","./_object-gopd":"EGJe","./_object-dp":"gGgn","./_string-trim":"JIX2","./_object-create":"EH/8","./_descriptors":"jVdc","./_redefine":"jDrK"}],"9Kwj":[function(require,module,exports) {
+},{"./_global":"QiIT","./_has":"kOQz","./_cof":"DrRY","./_inherit-if-required":"IxAU","./_to-primitive":"S7GM","./_fails":"BI7s","./_object-gopn":"HNVq","./_object-gopd":"EGJe","./_object-dp":"gGgn","./_string-trim":"JIX2","./_object-create":"EH8e","./_descriptors":"jVdc","./_redefine":"jDrK"}],"Kwjt":[function(require,module,exports) {
 var r=require("./_cof");module.exports=function(e,o){if("number"!=typeof e&&"Number"!=r(e))throw TypeError(o);return+e};
-},{"./_cof":"3+Dr"}],"0Lz3":[function(require,module,exports) {
+},{"./_cof":"DrRY"}],"Lz3r":[function(require,module,exports) {
 "use strict";var r=require("./_to-integer"),e=require("./_defined");module.exports=function(t){var i=String(e(this)),n="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(i+=i))1&o&&(n+=i);return n};
-},{"./_to-integer":"ubM9","./_defined":"3V0R"}],"/qGB":[function(require,module,exports) {
+},{"./_to-integer":"ubM9","./_defined":"V0RG"}],"qGBb":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_to-integer"),i=require("./_a-number-value"),t=require("./_string-repeat"),n=1..toFixed,o=Math.floor,u=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",a="0",c=function(r,e){for(var i=-1,t=e;++i<6;)t+=r*u[i],u[i]=t%1e7,t=o(t/1e7)},l=function(r){for(var e=6,i=0;--e>=0;)i+=u[e],u[e]=o(i/r),i=i%r*1e7},v=function(){for(var r=6,e="";--r>=0;)if(""!==e||0===r||0!==u[r]){var i=String(u[r]);e=""===e?i:e+t.call(a,7-i.length)+i}return e},x [...]
-},{"./_export":"Vobs","./_to-integer":"ubM9","./_a-number-value":"9Kwj","./_string-repeat":"0Lz3","./_fails":"BI7s"}],"5bLB":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-integer":"ubM9","./_a-number-value":"Kwjt","./_string-repeat":"Lz3r","./_fails":"BI7s"}],"bLBB":[function(require,module,exports) {
 "use strict";var r=require("./_export"),i=require("./_fails"),e=require("./_a-number-value"),n=1..toPrecision;r(r.P+r.F*(i(function(){return"1"!==n.call(1,void 0)})||!i(function(){n.call({})})),"Number",{toPrecision:function(r){var i=e(this,"Number#toPrecision: incorrect invocation!");return void 0===r?n.call(i):n.call(i,r)}});
-},{"./_export":"Vobs","./_fails":"BI7s","./_a-number-value":"9Kwj"}],"oSwj":[function(require,module,exports) {
+},{"./_export":"Vobs","./_fails":"BI7s","./_a-number-value":"Kwjt"}],"oSwj":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Number",{EPSILON:Math.pow(2,-52)});
 },{"./_export":"Vobs"}],"Iwqp":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_global").isFinite;e(e.S,"Number",{isFinite:function(e){return"number"==typeof e&&r(e)}});
-},{"./_export":"Vobs","./_global":"8QiI"}],"tjYZ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_global":"QiIT"}],"tjYZ":[function(require,module,exports) {
 var e=require("./_is-object"),r=Math.floor;module.exports=function(i){return!e(i)&&isFinite(i)&&r(i)===i};
-},{"./_is-object":"/2t/"}],"49XP":[function(require,module,exports) {
+},{"./_is-object":"tZ11"}],"XPnJ":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Number",{isInteger:require("./_is-integer")});
-},{"./_export":"Vobs","./_is-integer":"tjYZ"}],"P/Mg":[function(require,module,exports) {
+},{"./_export":"Vobs","./_is-integer":"tjYZ"}],"PMgb":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Number",{isNaN:function(r){return r!=r}});
 },{"./_export":"Vobs"}],"EvBV":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_is-integer"),i=Math.abs;e(e.S,"Number",{isSafeInteger:function(e){return r(e)&&i(e)<=9007199254740991}});
-},{"./_export":"Vobs","./_is-integer":"tjYZ"}],"fOC+":[function(require,module,exports) {
+},{"./_export":"Vobs","./_is-integer":"tjYZ"}],"fOC8":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991});
-},{"./_export":"Vobs"}],"93yv":[function(require,module,exports) {
+},{"./_export":"Vobs"}],"yvVo":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991});
 },{"./_export":"Vobs"}],"a09l":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_parse-float");r(r.S+r.F*(Number.parseFloat!=e),"Number",{parseFloat:e});
 },{"./_export":"Vobs","./_parse-float":"tlHn"}],"fCj1":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_parse-int");r(r.S+r.F*(Number.parseInt!=e),"Number",{parseInt:e});
-},{"./_export":"Vobs","./_parse-int":"U/D3"}],"rR7R":[function(require,module,exports) {
+},{"./_export":"Vobs","./_parse-int":"UD3M"}],"rR7R":[function(require,module,exports) {
 module.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)};
-},{}],"+8o7":[function(require,module,exports) {
+},{}],"o78V":[function(require,module,exports) {
 var a=require("./_export"),r=require("./_math-log1p"),t=Math.sqrt,h=Math.acosh;a(a.S+a.F*!(h&&710==Math.floor(h(Number.MAX_VALUE))&&h(1/0)==1/0),"Math",{acosh:function(a){return(a=+a)<1?NaN:a>94906265.62425156?Math.log(a)+Math.LN2:r(a-1+t(a-1)*t(a+1))}});
 },{"./_export":"Vobs","./_math-log1p":"rR7R"}],"xkGF":[function(require,module,exports) {
 var t=require("./_export"),a=Math.asinh;function i(t){return isFinite(t=+t)&&0!=t?t<0?-i(-t):Math.log(t+Math.sqrt(t*t+1)):t}t(t.S+t.F*!(a&&1/a(0)>0),"Math",{asinh:i});
-},{"./_export":"Vobs"}],"0Pmr":[function(require,module,exports) {
+},{"./_export":"Vobs"}],"Pmrp":[function(require,module,exports) {
 var a=require("./_export"),t=Math.atanh;a(a.S+a.F*!(t&&1/t(-0)<0),"Math",{atanh:function(a){return 0==(a=+a)?a:Math.log((1+a)/(1-a))/2}});
 },{"./_export":"Vobs"}],"ZIrZ":[function(require,module,exports) {
 module.exports=Math.sign||function(n){return 0==(n=+n)||n!=n?n:n<0?-1:1};
@@ -229,11 +229,11 @@ var r=require("./_export"),e=Math.exp;r(r.S,"Math",{cosh:function(r){return(e(r=
 var e=Math.expm1;module.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:e;
 },{}],"aBEU":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_math-expm1");e(e.S+e.F*(r!=Math.expm1),"Math",{expm1:r});
-},{"./_export":"Vobs","./_math-expm1":"sm22"}],"6lqk":[function(require,module,exports) {
+},{"./_export":"Vobs","./_math-expm1":"sm22"}],"lqkS":[function(require,module,exports) {
 var r=require("./_math-sign"),t=Math.pow,n=t(2,-52),a=t(2,-23),u=t(2,127)*(2-a),e=t(2,-126),o=function(r){return r+1/n-1/n};module.exports=Math.fround||function(t){var h,i,f=Math.abs(t),s=r(t);return f<e?s*o(f/e/a)*e*a:(i=(h=(1+a/n)*f)-(h-f))>u||i!=i?s*(1/0):s*i};
 },{"./_math-sign":"ZIrZ"}],"IjCR":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{fround:require("./_math-fround")});
-},{"./_export":"Vobs","./_math-fround":"6lqk"}],"HXfT":[function(require,module,exports) {
+},{"./_export":"Vobs","./_math-fround":"lqkS"}],"HXfT":[function(require,module,exports) {
 var r=require("./_export"),t=Math.abs;r(r.S,"Math",{hypot:function(r,a){for(var e,h,n=0,o=0,u=arguments.length,M=0;o<u;)M<(e=t(arguments[o++]))?(n=n*(h=M/e)*h+1,M=e):n+=e>0?(h=e/M)*h:e;return M===1/0?1/0:M*Math.sqrt(n)}});
 },{"./_export":"Vobs"}],"m2OX":[function(require,module,exports) {
 var r=require("./_export"),e=Math.imul;r(r.S+r.F*require("./_fails")(function(){return-5!=e(4294967295,5)||2!=e.length}),"Math",{imul:function(r,e){var t=+r,u=+e,i=65535&t,n=65535&u;return 0|i*n+((65535&t>>>16)*n+i*(65535&u>>>16)<<16>>>0)}});
@@ -245,7 +245,7 @@ var r=require("./_export");r(r.S,"Math",{log1p:require("./_math-log1p")});
 var r=require("./_export");r(r.S,"Math",{log2:function(r){return Math.log(r)/Math.LN2}});
 },{"./_export":"Vobs"}],"d1Y4":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{sign:require("./_math-sign")});
-},{"./_export":"Vobs","./_math-sign":"ZIrZ"}],"20dh":[function(require,module,exports) {
+},{"./_export":"Vobs","./_math-sign":"ZIrZ"}],"dhHM":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_math-expm1"),t=Math.exp;e(e.S+e.F*require("./_fails")(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(r(e)-r(-e))/2:(t(e-1)-t(-e-1))*(Math.E/2)}});
 },{"./_export":"Vobs","./_math-expm1":"sm22","./_fails":"BI7s"}],"cxv8":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_math-expm1"),t=Math.exp;r(r.S,"Math",{tanh:function(r){var a=e(r=+r),h=e(-r);return a==1/0?1:h==1/0?-1:(a-h)/(t(r)+t(-r))}});
@@ -253,39 +253,39 @@ var r=require("./_export"),e=require("./_math-expm1"),t=Math.exp;r(r.S,"Math",{t
 var r=require("./_export");r(r.S,"Math",{trunc:function(r){return(r>0?Math.floor:Math.ceil)(r)}});
 },{"./_export":"Vobs"}],"DdG0":[function(require,module,exports) {
 var r=require("./_export"),o=require("./_to-absolute-index"),e=String.fromCharCode,n=String.fromCodePoint;r(r.S+r.F*(!!n&&1!=n.length),"String",{fromCodePoint:function(r){for(var n,t=[],i=arguments.length,a=0;i>a;){if(n=+arguments[a++],o(n,1114111)!==n)throw RangeError(n+" is not a valid code point");t.push(n<65536?e(n):e(55296+((n-=65536)>>10),n%1024+56320))}return t.join("")}});
-},{"./_export":"Vobs","./_to-absolute-index":"tPLG"}],"KDc+":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-absolute-index":"tPLG"}],"KDcE":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_to-iobject"),t=require("./_to-length");r(r.S,"String",{raw:function(r){for(var n=e(r.raw),i=t(n.length),o=arguments.length,u=[],g=0;i>g;)u.push(String(n[g++])),g<o&&u.push(String(arguments[g]));return u.join("")}});
-},{"./_export":"Vobs","./_to-iobject":"zakI","./_to-length":"0KLz"}],"D/Dr":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-iobject":"zakI","./_to-length":"KLzx"}],"DDrZ":[function(require,module,exports) {
 "use strict";require("./_string-trim")("trim",function(r){return function(){return r(this,3)}});
-},{"./_string-trim":"JIX2"}],"4j93":[function(require,module,exports) {
+},{"./_string-trim":"JIX2"}],"j93N":[function(require,module,exports) {
 var e=require("./_to-integer"),r=require("./_defined");module.exports=function(t){return function(n,i){var o,u,c=String(r(n)),d=e(i),a=c.length;return d<0||d>=a?t?"":void 0:(o=c.charCodeAt(d))<55296||o>56319||d+1===a||(u=c.charCodeAt(d+1))<56320||u>57343?t?c.charAt(d):o:t?c.slice(d,d+2):u-56320+(o-55296<<10)+65536}};
-},{"./_to-integer":"ubM9","./_defined":"3V0R"}],"H5R/":[function(require,module,exports) {
+},{"./_to-integer":"ubM9","./_defined":"V0RG"}],"H5RD":[function(require,module,exports) {
 module.exports={};
 },{}],"gj4O":[function(require,module,exports) {
 "use strict";var e=require("./_object-create"),r=require("./_property-desc"),t=require("./_set-to-string-tag"),i={};require("./_hide")(i,require("./_wks")("iterator"),function(){return this}),module.exports=function(o,u,s){o.prototype=e(i,{next:r(1,s)}),t(o,u+" Iterator")};
-},{"./_object-create":"EH/8","./_property-desc":"zQQJ","./_set-to-string-tag":"+IBD","./_hide":"nCfi","./_wks":"I5XL"}],"MKcl":[function(require,module,exports) {
+},{"./_object-create":"EH8e","./_property-desc":"zQQJ","./_set-to-string-tag":"IBDH","./_hide":"nCfi","./_wks":"I5XL"}],"MKcl":[function(require,module,exports) {
 "use strict";var e=require("./_library"),r=require("./_export"),t=require("./_redefine"),i=require("./_hide"),n=require("./_iterators"),u=require("./_iter-create"),o=require("./_set-to-string-tag"),s=require("./_object-gpo"),a=require("./_wks")("iterator"),c=!([].keys&&"next"in[].keys()),f="@@iterator",l="keys",q="values",y=function(){return this};module.exports=function(_,p,h,k,v,w,d){u(h,p,k);var x,b,g,j=function(e){if(!c&&e in I)return I[e];switch(e){case l:case q:return function(){re [...]
-},{"./_library":"dG4y","./_export":"Vobs","./_redefine":"jDrK","./_hide":"nCfi","./_iterators":"H5R/","./_iter-create":"gj4O","./_set-to-string-tag":"+IBD","./_object-gpo":"dlIw","./_wks":"I5XL"}],"WN4F":[function(require,module,exports) {
+},{"./_library":"dG4y","./_export":"Vobs","./_redefine":"jDrK","./_hide":"nCfi","./_iterators":"H5RD","./_iter-create":"gj4O","./_set-to-string-tag":"IBDH","./_object-gpo":"dlIw","./_wks":"I5XL"}],"WN4F":[function(require,module,exports) {
 "use strict";var i=require("./_string-at")(!0);require("./_iter-define")(String,"String",function(i){this._t=String(i),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=i(e,n),this._i+=t.length,{value:t,done:!1})});
-},{"./_string-at":"4j93","./_iter-define":"MKcl"}],"gGid":[function(require,module,exports) {
+},{"./_string-at":"j93N","./_iter-define":"MKcl"}],"gGid":[function(require,module,exports) {
 "use strict";var r=require("./_export"),t=require("./_string-at")(!1);r(r.P,"String",{codePointAt:function(r){return t(this,r)}});
-},{"./_export":"Vobs","./_string-at":"4j93"}],"9r5g":[function(require,module,exports) {
+},{"./_export":"Vobs","./_string-at":"j93N"}],"r5g1":[function(require,module,exports) {
 var e=require("./_is-object"),r=require("./_cof"),i=require("./_wks")("match");module.exports=function(o){var u;return e(o)&&(void 0!==(u=o[i])?!!u:"RegExp"==r(o))};
-},{"./_is-object":"/2t/","./_cof":"3+Dr","./_wks":"I5XL"}],"6dpx":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_cof":"DrRY","./_wks":"I5XL"}],"dpxX":[function(require,module,exports) {
 var e=require("./_is-regexp"),r=require("./_defined");module.exports=function(i,t,n){if(e(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(r(i))};
-},{"./_is-regexp":"9r5g","./_defined":"3V0R"}],"Z7lT":[function(require,module,exports) {
+},{"./_is-regexp":"r5g1","./_defined":"V0RG"}],"Z7lT":[function(require,module,exports) {
 var r=require("./_wks")("match");module.exports=function(t){var c=/./;try{"/./"[t](c)}catch(e){try{return c[r]=!1,!"/./"[t](c)}catch(a){}}return!0};
 },{"./_wks":"I5XL"}],"PmIB":[function(require,module,exports) {
 "use strict";var e=require("./_export"),t=require("./_to-length"),i=require("./_string-context"),r="endsWith",n=""[r];e(e.P+e.F*require("./_fails-is-regexp")(r),"String",{endsWith:function(e){var s=i(this,e,r),g=arguments.length>1?arguments[1]:void 0,h=t(s.length),l=void 0===g?h:Math.min(t(g),h),u=String(e);return n?n.call(s,u,l):s.slice(l-u.length,l)===u}});
-},{"./_export":"Vobs","./_to-length":"0KLz","./_string-context":"6dpx","./_fails-is-regexp":"Z7lT"}],"qgIv":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-length":"KLzx","./_string-context":"dpxX","./_fails-is-regexp":"Z7lT"}],"qgIv":[function(require,module,exports) {
 "use strict";var e=require("./_export"),i=require("./_string-context"),r="includes";e(e.P+e.F*require("./_fails-is-regexp")(r),"String",{includes:function(e){return!!~i(this,e,r).indexOf(e,arguments.length>1?arguments[1]:void 0)}});
-},{"./_export":"Vobs","./_string-context":"6dpx","./_fails-is-regexp":"Z7lT"}],"Z/Ab":[function(require,module,exports) {
+},{"./_export":"Vobs","./_string-context":"dpxX","./_fails-is-regexp":"Z7lT"}],"ZAbm":[function(require,module,exports) {
 var r=require("./_export");r(r.P,"String",{repeat:require("./_string-repeat")});
-},{"./_export":"Vobs","./_string-repeat":"0Lz3"}],"U3MC":[function(require,module,exports) {
+},{"./_export":"Vobs","./_string-repeat":"Lz3r"}],"U3MC":[function(require,module,exports) {
 "use strict";var t=require("./_export"),r=require("./_to-length"),e=require("./_string-context"),i="startsWith",n=""[i];t(t.P+t.F*require("./_fails-is-regexp")(i),"String",{startsWith:function(t){var s=e(this,t,i),g=r(Math.min(arguments.length>1?arguments[1]:void 0,s.length)),h=String(t);return n?n.call(s,h,g):s.slice(g,g+h.length)===h}});
-},{"./_export":"Vobs","./_to-length":"0KLz","./_string-context":"6dpx","./_fails-is-regexp":"Z7lT"}],"OaTR":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-length":"KLzx","./_string-context":"dpxX","./_fails-is-regexp":"Z7lT"}],"OaTR":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_fails"),t=require("./_defined"),n=/"/g,i=function(r,e,i,u){var o=String(t(r)),a="<"+e;return""!==i&&(a+=" "+i+'="'+String(u).replace(n,"&quot;")+'"'),a+">"+o+"</"+e+">"};module.exports=function(t,n){var u={};u[t]=n(i),r(r.P+r.F*e(function(){var r=""[t]('"');return r!==r.toLowerCase()||r.split('"').length>3}),"String",u)};
-},{"./_export":"Vobs","./_fails":"BI7s","./_defined":"3V0R"}],"eRhq":[function(require,module,exports) {
+},{"./_export":"Vobs","./_fails":"BI7s","./_defined":"V0RG"}],"eRhq":[function(require,module,exports) {
 "use strict";require("./_string-html")("anchor",function(n){return function(r){return n(this,"a","name",r)}});
 },{"./_string-html":"OaTR"}],"HLSM":[function(require,module,exports) {
 "use strict";require("./_string-html")("big",function(t){return function(){return t(this,"big","","")}});
@@ -297,7 +297,7 @@ var r=require("./_export"),e=require("./_fails"),t=require("./_defined"),n=/"/g,
 "use strict";require("./_string-html")("fixed",function(t){return function(){return t(this,"tt","","")}});
 },{"./_string-html":"OaTR"}],"RECM":[function(require,module,exports) {
 "use strict";require("./_string-html")("fontcolor",function(t){return function(r){return t(this,"font","color",r)}});
-},{"./_string-html":"OaTR"}],"l7+o":[function(require,module,exports) {
+},{"./_string-html":"OaTR"}],"l7OI":[function(require,module,exports) {
 "use strict";require("./_string-html")("fontsize",function(t){return function(n){return t(this,"font","size",n)}});
 },{"./_string-html":"OaTR"}],"uJlj":[function(require,module,exports) {
 "use strict";require("./_string-html")("italics",function(t){return function(){return t(this,"i","","")}});
@@ -307,39 +307,39 @@ var r=require("./_export"),e=require("./_fails"),t=require("./_defined"),n=/"/g,
 "use strict";require("./_string-html")("small",function(t){return function(){return t(this,"small","","")}});
 },{"./_string-html":"OaTR"}],"MhVl":[function(require,module,exports) {
 "use strict";require("./_string-html")("strike",function(t){return function(){return t(this,"strike","","")}});
-},{"./_string-html":"OaTR"}],"DF/m":[function(require,module,exports) {
+},{"./_string-html":"OaTR"}],"DFMN":[function(require,module,exports) {
 "use strict";require("./_string-html")("sub",function(t){return function(){return t(this,"sub","","")}});
 },{"./_string-html":"OaTR"}],"X3LC":[function(require,module,exports) {
 "use strict";require("./_string-html")("sup",function(t){return function(){return t(this,"sup","","")}});
-},{"./_string-html":"OaTR"}],"8Syd":[function(require,module,exports) {
+},{"./_string-html":"OaTR"}],"Sydr":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Date",{now:function(){return(new Date).getTime()}});
-},{"./_export":"Vobs"}],"G+NU":[function(require,module,exports) {
+},{"./_export":"Vobs"}],"GNUn":[function(require,module,exports) {
 "use strict";var t=require("./_export"),e=require("./_to-object"),r=require("./_to-primitive");t(t.P+t.F*require("./_fails")(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var i=e(this),n=r(i);return"number"!=typeof n||isFinite(n)?i.toISOString():null}});
-},{"./_export":"Vobs","./_to-object":"2XMZ","./_to-primitive":"S7GM","./_fails":"BI7s"}],"wk7G":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-object":"XMZs","./_to-primitive":"S7GM","./_fails":"BI7s"}],"wk7G":[function(require,module,exports) {
 "use strict";var t=require("./_fails"),e=Date.prototype.getTime,i=Date.prototype.toISOString,n=function(t){return t>9?t:"0"+t};module.exports=t(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!t(function(){i.call(new Date(NaN))})?function(){if(!isFinite(e.call(this)))throw RangeError("Invalid time value");var t=this,i=t.getUTCFullYear(),r=t.getUTCMilliseconds(),a=i<0?"-":i>9999?"+":"";return a+("00000"+Math.abs(i)).slice(a?-6:-4)+"-"+n(t.getUTCMonth()+1)+"-"+n(t [...]
-},{"./_fails":"BI7s"}],"83fP":[function(require,module,exports) {
+},{"./_fails":"BI7s"}],"fPZl":[function(require,module,exports) {
 var t=require("./_export"),r=require("./_date-to-iso-string");t(t.P+t.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r});
-},{"./_export":"Vobs","./_date-to-iso-string":"wk7G"}],"0FKf":[function(require,module,exports) {
+},{"./_export":"Vobs","./_date-to-iso-string":"wk7G"}],"FKfL":[function(require,module,exports) {
 var e=Date.prototype,t="Invalid Date",a="toString",r=e[a],i=e.getTime;new Date(NaN)+""!=t&&require("./_redefine")(e,a,function(){var e=i.call(this);return e==e?r.call(this):t});
 },{"./_redefine":"jDrK"}],"EnIA":[function(require,module,exports) {
 "use strict";var r=require("./_an-object"),e=require("./_to-primitive"),t="number";module.exports=function(i){if("string"!==i&&i!==t&&"default"!==i)throw TypeError("Incorrect hint");return e(r(this),i!=t)};
-},{"./_an-object":"1087","./_to-primitive":"S7GM"}],"nktC":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_to-primitive":"S7GM"}],"nktC":[function(require,module,exports) {
 var e=require("./_wks")("toPrimitive"),i=Date.prototype;e in i||require("./_hide")(i,e,require("./_date-to-primitive"));
-},{"./_wks":"I5XL","./_hide":"nCfi","./_date-to-primitive":"EnIA"}],"Xjk/":[function(require,module,exports) {
+},{"./_wks":"I5XL","./_hide":"nCfi","./_date-to-primitive":"EnIA"}],"XjkF":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Array",{isArray:require("./_is-array")});
 },{"./_export":"Vobs","./_is-array":"JI5q"}],"RG8K":[function(require,module,exports) {
 var r=require("./_an-object");module.exports=function(t,e,o,a){try{return a?e(r(o)[0],o[1]):e(o)}catch(n){var c=t.return;throw void 0!==c&&r(c.call(t)),n}};
-},{"./_an-object":"1087"}],"TuHS":[function(require,module,exports) {
+},{"./_an-object":"AIrJ"}],"TuHS":[function(require,module,exports) {
 var r=require("./_iterators"),e=require("./_wks")("iterator"),t=Array.prototype;module.exports=function(o){return void 0!==o&&(r.Array===o||t[e]===o)};
-},{"./_iterators":"H5R/","./_wks":"I5XL"}],"g07e":[function(require,module,exports) {
+},{"./_iterators":"H5RD","./_wks":"I5XL"}],"g07e":[function(require,module,exports) {
 "use strict";var e=require("./_object-dp"),r=require("./_property-desc");module.exports=function(t,i,o){i in t?e.f(t,i,r(0,o)):t[i]=o};
 },{"./_object-dp":"gGgn","./_property-desc":"zQQJ"}],"um4Z":[function(require,module,exports) {
 var r=require("./_classof"),e=require("./_wks")("iterator"),t=require("./_iterators");module.exports=require("./_core").getIteratorMethod=function(o){if(null!=o)return o[e]||o["@@iterator"]||t[r(o)]};
-},{"./_classof":"pLtw","./_wks":"I5XL","./_iterators":"H5R/","./_core":"6DcE"}],"zP7t":[function(require,module,exports) {
+},{"./_classof":"pLtw","./_wks":"I5XL","./_iterators":"H5RD","./_core":"DcE6"}],"zP7t":[function(require,module,exports) {
 var r=require("./_wks")("iterator"),t=!1;try{var n=[7][r]();n.return=function(){t=!0},Array.from(n,function(){throw 2})}catch(e){}module.exports=function(n,u){if(!u&&!t)return!1;var o=!1;try{var c=[7],a=c[r]();a.next=function(){return{done:o=!0}},c[r]=function(){return a},n(c)}catch(e){}return o};
 },{"./_wks":"I5XL"}],"WZRw":[function(require,module,exports) {
 "use strict";var e=require("./_ctx"),r=require("./_export"),t=require("./_to-object"),i=require("./_iter-call"),o=require("./_is-array-iter"),u=require("./_to-length"),n=require("./_create-property"),a=require("./core.get-iterator-method");r(r.S+r.F*!require("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function(r){var l,c,f,q,_=t(r),h="function"==typeof this?this:Array,v=arguments.length,y=v>1?arguments[1]:void 0,d=void 0!==y,s=0,g=a(_);if(d&&(y=e(y,v>2?arguments[2]:void 0 [...]
-},{"./_ctx":"W8bf","./_export":"Vobs","./_to-object":"2XMZ","./_iter-call":"RG8K","./_is-array-iter":"TuHS","./_to-length":"0KLz","./_create-property":"g07e","./core.get-iterator-method":"um4Z","./_iter-detect":"zP7t"}],"URTo":[function(require,module,exports) {
+},{"./_ctx":"W8bf","./_export":"Vobs","./_to-object":"XMZs","./_iter-call":"RG8K","./_is-array-iter":"TuHS","./_to-length":"KLzx","./_create-property":"g07e","./core.get-iterator-method":"um4Z","./_iter-detect":"zP7t"}],"URTo":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_create-property");r(r.S+r.F*require("./_fails")(function(){function r(){}return!(Array.of.call(r)instanceof r)}),"Array",{of:function(){for(var r=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>r;)e(n,r,arguments[r++]);return n.length=t,n}});
 },{"./_export":"Vobs","./_create-property":"g07e","./_fails":"BI7s"}],"TiCE":[function(require,module,exports) {
 "use strict";var l=require("./_fails");module.exports=function(n,u){return!!n&&l(function(){u?n.call(null,function(){},1):n.call(null)})};
@@ -347,19 +347,19 @@ var r=require("./_wks")("iterator"),t=!1;try{var n=[7][r]();n.return=function(){
 "use strict";var r=require("./_export"),e=require("./_to-iobject"),i=[].join;r(r.P+r.F*(require("./_iobject")!=Object||!require("./_strict-method")(i)),"Array",{join:function(r){return i.call(e(this),void 0===r?",":r)}});
 },{"./_export":"Vobs","./_to-iobject":"zakI","./_iobject":"sUp0","./_strict-method":"TiCE"}],"Ui7t":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_html"),i=require("./_cof"),t=require("./_to-absolute-index"),u=require("./_to-length"),a=[].slice;r(r.P+r.F*require("./_fails")(function(){e&&a.call(e)}),"Array",{slice:function(r,e){var l=u(this.length),n=i(this);if(e=void 0===e?l:e,"Array"==n)return a.call(this,r,e);for(var s=t(r,l),c=t(e,l),h=u(c-s),o=new Array(h),f=0;f<h;f++)o[f]="String"==n?this.charAt(s+f):this[s+f];return o}});
-},{"./_export":"Vobs","./_html":"HDWL","./_cof":"3+Dr","./_to-absolute-index":"tPLG","./_to-length":"0KLz","./_fails":"BI7s"}],"TqUy":[function(require,module,exports) {
+},{"./_export":"Vobs","./_html":"HDWL","./_cof":"DrRY","./_to-absolute-index":"tPLG","./_to-length":"KLzx","./_fails":"BI7s"}],"TqUy":[function(require,module,exports) {
 "use strict";var r=require("./_export"),t=require("./_a-function"),i=require("./_to-object"),e=require("./_fails"),o=[].sort,u=[1,2,3];r(r.P+r.F*(e(function(){u.sort(void 0)})||!e(function(){u.sort(null)})||!require("./_strict-method")(o)),"Array",{sort:function(r){return void 0===r?o.call(i(this)):o.call(i(this),t(r))}});
-},{"./_export":"Vobs","./_a-function":"QKlW","./_to-object":"2XMZ","./_fails":"BI7s","./_strict-method":"TiCE"}],"TVdo":[function(require,module,exports) {
+},{"./_export":"Vobs","./_a-function":"QKlW","./_to-object":"XMZs","./_fails":"BI7s","./_strict-method":"TiCE"}],"TVdo":[function(require,module,exports) {
 var r=require("./_is-object"),e=require("./_is-array"),o=require("./_wks")("species");module.exports=function(i){var t;return e(i)&&("function"!=typeof(t=i.constructor)||t!==Array&&!e(t.prototype)||(t=void 0),r(t)&&null===(t=t[o])&&(t=void 0)),void 0===t?Array:t};
-},{"./_is-object":"/2t/","./_is-array":"JI5q","./_wks":"I5XL"}],"M6RC":[function(require,module,exports) {
+},{"./_is-object":"tZ11","./_is-array":"JI5q","./_wks":"I5XL"}],"M6RC":[function(require,module,exports) {
 var r=require("./_array-species-constructor");module.exports=function(e,n){return new(r(e))(n)};
 },{"./_array-species-constructor":"TVdo"}],"tMyS":[function(require,module,exports) {
 var e=require("./_ctx"),r=require("./_iobject"),t=require("./_to-object"),i=require("./_to-length"),u=require("./_array-species-create");module.exports=function(n,c){var s=1==n,a=2==n,o=3==n,f=4==n,l=6==n,q=5==n||l,_=c||u;return function(u,c,h){for(var v,p,b=t(u),d=r(b),g=e(c,h,3),j=i(d.length),x=0,m=s?_(u,j):a?_(u,0):void 0;j>x;x++)if((q||x in d)&&(p=g(v=d[x],x,b),n))if(s)m[x]=p;else if(p)switch(n){case 3:return!0;case 5:return v;case 6:return x;case 2:m.push(v)}else if(f)return!1;retur [...]
-},{"./_ctx":"W8bf","./_iobject":"sUp0","./_to-object":"2XMZ","./_to-length":"0KLz","./_array-species-create":"M6RC"}],"vDWP":[function(require,module,exports) {
+},{"./_ctx":"W8bf","./_iobject":"sUp0","./_to-object":"XMZs","./_to-length":"KLzx","./_array-species-create":"M6RC"}],"vDWP":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(0),t=require("./_strict-method")([].forEach,!0);r(r.P+r.F*!t,"Array",{forEach:function(r){return e(this,r,arguments[1])}});
 },{"./_export":"Vobs","./_array-methods":"tMyS","./_strict-method":"TiCE"}],"O0lf":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(1);r(r.P+r.F*!require("./_strict-method")([].map,!0),"Array",{map:function(r){return e(this,r,arguments[1])}});
-},{"./_export":"Vobs","./_array-methods":"tMyS","./_strict-method":"TiCE"}],"PXK+":[function(require,module,exports) {
+},{"./_export":"Vobs","./_array-methods":"tMyS","./_strict-method":"TiCE"}],"PXKF":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(2);r(r.P+r.F*!require("./_strict-method")([].filter,!0),"Array",{filter:function(r){return e(this,r,arguments[1])}});
 },{"./_export":"Vobs","./_array-methods":"tMyS","./_strict-method":"TiCE"}],"wD6H":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(3);r(r.P+r.F*!require("./_strict-method")([].some,!0),"Array",{some:function(r){return e(this,r,arguments[1])}});
@@ -367,7 +367,7 @@ var e=require("./_ctx"),r=require("./_iobject"),t=require("./_to-object"),i=requ
 "use strict";var r=require("./_export"),e=require("./_array-methods")(4);r(r.P+r.F*!require("./_strict-method")([].every,!0),"Array",{every:function(r){return e(this,r,arguments[1])}});
 },{"./_export":"Vobs","./_array-methods":"tMyS","./_strict-method":"TiCE"}],"fXgB":[function(require,module,exports) {
 var r=require("./_a-function"),e=require("./_to-object"),i=require("./_iobject"),o=require("./_to-length");module.exports=function(t,n,u,a,f){r(n);var c=e(t),l=i(c),h=o(c.length),q=f?h-1:0,_=f?-1:1;if(u<2)for(;;){if(q in l){a=l[q],q+=_;break}if(q+=_,f?q<0:h<=q)throw TypeError("Reduce of empty array with no initial value")}for(;f?q>=0:h>q;q+=_)q in l&&(a=n(a,l[q],q,c));return a};
-},{"./_a-function":"QKlW","./_to-object":"2XMZ","./_iobject":"sUp0","./_to-length":"0KLz"}],"OWmJ":[function(require,module,exports) {
+},{"./_a-function":"QKlW","./_to-object":"XMZs","./_iobject":"sUp0","./_to-length":"KLzx"}],"OWmJ":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-reduce");r(r.P+r.F*!require("./_strict-method")([].reduce,!0),"Array",{reduce:function(r){return e(this,r,arguments.length,arguments[1],!1)}});
 },{"./_export":"Vobs","./_array-reduce":"fXgB","./_strict-method":"TiCE"}],"k5ri":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-reduce");r(r.P+r.F*!require("./_strict-method")([].reduceRight,!0),"Array",{reduceRight:function(r){return e(this,r,arguments.length,arguments[1],!0)}});
@@ -375,181 +375,181 @@ var r=require("./_a-function"),e=require("./_to-object"),i=require("./_iobject")
 "use strict";var r=require("./_export"),e=require("./_array-includes")(!1),i=[].indexOf,t=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(t||!require("./_strict-method")(i)),"Array",{indexOf:function(r){return t?i.apply(this,arguments)||0:e(this,r,arguments[1])}});
 },{"./_export":"Vobs","./_array-includes":"ntLR","./_strict-method":"TiCE"}],"tgt4":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_to-iobject"),t=require("./_to-integer"),i=require("./_to-length"),n=[].lastIndexOf,u=!!n&&1/[1].lastIndexOf(1,-0)<0;e(e.P+e.F*(u||!require("./_strict-method")(n)),"Array",{lastIndexOf:function(e){if(u)return n.apply(this,arguments)||0;var a=r(this),o=i(a.length),s=o-1;for(arguments.length>1&&(s=Math.min(s,t(arguments[1]))),s<0&&(s=o+s);s>=0;s--)if(s in a&&a[s]===e)return s||0;return-1}});
-},{"./_export":"Vobs","./_to-iobject":"zakI","./_to-integer":"ubM9","./_to-length":"0KLz","./_strict-method":"TiCE"}],"QXjR":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-iobject":"zakI","./_to-integer":"ubM9","./_to-length":"KLzx","./_strict-method":"TiCE"}],"QXjR":[function(require,module,exports) {
 "use strict";var e=require("./_to-object"),t=require("./_to-absolute-index"),i=require("./_to-length");module.exports=[].copyWithin||function(r,o){var n=e(this),u=i(n.length),h=t(r,u),l=t(o,u),d=arguments.length>2?arguments[2]:void 0,s=Math.min((void 0===d?u:t(d,u))-l,u-h),a=1;for(l<h&&h<l+s&&(a=-1,l+=s-1,h+=s-1);s-- >0;)l in n?n[h]=n[l]:delete n[h],h+=a,l+=a;return n};
-},{"./_to-object":"2XMZ","./_to-absolute-index":"tPLG","./_to-length":"0KLz"}],"ke6T":[function(require,module,exports) {
+},{"./_to-object":"XMZs","./_to-absolute-index":"tPLG","./_to-length":"KLzx"}],"ke6T":[function(require,module,exports) {
 var e=require("./_wks")("unscopables"),r=Array.prototype;null==r[e]&&require("./_hide")(r,e,{}),module.exports=function(o){r[e][o]=!0};
-},{"./_wks":"I5XL","./_hide":"nCfi"}],"1c9D":[function(require,module,exports) {
+},{"./_wks":"I5XL","./_hide":"nCfi"}],"c9DC":[function(require,module,exports) {
 var r=require("./_export");r(r.P,"Array",{copyWithin:require("./_array-copy-within")}),require("./_add-to-unscopables")("copyWithin");
 },{"./_export":"Vobs","./_array-copy-within":"QXjR","./_add-to-unscopables":"ke6T"}],"hOOH":[function(require,module,exports) {
 "use strict";var e=require("./_to-object"),t=require("./_to-absolute-index"),r=require("./_to-length");module.exports=function(o){for(var i=e(this),u=r(i.length),n=arguments.length,d=t(n>1?arguments[1]:void 0,u),l=n>2?arguments[2]:void 0,s=void 0===l?u:t(l,u);s>d;)i[d++]=o;return i};
-},{"./_to-object":"2XMZ","./_to-absolute-index":"tPLG","./_to-length":"0KLz"}],"ZBH0":[function(require,module,exports) {
+},{"./_to-object":"XMZs","./_to-absolute-index":"tPLG","./_to-length":"KLzx"}],"ZBH0":[function(require,module,exports) {
 var r=require("./_export");r(r.P,"Array",{fill:require("./_array-fill")}),require("./_add-to-unscopables")("fill");
 },{"./_export":"Vobs","./_array-fill":"hOOH","./_add-to-unscopables":"ke6T"}],"wTIB":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(5),i="find",n=!0;i in[]&&Array(1)[i](function(){n=!1}),r(r.P+r.F*n,"Array",{find:function(r){return e(this,r,arguments.length>1?arguments[1]:void 0)}}),require("./_add-to-unscopables")(i);
-},{"./_export":"Vobs","./_array-methods":"tMyS","./_add-to-unscopables":"ke6T"}],"7ksr":[function(require,module,exports) {
+},{"./_export":"Vobs","./_array-methods":"tMyS","./_add-to-unscopables":"ke6T"}],"ksrS":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-methods")(6),n="findIndex",i=!0;n in[]&&Array(1)[n](function(){i=!1}),r(r.P+r.F*i,"Array",{findIndex:function(r){return e(this,r,arguments.length>1?arguments[1]:void 0)}}),require("./_add-to-unscopables")(n);
 },{"./_export":"Vobs","./_array-methods":"tMyS","./_add-to-unscopables":"ke6T"}],"YBdf":[function(require,module,exports) {
 
 "use strict";var e=require("./_global"),r=require("./_object-dp"),i=require("./_descriptors"),t=require("./_wks")("species");module.exports=function(u){var s=e[u];i&&s&&!s[t]&&r.f(s,t,{configurable:!0,get:function(){return this}})};
-},{"./_global":"8QiI","./_object-dp":"gGgn","./_descriptors":"jVdc","./_wks":"I5XL"}],"Adki":[function(require,module,exports) {
+},{"./_global":"QiIT","./_object-dp":"gGgn","./_descriptors":"jVdc","./_wks":"I5XL"}],"Adki":[function(require,module,exports) {
 require("./_set-species")("Array");
 },{"./_set-species":"YBdf"}],"PECj":[function(require,module,exports) {
 module.exports=function(e,n){return{value:n,done:!!e}};
-},{}],"Z+ck":[function(require,module,exports) {
+},{}],"ZCkT":[function(require,module,exports) {
 "use strict";var e=require("./_add-to-unscopables"),r=require("./_iter-step"),t=require("./_iterators"),i=require("./_to-iobject");module.exports=require("./_iter-define")(Array,"Array",function(e,r){this._t=i(e),this._i=0,this._k=r},function(){var e=this._t,t=this._k,i=this._i++;return!e||i>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?i:"values"==t?e[i]:[i,e[i]])},"values"),t.Arguments=t.Array,e("keys"),e("values"),e("entries");
-},{"./_add-to-unscopables":"ke6T","./_iter-step":"PECj","./_iterators":"H5R/","./_to-iobject":"zakI","./_iter-define":"MKcl"}],"3BaN":[function(require,module,exports) {
+},{"./_add-to-unscopables":"ke6T","./_iter-step":"PECj","./_iterators":"H5RD","./_to-iobject":"zakI","./_iter-define":"MKcl"}],"BaNd":[function(require,module,exports) {
 "use strict";var e=require("./_an-object");module.exports=function(){var i=e(this),r="";return i.global&&(r+="g"),i.ignoreCase&&(r+="i"),i.multiline&&(r+="m"),i.unicode&&(r+="u"),i.sticky&&(r+="y"),r};
-},{"./_an-object":"1087"}],"lK2M":[function(require,module,exports) {
+},{"./_an-object":"AIrJ"}],"lK2M":[function(require,module,exports) {
 
 var e=require("./_global"),r=require("./_inherit-if-required"),i=require("./_object-dp").f,t=require("./_object-gopn").f,n=require("./_is-regexp"),o=require("./_flags"),u=e.RegExp,c=u,s=u.prototype,f=/a/g,a=/a/g,g=new u(f)!==f;if(require("./_descriptors")&&(!g||require("./_fails")(function(){return a[require("./_wks")("match")]=!1,u(f)!=f||u(a)==a||"/a/i"!=u(f,"i")}))){u=function(e,i){var t=this instanceof u,f=n(e),a=void 0===i;return!t&&f&&e.constructor===u&&a?e:r(g?new c(f&&!a?e.source [...]
-},{"./_global":"8QiI","./_inherit-if-required":"IxAU","./_object-dp":"gGgn","./_object-gopn":"HNVq","./_is-regexp":"9r5g","./_flags":"3BaN","./_descriptors":"jVdc","./_fails":"BI7s","./_wks":"I5XL","./_redefine":"jDrK","./_set-species":"YBdf"}],"/8N1":[function(require,module,exports) {
+},{"./_global":"QiIT","./_inherit-if-required":"IxAU","./_object-dp":"gGgn","./_object-gopn":"HNVq","./_is-regexp":"r5g1","./_flags":"BaNd","./_descriptors":"jVdc","./_fails":"BI7s","./_wks":"I5XL","./_redefine":"jDrK","./_set-species":"YBdf"}],"N1Dl":[function(require,module,exports) {
 "use strict";var e=require("./_flags"),l=RegExp.prototype.exec,t=String.prototype.replace,r=l,a="lastIndex",n=function(){var e=/a/,t=/b*/g;return l.call(e,"a"),l.call(t,"a"),0!==e[a]||0!==t[a]}(),o=void 0!==/()??/.exec("")[1],c=n||o;c&&(r=function(r){var c,i,g,u,p=this;return o&&(i=new RegExp("^"+p.source+"$(?!\\s)",e.call(p))),n&&(c=p[a]),g=l.call(p,r),n&&g&&(p[a]=p.global?g.index+g[0].length:c),o&&g&&g.length>1&&t.call(g[0],i,function(){for(u=1;u<arguments.length-2;u++)void 0===argumen [...]
-},{"./_flags":"3BaN"}],"f98m":[function(require,module,exports) {
+},{"./_flags":"BaNd"}],"f98m":[function(require,module,exports) {
 "use strict";var e=require("./_regexp-exec");require("./_export")({target:"RegExp",proto:!0,forced:e!==/./.exec},{exec:e});
-},{"./_regexp-exec":"/8N1","./_export":"Vobs"}],"S072":[function(require,module,exports) {
+},{"./_regexp-exec":"N1Dl","./_export":"Vobs"}],"S072":[function(require,module,exports) {
 require("./_descriptors")&&"g"!=/./g.flags&&require("./_object-dp").f(RegExp.prototype,"flags",{configurable:!0,get:require("./_flags")});
-},{"./_descriptors":"jVdc","./_object-dp":"gGgn","./_flags":"3BaN"}],"jkaB":[function(require,module,exports) {
+},{"./_descriptors":"jVdc","./_object-dp":"gGgn","./_flags":"BaNd"}],"jkaB":[function(require,module,exports) {
 
 "use strict";require("./es6.regexp.flags");var e=require("./_an-object"),r=require("./_flags"),i=require("./_descriptors"),n="toString",t=/./[n],a=function(e){require("./_redefine")(RegExp.prototype,n,e,!0)};require("./_fails")(function(){return"/a/b"!=t.call({source:"a",flags:"b"})})?a(function(){var n=e(this);return"/".concat(n.source,"/","flags"in n?n.flags:!i&&n instanceof RegExp?r.call(n):void 0)}):t.name!=n&&a(function(){return t.call(this)});
-},{"./es6.regexp.flags":"S072","./_an-object":"1087","./_flags":"3BaN","./_descriptors":"jVdc","./_redefine":"jDrK","./_fails":"BI7s"}],"91Js":[function(require,module,exports) {
+},{"./es6.regexp.flags":"S072","./_an-object":"AIrJ","./_flags":"BaNd","./_descriptors":"jVdc","./_redefine":"jDrK","./_fails":"BI7s"}],"Js7k":[function(require,module,exports) {
 "use strict";var r=require("./_string-at")(!0);module.exports=function(t,e,n){return e+(n?r(t,e).length:1)};
-},{"./_string-at":"4j93"}],"1DcM":[function(require,module,exports) {
+},{"./_string-at":"j93N"}],"DcMJ":[function(require,module,exports) {
 "use strict";var e=require("./_classof"),r=RegExp.prototype.exec;module.exports=function(t,o){var c=t.exec;if("function"==typeof c){var n=c.call(t,o);if("object"!=typeof n)throw new TypeError("RegExp exec method returned something other than an Object or null");return n}if("RegExp"!==e(t))throw new TypeError("RegExp#exec called on incompatible receiver");return r.call(t,o)};
-},{"./_classof":"pLtw"}],"0SCK":[function(require,module,exports) {
+},{"./_classof":"pLtw"}],"SCKl":[function(require,module,exports) {
 "use strict";require("./es6.regexp.exec");var e=require("./_redefine"),r=require("./_hide"),n=require("./_fails"),t=require("./_defined"),u=require("./_wks"),i=require("./_regexp-exec"),c=u("species"),o=!n(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}),a=function(){var e=/(?:)/,r=e.exec;e.exec=function(){return r.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();module.exports=function [...]
-},{"./es6.regexp.exec":"f98m","./_redefine":"jDrK","./_hide":"nCfi","./_fails":"BI7s","./_defined":"3V0R","./_wks":"I5XL","./_regexp-exec":"/8N1"}],"Iomp":[function(require,module,exports) {
+},{"./es6.regexp.exec":"f98m","./_redefine":"jDrK","./_hide":"nCfi","./_fails":"BI7s","./_defined":"V0RG","./_wks":"I5XL","./_regexp-exec":"N1Dl"}],"Iomp":[function(require,module,exports) {
 "use strict";var r=require("./_an-object"),e=require("./_to-length"),n=require("./_advance-string-index"),t=require("./_regexp-exec-abstract");require("./_fix-re-wks")("match",1,function(i,a,u,l){return[function(r){var e=i(this),n=null==r?void 0:r[a];return void 0!==n?n.call(r,e):new RegExp(r)[a](String(e))},function(i){var a=l(u,i,this);if(a.done)return a.value;var c=r(i),o=String(this);if(!c.global)return t(c,o);var s=c.unicode;c.lastIndex=0;for(var v,d=[],g=0;null!==(v=t(c,o));){var x [...]
-},{"./_an-object":"1087","./_to-length":"0KLz","./_advance-string-index":"91Js","./_regexp-exec-abstract":"1DcM","./_fix-re-wks":"0SCK"}],"weWA":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_to-length":"KLzx","./_advance-string-index":"Js7k","./_regexp-exec-abstract":"DcMJ","./_fix-re-wks":"SCKl"}],"weWA":[function(require,module,exports) {
 var global = arguments[3];
 var r=arguments[3],e=require("./_an-object"),t=require("./_to-object"),n=require("./_to-length"),i=require("./_to-integer"),a=require("./_advance-string-index"),u=require("./_regexp-exec-abstract"),c=Math.max,l=Math.min,o=Math.floor,v=/\$([$&`']|\d\d?|<[^>]*>)/g,s=/\$([$&`']|\d\d?)/g,g=function(r){return void 0===r?r:String(r)};require("./_fix-re-wks")("replace",2,function(r,d,f,h){return[function(e,t){var n=r(this),i=null==e?void 0:e[d];return void 0!==i?i.call(e,n,t):f.call(String(n),e [...]
-},{"./_an-object":"1087","./_to-object":"2XMZ","./_to-length":"0KLz","./_to-integer":"ubM9","./_advance-string-index":"91Js","./_regexp-exec-abstract":"1DcM","./_fix-re-wks":"0SCK"}],"60EA":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_to-object":"XMZs","./_to-length":"KLzx","./_to-integer":"ubM9","./_advance-string-index":"Js7k","./_regexp-exec-abstract":"DcMJ","./_fix-re-wks":"SCKl"}],"EA9T":[function(require,module,exports) {
 "use strict";var e=require("./_an-object"),r=require("./_same-value"),n=require("./_regexp-exec-abstract");require("./_fix-re-wks")("search",1,function(t,i,a,u){return[function(e){var r=t(this),n=null==e?void 0:e[i];return void 0!==n?n.call(e,r):new RegExp(e)[i](String(r))},function(t){var i=u(a,t,this);if(i.done)return i.value;var s=e(t),l=String(this),c=s.lastIndex;r(c,0)||(s.lastIndex=0);var v=n(s,l);return r(s.lastIndex,c)||(s.lastIndex=c),null===v?-1:v.index}]});
-},{"./_an-object":"1087","./_same-value":"wc3+","./_regexp-exec-abstract":"1DcM","./_fix-re-wks":"0SCK"}],"othv":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_same-value":"wc34","./_regexp-exec-abstract":"DcMJ","./_fix-re-wks":"SCKl"}],"othv":[function(require,module,exports) {
 var r=require("./_an-object"),e=require("./_a-function"),u=require("./_wks")("species");module.exports=function(n,o){var i,t=r(n).constructor;return void 0===t||null==(i=r(t)[u])?o:e(i)};
-},{"./_an-object":"1087","./_a-function":"QKlW","./_wks":"I5XL"}],"1d28":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_a-function":"QKlW","./_wks":"I5XL"}],"d289":[function(require,module,exports) {
 "use strict";var e=require("./_is-regexp"),r=require("./_an-object"),i=require("./_species-constructor"),n=require("./_advance-string-index"),t=require("./_to-length"),u=require("./_regexp-exec-abstract"),l=require("./_regexp-exec"),s=require("./_fails"),c=Math.min,a=[].push,o="split",g="length",h="lastIndex",d=4294967295,f=!s(function(){RegExp(d,"y")});require("./_fix-re-wks")("split",2,function(s,v,p,x){var q;return q="c"=="abbc"[o](/(b)*/)[1]||4!="test"[o](/(?:)/,-1)[g]||2!="ab"[o](/( [...]
-},{"./_is-regexp":"9r5g","./_an-object":"1087","./_species-constructor":"othv","./_advance-string-index":"91Js","./_to-length":"0KLz","./_regexp-exec-abstract":"1DcM","./_regexp-exec":"/8N1","./_fails":"BI7s","./_fix-re-wks":"0SCK"}],"Qz2Q":[function(require,module,exports) {
+},{"./_is-regexp":"r5g1","./_an-object":"AIrJ","./_species-constructor":"othv","./_advance-string-index":"Js7k","./_to-length":"KLzx","./_regexp-exec-abstract":"DcMJ","./_regexp-exec":"N1Dl","./_fails":"BI7s","./_fix-re-wks":"SCKl"}],"Qz2Q":[function(require,module,exports) {
 module.exports=function(o,n,r,i){if(!(o instanceof n)||void 0!==i&&i in o)throw TypeError(r+": incorrect invocation!");return o};
-},{}],"+L3c":[function(require,module,exports) {
+},{}],"L3cZ":[function(require,module,exports) {
 var e=require("./_ctx"),r=require("./_iter-call"),t=require("./_is-array-iter"),i=require("./_an-object"),o=require("./_to-length"),n=require("./core.get-iterator-method"),u={},a={},f=module.exports=function(f,l,c,q,_){var h,s,d,g,p=_?function(){return f}:n(f),v=e(c,q,l?2:1),x=0;if("function"!=typeof p)throw TypeError(f+" is not iterable!");if(t(p)){for(h=o(f.length);h>x;x++)if((g=l?v(i(s=f[x])[0],s[1]):v(f[x]))===u||g===a)return g}else for(d=p.call(f);!(s=d.next()).done;)if((g=r(d,v,s.v [...]
-},{"./_ctx":"W8bf","./_iter-call":"RG8K","./_is-array-iter":"TuHS","./_an-object":"1087","./_to-length":"0KLz","./core.get-iterator-method":"um4Z"}],"fNEO":[function(require,module,exports) {
+},{"./_ctx":"W8bf","./_iter-call":"RG8K","./_is-array-iter":"TuHS","./_an-object":"AIrJ","./_to-length":"KLzx","./core.get-iterator-method":"um4Z"}],"fNEO":[function(require,module,exports) {
 
 
 var e,t,n,i=require("./_ctx"),o=require("./_invoke"),r=require("./_html"),s=require("./_dom-create"),a=require("./_global"),c=a.process,u=a.setImmediate,p=a.clearImmediate,f=a.MessageChannel,l=a.Dispatch,d=0,m={},h="onreadystatechange",g=function(){var e=+this;if(m.hasOwnProperty(e)){var t=m[e];delete m[e],t()}},v=function(e){g.call(e.data)};u&&p||(u=function(t){for(var n=[],i=1;arguments.length>i;)n.push(arguments[i++]);return m[++d]=function(){o("function"==typeof t?t:Function(t),n)},e [...]
-},{"./_ctx":"W8bf","./_invoke":"Grvq","./_html":"HDWL","./_dom-create":"4cz6","./_global":"8QiI","./_cof":"3+Dr"}],"m7QH":[function(require,module,exports) {
+},{"./_ctx":"W8bf","./_invoke":"Grvq","./_html":"HDWL","./_dom-create":"cz6Q","./_global":"QiIT","./_cof":"DrRY"}],"m7QH":[function(require,module,exports) {
 
 
 var e=require("./_global"),t=require("./_task").set,r=e.MutationObserver||e.WebKitMutationObserver,n=e.process,o=e.Promise,a="process"==require("./_cof")(n);module.exports=function(){var i,c,s,v=function(){var e,t;for(a&&(e=n.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(r){throw i?s():c=void 0,r}}c=void 0,e&&e.enter()};if(a)s=function(){n.nextTick(v)};else if(!r||e.navigator&&e.navigator.standalone)if(o&&o.resolve){var u=o.resolve(void 0);s=function(){u.then(v)}}else s=function(){ [...]
-},{"./_global":"8QiI","./_task":"fNEO","./_cof":"3+Dr"}],"hTzn":[function(require,module,exports) {
+},{"./_global":"QiIT","./_task":"fNEO","./_cof":"DrRY"}],"hTzn":[function(require,module,exports) {
 "use strict";var r=require("./_a-function");function e(e){var o,t;this.promise=new e(function(r,e){if(void 0!==o||void 0!==t)throw TypeError("Bad Promise constructor");o=r,t=e}),this.resolve=r(o),this.reject=r(t)}module.exports.f=function(r){return new e(r)};
 },{"./_a-function":"QKlW"}],"X7pO":[function(require,module,exports) {
 module.exports=function(e){try{return{e:!1,v:e()}}catch(r){return{e:!0,v:r}}};
 },{}],"KrKR":[function(require,module,exports) {
 
 var e=require("./_global"),r=e.navigator;module.exports=r&&r.userAgent||"";
-},{"./_global":"8QiI"}],"FQFX":[function(require,module,exports) {
+},{"./_global":"QiIT"}],"FQFX":[function(require,module,exports) {
 var r=require("./_an-object"),e=require("./_is-object"),i=require("./_new-promise-capability");module.exports=function(o,t){if(r(o),e(t)&&t.constructor===o)return t;var u=i.f(o);return(0,u.resolve)(t),u.promise};
-},{"./_an-object":"1087","./_is-object":"/2t/","./_new-promise-capability":"hTzn"}],"lGTj":[function(require,module,exports) {
+},{"./_an-object":"AIrJ","./_is-object":"tZ11","./_new-promise-capability":"hTzn"}],"lGTj":[function(require,module,exports) {
 var r=require("./_redefine");module.exports=function(e,n,i){for(var o in n)r(e,o,n[o],i);return e};
-},{"./_redefine":"jDrK"}],"M+wl":[function(require,module,exports) {
+},{"./_redefine":"jDrK"}],"MWl4":[function(require,module,exports) {
 
 
 "use strict";var e,r,t,i,n=require("./_library"),o=require("./_global"),c=require("./_ctx"),s=require("./_classof"),u=require("./_export"),a=require("./_is-object"),_=require("./_a-function"),h=require("./_an-instance"),f=require("./_for-of"),l=require("./_species-constructor"),v=require("./_task").set,d=require("./_microtask")(),p=require("./_new-promise-capability"),m=require("./_perform"),q=require("./_user-agent"),y=require("./_promise-resolve"),j="Promise",w=o.TypeError,g=o.process, [...]
-},{"./_library":"dG4y","./_global":"8QiI","./_ctx":"W8bf","./_classof":"pLtw","./_export":"Vobs","./_is-object":"/2t/","./_a-function":"QKlW","./_an-instance":"Qz2Q","./_for-of":"+L3c","./_species-constructor":"othv","./_task":"fNEO","./_microtask":"m7QH","./_new-promise-capability":"hTzn","./_perform":"X7pO","./_user-agent":"KrKR","./_promise-resolve":"FQFX","./_wks":"I5XL","./_redefine-all":"lGTj","./_set-to-string-tag":"+IBD","./_set-species":"YBdf","./_core":"6DcE","./_iter-detect":" [...]
+},{"./_library":"dG4y","./_global":"QiIT","./_ctx":"W8bf","./_classof":"pLtw","./_export":"Vobs","./_is-object":"tZ11","./_a-function":"QKlW","./_an-instance":"Qz2Q","./_for-of":"L3cZ","./_species-constructor":"othv","./_task":"fNEO","./_microtask":"m7QH","./_new-promise-capability":"hTzn","./_perform":"X7pO","./_user-agent":"KrKR","./_promise-resolve":"FQFX","./_wks":"I5XL","./_redefine-all":"lGTj","./_set-to-string-tag":"IBDH","./_set-species":"YBdf","./_core":"DcE6","./_iter-detect":" [...]
 var r=require("./_is-object");module.exports=function(e,i){if(!r(e)||e._t!==i)throw TypeError("Incompatible receiver, "+i+" required!");return e};
-},{"./_is-object":"/2t/"}],"I9w7":[function(require,module,exports) {
+},{"./_is-object":"tZ11"}],"I9w7":[function(require,module,exports) {
 "use strict";var e=require("./_object-dp").f,r=require("./_object-create"),t=require("./_redefine-all"),i=require("./_ctx"),n=require("./_an-instance"),_=require("./_for-of"),o=require("./_iter-define"),u=require("./_iter-step"),f=require("./_set-species"),s=require("./_descriptors"),l=require("./_meta").fastKey,c=require("./_validate-collection"),v=s?"_s":"size",a=function(e,r){var t,i=l(r);if("F"!==i)return e._i[i];for(t=e._f;t;t=t.n)if(t.k==r)return t};module.exports={getConstructor:f [...]
-},{"./_object-dp":"gGgn","./_object-create":"EH/8","./_redefine-all":"lGTj","./_ctx":"W8bf","./_an-instance":"Qz2Q","./_for-of":"+L3c","./_iter-define":"MKcl","./_iter-step":"PECj","./_set-species":"YBdf","./_descriptors":"jVdc","./_meta":"nxhn","./_validate-collection":"yRub"}],"J5Ss":[function(require,module,exports) {
+},{"./_object-dp":"gGgn","./_object-create":"EH8e","./_redefine-all":"lGTj","./_ctx":"W8bf","./_an-instance":"Qz2Q","./_for-of":"L3cZ","./_iter-define":"MKcl","./_iter-step":"PECj","./_set-species":"YBdf","./_descriptors":"jVdc","./_meta":"nxhn","./_validate-collection":"yRub"}],"J5Ss":[function(require,module,exports) {
 
 "use strict";var e=require("./_global"),r=require("./_export"),t=require("./_redefine"),n=require("./_redefine-all"),i=require("./_meta"),u=require("./_for-of"),o=require("./_an-instance"),c=require("./_is-object"),a=require("./_fails"),s=require("./_iter-detect"),l=require("./_set-to-string-tag"),f=require("./_inherit-if-required");module.exports=function(d,h,q,_,p,g){var v=e[d],w=v,y=p?"set":"add",x=w&&w.prototype,E={},b=function(e){var r=x[e];t(x,e,"delete"==e?function(e){return!(g&&! [...]
-},{"./_global":"8QiI","./_export":"Vobs","./_redefine":"jDrK","./_redefine-all":"lGTj","./_meta":"nxhn","./_for-of":"+L3c","./_an-instance":"Qz2Q","./_is-object":"/2t/","./_fails":"BI7s","./_iter-detect":"zP7t","./_set-to-string-tag":"+IBD","./_inherit-if-required":"IxAU"}],"ksBa":[function(require,module,exports) {
+},{"./_global":"QiIT","./_export":"Vobs","./_redefine":"jDrK","./_redefine-all":"lGTj","./_meta":"nxhn","./_for-of":"L3cZ","./_an-instance":"Qz2Q","./_is-object":"tZ11","./_fails":"BI7s","./_iter-detect":"zP7t","./_set-to-string-tag":"IBDH","./_inherit-if-required":"IxAU"}],"ksBa":[function(require,module,exports) {
 "use strict";var t=require("./_collection-strong"),e=require("./_validate-collection"),r="Map";module.exports=require("./_collection")(r,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(n){var i=t.getEntry(e(this,r),n);return i&&i.v},set:function(n,i){return t.def(e(this,r),0===n?0:n,i)}},t,!0);
-},{"./_collection-strong":"I9w7","./_validate-collection":"yRub","./_collection":"J5Ss"}],"1jP+":[function(require,module,exports) {
+},{"./_collection-strong":"I9w7","./_validate-collection":"yRub","./_collection":"J5Ss"}],"jPMF":[function(require,module,exports) {
 "use strict";var e=require("./_collection-strong"),t=require("./_validate-collection"),r="Set";module.exports=require("./_collection")(r,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(i){return e.def(t(this,r),i=0===i?0:i,i)}},e);
-},{"./_collection-strong":"I9w7","./_validate-collection":"yRub","./_collection":"J5Ss"}],"3y1p":[function(require,module,exports) {
+},{"./_collection-strong":"I9w7","./_validate-collection":"yRub","./_collection":"J5Ss"}],"y1p1":[function(require,module,exports) {
 "use strict";var e=require("./_redefine-all"),t=require("./_meta").getWeak,r=require("./_an-object"),i=require("./_is-object"),n=require("./_an-instance"),u=require("./_for-of"),o=require("./_array-methods"),s=require("./_has"),a=require("./_validate-collection"),c=o(5),f=o(6),_=0,h=function(e){return e._l||(e._l=new l)},l=function(){this.a=[]},d=function(e,t){return c(e.a,function(e){return e[0]===t})};l.prototype={get:function(e){var t=d(this,e);if(t)return t[1]},has:function(e){return [...]
-},{"./_redefine-all":"lGTj","./_meta":"nxhn","./_an-object":"1087","./_is-object":"/2t/","./_an-instance":"Qz2Q","./_for-of":"+L3c","./_array-methods":"tMyS","./_has":"k/OQ","./_validate-collection":"yRub"}],"Y0Wb":[function(require,module,exports) {
+},{"./_redefine-all":"lGTj","./_meta":"nxhn","./_an-object":"AIrJ","./_is-object":"tZ11","./_an-instance":"Qz2Q","./_for-of":"L3cZ","./_array-methods":"tMyS","./_has":"kOQz","./_validate-collection":"yRub"}],"Y0Wb":[function(require,module,exports) {
 
 "use strict";var e,t=require("./_global"),r=require("./_array-methods")(0),i=require("./_redefine"),n=require("./_meta"),o=require("./_object-assign"),u=require("./_collection-weak"),c=require("./_is-object"),s=require("./_validate-collection"),a=require("./_validate-collection"),l=!t.ActiveXObject&&"ActiveXObject"in t,f="WeakMap",_=n.getWeak,h=Object.isExtensible,q=u.ufstore,v=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},d={get:function(e){if(c(e [...]
-},{"./_global":"8QiI","./_array-methods":"tMyS","./_redefine":"jDrK","./_meta":"nxhn","./_object-assign":"v89L","./_collection-weak":"3y1p","./_is-object":"/2t/","./_validate-collection":"yRub","./_collection":"J5Ss"}],"oeIc":[function(require,module,exports) {
+},{"./_global":"QiIT","./_array-methods":"tMyS","./_redefine":"jDrK","./_meta":"nxhn","./_object-assign":"v89L","./_collection-weak":"y1p1","./_is-object":"tZ11","./_validate-collection":"yRub","./_collection":"J5Ss"}],"oeIc":[function(require,module,exports) {
 "use strict";var e=require("./_collection-weak"),t=require("./_validate-collection"),i="WeakSet";require("./_collection")(i,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(r){return e.def(t(this,i),r,!0)}},e,!1,!0);
-},{"./_collection-weak":"3y1p","./_validate-collection":"yRub","./_collection":"J5Ss"}],"zl/6":[function(require,module,exports) {
+},{"./_collection-weak":"y1p1","./_validate-collection":"yRub","./_collection":"J5Ss"}],"zl6z":[function(require,module,exports) {
 
 for(var r,a=require("./_global"),t=require("./_hide"),e=require("./_uid"),y=e("typed_array"),i=e("view"),A=!(!a.ArrayBuffer||!a.DataView),o=A,p=0,l=9,n="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");p<l;)(r=a[n[p++]])?(t(r.prototype,y,!0),t(r.prototype,i,!0)):o=!1;module.exports={ABV:A,CONSTR:o,TYPED:y,VIEW:i};
-},{"./_global":"8QiI","./_hide":"nCfi","./_uid":"jLFM"}],"dyWK":[function(require,module,exports) {
+},{"./_global":"QiIT","./_hide":"nCfi","./_uid":"jLFM"}],"dyWK":[function(require,module,exports) {
 var r=require("./_to-integer"),e=require("./_to-length");module.exports=function(t){if(void 0===t)return 0;var n=r(t),o=e(n);if(n!==o)throw RangeError("Wrong length!");return o};
-},{"./_to-integer":"ubM9","./_to-length":"0KLz"}],"78hF":[function(require,module,exports) {
+},{"./_to-integer":"ubM9","./_to-length":"KLzx"}],"hFSM":[function(require,module,exports) {
 
 "use strict";var t=require("./_global"),n=require("./_descriptors"),r=require("./_library"),e=require("./_typed"),i=require("./_hide"),o=require("./_redefine-all"),u=require("./_fails"),f=require("./_an-instance"),s=require("./_to-integer"),c=require("./_to-length"),a=require("./_to-index"),h=require("./_object-gopn").f,l=require("./_object-dp").f,g=require("./_array-fill"),_=require("./_set-to-string-tag"),q="ArrayBuffer",v="DataView",w="prototype",I="Wrong length!",b="Wrong index!",y=t [...]
-},{"./_global":"8QiI","./_descriptors":"jVdc","./_library":"dG4y","./_typed":"zl/6","./_hide":"nCfi","./_redefine-all":"lGTj","./_fails":"BI7s","./_an-instance":"Qz2Q","./_to-integer":"ubM9","./_to-length":"0KLz","./_to-index":"dyWK","./_object-gopn":"HNVq","./_object-dp":"gGgn","./_array-fill":"hOOH","./_set-to-string-tag":"+IBD"}],"VqD6":[function(require,module,exports) {
+},{"./_global":"QiIT","./_descriptors":"jVdc","./_library":"dG4y","./_typed":"zl6z","./_hide":"nCfi","./_redefine-all":"lGTj","./_fails":"BI7s","./_an-instance":"Qz2Q","./_to-integer":"ubM9","./_to-length":"KLzx","./_to-index":"dyWK","./_object-gopn":"HNVq","./_object-dp":"gGgn","./_array-fill":"hOOH","./_set-to-string-tag":"IBDH"}],"VqD6":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_typed"),i=require("./_typed-buffer"),t=require("./_an-object"),u=require("./_to-absolute-index"),n=require("./_to-length"),s=require("./_is-object"),o=require("./_global").ArrayBuffer,f=require("./_species-constructor"),c=i.ArrayBuffer,a=i.DataView,q=r.ABV&&o.isView,_=c.prototype.slice,l=r.VIEW,y="ArrayBuffer";e(e.G+e.W+e.F*(o!==c),{ArrayBuffer:c}),e(e.S+e.F*!r.CONSTR,y,{isView:function(e){return q&&q(e)||s(e)&&l in e}}),e(e.P+e.U+e.F [...]
-},{"./_export":"Vobs","./_typed":"zl/6","./_typed-buffer":"78hF","./_an-object":"1087","./_to-absolute-index":"tPLG","./_to-length":"0KLz","./_is-object":"/2t/","./_global":"8QiI","./_species-constructor":"othv","./_fails":"BI7s","./_set-species":"YBdf"}],"q3b2":[function(require,module,exports) {
+},{"./_export":"Vobs","./_typed":"zl6z","./_typed-buffer":"hFSM","./_an-object":"AIrJ","./_to-absolute-index":"tPLG","./_to-length":"KLzx","./_is-object":"tZ11","./_global":"QiIT","./_species-constructor":"othv","./_fails":"BI7s","./_set-species":"YBdf"}],"q3b2":[function(require,module,exports) {
 var e=require("./_export");e(e.G+e.W+e.F*!require("./_typed").ABV,{DataView:require("./_typed-buffer").DataView});
-},{"./_export":"Vobs","./_typed":"zl/6","./_typed-buffer":"78hF"}],"1sXG":[function(require,module,exports) {
+},{"./_export":"Vobs","./_typed":"zl6z","./_typed-buffer":"hFSM"}],"sXGm":[function(require,module,exports) {
 var global = arguments[3];
 var e=arguments[3];if(require("./_descriptors")){var r=require("./_library"),t=(e=require("./_global"),require("./_fails")),n=require("./_export"),i=require("./_typed"),o=require("./_typed-buffer"),u=require("./_ctx"),c=require("./_an-instance"),f=require("./_property-desc"),a=require("./_hide"),l=require("./_redefine-all"),s=require("./_to-integer"),h=require("./_to-length"),d=require("./_to-index"),g=require("./_to-absolute-index"),_=require("./_to-primitive"),v=require("./_has"),p=req [...]
-},{"./_descriptors":"jVdc","./_library":"dG4y","./_global":"8QiI","./_fails":"BI7s","./_export":"Vobs","./_typed":"zl/6","./_typed-buffer":"78hF","./_ctx":"W8bf","./_an-instance":"Qz2Q","./_property-desc":"zQQJ","./_hide":"nCfi","./_redefine-all":"lGTj","./_to-integer":"ubM9","./_to-length":"0KLz","./_to-index":"dyWK","./_to-absolute-index":"tPLG","./_to-primitive":"S7GM","./_has":"k/OQ","./_classof":"pLtw","./_is-object":"/2t/","./_to-object":"2XMZ","./_is-array-iter":"TuHS","./_object- [...]
+},{"./_descriptors":"jVdc","./_library":"dG4y","./_global":"QiIT","./_fails":"BI7s","./_export":"Vobs","./_typed":"zl6z","./_typed-buffer":"hFSM","./_ctx":"W8bf","./_an-instance":"Qz2Q","./_property-desc":"zQQJ","./_hide":"nCfi","./_redefine-all":"lGTj","./_to-integer":"ubM9","./_to-length":"KLzx","./_to-index":"dyWK","./_to-absolute-index":"tPLG","./_to-primitive":"S7GM","./_has":"kOQz","./_classof":"pLtw","./_is-object":"tZ11","./_to-object":"XMZs","./_is-array-iter":"TuHS","./_object- [...]
 require("./_typed-array")("Int8",1,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"6jLc":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"jLcZ":[function(require,module,exports) {
 require("./_typed-array")("Uint8",1,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"dFjM":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"dFjM":[function(require,module,exports) {
 require("./_typed-array")("Uint8",1,function(r){return function(n,t,e){return r(this,n,t,e)}},!0);
-},{"./_typed-array":"1sXG"}],"7XA/":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"XAXm":[function(require,module,exports) {
 require("./_typed-array")("Int16",2,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"Vod2":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"Vod2":[function(require,module,exports) {
 require("./_typed-array")("Uint16",2,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"Mnlj":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"Mnlj":[function(require,module,exports) {
 require("./_typed-array")("Int32",4,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"7JJC":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"JJCv":[function(require,module,exports) {
 require("./_typed-array")("Uint32",4,function(r){return function(n,t,e){return r(this,n,t,e)}});
-},{"./_typed-array":"1sXG"}],"Asas":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"Asas":[function(require,module,exports) {
 require("./_typed-array")("Float32",4,function(r){return function(t,n,e){return r(this,t,n,e)}});
-},{"./_typed-array":"1sXG"}],"ZKGF":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"ZKGF":[function(require,module,exports) {
 require("./_typed-array")("Float64",8,function(r){return function(t,n,e){return r(this,t,n,e)}});
-},{"./_typed-array":"1sXG"}],"sL26":[function(require,module,exports) {
+},{"./_typed-array":"sXGm"}],"sL26":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_a-function"),n=require("./_an-object"),i=(require("./_global").Reflect||{}).apply,u=Function.apply;e(e.S+e.F*!require("./_fails")(function(){i(function(){})}),"Reflect",{apply:function(e,a,l){var t=r(e),c=n(l);return i?i(t,a,c):u.call(t,a,c)}});
-},{"./_export":"Vobs","./_a-function":"QKlW","./_an-object":"1087","./_global":"8QiI","./_fails":"BI7s"}],"n0sj":[function(require,module,exports) {
+},{"./_export":"Vobs","./_a-function":"QKlW","./_an-object":"AIrJ","./_global":"QiIT","./_fails":"BI7s"}],"n0sj":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_object-create"),n=require("./_a-function"),t=require("./_an-object"),u=require("./_is-object"),c=require("./_fails"),i=require("./_bind"),o=(require("./_global").Reflect||{}).construct,a=c(function(){function e(){}return!(o(function(){},[],e)instanceof e)}),l=!c(function(){o(function(){})});e(e.S+e.F*(a||l),"Reflect",{construct:function(e,c){n(e),t(c);var f=arguments.length<3?e:n(arguments[2]);if(l&&!a)return o(e,c,f);if(e==f){switch(c.length){cas [...]
-},{"./_export":"Vobs","./_object-create":"EH/8","./_a-function":"QKlW","./_an-object":"1087","./_is-object":"/2t/","./_fails":"BI7s","./_bind":"s1yo","./_global":"8QiI"}],"4XoP":[function(require,module,exports) {
+},{"./_export":"Vobs","./_object-create":"EH8e","./_a-function":"QKlW","./_an-object":"AIrJ","./_is-object":"tZ11","./_fails":"BI7s","./_bind":"s1yo","./_global":"QiIT"}],"XoPA":[function(require,module,exports) {
 var e=require("./_object-dp"),r=require("./_export"),t=require("./_an-object"),i=require("./_to-primitive");r(r.S+r.F*require("./_fails")(function(){Reflect.defineProperty(e.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(r,u,f){t(r),u=i(u,!0),t(f);try{return e.f(r,u,f),!0}catch(n){return!1}}});
-},{"./_object-dp":"gGgn","./_export":"Vobs","./_an-object":"1087","./_to-primitive":"S7GM","./_fails":"BI7s"}],"/Ygq":[function(require,module,exports) {
+},{"./_object-dp":"gGgn","./_export":"Vobs","./_an-object":"AIrJ","./_to-primitive":"S7GM","./_fails":"BI7s"}],"YgqD":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_object-gopd").f,t=require("./_an-object");e(e.S,"Reflect",{deleteProperty:function(e,o){var u=r(t(e),o);return!(u&&!u.configurable)&&delete e[o]}});
-},{"./_export":"Vobs","./_object-gopd":"EGJe","./_an-object":"1087"}],"CKoQ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_object-gopd":"EGJe","./_an-object":"AIrJ"}],"CKoQ":[function(require,module,exports) {
 "use strict";var e=require("./_export"),t=require("./_an-object"),i=function(e){this._t=t(e),this._i=0;var i,r=this._k=[];for(i in e)r.push(i)};require("./_iter-create")(i,"Object",function(){var e,t=this._k;do{if(this._i>=t.length)return{value:void 0,done:!0}}while(!((e=t[this._i++])in this._t));return{value:e,done:!1}}),e(e.S,"Reflect",{enumerate:function(e){return new i(e)}});
-},{"./_export":"Vobs","./_an-object":"1087","./_iter-create":"gj4O"}],"Jr0s":[function(require,module,exports) {
+},{"./_export":"Vobs","./_an-object":"AIrJ","./_iter-create":"gj4O"}],"Jr0s":[function(require,module,exports) {
 var e=require("./_object-gopd"),r=require("./_object-gpo"),t=require("./_has"),i=require("./_export"),o=require("./_is-object"),u=require("./_an-object");function a(i,c){var v,g,l=arguments.length<3?i:arguments[2];return u(i)===l?i[c]:(v=e.f(i,c))?t(v,"value")?v.value:void 0!==v.get?v.get.call(l):void 0:o(g=r(i))?a(g,c,l):void 0}i(i.S,"Reflect",{get:a});
-},{"./_object-gopd":"EGJe","./_object-gpo":"dlIw","./_has":"k/OQ","./_export":"Vobs","./_is-object":"/2t/","./_an-object":"1087"}],"rsHl":[function(require,module,exports) {
+},{"./_object-gopd":"EGJe","./_object-gpo":"dlIw","./_has":"kOQz","./_export":"Vobs","./_is-object":"tZ11","./_an-object":"AIrJ"}],"rsHl":[function(require,module,exports) {
 var e=require("./_object-gopd"),r=require("./_export"),t=require("./_an-object");r(r.S,"Reflect",{getOwnPropertyDescriptor:function(r,o){return e.f(t(r),o)}});
-},{"./_object-gopd":"EGJe","./_export":"Vobs","./_an-object":"1087"}],"m/tT":[function(require,module,exports) {
+},{"./_object-gopd":"EGJe","./_export":"Vobs","./_an-object":"AIrJ"}],"mTTK":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_object-gpo"),t=require("./_an-object");e(e.S,"Reflect",{getPrototypeOf:function(e){return r(t(e))}});
-},{"./_export":"Vobs","./_object-gpo":"dlIw","./_an-object":"1087"}],"VxVc":[function(require,module,exports) {
+},{"./_export":"Vobs","./_object-gpo":"dlIw","./_an-object":"AIrJ"}],"VxVc":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Reflect",{has:function(e,r){return r in e}});
 },{"./_export":"Vobs"}],"lQ3X":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_an-object"),t=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function(e){return r(e),!t||t(e)}});
-},{"./_export":"Vobs","./_an-object":"1087"}],"yE4E":[function(require,module,exports) {
+},{"./_export":"Vobs","./_an-object":"AIrJ"}],"yE4E":[function(require,module,exports) {
 var e=require("./_object-gopn"),r=require("./_object-gops"),o=require("./_an-object"),t=require("./_global").Reflect;module.exports=t&&t.ownKeys||function(t){var c=e.f(o(t)),n=r.f;return n?c.concat(n(t)):c};
-},{"./_object-gopn":"HNVq","./_object-gops":"vSss","./_an-object":"1087","./_global":"8QiI"}],"vOF/":[function(require,module,exports) {
+},{"./_object-gopn":"HNVq","./_object-gops":"vSss","./_an-object":"AIrJ","./_global":"QiIT"}],"vOF6":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Reflect",{ownKeys:require("./_own-keys")});
-},{"./_export":"Vobs","./_own-keys":"yE4E"}],"1/hW":[function(require,module,exports) {
+},{"./_export":"Vobs","./_own-keys":"yE4E"}],"hWQ0":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_an-object"),t=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function(e){r(e);try{return t&&t(e),!0}catch(n){return!1}}});
-},{"./_export":"Vobs","./_an-object":"1087"}],"AiN1":[function(require,module,exports) {
+},{"./_export":"Vobs","./_an-object":"AIrJ"}],"AiN1":[function(require,module,exports) {
 var e=require("./_object-dp"),r=require("./_object-gopd"),t=require("./_object-gpo"),i=require("./_has"),u=require("./_export"),f=require("./_property-desc"),o=require("./_an-object"),a=require("./_is-object");function c(u,l,n){var q,s,_=arguments.length<4?u:arguments[3],b=r.f(o(u),l);if(!b){if(a(s=t(u)))return c(s,l,n,_);b=f(0)}if(i(b,"value")){if(!1===b.writable||!a(_))return!1;if(q=r.f(_,l)){if(q.get||q.set||!1===q.writable)return!1;q.value=n,e.f(_,l,q)}else e.f(_,l,f(0,n));return!0}r [...]
-},{"./_object-dp":"gGgn","./_object-gopd":"EGJe","./_object-gpo":"dlIw","./_has":"k/OQ","./_export":"Vobs","./_property-desc":"zQQJ","./_an-object":"1087","./_is-object":"/2t/"}],"EPEE":[function(require,module,exports) {
+},{"./_object-dp":"gGgn","./_object-gopd":"EGJe","./_object-gpo":"dlIw","./_has":"kOQz","./_export":"Vobs","./_property-desc":"zQQJ","./_an-object":"AIrJ","./_is-object":"tZ11"}],"EPEE":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_set-proto");r&&e(e.S,"Reflect",{setPrototypeOf:function(e,t){r.check(e,t);try{return r.set(e,t),!0}catch(c){return!1}}});
-},{"./_export":"Vobs","./_set-proto":"I+c1"}],"gMo0":[function(require,module,exports) {
+},{"./_export":"Vobs","./_set-proto":"IC1x"}],"gMo0":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_array-includes")(!0);r(r.P,"Array",{includes:function(r){return e(this,r,arguments.length>1?arguments[1]:void 0)}}),require("./_add-to-unscopables")("includes");
 },{"./_export":"Vobs","./_array-includes":"ntLR","./_add-to-unscopables":"ke6T"}],"M1I7":[function(require,module,exports) {
 "use strict";var r=require("./_is-array"),e=require("./_is-object"),i=require("./_to-length"),t=require("./_ctx"),o=require("./_wks")("isConcatSpreadable");function u(s,a,n,c,f,l,q,_){for(var d,h,p=f,v=0,b=!!q&&t(q,_,3);v<c;){if(v in n){if(d=b?b(n[v],v,a):n[v],h=!1,e(d)&&(h=void 0!==(h=d[o])?!!h:r(d)),h&&l>0)p=u(s,a,d,i(d.length),p,l-1)-1;else{if(p>=9007199254740991)throw TypeError();s[p]=d}p++}v++}return p}module.exports=u;
-},{"./_is-array":"JI5q","./_is-object":"/2t/","./_to-length":"0KLz","./_ctx":"W8bf","./_wks":"I5XL"}],"3zKV":[function(require,module,exports) {
+},{"./_is-array":"JI5q","./_is-object":"tZ11","./_to-length":"KLzx","./_ctx":"W8bf","./_wks":"I5XL"}],"zKV8":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_flatten-into-array"),t=require("./_to-object"),a=require("./_to-length"),i=require("./_a-function"),u=require("./_array-species-create");r(r.P,"Array",{flatMap:function(r){var n,o,c=t(this);return i(r),n=a(c.length),o=u(c,0),e(o,c,c,n,0,1,r,arguments[1]),o}}),require("./_add-to-unscopables")("flatMap");
-},{"./_export":"Vobs","./_flatten-into-array":"M1I7","./_to-object":"2XMZ","./_to-length":"0KLz","./_a-function":"QKlW","./_array-species-create":"M6RC","./_add-to-unscopables":"ke6T"}],"G/dM":[function(require,module,exports) {
+},{"./_export":"Vobs","./_flatten-into-array":"M1I7","./_to-object":"XMZs","./_to-length":"KLzx","./_a-function":"QKlW","./_array-species-create":"M6RC","./_add-to-unscopables":"ke6T"}],"GDMJ":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_flatten-into-array"),t=require("./_to-object"),i=require("./_to-length"),a=require("./_to-integer"),n=require("./_array-species-create");e(e.P,"Array",{flatten:function(){var e=arguments[0],u=t(this),o=i(u.length),q=n(u,0);return r(q,u,u,o,0,void 0===e?1:a(e)),q}}),require("./_add-to-unscopables")("flatten");
-},{"./_export":"Vobs","./_flatten-into-array":"M1I7","./_to-object":"2XMZ","./_to-length":"0KLz","./_to-integer":"ubM9","./_array-species-create":"M6RC","./_add-to-unscopables":"ke6T"}],"K4uP":[function(require,module,exports) {
+},{"./_export":"Vobs","./_flatten-into-array":"M1I7","./_to-object":"XMZs","./_to-length":"KLzx","./_to-integer":"ubM9","./_array-species-create":"M6RC","./_add-to-unscopables":"ke6T"}],"K4uP":[function(require,module,exports) {
 "use strict";var r=require("./_export"),t=require("./_string-at")(!0);r(r.P,"String",{at:function(r){return t(this,r)}});
-},{"./_export":"Vobs","./_string-at":"4j93"}],"m0x4":[function(require,module,exports) {
+},{"./_export":"Vobs","./_string-at":"j93N"}],"m0x4":[function(require,module,exports) {
 var e=require("./_to-length"),r=require("./_string-repeat"),t=require("./_defined");module.exports=function(i,n,l,g){var u=String(t(i)),a=u.length,h=void 0===l?" ":String(l),o=e(n);if(o<=a||""==h)return u;var c=o-a,d=r.call(h,Math.ceil(c/h.length));return d.length>c&&(d=d.slice(0,c)),g?d+u:u+d};
-},{"./_to-length":"0KLz","./_string-repeat":"0Lz3","./_defined":"3V0R"}],"hmYY":[function(require,module,exports) {
+},{"./_to-length":"KLzx","./_string-repeat":"Lz3r","./_defined":"V0RG"}],"hmYY":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_string-pad"),t=require("./_user-agent"),i=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(t);r(r.P+r.F*i,"String",{padStart:function(r){return e(this,r,arguments.length>1?arguments[1]:void 0,!0)}});
 },{"./_export":"Vobs","./_string-pad":"m0x4","./_user-agent":"KrKR"}],"RIKd":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_string-pad"),i=require("./_user-agent"),t=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(i);r(r.P+r.F*t,"String",{padEnd:function(r){return e(this,r,arguments.length>1?arguments[1]:void 0,!1)}});
@@ -559,7 +559,7 @@ var e=require("./_to-length"),r=require("./_string-repeat"),t=require("./_define
 "use strict";require("./_string-trim")("trimRight",function(t){return function(){return t(this,2)}},"trimEnd");
 },{"./_string-trim":"JIX2"}],"dRqM":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_defined"),t=require("./_to-length"),i=require("./_is-regexp"),n=require("./_flags"),s=RegExp.prototype,g=function(e,r){this._r=e,this._s=r};require("./_iter-create")(g,"RegExp String",function(){var e=this._r.exec(this._s);return{value:e,done:null===e}}),e(e.P,"String",{matchAll:function(e){if(r(this),!i(e))throw TypeError(e+" is not a regexp!");var u=String(this),a="flags"in s?String(e.flags):n.call(e),l=new RegExp(e.source,~a.indexO [...]
-},{"./_export":"Vobs","./_defined":"3V0R","./_to-length":"0KLz","./_is-regexp":"9r5g","./_flags":"3BaN","./_iter-create":"gj4O"}],"182e":[function(require,module,exports) {
+},{"./_export":"Vobs","./_defined":"V0RG","./_to-length":"KLzx","./_is-regexp":"r5g1","./_flags":"BaNd","./_iter-create":"gj4O"}],"enid":[function(require,module,exports) {
 require("./_wks-define")("asyncIterator");
 },{"./_wks-define":"ZenZ"}],"Oxke":[function(require,module,exports) {
 require("./_wks-define")("observable");
@@ -567,65 +567,65 @@ require("./_wks-define")("observable");
 var e=require("./_export"),r=require("./_own-keys"),t=require("./_to-iobject"),o=require("./_object-gopd"),i=require("./_create-property");e(e.S,"Object",{getOwnPropertyDescriptors:function(e){for(var u,c,n=t(e),p=o.f,q=r(n),_={},a=0;q.length>a;)void 0!==(c=p(n,u=q[a++]))&&i(_,u,c);return _}});
 },{"./_export":"Vobs","./_own-keys":"yE4E","./_to-iobject":"zakI","./_object-gopd":"EGJe","./_create-property":"g07e"}],"HVWH":[function(require,module,exports) {
 var e=require("./_descriptors"),r=require("./_object-keys"),t=require("./_to-iobject"),o=require("./_object-pie").f;module.exports=function(u){return function(i){for(var c,n=t(i),s=r(n),f=s.length,l=0,p=[];f>l;)c=s[l++],e&&!o.call(n,c)||p.push(u?[c,n[c]]:n[c]);return p}};
-},{"./_descriptors":"jVdc","./_object-keys":"+huX","./_to-iobject":"zakI","./_object-pie":"NRj4"}],"+3ex":[function(require,module,exports) {
+},{"./_descriptors":"jVdc","./_object-keys":"huXi","./_to-iobject":"zakI","./_object-pie":"NRj4"}],"exYH":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_object-to-array")(!1);r(r.S,"Object",{values:function(r){return e(r)}});
 },{"./_export":"Vobs","./_object-to-array":"HVWH"}],"jLAB":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_object-to-array")(!0);r(r.S,"Object",{entries:function(r){return e(r)}});
 },{"./_export":"Vobs","./_object-to-array":"HVWH"}],"Se8n":[function(require,module,exports) {
 "use strict";module.exports=require("./_library")||!require("./_fails")(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete require("./_global")[e]});
-},{"./_library":"dG4y","./_fails":"BI7s","./_global":"8QiI"}],"y7i0":[function(require,module,exports) {
+},{"./_library":"dG4y","./_fails":"BI7s","./_global":"QiIT"}],"y7i0":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_to-object"),t=require("./_a-function"),i=require("./_object-dp");require("./_descriptors")&&e(e.P+require("./_object-forced-pam"),"Object",{__defineGetter__:function(e,u){i.f(r(this),e,{get:t(u),enumerable:!0,configurable:!0})}});
-},{"./_export":"Vobs","./_to-object":"2XMZ","./_a-function":"QKlW","./_object-dp":"gGgn","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"vFGQ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-object":"XMZs","./_a-function":"QKlW","./_object-dp":"gGgn","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"vFGQ":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_to-object"),t=require("./_a-function"),i=require("./_object-dp");require("./_descriptors")&&e(e.P+require("./_object-forced-pam"),"Object",{__defineSetter__:function(e,u){i.f(r(this),e,{set:t(u),enumerable:!0,configurable:!0})}});
-},{"./_export":"Vobs","./_to-object":"2XMZ","./_a-function":"QKlW","./_object-dp":"gGgn","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"urEd":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-object":"XMZs","./_a-function":"QKlW","./_object-dp":"gGgn","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"urEd":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_to-object"),t=require("./_to-primitive"),i=require("./_object-gpo"),o=require("./_object-gopd").f;require("./_descriptors")&&e(e.P+require("./_object-forced-pam"),"Object",{__lookupGetter__:function(e){var u,_=r(this),c=t(e,!0);do{if(u=o(_,c))return u.get}while(_=i(_))}});
-},{"./_export":"Vobs","./_to-object":"2XMZ","./_to-primitive":"S7GM","./_object-gpo":"dlIw","./_object-gopd":"EGJe","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"qicQ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-object":"XMZs","./_to-primitive":"S7GM","./_object-gpo":"dlIw","./_object-gopd":"EGJe","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"qicQ":[function(require,module,exports) {
 "use strict";var e=require("./_export"),r=require("./_to-object"),t=require("./_to-primitive"),i=require("./_object-gpo"),o=require("./_object-gopd").f;require("./_descriptors")&&e(e.P+require("./_object-forced-pam"),"Object",{__lookupSetter__:function(e){var u,_=r(this),c=t(e,!0);do{if(u=o(_,c))return u.set}while(_=i(_))}});
-},{"./_export":"Vobs","./_to-object":"2XMZ","./_to-primitive":"S7GM","./_object-gpo":"dlIw","./_object-gopd":"EGJe","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"VUTp":[function(require,module,exports) {
+},{"./_export":"Vobs","./_to-object":"XMZs","./_to-primitive":"S7GM","./_object-gpo":"dlIw","./_object-gopd":"EGJe","./_descriptors":"jVdc","./_object-forced-pam":"Se8n"}],"VUTp":[function(require,module,exports) {
 var r=require("./_for-of");module.exports=function(e,o){var u=[];return r(e,!1,u.push,u,o),u};
-},{"./_for-of":"+L3c"}],"NEML":[function(require,module,exports) {
+},{"./_for-of":"L3cZ"}],"NEML":[function(require,module,exports) {
 var r=require("./_classof"),e=require("./_array-from-iterable");module.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return e(this)}};
 },{"./_classof":"pLtw","./_array-from-iterable":"VUTp"}],"gCox":[function(require,module,exports) {
 var e=require("./_export");e(e.P+e.R,"Map",{toJSON:require("./_collection-to-json")("Map")});
-},{"./_export":"Vobs","./_collection-to-json":"NEML"}],"Cwp/":[function(require,module,exports) {
+},{"./_export":"Vobs","./_collection-to-json":"NEML"}],"CwpA":[function(require,module,exports) {
 var e=require("./_export");e(e.P+e.R,"Set",{toJSON:require("./_collection-to-json")("Set")});
-},{"./_export":"Vobs","./_collection-to-json":"NEML"}],"8rIF":[function(require,module,exports) {
+},{"./_export":"Vobs","./_collection-to-json":"NEML"}],"rIFj":[function(require,module,exports) {
 "use strict";var r=require("./_export");module.exports=function(e){r(r.S,e,{of:function(){for(var r=arguments.length,e=new Array(r);r--;)e[r]=arguments[r];return new this(e)}})};
-},{"./_export":"Vobs"}],"0bPO":[function(require,module,exports) {
+},{"./_export":"Vobs"}],"bPOJ":[function(require,module,exports) {
 require("./_set-collection-of")("Map");
-},{"./_set-collection-of":"8rIF"}],"swmI":[function(require,module,exports) {
+},{"./_set-collection-of":"rIFj"}],"swmI":[function(require,module,exports) {
 require("./_set-collection-of")("Set");
-},{"./_set-collection-of":"8rIF"}],"Kb3C":[function(require,module,exports) {
+},{"./_set-collection-of":"rIFj"}],"Kb3C":[function(require,module,exports) {
 require("./_set-collection-of")("WeakMap");
-},{"./_set-collection-of":"8rIF"}],"HgXJ":[function(require,module,exports) {
+},{"./_set-collection-of":"rIFj"}],"HgXJ":[function(require,module,exports) {
 require("./_set-collection-of")("WeakSet");
-},{"./_set-collection-of":"8rIF"}],"sb9z":[function(require,module,exports) {
+},{"./_set-collection-of":"rIFj"}],"sb9z":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_a-function"),u=require("./_ctx"),i=require("./_for-of");module.exports=function(t){r(r.S,t,{from:function(r){var t,n,o,s,f=arguments[1];return e(this),(t=void 0!==f)&&e(f),null==r?new this:(n=[],t?(o=0,s=u(f,arguments[2],2),i(r,!1,function(r){n.push(s(r,o++))})):i(r,!1,n.push,n),new this(n))}})};
-},{"./_export":"Vobs","./_a-function":"QKlW","./_ctx":"W8bf","./_for-of":"+L3c"}],"+mnJ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_a-function":"QKlW","./_ctx":"W8bf","./_for-of":"L3cZ"}],"mnJw":[function(require,module,exports) {
 require("./_set-collection-from")("Map");
-},{"./_set-collection-from":"sb9z"}],"0+Wc":[function(require,module,exports) {
+},{"./_set-collection-from":"sb9z"}],"Wc9c":[function(require,module,exports) {
 require("./_set-collection-from")("Set");
 },{"./_set-collection-from":"sb9z"}],"RABC":[function(require,module,exports) {
 require("./_set-collection-from")("WeakMap");
-},{"./_set-collection-from":"sb9z"}],"3ir/":[function(require,module,exports) {
+},{"./_set-collection-from":"sb9z"}],"irWo":[function(require,module,exports) {
 require("./_set-collection-from")("WeakSet");
-},{"./_set-collection-from":"sb9z"}],"Djh+":[function(require,module,exports) {
+},{"./_set-collection-from":"sb9z"}],"DjhA":[function(require,module,exports) {
 var r=require("./_export");r(r.G,{global:require("./_global")});
-},{"./_export":"Vobs","./_global":"8QiI"}],"zQT/":[function(require,module,exports) {
+},{"./_export":"Vobs","./_global":"QiIT"}],"zQTI":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"System",{global:require("./_global")});
-},{"./_export":"Vobs","./_global":"8QiI"}],"sx2w":[function(require,module,exports) {
+},{"./_export":"Vobs","./_global":"QiIT"}],"sx2w":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_cof");r(r.S,"Error",{isError:function(r){return"Error"===e(r)}});
-},{"./_export":"Vobs","./_cof":"3+Dr"}],"5duU":[function(require,module,exports) {
+},{"./_export":"Vobs","./_cof":"DrRY"}],"duUS":[function(require,module,exports) {
 var a=require("./_export");a(a.S,"Math",{clamp:function(a,r,t){return Math.min(t,Math.max(r,a))}});
 },{"./_export":"Vobs"}],"Nayo":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{DEG_PER_RAD:Math.PI/180});
 },{"./_export":"Vobs"}],"pK3L":[function(require,module,exports) {
 var e=require("./_export"),r=180/Math.PI;e(e.S,"Math",{degrees:function(e){return e*r}});
-},{"./_export":"Vobs"}],"3ZVa":[function(require,module,exports) {
+},{"./_export":"Vobs"}],"ZVag":[function(require,module,exports) {
 module.exports=Math.scale||function(e,t,n,a,l){return 0===arguments.length||e!=e||t!=t||n!=n||a!=a||l!=l?NaN:e===1/0||e===-1/0?e:(e-t)*(l-a)/(n-t)+a};
 },{}],"cNya":[function(require,module,exports) {
 var r=require("./_export"),e=require("./_math-scale"),a=require("./_math-fround");r(r.S,"Math",{fscale:function(r,t,u,i,n){return a(e(r,t,u,i,n))}});
-},{"./_export":"Vobs","./_math-scale":"3ZVa","./_math-fround":"6lqk"}],"JpQg":[function(require,module,exports) {
+},{"./_export":"Vobs","./_math-scale":"ZVag","./_math-fround":"lqkS"}],"JpQg":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{iaddh:function(r,a,e,t){var i=r>>>0,n=e>>>0;return(a>>>0)+(t>>>0)+((i&n|(i|n)&~(i+n>>>0))>>>31)|0}});
 },{"./_export":"Vobs"}],"kYRl":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{isubh:function(r,e,t,u){var a=r>>>0,i=t>>>0;return(e>>>0)-(u>>>0)-((~a&i|~(a^i)&a-i>>>0)>>>31)|0}});
@@ -637,69 +637,69 @@ var r=require("./_export");r(r.S,"Math",{RAD_PER_DEG:180/Math.PI});
 var r=require("./_export"),a=Math.PI/180;r(r.S,"Math",{radians:function(r){return r*a}});
 },{"./_export":"Vobs"}],"gu1X":[function(require,module,exports) {
 var e=require("./_export");e(e.S,"Math",{scale:require("./_math-scale")});
-},{"./_export":"Vobs","./_math-scale":"3ZVa"}],"1dDq":[function(require,module,exports) {
+},{"./_export":"Vobs","./_math-scale":"ZVag"}],"dDqv":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{umulh:function(r,u){var e=+r,t=+u,a=65535&e,n=65535&t,h=e>>>16,i=t>>>16,o=(h*n>>>0)+(a*n>>>16);return h*i+(o>>>16)+((a*i>>>0)+(65535&o)>>>16)}});
 },{"./_export":"Vobs"}],"Q8U8":[function(require,module,exports) {
 var r=require("./_export");r(r.S,"Math",{signbit:function(r){return(r=+r)!=r?r:0==r?1/r==1/0:r>0}});
 },{"./_export":"Vobs"}],"q6pY":[function(require,module,exports) {
 
 "use strict";var r=require("./_export"),e=require("./_core"),t=require("./_global"),n=require("./_species-constructor"),i=require("./_promise-resolve");r(r.P+r.R,"Promise",{finally:function(r){var o=n(this,e.Promise||t.Promise),u="function"==typeof r;return this.then(u?function(e){return i(o,r()).then(function(){return e})}:r,u?function(e){return i(o,r()).then(function(){throw e})}:r)}});
-},{"./_export":"Vobs","./_core":"6DcE","./_global":"8QiI","./_species-constructor":"othv","./_promise-resolve":"FQFX"}],"7aUL":[function(require,module,exports) {
+},{"./_export":"Vobs","./_core":"DcE6","./_global":"QiIT","./_species-constructor":"othv","./_promise-resolve":"FQFX"}],"aULC":[function(require,module,exports) {
 "use strict";var r=require("./_export"),e=require("./_new-promise-capability"),i=require("./_perform");r(r.S,"Promise",{try:function(r){var t=e.f(this),o=i(r);return(o.e?t.reject:t.resolve)(o.v),t.promise}});
 },{"./_export":"Vobs","./_new-promise-capability":"hTzn","./_perform":"X7pO"}],"Qewb":[function(require,module,exports) {
 var e=require("./es6.map"),r=require("./_export"),t=require("./_shared")("metadata"),n=t.store||(t.store=new(require("./es6.weak-map"))),i=function(r,t,i){var o=n.get(r);if(!o){if(!i)return;n.set(r,o=new e)}var u=o.get(t);if(!u){if(!i)return;o.set(t,u=new e)}return u},o=function(e,r,t){var n=i(r,t,!1);return void 0!==n&&n.has(e)},u=function(e,r,t){var n=i(r,t,!1);return void 0===n?void 0:n.get(e)},a=function(e,r,t,n){i(t,n,!0).set(e,r)},s=function(e,r){var t=i(e,r,!1),n=[];return t&&t.fo [...]
-},{"./es6.map":"ksBa","./_export":"Vobs","./_shared":"k492","./es6.weak-map":"Y0Wb"}],"zk+d":[function(require,module,exports) {
+},{"./es6.map":"ksBa","./_export":"Vobs","./_shared":"k492","./es6.weak-map":"Y0Wb"}],"zkDQ":[function(require,module,exports) {
 var e=require("./_metadata"),a=require("./_an-object"),t=e.key,r=e.set;e.exp({defineMetadata:function(e,i,n,d){r(e,i,a(n),t(d))}});
-},{"./_metadata":"Qewb","./_an-object":"1087"}],"fy5i":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ"}],"fy5i":[function(require,module,exports) {
 var e=require("./_metadata"),t=require("./_an-object"),r=e.key,a=e.map,i=e.store;e.exp({deleteMetadata:function(e,d){var n=arguments.length<3?void 0:r(arguments[2]),u=a(t(d),n,!1);if(void 0===u||!u.delete(e))return!1;if(u.size)return!0;var l=i.get(d);return l.delete(n),!!l.size||i.delete(d)}});
-},{"./_metadata":"Qewb","./_an-object":"1087"}],"7KBr":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ"}],"KBrn":[function(require,module,exports) {
 var e=require("./_metadata"),r=require("./_an-object"),t=require("./_object-gpo"),a=e.has,n=e.get,u=e.key,i=function(e,r,u){if(a(e,r,u))return n(e,r,u);var o=t(r);return null!==o?i(e,o,u):void 0};e.exp({getMetadata:function(e,t){return i(e,r(t),arguments.length<3?void 0:u(arguments[2]))}});
-},{"./_metadata":"Qewb","./_an-object":"1087","./_object-gpo":"dlIw"}],"y0Gk":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ","./_object-gpo":"dlIw"}],"y0Gk":[function(require,module,exports) {
 var e=require("./es6.set"),r=require("./_array-from-iterable"),t=require("./_metadata"),a=require("./_an-object"),n=require("./_object-gpo"),u=t.keys,i=t.key,o=function(t,a){var i=u(t,a),c=n(t);if(null===c)return i;var l=o(c,a);return l.length?i.length?r(new e(i.concat(l))):l:i};t.exp({getMetadataKeys:function(e){return o(a(e),arguments.length<2?void 0:i(arguments[1]))}});
-},{"./es6.set":"1jP+","./_array-from-iterable":"VUTp","./_metadata":"Qewb","./_an-object":"1087","./_object-gpo":"dlIw"}],"sn4U":[function(require,module,exports) {
+},{"./es6.set":"jPMF","./_array-from-iterable":"VUTp","./_metadata":"Qewb","./_an-object":"AIrJ","./_object-gpo":"dlIw"}],"sn4U":[function(require,module,exports) {
 var e=require("./_metadata"),t=require("./_an-object"),a=e.get,r=e.key;e.exp({getOwnMetadata:function(e,n){return a(e,t(n),arguments.length<3?void 0:r(arguments[2]))}});
-},{"./_metadata":"Qewb","./_an-object":"1087"}],"bQoJ":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ"}],"bQoJ":[function(require,module,exports) {
 var e=require("./_metadata"),t=require("./_an-object"),a=e.keys,r=e.key;e.exp({getOwnMetadataKeys:function(e){return a(t(e),arguments.length<2?void 0:r(arguments[1]))}});
-},{"./_metadata":"Qewb","./_an-object":"1087"}],"jR0d":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ"}],"jR0d":[function(require,module,exports) {
 var e=require("./_metadata"),r=require("./_an-object"),t=require("./_object-gpo"),a=e.has,n=e.key,u=function(e,r,n){if(a(e,r,n))return!0;var i=t(r);return null!==i&&u(e,i,n)};e.exp({hasMetadata:function(e,t){return u(e,r(t),arguments.length<3?void 0:n(arguments[2]))}});
-},{"./_metadata":"Qewb","./_an-object":"1087","./_object-gpo":"dlIw"}],"tWeA":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ","./_object-gpo":"dlIw"}],"tWeA":[function(require,module,exports) {
 var e=require("./_metadata"),a=require("./_an-object"),t=e.has,r=e.key;e.exp({hasOwnMetadata:function(e,n){return t(e,a(n),arguments.length<3?void 0:r(arguments[2]))}});
-},{"./_metadata":"Qewb","./_an-object":"1087"}],"rYHV":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ"}],"rYHV":[function(require,module,exports) {
 var e=require("./_metadata"),t=require("./_an-object"),a=require("./_a-function"),r=e.key,n=e.set;e.exp({metadata:function(e,i){return function(u,o){n(e,i,(void 0!==o?t:a)(u),r(o))}}});
-},{"./_metadata":"Qewb","./_an-object":"1087","./_a-function":"QKlW"}],"kvVj":[function(require,module,exports) {
+},{"./_metadata":"Qewb","./_an-object":"AIrJ","./_a-function":"QKlW"}],"kvVj":[function(require,module,exports) {
 
 var r=require("./_export"),e=require("./_microtask")(),i=require("./_global").process,o="process"==require("./_cof")(i);r(r.G,{asap:function(r){var a=o&&i.domain;e(a?a.bind(r):r)}});
-},{"./_export":"Vobs","./_microtask":"m7QH","./_global":"8QiI","./_cof":"3+Dr"}],"iOLx":[function(require,module,exports) {
+},{"./_export":"Vobs","./_microtask":"m7QH","./_global":"QiIT","./_cof":"DrRY"}],"iOLx":[function(require,module,exports) {
 
 "use strict";var r=require("./_export"),t=require("./_global"),n=require("./_core"),e=require("./_microtask")(),i=require("./_wks")("observable"),o=require("./_a-function"),u=require("./_an-object"),c=require("./_an-instance"),f=require("./_redefine-all"),s=require("./_hide"),a=require("./_for-of"),v=a.RETURN,h=function(r){return null==r?void 0:o(r)},l=function(r){var t=r._c;t&&(r._c=void 0,t())},_=function(r){return void 0===r._o},b=function(r){_(r)||(r._o=void 0,l(r))},y=function(r,t){ [...]
-},{"./_export":"Vobs","./_global":"8QiI","./_core":"6DcE","./_microtask":"m7QH","./_wks":"I5XL","./_a-function":"QKlW","./_an-object":"1087","./_an-instance":"Qz2Q","./_redefine-all":"lGTj","./_hide":"nCfi","./_for-of":"+L3c","./_set-species":"YBdf"}],"p/UQ":[function(require,module,exports) {
+},{"./_export":"Vobs","./_global":"QiIT","./_core":"DcE6","./_microtask":"m7QH","./_wks":"I5XL","./_a-function":"QKlW","./_an-object":"AIrJ","./_an-instance":"Qz2Q","./_redefine-all":"lGTj","./_hide":"nCfi","./_for-of":"L3cZ","./_set-species":"YBdf"}],"pUQh":[function(require,module,exports) {
 
 var e=require("./_global"),t=require("./_export"),n=require("./_user-agent"),r=[].slice,u=/MSIE .\./.test(n),i=function(e){return function(t,n){var u=arguments.length>2,i=!!u&&r.call(arguments,2);return e(u?function(){("function"==typeof t?t:Function(t)).apply(this,i)}:t,n)}};t(t.G+t.B+t.F*u,{setTimeout:i(e.setTimeout),setInterval:i(e.setInterval)});
-},{"./_global":"8QiI","./_export":"Vobs","./_user-agent":"KrKR"}],"44uO":[function(require,module,exports) {
+},{"./_global":"QiIT","./_export":"Vobs","./_user-agent":"KrKR"}],"uORE":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_task");e(e.G+e.B,{setImmediate:r.set,clearImmediate:r.clear});
 },{"./_export":"Vobs","./_task":"fNEO"}],"kCWy":[function(require,module,exports) {
 
 for(var e=require("./es6.array.iterator"),t=require("./_object-keys"),i=require("./_redefine"),r=require("./_global"),s=require("./_hide"),L=require("./_iterators"),a=require("./_wks"),o=a("iterator"),l=a("toStringTag"),S=L.Array,n={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArr [...]
-},{"./es6.array.iterator":"Z+ck","./_object-keys":"+huX","./_redefine":"jDrK","./_global":"8QiI","./_hide":"nCfi","./_iterators":"H5R/","./_wks":"I5XL"}],"y1LN":[function(require,module,exports) {
+},{"./es6.array.iterator":"ZCkT","./_object-keys":"huXi","./_redefine":"jDrK","./_global":"QiIT","./_hide":"nCfi","./_iterators":"H5RD","./_wks":"I5XL"}],"y1LN":[function(require,module,exports) {
 require("./modules/es6.symbol"),require("./modules/es6.object.create"),require("./modules/es6.object.define-property"),require("./modules/es6.object.define-properties"),require("./modules/es6.object.get-own-property-descriptor"),require("./modules/es6.object.get-prototype-of"),require("./modules/es6.object.keys"),require("./modules/es6.object.get-own-property-names"),require("./modules/es6.object.freeze"),require("./modules/es6.object.seal"),require("./modules/es6.object.prevent-extensio [...]
-},{"./modules/es6.symbol":"rGq9","./modules/es6.object.create":"v5CS","./modules/es6.object.define-property":"pS46","./modules/es6.object.define-properties":"sbXv","./modules/es6.object.get-own-property-descriptor":"0xCv","./modules/es6.object.get-prototype-of":"3Dkc","./modules/es6.object.keys":"RpZ9","./modules/es6.object.get-own-property-names":"69mV","./modules/es6.object.freeze":"bkZb","./modules/es6.object.seal":"LEG2","./modules/es6.object.prevent-extensions":"2OeT","./modules/es6 [...]
+},{"./modules/es6.symbol":"rGq9","./modules/es6.object.create":"v5CS","./modules/es6.object.define-property":"pS46","./modules/es6.object.define-properties":"sbXv","./modules/es6.object.get-own-property-descriptor":"xCvV","./modules/es6.object.get-prototype-of":"Dkc5","./modules/es6.object.keys":"RpZ9","./modules/es6.object.get-own-property-names":"mVnl","./modules/es6.object.freeze":"bkZb","./modules/es6.object.seal":"LEG2","./modules/es6.object.prevent-extensions":"OeTo","./modules/es6 [...]
 var global = arguments[3];
 var t=arguments[3];!function(t){"use strict";var r,e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",u="object"==typeof module,h=t.regeneratorRuntime;if(h)u&&(module.exports=h);else{(h=t.regeneratorRuntime=u?module.exports:{}).wrap=w;var s="suspendedStart",f="suspendedYield",l="executing",p="completed",y={},v={};v[i]=function(){return this};var d=Object.getPrototypeO [...]
 },{}],"dUxS":[function(require,module,exports) {
 module.exports=function(n,r){var t=r===Object(r)?function(n){return r[n]}:r;return function(r){return String(r).replace(n,t)}};
-},{}],"41Ao":[function(require,module,exports) {
+},{}],"AoXz":[function(require,module,exports) {
 var e=require("./_export"),r=require("./_replacer")(/[\\^$*+?.()|[\]{}]/g,"\\$&");e(e.S,"RegExp",{escape:function(e){return r(e)}});
 },{"./_export":"Vobs","./_replacer":"dUxS"}],"Rlym":[function(require,module,exports) {
 require("../../modules/core.regexp.escape"),module.exports=require("../../modules/_core").RegExp.escape;
-},{"../../modules/core.regexp.escape":"41Ao","../../modules/_core":"6DcE"}],"0zUF":[function(require,module,exports) {
+},{"../../modules/core.regexp.escape":"AoXz","../../modules/_core":"DcE6"}],"zUFY":[function(require,module,exports) {
 var global = arguments[3];
 
 var e=arguments[3];if(require("core-js/shim"),require("regenerator-runtime/runtime"),require("core-js/fn/regexp/escape"),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;var r="defineProperty";function i(e,i,n){e[i]||Object[r](e,i,{writable:!0,configurable:!0,value:n})}i(String.prototype,"padLeft","".padStart),i(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,fin [...]
 },{"core-js/shim":"y1LN","regenerator-runtime/runtime":"VuXv","core-js/fn/regexp/escape":"Rlym"}],"sKvN":[function(require,module,exports) {
-"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function s(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var n=function(){function e(s){t(this,e),this.doc=document,this.nav=this.doc.querySe [...]
+"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var s=e[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function n(t,n,s){return n&&e(t.prototype,n),s&&e(t,s),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var s=function(){function e(n){t(this,e),this.doc=document,this.nav=this.doc.querySe [...]
 },{}],"j3Sc":[function(require,module,exports) {
 "use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function i(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var n=function(){function e(){t(this,e),this.header=$("header.mdl-layout__header"),t [...]
 },{}],"brfV":[function(require,module,exports) {
-"use strict";require("../scss/sphinx_materialdesign_theme.scss"),require("material-design-lite"),require("babel-polyfill");var a=e(require("./scrollspy")),t=e(require("./adjust-height"));function e(a){return a&&a.__esModule?a:{default:a}}$(function(){var t,e;t=$(".mdl-layout__drawer nav").find("li"),$.each(t,function(a,t){var e=$(t),n=$('<span class="link-wrapper"></span>'),l=e.children("a");e.append(n.append(l));var i=e.hasClass("current")&&!l.hasClass("current"),o=e.children("ul");if(o [...]
-},{"../scss/sphinx_materialdesign_theme.scss":"BS4D","material-design-lite":"vKy7","babel-polyfill":"0zUF","./scrollspy":"sKvN","./adjust-height":"j3Sc"}]},{},["brfV"], null)
+"use strict";require("../scss/sphinx_materialdesign_theme.scss"),require("material-design-lite"),require("babel-polyfill");var a=e(require("./scrollspy")),t=e(require("./adjust-height"));function e(a){return a&&a.__esModule?a:{default:a}}$(function(){var t,e;t=$(".mdl-layout__drawer nav").find("li"),$.each(t,function(a,t){var e=$(t),n=$('<span class="link-wrapper"></span>'),l=e.children("a");e.append(n.append(l));var o=e.hasClass("current")&&!l.hasClass("current"),s=e.children("ul");if(s [...]
+},{"../scss/sphinx_materialdesign_theme.scss":"BS4D","material-design-lite":"vKy7","babel-polyfill":"zUFY","./scrollspy":"sKvN","./adjust-height":"j3Sc"}]},{},["brfV"], null)
 //# sourceMappingURL=/sphinx_materialdesign_theme.js.map
\ No newline at end of file
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map
index 4c4c70d..c2e4588 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map
+++ b/docs/python_docs/themes/mx-theme/mxtheme/static/sphinx_materialdesign_theme.js.map
@@ -1 +1 @@
-{"version":3,"sources":["ripple.js","tabs.js","layout.js","mdlComponentHandler.js","rAF.js","button.js","checkbox.js","icon-toggle.js","menu.js","progress.js","radio.js","slider.js","snackbar.js","spinner.js","switch.js","textfield.js","tooltip.js","data-table.js","../../node_modules/core-js/modules/_global.js","../../node_modules/core-js/modules/_has.js","../../node_modules/core-js/modules/_fails.js","../../node_modules/core-js/modules/_descriptors.js","../../node_modules/core-js/module [...]
\ No newline at end of file
+{"version":3,"sources":["ripple.js","tabs.js","layout.js","mdlComponentHandler.js","rAF.js","button.js","checkbox.js","icon-toggle.js","menu.js","progress.js","radio.js","slider.js","snackbar.js","spinner.js","switch.js","textfield.js","tooltip.js","data-table.js","../../node_modules/core-js/modules/_global.js","../../node_modules/core-js/modules/_has.js","../../node_modules/core-js/modules/_fails.js","../../node_modules/core-js/modules/_descriptors.js","../../node_modules/core-js/module [...]
\ No newline at end of file
diff --git a/docs/python_docs/themes/mx-theme/mxtheme/theme.conf b/docs/python_docs/themes/mx-theme/mxtheme/theme.conf
index c1f2dd4..684804f 100644
--- a/docs/python_docs/themes/mx-theme/mxtheme/theme.conf
+++ b/docs/python_docs/themes/mx-theme/mxtheme/theme.conf
@@ -6,7 +6,7 @@ pygments_style = friendly
 
 [options]
 header_links =
-relative_url = /
+relative_url = /versions/1.7/
 primary_color = blue
 accent_color = deep_orange
 
diff --git a/docs/python_docs/themes/mx-theme/src/js/scrollspy.js b/docs/python_docs/themes/mx-theme/src/js/scrollspy.js
index cd4e798..6e741c7 100644
--- a/docs/python_docs/themes/mx-theme/src/js/scrollspy.js
+++ b/docs/python_docs/themes/mx-theme/src/js/scrollspy.js
@@ -42,6 +42,21 @@ export default class ScrollSpy {
             }, 1);
         });
 
+        this.scrollElement.addEventListener("click", (e) => {
+            const target = e.target;
+            if (target.tagName !== "A") return;
+            window.onclickToc = true;
+            for (let i = 0, max = this.nav.length; i < max; i++) {
+                const navElement = this.nav[i];
+                if (navElement.href === target.href) {
+                    navElement.classList.add(this.className);
+                    navElement.classList.add('mdl-color-text--primary');
+                } else {
+                    navElement.classList.remove(this.className);
+                    navElement.classList.remove('mdl-color-text--primary');
+                }
+            }
+        });
     }
 
     getContents(contentSelector) {
@@ -72,15 +87,21 @@ export default class ScrollSpy {
 
     isView(element) {
         const scrollTop = this.scrollElement.scrollTop;
-        const calcBotom = scrollTop + this.offsetTop;
+        const subHeaderRect = document.querySelector(".mdl-layout__header-row").getBoundingClientRect();
+        const headerHeight = subHeaderRect.top + subHeaderRect.height;
+        const scrollBottom = scrollTop + window.innerHeight - headerHeight;
         const rect = element.getBoundingClientRect();
         const elementTop = rect.top + scrollTop;
         const elementBottom = elementTop + element.offsetHeight;
 
-        return elementTop <= calcBotom + this.offsetTop && elementBottom > scrollTop + this.offsetTop;
+        return elementTop < scrollBottom - 30 && elementBottom > scrollTop + headerHeight + 30;
     }
 
     toggleNavClass(elements) {
+        if (window.onclickToc) {
+            window.onclickToc = false;
+            return;
+          }
         let maxDepth = 0;
         let maxDepthElement = $();
 
diff --git a/docs/python_docs/themes/mx-theme/src/js/sphinx_materialdesign_theme.js b/docs/python_docs/themes/mx-theme/src/js/sphinx_materialdesign_theme.js
index 5f14255..1165c1b 100644
--- a/docs/python_docs/themes/mx-theme/src/js/sphinx_materialdesign_theme.js
+++ b/docs/python_docs/themes/mx-theme/src/js/sphinx_materialdesign_theme.js
@@ -172,4 +172,22 @@ $(function() {
 
     $('.mdl-layout').css('visibility', 'visible');
 
+    const addScrollAwareHeaderAnimation = function() {
+        let preScrollTop, curScrollTop = 0;
+        const scrollContent = $("main.mdl-layout__content");
+        scrollContent.focus();
+        const navBar = $('header.mdl-layout__header');
+        const navBarHeight = navBar.height();
+    
+        scrollContent.scroll(function () {
+            curScrollTop = scrollContent.scrollTop();
+            if (preScrollTop < curScrollTop && curScrollTop > navBarHeight) {
+                navBar.addClass("scrollUp");
+            } else if (preScrollTop > curScrollTop && !(curScrollTop <= navBarHeight)) {
+                navBar.removeClass("scrollUp");
+            }
+            preScrollTop = curScrollTop;
+        });
+    }
+    addScrollAwareHeaderAnimation();
 });
diff --git a/docs/python_docs/themes/mx-theme/src/scss/_root.scss b/docs/python_docs/themes/mx-theme/src/scss/_root.scss
index f805a8f..b1954a5 100644
--- a/docs/python_docs/themes/mx-theme/src/scss/_root.scss
+++ b/docs/python_docs/themes/mx-theme/src/scss/_root.scss
@@ -14,6 +14,28 @@ body {
     outline: none;
  }
 
+.mdl-layout__content header.mdl-layout__drawer {
+    display: none;
+}
+
+.mdl-layout__container {
+    height: calc(100% - 76px);
+    margin-top: 76px;
+}
+.mdl-layout__header {
+    position: fixed;
+    transition: transform 0.5s;
+}
+.mdl-layout--fixed-drawer>.mdl-layout__content {
+    margin-left: 300px;    
+}
+
+@media screen and (max-width: 1024px) {
+    .mdl-layout--fixed-drawer>.mdl-layout__content {
+        margin-left:0
+    }
+}
+
 h1, h2, h3, h4, h5, h6, blockquote, span.mdl-layout-title,
 a.download > code.download {
     font-family: $body_font_family;
diff --git a/docs/python_docs/themes/mx-theme/src/scss/footer/_footer.scss b/docs/python_docs/themes/mx-theme/src/scss/footer/_footer.scss
index eee96cb..5ce4768 100644
--- a/docs/python_docs/themes/mx-theme/src/scss/footer/_footer.scss
+++ b/docs/python_docs/themes/mx-theme/src/scss/footer/_footer.scss
@@ -119,6 +119,8 @@ footer.mdl-mini-footer {
   border-top: 1px solid $grey-color-light;
   padding: $spacing-unit 0;
   background-color: #424242;
+  position: relative;
+  z-index: 10;
   .footer-category-title {
     color: $color-mxnet;
   }
@@ -136,6 +138,8 @@ footer.mdl-mini-footer {
   background-color: #424242;
   padding-top: 40px;
   padding-bottom: 10px;
+  position: relative;
+  z-index: 10;
 }
 
 .footer-heading {
diff --git a/docs/python_docs/themes/mx-theme/src/scss/layout/_layout.scss b/docs/python_docs/themes/mx-theme/src/scss/layout/_layout.scss
index 2654a2c..3e4f802 100644
--- a/docs/python_docs/themes/mx-theme/src/scss/layout/_layout.scss
+++ b/docs/python_docs/themes/mx-theme/src/scss/layout/_layout.scss
@@ -25,14 +25,9 @@
     )
 );
 
-.mdl-layout {
-    margin-top: 76px;
-}
-
-
 .document {
     width: 100%;
-    margin: 0 auto;
+    margin: 84px auto;
     display: flex;
 
     @media (min-width: $xl-breakpoint) {
diff --git a/docs/static_site/Makefile b/docs/static_site/Makefile
index 761f966..a974e12 100644
--- a/docs/static_site/Makefile
+++ b/docs/static_site/Makefile
@@ -19,6 +19,7 @@ all: html
 
 html:
 	mkdir -p build
+	wget -O src/assets/js/jquery-3.3.1.min.js https://code.jquery.com/jquery-3.3.1.min.js
 	cd src && bundle install && JEKYLL_ENV=production bundle exec jekyll build --config _config_prod.yml -d ../build/html && cd ..
 
 
diff --git a/docs/static_site/src/_config.yml b/docs/static_site/src/_config.yml
index 6dcc9c2..4aeab48 100644
--- a/docs/static_site/src/_config.yml
+++ b/docs/static_site/src/_config.yml
@@ -37,6 +37,19 @@ description: >- # this means to ignore newlines until "baseurl:"
 twitter_username: apachemxnet
 github_username:  apache/incubator-mxnet
 youtube_username: apachemxnet
+baseurl: /versions/1.7
+versions: 
+  - master
+  - 1.7
+  - 1.6
+  - 1.5.0
+  - 1.4.1
+  - 1.3.1
+  - 1.2.1
+  - 1.1.0
+  - 1.0.0
+  - 0.12.1
+  - 0.11.0
 
 # Build settings
 markdown: kramdown
diff --git a/docs/static_site/src/_config_beta.yml b/docs/static_site/src/_config_beta.yml
index dc4ecdd..9e8aceb 100644
--- a/docs/static_site/src/_config_beta.yml
+++ b/docs/static_site/src/_config_beta.yml
@@ -39,7 +39,20 @@ url: https://thomasdelteil.github.io
 twitter_username: apachemxnet
 github_username:  apache/incubator-mxnet
 youtube_username: apachemxnet
-
+baseurl: /versions/1.7
+versions: 
+  - master
+  - 1.7
+  - 1.6
+  - 1.5.0
+  - 1.4.1
+  - 1.3.1
+  - 1.2.1
+  - 1.1.0
+  - 1.0.0
+  - 0.12.1
+  - 0.11.0
+  
 # Build settings
 markdown: redcarpet
 redcarpet:
diff --git a/docs/static_site/src/_config_prod.yml b/docs/static_site/src/_config_prod.yml
index 6c91fe9..2df1879 100644
--- a/docs/static_site/src/_config_prod.yml
+++ b/docs/static_site/src/_config_prod.yml
@@ -39,7 +39,20 @@ twitter_username: apachemxnet
 github_username:  apache/incubator-mxnet
 youtube_username: apachemxnet
 google_analytics: UA-96378503-1
-
+baseurl: /versions/1.7
+versions: 
+  - master
+  - 1.7
+  - 1.6
+  - 1.5.0
+  - 1.4.1
+  - 1.3.1
+  - 1.2.1
+  - 1.1.0
+  - 1.0.0
+  - 0.12.1
+  - 0.11.0
+  
 # Build settings
 markdown: redcarpet
 redcarpet:
diff --git a/docs/static_site/src/_includes/feedback.html b/docs/static_site/src/_includes/feedback.html
new file mode 100644
index 0000000..08b52b6
--- /dev/null
+++ b/docs/static_site/src/_includes/feedback.html
@@ -0,0 +1,10 @@
+<hr class="feedback-hr-top" />
+<div class="feedback-container">
+  <div class="feedback-question">Did this page help you?</div>
+  <div class="feedback-answer-container">
+    <div class="feedback-answer yes-link" data-response="yes">Yes</div>
+    <div class="feedback-answer no-link" data-response="no">No</div>
+  </div>
+  <div class="feedback-thank-you">Thanks for your feedback!</div>
+</div>
+<hr class="feedback-hr-bottom" />
diff --git a/docs/static_site/src/_includes/get_started/cloud/cpu.md b/docs/static_site/src/_includes/get_started/cloud/cpu.md
index 5415e96..4405827 100644
--- a/docs/static_site/src/_includes/get_started/cloud/cpu.md
+++ b/docs/static_site/src/_includes/get_started/cloud/cpu.md
@@ -1,8 +1,16 @@
-MXNet should work on any cloud provider's CPU-only instances. Follow the Python pip install
-instructions,
-Docker instructions, or try the following preinstalled option.
+MXNet should work on any cloud provider's CPU-only instances. Follow the Python
+pip install instructions, Docker instructions, or try the following preinstalled
+option.
+
+WARNING: the following cloud provider packages are provided for your convenience
+but they point to packages that are *not* provided nor endorsed by the Apache
+Software Foundation. As such, they might contain software components with more
+restrictive licenses than the Apache License and you'll need to decide whether
+they are appropriate for your usage. Like all Apache Releases, the official
+Apache MXNet (incubating) releases consist of source code only and are found at
+the [Download page](https://mxnet.apache.org/get_started/download).
 
 * **Amazon Web Services**
 - [AWS Deep Learning AMI](https://aws.amazon.com/machine-learning/amis/) - Preinstalled
 Conda environments
-for Python 2 or 3 with MXNet and MKL-DNN.
\ No newline at end of file
+for Python 2 or 3 with MXNet and MKL-DNN.
diff --git a/docs/static_site/src/_includes/get_started/cloud/gpu.md b/docs/static_site/src/_includes/get_started/cloud/gpu.md
index 725d965..8f64a3a 100644
--- a/docs/static_site/src/_includes/get_started/cloud/gpu.md
+++ b/docs/static_site/src/_includes/get_started/cloud/gpu.md
@@ -1,7 +1,14 @@
-MXNet is available on several cloud providers with GPU support. You can also find
-GPU/CPU-hybrid support for
-use cases like scalable inference, or even fractional GPU support with AWS Elastic
-Inference.
+MXNet is available on several cloud providers with GPU support. You can also
+find GPU/CPU-hybrid support for use cases like scalable inference, or even
+fractional GPU support with AWS Elastic Inference.
+
+WARNING: the following cloud provider packages are provided for your convenience
+but they point to packages that are *not* provided nor endorsed by the Apache
+Software Foundation. As such, they might contain software components with more
+restrictive licenses than the Apache License and you'll need to decide whether
+they are appropriate for your usage. Like all Apache Releases, the official
+Apache MXNet (incubating) releases consist of source code only and are found at
+the [Download page](https://mxnet.apache.org/get_started/download).
 
 * **Alibaba**
 - [NVIDIA
@@ -29,4 +36,4 @@ All NVIDIA VMs use the [NVIDIA MXNet Docker
 container](https://ngc.nvidia.com/catalog/containers/nvidia:mxnet).
 Follow the [container usage
 instructions](https://ngc.nvidia.com/catalog/containers/nvidia:mxnet) found in
-[NVIDIA's container repository](https://ngc.nvidia.com/).
\ No newline at end of file
+[NVIDIA's container repository](https://ngc.nvidia.com/).
diff --git a/docs/static_site/src/_includes/get_started/get_started.html b/docs/static_site/src/_includes/get_started/get_started.html
index 77367c7..ccec45c 100644
--- a/docs/static_site/src/_includes/get_started/get_started.html
+++ b/docs/static_site/src/_includes/get_started/get_started.html
@@ -10,8 +10,10 @@
 <script src="{{'/assets/js/options.js'|relative_url}}"></script>
 
 <div class="install-selector">
-    <h2>Installing MXNet</h2>
-    <p>Indicate your preferred configuration. Then, follow the customized commands to install MXNet.</p>
+    <h2>Platform and use-case specific instructions for using MXNet</h2>
+    <p>
+        Please indicate your preferred configuration below to see specific instructions.
+    </p>
     <br>
     <br>
     <div class="install-widget">
@@ -20,11 +22,17 @@
                 <span>MXNet Version</span>
             </div>
             <div class="col-9 install-right">
-                <div class="dropdown">
-                    <button class="current-version dropbtn btn" type="button" data-toggle="dropdown">v1.5.1</button>
-                    <ul class="opt-group dropdown-content">
-                        <li class="opt versions"><a href="#">master</a></li>
-                        <li class="opt active versions"><a href="#">v1.5.1</a></li>
+                <div class="dropdown" id="version-dropdown-container">
+                    <button class="current-version dropbtn btn" type="button" data-toggle="dropdown">
+                        v1.7.0
+                        <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
+                            <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
+                        </svg>
+                    </button>
+                    <ul class="opt-group version-dropdown">
+                        <li class="opt active versions"><a href="#">v1.7.0</a></li>
+                        <li class="opt versions"><a href="#">v1.6.0</a></li>
+                        <li class="opt versions"><a href="#">v1.5.1</a></li>
                         <li class="opt versions"><a href="#">v1.4.1</a></li>
                         <li class="opt versions"><a href="#">v1.3.1</a></li>
                         <li class="opt versions"><a href="#">v1.2.1</a></li>
@@ -78,14 +86,16 @@
 
         <!-- No CPU GPU for other Devices -->
         <div class="linux macos windows cloud">
-            <div class="row">
-                <div class="col-3 install-left">
-                    <span>GPU / CPU</span>
-                </div>
-                <div class="col-9 install-right">
-                    <div class="btn-group opt-group" role="group">
-                        <button type="button" class="btn btn-default processors opt active">GPU</button>
-                        <button type="button" class="btn btn-default processors opt">CPU</button>
+            <div class="python cloud devices">
+                <div class="row">
+                    <div class="col-3 install-left">
+                        <span>GPU / CPU</span>
+                    </div>
+                    <div class="col-9 install-right">
+                        <div class="btn-group opt-group" role="group">
+                            <button type="button" class="btn btn-default processors opt active">GPU</button>
+                            <button type="button" class="btn btn-default processors opt">CPU</button>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -126,25 +136,6 @@
             </div>
         </div>
 
-        <!-- Julia Options -->
-        <div class="linux macos windows">
-            <div class="julia">
-                <div class="cpu gpu">
-                    <div class="row">
-                        <div class="col-3 install-left">
-                            <span>Distribution</span>
-                        </div>
-                        <div class="col-9 install-right">
-                            <div class="btn-group opt-group" role="group">
-                                <button type="button" class="btn btn-default environs opt active">Pkg</button>
-                                <button type="button" class="btn btn-default environs opt">Build from Source</button>
-                                </button>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
     </div>
 
 
@@ -191,73 +182,35 @@
 
 
             <div class="r">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/linux/r/cpu.md %}{% endmarkdown %}
-                </div> <!-- END of CPU -->
-
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/linux/r/gpu.md %}{% endmarkdown %}
-                </div> <!-- END of GPU -->
+                {% markdown %}{% include /get_started/linux/r/build-from-source.md %}{% endmarkdown %}
             </div> <!-- END of R -->
 
 
             <div class="scala">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/linux/scala/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/linux/scala/gpu.md %}{% endmarkdown %}
-                </div> <!-- End of gpu -->
+                {% markdown %}{% include /get_started/linux/scala/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of scala -->
 
 
             <div class="clojure">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/linux/clojure/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu -->
-
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/linux/clojure/gpu.md %}{% endmarkdown %}
-                </div> <!-- End of gpu -->
+                {% markdown %}{% include /get_started/linux/clojure/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of clojure -->
 
 
             <div class="java">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/linux/java/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/linux/java/gpu.md %}{% endmarkdown %}
-                </div> <!-- End of gpu -->
+                {% markdown %}{% include /get_started/linux/java/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of java -->
 
             <div class="julia">
-                <div class="cpu gpu">
-                    <div class="pkg">
-                        {% markdown %}{% include /get_started/linux/julia/pkg.md %}{% endmarkdown %}
-                    </div>
-                    <div class="build-from-source">
-                        {% markdown %}{% include /get_started/linux/julia/build-from-source.md %}{% endmarkdown %}
-                    </div>
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/linux/julia/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of julia -->
 
             <div class="perl">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/linux/perl/perl.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/linux/perl/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of perl -->
 
-
             <div class="cpp">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/linux/cpp/cpp.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/linux/cpp/build-from-source.md %}{% endmarkdown %}
             </div> <!-- END - C++-->
-
-            <br>
-            For more installation options, refer to the <a href="/get_started/ubuntu_setup.html">Ubuntu installation guide</a> and
-            <a href="/get_started/centos_setup.html">CentOS installation guide</a>.
         </div> <!-- END - Linux -->
 
 
@@ -265,183 +218,127 @@
 
         <div class="macos">
             <div class="python">
+                 <!-- START - MacOS Python CPU Installation Instructions -->
                 <div class="cpu">
                     <div class="pip">
                         {% markdown %}{% include /get_started/macos/python/cpu/pip.md %}{% endmarkdown %}
-                    </div> <!-- END of pip -->
+                    </div> <!-- End of pip -->
+
                     <div class="docker">
                         {% markdown %}{% include /get_started/macos/python/cpu/docker.md %}{% endmarkdown %}
                     </div> <!-- END of docker -->
+
                     <div class="build-from-source">
                         {% markdown %}{% include /get_started/macos/python/cpu/build-from-source.md %}{% endmarkdown %}
-                    </div> <!-- END of build from source -->
-                </div> <!-- END of CPU -->
+                    </div><!-- END of build from source -->
 
+                </div><!-- END of CPU -->
+                <!-- END - MacOS Python CPU Installation Instructions -->
 
-                <!-- START - Mac OS Python GPU Installation Instructions -->
+                <!-- START - MacOS Python GPU Installation Instructions -->
                 <div class="gpu">
-                    <div class="pip docker">
-                        {% markdown %}{% include /get_started/macos/python/gpu/pip_docker.md %}{% endmarkdown %}
-                    </div>
-
                     <div class="build-from-source">
-                        {% markdown %}{% include /get_started/macos/python/gpu/build-from-source.md %}{% endmarkdown %}
+                         {% markdown %}{% include /get_started/macos/python/gpu/build-from-source.md %}{% endmarkdown %}
                     </div> <!-- END of build from source -->
                 </div> <!-- END of GPU -->
             </div> <!-- END of Python -->
+            <!-- END - MacOS Python Installation Instructions -->
 
 
-            <!-- START - MacOS R CPU Installation Instructions -->
             <div class="r">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/macos/r/cpu.md %}{% endmarkdown %}
-                </div> <!-- END of CPU -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/macos/r/gpu.md %}{% endmarkdown %}
-                </div> <!-- END of GPU -->
+                {% markdown %}{% include /get_started/macos/r/build-from-source.md %}{% endmarkdown %}
             </div> <!-- END of R -->
 
+
             <div class="scala">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/macos/scala/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu  -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/macos/scala/gpu.md %}{% endmarkdown %}
-                </div>
+                {% markdown %}{% include /get_started/macos/scala/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of scala -->
 
+
             <div class="clojure">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/macos/clojure/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu  -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/macos/clojure/gpu.md %}{% endmarkdown %}
-                </div> <!-- End of gpu -->
+                {% markdown %}{% include /get_started/macos/clojure/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of clojure -->
 
 
             <div class="java">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/macos/java/cpu.md %}{% endmarkdown %}
-                </div> <!-- End of cpu  -->
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/macos/java/gpu.md %}{% endmarkdown %}
-                </div>
+                {% markdown %}{% include /get_started/macos/java/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of java -->
 
-
             <div class="julia">
-                <div class="cpu gpu">
-                    <div class="pkg">
-                        {% markdown %}{% include /get_started/macos/julia/pkg.md %}{% endmarkdown %}
-                    </div>
-
-                    <div class="build-from-source">
-                        {% markdown %}{% include /get_started/macos/julia/build-from-source.md %}{% endmarkdown %}
-                    </div>
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/macos/julia/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of julia -->
 
             <div class="perl">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/macos/perl/perl.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
-            </div> <!-- End of julia -->
+                {% markdown %}{% include /get_started/macos/perl/build-from-source.md %}{% endmarkdown %}
+            </div> <!-- End of perl -->
 
             <div class="cpp">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/macos/cpp/cpp.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
-            </div>
-            <br>
-            For more installation options, refer to the <a href="/get_started/osx_setup.html">MXNet macOS installation guide</a>.
-        </div> <!-- END - Mac OS -->
+                {% markdown %}{% include /get_started/macos/cpp/build-from-source.md %}{% endmarkdown %}
+            </div> <!-- END - C++-->
+        </div> <!-- END - MacOS -->
+
 
 
         <div class="windows">
             <div class="python">
+                 <!-- START - Windows Python CPU Installation Instructions -->
                 <div class="cpu">
                     <div class="pip">
                         {% markdown %}{% include /get_started/windows/python/cpu/pip.md %}{% endmarkdown %}
                     </div> <!-- End of pip -->
 
-                    <div class="docker">
-                        {% markdown %}{% include /get_started/windows/python/cpu/docker.md %}{% endmarkdown %}
-                    </div> <!-- End of docker -->
-
                     <div class="build-from-source">
                         {% markdown %}{% include /get_started/windows/python/cpu/build-from-source.md %}{% endmarkdown %}
-                    </div> <!-- End of Build from source -->
-                </div> <!-- End of CPU -->
+                    </div><!-- END of build from source -->
 
+                </div><!-- END of CPU -->
+                <!-- END - Windows Python CPU Installation Instructions -->
 
+                <!-- START - Windows Python GPU Installation Instructions -->
                 <div class="gpu">
                     <div class="pip">
                         {% markdown %}{% include /get_started/windows/python/gpu/pip.md %}{% endmarkdown %}
-                    </div> <!-- End of pip -->
+                    </div> <!-- END of pip -->
 
                     <div class="build-from-source">
-                        {% markdown %}{% include /get_started/windows/python/gpu/build-from-source.md %}{% endmarkdown %}
-                    </div> <!-- End of build from source -->
-                </div> <!-- End of GPU -->
-            </div> <!-- End of Python -->
-
+                         {% markdown %}{% include /get_started/windows/python/gpu/build-from-source.md %}{% endmarkdown %}
+                    </div> <!-- END of build from source -->
+                </div> <!-- END of GPU -->
+            </div> <!-- END of Python -->
+            <!-- END - Windows Python Installation Instructions -->
 
-            <!-- START - Windows R CPU Installation Instructions -->
 
             <div class="r">
-                <div class="cpu">
-                    {% markdown %}{% include /get_started/windows/r/cpu.md %}{% endmarkdown %}
-                </div> <!-- END - Windows R CPU -->
+                {% markdown %}{% include /get_started/windows/r/build-from-source.md %}{% endmarkdown %}
+            </div> <!-- END of R -->
 
-                <div class="gpu">
-                    {% markdown %}{% include /get_started/windows/r/gpu.md %}{% endmarkdown %}
-                </div> <!-- END of GPU -->
-            </div> <!-- END - Windows R -->
 
             <div class="scala">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/windows/scala/scala.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/windows/scala/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of scala -->
 
+
             <div class="clojure">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/windows/clojure/clojure.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/windows/clojure/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of clojure -->
 
+
             <div class="java">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/windows/java/java.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/windows/java/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of java -->
 
             <div class="julia">
-                <div class="cpu gpu">
-                    <div class="pkg">
-                        {% markdown %}{% include /get_started/windows/julia/pkg.md %}{% endmarkdown %}
-                    </div>
-                    <div class="build-from-source">
-                        {% markdown %}{% include /get_started/windows/julia/build-from-source.md %}{% endmarkdown %}
-                    </div>
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/windows/julia/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of julia -->
 
             <div class="perl">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/windows/perl/perl.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
+                {% markdown %}{% include /get_started/windows/perl/build-from-source.md %}{% endmarkdown %}
             </div> <!-- End of perl -->
 
             <div class="cpp">
-                <div class="cpu gpu">
-                    {% markdown %}{% include /get_started/windows/cpp/cpp.md %}{% endmarkdown %}
-                </div> <!-- End of cpu gpu -->
-            </div> <!-- End of C++ -->
-
-            For more installation options, refer to the <a href="/get_started/windows_setup.html">MXNet Windows installation guide</a>.
-        </div> <!-- End of Windows -->
+                {% markdown %}{% include /get_started/windows/cpp/build-from-source.md %}{% endmarkdown %}
+            </div> <!-- END - C++-->
+        </div> <!-- END - Windows -->
 
 
         <!-- START - Cloud Python Installation Instructions -->
diff --git a/docs/static_site/src/_includes/get_started/linux/clojure/cpu.md b/docs/static_site/src/_includes/get_started/linux/clojure/build-from-source.md
similarity index 100%
rename from docs/static_site/src/_includes/get_started/linux/clojure/cpu.md
rename to docs/static_site/src/_includes/get_started/linux/clojure/build-from-source.md
diff --git a/docs/static_site/src/_includes/get_started/linux/clojure/gpu.md b/docs/static_site/src/_includes/get_started/linux/clojure/gpu.md
deleted file mode 100644
index 26293f6..0000000
--- a/docs/static_site/src/_includes/get_started/linux/clojure/gpu.md
+++ /dev/null
@@ -1,15 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in your Clojure
-project. To maximize leverage, the Clojure package has been built on the existing Scala package. Please
-refer to the [MXNet-Scala setup guide]({{'/get_started/scala_setup'|relative_url}}) for a detailed set of instructions
-to help you with the setup process that is required to use the Clojure dependency.
-
-<a href="https://mvnrepository.com/artifact/org.apache.mxnet.contrib.clojure/clojure-mxnet-linux-gpu"><img
-        src="https://img.shields.io/badge/org.apache.mxnet-linux gpu-green.svg"
-        alt="maven badge"/></a>
-
-{% highlight html %}
-<dependency>
-    <groupId>org.apache.mxnet.contrib.clojure</groupId>
-    <artifactId>clojure-mxnet-linux-gpu</artifactId>
-</dependency>
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/cpp/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/cpp/build-from-source.md
new file mode 100644
index 0000000..d37cf77
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/linux/cpp/build-from-source.md
@@ -0,0 +1,2 @@
+To use the C++ package, build from source the `USE_CPP_PACKAGE=1` option. Please
+refer to the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/cpp/cpp.md b/docs/static_site/src/_includes/get_started/linux/cpp/cpp.md
deleted file mode 100644
index dc492d8..0000000
--- a/docs/static_site/src/_includes/get_started/linux/cpp/cpp.md
+++ /dev/null
@@ -1,4 +0,0 @@
-To enable the C++ package, build from source using `make USE_CPP_PACKAGE=1`.
-Refer to the [MXNet C++ setup guide](/get_started/cpp_setup.html)
-for full instructions.
-                
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/java/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/java/build-from-source.md
new file mode 100644
index 0000000..585cc3e
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/linux/java/build-from-source.md
@@ -0,0 +1,6 @@
+Previously available binaries distributed via Maven have been removed as they
+redistributed Category-X binaries in violation of Apache Software Foundation
+(ASF) policies.
+
+At this point in time, no third-party binary Java packages are available. Please
+follow the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/java/gpu.md b/docs/static_site/src/_includes/get_started/linux/java/gpu.md
deleted file mode 100644
index 6f6757f..0000000
--- a/docs/static_site/src/_includes/get_started/linux/java/gpu.md
+++ /dev/null
@@ -1,17 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in your Java
-project. The Java API is provided as a subset of the Scala API and is intended for inference only.
-Please refer to the <a href="/get_started/java_setup.html">MXNet-Java setup guide</a> for a detailed set of
-instructions to help you with the setup process.
-
-<a href="https://repository.apache.org/#nexus-search;gav~org.apache.mxnet~~1.5.0~~">
-    <img src="https://img.shields.io/badge/org.apache.mxnet-linux gpu-green.svg"
-    alt="maven badge"/>
-</a>
-
-{% highlight html %}
-<dependency>
-    <groupId>org.apache.mxnet</groupId>
-    <artifactId>mxnet-full_2.11-linux-x86_64-gpu</artifactId>
-    <version>[1.5.0, )</version>
-</dependency>
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/julia/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/julia/build-from-source.md
index 018aca9..cef5075 100644
--- a/docs/static_site/src/_includes/get_started/linux/julia/build-from-source.md
+++ b/docs/static_site/src/_includes/get_started/linux/julia/build-from-source.md
@@ -1,2 +1 @@
-Refer to the [Julia section of the MXNet Ubuntu installation guide](/get_started/ubuntu_setup#install-the-mxnet-package-for-julia).
-
+Please follow the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/julia/pkg.md b/docs/static_site/src/_includes/get_started/linux/julia/pkg.md
deleted file mode 100644
index 3597130..0000000
--- a/docs/static_site/src/_includes/get_started/linux/julia/pkg.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Install a pinned version of MXNet like this:
-
-{% highlight julia %}
-]add MXNet#v1.5.0
-{% endhighlight %}
-
-Or directly install the latest release:
-{% highlight julia %}
-]add MXNet
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/perl/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/perl/build-from-source.md
new file mode 100644
index 0000000..cef5075
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/linux/perl/build-from-source.md
@@ -0,0 +1 @@
+Please follow the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/perl/perl.md b/docs/static_site/src/_includes/get_started/linux/perl/perl.md
deleted file mode 100644
index 02d82e4..0000000
--- a/docs/static_site/src/_includes/get_started/linux/perl/perl.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [Perl section of the MXNet Ubuntu installation guide](get_started/ubuntu_setup.html#install-the-mxnet-package-for-perl).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/python/cpu/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/python/cpu/build-from-source.md
index 4adf039..cef5075 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/cpu/build-from-source.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/cpu/build-from-source.md
@@ -1 +1 @@
-To build from source, refer to the [MXNet Ubuntu installation guide]({{'/get_started/ubuntu_setup' | relative_url}}).
+Please follow the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/python/cpu/docker.md b/docs/static_site/src/_includes/get_started/linux/python/cpu/docker.md
index 8f2c8eb..7eab6d3 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/cpu/docker.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/cpu/docker.md
@@ -1,22 +1,18 @@
-Docker images with *MXNet* are available at [DockerHub](https://hub.docker.com/r/mxnet/).
-
-**Step 1** Install Docker on your machine by following the [docker installation
-instructions](https://docs.docker.com/engine/installation/linux/ubuntu/#install-using-the-repository).
-
-*Note* - You can install Community Edition (CE) to get started with *MXNet*.
-
-**Step 2** [Optional] Post installation steps to manage Docker as a non-root user.
+WARNING: the following links and names of binary distributions are provided for
+your convenience but they point to packages that are *not* provided nor endorsed
+by the Apache Software Foundation. As such, they might contain software
+components with more restrictive licenses than the Apache License and you'll
+need to decide whether they are appropriate for your usage. Like all Apache
+Releases, the official Apache MXNet (incubating) releases consist of source code
+only and are found at
+the [Download page](https://mxnet.apache.org/get_started/download).
+    
 
-Follow the four steps in this [docker
-documentation](https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user)
-to allow managing docker containers without *sudo*.
-
-If you skip this step, you need to use *sudo* each time you invoke Docker.
-
-**Step 3** Pull the MXNet docker image.
+Docker images with *MXNet* are available at [DockerHub](https://hub.docker.com/r/mxnet/).
+After you installed Docker on your machine, you can use them via:
 
 {% highlight bash %}
-$ docker pull mxnet/python # Use sudo if you skip Step 2
+$ docker pull mxnet/python
 {% endhighlight %}
 
 You can list docker images to see if mxnet/python docker image pull was successful.
@@ -28,16 +24,4 @@ REPOSITORY TAG IMAGE ID CREATED SIZE
 mxnet/python latest 00d026968b3c 3 weeks ago 1.41 GB
 {% endhighlight %}
 
-Using the latest MXNet with [Intel MKL-DNN](https://github.com/intel/mkl-dnn) is
-recommended for the
-fastest inference speeds with MXNet.
-
-{% highlight bash %}
-$ docker pull mxnet/python:1.3.0_cpu_mkl # Use sudo if you skip Step 2
-$ docker images # Use sudo if you skip Step 2
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python 1.3.0_cpu_mkl deaf9bf61d29 4 days ago 678 MB
-{% endhighlight %}
-
-**Step 4** <a href="get_started/validate_mxnet">Validate the installation</a>.
\ No newline at end of file
+You can then <a href="/get_started/validate_mxnet.html">validate the installation</a>.
diff --git a/docs/static_site/src/_includes/get_started/linux/python/cpu/pip.md b/docs/static_site/src/_includes/get_started/linux/python/cpu/pip.md
index 81db75e..8f9d4e0 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/cpu/pip.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/cpu/pip.md
@@ -1,62 +1,122 @@
+WARNING: the following PyPI package names are provided for your convenience but
+they point to packages that are *not* provided nor endorsed by the Apache
+Software Foundation. As such, they might contain software components with more
+restrictive licenses than the Apache License and you'll need to decide whether
+they are appropriate for your usage. The packages linked here contain GPL GCC
+Runtime Library components. Like all Apache Releases, the official Apache MXNet
+(incubating) releases consist of source code only and are found at the [Download
+page](https://mxnet.apache.org/get_started/download).
+
 Run the following command:
 
-<div class="v1-5-0">
+<div class="v1-7-0">
+{% highlight bash %}
+pip install mxnet
+{% endhighlight %}
+
+Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
+in pip packages by default.
+
+oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
+performance library of basic building blocks for deep learning applications.
+The library is optimized for Intel Architecture Processors, Intel Processor
+Graphics and Xe architecture-based Graphics. Support for other architectures
+such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
+experimental.
+
+oneDNN is intended for deep learning applications and framework developers
+interested in improving application performance on Intel CPUs and GPUs, more
+details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.
+
+You can find performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
+
+To install native MXNet without oneDNN, run the following command:
+
+{% highlight bash %}
+pip install mxnet-native
+{% endhighlight %}
+
+</div> <!-- End of v1-7-0 -->
+
+<div class="v1-6-0">
 {% highlight bash %}
-$ pip install mxnet
+pip install mxnet==1.6.0
 {% endhighlight %}
 
 MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
-performance numbers
-in the <a href="https://mxnet.io/api/faq/perf#intel-cpu">MXNet tuning guide</a>.
+performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
 
 {% highlight bash %}
-$ pip install mxnet-mkl
+pip install mxnet-mkl==1.6.0
 {% endhighlight %}
 
-</div> <!-- End of v1-5-0 -->
+</div> <!-- End of v1-6-0 -->
+
+<div class="v1-5-1">
+{% highlight bash %}
+pip install mxnet==1.5.1
+{% endhighlight %}
+
+MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
+performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
+
+{% highlight bash %}
+pip install mxnet-mkl==1.5.1
+{% endhighlight %}
+
+</div> <!-- End of v1-5-1 -->
 
 <div class="v1-4-1">
 
 {% highlight bash %}
-$ pip install mxnet==1.4.1
+pip install mxnet==1.4.1
 {% endhighlight %}
 
 MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
-performance numbers
-in the <a href="https://mxnet.io/api/faq/perf#intel-cpu">MXNet tuning guide</a>.
+performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
 
 {% highlight bash %}
-$ pip install mxnet-mkl==1.4.1
+pip install mxnet-mkl==1.4.1
 {% endhighlight %}
 
 </div> <!-- End of v1-4-1 -->
 <div class="v1-3-1">
 
 {% highlight bash %}
-$ pip install mxnet==1.3.1
+pip install mxnet==1.3.1
 {% endhighlight %}
 
 MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
-performance numbers
-in the <a href="https://mxnet.io/api/faq/perf#intel-cpu">MXNet tuning guide</a>.
+performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
 
 {% highlight bash %}
-$ pip install mxnet-mkl==1.3.1
+pip install mxnet-mkl==1.3.1
 {% endhighlight %}
 
 </div> <!-- End of v1-3-1 -->
 <div class="v1-2-1">
 
 {% highlight bash %}
-$ pip install mxnet==1.2.1
+pip install mxnet==1.2.1
 {% endhighlight %}
 
 MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
-performance numbers
-in the <a href="https://mxnet.io/api/faq/perf#intel-cpu">MXNet tuning guide</a>.
+performance numbers in the
+<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
+MXNet tuning guide</a>.
 
 {% highlight bash %}
-$ pip install mxnet-mkl==1.2.1
+pip install mxnet-mkl==1.2.1
 {% endhighlight %}
 
 </div> <!-- End of v1-2-1 -->
@@ -64,7 +124,7 @@ $ pip install mxnet-mkl==1.2.1
 <div class="v1-1-0">
 
 {% highlight bash %}
-$ pip install mxnet==1.1.0
+pip install mxnet==1.1.0
 {% endhighlight %}
 
 </div> <!-- End of v1-1-0-->
@@ -72,7 +132,7 @@ $ pip install mxnet==1.1.0
 <div class="v1-0-0">
 
 {% highlight bash %}
-$ pip install mxnet==1.0.0
+pip install mxnet==1.0.0
 {% endhighlight %}
 
 </div> <!-- End of v1-0-0-->
@@ -81,13 +141,13 @@ $ pip install mxnet==1.0.0
 <div class="v0-12-1">
 
 {% highlight bash %}
-$ pip install mxnet==0.12.1
+pip install mxnet==0.12.1
 {% endhighlight %}
 
 For MXNet 0.12.0:
 
 {% highlight bash %}
-$ pip install mxnet==0.12.0
+pip install mxnet==0.12.0
 {% endhighlight %}
 
 </div> <!-- End of v0-12-1-->
@@ -95,27 +155,12 @@ $ pip install mxnet==0.12.0
 <div class="v0-11-0">
 
 {% highlight bash %}
-$ pip install mxnet==0.11.0
+pip install mxnet==0.11.0
 {% endhighlight %}
 
 </div> <!-- End of v0-11-0-->
 
-<div class="master">
-
-{% highlight bash %}
-$ pip install mxnet --pre
-{% endhighlight %}
-
-MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
-performance numbers
-in the <a href="https://mxnet.io/api/faq/perf#intel-cpu">MXNet tuning guide</a>.
-
-{% highlight bash %}
-$ pip install mxnet-mkl --pre
-{% endhighlight %}
-
-</div> <!-- End of master-->
 <br>
 
 
-{% include /get_started/pip_snippet.md %}
\ No newline at end of file
+{% include /get_started/pip_snippet.md %}
diff --git a/docs/static_site/src/_includes/get_started/linux/python/gpu/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/python/gpu/build-from-source.md
index 4adf039..cef5075 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/gpu/build-from-source.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/gpu/build-from-source.md
@@ -1 +1 @@
-To build from source, refer to the [MXNet Ubuntu installation guide]({{'/get_started/ubuntu_setup' | relative_url}}).
+Please follow the build from source instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/python/gpu/docker.md b/docs/static_site/src/_includes/get_started/linux/python/gpu/docker.md
index dc21cf1..f963bc9 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/gpu/docker.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/gpu/docker.md
@@ -1,24 +1,19 @@
-Docker images with *MXNet* are available at [DockerHub](https://hub.docker.com/r/mxnet/).
-
-**Step 1** Install Docker on your machine by following the [docker installation
-instructions](https://docs.docker.com/engine/installation/linux/ubuntu/#install-using-the-repository).
-
-*Note* - You can install Community Edition (CE) to get started with *MXNet*.
-
-**Step 2** [Optional] Post installation steps to manage Docker as a non-root user.
+WARNING: the following links and names of binary distributions are provided for
+your convenience but they point to packages that are *not* provided nor endorsed
+by the Apache Software Foundation. As such, they might contain software
+components with more restrictive licenses than the Apache License and you'll
+need to decide whether they are appropriate for your usage. Like all Apache
+Releases, the official Apache MXNet (incubating) releases consist of source code
+only and are found at
+the [Download page](https://mxnet.apache.org/get_started/download).
 
-Follow the four steps in this [docker
-documentation](https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user)
-to allow managing docker containers without *sudo*.
-
-If you skip this step, you need to use *sudo* each time you invoke Docker.
+Docker images with *MXNet* are available at [DockerHub](https://hub.docker.com/r/mxnet/).
 
-**Step 3** Install *nvidia-docker-plugin* following the [installation
-instructions](https://github.com/NVIDIA/nvidia-docker/wiki). *nvidia-docker-plugin*
-is required to
-enable the usage of GPUs from the docker containers.
+Please follow the [NVidia Docker installation
+instructions](https://github.com/NVIDIA/nvidia-docker/wiki) to enable the usage
+of GPUs from the docker containers.
 
-**Step 4** Pull the MXNet docker image.
+After you installed Docker on your machine, you can use them via:
 
 {% highlight bash %}
 $ docker pull mxnet/python:gpu # Use sudo if you skip Step 2
@@ -33,16 +28,4 @@ REPOSITORY TAG IMAGE ID CREATED SIZE
 mxnet/python gpu 493b2683c269 3 weeks ago 4.77 GB
 {% endhighlight %}
 
-Using the latest MXNet with [Intel MKL-DNN](https://github.com/intel/mkl-dnn) is
-recommended for the
-fastest inference speeds with MXNet.
-
-{% highlight bash %}
-$ docker pull mxnet/python:1.3.0_cpu_mkl # Use sudo if you skip Step 2
-$ docker images # Use sudo if you skip Step 2
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python 1.3.0_gpu_cu92_mkl adcb3ab19f50 4 days ago 4.23 GB
-{% endhighlight %}
-
-**Step 5** <a href="get_started/validate_mxnet">Validate the installation</a>.
\ No newline at end of file
+You can then <a href="/get_started/validate_mxnet.html">validate the installation</a>.
diff --git a/docs/static_site/src/_includes/get_started/linux/python/gpu/pip.md b/docs/static_site/src/_includes/get_started/linux/python/gpu/pip.md
index 249cd5b..91d32ae 100644
--- a/docs/static_site/src/_includes/get_started/linux/python/gpu/pip.md
+++ b/docs/static_site/src/_includes/get_started/linux/python/gpu/pip.md
@@ -1,11 +1,35 @@
+WARNING: the following PyPI package names are provided for your convenience but
+they point to packages that are *not* provided nor endorsed by the Apache
+Software Foundation. As such, they might contain software components with more
+restrictive licenses than the Apache License and you'll need to decide whether
+they are appropriate for your usage. The packages linked here contain
+proprietary parts of the NVidia CUDA SDK and GPL GCC Runtime Library components.
+Like all Apache Releases, the official Apache MXNet (incubating) releases
+consist of source code only and are found at the [Download
+page](https://mxnet.apache.org/get_started/download).
+
 Run the following command:
 
-<div class="v1-5-0">
+<div class="v1-7-0">
+{% highlight bash %}
+$ pip install mxnet-cu102
+{% endhighlight %}
+
+</div> <!-- End of v1-6-0 -->
+
+<div class="v1-6-0">
+{% highlight bash %}
+$ pip install mxnet-cu102==1.6.0
+{% endhighlight %}
+
+</div> <!-- End of v1-6-0 -->
+
+<div class="v1-5-1">
 {% highlight bash %}
-$ pip install mxnet-cu101
+$ pip install mxnet-cu101==1.5.1
 {% endhighlight %}
 
-</div> <!-- End of v1-5-0 -->
+</div> <!-- End of v1-5-1 -->
 <div class="v1-4-1">
 
 {% highlight bash %}
@@ -60,15 +84,7 @@ $ pip install mxnet-cu80==0.11.0
 
 </div> <!-- End of v0-11-0-->
 
-<div class="master">
-
-{% highlight bash %}
-$ pip install mxnet-cu101 --pre
-{% endhighlight %}
-
-</div> <!-- End of master-->
-
 <br>
 
 {% include /get_started/pip_snippet.md %}
-{% include /get_started/gpu_snippet.md %}
\ No newline at end of file
+{% include /get_started/gpu_snippet.md %}
diff --git a/docs/static_site/src/_includes/get_started/linux/r/build-from-source.md b/docs/static_site/src/_includes/get_started/linux/r/build-from-source.md
new file mode 100644
index 0000000..1150a30
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/linux/r/build-from-source.md
@@ -0,0 +1,2 @@
+You will need to R v3.4.4+ and build MXNet from source. Please follow the
+instructions linked above.
diff --git a/docs/static_site/src/_includes/get_started/linux/r/cpu.md b/docs/static_site/src/_includes/get_started/linux/r/cpu.md
deleted file mode 100644
index 1077362..0000000
--- a/docs/static_site/src/_includes/get_started/linux/r/cpu.md
+++ /dev/null
@@ -1,10 +0,0 @@
-The default version of R that is installed with `apt-get` is insufficient. You will need
-to first [install R v3.4.4+ and build MXNet from source](/get_started/ubuntu_setup.html#install-the-mxnet-package-for-r).
-
-After you have setup R v3.4.4+ and MXNet, you can build and install the MXNet R bindings with the following, assuming that `incubator-mxnet` is the source directory you used to build MXNet as follows:
-
-{% highlight bash %}
-$ cd incubator-mxnet
-$ mkdir build; cd build; cmake -DUSE_CUDA=OFF ..; make -j $(nproc); cd ..
-$ make -f R-package/Makefile rpkg
-{% endhighlight %}
diff --git a/docs/static_site/src/_includes/get_started/linux/r/gpu.md b/docs/static_site/src/_includes/get_started/linux/r/gpu.md
deleted file mode 100644
index 1ef16df..0000000
--- a/docs/static_site/src/_includes/get_started/linux/r/gpu.md
+++ /dev/null
@@ -1,17 +0,0 @@
-The default version of R that is installed with `apt-get` is insufficient. You will need
-to first
-[install R v3.4.4+ and build MXNet from
-source](/get_started/ubuntu_setup.html#install-the-mxnet-package-for-r).
-
-After you have setup R v3.4.4+ and MXNet, you can build and install the MXNet R bindings
-with the
-following, assuming that `incubator-mxnet` is the source directory you used to build
-MXNet as follows:
-
-{% highlight bash %}
-$ cd incubator-mxnet
-$ mkdir build; cd build; cmake ..; make -j $(nproc); cd ..
-$ make -f R-package/Makefile rpkg
-{% endhighlight %}
-
-{% include /get_started/gpu_snippet.md %}
diff --git a/docs/static_site/src/_includes/get_started/linux/java/cpu.md b/docs/static_site/src/_includes/get_started/linux/scala/build-from-source.md
similarity index 100%
rename from docs/static_site/src/_includes/get_started/linux/java/cpu.md
rename to docs/static_site/src/_includes/get_started/linux/scala/build-from-source.md
diff --git a/docs/static_site/src/_includes/get_started/linux/scala/cpu.md b/docs/static_site/src/_includes/get_started/linux/scala/cpu.md
deleted file mode 100644
index 3cc96ba..0000000
--- a/docs/static_site/src/_includes/get_started/linux/scala/cpu.md
+++ /dev/null
@@ -1,14 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in your Scala
-project. Please refer to the [MXNet-Scala setup guide]({{'/get_started/scala_setup'|relative_url}}) for
-a detailed set of instructions to help you with the setup process.
-
-<a href="https://mvnrepository.com/artifact/org.apache.mxnet/mxnet-full_2.11-linux-x86_64-cpu"><img
-        src="https://img.shields.io/badge/org.apache.mxnet-linux cpu-green.svg"
-        alt="maven badge"/></a>
-
-{% highlight html %}
-<dependency>
-<groupId>org.apache.mxnet</groupId>
-<artifactId>mxnet-full_2.11-linux-x86_64-cpu</artifactId>
-</dependency>
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/linux/scala/gpu.md b/docs/static_site/src/_includes/get_started/linux/scala/gpu.md
deleted file mode 100644
index 5e2f9b1..0000000
--- a/docs/static_site/src/_includes/get_started/linux/scala/gpu.md
+++ /dev/null
@@ -1,16 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in
-your Scala
-project. Please refer to the <a href="scala_setup.html">MXNet-Scala setup guide</a> for
-a detailed set
-of instructions to help you with the setup process.
-
-<a href="https://mvnrepository.com/artifact/org.apache.mxnet/mxnet-full_2.11-linux-x86_64-gpu"><img
-        src="https://img.shields.io/badge/org.apache.mxnet-linux gpu-green.svg"
-        alt="maven badge"/></a>
-
-{% highlight html %}
-<dependency>
-<groupId>org.apache.mxnet</groupId>
-<artifactId>mxnet-full_2.11-linux-x86_64-gpu</artifactId>
-</dependency>
-{% endhighlight %}
diff --git a/docs/static_site/src/_includes/get_started/macos b/docs/static_site/src/_includes/get_started/macos
new file mode 120000
index 0000000..9c52cb3
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/macos
@@ -0,0 +1 @@
+linux
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/clojure/cpu.md b/docs/static_site/src/_includes/get_started/macos/clojure/cpu.md
deleted file mode 100644
index 1e27af5..0000000
--- a/docs/static_site/src/_includes/get_started/macos/clojure/cpu.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-You can use the Maven packages defined in the following dependency to include MXNet in
-your Clojure project. To maximize leverage, the Clojure package has been built on the existing Scala
-package. Please refer to the [MXNet-Scala setup guide](scala_setup.html) for a detailed set
-of instructions to help you with the setup process that is required to use the Clojure dependency.
-
-<a href="https://mvnrepository.com/artifact/org.apache.mxnet.contrib.clojure/clojure-mxnet-osx-cpu"><img
-        src="https://img.shields.io/badge/org.apache.mxnet-mac cpu-green.svg"
-        alt="maven badge"/></a>
-
-{% highlight html %}
-<dependency>
-    <groupId>org.apache.mxnet.contrib.clojure</groupId>
-    <artifactId>clojure-mxnet-osx-cpu</artifactId>
-</dependency>
-{% endhighlight %}
-
diff --git a/docs/static_site/src/_includes/get_started/macos/clojure/gpu.md b/docs/static_site/src/_includes/get_started/macos/clojure/gpu.md
deleted file mode 100644
index ccbc24d..0000000
--- a/docs/static_site/src/_includes/get_started/macos/clojure/gpu.md
+++ /dev/null
@@ -1 +0,0 @@
-Not available at this time.
diff --git a/docs/static_site/src/_includes/get_started/macos/cpp/cpp.md b/docs/static_site/src/_includes/get_started/macos/cpp/cpp.md
deleted file mode 100644
index cb9e613..0000000
--- a/docs/static_site/src/_includes/get_started/macos/cpp/cpp.md
+++ /dev/null
@@ -1,3 +0,0 @@
-To enable the C++ package, build from source using `make USE_CPP_PACKAGE=1`.
-Refer to the [MXNet C++ setup guide](/get_started/cpp_setup.html) for full instructions.
-                
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/java/cpu.md b/docs/static_site/src/_includes/get_started/macos/java/cpu.md
deleted file mode 100644
index 002037a..0000000
--- a/docs/static_site/src/_includes/get_started/macos/java/cpu.md
+++ /dev/null
@@ -1,16 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in
-your Java project. The Java API is provided as a subset of the Scala API and is intended for
-inference only.
-Please refer to the [MXNet-Java setup guide](/get_started/java_setup.html) for a detailed set of instructions to help you with the setup process.
-
-<a href="https://repository.apache.org/#nexus-search;gav~org.apache.mxnet~~1.5.0~~"><img
-src="https://img.shields.io/badge/org.apache.mxnet-mac cpu-green.svg"
-alt="maven badge"/></a>
-
-{% highlight html %}
-<dependency>
-    <groupId>org.apache.mxnet</groupId>
-    <artifactId>mxnet-full_2.11-linux-x86_64-cpu</artifactId>
-    <version>[1.5.0, )</version>
-</dependency>
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/java/gpu.md b/docs/static_site/src/_includes/get_started/macos/java/gpu.md
deleted file mode 100644
index b17ef33..0000000
--- a/docs/static_site/src/_includes/get_started/macos/java/gpu.md
+++ /dev/null
@@ -1 +0,0 @@
-Not available at this time.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/julia/build-from-source.md b/docs/static_site/src/_includes/get_started/macos/julia/build-from-source.md
deleted file mode 100644
index b864d8a..0000000
--- a/docs/static_site/src/_includes/get_started/macos/julia/build-from-source.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [Julia section of the MXNet macOS installation guide](get_started/osx_setup.html#install-the-mxnet-package-for-julia).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/julia/pkg.md b/docs/static_site/src/_includes/get_started/macos/julia/pkg.md
deleted file mode 100644
index 3597130..0000000
--- a/docs/static_site/src/_includes/get_started/macos/julia/pkg.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Install a pinned version of MXNet like this:
-
-{% highlight julia %}
-]add MXNet#v1.5.0
-{% endhighlight %}
-
-Or directly install the latest release:
-{% highlight julia %}
-]add MXNet
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/perl/perl.md b/docs/static_site/src/_includes/get_started/macos/perl/perl.md
deleted file mode 100644
index 45d59dd..0000000
--- a/docs/static_site/src/_includes/get_started/macos/perl/perl.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [Perl section of installation guide](/get_started/osx_setup.html#install-the-mxnet-package-for-perl).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/python/cpu/build-from-source.md b/docs/static_site/src/_includes/get_started/macos/python/cpu/build-from-source.md
deleted file mode 100644
index ee8e378..0000000
--- a/docs/static_site/src/_includes/get_started/macos/python/cpu/build-from-source.md
+++ /dev/null
@@ -1,2 +0,0 @@
-To build from source, refer to the [MXNet macOS installation guide](/get_started/osx_setup.html).
-MXNet developers should refer to the MXNet wiki's [Developer Setup on Mac](https://cwiki.apache.org/confluence/display/MXNET/MXNet+Developer+Setup+on+Mac).
diff --git a/docs/static_site/src/_includes/get_started/macos/python/cpu/docker.md b/docs/static_site/src/_includes/get_started/macos/python/cpu/docker.md
deleted file mode 100644
index c8631ec..0000000
--- a/docs/static_site/src/_includes/get_started/macos/python/cpu/docker.md
+++ /dev/null
@@ -1,35 +0,0 @@
-Docker images with *MXNet* are available at [DockerHub](https://hub.docker.com/r/mxnet/).
-
-**Step 1** Install Docker on your machine by following the [docker installation
-instructions](https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac).
-
-*Note* - You can install Community Edition (CE) to get started with *MXNet*.
-
-**Step 2** Pull the MXNet docker image.
-
-{% highlight bash %}
-$ docker pull mxnet/python
-{% endhighlight %}
-
-You can list docker images to see if mxnet/python docker image pull was successful.
-
-{% highlight bash %}
-$ docker images
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python latest 00d026968b3c 3 weeks ago 1.41 GB
-{% endhighlight %}
-
-Using the latest MXNet with [Intel MKL-DNN](https://github.com/intel/mkl-dnn) is
-recommended for the
-fastest inference speeds with MXNet.
-
-{% highlight bash %}
-$ docker pull mxnet/python:1.3.0_cpu_mkl # Use sudo if you skip Step 2
-$ docker images # Use sudo if you skip Step 2
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python 1.3.0_cpu_mkl deaf9bf61d29 4 days ago 678 MB
-{% endhighlight %}
-
-**Step 4** <a href="get_started/validate_mxnet">Validate the installation</a>.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/python/cpu/pip.md b/docs/static_site/src/_includes/get_started/macos/python/cpu/pip.md
deleted file mode 100644
index beb5eb4..0000000
--- a/docs/static_site/src/_includes/get_started/macos/python/cpu/pip.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Run the following command:
-
-<div class="v1-5-0">
-
-{% highlight bash %}
-$ pip install mxnet
-{% endhighlight %}
-</div> <!-- End of v1-5-0 -->
-<div class="v1-4-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.4.1
-{% endhighlight %}
-</div> <!-- End of v1-4-1 -->
-<div class="v1-3-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.3.1
-{% endhighlight %}
-
-</div> <!-- End of v1-3-1 -->
-<div class="v1-2-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.2.1
-{% endhighlight %}
-
-</div> <!-- End of v1-2-1 -->
-
-
-<div class="v1-1-0">
-
-{% highlight bash %}
-$ pip install mxnet==1.1.0
-{% endhighlight %}
-
-</div> <!-- End of v1-1-0-->
-
-
-<div class="v1-0-0">
-
-{% highlight bash %}
-$ pip install mxnet==1.0.0
-{% endhighlight %}
-
-</div> <!-- End of v1-0-0-->
-
-<div class="v0-12-1">
-
-{% highlight bash %}
-$ pip install mxnet=0.12.1
-{% endhighlight %}
-
-</div> <!-- End of v0-12-1-->
-
-
-<div class="v0-11-0">
-
-{% highlight bash %}
-$ pip install mxnet==0.11.0
-{% endhighlight %}
-
-</div> <!-- End of v0-11-0-->
-
-<div class="master">
-
-{% highlight bash %}
-$ pip install mxnet --pre
-{% endhighlight %}
-
-</div> <!-- End of master-->
-
-{% include /get_started/pip_snippet.md %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/python/gpu/build-from-source.md b/docs/static_site/src/_includes/get_started/macos/python/gpu/build-from-source.md
deleted file mode 100644
index ffcf88e..0000000
--- a/docs/static_site/src/_includes/get_started/macos/python/gpu/build-from-source.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Refer to the [MXNet macOS installation guide](get_started/osx_setup.html).
-MXNet developers should refer to the MXNet wiki's [Developer Setup on Mac](https://cwiki.apache.org/confluence/display/MXNET/MXNet+Developer+Setup+on+Mac).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/python/gpu/pip_docker.md b/docs/static_site/src/_includes/get_started/macos/python/gpu/pip_docker.md
deleted file mode 100644
index 87281fe..0000000
--- a/docs/static_site/src/_includes/get_started/macos/python/gpu/pip_docker.md
+++ /dev/null
@@ -1 +0,0 @@
-This option is only available by building from source. Refer to the [MXNet macOS installation guide](get_started/osx_setup.html).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/r/cpu.md b/docs/static_site/src/_includes/get_started/macos/r/cpu.md
deleted file mode 100644
index 1e0d96b..0000000
--- a/docs/static_site/src/_includes/get_started/macos/r/cpu.md
+++ /dev/null
@@ -1,28 +0,0 @@
-To run MXNet you also should have OpenCV and OpenBLAS installed. You may install them with `brew` as follows:
-
-{% highlight bash %}
-brew install opencv
-brew install openblas
-{% endhighlight %}
-
-To ensure MXNet R package runs with the version of OpenBLAS installed, create a symbolic link as follows:
-
-{% highlight bash %}
-ln -sf /usr/local/opt/openblas/lib/libopenblas.dylib
-/usr/local/opt/openblas/lib/libopenblasp-r0.3.1.dylib
-{% endhighlight %}
-
-Note: packages for 3.6.x are not yet available.
-
-Install 3.5.x of R from [CRAN](https://cran.r-project.org/bin/macosx/). The latest is
-[v3.5.3](https://cran.r-project.org/bin/macosx/R-3.5.3.pkg).
-
-You can [build MXNet-R from source](get_started/osx_setup.html#install-the-mxnet-package-for-r), or
-you can use a pre-built binary:
-
-{% highlight r %}
-cran <- getOption("repos")
-cran["dmlc"] <- "https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/"
-options(repos = cran)
-install.packages("mxnet")
-{% endhighlight %}
diff --git a/docs/static_site/src/_includes/get_started/macos/r/gpu.md b/docs/static_site/src/_includes/get_started/macos/r/gpu.md
deleted file mode 100644
index 3fc556a..0000000
--- a/docs/static_site/src/_includes/get_started/macos/r/gpu.md
+++ /dev/null
@@ -1 +0,0 @@
-Be the first one to contribute this guide!  
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/scala/cpu.md b/docs/static_site/src/_includes/get_started/macos/scala/cpu.md
deleted file mode 100644
index 0bc69eb..0000000
--- a/docs/static_site/src/_includes/get_started/macos/scala/cpu.md
+++ /dev/null
@@ -1,14 +0,0 @@
-You can use the Maven packages defined in the following dependency to include MXNet in your Scala
-project. Please refer to the [MXNet-Scala setup guide](/get_started/scala_setup.html) for a detailed set
-of instructions to help you with the setup process.
-
-<a href="https://mvnrepository.com/artifact/org.apache.mxnet/mxnet-full_2.11-osx-x86_64-cpu"><img
-        src="https://img.shields.io/badge/org.apache.mxnet-mac cpu-green.svg"
-        alt="maven badge"/></a>
-
-{% highlight html %}
-    <dependency>
-    <groupId>org.apache.mxnet</groupId>
-    <artifactId>mxnet-full_2.11-osx-x86_64-cpu</artifactId>
-</dependency>
-{% endhighlight %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/macos/scala/gpu.md b/docs/static_site/src/_includes/get_started/macos/scala/gpu.md
deleted file mode 100644
index b17ef33..0000000
--- a/docs/static_site/src/_includes/get_started/macos/scala/gpu.md
+++ /dev/null
@@ -1 +0,0 @@
-Not available at this time.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/pip_snippet.md b/docs/static_site/src/_includes/get_started/pip_snippet.md
index 2c4d932..9e67acc 100644
--- a/docs/static_site/src/_includes/get_started/pip_snippet.md
+++ b/docs/static_site/src/_includes/get_started/pip_snippet.md
@@ -1,14 +1,13 @@
-MXNet offers MKL pip packages that will be much faster when running on Intel hardware.
-Check the chart below for other options, refer to <a href="https://pypi.org/project/mxnet/">PyPI for
-other MXNet pip packages</a>, or <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.
+You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.
 
 <div style="text-align: center">
-    <img src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.5.1.png"
+    <img src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.7.0.png"
     alt="pip packages"/>
 </div>
 
 **NOTES:**
 
-*mxnet-cu101mkl* means the package is built with CUDA/cuDNN and MKL-DNN enabled and the CUDA version is 10.1.
+*mxnet-cu101* means the package is built with CUDA/cuDNN and the CUDA version is
+10.1.
 
 All MKL pip packages are experimental prior to version 1.3.0.
diff --git a/docs/static_site/src/_includes/get_started/windows b/docs/static_site/src/_includes/get_started/windows
new file mode 120000
index 0000000..9c52cb3
--- /dev/null
+++ b/docs/static_site/src/_includes/get_started/windows
@@ -0,0 +1 @@
+linux
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/clojure/clojure.md b/docs/static_site/src/_includes/get_started/windows/clojure/clojure.md
deleted file mode 100644
index 0b25ab9..0000000
--- a/docs/static_site/src/_includes/get_started/windows/clojure/clojure.md
+++ /dev/null
@@ -1 +0,0 @@
-MXNet-Clojure for Windows is not yet available.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/cpp/cpp.md b/docs/static_site/src/_includes/get_started/windows/cpp/cpp.md
deleted file mode 100644
index 023735b..0000000
--- a/docs/static_site/src/_includes/get_started/windows/cpp/cpp.md
+++ /dev/null
@@ -1,3 +0,0 @@
-To enable the C++ package, build from source using `make USE_CPP_PACKAGE=1`.
-Refer to the [MXNet C++ setup guide](/get_started/cpp_setup.html) for full instructions.
-                
diff --git a/docs/static_site/src/_includes/get_started/windows/java/java.md b/docs/static_site/src/_includes/get_started/windows/java/java.md
deleted file mode 100644
index 0db1f50..0000000
--- a/docs/static_site/src/_includes/get_started/windows/java/java.md
+++ /dev/null
@@ -1 +0,0 @@
-MXNet-Java for Windows is not yet available.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/julia/build-from-source.md b/docs/static_site/src/_includes/get_started/windows/julia/build-from-source.md
deleted file mode 100644
index 4fc6004..0000000
--- a/docs/static_site/src/_includes/get_started/windows/julia/build-from-source.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [Julia section of the MXNet Windows installation guide](/get_started/windows_setup.html#install-the-mxnet-package-for-julia).
diff --git a/docs/static_site/src/_includes/get_started/windows/julia/pkg.md b/docs/static_site/src/_includes/get_started/windows/julia/pkg.md
deleted file mode 100644
index cb79177..0000000
--- a/docs/static_site/src/_includes/get_started/windows/julia/pkg.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Install a pinned version of MXNet like this:
-
-{% highlight julia %}
-]add MXNet#v1.5.0
-{% endhighlight %}
-
-Or directly install the latest release:
-{% highlight julia %}
-]add MXNet
-{% endhighlight %}
diff --git a/docs/static_site/src/_includes/get_started/windows/perl/perl.md b/docs/static_site/src/_includes/get_started/windows/perl/perl.md
deleted file mode 100644
index 1a8eea5..0000000
--- a/docs/static_site/src/_includes/get_started/windows/perl/perl.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [Perl section of the MXNet Windows installation guide](/get_started/windows_setup.html#install-the-mxnet-package-for-perl).
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/python/cpu/build-from-source.md b/docs/static_site/src/_includes/get_started/windows/python/cpu/build-from-source.md
deleted file mode 100644
index af36205..0000000
--- a/docs/static_site/src/_includes/get_started/windows/python/cpu/build-from-source.md
+++ /dev/null
@@ -1 +0,0 @@
-Refer to the [MXNet Windows installation guide](/get_started/windows_setup.html)
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/python/cpu/docker.md b/docs/static_site/src/_includes/get_started/windows/python/cpu/docker.md
deleted file mode 100644
index a061b8b..0000000
--- a/docs/static_site/src/_includes/get_started/windows/python/cpu/docker.md
+++ /dev/null
@@ -1,34 +0,0 @@
-Docker images with *MXNet* are available at [Docker Hub](https://hub.docker.com/r/mxnet/).
-
-**Step 1** Install Docker on your machine by following the docker installation instructions
-
-*Note* - You can install Community Edition (CE) to get started with *MXNet*.
-
-**Step 2** Pull the MXNet docker image.
-
-{% highlight bash %}
-$ docker pull mxnet/python # Use sudo if you skip Step 2
-{% endhighlight %}
-
-You can list docker images to see if mxnet/python docker image pull was successful.
-
-{% highlight bash %}
-$ docker images # Use sudo if you skip Step 2
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python latest 00d026968b3c 3 weeks ago 1.41 GB
-{% endhighlight %}
-
-Using the latest MXNet with [Intel MKL-DNN](https://github.com/intel/mkl-dnn) is
-recommended for the
-fastest inference speeds with MXNet.
-
-{% highlight bash %}
-$ docker pull mxnet/python:1.3.0_cpu_mkl # Use sudo if you skip Step 2
-$ docker images # Use sudo if you skip Step 2
-
-REPOSITORY TAG IMAGE ID CREATED SIZE
-mxnet/python 1.3.0_cpu_mkl deaf9bf61d29 4 days ago 678 MB
-{% endhighlight %}
-
-**Step 4** <a href="get_started/validate_mxnet">Validate the installation</a>.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/python/cpu/pip.md b/docs/static_site/src/_includes/get_started/windows/python/cpu/pip.md
deleted file mode 100644
index d5c7f1f..0000000
--- a/docs/static_site/src/_includes/get_started/windows/python/cpu/pip.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Run the following command:
-
-<div class="v1-5-0">
-
-{% highlight bash %}
-$ pip install mxnet
-{% endhighlight %}
-
-</div> <!-- End of v1-5-0 -->
-<div class="v1-4-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.4.1
-{% endhighlight %}
-
-</div> <!-- End of v1-4-1 -->
-<div class="v1-3-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.3.1
-{% endhighlight %}
-
-</div> <!-- End of v1-3-1 -->
-<div class="v1-2-1">
-
-{% highlight bash %}
-$ pip install mxnet==1.2.1
-{% endhighlight %}
-
-</div> <!-- End of v1-2-1 -->
-
-<div class="v1-1-0">
-
-{% highlight bash %}
-$ pip install mxnet==1.1.0
-{% endhighlight %}
-
-</div> <!-- End of v1-1-0-->
-
-<div class="v1-0-0">
-
-{% highlight bash %}
-$ pip install mxnet==1.0.0
-{% endhighlight %}
-
-</div> <!-- End of v1-0-0-->
-
-<div class="v0-12-1">
-
-{% highlight bash %}
-$ pip install mxnet==0.12.1
-{% endhighlight %}
-
-</div> <!-- End of v0-12-1-->
-
-<div class="v0-11-0">
-
-{% highlight bash %}
-$ pip install mxnet==0.11.0
-{% endhighlight %}
-
-</div> <!-- End of v0-11-0-->
-
-<div class="master">
-
-{% highlight bash %}
-$ pip install mxnet --pre
-{% endhighlight %}
-
-</div> <!-- End of master-->
-
-{% include /get_started/pip_snippet.md %}
-{% include /get_started/gpu_snippet.md %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/python/gpu/build-from-source.md b/docs/static_site/src/_includes/get_started/windows/python/gpu/build-from-source.md
deleted file mode 100644
index 55bca3a..0000000
--- a/docs/static_site/src/_includes/get_started/windows/python/gpu/build-from-source.md
+++ /dev/null
@@ -1 +0,0 @@
-To build from source, refer to the [MXNet Windows installation guide](/get_started/windows_setup.html).
diff --git a/docs/static_site/src/_includes/get_started/windows/python/gpu/pip.md b/docs/static_site/src/_includes/get_started/windows/python/gpu/pip.md
deleted file mode 100644
index cbcd9d4..0000000
--- a/docs/static_site/src/_includes/get_started/windows/python/gpu/pip.md
+++ /dev/null
@@ -1,74 +0,0 @@
-Run the following command:
-
-<div class="v1-5-0">
-
-{% highlight bash %}
-$ pip install mxnet-cu101
-{% endhighlight %}
-
-</div> <!-- End of v1-5-0 -->
-<div class="v1-4-1">
-
-{% highlight bash %}
-$ pip install mxnet-cu101==1.4.1
-{% endhighlight %}
-
-</div> <!-- End of v1-4-1 -->
-<div class="v1-3-1">
-
-{% highlight bash %}
-$ pip install mxnet-cu92==1.3.1
-{% endhighlight %}
-
-</div> <!-- End of v1-3-1 -->
-<div class="v1-2-1">
-
-{% highlight bash %}
-$ pip install mxnet-cu92==1.2.1
-{% endhighlight %}
-
-</div> <!-- End of v1-2-1 -->
-
-<div class="v1-1-0">
-
-{% highlight bash %}
-$ pip install mxnet-cu91==1.1.0
-{% endhighlight %}
-
-</div> <!-- End of v1-1-0-->
-
-<div class="v1-0-0">
-
-{% highlight bash %}
-$ pip install mxnet-cu90==1.0.0
-{% endhighlight %}
-
-</div> <!-- End of v1-0-0-->
-
-<div class="v0-12-1">
-
-{% highlight bash %}
-$ pip install mxnet-cu90==0.12.1
-{% endhighlight %}
-
-</div> <!-- End of v0-12-1-->
-
-<div class="v0-11-0">
-
-{% highlight bash %}
-$ pip install mxnet-cu80==0.11.0
-{% endhighlight %}
-
-</div> <!-- End of v0-11-0-->
-
-<div class="master">
-
-{% highlight bash %}
-$ pip install mxnet-cu101 --pre
-{% endhighlight %}
-
-</div> <!-- End of master-->
-
-
-{% include /get_started/pip_snippet.md %}
-{% include /get_started/gpu_snippet.md %}
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/r/cpu.md b/docs/static_site/src/_includes/get_started/windows/r/cpu.md
deleted file mode 100644
index 926b835..0000000
--- a/docs/static_site/src/_includes/get_started/windows/r/cpu.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Note: packages for 3.6.x are not yet available.
-Install 3.5.x of R from [CRAN](https://cran.r-project.org/bin/windows/base/old/).
-
-You can [build MXNet-R from source](/get_started/windows_setup.html#install-mxnet-package-for-r), or
-you can use a
-pre-built binary:
-
-{% highlight r %}
-cran <- getOption("repos")
-cran["dmlc"] <- "https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/"
-options(repos = cran)
-install.packages("mxnet")
-{% endhighlight %}
-
-To run MXNet you also should have OpenCV and OpenBLAS installed.
diff --git a/docs/static_site/src/_includes/get_started/windows/r/gpu.md b/docs/static_site/src/_includes/get_started/windows/r/gpu.md
deleted file mode 100644
index 084f1a5..0000000
--- a/docs/static_site/src/_includes/get_started/windows/r/gpu.md
+++ /dev/null
@@ -1,16 +0,0 @@
-You can [build MXNet-R from source](/get_started/windows_setup.html#install-mxnet-package-for-r), or
-you can use a
-pre-built binary:
-
-{% highlight r %}
-cran <- getOption("repos")
-cran["dmlc"] <-
-"https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/GPU/cu92"
-options(repos = cran)
-install.packages("mxnet")
-{% endhighlight %}
-
-Change cu92 to cu90, cu91 or cuda100 based on your CUDA toolkit version. Currently, MXNet supports these versions of CUDA.
-Note : You also need to have cuDNN installed on Windows. Check out this
-[guide](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installwindows)
-on the steps for installation.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/get_started/windows/scala/scala.md b/docs/static_site/src/_includes/get_started/windows/scala/scala.md
deleted file mode 100644
index 74b7d45..0000000
--- a/docs/static_site/src/_includes/get_started/windows/scala/scala.md
+++ /dev/null
@@ -1 +0,0 @@
-MXNet-Scala for Windows is not yet available.
\ No newline at end of file
diff --git a/docs/static_site/src/_includes/head.html b/docs/static_site/src/_includes/head.html
index 9a565c7..fb7822c 100644
--- a/docs/static_site/src/_includes/head.html
+++ b/docs/static_site/src/_includes/head.html
@@ -5,14 +5,22 @@
   <link href="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/mxnet-icon.png" rel="icon" type="image/png">
   {%- seo -%}
   <script src="https://medium-widget.pixelpoint.io/widget.js"></script>
+  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
   <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
   {%- feed_meta -%}
   {%- if jekyll.environment == 'production' and site.google_analytics -%}
     {%- include google-analytics.html -%}
   {%- endif -%}
-
-  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
-
-  <script src="{{'/assets/js/clipboard.js'|relative_url}}"></script>
-  <script src="{{'/assets/js/copycode.js'|relative_url}}"></script>
+  {%- if jekyll.environment == 'production' -%}
+    <script src="{{'/assets/js/jquery-3.3.1.min.js'|relative_url}}"></script>
+  {%- else -%}
+    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
+  {%- endif -%}
+  <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js" defer></script>
+  <script src="{{'/assets/js/globalSearch.js'|relative_url}}" defer></script>
+  <script src="{{'/assets/js/clipboard.js'|relative_url}}" defer></script>
+  <script src="{{'/assets/js/copycode.js'|relative_url}}" defer></script>
+  {%- if page.feedback == true and jekyll.environment == "production" -%}
+    <script src="{{'/assets/js/feedback.js'|relative_url}}" defer></script>
+  {%- endif -%}
 </head>
diff --git a/docs/static_site/src/_includes/header.html b/docs/static_site/src/_includes/header.html
index 3145064..d4e81c9 100644
--- a/docs/static_site/src/_includes/header.html
+++ b/docs/static_site/src/_includes/header.html
@@ -35,14 +35,75 @@
             </svg>
           </span>
       </label>
-
+      <div class="gs-search-border">
+        <div id="gs-search-icon"></div>
+        <form id="global-search-form">
+          <input id="global-search" type="text" title="Search" placeholder="Search" />
+          <div id="global-search-dropdown-container">
+            <button class="gs-current-version btn" type="button" data-toggle="dropdown">
+                <span id="gs-current-version-label">{{site.versions[1]}}</span>
+                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
+                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
+                </svg>
+            </button>
+            <ul class="gs-opt-group gs-version-dropdown">
+              {% for version in site.versions %}
+                {% if version == site.versions[1] %}
+                  <li class="gs-opt gs-versions active">{{version}}</li>
+                {% else %}
+                  <li class="gs-opt gs-versions">{{version}}</li>
+                {% endif %}
+              {% endfor %}
+            </ul>
+        </div>
+          <span id="global-search-close">x</span>
+        </form>
+      </div>
       <div class="trigger">
+        <div id="global-search-mobile-border">
+          <div id="gs-search-icon-mobile"></div>
+          <input id="global-search-mobile" placeholder="Search..." type="text"/>
+          <div id="global-search-dropdown-container-mobile">
+            <button class="gs-current-version-mobile btn" type="button" data-toggle="dropdown">
+                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
+                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
+                </svg>
+            </button>
+            <ul class="gs-opt-group gs-version-dropdown-mobile">
+              {% for version in site.versions %}
+                {% if version == site.versions[1] %}
+                  <li class="gs-opt gs-versions active">{{version}}</li>
+                {% else %}
+                  <li class="gs-opt gs-versions">{{version}}</li>
+                {% endif %}
+              {% endfor %}
+            </ul>
+        </div>
+        </div>
         <a class="page-link" href="{{'/get_started' | relative_url }}">Get Started</a>
         <a class="page-link" href="{{'/blog' | relative_url }}">Blog</a>
         <a class="page-link" href="{{'/features' | relative_url }}">Features</a>
         <a class="page-link" href="{{'/ecosystem' | relative_url }}">Ecosystem</a>
         <a class="page-link" href="{{'/api' | relative_url }}">Docs & Tutorials</a>
         <a class="page-link" href="https://github.com/apache/incubator-mxnet">GitHub</a>
+        <div class="dropdown">
+          <span class="dropdown-header">1.7
+            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
+          </span>
+          <div class="dropdown-content">
+            <a href="/">master</a>
+            <a class="dropdown-option-active" href="/versions/1.7/">1.7</a>
+            <a href="/versions/1.6/">1.6</a>
+            <a href="/versions/1.5.0/">1.5.0</a>
+            <a href="/versions/1.4.1/">1.4.1</a>
+            <a href="/versions/1.3.1/">1.3.1</a>
+            <a href="/versions/1.2.1/">1.2.1</a>
+            <a href="/versions/1.1.0/">1.1.0</a>
+            <a href="/versions/1.0.0/">1.0.0</a>
+            <a href="/versions/0.12.1/">0.12.1</a>
+            <a href="/versions/0.11.0/">0.11.0</a>
+          </div>
+        </div>
       </div>
     </nav>
   </div>
diff --git a/docs/static_site/src/_layouts/page_api.html b/docs/static_site/src/_layouts/page_api.html
index bd9d553..457bd5e 100644
--- a/docs/static_site/src/_layouts/page_api.html
+++ b/docs/static_site/src/_layouts/page_api.html
@@ -48,5 +48,8 @@ layout: page
     </div>
     <div class="col-9">
         {{ content }}
+        {%- if page.feedback == true and jekyll.environment == "production" -%}
+            {%- include feedback.html -%}
+        {%- endif -%}
     </div>
 </div>
diff --git a/docs/static_site/src/_sass/feedback.scss b/docs/static_site/src/_sass/feedback.scss
new file mode 100644
index 0000000..9e4ebf1
--- /dev/null
+++ b/docs/static_site/src/_sass/feedback.scss
@@ -0,0 +1,39 @@
+.feedback-container {
+  text-align: center;
+}
+
+.feedback-answer-container {
+  display: inline-block;
+}
+
+.feedback-question {
+  display: inline-block;
+  padding: 0.5em 1em 0.5em 1em;
+}
+
+.feedback-answer {
+  display: inline-block;
+  padding: 0.5em 1em 0.5em 1em;
+  color: #048ccc;
+  cursor: pointer;
+}
+
+.feedback-answer:hover {
+  color: #ffffff;
+  background-color: #048ccc;
+}
+
+.feedback-thank-you {
+  display: none;
+  padding: 0.5em 1em 0.5em 1em;
+}
+
+.feedback-hr-top {
+  margin: 1em;
+  margin-top: 50px;
+}
+
+.feedback-hr-bottom {
+  margin: 1em;
+  margin-bottom: 30px;
+}
diff --git a/docs/static_site/src/_sass/generalVersionDropdown.scss b/docs/static_site/src/_sass/generalVersionDropdown.scss
new file mode 100644
index 0000000..32990cd
--- /dev/null
+++ b/docs/static_site/src/_sass/generalVersionDropdown.scss
@@ -0,0 +1,41 @@
+.dropdown-option-active {
+  color: #ff4500 !important;
+  font-weight: lighter;
+}
+
+.dropdown {
+  position: relative;
+  display: inline-block;
+}
+
+.dropdown-content {
+  display: none;
+  position: absolute;
+  background-color: #f9f9f9;
+  min-width: 160px;
+  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
+  padding: 12px 16px;
+  z-index: 1;
+  text-align: left;
+}
+
+.dropdown:hover .dropdown-content {
+  display: block;
+}
+
+.dropdown-header {
+  color: #ffffff;
+  display: inline-flex;
+}
+
+.dropdown-caret {
+  width: 18px;
+}
+
+.trigger .dropdown-caret {
+  height: 57px;
+}
+
+.dropdown-caret-path {
+  fill: #ffffff;
+}
diff --git a/docs/static_site/src/_sass/globalSearch.scss b/docs/static_site/src/_sass/globalSearch.scss
new file mode 100644
index 0000000..a3867cf
--- /dev/null
+++ b/docs/static_site/src/_sass/globalSearch.scss
@@ -0,0 +1,217 @@
+.trigger {
+  float: right;
+}
+
+/* Search bar - wide screen */
+.gs-search-border {
+  padding-left: 25px;
+  float: right;
+}
+
+#global-search {
+  width: 0px;
+  border: 0px;
+  background-color: transparent;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
+  outline: none;
+  font-size: 1em;
+  color: #ffffff;
+  display: inline-block;
+  margin-bottom: 19px;
+}
+
+#gs-search-icon {
+  background: url(/assets/img/search-icon.svg) center no-repeat;
+  background-size: 1em;
+  height: 30px;
+  width: 30px;
+  position: relative;
+  top: 10px;
+  cursor: pointer;
+  display: inline-block;
+}
+
+#global-search-form {
+  display: none;
+  padding: 5px;
+  line-height: 1em;
+}
+
+#global-search-close {
+  cursor: pointer;
+}
+
+#global-search-dropdown-container {
+  display: inline-block;
+  position: relative;
+}
+
+#global-search-dropdown-container button {
+  background-color: inherit;
+  color: white;
+  font-size: 17px;
+  margin: 0px;
+  border: none;
+  min-width: 100%;
+  outline: 0;
+  height: 37px;
+  width: 90px;
+  padding: 0px;
+  cursor: pointer;
+}
+
+#global-search-dropdown-container-mobile
+  .gs-current-version-mobile
+  .gs-dropdown-caret,
+#global-search-dropdown-container .gs-current-version .gs-dropdown-caret {
+  position: relative;
+  top: 4px;
+  height: 18px;
+}
+
+ul.gs-version-dropdown {
+  display: none;
+  position: absolute;
+  text-align: center;
+  background-color: whitesmoke;
+  box-shadow: none;
+  z-index: 1;
+  margin: 0px;
+  padding: 0px;
+  list-style-type: none;
+}
+
+li.gs-opt.gs-versions {
+  padding: 10px;
+  cursor: pointer;
+}
+
+.gs-version-dropdown li:hover {
+  color: #ff4500 !important;
+}
+
+/* Search bar - mobile */
+#global-search-mobile {
+  width: 120px;
+  margin-right: 10px;
+  background-color: transparent;
+  border: 0px;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
+  outline: none;
+  font-size: 1em;
+  color: white;
+}
+
+#gs-search-icon-mobile {
+  background: url(/assets/img/search-icon.svg) center no-repeat;
+  background-size: 1em;
+  height: 30px;
+  width: 30px;
+  position: relative;
+  top: 10px;
+  cursor: pointer;
+  display: inline-block;
+}
+
+#global-search-dropdown-container-mobile {
+  display: inline-block;
+  position: absolute;
+  right: 10px;
+}
+
+#global-search-dropdown-container-mobile button {
+  background-color: inherit;
+  margin: 0px;
+  border: none;
+  outline: 0;
+  height: 37px;
+  padding: 0px;
+  cursor: pointer;
+}
+
+.gs-version-dropdown-mobile {
+  display: none;
+  position: absolute;
+  text-align: center;
+  background-color: whitesmoke;
+  box-shadow: none;
+  z-index: 1;
+  margin: 0px;
+  padding: 0px;
+  left: -50px;
+  list-style-type: none;
+  width: 166px;
+  left: -138px;
+}
+
+#global-search-mobile-border {
+  line-height: 25px;
+}
+
+#global-search-mobile::placeholder,
+#global-search::placeholder {
+  color: #eeeeee;
+}
+
+.gs-version-dropdown-mobile li.active,
+.gs-version-dropdown li.active {
+  color: #ff4500 !important;
+  font-weight: lighter;
+}
+
+.gs-version-dropdown-mobile li,
+.gs-version-dropdown li {
+  color: #424242;
+  text-decoration: none;
+  display: block;
+  padding-left: 5px;
+  padding-right: 5px;
+  font-size: 17px;
+}
+
+/* Main dropdown wrapper */
+.algolia-autocomplete .ds-dropdown-menu > div {
+  max-height: 60vh;
+  overflow-y: scroll;
+}
+
+#global-search-mobile-border .algolia-autocomplete .ds-dropdown-menu {
+  min-width: 80vw;
+}
+
+#global-search-mobile-border .algolia-autocomplete .ds-dropdown-menu > div {
+  min-width: 80vw;
+  max-height: 90vh;
+}
+
+.gs-search-border .algolia-autocomplete .ds-dropdown-menu {
+  min-width: 680px;
+}
+
+/* Main category */
+.algolia-autocomplete .algolia-docsearch-suggestion--category-header {
+  color: #000000;
+  text-align: center;
+}
+
+/* Category */
+.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {
+  color: gray;
+}
+
+/* Title */
+.algolia-autocomplete .algolia-docsearch-suggestion--title {
+  color: black;
+  font-weight: 300;
+}
+
+/* Description description */
+.algolia-autocomplete .algolia-docsearch-suggestion--text {
+  font-size: 0.8rem;
+  color: gray;
+}
+
+/* Highlighted text */
+.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
+  color: blue;
+}
diff --git a/docs/static_site/src/_sass/minima/_docs.scss b/docs/static_site/src/_sass/minima/_docs.scss
index 09924f3..f628740 100644
--- a/docs/static_site/src/_sass/minima/_docs.scss
+++ b/docs/static_site/src/_sass/minima/_docs.scss
@@ -67,7 +67,9 @@
 }
 
 .docs-faq {
-  background-color: white;
+  background-color: $grey-color-light;
+  padding-top: 20px;
+  padding-bottom: 20px;
 }
 
 .docs-architecture {
@@ -76,4 +78,10 @@
   margin-bottom: 20px;
   padding-top: 20px;
   padding-bottom: 20px;
-}
\ No newline at end of file
+}
+
+.docs-dev-guide {
+  background-color: white;
+  padding-top: 20px;
+  padding-bottom: 20px;
+}
diff --git a/docs/static_site/src/_sass/minima/_getting_started.scss b/docs/static_site/src/_sass/minima/_getting_started.scss
index 550ddaa..5048ef9 100644
--- a/docs/static_site/src/_sass/minima/_getting_started.scss
+++ b/docs/static_site/src/_sass/minima/_getting_started.scss
@@ -2,6 +2,8 @@
   max-width: 800px;
   margin: auto;
   margin-bottom: 40px;
+  padding-bottom: 40px;
+  padding-top: 40px;
 
   .highlight {
     margin-left: 20px;
@@ -67,8 +69,14 @@
 
 li.opt.versions {
   padding: 10px;
-}
+  &:hover {
+    background-color: $color-mxnet;
 
+    & a {
+      color: whitesmoke;
+    }
+  }
+}
 
 .dropdown {
   position: relative;
@@ -91,6 +99,26 @@ ul.dropdown-content {
   list-style-type: none;
 }
 
+ul.version-dropdown {
+  @extend ul.dropdown-content;
+  left: 0px;
+  width: 100%;
+}
+
+.current-version.dropbtn.btn:focus{
+  outline: 0;
+}
+
+.current-version .dropdown-caret {
+  position: relative;
+  top: 4px;
+}
+
+.version-dropdown .active a {
+  color: $grey-color-light;
+}
+
+.version-dropdown a,
 .dropdown-content a {
   color: $grey-color-dark;
   text-decoration: none;
@@ -113,7 +141,7 @@ ul.dropdown-content {
 }
 
 .dropdown:hover .dropbtn {
-  background-color: $color-mxnet
+  background-color: $color-mxnet;
 }
 
 /*
@@ -172,6 +200,11 @@ ul.dropdown-content {
       background-color: $color-mxnet;
       color: $grey-color-light;
     }
+
+    &:focus {
+      outline: 0;
+    }
+    
   }
 
 
diff --git a/docs/static_site/src/_sass/minima/_layout.scss b/docs/static_site/src/_sass/minima/_layout.scss
index 2097210..d7e8d49 100644
--- a/docs/static_site/src/_sass/minima/_layout.scss
+++ b/docs/static_site/src/_sass/minima/_layout.scss
@@ -37,6 +37,14 @@
   .nav-trigger {
     display: none;
   }
+  
+  #global-search-mobile-border {
+    display: none;
+  }
+
+  .gs-search-border {
+    display: inline-block;
+  }
 
   .menu-icon {
     display: none;
@@ -81,6 +89,14 @@
       cursor: pointer;
     }
 
+    .gs-search-border {
+      display: none;
+    }
+
+    #global-search-mobile-border {
+      display: block;
+    }
+
     .menu-icon {
       display: block;
       float: right;
@@ -234,14 +250,14 @@
 
 .page-content {
   height: 100%;
-  padding: $spacing-unit 0, 0;
+  padding: $spacing-unit 0 0;
   flex: 1;
   margin-top: 100px;
 }
 
 .page-content-home {
   height: 100%;
-  padding: $spacing-unit 0, 0;
+  padding: $spacing-unit 0 0;
   margin-top: 100px;
 }
 
@@ -348,3 +364,12 @@
     color: $grey-color-light;
   }
 }
+
+:target::before {
+  display: block;
+  content: " ";
+  margin-top: -86px;
+  height: 86px;
+  visibility: hidden;
+  pointer-events: none;
+}
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_1.png b/docs/static_site/src/assets/img/dev_guide_profilling_1.png
new file mode 100644
index 0000000..7c8248e
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_1.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_2.png b/docs/static_site/src/assets/img/dev_guide_profilling_2.png
new file mode 100644
index 0000000..dbb55a1
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_2.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_3.png b/docs/static_site/src/assets/img/dev_guide_profilling_3.png
new file mode 100644
index 0000000..3f276cf
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_3.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_4.png b/docs/static_site/src/assets/img/dev_guide_profilling_4.png
new file mode 100644
index 0000000..73003b0
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_4.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_5.png b/docs/static_site/src/assets/img/dev_guide_profilling_5.png
new file mode 100644
index 0000000..893ce2e
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_5.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_6.png b/docs/static_site/src/assets/img/dev_guide_profilling_6.png
new file mode 100644
index 0000000..5682d6a
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_6.png differ
diff --git a/docs/static_site/src/assets/img/dev_guide_profilling_7.png b/docs/static_site/src/assets/img/dev_guide_profilling_7.png
new file mode 100644
index 0000000..936262d
Binary files /dev/null and b/docs/static_site/src/assets/img/dev_guide_profilling_7.png differ
diff --git a/docs/static_site/src/assets/img/search-icon.svg b/docs/static_site/src/assets/img/search-icon.svg
new file mode 100644
index 0000000..f9f0649
--- /dev/null
+++ b/docs/static_site/src/assets/img/search-icon.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="0 0 640 640" width="640" height="640"><defs><path d="M469.23 243.82C469.23 359.72 372.03 453.82 252.3 453.82C132.58 453.82 35.37 359.72 35.37 243.82C35.37 127.92 132.58 33.82 252.3 33.82C372.03 33.82 469.23 127.92 469.23 243.82Z" id="d18gl8KaNX"></path><path d="M618.81 619.96L387.86 389.01" id="e6Bj4lKvXb"></path></defs><g><g><g><g><use xlink:href= [...]
diff --git a/docs/static_site/src/assets/js/clipboard.js b/docs/static_site/src/assets/js/clipboard.js
index b47e3ec..28650f3 100644
--- a/docs/static_site/src/assets/js/clipboard.js
+++ b/docs/static_site/src/assets/js/clipboard.js
@@ -1,818 +1,7 @@
 /*!
- * clipboard.js v1.6.1
- * https://zenorocha.github.io/clipboard.js
- *
+ * clipboard.js v2.0.6
+ * https://clipboardjs.com/
+ * 
  * Licensed MIT © Zeno Rocha
  */
-(function (f) {
-    if (typeof exports === "object" && typeof module !== "undefined") {
-        module.exports = f()
-    } else if (typeof define === "function" && define.amd) {
-        define([], f)
-    } else {
-        var g;
-        if (typeof window !== "undefined") {
-            g = window
-        } else if (typeof global !== "undefined") {
-            g = global
-        } else if (typeof self !== "undefined") {
-            g = self
-        } else {
-            g = this
-        }
-        g.Clipboard = f()
-    }
-})(function () {
-    var define, module, exports;
-    return (function e(t, n, r) {
-        function s(o, u) {
-            if (!n[o]) {
-                if (!t[o]) {
-                    var a = typeof require == "function" && require;
-                    if (!u && a) return a(o, !0);
-                    if (i) return i(o, !0);
-                    var f = new Error("Cannot find module '" + o + "'");
-                    throw f.code = "MODULE_NOT_FOUND", f
-                }
-                var l = n[o] = {exports: {}};
-                t[o][0].call(l.exports, function (e) {
-                    var n = t[o][1][e];
-                    return s(n ? n : e)
-                }, l, l.exports, e, t, n, r)
-            }
-            return n[o].exports
-        }
-
-        var i = typeof require == "function" && require;
-        for (var o = 0; o < r.length; o++) s(r[o]);
-        return s
-    })({
-        1: [function (require, module, exports) {
-            var DOCUMENT_NODE_TYPE = 9;
-
-            /**
-             * A polyfill for Element.matches()
-             */
-            if (typeof Element !== 'undefined' && !Element.prototype.matches) {
-                var proto = Element.prototype;
-
-                proto.matches = proto.matchesSelector ||
-                    proto.mozMatchesSelector ||
-                    proto.msMatchesSelector ||
-                    proto.oMatchesSelector ||
-                    proto.webkitMatchesSelector;
-            }
-
-            /**
-             * Finds the closest parent that matches a selector.
-             *
-             * @param {Element} element
-             * @param {String} selector
-             * @return {Function}
-             */
-            function closest(element, selector) {
-                while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
-                    if (element.matches(selector)) return element;
-                    element = element.parentNode;
-                }
-            }
-
-            module.exports = closest;
-
-        }, {}], 2: [function (require, module, exports) {
-            var closest = require('./closest');
-
-            /**
-             * Delegates event to a selector.
-             *
-             * @param {Element} element
-             * @param {String} selector
-             * @param {String} type
-             * @param {Function} callback
-             * @param {Boolean} useCapture
-             * @return {Object}
-             */
-            function delegate(element, selector, type, callback, useCapture) {
-                var listenerFn = listener.apply(this, arguments);
-
-                element.addEventListener(type, listenerFn, useCapture);
-
-                return {
-                    destroy: function () {
-                        element.removeEventListener(type, listenerFn, useCapture);
-                    }
-                }
-            }
-
-            /**
-             * Finds closest match and invokes callback.
-             *
-             * @param {Element} element
-             * @param {String} selector
-             * @param {String} type
-             * @param {Function} callback
-             * @return {Function}
-             */
-            function listener(element, selector, type, callback) {
-                return function (e) {
-                    e.delegateTarget = closest(e.target, selector);
-
-                    if (e.delegateTarget) {
-                        callback.call(element, e);
-                    }
-                }
-            }
-
-            module.exports = delegate;
-
-        }, {"./closest": 1}], 3: [function (require, module, exports) {
-            /**
-             * Check if argument is a HTML element.
-             *
-             * @param {Object} value
-             * @return {Boolean}
-             */
-            exports.node = function (value) {
-                return value !== undefined
-                    && value instanceof HTMLElement
-                    && value.nodeType === 1;
-            };
-
-            /**
-             * Check if argument is a list of HTML elements.
-             *
-             * @param {Object} value
-             * @return {Boolean}
-             */
-            exports.nodeList = function (value) {
-                var type = Object.prototype.toString.call(value);
-
-                return value !== undefined
-                    && (type === '[object NodeList]' || type === '[object HTMLCollection]')
-                    && ('length' in value)
-                    && (value.length === 0 || exports.node(value[0]));
-            };
-
-            /**
-             * Check if argument is a string.
-             *
-             * @param {Object} value
-             * @return {Boolean}
-             */
-            exports.string = function (value) {
-                return typeof value === 'string'
-                    || value instanceof String;
-            };
-
-            /**
-             * Check if argument is a function.
-             *
-             * @param {Object} value
-             * @return {Boolean}
-             */
-            exports.fn = function (value) {
-                var type = Object.prototype.toString.call(value);
-
-                return type === '[object Function]';
-            };
-
-        }, {}], 4: [function (require, module, exports) {
-            var is = require('./is');
-            var delegate = require('delegate');
-
-            /**
-             * Validates all params and calls the right
-             * listener function based on its target type.
-             *
-             * @param {String|HTMLElement|HTMLCollection|NodeList} target
-             * @param {String} type
-             * @param {Function} callback
-             * @return {Object}
-             */
-            function listen(target, type, callback) {
-                if (!target && !type && !callback) {
-                    throw new Error('Missing required arguments');
-                }
-
-                if (!is.string(type)) {
-                    throw new TypeError('Second argument must be a String');
-                }
-
-                if (!is.fn(callback)) {
-                    throw new TypeError('Third argument must be a Function');
-                }
-
-                if (is.node(target)) {
-                    return listenNode(target, type, callback);
-                } else if (is.nodeList(target)) {
-                    return listenNodeList(target, type, callback);
-                } else if (is.string(target)) {
-                    return listenSelector(target, type, callback);
-                } else {
-                    throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
-                }
-            }
-
-            /**
-             * Adds an event listener to a HTML element
-             * and returns a remove listener function.
-             *
-             * @param {HTMLElement} node
-             * @param {String} type
-             * @param {Function} callback
-             * @return {Object}
-             */
-            function listenNode(node, type, callback) {
-                node.addEventListener(type, callback);
-
-                return {
-                    destroy: function () {
-                        node.removeEventListener(type, callback);
-                    }
-                }
-            }
-
-            /**
-             * Add an event listener to a list of HTML elements
-             * and returns a remove listener function.
-             *
-             * @param {NodeList|HTMLCollection} nodeList
-             * @param {String} type
-             * @param {Function} callback
-             * @return {Object}
-             */
-            function listenNodeList(nodeList, type, callback) {
-                Array.prototype.forEach.call(nodeList, function (node) {
-                    node.addEventListener(type, callback);
-                });
-
-                return {
-                    destroy: function () {
-                        Array.prototype.forEach.call(nodeList, function (node) {
-                            node.removeEventListener(type, callback);
-                        });
-                    }
-                }
-            }
-
-            /**
-             * Add an event listener to a selector
-             * and returns a remove listener function.
-             *
-             * @param {String} selector
-             * @param {String} type
-             * @param {Function} callback
-             * @return {Object}
-             */
-            function listenSelector(selector, type, callback) {
-                return delegate(document.body, selector, type, callback);
-            }
-
-            module.exports = listen;
-
-        }, {"./is": 3, "delegate": 2}], 5: [function (require, module, exports) {
-            function select(element) {
-                var selectedText;
-
-                if (element.nodeName === 'SELECT') {
-                    element.focus();
-
-                    selectedText = element.value;
-                } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
-                    var isReadOnly = element.hasAttribute('readonly');
-
-                    if (!isReadOnly) {
-                        element.setAttribute('readonly', '');
-                    }
-
-                    element.select();
-                    element.setSelectionRange(0, element.value.length);
-
-                    if (!isReadOnly) {
-                        element.removeAttribute('readonly');
-                    }
-
-                    selectedText = element.value;
-                } else {
-                    if (element.hasAttribute('contenteditable')) {
-                        element.focus();
-                    }
-
-                    var selection = window.getSelection();
-                    var range = document.createRange();
-
-                    range.selectNodeContents(element);
-                    selection.removeAllRanges();
-                    selection.addRange(range);
-
-                    selectedText = selection.toString();
-                }
-
-                return selectedText;
-            }
-
-            module.exports = select;
-
-        }, {}], 6: [function (require, module, exports) {
-            function E() {
-                // Keep this empty so it's easier to inherit from
-                // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
-            }
-
-            E.prototype = {
-                on: function (name, callback, ctx) {
-                    var e = this.e || (this.e = {});
-
-                    (e[name] || (e[name] = [])).push({
-                        fn: callback,
-                        ctx: ctx
-                    });
-
-                    return this;
-                },
-
-                once: function (name, callback, ctx) {
-                    var self = this;
-
-                    function listener() {
-                        self.off(name, listener);
-                        callback.apply(ctx, arguments);
-                    };
-
-                    listener._ = callback
-                    return this.on(name, listener, ctx);
-                },
-
-                emit: function (name) {
-                    var data = [].slice.call(arguments, 1);
-                    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
-                    var i = 0;
-                    var len = evtArr.length;
-
-                    for (i; i < len; i++) {
-                        evtArr[i].fn.apply(evtArr[i].ctx, data);
-                    }
-
-                    return this;
-                },
-
-                off: function (name, callback) {
-                    var e = this.e || (this.e = {});
-                    var evts = e[name];
-                    var liveEvents = [];
-
-                    if (evts && callback) {
-                        for (var i = 0, len = evts.length; i < len; i++) {
-                            if (evts[i].fn !== callback && evts[i].fn._ !== callback)
-                                liveEvents.push(evts[i]);
-                        }
-                    }
-
-                    // Remove event from queue to prevent memory leak
-                    // Suggested by https://github.com/lazd
-                    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
-
-                    (liveEvents.length)
-                        ? e[name] = liveEvents
-                        : delete e[name];
-
-                    return this;
-                }
-            };
-
-            module.exports = E;
-
-        }, {}], 7: [function (require, module, exports) {
-            (function (global, factory) {
-                if (typeof define === "function" && define.amd) {
-                    define(['module', 'select'], factory);
-                } else if (typeof exports !== "undefined") {
-                    factory(module, require('select'));
-                } else {
-                    var mod = {
-                        exports: {}
-                    };
-                    factory(mod, global.select);
-                    global.clipboardAction = mod.exports;
-                }
-            })(this, function (module, _select) {
-                'use strict';
-
-                var _select2 = _interopRequireDefault(_select);
-
-                function _interopRequireDefault(obj) {
-                    return obj && obj.__esModule ? obj : {
-                        default: obj
-                    };
-                }
-
-                var _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;
-                };
-
-                function _classCallCheck(instance, Constructor) {
-                    if (!(instance instanceof Constructor)) {
-                        throw new TypeError("Cannot call a class as a function");
-                    }
-                }
-
-                var _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;
-                    };
-                }();
-
-                var ClipboardAction = function () {
-                    /**
-                     * @param {Object} options
-                     */
-                    function ClipboardAction(options) {
-                        _classCallCheck(this, ClipboardAction);
-
-                        this.resolveOptions(options);
-                        this.initSelection();
-                    }
-
-                    /**
-                     * Defines base properties passed from constructor.
-                     * @param {Object} options
-                     */
-
-
-                    _createClass(ClipboardAction, [{
-                        key: 'resolveOptions',
-                        value: function resolveOptions() {
-                            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
-                            this.action = options.action;
-                            this.emitter = options.emitter;
-                            this.target = options.target;
-                            this.text = options.text;
-                            this.trigger = options.trigger;
-
-                            this.selectedText = '';
-                        }
-                    }, {
-                        key: 'initSelection',
-                        value: function initSelection() {
-                            if (this.text) {
-                                this.selectFake();
-                            } else if (this.target) {
-                                this.selectTarget();
-                            }
-                        }
-                    }, {
-                        key: 'selectFake',
-                        value: function selectFake() {
-                            var _this = this;
-
-                            var isRTL = document.documentElement.getAttribute('dir') == 'rtl';
-
-                            this.removeFake();
-
-                            this.fakeHandlerCallback = function () {
-                                return _this.removeFake();
-                            };
-                            this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true;
-
-                            this.fakeElem = document.createElement('textarea');
-                            // Prevent zooming on iOS
-                            this.fakeElem.style.fontSize = '12pt';
-                            // Reset box model
-                            this.fakeElem.style.border = '0';
-                            this.fakeElem.style.padding = '0';
-                            this.fakeElem.style.margin = '0';
-                            // Move element out of screen horizontally
-                            this.fakeElem.style.position = 'absolute';
-                            this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
-                            // Move element to the same position vertically
-                            var yPosition = window.pageYOffset || document.documentElement.scrollTop;
-                            this.fakeElem.style.top = yPosition + 'px';
-
-                            this.fakeElem.setAttribute('readonly', '');
-                            this.fakeElem.value = this.text;
-
-                            document.body.appendChild(this.fakeElem);
-
-                            this.selectedText = (0, _select2.default)(this.fakeElem);
-                            this.copyText();
-                        }
-                    }, {
-                        key: 'removeFake',
-                        value: function removeFake() {
-                            if (this.fakeHandler) {
-                                document.body.removeEventListener('click', this.fakeHandlerCallback);
-                                this.fakeHandler = null;
-                                this.fakeHandlerCallback = null;
-                            }
-
-                            if (this.fakeElem) {
-                                document.body.removeChild(this.fakeElem);
-                                this.fakeElem = null;
-                            }
-                        }
-                    }, {
-                        key: 'selectTarget',
-                        value: function selectTarget() {
-                            this.selectedText = (0, _select2.default)(this.target);
-                            this.copyText();
-                        }
-                    }, {
-                        key: 'copyText',
-                        value: function copyText() {
-                            var succeeded = void 0;
-
-                            try {
-                                succeeded = document.execCommand(this.action);
-                            } catch (err) {
-                                succeeded = false;
-                            }
-
-                            this.handleResult(succeeded);
-                        }
-                    }, {
-                        key: 'handleResult',
-                        value: function handleResult(succeeded) {
-                            this.emitter.emit(succeeded ? 'success' : 'error', {
-                                action: this.action,
-                                text: this.selectedText,
-                                trigger: this.trigger,
-                                clearSelection: this.clearSelection.bind(this)
-                            });
-                        }
-                    }, {
-                        key: 'clearSelection',
-                        value: function clearSelection() {
-                            if (this.target) {
-                                this.target.blur();
-                            }
-
-                            window.getSelection().removeAllRanges();
-                        }
-                    }, {
-                        key: 'destroy',
-                        value: function destroy() {
-                            this.removeFake();
-                        }
-                    }, {
-                        key: 'action',
-                        set: function set() {
-                            var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
-
-                            this._action = action;
-
-                            if (this._action !== 'copy' && this._action !== 'cut') {
-                                throw new Error('Invalid "action" value, use either "copy" or "cut"');
-                            }
-                        },
-                        get: function get() {
-                            return this._action;
-                        }
-                    }, {
-                        key: 'target',
-                        set: function set(target) {
-                            if (target !== undefined) {
-                                if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {
-                                    if (this.action === 'copy' && target.hasAttribute('disabled')) {
-                                        throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
-                                    }
-
-                                    if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
-                                        throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
-                                    }
-
-                                    this._target = target;
-                                } else {
-                                    throw new Error('Invalid "target" value, use a valid Element');
-                                }
-                            }
-                        },
-                        get: function get() {
-                            return this._target;
-                        }
-                    }]);
-
-                    return ClipboardAction;
-                }();
-
-                module.exports = ClipboardAction;
-            });
-
-        }, {"select": 5}], 8: [function (require, module, exports) {
-            (function (global, factory) {
-                if (typeof define === "function" && define.amd) {
-                    define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);
-                } else if (typeof exports !== "undefined") {
-                    factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));
-                } else {
-                    var mod = {
-                        exports: {}
-                    };
-                    factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);
-                    global.clipboard = mod.exports;
-                }
-            })(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {
-                'use strict';
-
-                var _clipboardAction2 = _interopRequireDefault(_clipboardAction);
-
-                var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);
-
-                var _goodListener2 = _interopRequireDefault(_goodListener);
-
-                function _interopRequireDefault(obj) {
-                    return obj && obj.__esModule ? obj : {
-                        default: obj
-                    };
-                }
-
-                function _classCallCheck(instance, Constructor) {
-                    if (!(instance instanceof Constructor)) {
-                        throw new TypeError("Cannot call a class as a function");
-                    }
-                }
-
-                var _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;
-                    };
-                }();
-
-                function _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;
-                }
-
-                function _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;
-                }
-
-                var Clipboard = function (_Emitter) {
-                    _inherits(Clipboard, _Emitter);
-
-                    /**
-                     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
-                     * @param {Object} options
-                     */
-                    function Clipboard(trigger, options) {
-                        _classCallCheck(this, Clipboard);
-
-                        var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));
-
-                        _this.resolveOptions(options);
-                        _this.listenClick(trigger);
-                        return _this;
-                    }
-
-                    /**
-                     * Defines if attributes would be resolved using internal setter functions
-                     * or custom functions that were passed in the constructor.
-                     * @param {Object} options
-                     */
-
-
-                    _createClass(Clipboard, [{
-                        key: 'resolveOptions',
-                        value: function resolveOptions() {
-                            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
-                            this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
-                            this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
-                            this.text = typeof options.text === 'function' ? options.text : this.defaultText;
-                        }
-                    }, {
-                        key: 'listenClick',
-                        value: function listenClick(trigger) {
-                            var _this2 = this;
-
-                            this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {
-                                return _this2.onClick(e);
-                            });
-                        }
-                    }, {
-                        key: 'onClick',
-                        value: function onClick(e) {
-                            var trigger = e.delegateTarget || e.currentTarget;
-
-                            if (this.clipboardAction) {
-                                this.clipboardAction = null;
-                            }
-
-                            this.clipboardAction = new _clipboardAction2.default({
-                                action: this.action(trigger),
-                                target: this.target(trigger),
-                                text: this.text(trigger),
-                                trigger: trigger,
-                                emitter: this
-                            });
-                        }
-                    }, {
-                        key: 'defaultAction',
-                        value: function defaultAction(trigger) {
-                            return getAttributeValue('action', trigger);
-                        }
-                    }, {
-                        key: 'defaultTarget',
-                        value: function defaultTarget(trigger) {
-                            var selector = getAttributeValue('target', trigger);
-
-                            if (selector) {
-                                return document.querySelector(selector);
-                            }
-                        }
-                    }, {
-                        key: 'defaultText',
-                        value: function defaultText(trigger) {
-                            return getAttributeValue('text', trigger);
-                        }
-                    }, {
-                        key: 'destroy',
-                        value: function destroy() {
-                            this.listener.destroy();
-
-                            if (this.clipboardAction) {
-                                this.clipboardAction.destroy();
-                                this.clipboardAction = null;
-                            }
-                        }
-                    }], [{
-                        key: 'isSupported',
-                        value: function isSupported() {
-                            var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];
-
-                            var actions = typeof action === 'string' ? [action] : action;
-                            var support = !!document.queryCommandSupported;
-
-                            actions.forEach(function (action) {
-                                support = support && !!document.queryCommandSupported(action);
-                            });
-
-                            return support;
-                        }
-                    }]);
-
-                    return Clipboard;
-                }(_tinyEmitter2.default);
-
-                /**
-                 * Helper function to retrieve attribute value.
-                 * @param {String} suffix
-                 * @param {Element} element
-                 */
-                function getAttributeValue(suffix, element) {
-                    var attribute = 'data-clipboard-' + suffix;
-
-                    if (!element.hasAttribute(attribute)) {
-                        return;
-                    }
-
-                    return element.getAttribute(attribute);
-                }
-
-                module.exports = Clipboard;
-            });
-
-        }, {"./clipboard-action": 7, "good-listener": 4, "tiny-emitter": 6}]
-    }, {}, [8])(8)
-});
\ No newline at end of file
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.lengt [...]
\ No newline at end of file
diff --git a/docs/static_site/src/assets/js/copycode.js b/docs/static_site/src/assets/js/copycode.js
index 3e7ce5d..6bda2f2 100644
--- a/docs/static_site/src/assets/js/copycode.js
+++ b/docs/static_site/src/assets/js/copycode.js
@@ -19,79 +19,68 @@
 
 /* Copy code to clipboard */
 
-
-function addBtn() {
-    copyBtn = '<button type="button" class="copy-btn" data-placement="bottom" title="Copy to clipboard">copy</button>'
-    codeBlock = $('figure,highlight, div.highlight');
-    codeBlock.css('position', 'relative')
-    codeBlock.prepend(copyBtn);
-    codeBlock.hover(
-        function () {
-            $(this).children().first().show();
-        }, function () {
-            $(this).children().first().hide();
-        }
-    );
-
-};
-
-function html2clipboard(content) {
-    var tmpEl = document.createElement("div");
-    tmpEl.style.opacity = 0;
-    tmpEl.style.position = "absolute";
-    tmpEl.style.pointerEvents = "none";
-    tmpEl.style.zIndex = -1;
-
-    tmpEl.innerHTML = content;
-    document.body.appendChild(tmpEl);
-
-    var range = document.createRange();
-    range.selectNode(tmpEl);
-    window.getSelection().addRange(range);
-    document.execCommand("copy");
-    document.body.removeChild(tmpEl);
-}
-
 $(document).ready(function () {
-    addBtn()
+  // Regex of prompts to be omitted when copy
+  const LANG_GP = {
+    default: [">>> ", "\\.\\.\\."],
+    python: [">>> ", "\\.\\.\\."],
+    scala: ["scala>"],
+    java: [],
+    julia: ["julia> "],
+    r: ["> "],
+    perl: ["pdl>"],
+    cpp: [""],
+    bash: ["\\$ "],
+  };
 
-    clipboard = new Clipboard('.copy-btn', {
-        target: function (trigger) {
-            return trigger.parentNode.querySelector('code');
-        }
-    });
+  /* Functions to get the language of a code block related to a copy button
+   * called one by one until a valid lang is returned 
+   * new callbacks should be added before "default"
+   */
+  const LANG_GETTER = [
+    (copyBtn) => copyBtn.nextElementSibling.children[0].dataset.lang,
+    (copyBtn) => copyBtn.parentNode.parentNode.classList[0].split("-")[1],
+    () => "default",
+  ];
 
-    clipboard.on('success', function (e) {
-        //Deal with codes with leading gap
-        var btnClass = e.trigger.classList;
-        var lang = btnClass[btnClass.length - 1];
-        var lines = e.text.split('\n');
-        var hasGap = false;
-        var continueSign = '...';
+  // Append a copy button to each code block on the page
+  $("figure.highlight, div.highlight").each(function () {
+    const copyBtn = $('<button type="button" class="copy-btn">copy</button>');
+    $(this)
+      .css("position", "relative")
+      .prepend(copyBtn)
+      .hover(
+        () => copyBtn.show(),
+        () => copyBtn.hide()
+      );
+  });
 
-        e.clearSelection();
+  // Clipboard feature based on Clipboard.js v2.0.6
+  const cleanPrompt = function (line, prompts) {
+    let res = line;
+    for (let i = 0; i < prompts.length; i++) {
+      let reg = new RegExp("(?:^\\s*)" + prompts[i]);
+      if (reg.test(res)) {
+        res = res.replace(reg, "");
+        break;
+      }
+    }
+    return res + "\n";
+  };
 
-        for (var i = 0; i < lines.length; ++i) {
-            lines[i] = lines[i].replace(/^\s+|\s+$/g, "");
-            if (!hasGap && lines[i].startsWith(LANG_GP[lang])) hasGap = true;
-        }
+  const getCodeBlockLang = function (copyBtn, langGetFunc) {
+    return langGetFunc.reduce((res, getter) => res || getter(copyBtn), "");
+  }
 
-        if (hasGap) {
-            var content = '';
-            for (var i = 0; i < lines.length; ++i) {
-                if (lines[i].startsWith(LANG_GP[lang]) || ((lang == 'python' || lang == 'default') &&
-                    lines[i].startsWith(continueSign))) {
-                    content = content.concat(lines[i].substring(LANG_GP[lang].length, lines[i].length) + '<br />');
-                } else if (lines[i].length == 0) content = content.concat('<br />');
-            }
-            content = content.substring(0, content.length - 6);
-            html2clipboard(content);
-        }
-    });
+  const clipboard = new ClipboardJS(".copy-btn", {
+    text: function (trigger) {
+      const lang = getCodeBlockLang(trigger, LANG_GETTER);
+      const langPrompts = LANG_GP[lang] || [];
+      const lines = trigger.parentNode.querySelector("code").textContent.split("\n");
+      const cleanedCode = lines.reduce((content, line) => content.concat(cleanPrompt(line, langPrompts)), "");
+      return cleanedCode.replace(/\n$/, "");
+    },
+  });
 
-    clipboard.on('error', function (e) {
-        $(e.trigger).attr('title', 'Copy failed. Try again.')
-            .tooltip('fixTitle')
-            .tooltip('show');
-    });
+  clipboard.on("success", (e) => e.clearSelection());
 });
diff --git a/docs/static_site/src/assets/js/feedback.js b/docs/static_site/src/assets/js/feedback.js
new file mode 100644
index 0000000..f454237
--- /dev/null
+++ b/docs/static_site/src/assets/js/feedback.js
@@ -0,0 +1,33 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+$(document).ready(function() {
+  $(".feedback-answer").on("click", function () {
+    $(".feedback-question").remove();
+    $(".feedback-answer-container").remove();
+    $(".feedback-thank-you").show();
+    ga("send", {
+      hitType: "event",
+      eventCategory: "Did this page help you?",
+      eventAction: $(this).attr("data-response"),
+      eventLabel: window.location.pathname || "unknown",
+      eventValue: $(this).attr("data-response") === "yes" ? 1 : 0
+    });
+  });
+});
diff --git a/docs/static_site/src/assets/js/globalSearch.js b/docs/static_site/src/assets/js/globalSearch.js
new file mode 100644
index 0000000..bc2cf1b
--- /dev/null
+++ b/docs/static_site/src/assets/js/globalSearch.js
@@ -0,0 +1,118 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* Installation page display functions for install selector.
+   This utility allows direct links to specific install instructions.
+*/
+
+$(document).ready(function () {
+  const default_version = $("#gs-current-version-label").text() || "master";
+  // bind docsearch
+  const globalSearch = docsearch({
+    apiKey: "500f8e78748bd043cc6e4ac130e8c0e7",
+    indexName: "apache_mxnet",
+    inputSelector: "#global-search",
+    algoliaOptions: {
+      facetFilters: ["version:" + default_version],
+    },
+    debug: false, // Set debug to true if you want to inspect the dropdown
+  });
+
+  const globalSearchMobile = docsearch({
+    apiKey: "500f8e78748bd043cc6e4ac130e8c0e7",
+    indexName: "apache_mxnet",
+    inputSelector: "#global-search-mobile",
+    algoliaOptions: {
+      facetFilters: ["version:" + default_version],
+      hitsPerPage: 5,
+    },
+    debug: false, // Set debug to true if you want to inspect the dropdown
+  });
+
+  // search bar animation and event listeners for desktop 
+  $("#gs-search-icon").click(function () {
+    $(".trigger").fadeOut("fast", function () {
+      $("#global-search-form").css("display", "inline-block");
+      $("#global-search-close").show();
+      $("#global-search-dropdown-container").show();
+      $("#global-search")
+        .animate({
+          width: "300px",
+        })
+        .focus();
+    });
+  });
+
+  $("#global-search-close").click(function () {
+    $("#global-search-dropdown-container").hide();
+    $("#global-search").animate(
+      {
+        width: "0px",
+      },
+      function () {
+        $(this).hide();
+        $("#global-search-form").hide();
+        $(".trigger").fadeIn("fast");
+      }
+    );
+  });
+
+  $("#global-search-dropdown-container").click(function (e) {
+    $(".gs-version-dropdown").toggle();
+    e.stopPropagation();
+  });
+
+  $("ul.gs-version-dropdown li").each(function () {
+    $(this).on("click", function () {
+      $("#global-search").val("");
+      $(".gs-version-dropdown li.gs-opt.active").removeClass("active");
+      $(this).addClass("active");
+      $("#gs-current-version-label").html(this.innerHTML);
+      globalSearch.algoliaOptions = {
+        facetFilters: ["version:" + this.innerHTML],
+      };
+    });
+  });
+
+  // search bar event listeners for mobile and tablet 
+  $("#global-search-dropdown-container-mobile").click(function (e) {
+    $(".gs-version-dropdown-mobile").toggle();
+    e.stopPropagation();
+  });
+
+  $("ul.gs-version-dropdown-mobile li").each(function () {
+    $(this).on("click", function () {
+      $("#global-search-mobile")
+        .val("")
+        .attr("placeholder", "v - " + this.innerHTML);
+      $(".gs-version-dropdown-mobile li.gs-opt.active").removeClass("active");
+      $(this).addClass("active");
+      globalSearchMobile.algoliaOptions = {
+        facetFilters: ["version:" + this.innerHTML],
+        hitsPerPage: 5,
+      };
+    });
+  });
+
+  // Common logic
+  $(document).click(function () {
+    $(".gs-version-dropdown").hide();
+    $(".gs-version-dropdown-mobile").hide();
+  });
+});
diff --git a/docs/static_site/src/assets/js/options.js b/docs/static_site/src/assets/js/options.js
index 9cd944f..e495f16 100644
--- a/docs/static_site/src/assets/js/options.js
+++ b/docs/static_site/src/assets/js/options.js
@@ -45,14 +45,14 @@ $(document).ready(function () {
         }
     }
 
-    function setSelects(urlParams) {
+    function setSelects(urlParams, dontPushState) {
         let queryString = '?';
         $('button.opt').removeClass('active');
         if (urlParams.get('version')) {
             versionSelect = urlParams.get('version');
             $('li.versions').removeClass('active');
-            $('li.versions').each(function(){is_a_match($(this), versionSelect)});
-            $('.current-version').html( versionSelect + ' <span class="caret"></span>' );
+            $('li.versions').each(function () { is_a_match($(this), versionSelect) });
+            $('.current-version').html(versionSelect + '<svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>');
             queryString += 'version=' + versionSelect + '&';
         }
         if (urlParams.get('platform')) {
@@ -87,7 +87,7 @@ $(document).ready(function () {
 
         showContent();
 
-        if (window.location.href.indexOf("/get_started") >= 0) {
+        if (window.location.href.indexOf("/get_started") >= 0 && !dontPushState) {
             history.pushState(null, null, queryString);
         }
     }
@@ -129,5 +129,28 @@ $(document).ready(function () {
     $('.opt-group').on('click', '.opt', setContent);
     $('.install-widget').css("visibility", "visible");
     $('.install-content').css("visibility", "visible");
+    $(window).on('popstate', function(){
+        setSelects(urlSearchParams(window.location.search), true);
+    });
 
+    let timer;
+    const toggleDropdown = function(showContent) {
+        if (timer) clearTimeout(timer);
+        if (showContent) {
+            timer = setTimeout(function() {
+                $(".version-dropdown").show()
+            }, 250);  
+        } else {
+            $(".version-dropdown").hide()
+        }
+    }
+
+    $("#version-dropdown-container")
+        .mouseenter(toggleDropdown.bind(null, true))
+        .mouseleave(toggleDropdown.bind(null, false))
+        .click(function() {$(".version-dropdown").toggle()});
+
+    $("ul.version-dropdown").click(function(e) {
+        e.preventDefault();
+    });
 });
diff --git a/docs/static_site/src/assets/main.scss b/docs/static_site/src/assets/main.scss
index 3ab5c70..849bcb0 100644
--- a/docs/static_site/src/assets/main.scss
+++ b/docs/static_site/src/assets/main.scss
@@ -6,3 +6,6 @@ body {
 
 
 @import "minima";
+@import "globalSearch";
+@import "generalVersionDropdown";
+@import "feedback";
diff --git a/docs/static_site/src/pages/api/api.html b/docs/static_site/src/pages/api/api.html
index 6f87cf6..87841d8 100644
--- a/docs/static_site/src/pages/api/api.html
+++ b/docs/static_site/src/pages/api/api.html
@@ -173,6 +173,18 @@ docs:
         </ul>
     </div>
 </div>
+<div class="docs-dev-guide">
+  <div class="wrapper">
+      <h2>Developer Guide</h2>
+      <ul>
+        {%- for p in site.pages -%}
+          {%- if p.category == 'Developer Guide' -%}
+            <li><a href="{{p.url | relative_url}}">{{p.title}}</a></li>
+          {%- endif -%}
+        {%- endfor -%}
+      </ul>
+  </div>
+</div>
 <div class="docs-faq">
     <div class="wrapper">
         <h2>FAQ</h2>
diff --git a/docs/static_site/src/pages/api/developer_guide/1_github_contribution_and_PR_verification_tips.md b/docs/static_site/src/pages/api/developer_guide/1_github_contribution_and_PR_verification_tips.md
new file mode 100644
index 0000000..93cc916
--- /dev/null
+++ b/docs/static_site/src/pages/api/developer_guide/1_github_contribution_and_PR_verification_tips.md
@@ -0,0 +1,193 @@
+---
+layout: page_category
+title:  GitHub contribution and PR verification tips 
+category: Developer Guide
+permalink: /api/dev-guide/github_contribution_and_PR_verification_tips
+---
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# GitHub contribution and PR verification tips 
+
+Use this page for general git workflow tips. 
+
+## Setup and configure
+
+It is recommended that you fork the MXNet repo, and then set the original repo as an upstream remote repo. 
+
+Fork [https://github.com/apache/incubator-mxnet](https://github.com/apache/incubator-mxnet) then:
+
+```
+git clone --recursive https://github.com/your_username/incubator-mxnet
+cd mxnet
+git remote add upstream https://github.com/apache/incubator-mxnet
+```
+
+Once `upstream` was added, then create a branch for your contribution.
+
+
+```
+git branch your-contribution-branch
+```
+
+Note that you can incorporate the changes from `upstream` to any of your local branches during or after development via: 
+
+```
+git fetch upstream
+git rebase upstream/master
+```
+
+See [this stackoverflow discussion](https://stackoverflow.com/questions/3357122/git-pull-vs-git-fetch-vs-git-rebase) for more details about difference between `git pull`, `git rebase` and `git merge`.
+
+Since Apache MXNet 3rd party git submodules, to update their changes on your branch after rebase, you can run:
+
+```
+git submodule update --recursive
+```
+
+## Save your local changes for future
+
+During development, you can save your current changes in your branch before committing anything. For example to go to another branch to do something else via:
+
+
+```
+git stash save
+```
+
+To restore the changes so that they can be added to a commit use:
+
+
+```
+git stash pop
+```
+
+
+To drop the changes, use:
+
+```
+git stash drop
+```
+
+## Reset
+
+Sometimes, if you want to wipe out the changes you have made you can use:
+
+```
+git reset --hard
+```
+
+Be very careful since hard-reset removes any of the changes and you’ll be back to the HEAD commit. To remove all the changed before a commit given its commit-SHA you can use `git reset --hard commit-SHA` or `git reset --hard HEAD~2` to remove relative to the first two commits on top of HEAD.
+
+However, sometimes it’s useful to keep the files/changes staged when moving the HEAD which can be done via 
+`git reset --soft`. All of the files changed between the original HEAD and the commit will be staged.
+
+In [summary](https://stackoverflow.com/a/50022436),
+
+
+* **`--soft`**: **uncommit** changes, changes are left staged (*index*).
+* **`--mixed`** *(default)*: **uncommit + unstage** changes, changes are left in *working tree*.
+* **`--hard`**: **uncommit + unstage + delete** changes, nothing left.
+
+
+
+## Recover a previous commit after reset
+
+Sometimes you might mistakenly reset a branch to a wrong commit. When that happens, you can use the following command to show the list of recent commits:
+
+
+```
+git reflog
+```
+
+Once you get the right hashtag, you can use git reset again to change the head to the right commit.
+
+
+## How to resolve conflict with master
+
+Sometimes when rebasing to the most recent master as explained above, git may show you there are some conflicts which it cannot resolve. These changes will not be merged. For examples, your file `conflict.py` has some conflicts with the master branch. Here you need to:
+
+* manually modify the file to resolve the conflict.
+* After you resolved the conflict, mark it as resolved by:
+
+```
+git add conflict.py
+```
+
+* Then you can continue rebase by:
+
+```
+git rebase --continue
+```
+
+* Finally push to your fork, you may need to **force push** here:
+
+```
+git push --force
+```
+
+**Note** that force push is okay when it’s on your branch and you are the only one who is using that branch. Otherwise, it can have bad consequences as it’s rewritten the history.
+
+
+## How to group multiple commits into one
+
+Sometimes, you may have added a lot of related commits suitable to be grouped/combined together to create one meaningful atomic commit. For example, when later commits are only fixes to previous ones, in your PR. 
+If you haven’t configured your default git editor, do the following once:
+
+```
+git config core.editor the-editor-you-like
+```
+
+Assume we want to merge the last 3 commits.
+
+```
+git rebase -i HEAD~3
+```
+
+1. It will pop up an text editor. Set the **first commit as pick,** and **change later ones to squash**.
+2. After you saved the file, it will pop up another text editor to ask you modify the combined commit message.
+3. Push the changes to your fork, you need to force push.
+
+```
+git push --force
+```
+
+**Note** that force push is okay when it’s on your branch and you are the only one who is using that branch. Otherwise, it can have bad consequences as it’s rewritten the history.
+
+
+## Apply only k-latest commits on to the master
+
+Sometimes it is useful to only apply your k-latest changes on top of the master. This usually happens when you have other m-commits that are already merged before these k-commits. Directly rebase against the master might cause merge conflicts on these first m-commits (which can be safely discarded).
+
+You can instead use the following command:
+
+
+```
+# k is the concrete number. Put HEAD~2 for the last 1 commit.
+git rebase --onto upstream/master HEAD~k
+```
+
+You can then force push to the master `git push --force`. Note that the above command will discard all the commits before the last k ones.
+
+
+## What is the consequence of force push
+
+The last three tips require the force push, this is because we altered the path of the commits. **It is fine to force push to your own fork, as long as the commits changed are only yours.** In case there are multiple collaborators who use your branch there is a safer option `git push --force-with-lease.`
+
+
+## PR verification
+
+When sending a pull request, remember to add some tests. During the development, one can set `MXNET_TEST_COUNT=1000/10000` to test on some randomly selected test cases. This makes the testing and development cycle faster. Moreover, some test results might change due to the seed in pseudo-random number generator. To fix the seed during testing, set `MXNET_TEST_SEED=your seed number`.
diff --git a/docs/static_site/src/pages/api/developer_guide/debugging_and_performance_optimization_tips.md b/docs/static_site/src/pages/api/developer_guide/debugging_and_performance_optimization_tips.md
new file mode 100644
index 0000000..7f53bdb
--- /dev/null
+++ b/docs/static_site/src/pages/api/developer_guide/debugging_and_performance_optimization_tips.md
@@ -0,0 +1,59 @@
+---
+layout: page_category
+title:  Debugging and performance optimization tips
+category: Developer Guide
+permalink: /api/dev-guide/debugging_and_performance_optimization_tips
+---
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Debugging and performance optimization tips
+
+The general workflow when defining your network with Gluon API is either:
+
+* build sequentially using `nn.Sequential` or `nn.HybridSequential` 
+
+* inherit from `nn.Block` or `nn.HybridBlock`
+
+## Debugging
+
+When debugging your MXNet code, remember the following:
+
+**Do NOT hybridize for debugging**
+
+The difference between [imperative style (Gluon non-hybridized) and symbolic style (Gluon hybridized)]({{ "/versions/1.2.1/architecture/program_model.html" | relative_url }}) is:
+
+* *imperative style* is _define-by-run_
+* *symbolic style* is _define-then-run_
+
+
+Basically, that means the execution path changes when calling `hybridize` on your network inherited from `HybridBlock` or `HybridSequential` (note that inheriting directly from `Block` is the same as not hybridizing your network). For efficiency, symbolic code does not keep the intermediate results and so it would be hard to debug and examine the intermediate outputs. Therefore, if you want to *examine the intermediate results for debugging, do NOT hybridize*. Once everything is working  [...]
+
+Please checkout the [d2l](http://d2l.ai/chapter_computational-performance/hybridize.html?highlight=hybridize#hybrid-programming) for more details about the hybrid-programming model.
+
+## Use naive engine
+
+It is also useful to set the environment variable `MXNET_ENGINE_TYPE='NaiveEngine'` prior to running your (end-to-end) code. This setting disables multi-threading and the execution engine will be synchronous, so you can examine the backtrace more easily. Remember to change it back to either the default `'ThreadedEnginePerDevice'` or `'ThreadedEngine'`.
+
+For more details, here is a comprehensive tutorial on interactive debugging on [YouTube](https://www.youtube.com/watch?v=6-dOoJVw9_0).
+
+## Performance optimization
+
+Following up on using the environment variable `MXNET_ENGINE_TYPE` for debugging, here are the [available environment variables]({{ "/api/faq/env_var" | relative_url }})  that affect the performance of your code.
+
+Please refer to [this presentation](https://www.slideshare.net/ThomasDelteil1/debugging-and-performance-tricks-for-mxnet-gluon) for more information on debugging and performance optimization.
+
diff --git a/docs/static_site/src/pages/api/developer_guide/examine_forward_results_with_hooks.md b/docs/static_site/src/pages/api/developer_guide/examine_forward_results_with_hooks.md
new file mode 100644
index 0000000..cc46803
--- /dev/null
+++ b/docs/static_site/src/pages/api/developer_guide/examine_forward_results_with_hooks.md
@@ -0,0 +1,163 @@
+---
+layout: page_category
+title:  Examine forward results with hooks
+category: Developer Guide
+permalink: /api/dev-guide/examine_forward_results_with_hooks
+---
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Examine forward results with hooks
+
+There are currently three ways to register a function in an MXNet Gluon Block for execution:
+
+* before `forward` via [register_forward_pre_hook]({{"/api/python/docs/api/gluon/block.html#mxnet.gluon.Block.register_forward_pre_hook" | relative_url }})
+* after `forward` via [register_forward_hook]({{"/api/python/docs/api/gluon/block.html#mxnet.gluon.Block.register_forward_hook" | relative_url }})
+* as a callback via [register_op_hook]({{"/api/python/docs/api/gluon/block.html#mxnet.gluon.Block.register_op_hook" | relative_url }})
+
+## Pre-forward hook
+
+To register a hook prior to forward execution, the requirement is that the registered operation **should not modify the input or output**. For example: `hook(block, input) -> None`. This is useful to get a summary before execution.
+
+```
+import mxnet as mx
+from mxnet.gluon import nn
+
+block = nn.Dense(10)
+block.initialize()
+print("{}".format(block))
+# Dense(None -> 10, linear)
+
+def pre_hook(block, input) -> None:  # notice it has two arguments, one block and one input
+    print("{}".format(block))
+    return
+    
+# register
+pre_handle = block.register_forward_pre_hook(pre_hook)
+input = mx.nd.ones((3, 5))
+print(block(input))
+
+# Dense(None -> 10, linear)
+# [[ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]]
+# <NDArray 3x10 @cpu(0)>
+```
+
+We can `detach` a hook from a block:
+
+
+```
+pre_handle.detach()
+print(block(input))
+
+# [[ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]]
+# <NDArray 3x10 @cpu(0)>
+```
+
+Notice `Dense(None -> 10, linear)` is not displayed anymore.
+
+## Post-forward hook
+
+Registering a hook after forward execution is very similar to pre-forward hook (as explained above) with the difference that the hook signature should be `hook(block, input, output) -> None` where **hook should not modify the input and output.** Continuing from the above example:
+
+
+```
+def post_hook(block, intput, output) -> None:
+    print("{}".format(block))
+    return
+    
+post_handle = block.register_forward_hook(post_hook)
+print(block(input))
+
+# Dense(5 -> 10, linear)
+# [[ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]
+# [ 0.11254273  0.11162187  0.02200389 -0.04842059  0.09531345  0.00880495
+#  -0.07610667  0.1562067   0.14192852  0.04463106]]
+# <NDArray 3x10 @cpu(0)>
+```
+
+
+Notice the difference between `pre_hook` and `post_hook` results due to shape inference after `forward` is done executing.
+
+## Callback hook
+
+We can register a callback monitor to monitor all operators that are called by the `HybridBlock` **after hybridization** with `register_op_hook(callback, monitor_all=False) ` where the callback signature should be:
+
+
+```
+callback(node_name: str,  opr_name: str, arr: NDArray) -> None
+```
+
+where `node_name` is the name of the tensor being inspected (str), `opr_name` is the name of the operator producing or consuming that tensor (str) and `arr` the tensor being inspected (NDArray).
+
+
+```
+import mxnet as mx
+from mxnet.gluon import nn
+
+def mon_callback(node_name, opr_name, arr):
+    print("{}".format(node_name))
+    print("{}".format(opr_name))
+    return
+    
+model = nn.HybridSequential(prefix="dense_")
+with model.name_scope():
+     model.add(mx.gluon.nn.Dense(2))
+
+model.initialize()
+model.hybridize()
+model.register_op_hook(mon_callback, monitor_all=True)
+print(model(mx.nd.ones((2, 3, 4))))
+
+# b'dense_dense0_fwd_data'
+# b'FullyConnected'
+# b'dense_dense0_fwd_weight'
+# b'FullyConnected'
+# b'dense_dense0_fwd_bias'
+# b'FullyConnected'
+# b'dense_dense0_fwd_output'
+# b'FullyConnected'
+# [[-0.05979988 -0.16349721]
+#  [-0.05979988 -0.16349721]]
+# <NDArray 2x2 @cpu(0)>
+```
+
+
+Setting `monitor_all=False` will print only the output:
+
+
+```
+`# b'dense_dense0_fwd_output'`
+`# b'FullyConnected'``
+# [[-0.05979988 -0.16349721]
+#  [-0.05979988 -0.16349721]]
+# <NDArray 2x2 @cpu(0)`
+```
+
+Note that to get the internal operator node names, one can use `model.collect_params().items()`.
diff --git a/docs/static_site/src/pages/api/developer_guide/exception_handing_and_custom_error_types.md b/docs/static_site/src/pages/api/developer_guide/exception_handing_and_custom_error_types.md
new file mode 100644
index 0000000..21542b8
--- /dev/null
+++ b/docs/static_site/src/pages/api/developer_guide/exception_handing_and_custom_error_types.md
@@ -0,0 +1,110 @@
+---
+layout: page_category
+title:  Exception handing and custom error types
+category: Developer Guide
+permalink: /api/dev-guide/exception_handing_and_custom_error_types
+---
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Exception handing and custom error types
+
+
+Apache MXNet v1.7 has added the custom error type support and as a result `MXNetError` is inherited from `RuntimeError` so it is possible to register a custom error type in the backend and prepend its error message. Then in the frontend, one can throw the exception of the registered error type. 
+
+For example, we want the `transpose` operator defined in the C++ backend to throw `ValueError` type in the Python frontend. Therefore, in the C++ backend we can add this check:
+
+```
+CHECK_EQ(axes_set.size(), axes.ndim()) << "ValueError: Repeated axis in transpose."
+                                       << " param.axes = "
+                                       << param.axes;
+```
+
+so that on the frontend, when a problematic `transpose` call is made such as:
+
+```
+from mxnet import np
+
+dat = np.random.normal(0, 1, (3, 4, 5))
+dat.transpose((0, 0, 1))
+```
+
+the following traceback will be produced:
+
+
+```
+ValueError                                Traceback (most recent call last)
+<ipython-input-3-3ad259b4e371> in <module>
+----> 1 dat.transpose((0, 0, 1))
+
+~/mxnet-distro/mxnet-build/python/mxnet/numpy/multiarray.py in transpose(self, *axes)
+   1460             elif axes[0] is None:
+   1461                 axes = None
+-> 1462         return _mx_np_op.transpose(self, axes=axes)
+   1463
+   1464     def flip(self, *args, **kwargs):
+~/mxnet-distro/mxnet-build/python/mxnet/ndarray/register.py in transpose(a, axes, out, name, **kwargs)
+
+~/mxnet-distro/mxnet-build/python/mxnet/_ctypes/ndarray.py in _imperative_invoke(handle, ndargs, keys, vals, out, is_np_op, output_is_list)
+    105         c_str_array(keys),
+    106         c_str_array([str(s) for s in vals]),
+--> 107         ctypes.byref(out_stypes)))
+    108
+    109     create_ndarray_fn = _np_ndarray_cls if is_np_op else _ndarray_cls
+    
+~/mxnet-distro/mxnet-build/python/mxnet/base.py in check_call(ret)
+    271     """
+    272     if ret != 0:
+--> 273         raise get_last_ffi_error()
+    274
+    275
+ValueError: Traceback (most recent call last):
+  File "src/operator/numpy/np_matrix_op.cc", line 77
+  
+ValueError: Check failed: axes_set.size() == axes.ndim() (2 vs. 3) : Repeated axis in transpose. param.axes = [0,0,1]
+```
+
+
+Note that as of writing this document, the following Python error types are supported:
+
+
+* `ValueError`
+* `TypeError`
+* `AttributeError`
+* `IndexError`
+* `NotImplementedError`
+
+Check [this](https://github.com/apache/incubator-mxnet/blob/master/python/mxnet/error.py) resource for more details
+about Python supported error types that MXNet supports.
+
+## How to register a custom error type
+
+Here is the way to register a custom error type in Python frontend:
+
+
+```
+import mxnet as mx
+
+@mx.error.register
+class MyError(mx.MXNetError):
+    def __init__(self, msg):
+        super().__init__(msg)
+```
+
+Then in the C++ backend, you can refer to `MyError` via:
+
+`LOG(FATAL) << "MyError: this is a custom error message"`
diff --git a/docs/static_site/src/pages/api/developer_guide/profiling.md b/docs/static_site/src/pages/api/developer_guide/profiling.md
new file mode 100644
index 0000000..841c008
--- /dev/null
+++ b/docs/static_site/src/pages/api/developer_guide/profiling.md
@@ -0,0 +1,279 @@
+---
+layout: page_category
+title:  Profiling
+category: Developer Guide
+permalink: /api/dev-guide/profiling
+---
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Profiling
+
+Apache MXNet provides memory [profiler]({{"/api/python/docs/api/mxnet/profiler/index.html" | relative_url }}) which is a way to access what is happening under the hood during runtime. The common scenario is you want to use the profiler for your hybridized model and visualize the outputs via `chrome://tracing`. Here are the steps you need to do:
+
+1. Configure the profiler
+2. `set_state('run')` before the model is defined
+3. Add `mx.nd.waitall()` to enforce synchronization after you have done with some computation (maybe as part of training)
+4. Then add `set_state('stop')` 
+5. Finally `dump` the profiling results
+
+
+Here is a simple example
+
+```
+import mxnet as mx
+from mxnet.gluon import nn
+from mxnet import profiler
+
+def enable_profiler(profile_filename, run=True, continuous_dump=False, aggregate_stats=False):
+    profiler.set_config(profile_symbolic=True,
+                        profile_imperative=True,
+                        profile_memory=True,
+                        profile_api=True,
+                        filename=profile_filename,
+                        continuous_dump=continuous_dump,
+                        aggregate_stats=aggregate_stats)
+    if run:
+        profiler.set_state('run')
+
+enable_profiler(profile_filename='test_profiler.json', run=True, continuous_dump=True)
+profiler.set_state('run')
+
+model = nn.HybridSequential(prefix='net_')
+with model.name_scope():
+    model.add(nn.Dense(128, activation='tanh'))
+    model.add(nn.Dropout(0.5))
+    model.add(nn.Dense(64, activation='tanh'),
+              nn.Dense(32, in_units=64))
+    model.add(nn.Activation('relu'))
+model.initialize(ctx=mx.cpu())
+model.hybridize()
+
+inputs = mx.sym.var('data')
+
+with mx.autograd.record():
+    out = model(mx.nd.zeros((16, 10), ctx=mx.cpu()))
+out.backward()
+mx.nd.waitall()
+profiler.set_state('stop')
+profiler.dump(True)
+```
+
+And in `chrome://tracing` use the `load` and select `test_profiler.json`, then you will see something like this
+![dev_guide_profilling_1](/assets/img/dev_guide_profilling_1.png) To understand what is going on, we need to dive deep into the MXNet runtime.
+
+## Dive deep into MXNet runtime with the profiler
+
+Let's start with a simple example and explain as we go on. The following code creates a 3x3 tensor, computes the diagonal and then sum's along the diagonal (to compute the “trace”). Using the MXNet profiler, we capture internal MXNet behavior and dump it to a string and print it (`dumps()`) and also dump it to a file (`dump()`). Then we can import that file in `chrome://tracing` and view it graphically.
+
+```
+import mxnet as mx
+import numpy as np
+ 
+from mxnet import profiler
+ 
+#configure the profiler
+profiler.set_config(profile_all=True, aggregate_stats=True, filename='trace_profile.json')
+#start the profiler collecting data
+profiler.set_state('run')
+ 
+###########################################################
+#1. create our data
+data = np.linspace(1,9,9).reshape((3,3))
+ 
+#2. create an MXNet ndarray
+a = mx.nd.array(data)
+ 
+#3. compute on our data and produce results
+b = mx.nd.diag(a)
+c = mx.nd.sum(b,-1)
+ 
+#4. wait for computation to finish
+mx.nd.waitall()
+###########################################################
+ 
+#stop the profiler
+profiler.set_state('stop')
+ 
+#dump the profiling data as a string
+print(profiler.dumps())
+#dump the profiling data as a json file that can be viewed graphically
+profiler.dump()
+```
+
+When running this code, the dumps function dumps the profiling data to a string and returns it (which we promptly print). This statistical info is shown below.
+
+```
+Profile Statistics:
+    Note the difference in units for different entries.
+Device Storage
+=================
+Name                          Total Count    Min Use  (kB)    Max Use  (kB)    Avg Use  (kB)
+----                          -----------    -------------    -------------    -------------
+Memory: cpu/0                           3          96.0600          96.0760           0.0080
+
+MXNET_C_API
+=================
+Name                          Total Count        Time (ms)    Min Time (ms)    Max Time (ms)    Avg Time (ms)
+----                          -----------        ---------    -------------    -------------    -------------
+MXImperativeInvokeEx                    2           0.3360           0.0990           0.2370           0.1680
+MXNet C API Calls                      17           0.2320           0.2160           0.2320           0.0080
+MXNDArraySyncCopyFromCPU                1           0.1750           0.1750           0.1750           0.1750
+MXNDArrayCreateEx                       1           0.1050           0.1050           0.1050           0.1050
+MXNDArrayGetShapeEx                    11           0.0210           0.0000           0.0160           0.0019
+MXNDArrayWaitAll                        1           0.0200           0.0200           0.0200           0.0200
+MXNDArrayGetDType                       1           0.0010           0.0010           0.0010           0.0010
+MXNet C API Concurrency                34           0.0000           0.0000           0.0010           0.0000
+
+operator
+=================
+Name                          Total Count        Time (ms)    Min Time (ms)    Max Time (ms)    Avg Time (ms)
+----                          -----------        ---------    -------------    -------------    -------------
+sum                                     1           0.0520           0.0520           0.0520           0.0520
+diag                                    1           0.0410           0.0410           0.0410           0.0410
+WaitForVar                              1           0.0220           0.0220           0.0220           0.0220
+```
+
+The dump function writes out the same data in a format that can be opened in `chrome://tracing` and displayed visually. This can be seen in the diagram below.
+
+![dev_guide_profilling_2.png](/assets/img/dev_guide_profilling_2.png)
+The profiling data has captured info about interesting functions that have executed while your program was running. Here are some explanations about what each one does.
+
+### **The functions in the C_API are:**
+
+|**Function Name**	|**Description**	|
+|---	|---	|
+|**MXImperativeInvokeEx**	| invokes an operator to perform the computation |
+|**MXNDArrayCreateEx**	| creates  an ndarray	|
+| **MXNDArrayGetDType**	| returns  the data type of the ndarray |
+| **MXNDArrayGetShape**	| returns  the shape of the ndarray (as a tuple where each element is the size of a  dimension) |
+| **MXNDArraySyncCopyFromCPU** | called when data is initially residing outside of an MXNet data structure (ie.  numpy.ndarry rather than mxnet.numpy.ndarray). Data is copied into the MXNet  data structure   |
+| **MXNDArrayWaitAll**	| wait for all asynchronous operations to finish in MXNet. This function is only  used in benchmarking to wait for work to happen. In a real program, there is no waiting and data dependencies are evaluated and computation executed as needed in a As Late As Possible (ALAP) way	|
+
+### **The function in the Engine API are:**
+
+| **Function Name**	| **Description**	|
+|---	|---	|
+| **WaitForVar**	| Takes a variable reference as input and waits until that variable has been computed before returning	|
+
+### **Other API functions:**
+
+| **Function Name**	| **Description**	|
+|---	|---	|
+| **ResourceParallelRandomSetSeed**	| sets the random number generator seed	|
+
+### **Operators we intended to call in the code:**
+
+| **Operator Name**	| **Description**	|
+|---	|---	|
+| **sum**	| sum  a tensor along a particular axis	|
+| **diag**	| compute the diagonal of the tensor	|
+
+
+
+## Closer look
+
+From the code, we can identify the major events in our test application
+
+1. Initialize our input data
+2. Creating a new MXNet ndarray using our existing data values
+3. Compute on our data
+    1. produce the diagonal of the input data
+    2. sum along the diagonal to compute the “trace” of the matrix
+4. Wait for computation to finish (only needed when profiling)
+
+In the following list, #1 uses regular numpy functions to initialize data. MXNet is not involved in this process. In #2, we create an MXNet ndarray and quite a few things happen under the hood. The screenshot below shows a zoomed in portion of the timeline.
+
+![dev_guide_profilling_3.png](/assets/img/dev_guide_profilling_3.png)
+Here, the four red arrows show the important events in this sequence.
+
+1. First, the `MXNDArrayCreateEx` is called to physically  allocate space to store the data and other necessary attributes in the `ndarray` class.
+2. Then some support functions are called (`MXNDArrayGetShape,` `MXNDArrayGetDType`) while initialing the data structure.
+3. Finally the data is copied from the non-MXNet ndarray into the newly prepared MXNet ndarray by the `MXNDArraySyncCopyFromCPU`  function.
+
+Next, #3 (in our code example) begins the computing process to produce our output data. The screenshot below shows this behavior.
+
+![dev_guide_profilling_4.png](/assets/img/dev_guide_profilling_4.png)
+Here you can see that the following sequence of events happen:
+
+1. `MXImperativeInvokeEx` is called the first time to launch the diagonal operator from #3 (in our code example).
+2. Soon after that the actual **`diag`**  operator begins executing in another thread.
+3. While that is happening, our main thread moves on and calls `MXImperativeInvokeEx` again to launch the **`sum`**  operator. Just like before, this returns without actually executing the operator  and continues.
+4. Lastly, the `MXNDArrayWaitAll` is called as the main thread has progressed to #4 in our app. It will wait here while all the  computation finishes.
+
+Next lets look at a view of the part of the timeline zoomed to the actual operator execution.
+
+![dev_guide_profilling_5.png](/assets/img/dev_guide_profilling_5.png)
+Here there are 3 main events happening:
+
+1. The **`diag`** operator is executing first.
+2. Then the `ResourceParallelRandomSetSeed` runs.
+3. And finally the `sum` operator executes  (for a very short time as shown by the big red arrow).
+
+The `diag` operator running makes sense (although seems to take a little longer than we'd like). At the end, the sum operator runs (very quickly!). But the weird part in the middle is **`ResourceParallelRandomSetSeed`** running. This is part of the MXNet resource manager. The resource manager handles temporary space and random number generators needed by the operators. The **`sum`** operator requests temporary space in order to compute the sum, and therefore launches the resource manager [...]
+
+Here is the modified code:
+
+```
+import mxnet as mx
+import numpy as np
+ 
+from mxnet import profiler
+ 
+profiler.set_config(profile_all=True, aggregate_stats=True, filename='trace_profile.json')
+profiler.set_state('run')
+ 
+################
+# first run
+sdata = np.linspace(1,9,9).reshape((3,3))
+ 
+sa = mx.nd.array(sdata)
+sb = mx.nd.diag(sa)
+sc = mx.nd.sum(sb,-1)
+ 
+mx.nd.waitall()
+################
+ 
+################
+# second run
+data = np.linspace(1,9,9).reshape((3,3))
+ 
+a = mx.nd.array(data)
+b = mx.nd.diag(a)
+c = mx.nd.sum(b,-1)
+ 
+mx.nd.waitall()
+################
+ 
+profiler.set_state('stop')
+ 
+print(profiler.dumps())
+profiler.dump()
+```
+
+Notice that we renamed the variables and made another copy after the `waital` call. This is so that MXNet doesn’t have to worry about re-using variables, and to segment the 2nd half after the first time initialization.
+
+Here is an overview of the *new* timeline:
+
+![dev_guide_profilling_6.png](/assets/img/dev_guide_profilling_6.png)
+The first red box is the first run, and the 2nd smaller one is the 2nd run. First off, we can see how much smaller the 2nd one is now without any of the initialization routines. Here is a zoomed in view of just the 2nd run. 
+
+
+![dev_guide_profilling_7.png](/assets/img/dev_guide_profilling_7.png)
+We still have the same sequence of events at the beginning to initialize the MXNet ndarray (`MXNDArrayCreateEx`, `MXNDArrayGetShape`, `MXNDArrayGetDType`, `MXNDArraySyncCopyFromCPU`). Then the **`diag`** operator runs, followed by the **`sum`** operator, and finally the `waitall`. When you look at this, be careful about the assumptions that you make. In this version of the timeline, it appears that the operator executes after the `MXImperativeInvokeEx` runs, and seems to imply an inheren [...]
+
+
diff --git a/docs/static_site/src/pages/api/faq/security.md b/docs/static_site/src/pages/api/faq/security.md
index 5448146..9262f48 100644
--- a/docs/static_site/src/pages/api/faq/security.md
+++ b/docs/static_site/src/pages/api/faq/security.md
@@ -32,6 +32,7 @@ Please note that the security mailing list should only be used for reporting und
 
 
 Questions about:
+
 * if a vulnerability applies to your particular application
 * obtaining further information on a published vulnerability
 * availability of patches and/or new releases
diff --git a/docs/static_site/src/pages/get_started/build_from_source.md b/docs/static_site/src/pages/get_started/build_from_source.md
index 1dfa95a..19f2f1a 100644
--- a/docs/static_site/src/pages/get_started/build_from_source.md
+++ b/docs/static_site/src/pages/get_started/build_from_source.md
@@ -25,307 +25,381 @@ permalink: /get_started/build_from_source
 
 # Build MXNet from Source
 
-This document explains how to build MXNet from source code.
-
-**For Java/Scala/Clojure, please follow [this guide instead](scala_setup)**
-
-## Overview
-
-Building from source follows this general two-step flow of building the shared library, then installing your preferred language binding. Use the following links to jump to the different sections of this guide.
-
-1. Build the MXNet shared library, `libmxnet.so`.
-    * [Clone the repository](#clone-the-mxnet-project)
-    * [Prerequisites](#prerequisites)
-        * [Math library selection](#math-library-selection)
-        * [Install GPU software](#install-gpu-software)
-        * [Install optional software](#install-optional-software)
-    * [Adjust your build configuration](#build-configurations)
-    * [Build MXNet](#build-mxnet)
-        * [with NCCL](#build-mxnet-with-nccl) (optional)
-        * [for C++](#build-mxnet-with-c++) (optional)
-        * [Usage Examples](#usage-examples)
-            * [systems with GPUs and Intel CPUs](#recommended-for-Systems-with-NVIDIA-GPUs-and-Intel-CPUs)
-            * [GPUs with non-Intel CPUs](#recommended-for-Systems-with-Intel-CPUs)
-            * [Intel CPUs](#recommended-for-Systems-with-Intel-CPUs)
-            * [non-Intel CPUs](#recommended-for-Systems-with-non-Intel-CPUs)
-2. [Install the language API binding(s)](#installing-mxnet-language-bindings) you would like to use for MXNet.
-MXNet's newest and most popular API is Gluon. Gluon is built into the Python binding. If Python isn't your preference, you still have more options. MXNet supports several other language APIs:
-    - [Python (includes Gluon)]({{'/api/python/docs/api/index.html'|relative_url}})
-    - [C++]({{'/api/cpp'|relative_url}})
-    - [Clojure]({{'/api/clojure'|relative_url}})
-    - [Java]({{'/api/java'|relative_url}})
-    - [Julia]({{'/api/julia'|relative_url}})
-    - [Perl]({{'/api/perl'|relative_url}})
-    - [R]({{'/api/r'|relative_url}})
-    - [Scala]({{'/api/scala'|relative_url}})
+Building and installing MXNet from source is a three-step process. First, build
+the shared `libmxnet` which provides the MXNet backend, then install your
+preferred language binding and finally validate that MXNet was installed
+correctly by running a small example.
 
-<hr>
+1. [Obtaining the source](#obtaining-the-source-code)
+2. [Installing MXNet's recommended dependencies](#installing-mxnet's-recommended-dependencies)
+3. [Overview of optional dependencies and optional features](#overview-of-optional-dependencies-and-optional-features)
+4. [Building MXNet](#building-mxnet)
+5. [Install the language API binding(s)](#installing-mxnet-language-bindings) you would like to use for MXNet.
 
-## Build Instructions by Operating System
+MXNet's newest and most popular API is Gluon. Gluon is built into the Python
+binding. If Python isn't your preference, you still have more options. MXNet
+supports several other language bindings. Please see the [API Documentation
+page](/api) for an overview of all supported languages and their APIs.
 
-Detailed instructions are provided per operating system. Each of these guides also covers how to install the specific [Language Bindings](#installing-mxnet-language-bindings) you require.
-You may jump to those, but it is recommended that you continue reading to understand more general "build from source" options.
 
-* [Amazon Linux / CentOS / RHEL](centos_setup)
-* [macOS](osx_setup)
-* [Devices](index.html?&platform=devices&language=python&environ=pip&processor=cpu)
-* [Ubuntu](ubuntu_setup)
-* [Windows](windows_setup)
+## Obtaining the source code
 
+To obtain the source code of the latest Apache MXNet (incubating) release,
+please access the [Download page](/get_started/download) and download the
+`.tar.gz` source archive corresponding to the release you wish to build.
 
-<hr>
+Developers can also obtain the unreleased development code from the git
+repository via `git clone --recursive https://github.com/apache/incubator-mxnet mxnet`
+
+Building a MXNet 1.x release from source requires a C++11 compliant compiler.
+
+Building the development version of MXNet or any 2.x release from source
+requires a C++17 compliant compiler. The oldest compiler versions tested during
+MXNet 2 development are GCC 7, Clang 6 and MSVC 2019.
 
-## Clone the MXNet Project
+## Installing MXNet's recommended dependencies
+To install the build tools and recommended dependencies, please run the
+following commands respectively based on your Operating System. Please see the
+next section for further explanations on the set of required and optional
+dependencies of MXNet.
 
-1. Clone or fork the MXNet project.
+### Debian Linux derivatives (Debian, Ubuntu, ...)
 ```bash
 git clone --recursive https://github.com/apache/incubator-mxnet mxnet
 cd mxnet
+sudo apt-get update
+sudo apt-get install -y build-essential git ninja-build ccache libopenblas-dev libopencv-dev cmake
 ```
 
 <hr>
+### Red Hat Enterprise Linux derivatives (RHEL, CentOS, Fedora, ...)
+```bash
+sudo yum install epel-release centos-release-scl
+sudo yum install git make ninja-build automake autoconf libtool protobuf-compiler protobuf-devel \
+    atlas-devel openblas-devel lapack-devel opencv-devel openssl-devel zeromq-devel python3 \ 
+    devtoolset-7
+source /opt/rh/devtoolset-7/enable
+```
+Here `devtoolset-7` refers to the [Developer Toolset
+7](https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/) created by
+Red Hat for developers working on CentOS or Red Hat Enterprise Linux platform
+and providing the GNU Compiler Collection 7.
+
+### macOS
+```bash
+# Install OS X Developer Tools
+xcode-select --install
 
-## Prerequisites
+# Install Homebrew
+/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+
+# Install dependencies
+brew install cmake ninja ccache opencv
+```
+
+Note: the compiler provided by Apple on macOS does not support OpenMP. To use
+OpenMP on macOS you need to install for example the Clang compiler via `brew`:
+
+```bash
+brew install llvm
+```
 
-The following sections will help you decide which specific prerequisites you need to install.
+### Windows
+You can use Chocolatey software management solution to install some dependencies
+on Windows.
 
-#### Math Library Selection
-It is useful to consider your math library selection prior to your other prerequisites.
+```bash
+choco install python git 7zip cmake ninja opencv
+```
+
+Currently OpenBLAS is not available from Chocolatey. You may download it from
+from [the OpenBLAS release page](https://github.com/xianyi/OpenBLAS/releases)
+and compile from source. Set the `OpenBLAS_HOME` environment variable to point
+to the OpenBLAS directory that contains the `include` and `lib` directories for
+example by typing `set OpenBLAS_HOME=C:\utils\OpenBLAS`.
+
+If you like to compile MXNet with Visual Studio compiler, please install at
+least [VS2019](https://www.visualstudio.com/downloads/).
+
+## Overview of optional dependencies and optional features
+
+### Math Library Selection
 MXNet relies on the
 [BLAS](https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) (Basic
-Linear Algebra Subprograms) library for numerical computations.
-Those can be extended with [LAPACK (Linear Algebra Package)](https://github.com/Reference-LAPACK/lapack), an additional set of mathematical functions.
+Linear Algebra Subprograms) library for numerical computations. In addition to
+BLAS, some operators in MXNet rely on the [LAPACK (Linear Algebra
+Package)](https://github.com/Reference-LAPACK/lapack), an additional set of
+mathematical functions.
+
+Several BLAS and LAPACK implementations exist. Among them, MXNet is tested with:
 
-MXNet supports multiple mathematical backends for computations on the CPU:
 * [Apple Accelerate](https://developer.apple.com/documentation/accelerate)
 * [ATLAS](http://math-atlas.sourceforge.net/)
-* [MKL](https://software.intel.com/en-us/intel-mkl) (MKL, MKLML)
-* [MKL-DNN](https://github.com/intel/mkl-dnn)
+* [Intel MKL](https://software.intel.com/en-us/intel-mkl)
 * [OpenBLAS](https://www.openblas.net/)
 
-The default order of choice for the libraries if found follows the path from the most
-(recommended) to less performant backends.
-The following lists show this order by library and `cmake` switch.
+Apple Accelerate and MKL are proprietary. ATLAS and OpenBLAS are Open Source. If
+you don't have any specific requirements, MXNet recommends OpenBLAS as it
+typically outperforms ATLAS, is portable across many platforms, provides a
+LAPACK implementation and has a permissive license.
 
-For desktop platforms (x86_64):
+### Optional GPU support
 
-1. MKL-DNN (submodule) | `USE_MKLDNN`
-2. MKL | `USE_MKL_IF_AVAILABLE`
-3. MKLML (downloaded) | `USE_MKLML`
-4. Apple Accelerate | `USE_APPLE_ACCELERATE_IF_AVAILABLE` | Mac only
-5. OpenBLAS | `BLAS` | Options: Atlas, Open, MKL, Apple
+MXNet optionally supports [NVDIA CUDA and
+cuDNN](https://developer.nvidia.com/cuda-downloads) for better performance on
+NVidia devices. MXNet releases in general are tested with the last two major
+CUDA versions available at the time of the release. For example, CUDA 9.2 and
+10.2.
 
-Note: If `USE_MKL_IF_AVAILABLE` is set to False then MKLML and MKL-DNN will be disabled as well for configuration
-backwards compatibility.
+To compile MXNet with CUDA support, define the `USE_CUDA` option. If you compile
+MXNet on a system with NVidia GPUs, the build system will automatically detect
+the CUDA Architecture. If you are compiling on a system without NVidia GPUs,
+please specify the `MXNET_CUDA_ARCH` option to select the CUDA Architecture and
+avoid a lengthy build targeting all common CUDA Architectures. Please see the
+MXNet build configuration instructions in the next step.
 
-For embedded platforms (all other and if cross compiled):
+MXNet also supports [NCCL](https://developer.nvidia.com/nccl) - NVIDIA's
+Collective Communications Library. NCCL is useful when using MXNet on multiple
+GPUs that require communication. Instructions for installing NCCL are found in
+the following [Build MXNet with NCCL](#build-mxnet-with-nccl) section.
 
-1. OpenBLAS | `BLAS` | Options: Atlas, Open, MKL, Apple
+To enable building MXNet with NCCL, install NCCL and define the `USE_NCCL`
+option in the MXNet build configuration in the next step.
 
-You can set the BLAS library explicitly by setting the BLAS variable to:
+After building with NCCL, you may optionally use the tests in
+`tests/python/gpu/test_nccl.py` to ensure NCCL is enabled correctly. Please
+first delete the line containing `skip(reason="Test requires NCCL library
+installed and enabled during build")` before running the test. In MXNet 2.x
+versions, the test can be run via `pytest --verbose
+tests/python/gpu/test_nccl.py`. In MXNet 1.x it is run via `python
+tests/python/gpu/test_nccl.py`.
 
-* Atlas
-* Open
-* MKL
-* Apple
+To get the best performance out of NCCL it is recommended to set environment
+variable `NCCL_LAUNCH_MODE=PARALLEL` when using NCCL version 2.1 or newer.
 
-See the [cmake/ChooseBLAS.cmake](https://github.com/apache/incubator-mxnet/blob/master/cmake/ChooseBlas.cmake) file for the options.
+### Optional OpenCV support
 
-[Intel's MKL (Math Kernel Library)](https://software.intel.com/en-us/mkl) is one of the most powerful math libraries
+MXNet's Image Loading and Augmentation features rely on
+[OpenCV](http://opencv.org/). Image Loading and Augmentation
 
-It has following flavors:
+## Building MXNet
 
-* MKL is a complete math library, containing all the functionality found in ATLAS, OpenBlas and LAPACK. It is free under
-community support licensing (https://software.intel.com/en-us/articles/free-mkl),
-but needs to be downloaded and installed manually.
+MXNet 1.x can be built either with a classic Makefile setup or with the `cmake`
+cross platform build system. Starting with MXNet 1.7, MXNet recommends using the
+`cmake` cross platform build tool.
 
-* MKLML is a subset of MKL. It contains a smaller number of functions to reduce the
-size of the download and reduce the number of dynamic libraries user needs.
+Note: The `cmake` build requires CMake 3.13 or higher. If you are running an
+older version of CMake, you will see an error message like `CMake 3.13 or higher
+is required. You are running version 3.10.2`. Please update CMake on your
+system. You can download and install latest CMake from https://cmake.org or via
+the Python package manager `pip` with `python3 -m pip install --user --upgrade
+"cmake>=3.13.2"`. After installing cmake with `pip3`, it is usually available at
+`~/.local/bin/cmake` or directly as `cmake`.
 
-<!-- [Removed until #11148 is merged.] This is the most effective option since it can be downloaded and installed automatically
-by the cmake script (see cmake/DownloadMKLML.cmake).-->
+Please see the [`cmake configuration
+files`](https://github.com/apache/incubator-mxnet/tree/v1.x/config) files for
+instructions on how to configure and build MXNet with cmake.
 
-* MKL-DNN is a separate open-source library, it can be used separately from MKL or MKLML. It is
-shipped as a subrepo with MXNet source code (see 3rdparty/mkldnn or the [MKL-DNN project](https://github.com/intel/mkl-dnn))
+Up to the MXNet 1.6 release, please follow the instructions in the
+[`make/config.mk`](https://github.com/apache/incubator-mxnet/blob/v1.x/make/config.mk)
+file on how to configure and compile MXNet. This method is supported on all 1.x
+releases.
 
-Since the full MKL library is almost always faster than any other BLAS library it's turned on by default,
-however it needs to be downloaded and installed manually before doing `cmake` configuration.
-Register and download on the [Intel performance libraries website](https://software.intel.com/en-us/performance-libraries).
-You can also install MKL through [YUM](https://software.intel.com/en-us/articles/installing-intel-free-libs-and-python-yum-repo)
-or [APT](https://software.intel.com/en-us/articles/installing-intel-free-libs-and-python-apt-repo) Repository.
+To enable the optional MXNet C++ package, please set the `USE_CPP_PACKAGE=1`
+option prior to compiling. See the [C++ guide](cpp_setup) for more information.
 
-Note: MKL is supported only for desktop builds and the framework itself supports the following
-hardware:
 
-* Intel® Xeon Phi™ processor
-* Intel® Xeon® processor
-* Intel® Core™ processor family
-* Intel Atom® processor
+## Installing MXNet Language Bindings
+After building MXNet's shared library, you can install other language bindings.
 
-If you have a different processor you can still try to use MKL, but performance results are
-unpredictable.
+**NOTE:** The C++ API binding must be built when you build MXNet from source. See [Build MXNet with C++]({{'/api/cpp.html'|relative_url}}).
 
+## Installing Language Packages for MXNet
 
-#### Install GPU Software
+After you have installed the MXNet core library. You may install MXNet interface
+packages for the programming language of your choice:
+- [Python](#install-mxnet-for-python)
+- [C++](#install-the-mxnet-package-for-c&plus;&plus;)
+- [Clojure](#install-the-mxnet-package-for-clojure)
+- [Julia](#install-the-mxnet-package-for-julia)
+- [Perl](#install-the-mxnet-package-for-perl)
+- [R](#install-the-mxnet-package-for-r)
+- [Scala](#install-the-mxnet-package-for-scala)
+- [Java](#install-the-mxnet-package-for-java)
 
-If you want to run MXNet with GPUs, you must install [NVDIA CUDA and cuDNN](https://developer.nvidia.com/cuda-downloads).
 
+### Install MXNet for Python
 
-#### Install Optional Software
+To install the MXNet Python binding navigate to the root of the MXNet folder then run the following:
 
-These might be optional, but they're typically desirable as the extend or enhance MXNet's functionality.
+```bash
+python3 -m pip install --user -e ./python
+```
 
-* [OpenCV](http://opencv.org/) - Image Loading and Augmentation. Each operating system has different packages and build from source options for OpenCV. Refer to your OS's link in the [Build Instructions by Operating System](#build-instructions-by-operating-system) section for further instructions.
-* [NCCL](https://developer.nvidia.com/nccl) - NVIDIA's Collective Communications Library. Instructions for installing NCCL are found in the following [Build MXNet with NCCL](#build-mxnet-with-nccl) section.
+Note that the `-e` flag is optional. It is equivalent to `--editable` and means
+that if you edit the source files, these changes will be reflected in the
+package installed.
 
-More information on turning these features on or off are found in the following [build configurations](#build-configurations) section.
+You may optionally install ```graphviz``` library that is used for visualizing
+network graphs you build on MXNet. You may also install [Jupyter
+Notebook](http://jupyter.readthedocs.io/) which is used for running MXNet
+tutorials and examples.
 
+```bash
+python3 -m pip install --user graphviz==0.8.4 jupyter
+```
 
-<hr>
+Please also see the [MXNet Python API](/api/python) page.
 
-## Build Configurations
+### Install the MXNet Package for C++
 
-There is a configuration file for make,
-[`make/config.mk`](https://github.com/apache/incubator-mxnet/blob/master/make/config.mk), that contains all the compilation options. You can edit it and then run `make` or `cmake`. `cmake` is recommended for building MXNet (and is required to build with MKLDNN), however you may use `make` instead. For building with Java/Scala/Clojure, only `make` is supported.
+To enable C++ package, just add `USE_CPP_PACKAGE=1` as build option when
+building the MXNet shared library following the instructions from the previous
+section.
 
-**NOTE:** When certain set of build flags are set, MXNet archive increases to more than 4 GB. Since MXNet uses archive internally archive runs into a bug ("File Truncated": [bugreport](https://sourceware.org/bugzilla/show_bug.cgi?id=14625)) for archives greater than 4 GB. Please use ar version 2.27 or greater to overcome this bug. Please see https://github.com/apache/incubator-mxnet/issues/15084 for more details.
+You can find C++ code examples in the `cpp-package/example` folder of the MXNet
+project. The folder contains a README explaining how to build the examples. The
+`predict-cpp` explains Image Classification using MXNet's C Predict API.
 
-<hr>
+Please also see the [MXNet C++ API](/api/cpp) page.
 
-## Build MXNet
-
-### Build MXNet with NCCL
-- Download and install the latest NCCL library from NVIDIA.
-- Note the directory path in which NCCL libraries and header files are installed.
-- Ensure that the installation directory contains ```lib``` and ```include``` folders.
-- Ensure that the prerequisites for using NCCL such as Cuda libraries are met.
-- Append the ```config.mk``` file with following, in addition to the CUDA related options.
-- USE_NCCL=1
-- USE_NCCL_PATH=path-to-nccl-installation-folder
-
-``` bash
-echo "USE_NCCL=1" >> make/config.mk
-echo "USE_NCCL_PATH=path-to-nccl-installation-folder" >> make/config.mk
-cp make/config.mk .
-```
-- Run make command
-``` bash
-make -j"$(nproc)"
-```
 
-#### Validating NCCL
-- Follow the steps to install MXNet Python binding.
-- Comment the following line in ```test_nccl.py``` file at ```incubator-mxnet/tests/python/gpu/test_nccl.py```
-``` bash
-@unittest.skip("Test requires NCCL library installed and enabled during build")
-```
-- Run test_nccl.py script as follows. The test should complete. It does not produce any output.
-``` bash
-nosetests --verbose tests/python/gpu/test_nccl.py
-```
+### Install the MXNet Package for Clojure
 
-**Recommendation to get the best performance out of NCCL:**
-It is recommended to set environment variable NCCL_LAUNCH_MODE to PARALLEL when using NCCL version 2.1 or newer.
+Refer to the [Clojure setup
+guide](https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package).
 
-<hr>
+Please also see the [MXNet Clojure API](/api/clojure) page.
 
-### Build MXNet with C++
+### Install the MXNet Package for Julia
 
-* To enable C++ package, just add `USE_CPP_PACKAGE=1` when you run `make` or `cmake` (see examples).
+Make sure to install at least Julia 1.0.3.
 
-<hr>
+To use the Julia binding you need to set the `MXNET_HOME` and `LD_LIBRARY_PATH`
+environment variables. For example,
 
-### Usage Examples
+```bash
+export MXNET_HOME=$HOME/incubator-mxnet
+export LD_LIBRARY_PATH=$HOME/incubator-mxnet/build:$LD_LIBRARY_PATH
+```
 
-For example, you can specify using all cores on Linux as follows:
+Then install MXNet with Julia:
 
 ```bash
-mkdir build && cd build
-cmake -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+julia --color=yes --project=./ -e \
+	  'using Pkg; \
+	   Pkg.develop(PackageSpec(name="MXNet", path = joinpath(ENV["MXNET_HOME"], "julia")))'
 ```
 
+Please also see the [MXNet Julia API](/api/julia) page.
+
 
-#### Recommended for Systems with NVIDIA GPUs and Intel CPUs
-* Build MXNet with `cmake` and install with MKL DNN, GPU, and OpenCV support:
+### Install the MXNet Package for Perl
 
+#### Installing perl package dependencies on Debian Linux derivatives (Debian, Ubuntu, ...)
+
+```
+sudo apt-get install libmouse-perl pdl cpanminus swig libgraphviz-perl
+cpanm -q -L "${HOME}/perl5" Function::Parameters Hash::Ordered PDL::CCS
+```
+
+#### Installing perl package dependencies on macOS
 ```bash
-mkdir build && cd build
-cmake -DUSE_CUDA=1 -DUSE_CUDA_PATH=/usr/local/cuda -DUSE_CUDNN=1 -DUSE_MKLDNN=1 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+brew install swig
+sudo sh -c 'curl -L https://cpanmin.us | perl - App::cpanminus'
+sudo cpanm -q -n PDL Mouse Function::Parameters Hash::Ordered PDL::CCS
 ```
 
-#### Recommended for Systems with NVIDIA GPUs
-* Build with both OpenBLAS, GPU, and OpenCV support:
+#### Install the MXNet Package for Perl 
+After you build the shared library, run the following command from the MXNet
+source root directory to build the MXNet Perl package:
 
 ```bash
-mkdir build && cd build
-cmake -DBLAS=open -DUSE_CUDA=1 -DUSE_CUDA_PATH=/usr/local/cuda -DUSE_CUDNN=1 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+MXNET_HOME=${PWD}
+export LD_LIBRARY_PATH=${MXNET_HOME}/lib
+export PERL5LIB=${HOME}/perl5/lib/perl5
+
+cd ${MXNET_HOME}/perl-package/AI-MXNetCAPI/
+perl Makefile.PL INSTALL_BASE=${HOME}/perl5
+make install
+
+cd ${MXNET_HOME}/perl-package/AI-NNVMCAPI/
+perl Makefile.PL INSTALL_BASE=${HOME}/perl5
+make install
+
+cd ${MXNET_HOME}/perl-package/AI-MXNet/
+perl Makefile.PL INSTALL_BASE=${HOME}/perl5
+make install
 ```
 
-#### Recommended for Systems with Intel CPUs
-* Build MXNet with `cmake` and install with MKL DNN, and OpenCV support:
+Please also see the [MXNet Perl API](/api/perl) page.
+
+### Install the MXNet Package for R
+
+To install R and the devtools, run
 
 ```bash
-mkdir build && cd build
-cmake -DUSE_CUDA=0 -DUSE_MKLDNN=1 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+sudo apt-get update
+sudo apt-get install -y r-base-core r-cran-devtools libcairo2-dev libxml2-dev
 ```
 
-#### Recommended for Systems with non-Intel CPUs
-* Build MXNet with `cmake` and install with OpenBLAS and OpenCV support:
+`libxml2-dev` is required for the `roxygen2` dependency and `libcairo2-dev` is
+required for the suggested `imager` dependency.
+
+To generate documentation, it is also required to install `roxygen2`.
 
 ```bash
-mkdir build && cd build
-cmake -DUSE_CUDA=0 -DBLAS=open -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+R
+> install.packages("roxygen2")
+> Would you like to use a personal library instead?  (y/n) y
+> Would you like to create a personal library ... to install packages into?  (y/n) y
 ```
 
-#### Other Examples
+Note: To successfully complete the next step, you need a personal R library. If
+you were able to run `install.packages("roxygen2")` above, you either had
+already, or you have successfully created a personal library just now.
 
-* Build without using OpenCV:
+To build and install the MXNet-R bindings, run:
 
 ```bash
-mkdir build && cd build
-cmake -DUSE_OPENCV=0 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+make -f R-package/Makefile rpkg
 ```
 
-* Build on **macOS** with the default BLAS library (Apple Accelerate) and Clang installed with `xcode` (OPENMP is disabled because it is not supported by the Apple version of Clang):
+Please also see the [MXNet R API](/api/r) page.
+
+### Install the MXNet Package for Scala
+
+After building the MXNet shared library, you may simply run the following from
+the MXNet scala-package folder:
 
 ```bash
-mkdir build && cd build
-cmake -DBLAS=apple -DUSE_OPENCV=0 -DUSE_OPENMP=0 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+mvn install
 ```
 
-* To use OpenMP on **macOS** you need to install the Clang compiler, `llvm` (the one provided by Apple does not support OpenMP):
+This will install both the Java Inference API and the required MXNet-Scala package.<hr>
+
+Please also see the [MXNet Scala API](/api/scala) page.
+
+### Install the MXNet Package for Java
+
+After building the MXNet shared library, you may simply run the following from
+the MXNet scala-package folder:
 
 ```bash
-brew install llvm
-mkdir build && cd build
-cmake -DBLAS=apple -DUSE_OPENMP=1 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
+mvn install
 ```
 
-<hr>
+This will install both the Java Inference API and the required MXNet-Scala package.<hr>
 
-## Installing MXNet Language Bindings
-After building MXNet's shared library, you can install other language bindings.
+Please also see the [MXNet Java API](/api/java) page.
 
-**NOTE:** The C++ API binding must be built when you build MXNet from source. See [Build MXNet with C++]({{'/api/cpp'|relative_url}}).
+## Contributions
 
-The following table provides links to each language binding by operating system:
+You are more than welcome to contribute easy installation scripts for other operating systems and programming languages.
+See the [community contributions page]({{'/community/contribute'|relative_url}}) for further information.
 
-| Language | [Ubuntu](ubuntu_setup) | [macOS](osx_setup) | [Windows](windows_setup) |
-| --- | ----  | --- | ------- |
-| Python | [Ubuntu guide](ubuntu_setup.html#install-mxnet-for-python) | [OSX guide](osx_setup) | [Windows guide](windows_setup.html#install-mxnet-for-python) |
-| C++ | [C++ guide](cpp_setup) | [C++ guide](cpp_setup) | [C++ guide](cpp_setup) |
-| Clojure | [Clojure guide](https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package) | [Clojure guide](https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package) | n/a |
-| Julia | [Ubuntu guide](ubuntu_setup.html#install-the-mxnet-package-for-julia) | [OSX guide](osx_setup.html#install-the-mxnet-package-for-julia) | [Windows guide](windows_setup.html#install-the-mxnet-package-for-julia) |
-| Perl | [Ubuntu guide](ubuntu_setup.html#install-the-mxnet-package-for-perl) | [OSX guide](osx_setup.html#install-the-mxnet-package-for-perl) | n/a |
-| R | [Ubuntu guide](ubuntu_setup.html#install-the-mxnet-package-for-r) | [OSX guide](osx_setup.html#install-the-mxnet-package-for-r) | [Windows guide](windows_setup.html#install-the-mxnet-package-for-r) |
-| Scala | [Scala guide](scala_setup.html) | [Scala guide](scala_setup.html) | n/a |
-| Java | [Java guide](java_setup.html) | [Java Guide](java_setup.html) | n/a |
+## Next Steps
 
+* [Tutorials]({{'/api'|relative_url}})
+* [How To]({{'/api/faq/add_op_in_backend'|relative_url}})
+* [Architecture]({{'/api/architecture/overview'|relative_url}})
diff --git a/docs/static_site/src/pages/get_started/c_plus_plus.md b/docs/static_site/src/pages/get_started/c_plus_plus.md
deleted file mode 100644
index 9f4800c..0000000
--- a/docs/static_site/src/pages/get_started/c_plus_plus.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: page
-title: C++ Setup
-action: Get Started
-action_url: /get_started
-permalink: /get_started/cpp_setup
----
-<!--- Licensed to the Apache Software Foundation (ASF) under one -->
-<!--- or more contributor license agreements.  See the NOTICE file -->
-<!--- distributed with this work for additional information -->
-<!--- regarding copyright ownership.  The ASF licenses this file -->
-<!--- to you under the Apache License, Version 2.0 (the -->
-<!--- "License"); you may not use this file except in compliance -->
-<!--- with the License.  You may obtain a copy of the License at -->
-
-<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
-
-<!--- Unless required by applicable law or agreed to in writing, -->
-<!--- software distributed under the License is distributed on an -->
-<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
-<!--- KIND, either express or implied.  See the License for the -->
-<!--- specific language governing permissions and limitations -->
-<!--- under the License. -->
-
-
-## Build the C++ package
-The C++ package has the same prerequisites as the MXNet library.
-
-To enable C++ package, just add `USE_CPP_PACKAGE=1` in the [build from source](build_from_source) options when building the MXNet shared library.
-
-For example to build MXNet with GPU support and the C++ package, OpenCV, and OpenBLAS, from the project root you would run:
-
-```bash
-cmake -DUSE_CUDA=1 -DUSE_CUDA_PATH=/usr/local/cuda -DUSE_CUDNN=1 -DUSE_MKLDNN=1 -DUSE_CPP_PACKAGE=1 -DCMAKE_BUILD_TYPE=Release -GNinja ..
-ninja -v
-```
-
-You may also want to add the MXNet shared library to your `LD_LIBRARY_PATH`:
-
-```bash
-export LD_LIBRARY_PATH=~/incubator-mxnet/lib
-```
-
-Setting the `LD_LIBRARY_PATH` is required to run the examples mentioned in the following section.
-
-## C++ Example Code
-You can find C++ code examples in the `cpp-package/example` folder of the MXNet project. Refer to the [cpp-package's README](https://github.com/apache/incubator-mxnet/tree/master/cpp-package) for instructions on building the examples.
-
-## Tutorials
-
-* [MXNet C++ API Basics]({{'/api/cpp/docs/tutorials/basics'|relative_url}})
-
-## Related Topics
-
-* [Image Classification using MXNet's C Predict API](https://github.com/apache/incubator-mxnet/tree/master/example/image-classification/predict-cpp)
diff --git a/docs/static_site/src/pages/get_started/centos_setup.md b/docs/static_site/src/pages/get_started/centos_setup.md
deleted file mode 100644
index 315787d..0000000
--- a/docs/static_site/src/pages/get_started/centos_setup.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-layout: page
-title: CentOS setup
-action: Get Started
-action_url: /get_started
-permalink: /get_started/centos_setup
----
-<!--- Licensed to the Apache Software Foundation (ASF) under one -->
-<!--- or more contributor license agreements.  See the NOTICE file -->
-<!--- distributed with this work for additional information -->
-<!--- regarding copyright ownership.  The ASF licenses this file -->
-<!--- to you under the Apache License, Version 2.0 (the -->
-<!--- "License"); you may not use this file except in compliance -->
-<!--- with the License.  You may obtain a copy of the License at -->
-
-<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
-
-<!--- Unless required by applicable law or agreed to in writing, -->
-<!--- software distributed under the License is distributed on an -->
-<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
-<!--- KIND, either express or implied.  See the License for the -->
-<!--- specific language governing permissions and limitations -->
-<!--- under the License. -->
-
-
-# Installing MXNet on CentOS and other non-Ubuntu Linux systems
-
-Step 1. Install build tools and git on `CentOS >= 7` and `Fedora >= 19`:
-
-```bash
-sudo yum groupinstall -y "Development Tools" && sudo yum install -y git
-```
-
-Step 2. Install Atlas:
-
-```bash
-sudo yum install atlas-devel
-```
-
-Installing both `git` and `cmake` or `make` by following instructions on the websites is
-straightforward. Here we provide the instructions to build `gcc-4.8` from source codes.
-
-Step 3. Install the 32-bit `libc` with one of the following system-specific commands:
-
-```bash
-sudo apt-get install libc6-dev-i386 # In Ubuntu
-sudo yum install glibc-devel.i686   # In RHEL (Red Hat Linux)
-sudo yum install glibc-devel.i386   # In CentOS 5.8
-sudo yum install glibc-devel.i686   # In CentOS 6/7
-```
-
-Step 4. Download and extract the `gcc` source code with the prerequisites:
-
-```bash
-wget http://mirrors.concertpass.com/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz
-tar -zxf gcc-4.8.5.tar.gz
-cd gcc-4.8.5
-./contrib/download_prerequisites
-```
-
-Step 5. Build `gcc` by using 10 threads and then install to `/usr/local`
-
-```bash
-mkdir release && cd release
-../configure --prefix=/usr/local --enable-languages=c,c++
-make -j10
-sudo make install
-```
-
-Step 6. Add the lib path to your configure file such as `~/.bashrc`:
-
-```bash
-export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib64
-```
-
-Step 7. Build [OpenBLAS from source](https://github.com/xianyi/OpenBLAS#installation-from-source).
-
-Step 8. Build OpenCV
-
-To build OpenCV from source code, you need the [cmake](https://cmake.org) library.
-
-* If you don't have cmake or if your version of cmake is earlier than 3.6.1, run the following commands to install a newer version of cmake:
-
-```bash
-wget https://cmake.org/files/v3.6/cmake-3.6.1-Linux-x86_64.tar.gz
-tar -zxvf cmake-3.6.1-Linux-x86_64.tar.gz
-alias cmake="cmake-3.6.1-Linux-x86_64/bin/cmake"
-```
-
-* To download and extract the OpenCV source code, run the following commands:
-
-```bash
-wget https://codeload.github.com/opencv/opencv/zip/2.4.13
-unzip 2.4.13
-cd opencv-2.4.13
-mkdir release
-cd release/
-```
-
-* Build OpenCV. The following commands build OpenCV with 10 threads. We
-disabled GPU support, which might significantly slow down an MXNet program
-running on a GPU processor. It also disables 1394 which might generate a
-warning. Then install it on `/usr/local`.
-
-```bash
-cmake -D BUILD_opencv_gpu=OFF -D WITH_CUDA=OFF -D WITH_1394=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
-make -j10
-sudo make install
-```
-
-* Add the lib path to your configuration such as `~/.bashrc`.
-
-```bash
-export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
-```
diff --git a/docs/static_site/src/pages/get_started/download.md b/docs/static_site/src/pages/get_started/download.md
index cf3f8c1..7444a2e 100644
--- a/docs/static_site/src/pages/get_started/download.md
+++ b/docs/static_site/src/pages/get_started/download.md
@@ -25,16 +25,24 @@ permalink: /get_started/download
 
 # Source Download
 
-These source archives are generated from tagged releases. Updates and patches will not have been applied. For any updates refer to the corresponding branches in the [GitHub repository](https://github.com/apache/incubator-mxnet). Choose your flavor of download from the following links:
+The source archives listed on this page are official MXNet releases following
+the [Apache Software Foundation Release
+Policy](http://www.apache.org/legal/release-policy.html).
+
+If you would like to actively participate in the MXNet development, you are
+encouraged to contribute to our development version on
+[GitHub](https://github.com/apache/incubator-mxnet).
 
 | Version | Source                                                                                                      | PGP                                                                                                             | SHA                                                                                                                |
 |---------|-------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|
-| 1.5.1   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz.asc)    |  [Download](https://apache.org/dist/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz.sha512)     |
-| 1.5.0   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz.asc)    |  [Download](https://apache.org/dist/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz.sha512)     |
-| 1.4.1   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz.asc)    | [Download](https://apache.org/dist/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz.sha512)      |
-| 1.4.0   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz.asc)    | [Download](https://apache.org/dist/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz.sha512)      |
-| 1.3.1   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz.asc)    | [Download](https://apache.org/dist/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz.sha512)      |
-| 1.3.0   | [Download](https://www.apache.org/dyn/closer.cgi/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz)   | [Download](https://apache.org/dist/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz.asc)    | [Download](https://apache.org/dist/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz.sha512)      |
+| 1.7.0   | [Download](http://www.apache.org/dyn/closer.lua?filename=incubator/mxnet/1.7.0/apache-mxnet-src-1.7.0-incubating.tar.gz&action=download)   | [Download](https://downloads.apache.org/incubator/mxnet/1.7.0/apache-mxnet-src-1.7.0-incubating.tar.gz.asc)    |  [Download](https://downloads.apache.org/incubator/mxnet/1.7.0/apache-mxnet-src-1.7.0-incubating.tar.gz.sha512)    |
+| 1.6.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.6.0/apache-mxnet-src-1.6.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.6.0/apache-mxnet-src-1.6.0-incubating.tar.gz.asc)    |  [Download](https://archive.apache.org/dist/incubator/mxnet/1.6.0/apache-mxnet-src-1.6.0-incubating.tar.gz.sha512)    |
+| 1.5.1   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz.asc)    |  [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz.sha512)     |
+| 1.5.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz.asc)    |  [Download](https://archive.apache.org/dist/incubator/mxnet/1.5.0/apache-mxnet-src-1.5.0-incubating.tar.gz.sha512)     |
+| 1.4.1   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.1/apache-mxnet-src-1.4.1-incubating.tar.gz.sha512)      |
+| 1.4.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.4.0/apache-mxnet-src-1.4.0-incubating.tar.gz.sha512)      |
+| 1.3.1   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.1/apache-mxnet-src-1.3.1-incubating.tar.gz.sha512)      |
+| 1.3.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz.sha512)      |
 | 1.2.1   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.1/apache-mxnet-src-1.2.1-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.1/apache-mxnet-src-1.2.1-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.1/apache-mxnet-src-1.2.1-incubating.tar.gz.sha512)      |
 | 1.2.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.0/apache-mxnet-src-1.2.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.0/apache-mxnet-src-1.2.0-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.2.0/apache-mxnet-src-1.2.0-incubating.tar.gz.sha512)      |
 | 1.1.0   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.1.0/apache-mxnet-src-1.1.0-incubating.tar.gz)   | [Download](https://archive.apache.org/dist/incubator/mxnet/1.1.0/apache-mxnet-src-1.1.0-incubating.tar.gz.asc)    | [Download](https://archive.apache.org/dist/incubator/mxnet/1.1.0/apache-mxnet-src-1.1.0-incubating.tar.gz.sha512)     |
diff --git a/docs/static_site/src/pages/get_started/index.html b/docs/static_site/src/pages/get_started/index.html
index 02e7cf1..f83396e 100644
--- a/docs/static_site/src/pages/get_started/index.html
+++ b/docs/static_site/src/pages/get_started/index.html
@@ -22,12 +22,18 @@ permalink: /get_started/index.html
 <!--- specific language governing permissions and limitations -->
 <!--- under the License. -->
 
-{% include /get_started/get_started.html %}
-
 </div>
 <div class="get-started-from-source">
 <div class="wrapper">
-    <h2>Download from source</h2>
-    <p>The signed source code for Apache MXNet (incubating) is available for download <a href="/get_started/download">here</a></p>
+    <h2>Build and install Apache MXNet (incubating) from source</h2>
+    <p>
+        To build and install MXNet from the official Apache Software Foundation
+        signed source code please follow our <a href="/get_started/build_from_source">Building From Source</a> guide.
+    </p>
+    <p>
+        The signed source releases are available <a href="/get_started/download">here</a>
+    </p>
 </div>
 </div>
+
+{% include /get_started/get_started.html %}
diff --git a/docs/static_site/src/pages/get_started/validate_mxnet.md b/docs/static_site/src/pages/get_started/validate_mxnet.md
index d613c3b..392682a 100644
--- a/docs/static_site/src/pages/get_started/validate_mxnet.md
+++ b/docs/static_site/src/pages/get_started/validate_mxnet.md
@@ -73,75 +73,6 @@ array([[ 3.,  3.,  3.],
 ```
 
 
-## Verify GPU Training
-
-From the MXNet root directory run: `python example/image-classification/train_mnist.py --network lenet --gpus 0` to test GPU training.
-
-
-## Virtualenv
-
-Activate the virtualenv environment created for *MXNet*.
-
-```bash
-$ source ~/mxnet/bin/activate
-```
-
-After activating the environment, you should see the prompt as below.
-
-```bash
-(mxnet)$
-```
-
-Start the python terminal.
-
-```bash
-$ python
-```
-
-Run the previous Python example.
-
-
-## Docker with CPU
-
-Launch a Docker container with `mxnet/python` image and run example *MXNet* python program on the terminal.
-
-```bash
-$ docker run -it mxnet/python bash # Use sudo if you skip Step 2 in the installation instruction
-
-# Start a python terminal
-root@4919c4f58cac:/# python
-```
-
-Run the previous Python example.
-
-
-## Docker with GPU
-
-Launch a NVIDIA Docker container with `mxnet/python:gpu` image and run example *MXNet* python program on the terminal.
-
-```bash
-$ nvidia-docker run -it mxnet/python:gpu bash # Use sudo if you skip Step 2 in the installation instruction
-
-# Start a python terminal
-root@4919c4f58cac:/# python
-```
-
-Run the previous Python example and run the previous GPU examples.
-
-
-## Cloud
-
-Login to the cloud instance you launched, with pre-installed *MXNet*, following the guide by corresponding cloud provider.
-
-Start the python terminal.
-
-```bash
-$ python
-```
-
-Run the previous Python example, and for GPU instances run the previous GPU example.
-
-
 ## Alternative Language Bindings
 
 ### C++